- if (yyn_ == yyfinal_)
- goto yyacceptlab;
-
- yyerror_range_[1] = yylloc;
- // Using YYLLOC is tempting, but would change the location of
- // the look-ahead. YYLOC is available though.
- YYLLOC_DEFAULT (yyloc, yyerror_range_ - 1, 2);
- yysemantic_stack_.push (yylval);
- yylocation_stack_.push (yyloc);
-
- /* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos_[yyn_],
- &yysemantic_stack_[0], &yylocation_stack_[0]);
-
- yystate_ = yyn_;
- goto yynewstate;
-
- /* Accept. */
-yyacceptlab:
- return 0;
-
- /* Abort. */
-yyabortlab:
- /* Free the lookahead. */
- yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc);
- yylooka_ = yyempty_;
- return 1;
-}
-
-void
-yy::]b4_parser_class_name[::yylex_ ()
-{
- YYCDEBUG << "Reading a token: ";
-#if YYLSP_NEEDED
- yylooka_ = yylex (&yylval, &yylloc);
-#else
- yylooka_ = yylex (&yylval);
-#endif
-}
-
-// Generate an error message, and invoke error.
-void
-yy::]b4_parser_class_name[::yyreport_syntax_error_ ()
-{
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus_)
- {
- ++yynerrs_;
- std::string message;
-#if YYERROR_VERBOSE
- yyn_ = yypact_[yystate_];
- if (yypact_ninf_ < yyn_ && yyn_ < yylast_)
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn_ < 0 ? -yyn_ : 0;
-
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = yylast_ - yyn_;
- int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
- int count = 0;
- for (int x = yyxbegin; x < yyxend; ++x)
- if (yycheck_[x + yyn_] == x && x != yyterror_)
- ++count;
-
- message = "syntax error, unexpected ";
- message += yyname_[yyilooka_];
- if (count < 5)
- {
- count = 0;
- for (int x = yyxbegin; x < yyxend; ++x)
- if (yycheck_[x + yyn_] == x && x != yyterror_)
- {
- message += (!count++) ? ", expecting " : " or ";
- message += yyname_[x];
- }
- }
- }
- else
-#endif
- message = "syntax error";
- error (yylloc, message);
- }
-}
-
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- 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_for([b4_pact])[
-yy::]b4_parser_class_name[::yypact_[] =
-{
- ]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 ]b4_int_type_for([b4_defact])[
-yy::]b4_parser_class_name[::yydefact_[] =
-{
- ]b4_defact[
-};
-
-/* YYPGOTO[NTERM-NUM]. */
-const ]b4_int_type_for([b4_pgoto])[
-yy::]b4_parser_class_name[::yypgoto_[] =
-{
- ]b4_pgoto[
-};
-
-/* YYDEFGOTO[NTERM-NUM]. */
-const ]b4_int_type_for([b4_defgoto])[
-yy::]b4_parser_class_name[::yydefgoto_[] =
-{
- ]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 ]b4_int_type(b4_table_ninf, b4_table_ninf) yy::b4_parser_class_name::yytable_ninf_ = b4_table_ninf[;
-const ]b4_int_type_for([b4_table])[
-yy::]b4_parser_class_name[::yytable_[] =
-{
- ]b4_table[
-};
-
-/* YYCHECK. */
-const ]b4_int_type_for([b4_check])[
-yy::]b4_parser_class_name[::yycheck_[] =
-{
- ]b4_check[
-};
-
-/* STOS_[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-const ]b4_int_type_for([b4_stos])[
-yy::]b4_parser_class_name[::yystos_[] =
-{
- ]b4_stos[
-};
-
-#if YYDEBUG
-/* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
- to YYLEX-NUM. */
-const ]b4_int_type_for([b4_toknum])[
-yy::]b4_parser_class_name[::yytoken_number_[] =
-{
- ]b4_toknum[
-};
-#endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-const ]b4_int_type_for([b4_r1])[
-yy::]b4_parser_class_name[::yyr1_[] =
-{
- ]b4_r1[
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-const ]b4_int_type_for([b4_r2])[
-yy::]b4_parser_class_name[::yyr2_[] =
-{
- ]b4_r2[
-};
-
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at \a yyntokens_, nonterminals. */
-const char*
-const yy::]b4_parser_class_name[::yyname_[] =
-{
- ]b4_tname[
-};
+m4_divert_push(0)dnl
+@output(b4_parser_file_name@)@
+b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++])
+b4_percent_code_get([[top]])[]dnl
+m4_if(b4_prefix, [yy], [],
+[
+// Take the name prefix into account.
+#define yylex b4_prefix[]lex])[
+
+// First part of user declarations.
+]b4_user_pre_prologue[
+
+]b4_null_define[
+
+]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
+ [b4_shared_declarations])[
+
+/* User implementation prologue. */
+]b4_user_post_prologue[
+]b4_percent_code_get[
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* FIXME: INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif