the %parse-params.
* data/glr.c (YY_SYMBOL_PRINT, yydestroyGLRState): Adjust.
* data/yacc.c (b4_Pure_if): Rename as...
(b4_yacc_pure_if): this.
(YY_SYMBOL_PRINT, yyparse): Adjust.
* doc/bison.texinfo: Formatting changes.
+2005-10-21 Akim Demaille <akim@epita.fr>
+
+ * data/c.m4 (b4_yydestruct_generate, b4_yysymprint_generate): Pass
+ the %parse-params.
+ * data/glr.c (YY_SYMBOL_PRINT, yydestroyGLRState): Adjust.
+ * data/yacc.c (b4_Pure_if): Rename as...
+ (b4_yacc_pure_if): this.
+ (YY_SYMBOL_PRINT, yyparse): Adjust.
+ * doc/bison.texinfo: Formatting changes.
+
2005-10-21 Akim Demaille <akim@epita.fr>
Finish the transition config -> build-aux.
2005-10-21 Akim Demaille <akim@epita.fr>
Finish the transition config -> build-aux.
+* GLR, YACC parsers.
+ The %parse-params are available in the %destructor's (and the
+ experimental %printer's) as per the documentation.
+
* Bison now warns if it finds a stray `$' or `@' in an action.
* %require "VERSION"
* Bison now warns if it finds a stray `$' or `@' in an action.
* %require "VERSION"
## ------------ ##
## Data Types. ##
## ------------ ##
## ------------ ##
## Data Types. ##
## ------------ ##
## Synclines. ##
## ----------- ##
## Synclines. ##
## ----------- ##
# b4_syncline(LINE, FILE)
# -----------------------
m4_define([b4_syncline],
# b4_syncline(LINE, FILE)
# -----------------------
m4_define([b4_syncline],
[static void],
[[const char *yymsg], [yymsg]],
[[int yytype], [yytype]],
[static void],
[[const char *yymsg], [yymsg]],
[[int yytype], [yytype]],
- [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
- [[YYLTYPE *yylocationp], [yylocationp]]]))[
+ [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl
+b4_location_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl
+m4_ifset([b4_parse_param], [, b4_parse_param]))[
{
YYUSE (yyvaluep);
]b4_location_if([ YYUSE (yylocationp);
{
YYUSE (yyvaluep);
]b4_location_if([ YYUSE (yylocationp);
[static void],
[[FILE *yyoutput], [yyoutput]],
[[int yytype], [yytype]],
[static void],
[[FILE *yyoutput], [yyoutput]],
[[int yytype], [yytype]],
- [[YYSTYPE *yyvaluep], [yyvaluep]]b4_location_if([,
- [[YYLTYPE *yylocationp], [yylocationp]]]))
+ [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl
+b4_location_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl
+m4_ifset([b4_parse_param], [, b4_parse_param]))[
-b4_location_if([ YYUSE (yylocationp);
+]b4_location_if([ YYUSE (yylocationp);
])dnl
[
if (yytype < YYNTOKENS)
])dnl
[
if (yytype < YYNTOKENS)
break;
}
YYFPRINTF (yyoutput, ")");
break;
}
YYFPRINTF (yyoutput, ")");
## ------------------------ ##
## ------------------------ ##
+# b4_user_formals
+# ---------------
+# This is specific to GLR because it relies on ISO C formal argument
+# declarations.
+m4_define([b4_user_formals],
+[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])])
+
+
# b4_lex_param
# ------------
# Accumule in b4_lex_param all the yylex arguments.
# b4_lex_param
# ------------
# Accumule in b4_lex_param all the yylex arguments.
m4_ifdef([b4_lex_param], [, ]b4_lex_param)))
m4_ifdef([b4_lex_param], [, ]b4_lex_param)))
-# b4_user_formals
-# ---------------
-m4_define([b4_user_formals],
-[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])])
-
-
# b4_yyerror_args
# ---------------
# Arguments passed to yyerror: user args plus yylloc.
# b4_yyerror_args
# ---------------
# Arguments passed to yyerror: user args plus yylloc.
]b4_yysymprint_generate([b4_c_ansi_function_def])[
]b4_yysymprint_generate([b4_c_ansi_function_def])[
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yysymprint (stderr, \
- Type, Value]b4_location_if([, Location])[); \
- YYFPRINTF (stderr, "\n"); \
- } \
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Type, Value]b4_location_if([, Location])[]b4_user_args[); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
} while (/*CONSTCOND*/ 0)
/* Nonzero means print parse trace. It is left uninitialized so that
} while (/*CONSTCOND*/ 0)
/* Nonzero means print parse trace. It is left uninitialized so that
-yydestroyGLRState (char const *yymsg, yyGLRState *yys)
+yydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[)
{
if (yys->yyresolved)
yydestruct (yymsg, yystos[yys->yylrState],
{
if (yys->yyresolved)
yydestruct (yymsg, yystos[yys->yylrState],
- &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[);
+ &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[]b4_user_args[);
{
YYFPRINTF (stderr, "%s unresolved ", yymsg);
yysymprint (stderr, yystos[yys->yylrState],
{
YYFPRINTF (stderr, "%s unresolved ", yymsg);
yysymprint (stderr, yystos[yys->yylrState],
- &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[);
+ &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[]b4_user_args[);
YYFPRINTF (stderr, "\n");
}
#endif
YYFPRINTF (stderr, "\n");
}
#endif
for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
yyn > 0;
yyrh = yyrh->yypred, yyn -= 1)
for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
yyn > 0;
yyrh = yyrh->yypred, yyn -= 1)
- yydestroyGLRState (yymsg, yyrh);
+ yydestroyGLRState (yymsg, yyrh]b4_user_args[);
yyerror_range[2].yystate.yyloc = *yyllocp;
YYLLOC_DEFAULT (yys->yyloc, yyerror_range, 2);]])[
yydestruct ("Error: discarding",
yyerror_range[2].yystate.yyloc = *yyllocp;
YYLLOC_DEFAULT (yys->yyloc, yyerror_range, 2);]])[
yydestruct ("Error: discarding",
- *yytokenp, yylvalp]b4_location_if([, yyllocp])[);
+ *yytokenp, yylvalp]b4_location_if([, yyllocp])[]b4_user_args[);
}
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
}
]b4_location_if([[ yystack->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[
}
}
]b4_location_if([[ yystack->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[
- yydestroyGLRState ("Error: popping", yys);
+ yydestroyGLRState ("Error: popping", yys]b4_user_args[);
yystack->yytops.yystates[0] = yys->yypred;
yystack->yynextFree -= 1;
yystack->yyspaceLeft += 1;
yystack->yytops.yystates[0] = yys->yypred;
yystack->yynextFree -= 1;
yystack->yyspaceLeft += 1;
yyreturn:
if (yytoken != YYEOF && yytoken != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
yyreturn:
if (yytoken != YYEOF && yytoken != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
- yytoken, yylvalp]b4_location_if([, yyllocp])[);
+ yytoken, yylvalp]b4_location_if([, yyllocp])[]b4_user_args[);
/* If the stack is well-formed, pop the stack until it is empty,
destroying its entries as we go. But free the stack regardless
/* If the stack is well-formed, pop the stack until it is empty,
destroying its entries as we go. But free the stack regardless
{
yyGLRState *yys = yystates[0];
]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]]
{
yyGLRState *yys = yystates[0];
]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]]
-)[ yydestroyGLRState ("Cleanup: popping", yys);
+)[ yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[);
yystates[0] = yys->yypred;
yystack.yynextFree -= 1;
yystack.yyspaceLeft += 1;
yystates[0] = yys->yypred;
yystack.yynextFree -= 1;
yystack.yyspaceLeft += 1;
## ------------------------ ##
## ------------------------ ##
-# b4_pure_if(IF-TRUE, IF-FALSE)
-# -----------------------------
+# b4_yacc_pure_if(IF-TRUE, IF-FALSE)
+# ----------------------------------
# Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
# Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
+m4_define([b4_yacc_pure_if],
[b4_pure_if([m4_ifset([b4_parse_param],
[$1], [$2])],
[$2])])
[b4_pure_if([m4_ifset([b4_parse_param],
[$1], [$2])],
[$2])])
# ---------------
# Arguments passed to yyerror: user args plus yylloc.
m4_define([b4_yyerror_args],
# ---------------
# Arguments passed to yyerror: user args plus yylloc.
m4_define([b4_yyerror_args],
-[b4_Pure_if([b4_location_if([&yylloc, ])])dnl
+[b4_yacc_pure_if([b4_location_if([&yylloc, ])])dnl
m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
YYFPRINTF Args; \
} while (/*CONSTCOND*/ 0)
YYFPRINTF Args; \
} while (/*CONSTCOND*/ 0)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yysymprint (stderr, \
- Type, Value]b4_location_if([, Location])[); \
- YYFPRINTF (stderr, "\n"); \
- } \
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Type, Value]b4_location_if([, Location])[]b4_user_args[); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
} while (/*CONSTCOND*/ 0)
/*------------------------------------------------------------------.
} while (/*CONSTCOND*/ 0)
/*------------------------------------------------------------------.
- yydestruct ("Error: discarding", yytoken, &yylval]b4_location_if([, &yylloc])[);
+ yydestruct ("Error: discarding",
+ yytoken, &yylval]b4_location_if([, &yylloc])[]b4_user_args[);
YYABORT;
]b4_location_if([[ yyerror_range[0] = *yylsp;]])[
YYABORT;
]b4_location_if([[ yyerror_range[0] = *yylsp;]])[
- yydestruct ("Error: popping", yystos[yystate], yyvsp]b4_location_if([, yylsp])[);
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp]b4_location_if([, yylsp])[]b4_user_args[);
YYPOPSTACK;
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
YYPOPSTACK;
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
yyreturn:
if (yychar != YYEOF && yychar != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
yyreturn:
if (yychar != YYEOF && yychar != YYEMPTY)
yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval]b4_location_if([, &yylloc])[);
+ yytoken, &yylval]b4_location_if([, &yylloc])[]b4_user_args[);
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[);
+ yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[]b4_user_args[);
YYPOPSTACK;
}
#ifndef yyoverflow
YYPOPSTACK;
}
#ifndef yyoverflow
@cindex freeing discarded symbols
@findex %destructor
@cindex freeing discarded symbols
@findex %destructor
-Some symbols can be discarded by the parser. During error
-recovery (@pxref{Error Recovery}), symbols already pushed
-on the stack and tokens coming from the rest of the file
-are discarded until the parser falls on its feet. If the parser
-runs out of memory, all the symbols on the stack must be discarded.
-Even if the parser succeeds, it must discard the start symbol.
+Some symbols can be discarded by the parser. During error recovery
+(@pxref{Error Recovery}), symbols already pushed on the stack and tokens
+coming from the rest of the file are discarded until the parser falls on
+its feet. If the parser runs out of memory, all the symbols on the
+stack must be discarded. Even if the parser succeeds, it must discard
+the start symbol.
When discarded symbols convey heap based information, this memory is
lost. While this behavior can be tolerable for batch parsers, such as
When discarded symbols convey heap based information, this memory is
lost. While this behavior can be tolerable for batch parsers, such as
-in traditional compilers, it is unacceptable for programs like shells
-or protocol implementations that may parse and execute indefinitely.
+in traditional compilers, it is unacceptable for programs like shells or
+protocol implementations that may parse and execute indefinitely.
The @code{%destructor} directive defines code that
is called when a symbol is discarded.
@deffn {Directive} %destructor @{ @var{code} @} @var{symbols}
@findex %destructor
The @code{%destructor} directive defines code that
is called when a symbol is discarded.
@deffn {Directive} %destructor @{ @var{code} @} @var{symbols}
@findex %destructor
-Invoke @var{code} whenever the parser discards one of the
-@var{symbols}. Within @var{code}, @code{$$} designates the semantic
-value associated with the discarded symbol. The additional
-parser parameters are also available
-(@pxref{Parser Function, , The Parser Function @code{yyparse}}).
+Invoke @var{code} whenever the parser discards one of the @var{symbols}.
+Within @var{code}, @code{$$} designates the semantic value associated
+with the discarded symbol. The additional parser parameters are also
+available (@pxref{Parser Function, , The Parser Function
+@code{yyparse}}).
@strong{Warning:} as of Bison 2.1, this feature is still
experimental, as there has not been enough user feedback. In particular,
@strong{Warning:} as of Bison 2.1, this feature is still
experimental, as there has not been enough user feedback. In particular,
/* Copy the first part of user declarations. */
/* Copy the first part of user declarations. */
+#line 1 "../../src/parse-gram.y"
/* Bison Grammar Parser -*- C -*-
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
/* Bison Grammar Parser -*- C -*-
Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
#endif
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 82 "../../src/parse-gram.y"
typedef union YYSTYPE {
symbol *symbol;
symbol_list *list;
typedef union YYSTYPE {
symbol *symbol;
symbol_list *list;
uniqstr uniqstr;
} YYSTYPE;
/* Line 196 of yacc.c. */
uniqstr uniqstr;
} YYSTYPE;
/* Line 196 of yacc.c. */
-#line 267 "parse-gram.c"
+#line 267 "../../src/parse-gram.c"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
/* Line 219 of yacc.c. */
/* Line 219 of yacc.c. */
-#line 291 "parse-gram.c"
+#line 291 "../../src/parse-gram.c"
/* Define YYMODERN_C if this compiler supports C89 or better. If
__STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run
/* Define YYMODERN_C if this compiler supports C89 or better. If
__STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run
YYFPRINTF Args; \
} while (/*CONSTCOND*/ 0)
YYFPRINTF Args; \
} while (/*CONSTCOND*/ 0)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yysymprint (stderr, \
- Type, Value, Location); \
- YYFPRINTF (stderr, "\n"); \
- } \
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Type, Value, Location); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
} while (/*CONSTCOND*/ 0)
/*------------------------------------------------------------------.
} while (/*CONSTCOND*/ 0)
/*------------------------------------------------------------------.
switch (yytype)
{
case 3: /* "\"string\"" */
switch (yytype)
{
case 3: /* "\"string\"" */
-#line 169 "parse-gram.y"
+#line 169 "../../src/parse-gram.y"
{ fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
{ fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
-#line 1211 "parse-gram.c"
+#line 1211 "../../src/parse-gram.c"
break;
case 4: /* "\"integer\"" */
break;
case 4: /* "\"integer\"" */
-#line 182 "parse-gram.y"
+#line 182 "../../src/parse-gram.y"
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
{ fprintf (stderr, "%d", (yyvaluep->integer)); };
-#line 1216 "parse-gram.c"
+#line 1216 "../../src/parse-gram.c"
break;
case 8: /* "\"%destructor {...}\"" */
break;
case 8: /* "\"%destructor {...}\"" */
-#line 171 "parse-gram.y"
+#line 171 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1221 "parse-gram.c"
+#line 1221 "../../src/parse-gram.c"
break;
case 9: /* "\"%printer {...}\"" */
break;
case 9: /* "\"%printer {...}\"" */
-#line 175 "parse-gram.y"
+#line 175 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1226 "parse-gram.c"
+#line 1226 "../../src/parse-gram.c"
break;
case 10: /* "\"%union {...}\"" */
break;
case 10: /* "\"%union {...}\"" */
-#line 176 "parse-gram.y"
+#line 176 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1231 "parse-gram.c"
+#line 1231 "../../src/parse-gram.c"
break;
case 26: /* "\"%initial-action {...}\"" */
break;
case 26: /* "\"%initial-action {...}\"" */
-#line 172 "parse-gram.y"
+#line 172 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1236 "parse-gram.c"
+#line 1236 "../../src/parse-gram.c"
break;
case 27: /* "\"%lex-param {...}\"" */
break;
case 27: /* "\"%lex-param {...}\"" */
-#line 173 "parse-gram.y"
+#line 173 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1241 "parse-gram.c"
+#line 1241 "../../src/parse-gram.c"
break;
case 34: /* "\"%parse-param {...}\"" */
break;
case 34: /* "\"%parse-param {...}\"" */
-#line 174 "parse-gram.y"
+#line 174 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1246 "parse-gram.c"
+#line 1246 "../../src/parse-gram.c"
break;
case 42: /* "\"type\"" */
break;
case 42: /* "\"type\"" */
-#line 180 "parse-gram.y"
+#line 180 "../../src/parse-gram.y"
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
{ fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
-#line 1251 "parse-gram.c"
+#line 1251 "../../src/parse-gram.c"
break;
case 46: /* "\"identifier\"" */
break;
case 46: /* "\"identifier\"" */
-#line 184 "parse-gram.y"
+#line 184 "../../src/parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-#line 1256 "parse-gram.c"
+#line 1256 "../../src/parse-gram.c"
break;
case 47: /* "\"identifier:\"" */
break;
case 47: /* "\"identifier:\"" */
-#line 186 "parse-gram.y"
+#line 186 "../../src/parse-gram.y"
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
{ fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
-#line 1261 "parse-gram.c"
+#line 1261 "../../src/parse-gram.c"
break;
case 49: /* "\"%{...%}\"" */
break;
case 49: /* "\"%{...%}\"" */
-#line 178 "parse-gram.y"
+#line 178 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1266 "parse-gram.c"
+#line 1266 "../../src/parse-gram.c"
break;
case 50: /* "\"epilogue\"" */
break;
case 50: /* "\"epilogue\"" */
-#line 178 "parse-gram.y"
+#line 178 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1271 "parse-gram.c"
+#line 1271 "../../src/parse-gram.c"
break;
case 51: /* "\"{...}\"" */
break;
case 51: /* "\"{...}\"" */
-#line 177 "parse-gram.y"
+#line 177 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1276 "parse-gram.c"
+#line 1276 "../../src/parse-gram.c"
break;
case 72: /* "symbol" */
break;
case 72: /* "symbol" */
-#line 184 "parse-gram.y"
+#line 184 "../../src/parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-#line 1281 "parse-gram.c"
+#line 1281 "../../src/parse-gram.c"
break;
case 73: /* "action" */
break;
case 73: /* "action" */
-#line 177 "parse-gram.y"
+#line 177 "../../src/parse-gram.y"
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
{ fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-#line 1286 "parse-gram.c"
+#line 1286 "../../src/parse-gram.c"
break;
case 74: /* "string_as_id" */
break;
case 74: /* "string_as_id" */
-#line 184 "parse-gram.y"
+#line 184 "../../src/parse-gram.y"
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
{ fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-#line 1291 "parse-gram.c"
+#line 1291 "../../src/parse-gram.c"
break;
case 75: /* "string_content" */
break;
case 75: /* "string_content" */
-#line 169 "parse-gram.y"
+#line 169 "../../src/parse-gram.y"
{ fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
{ fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
-#line 1296 "parse-gram.c"
+#line 1296 "../../src/parse-gram.c"
break;
default:
break;
}
YYFPRINTF (yyoutput, ")");
}
break;
default:
break;
}
YYFPRINTF (yyoutput, ")");
}
#endif /* ! YYDEBUG */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
#endif /* ! YYDEBUG */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
/* User initialization code. */
/* User initialization code. */
+#line 72 "../../src/parse-gram.y"
{
/* Bison's grammar can initial empty locations, hence a default
location is needed. */
{
/* Bison's grammar can initial empty locations, hence a default
location is needed. */
yylloc.start.column = yylloc.end.column = 0;
}
/* Line 1066 of yacc.c. */
yylloc.start.column = yylloc.end.column = 0;
}
/* Line 1066 of yacc.c. */
-#line 1475 "parse-gram.c"
+#line 1474 "../../src/parse-gram.c"
yylsp[0] = yylloc;
goto yysetstate;
yylsp[0] = yylloc;
goto yysetstate;
-#line 207 "parse-gram.y"
+#line 207 "../../src/parse-gram.y"
{ prologue_augment ((yyvsp[0].chars), (yylsp[0])); }
break;
case 7:
{ prologue_augment ((yyvsp[0].chars), (yylsp[0])); }
break;
case 7:
-#line 208 "parse-gram.y"
+#line 208 "../../src/parse-gram.y"
{ debug_flag = true; }
break;
case 8:
{ debug_flag = true; }
break;
case 8:
-#line 209 "parse-gram.y"
+#line 209 "../../src/parse-gram.y"
{ muscle_insert ((yyvsp[0].chars), "1"); }
break;
case 9:
{ muscle_insert ((yyvsp[0].chars), "1"); }
break;
case 9:
-#line 210 "parse-gram.y"
+#line 210 "../../src/parse-gram.y"
{ muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); }
break;
case 10:
{ muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); }
break;
case 10:
-#line 211 "parse-gram.y"
+#line 211 "../../src/parse-gram.y"
{ defines_flag = true; }
break;
case 11:
{ defines_flag = true; }
break;
case 11:
-#line 212 "parse-gram.y"
+#line 212 "../../src/parse-gram.y"
{ error_verbose = true; }
break;
case 12:
{ error_verbose = true; }
break;
case 12:
-#line 213 "parse-gram.y"
+#line 213 "../../src/parse-gram.y"
{ expected_sr_conflicts = (yyvsp[0].integer); }
break;
case 13:
{ expected_sr_conflicts = (yyvsp[0].integer); }
break;
case 13:
-#line 214 "parse-gram.y"
+#line 214 "../../src/parse-gram.y"
{ expected_rr_conflicts = (yyvsp[0].integer); }
break;
case 14:
{ expected_rr_conflicts = (yyvsp[0].integer); }
break;
case 14:
-#line 215 "parse-gram.y"
+#line 215 "../../src/parse-gram.y"
{ spec_file_prefix = (yyvsp[0].chars); }
break;
case 15:
{ spec_file_prefix = (yyvsp[0].chars); }
break;
case 15:
-#line 217 "parse-gram.y"
+#line 217 "../../src/parse-gram.y"
{
nondeterministic_parser = true;
glr_parser = true;
{
nondeterministic_parser = true;
glr_parser = true;
-#line 222 "parse-gram.y"
+#line 222 "../../src/parse-gram.y"
{
muscle_code_grow ("initial_action", (yyvsp[0].chars), (yylsp[0]));
}
break;
case 17:
{
muscle_code_grow ("initial_action", (yyvsp[0].chars), (yylsp[0]));
}
break;
case 17:
-#line 225 "parse-gram.y"
+#line 225 "../../src/parse-gram.y"
{ add_param ("lex_param", (yyvsp[0].chars), (yylsp[0])); }
break;
case 18:
{ add_param ("lex_param", (yyvsp[0].chars), (yylsp[0])); }
break;
case 18:
-#line 226 "parse-gram.y"
+#line 226 "../../src/parse-gram.y"
{ locations_flag = true; }
break;
case 19:
{ locations_flag = true; }
break;
case 19:
-#line 227 "parse-gram.y"
+#line 227 "../../src/parse-gram.y"
{ spec_name_prefix = (yyvsp[0].chars); }
break;
case 20:
{ spec_name_prefix = (yyvsp[0].chars); }
break;
case 20:
-#line 228 "parse-gram.y"
+#line 228 "../../src/parse-gram.y"
{ no_lines_flag = true; }
break;
case 21:
{ no_lines_flag = true; }
break;
case 21:
-#line 229 "parse-gram.y"
+#line 229 "../../src/parse-gram.y"
{ nondeterministic_parser = true; }
break;
case 22:
{ nondeterministic_parser = true; }
break;
case 22:
-#line 230 "parse-gram.y"
+#line 230 "../../src/parse-gram.y"
{ spec_outfile = (yyvsp[0].chars); }
break;
case 23:
{ spec_outfile = (yyvsp[0].chars); }
break;
case 23:
-#line 231 "parse-gram.y"
+#line 231 "../../src/parse-gram.y"
{ add_param ("parse_param", (yyvsp[0].chars), (yylsp[0])); }
break;
case 24:
{ add_param ("parse_param", (yyvsp[0].chars), (yylsp[0])); }
break;
case 24:
-#line 232 "parse-gram.y"
+#line 232 "../../src/parse-gram.y"
{ pure_parser = true; }
break;
case 25:
{ pure_parser = true; }
break;
case 25:
-#line 233 "parse-gram.y"
+#line 233 "../../src/parse-gram.y"
{ version_check (&(yylsp[0]), (yyvsp[0].chars)); }
break;
case 26:
{ version_check (&(yylsp[0]), (yyvsp[0].chars)); }
break;
case 26:
-#line 234 "parse-gram.y"
+#line 234 "../../src/parse-gram.y"
{ skeleton = (yyvsp[0].chars); }
break;
case 27:
{ skeleton = (yyvsp[0].chars); }
break;
case 27:
-#line 235 "parse-gram.y"
+#line 235 "../../src/parse-gram.y"
{ token_table_flag = true; }
break;
case 28:
{ token_table_flag = true; }
break;
case 28:
-#line 236 "parse-gram.y"
+#line 236 "../../src/parse-gram.y"
{ report_flag = report_states; }
break;
case 29:
{ report_flag = report_states; }
break;
case 29:
-#line 237 "parse-gram.y"
+#line 237 "../../src/parse-gram.y"
{ yacc_flag = true; }
break;
case 33:
{ yacc_flag = true; }
break;
case 33:
-#line 245 "parse-gram.y"
+#line 245 "../../src/parse-gram.y"
{
grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
}
break;
case 34:
{
grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
}
break;
case 34:
-#line 249 "parse-gram.y"
+#line 249 "../../src/parse-gram.y"
{
typed = true;
MUSCLE_INSERT_INT ("stype_line", (yylsp[0]).start.line);
{
typed = true;
MUSCLE_INSERT_INT ("stype_line", (yylsp[0]).start.line);
-#line 255 "parse-gram.y"
+#line 255 "../../src/parse-gram.y"
{
symbol_list *list;
for (list = (yyvsp[0].list); list; list = list->next)
{
symbol_list *list;
for (list = (yyvsp[0].list); list; list = list->next)
-#line 262 "parse-gram.y"
+#line 262 "../../src/parse-gram.y"
{
symbol_list *list;
for (list = (yyvsp[0].list); list; list = list->next)
{
symbol_list *list;
for (list = (yyvsp[0].list); list; list = list->next)
-#line 269 "parse-gram.y"
+#line 269 "../../src/parse-gram.y"
{
default_prec = true;
}
break;
case 38:
{
default_prec = true;
}
break;
case 38:
-#line 273 "parse-gram.y"
+#line 273 "../../src/parse-gram.y"
{
default_prec = false;
}
break;
case 39:
{
default_prec = false;
}
break;
case 39:
-#line 279 "parse-gram.y"
+#line 279 "../../src/parse-gram.y"
{ current_class = nterm_sym; }
break;
case 40:
{ current_class = nterm_sym; }
break;
case 40:
-#line 280 "parse-gram.y"
+#line 280 "../../src/parse-gram.y"
{
current_class = unknown_sym;
current_type = NULL;
{
current_class = unknown_sym;
current_type = NULL;
-#line 284 "parse-gram.y"
+#line 284 "../../src/parse-gram.y"
{ current_class = token_sym; }
break;
case 42:
{ current_class = token_sym; }
break;
case 42:
-#line 285 "parse-gram.y"
+#line 285 "../../src/parse-gram.y"
{
current_class = unknown_sym;
current_type = NULL;
{
current_class = unknown_sym;
current_type = NULL;
-#line 290 "parse-gram.y"
+#line 290 "../../src/parse-gram.y"
{
symbol_list *list;
for (list = (yyvsp[0].list); list; list = list->next)
{
symbol_list *list;
for (list = (yyvsp[0].list); list; list = list->next)
-#line 300 "parse-gram.y"
+#line 300 "../../src/parse-gram.y"
{
symbol_list *list;
++current_prec;
{
symbol_list *list;
++current_prec;
-#line 314 "parse-gram.y"
+#line 314 "../../src/parse-gram.y"
{ (yyval.assoc) = left_assoc; }
break;
case 46:
{ (yyval.assoc) = left_assoc; }
break;
case 46:
-#line 315 "parse-gram.y"
+#line 315 "../../src/parse-gram.y"
{ (yyval.assoc) = right_assoc; }
break;
case 47:
{ (yyval.assoc) = right_assoc; }
break;
case 47:
-#line 316 "parse-gram.y"
+#line 316 "../../src/parse-gram.y"
{ (yyval.assoc) = non_assoc; }
break;
case 48:
{ (yyval.assoc) = non_assoc; }
break;
case 48:
-#line 320 "parse-gram.y"
+#line 320 "../../src/parse-gram.y"
{ current_type = NULL; }
break;
case 49:
{ current_type = NULL; }
break;
case 49:
-#line 321 "parse-gram.y"
+#line 321 "../../src/parse-gram.y"
{ current_type = (yyvsp[0].uniqstr); }
break;
case 50:
{ current_type = (yyvsp[0].uniqstr); }
break;
case 50:
-#line 327 "parse-gram.y"
+#line 327 "../../src/parse-gram.y"
{ (yyval.list) = symbol_list_new ((yyvsp[0].symbol), (yylsp[0])); }
break;
case 51:
{ (yyval.list) = symbol_list_new ((yyvsp[0].symbol), (yylsp[0])); }
break;
case 51:
-#line 328 "parse-gram.y"
+#line 328 "../../src/parse-gram.y"
{ (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].symbol), (yylsp[0])); }
break;
case 52:
{ (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].symbol), (yylsp[0])); }
break;
case 52:
-#line 334 "parse-gram.y"
+#line 334 "../../src/parse-gram.y"
{
current_type = (yyvsp[0].uniqstr);
}
break;
case 53:
{
current_type = (yyvsp[0].uniqstr);
}
break;
case 53:
-#line 338 "parse-gram.y"
+#line 338 "../../src/parse-gram.y"
{
symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]));
symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
{
symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]));
symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
-#line 343 "parse-gram.y"
+#line 343 "../../src/parse-gram.y"
{
symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
{
symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
-#line 349 "parse-gram.y"
+#line 349 "../../src/parse-gram.y"
{
symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
{
symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
-#line 355 "parse-gram.y"
+#line 355 "../../src/parse-gram.y"
{
symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]));
symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
{
symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]));
symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
-#line 384 "parse-gram.y"
+#line 384 "../../src/parse-gram.y"
{
if (yacc_flag)
complain_at ((yyloc), _("POSIX forbids declarations in the grammar"));
{
if (yacc_flag)
complain_at ((yyloc), _("POSIX forbids declarations in the grammar"));
-#line 389 "parse-gram.y"
+#line 389 "../../src/parse-gram.y"
{
yyerrok;
}
break;
case 64:
{
yyerrok;
}
break;
case 64:
-#line 395 "parse-gram.y"
+#line 395 "../../src/parse-gram.y"
{ current_lhs = (yyvsp[0].symbol); current_lhs_location = (yylsp[0]); }
break;
case 66:
{ current_lhs = (yyvsp[0].symbol); current_lhs_location = (yylsp[0]); }
break;
case 66:
-#line 399 "parse-gram.y"
+#line 399 "../../src/parse-gram.y"
{ grammar_rule_end ((yylsp[0])); }
break;
case 67:
{ grammar_rule_end ((yylsp[0])); }
break;
case 67:
-#line 400 "parse-gram.y"
+#line 400 "../../src/parse-gram.y"
{ grammar_rule_end ((yylsp[0])); }
break;
case 69:
{ grammar_rule_end ((yylsp[0])); }
break;
case 69:
-#line 406 "parse-gram.y"
+#line 406 "../../src/parse-gram.y"
{ grammar_rule_begin (current_lhs, current_lhs_location); }
break;
case 70:
{ grammar_rule_begin (current_lhs, current_lhs_location); }
break;
case 70:
-#line 408 "parse-gram.y"
+#line 408 "../../src/parse-gram.y"
{ grammar_current_rule_symbol_append ((yyvsp[0].symbol), (yylsp[0])); }
break;
case 71:
{ grammar_current_rule_symbol_append ((yyvsp[0].symbol), (yylsp[0])); }
break;
case 71:
-#line 410 "parse-gram.y"
+#line 410 "../../src/parse-gram.y"
{ grammar_current_rule_action_append ((yyvsp[0].chars), (yylsp[0])); }
break;
case 72:
{ grammar_current_rule_action_append ((yyvsp[0].chars), (yylsp[0])); }
break;
case 72:
-#line 412 "parse-gram.y"
+#line 412 "../../src/parse-gram.y"
{ grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); }
break;
case 73:
{ grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); }
break;
case 73:
-#line 414 "parse-gram.y"
+#line 414 "../../src/parse-gram.y"
{ grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); }
break;
case 74:
{ grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); }
break;
case 74:
-#line 416 "parse-gram.y"
+#line 416 "../../src/parse-gram.y"
{ grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); }
break;
case 75:
{ grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); }
break;
case 75:
-#line 420 "parse-gram.y"
+#line 420 "../../src/parse-gram.y"
{ (yyval.symbol) = (yyvsp[0].symbol); }
break;
case 76:
{ (yyval.symbol) = (yyvsp[0].symbol); }
break;
case 76:
-#line 421 "parse-gram.y"
+#line 421 "../../src/parse-gram.y"
{ (yyval.symbol) = (yyvsp[0].symbol); }
break;
case 77:
{ (yyval.symbol) = (yyvsp[0].symbol); }
break;
case 77:
-#line 426 "parse-gram.y"
+#line 426 "../../src/parse-gram.y"
{ (yyval.chars) = (yyvsp[0].chars); }
break;
case 78:
{ (yyval.chars) = (yyvsp[0].chars); }
break;
case 78:
-#line 432 "parse-gram.y"
+#line 432 "../../src/parse-gram.y"
{
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].chars)), (yylsp[0]));
symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]));
{
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].chars)), (yylsp[0]));
symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]));
-#line 441 "parse-gram.y"
+#line 441 "../../src/parse-gram.y"
{ (yyval.chars) = (yyvsp[0].chars); }
break;
case 81:
{ (yyval.chars) = (yyvsp[0].chars); }
break;
case 81:
-#line 448 "parse-gram.y"
+#line 448 "../../src/parse-gram.y"
{
muscle_code_grow ("epilogue", (yyvsp[0].chars), (yylsp[0]));
scanner_last_string_free ();
{
muscle_code_grow ("epilogue", (yyvsp[0].chars), (yylsp[0]));
scanner_last_string_free ();
}
/* Line 1262 of yacc.c. */
}
/* Line 1262 of yacc.c. */
-#line 2068 "parse-gram.c"
+#line 2067 "../../src/parse-gram.c"
\f
yyvsp -= yylen;
yyssp -= yylen;
\f
yyvsp -= yylen;
yyssp -= yylen;
- yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, &yylloc);
YYABORT;
yyerror_range[0] = *yylsp;
YYABORT;
yyerror_range[0] = *yylsp;
- yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, yylsp);
YYPOPSTACK;
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
YYPOPSTACK;
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
-#line 454 "parse-gram.y"
+#line 454 "../../src/parse-gram.y"
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 82 "../../src/parse-gram.y"
typedef union YYSTYPE {
symbol *symbol;
symbol_list *list;
typedef union YYSTYPE {
symbol *symbol;
symbol_list *list;
assoc assoc;
uniqstr uniqstr;
} YYSTYPE;
assoc assoc;
uniqstr uniqstr;
} YYSTYPE;
-/* Line 1518 of yacc.c. */
-#line 151 "parse-gram.h"
+/* Line 1520 of yacc.c. */
+#line 151 "../../src/parse-gram.h"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1