m4_define([b4_rhs_value],
[semantic_stack_@<:@m4_eval([$1 - $2])@:>@m4_ifval([$3], [.$3])])
+m4_define_default([b4_ltype], [Location])
# b4_lhs_location()
# -----------------
Current.last_column = Rhs[[N]].last_column;
#endif
-m4_if(b4_locations_flag, [0], [],
-[#ifndef YYLTYPE
-typedef struct yyltype
-{
- int first_line;
- int first_column;
- int last_line;
- int last_column;
-} yyltype;
-# define YYLTYPE yyltype
-#endif])
-
namespace yy
{
class b4_name;
template < >
struct Traits< b4_name >
{
- typedef b4_uint_type(b4_translate_max) TokenNumberType;
- typedef b4_sint_type(b4_rhs_max) RhsNumberType;
+ typedef b4_int_type_for([b4_translate]) TokenNumberType;
+ typedef b4_int_type_for([b4_rhs]) RhsNumberType;
typedef int StateType;
typedef yystype SemanticType;
typedef b4_ltype LocationType;
LocationStack location_stack_;
/* Tables. */
- static const short pact_[[]];
- static const short defact_[[]];
- static const short pgoto_[[]];
- static const short defgoto_[[]];
- static const short table_[[]];
- static const short check_[[]];
- static const b4_uint_type(b4_r1_max) r1_[[]];
- static const b4_uint_type(b4_r2_max) r2_[[]];
+ static const b4_int_type_for([b4_pact]) pact_[[]];
+ static const b4_int_type_for([b4_pact]) pact_ninf_;
+ static const b4_int_type_for([b4_defact]) defact_[[]];
+ static const b4_int_type_for([b4_pgoto]) pgoto_[[]];
+ static const b4_int_type_for([b4_defgoto]) defgoto_[[]];
+ static const b4_int_type_for([b4_table]) table_[[]];
+ static const b4_int_type_for([b4_table]) table_ninf_;
+ static const b4_int_type_for([b4_check]) check_[[]];
+ static const b4_int_type_for([b4_r1]) r1_[[]];
+ static const b4_int_type_for([b4_r2]) r2_[[]];
#if YYDEBUG || YYERROR_VERBOSE
static const char* const name_[[]];
/* More tables, for debugging. */
#if YYDEBUG
static const RhsNumberType rhs_[[]];
- static const b4_uint_type(b4_prhs_max) prhs_[[]];
- static const b4_uint_type(b4_rline_max) rline_[[]];
- static const b4_uint_type(b4_stos_max) stos_[[]];
- static const short token_number_[[]];
+ static const b4_int_type_for([b4_prhs]) prhs_[[]];
+ static const b4_int_type_for([b4_rline]) rline_[[]];
+ static const b4_int_type_for([b4_stos]) stos_[[]];
+ static const b4_int_type_for([b4_toknum]) token_number_[[]];
#endif
/* Even more tables. */
/* Constants. */
static const int eof_;
static const int last_;
- static const int flag_;
static const int nnts_;
- static const int nsym_;
static const int empty_;
static const int final_;
static const int terror_;
}
#endif /* not b4_header_guard */
-
+dnl
#output "b4_output_prefix[]b4_output_infix[].cc"
b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison],
[2002])
/* Try to take a decision without lookahead. */
n_ = pact_[[state_]];
- if (n_ == flag_)
+ if (n_ == pact_ninf_)
goto yydefault;
/* Read a lookahead token. */
n_ = table_[[n_]];
if (n_ < 0)
{
- if (n_ == flag_)
+ if (n_ == table_ninf_)
goto yyerrlab;
else
{
{
YYCDEBUG << "Reducing via rule " << n_ - 1
<< " (line " << rline_[[n_]] << "), ";
- for (b4_uint_type(b4_prhs_max) i = prhs_[[n_]];
+ for (b4_int_type_for([b4_prhs]) i = prhs_[[n_]];
rhs_[[i]] >= 0; ++i)
YYCDEBUG << name_[[rhs_[i]]] << ' ';
YYCDEBUG << "-> " << name_[[r1_[n_]]] << std::endl;
#if YYERROR_VERBOSE
n_ = pact_[[state_]];
- if (n_ > flag_ && n_ < last_)
+ if (pact_ninf_ < n_ && n_ < last_)
{
message = "parse error, unexpected ";
message += name_[[ilooka_]];
{
int count = 0;
for (int x = (n_ < 0 ? -n_ : 0); x < ntokens_ + nnts_; ++x)
- if (check_[[x + n_]] == x)
+ if (check_[[x + n_]] == x && x != terror_)
++count;
if (count < 5)
{
count = 0;
for (int x = (n_ < 0 ? -n_ : 0); x < ntokens_ + nnts_; ++x)
- if (check_[[x + n_]] == x)
+ if (check_[[x + n_]] == x && x != terror_)
{
message += (!count++) ? ", expecting " : " or ";
message += name_[[x]];
for (;;)
{
n_ = pact_[[state_]];
- if (n_ != flag_)
+ if (n_ != pact_ninf_)
{
n_ += terror_;
if (0 <= n_ && n_ <= last_ && check_[[n_]] == terror_)
/* YYPACT[[STATE-NUM]] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-const short
+const b4_int_type_for([b4_pact]) yy::b4_name::pact_ninf_ = b4_pact_ninf;
+const b4_int_type_for([b4_pact])
yy::b4_name::pact_[[]] =
{
b4_pact
/* YYDEFACT[[S]] -- default rule to reduce with in state S when YYTABLE
doesn't specify something else to do. Zero means the default is an
error. */
-const short
+const b4_int_type_for([b4_defact])
yy::b4_name::defact_[[]] =
{
b4_defact
};
/* YYPGOTO[[NTERM-NUM]]. */
-const short
+const b4_int_type_for([b4_pgoto])
yy::b4_name::pgoto_[[]] =
{
b4_pgoto
};
/* YYDEFGOTO[[NTERM-NUM]]. */
-const short
+const b4_int_type_for([b4_defgoto])
yy::b4_name::defgoto_[[]] =
{
b4_defgoto
/* YYTABLE[[YYPACT[STATE-NUM]]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says. */
-const short
+const b4_int_type_for([b4_table]) yy::b4_name::table_ninf_ = b4_table_ninf;
+const b4_int_type_for([b4_table])
yy::b4_name::table_[[]] =
{
b4_table
};
/* YYCHECK. */
-const short
+const b4_int_type_for([b4_check])
yy::b4_name::check_[[]] =
{
b4_check
#if YYDEBUG
/* STOS_[[STATE-NUM]] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
-const b4_uint_type(b4_stos_max)
+const b4_int_type_for([b4_stos])
yy::b4_name::stos_[[]] =
{
b4_stos
/* TOKEN_NUMBER_[[YYLEX-NUM]] -- Internal token number corresponding
to YYLEX-NUM. */
-const short
+const b4_int_type_for([b4_toknum])
yy::b4_name::token_number_[[]] =
{
b4_toknum
#endif
/* YYR1[[YYN]] -- Symbol number of symbol that rule YYN derives. */
-const b4_uint_type(b4_r1_max)
+const b4_int_type_for([b4_r1])
yy::b4_name::r1_[[]] =
{
b4_r1
};
/* YYR2[[YYN]] -- Number of symbols composing right hand side of rule YYN. */
-const b4_uint_type(b4_r2_max)
+const b4_int_type_for([b4_r2])
yy::b4_name::r2_[[]] =
{
b4_r2
/* YYPRHS[[YYN]] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */
-const b4_uint_type(b4_prhs_max)
+const b4_int_type_for([b4_prhs])
yy::b4_name::prhs_[[]] =
{
b4_prhs
};
/* YYRLINE[[YYN]] -- source line where rule number YYN was defined. */
-const b4_uint_type(b4_rline_max)
+const b4_int_type_for([b4_rline])
yy::b4_name::rline_[[]] =
{
b4_rline
const int yy::b4_name::eof_ = 0;
const int yy::b4_name::last_ = b4_last;
-const int yy::b4_name::flag_ = b4_flag;
-const int yy::b4_name::nnts_ = b4_nnts;
-const int yy::b4_name::nsym_ = b4_nsym;
+const int yy::b4_name::nnts_ = b4_nterms_number;
const int yy::b4_name::empty_ = -2;
-const int yy::b4_name::final_ = b4_final;
+const int yy::b4_name::final_ = b4_final_state_number;
const int yy::b4_name::terror_ = 1;
const int yy::b4_name::errcode_ = 256;
-const int yy::b4_name::ntokens_ = b4_ntokens;
+const int yy::b4_name::ntokens_ = b4_tokens_number;
const int yy::b4_name::initdepth_ = b4_initdepth;
const unsigned yy::b4_name::user_token_number_max_ = b4_user_token_number_max;
const yy::b4_name::TokenNumberType yy::b4_name::undef_token_ = b4_undef_token_number;
b4_epilogue
-
+dnl
#output "stack.hh"
b4_copyright([2002])
}
#endif // not BISON_STACK_HH
-
+dnl
#output "location.hh"
b4_copyright([2002])