* data/lalr1.cc: Move the body of the ctor and dtor into the

parser file (instead of the header).
Wrap the implementations in a "namespace yy".
This commit is contained in:
Akim Demaille
2005-11-12 11:32:46 +00:00
parent 1989d9476c
commit 98ae96438e
2 changed files with 540 additions and 519 deletions

View File

@@ -1,3 +1,16 @@
2005-11-12 Akim <akim@epita.fr>
* data/lalr1.cc: Move the body of the ctor and dtor into the
parser file (instead of the header).
Wrap the implementations in a "namespace yy".
2005-11-12 Akim Demaille <akim@epita.fr>
Have glr.c include its header file when created.
* data/glr.c (b4_shared_declarations): New.
Output them verbatim in the parser if !%defines, otherwise
output then in the header file, and include it instead.
2005-11-11 Akim Demaille <akim@epita.fr> 2005-11-11 Akim Demaille <akim@epita.fr>
* data/glr.c: Comment changes. * data/glr.c: Comment changes.

View File

@@ -117,15 +117,8 @@ b4_syncline([@oline@], [@ofile@])],
}; };
/// Build a parser object. /// Build a parser object.
]b4_parser_class_name[ (]b4_parse_param_decl[) : ]b4_parser_class_name[ (]b4_parse_param_decl[);
yydebug_ (false), virtual ~]b4_parser_class_name[ ();
yycdebug_ (&std::cerr)]b4_parse_param_cons[
{
}
virtual ~]b4_parser_class_name[ ()
{
}
/// Parse. /// Parse.
/// \returns 0 iff parsing succeeded. /// \returns 0 iff parsing succeeded.
@@ -404,13 +397,26 @@ yy::]b4_parser_class_name[::yytnamerr_ (const char *yystr)
#endif #endif
namespace yy
{
/// Build a parser object.
]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)
: yydebug_ (false),
yycdebug_ (&std::cerr)]b4_parse_param_cons[
{
}
]b4_parser_class_name::~b4_parser_class_name[ ()
{
}
#if YYDEBUG #if YYDEBUG
/*--------------------------------. /*--------------------------------.
| Print this symbol on YYOUTPUT. | | Print this symbol on YYOUTPUT. |
`--------------------------------*/ `--------------------------------*/
void void
yy::]b4_parser_class_name[::yysymprint_ (int yytype, ]b4_parser_class_name[::yysymprint_ (int yytype,
const semantic_type* yyvaluep, const location_type* yylocationp) const semantic_type* yyvaluep, const location_type* yylocationp)
{ {
/* Backward compatibility, but should be removed eventually. */ /* Backward compatibility, but should be removed eventually. */
@@ -434,7 +440,7 @@ yy::]b4_parser_class_name[::yysymprint_ (int yytype,
#endif /* ! YYDEBUG */ #endif /* ! YYDEBUG */
void void
yy::]b4_parser_class_name[::yydestruct_ (const char* yymsg, ]b4_parser_class_name[::yydestruct_ (const char* yymsg,
int yytype, semantic_type* yyvaluep, location_type* yylocationp) int yytype, semantic_type* yyvaluep, location_type* yylocationp)
{ {
YYUSE (yylocationp); YYUSE (yylocationp);
@@ -452,7 +458,7 @@ yy::]b4_parser_class_name[::yydestruct_ (const char* yymsg,
} }
void void
yy::]b4_parser_class_name[::yypop_ (unsigned int n) ]b4_parser_class_name[::yypop_ (unsigned int n)
{ {
yystate_stack_.pop (n); yystate_stack_.pop (n);
yysemantic_stack_.pop (n); yysemantic_stack_.pop (n);
@@ -460,33 +466,33 @@ yy::]b4_parser_class_name[::yypop_ (unsigned int n)
} }
std::ostream& std::ostream&
yy::]b4_parser_class_name[::debug_stream () const ]b4_parser_class_name[::debug_stream () const
{ {
return *yycdebug_; return *yycdebug_;
} }
void void
yy::]b4_parser_class_name[::set_debug_stream (std::ostream& o) ]b4_parser_class_name[::set_debug_stream (std::ostream& o)
{ {
yycdebug_ = &o; yycdebug_ = &o;
} }
yy::]b4_parser_class_name[::debug_level_type ]b4_parser_class_name[::debug_level_type
yy::]b4_parser_class_name[::debug_level () const ]b4_parser_class_name[::debug_level () const
{ {
return yydebug_; return yydebug_;
} }
void void
yy::]b4_parser_class_name[::set_debug_level (debug_level_type l) ]b4_parser_class_name[::set_debug_level (debug_level_type l)
{ {
yydebug_ = l; yydebug_ = l;
} }
int int
yy::]b4_parser_class_name[::parse () ]b4_parser_class_name[::parse ()
{ {
/// Look-ahead and look-ahead in internal form. /// Look-ahead and look-ahead in internal form.
int yychar = yyempty_; int yychar = yyempty_;
@@ -798,7 +804,7 @@ yyreturn:
// Generate an error message. // Generate an error message.
std::string std::string
yy::]b4_parser_class_name[::yysyntax_error_ (int yystate]dnl ]b4_parser_class_name[::yysyntax_error_ (int yystate]dnl
b4_error_verbose_if([, int tok])[) b4_error_verbose_if([, int tok])[)
{ {
std::string res; std::string res;
@@ -848,9 +854,9 @@ b4_error_verbose_if([, int tok])[)
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) yy::b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[; const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[;
const ]b4_int_type_for([b4_pact])[ const ]b4_int_type_for([b4_pact])[
yy::]b4_parser_class_name[::yypact_[] = ]b4_parser_class_name[::yypact_[] =
{ {
]b4_pact[ ]b4_pact[
}; };
@@ -859,21 +865,21 @@ yy::]b4_parser_class_name[::yypact_[] =
doesn't specify something else to do. Zero means the default is an doesn't specify something else to do. Zero means the default is an
error. */ error. */
const ]b4_int_type_for([b4_defact])[ const ]b4_int_type_for([b4_defact])[
yy::]b4_parser_class_name[::yydefact_[] = ]b4_parser_class_name[::yydefact_[] =
{ {
]b4_defact[ ]b4_defact[
}; };
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
const ]b4_int_type_for([b4_pgoto])[ const ]b4_int_type_for([b4_pgoto])[
yy::]b4_parser_class_name[::yypgoto_[] = ]b4_parser_class_name[::yypgoto_[] =
{ {
]b4_pgoto[ ]b4_pgoto[
}; };
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
const ]b4_int_type_for([b4_defgoto])[ const ]b4_int_type_for([b4_defgoto])[
yy::]b4_parser_class_name[::yydefgoto_[] = ]b4_parser_class_name[::yydefgoto_[] =
{ {
]b4_defgoto[ ]b4_defgoto[
}; };
@@ -881,16 +887,16 @@ yy::]b4_parser_class_name[::yydefgoto_[] =
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says. */ number is the opposite. If zero, do what YYDEFACT says. */
const ]b4_int_type(b4_table_ninf, b4_table_ninf) yy::b4_parser_class_name::yytable_ninf_ = b4_table_ninf[; const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[;
const ]b4_int_type_for([b4_table])[ const ]b4_int_type_for([b4_table])[
yy::]b4_parser_class_name[::yytable_[] = ]b4_parser_class_name[::yytable_[] =
{ {
]b4_table[ ]b4_table[
}; };
/* YYCHECK. */ /* YYCHECK. */
const ]b4_int_type_for([b4_check])[ const ]b4_int_type_for([b4_check])[
yy::]b4_parser_class_name[::yycheck_[] = ]b4_parser_class_name[::yycheck_[] =
{ {
]b4_check[ ]b4_check[
}; };
@@ -898,7 +904,7 @@ yy::]b4_parser_class_name[::yycheck_[] =
/* STOS_[STATE-NUM] -- The (internal number of the) accessing /* STOS_[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
const ]b4_int_type_for([b4_stos])[ const ]b4_int_type_for([b4_stos])[
yy::]b4_parser_class_name[::yystos_[] = ]b4_parser_class_name[::yystos_[] =
{ {
]b4_stos[ ]b4_stos[
}; };
@@ -907,7 +913,7 @@ yy::]b4_parser_class_name[::yystos_[] =
/* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
to YYLEX-NUM. */ to YYLEX-NUM. */
const ]b4_int_type_for([b4_toknum])[ const ]b4_int_type_for([b4_toknum])[
yy::]b4_parser_class_name[::yytoken_number_[] = ]b4_parser_class_name[::yytoken_number_[] =
{ {
]b4_toknum[ ]b4_toknum[
}; };
@@ -915,14 +921,14 @@ yy::]b4_parser_class_name[::yytoken_number_[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
const ]b4_int_type_for([b4_r1])[ const ]b4_int_type_for([b4_r1])[
yy::]b4_parser_class_name[::yyr1_[] = ]b4_parser_class_name[::yyr1_[] =
{ {
]b4_r1[ ]b4_r1[
}; };
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
const ]b4_int_type_for([b4_r2])[ const ]b4_int_type_for([b4_r2])[
yy::]b4_parser_class_name[::yyr2_[] = ]b4_parser_class_name[::yyr2_[] =
{ {
]b4_r2[ ]b4_r2[
}; };
@@ -931,7 +937,7 @@ yy::]b4_parser_class_name[::yyr2_[] =
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at \a yyntokens_, nonterminals. */ First, the terminals, then, starting at \a yyntokens_, nonterminals. */
const char* const char*
const yy::]b4_parser_class_name[::yytname_[] = const ]b4_parser_class_name[::yytname_[] =
{ {
]b4_tname[ ]b4_tname[
}; };
@@ -939,8 +945,8 @@ const yy::]b4_parser_class_name[::yytname_[] =
#if YYDEBUG #if YYDEBUG
/* YYRHS -- A `-1'-separated list of the rules' RHS. */ /* YYRHS -- A `-1'-separated list of the rules' RHS. */
const yy::]b4_parser_class_name[::rhs_number_type const ]b4_parser_class_name[::rhs_number_type
yy::]b4_parser_class_name[::yyrhs_[] = ]b4_parser_class_name[::yyrhs_[] =
{ {
]b4_rhs[ ]b4_rhs[
}; };
@@ -948,21 +954,21 @@ yy::]b4_parser_class_name[::yyrhs_[] =
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
YYRHS. */ YYRHS. */
const ]b4_int_type_for([b4_prhs])[ const ]b4_int_type_for([b4_prhs])[
yy::]b4_parser_class_name[::yyprhs_[] = ]b4_parser_class_name[::yyprhs_[] =
{ {
]b4_prhs[ ]b4_prhs[
}; };
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
const ]b4_int_type_for([b4_rline])[ const ]b4_int_type_for([b4_rline])[
yy::]b4_parser_class_name[::yyrline_[] = ]b4_parser_class_name[::yyrline_[] =
{ {
]b4_rline[ ]b4_rline[
}; };
// Print the state stack on the debug stream. // Print the state stack on the debug stream.
void void
yy::]b4_parser_class_name[::yystack_print_ () ]b4_parser_class_name[::yystack_print_ ()
{ {
*yycdebug_ << "Stack now"; *yycdebug_ << "Stack now";
for (state_stack_type::const_iterator i = yystate_stack_.begin (); for (state_stack_type::const_iterator i = yystate_stack_.begin ();
@@ -973,7 +979,7 @@ yy::]b4_parser_class_name[::yystack_print_ ()
// Report on the debug stream that the rule \a yyrule is going to be reduced. // Report on the debug stream that the rule \a yyrule is going to be reduced.
void void
yy::]b4_parser_class_name[::yyreduce_print_ (int yyrule) ]b4_parser_class_name[::yyreduce_print_ (int yyrule)
{ {
unsigned int yylno = yyrline_[yyrule]; unsigned int yylno = yyrline_[yyrule];
/* Print the symbols being reduced, and their result. */ /* Print the symbols being reduced, and their result. */
@@ -987,8 +993,8 @@ yy::]b4_parser_class_name[::yyreduce_print_ (int yyrule)
#endif // YYDEBUG #endif // YYDEBUG
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
yy::]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::token_number_type
yy::]b4_parser_class_name[::yytranslate_ (int token) ]b4_parser_class_name[::yytranslate_ (int token)
{ {
static static
const token_number_type const token_number_type
@@ -1002,17 +1008,19 @@ yy::]b4_parser_class_name[::yytranslate_ (int token)
return yyundef_token_; return yyundef_token_;
} }
const int yy::]b4_parser_class_name[::yyeof_ = 0; const int ]b4_parser_class_name[::yyeof_ = 0;
const int yy::]b4_parser_class_name[::yylast_ = ]b4_last[; const int ]b4_parser_class_name[::yylast_ = ]b4_last[;
const int yy::]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[; const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[;
const int yy::]b4_parser_class_name[::yyempty_ = -2; const int ]b4_parser_class_name[::yyempty_ = -2;
const int yy::]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[; const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[;
const int yy::]b4_parser_class_name[::yyterror_ = 1; const int ]b4_parser_class_name[::yyterror_ = 1;
const int yy::]b4_parser_class_name[::yyerrcode_ = 256; const int ]b4_parser_class_name[::yyerrcode_ = 256;
const int yy::]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[; const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[;
const unsigned int yy::]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[; const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[;
const yy::]b4_parser_class_name[::token_number_type yy::]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[; const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[;
} // namespace yy
]b4_epilogue ]b4_epilogue
dnl dnl