-/* A Bison parser, made from parse-gram.y, by GNU bison 1.49b. */
+/* A Bison parser, made from parse-gram.y, by GNU bison 1.49c. */
/* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
correctly typed access to it. */
#define yycontrol ((gram_control_t *) gram_control)
-/* Request detailed parse error messages, and pass them to
- GRAM_ERROR. */
+/* Request detailed parse error messages, and pass them to GRAM_ERROR.
+ FIXME: depends on the undocumented availability of YYLLOC.t */
#undef yyerror
#define yyerror(Msg) \
- gram_error (yycontrol, &yylloc, Msg)
+ gram_error (&yylloc, Msg)
#define YYPRINT(File, Type, Value) \
yyprint (File, Type, &Value)
char *string;
assoc_t assoc;
} yystype;
-/* Line 187 of /usr/local/share/bison/yacc.c. */
+/* Line 188 of /usr/local/share/bison/yacc.c. */
#line 238 "parse-gram.c"
# define YYSTYPE yystype
# define YYSTYPE_IS_TRIVIAL 1
/* Copy the second part of user declarations. */
-/* Line 207 of /usr/local/share/bison/yacc.c. */
+/* Line 208 of /usr/local/share/bison/yacc.c. */
#line 259 "parse-gram.c"
#if ! defined (yyoverflow) || YYERROR_VERBOSE
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 3
-#define YYFLAG -32768
#define YYLAST 127
/* YYNTOKENS -- Number of terminals. */
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short yyrline[] =
{
- 0, 159, 159, 172, 174, 177, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 198, 200, 201, 205, 212, 211, 222,
- 221, 234, 233, 239, 239, 244, 253, 268, 270, 271,
- 274, 276, 281, 283, 287, 292, 297, 303, 309, 319,
- 322, 331, 333, 339, 341, 346, 353, 352, 357, 359,
- 362, 365, 367, 369, 371, 373, 377, 379, 380, 383,
- 389, 398, 406, 411, 417, 419
+ 0, 162, 162, 175, 177, 180, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 201, 203, 204, 208, 215, 214, 225,
+ 224, 237, 236, 242, 242, 247, 256, 271, 273, 274,
+ 277, 279, 284, 286, 290, 295, 300, 306, 312, 322,
+ 325, 334, 336, 342, 344, 349, 356, 355, 360, 362,
+ 365, 368, 370, 372, 374, 376, 380, 382, 383, 386,
+ 392, 401, 409, 414, 420, 422
};
#endif
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "\"end of string\"", "error", "$undefined.", "STRING", "CHARACTER", "INT",
- "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor\"",
- "\"%printer\"", "\"%union\"", "\"%left\"", "\"%right\"",
- "\"%nonassoc\"", "\"%expect\"", "\"%start\"", "\"%prec\"", "\"%dprec\"",
- "\"%merge\"", "\"%verbose\"", "\"%error-verbose\"", "\"%output\"",
- "\"%file-prefix\"", "\"%name-prefix\"", "\"%define\"",
+ "\"end of file\"", "error", "$undefined", "\"string\"", "\"character\"",
+ "\"integer\"", "\"%token\"", "\"%nterm\"", "\"%type\"",
+ "\"%destructor\"", "\"%printer\"", "\"%union\"", "\"%left\"",
+ "\"%right\"", "\"%nonassoc\"", "\"%expect\"", "\"%start\"", "\"%prec\"",
+ "\"%dprec\"", "\"%merge\"", "\"%verbose\"", "\"%error-verbose\"",
+ "\"%output\"", "\"%file-prefix\"", "\"%name-prefix\"", "\"%define\"",
"\"%pure-parser\"", "\"%glr-parser\"", "\"%defines\"", "\"%yacc\"",
"\"%debug\"", "\"%locations\"", "\"%no-lines\"", "\"%skeleton\"",
- "\"%token-table\"", "TYPE", "\"=\"", "\";\"", "\":\"", "\"|\"",
- "\"identifier\"", "\"%%\"", "PROLOGUE", "EPILOGUE", "BRACED_CODE",
- "$axiom", "input", "declarations", "declaration", "grammar_declaration",
- "@1", "@2", "symbol_declaration", "@3", "@4", "precedence_declaration",
- "precedence_declarator", "type.opt", "symbols.1", "symbol_def",
- "symbol_defs.1", "grammar", "rules_or_grammar_declaration", "rules",
- "@5", "rhses.1", "rhs", "symbol", "action", "string_as_id",
- "string_content", "epilogue.opt", "semi_colon.opt", 0
+ "\"%token-table\"", "\"type\"", "\"=\"", "\";\"", "\":\"", "\"|\"",
+ "\"identifier\"", "\"%%\"", "\"%{...%}\"", "\"epilogue\"", "\"{...}\"",
+ "$accept", "input", "declarations", "declaration",
+ "grammar_declaration", "@1", "@2", "symbol_declaration", "@3", "@4",
+ "precedence_declaration", "precedence_declarator", "type.opt",
+ "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
+ "rules_or_grammar_declaration", "rules", "@5", "rhses.1", "rhs",
+ "symbol", "action", "string_as_id", "string_content", "epilogue.opt",
+ "semi_colon.opt", 0
};
#endif
+# ifdef YYPRINT
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
token YYLEX-NUM. */
-static const short yytoknum[] =
+static const unsigned short yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, -1
+ 295, 296, 297, 298, 299
};
+# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] =
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
STATE-NUM when YYTABLE doesn't specify something else to do. Zero
means the default is an error. */
-static const short yydefact[] =
+static const unsigned char yydefact[] =
{
- 3, 0, 0, 0, 33, 31, 0, 27, 29, 0,
+ 3, 0, 0, 1, 33, 31, 0, 27, 29, 0,
37, 38, 39, 0, 0, 21, 10, 0, 0, 0,
0, 17, 18, 9, 22, 7, 13, 15, 0, 20,
0, 6, 74, 5, 24, 23, 40, 0, 0, 0,
0, 69, 61, 62, 59, 63, 64, 65
};
-/* YYPGOTO[NTERM-NUM]. */
-static const short yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM]. */
+static const signed char yydefgoto[] =
{
-1, 1, 2, 32, 57, 40, 41, 34, 38, 37,
35, 36, 64, 70, 67, 68, 58, 59, 60, 91,
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-static const short yypact[] =
+#define YYPACT_NINF -61
+static const signed char yypact[] =
{
- -32768, 35, 85,-32768,-32768,-32768, 2,-32768,-32768, -5,
- -32768,-32768,-32768, 31, 0,-32768,-32768, 18, 21, 22,
- 59,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 59,-32768,
- 37,-32768, 26,-32768,-32768,-32768, 29, -19, -19, 0,
- 23, 24,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 59,
- 59, 59,-32768, 59,-32768, 28, 33, 32, 1,-32768,
- -32768,-32768,-32768,-32768, 0,-32768, 17,-32768, -19, -19,
- 0,-32768, 0, 0,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768, 30,-32768,-32768, 0, 63,-32768,-32768,-32768, 0,
- 0,-32768,-32768,-32768, -8, 15,-32768,-32768, 0, 67,
- 39,-32768,-32768,-32768, 15,-32768,-32768,-32768
+ -61, 35, 85, -61, -61, -61, 2, -61, -61, -5,
+ -61, -61, -61, 31, 0, -61, -61, 18, 21, 22,
+ 59, -61, -61, -61, -61, -61, -61, -61, 59, -61,
+ 37, -61, 26, -61, -61, -61, 29, -19, -19, 0,
+ 23, 24, -61, -61, -61, -61, -61, -61, -61, 59,
+ 59, 59, -61, 59, -61, 28, 33, 32, 1, -61,
+ -61, -61, -61, -61, 0, -61, 17, -61, -19, -19,
+ 0, -61, 0, 0, -61, -61, -61, -61, -61, -61,
+ -61, 30, -61, -61, 0, 63, -61, -61, -61, 0,
+ 0, -61, -61, -61, -8, 15, -61, -61, 0, 67,
+ 39, -61, -61, -61, 15, -61, -61, -61
};
/* YYPGOTO[NTERM-NUM]. */
-static const short yypgoto[] =
+static const signed char yypgoto[] =
{
- -32768,-32768,-32768,-32768, 76,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768, -12, -45, 41,-32768, 25,-32768,-32768,
- -32768, -17, -14,-32768, -60, -23,-32768,-32768
+ -61, -61, -61, -61, 76, -61, -61, -61, -61, -61,
+ -61, -61, -61, -12, -45, 41, -61, 25, -61, -61,
+ -61, -17, -14, -61, -60, -23, -61, -61
};
/* 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. */
-static const short yytable[] =
+#define YYTABLE_NINF -62
+static const signed char yytable[] =
{
47, -72, 55, 44, 45, 54, 86, 4, 5, 6,
7, 8, 9, 10, 11, 12, 65, 14, 44, 45,
0, 0, 0, 0, 0, 0, 30, 31
};
-static const short yycheck[] =
+static const signed char yycheck[] =
{
14, 0, 1, 3, 4, 28, 66, 6, 7, 8,
9, 10, 11, 12, 13, 14, 35, 16, 3, 4,
\f
+#if YYDEBUG
+/*-----------------------------.
+| Print this symbol on YYOUT. |
+`-----------------------------*/
+
+static void
+#if defined (__STDC__) || defined (__cplusplus)
+yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue, YYLTYPE yylocation)
+#else
+yysymprint (yyout, yytype, yyvalue, yylocation)
+ FILE* yyout;
+ int yytype;
+ YYSTYPE yyvalue;
+ YYLTYPE yylocation;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvalue;
+ (void) yylocation;
+
+ if (yytype < YYNTOKENS)
+ {
+ YYFPRINTF (yyout, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+ YYPRINT (yyout, yytoknum[yytype], yyvalue);
+# endif
+ }
+ else
+ YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
+
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+ YYFPRINTF (yyout, ")");
+}
+#endif /* YYDEBUG. */
+
+
+/*----------------------------------------------------------.
+| yyreport_parse_error -- report a parse error in YYSTATE. |
+`----------------------------------------------------------*/
+
+static void
+#if defined (__STDC__) || defined (__cplusplus)
+yyreport_parse_error (int yystate, int yychar, YYSTYPE yyvalue, YYLTYPE yylloc)
+#else
+yyreport_parse_error (yystate, yychar, yyvalue, yylloc)
+ int yystate;
+ int yychar;
+ YYSTYPE yyvalue;
+ YYLTYPE yylloc;
+#endif
+{
+#if YYERROR_VERBOSE
+ int yyn = yypact[yystate];
+
+ if (YYPACT_NINF < yyn && yyn < YYLAST)
+ {
+ YYSIZE_T yysize = 0;
+ int yytype = YYTRANSLATE (yychar);
+ char *yymsg;
+ int yyx, yycount;
+
+ yycount = 0;
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ yysize += yystrlen (yytname[yyx]) + 15, yycount++;
+ yysize += yystrlen ("parse error, unexpected ") + 1;
+ yysize += yystrlen (yytname[yytype]);
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg != 0)
+ {
+ char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+ yyp = yystpcpy (yyp, yytname[yytype]);
+
+ if (yycount < 5)
+ {
+ yycount = 0;
+ for (yyx = yyn < 0 ? -yyn : 0;
+ yyx < (int) (sizeof (yytname) / sizeof (char *));
+ yyx++)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ const char *yyq = ! yycount ? ", expecting " : " or ";
+ yyp = yystpcpy (yyp, yyq);
+ yyp = yystpcpy (yyp, yytname[yyx]);
+ yycount++;
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exhausted");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror ("parse error");
+
+ /* Pacify ``unused variable'' warnings. */
+ (void) yystate;
+ (void) yychar;
+ (void) yyvalue;
+ (void) yylloc;
+}
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+static void
+#if defined (__STDC__) || defined (__cplusplus)
+yydestruct (int yytype, YYSTYPE yyvalue, YYLTYPE yylocation)
+#else
+yydestruct (yytype, yyvalue, yylocation)
+ int yytype;
+ YYSTYPE yyvalue;
+ YYLTYPE yylocation;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvalue;
+ (void) yylocation;
+
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+\f
+
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
It should actually point to an object.
# endif
#endif
-#if defined (__STDC__) || defined (__cplusplus)
-static void yydestruct (int yytype,
- YYSTYPE yyvalue, YYLTYPE yylocation);
-# if YYDEBUG
-static void yysymprint (FILE* out, int yytype,
- YYSTYPE yyvalue, YYLTYPE yylocation);
-# endif
-#endif
-
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
- if (yyn == YYFLAG)
+ if (yyn == YYPACT_NINF)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
}
yyn += yychar1;
- if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
goto yydefault;
yyn = yytable[yyn];
if (yyn < 0)
{
- if (yyn == YYFLAG)
+ if (yyn == YYTABLE_NINF)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
/* If YYLEN is nonzero, implement the default value of the action:
`$$ = $1'.
- Otherwise, the following line sets YYVAL to the semantic value of
- the lookahead token. This behavior is undocumented and Bison
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
users should not rely upon it. Assigning to YYVAL
unconditionally makes the parser a bit smaller, and it avoids a
GCC warning that YYVAL may be used uninitialized. */
switch (yyn)
{
case 2:
-#line 161 "parse-gram.y"
+#line 164 "parse-gram.y"
{
yycontrol->errcode = 0;
epilogue_set (yyvsp[0].string, yylsp[0]);
break;
case 6:
-#line 179 "parse-gram.y"
+#line 182 "parse-gram.y"
{ prologue_augment (yyvsp[0].string, yylsp[0]); }
break;
case 7:
-#line 180 "parse-gram.y"
+#line 183 "parse-gram.y"
{ debug_flag = 1; }
break;
case 8:
-#line 181 "parse-gram.y"
+#line 184 "parse-gram.y"
{ muscle_insert (yyvsp[-1].string, yyvsp[0].string); }
break;
case 9:
-#line 182 "parse-gram.y"
+#line 185 "parse-gram.y"
{ defines_flag = 1; }
break;
case 10:
-#line 183 "parse-gram.y"
+#line 186 "parse-gram.y"
{ error_verbose = 1; }
break;
case 11:
-#line 184 "parse-gram.y"
+#line 187 "parse-gram.y"
{ expected_conflicts = yyvsp[0].integer; }
break;
case 12:
-#line 185 "parse-gram.y"
+#line 188 "parse-gram.y"
{ spec_file_prefix = yyvsp[0].string; }
break;
case 13:
-#line 186 "parse-gram.y"
+#line 189 "parse-gram.y"
{ locations_flag = 1; }
break;
case 14:
-#line 187 "parse-gram.y"
+#line 190 "parse-gram.y"
{ spec_name_prefix = yyvsp[0].string; }
break;
case 15:
-#line 188 "parse-gram.y"
+#line 191 "parse-gram.y"
{ no_lines_flag = 1; }
break;
case 16:
-#line 189 "parse-gram.y"
+#line 192 "parse-gram.y"
{ spec_outfile = yyvsp[0].string; }
break;
case 17:
-#line 190 "parse-gram.y"
+#line 193 "parse-gram.y"
{ pure_parser = 1; }
break;
case 18:
-#line 191 "parse-gram.y"
+#line 194 "parse-gram.y"
{ glr_parser = 1; }
break;
case 19:
-#line 192 "parse-gram.y"
+#line 195 "parse-gram.y"
{ skeleton = yyvsp[0].string; }
break;
case 20:
-#line 193 "parse-gram.y"
+#line 196 "parse-gram.y"
{ token_table_flag = 1; }
break;
case 21:
-#line 194 "parse-gram.y"
+#line 197 "parse-gram.y"
{ report_flag = 1; }
break;
case 22:
-#line 195 "parse-gram.y"
+#line 198 "parse-gram.y"
{ yacc_flag = 1; }
break;
case 25:
-#line 202 "parse-gram.y"
+#line 205 "parse-gram.y"
{
grammar_start_symbol_set (yyvsp[0].symbol, yylsp[0]);
}
break;
case 26:
-#line 206 "parse-gram.y"
+#line 209 "parse-gram.y"
{
typed = 1;
MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line);
break;
case 27:
-#line 212 "parse-gram.y"
+#line 215 "parse-gram.y"
{ current_braced_code = destructor_braced_code; }
break;
case 28:
-#line 214 "parse-gram.y"
+#line 217 "parse-gram.y"
{
symbol_list_t *list;
for (list = yyvsp[0].list; list; list = list->next)
break;
case 29:
-#line 222 "parse-gram.y"
+#line 225 "parse-gram.y"
{ current_braced_code = printer_braced_code; }
break;
case 30:
-#line 224 "parse-gram.y"
+#line 227 "parse-gram.y"
{
symbol_list_t *list;
for (list = yyvsp[0].list; list; list = list->next)
break;
case 31:
-#line 234 "parse-gram.y"
+#line 237 "parse-gram.y"
{ current_class = nterm_sym; }
break;
case 32:
-#line 235 "parse-gram.y"
+#line 238 "parse-gram.y"
{
current_class = unknown_sym;
current_type = NULL;
break;
case 33:
-#line 239 "parse-gram.y"
+#line 242 "parse-gram.y"
{ current_class = token_sym; }
break;
case 34:
-#line 240 "parse-gram.y"
+#line 243 "parse-gram.y"
{
current_class = unknown_sym;
current_type = NULL;
break;
case 35:
-#line 245 "parse-gram.y"
+#line 248 "parse-gram.y"
{
symbol_list_t *list;
for (list = yyvsp[0].list; list; list = list->next)
break;
case 36:
-#line 255 "parse-gram.y"
+#line 258 "parse-gram.y"
{
symbol_list_t *list;
++current_prec;
break;
case 37:
-#line 269 "parse-gram.y"
+#line 272 "parse-gram.y"
{ yyval.assoc = left_assoc; }
break;
case 38:
-#line 270 "parse-gram.y"
+#line 273 "parse-gram.y"
{ yyval.assoc = right_assoc; }
break;
case 39:
-#line 271 "parse-gram.y"
+#line 274 "parse-gram.y"
{ yyval.assoc = non_assoc; }
break;
case 40:
-#line 275 "parse-gram.y"
+#line 278 "parse-gram.y"
{ current_type = NULL;}
break;
case 41:
-#line 276 "parse-gram.y"
+#line 279 "parse-gram.y"
{ current_type = yyvsp[0].string; }
break;
case 42:
-#line 282 "parse-gram.y"
+#line 285 "parse-gram.y"
{ yyval.list = symbol_list_new (yyvsp[0].symbol, yylsp[0]); }
break;
case 43:
-#line 283 "parse-gram.y"
+#line 286 "parse-gram.y"
{ yyval.list = symbol_list_prepend (yyvsp[-1].list, yyvsp[0].symbol, yylsp[0]); }
break;
case 44:
-#line 289 "parse-gram.y"
+#line 292 "parse-gram.y"
{
current_type = yyvsp[0].string;
}
break;
case 45:
-#line 293 "parse-gram.y"
+#line 296 "parse-gram.y"
{
symbol_class_set (yyvsp[0].symbol, current_class, yylsp[0]);
symbol_type_set (yyvsp[0].symbol, current_type, yylsp[0]);
break;
case 46:
-#line 298 "parse-gram.y"
+#line 301 "parse-gram.y"
{
symbol_class_set (yyvsp[-1].symbol, current_class, yylsp[-1]);
symbol_type_set (yyvsp[-1].symbol, current_type, yylsp[-1]);
break;
case 47:
-#line 304 "parse-gram.y"
+#line 307 "parse-gram.y"
{
symbol_class_set (yyvsp[-1].symbol, current_class, yylsp[-1]);
symbol_type_set (yyvsp[-1].symbol, current_type, yylsp[-1]);
break;
case 48:
-#line 310 "parse-gram.y"
+#line 313 "parse-gram.y"
{
symbol_class_set (yyvsp[-2].symbol, current_class, yylsp[-2]);
symbol_type_set (yyvsp[-2].symbol, current_type, yylsp[-2]);
break;
case 49:
-#line 321 "parse-gram.y"
+#line 324 "parse-gram.y"
{;}
break;
case 50:
-#line 323 "parse-gram.y"
+#line 326 "parse-gram.y"
{;}
break;
case 54:
-#line 342 "parse-gram.y"
+#line 345 "parse-gram.y"
{
if (yacc_flag)
complain_at (yyloc, _("POSIX forbids declarations in the grammar"));
break;
case 55:
-#line 347 "parse-gram.y"
+#line 350 "parse-gram.y"
{
yyerrok;
}
break;
case 56:
-#line 353 "parse-gram.y"
+#line 356 "parse-gram.y"
{ current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; }
break;
case 57:
-#line 354 "parse-gram.y"
+#line 357 "parse-gram.y"
{;}
break;
case 58:
-#line 358 "parse-gram.y"
+#line 361 "parse-gram.y"
{ grammar_rule_end (yylsp[0]); }
break;
case 59:
-#line 359 "parse-gram.y"
+#line 362 "parse-gram.y"
{ grammar_rule_end (yylsp[0]); }
break;
case 60:
-#line 364 "parse-gram.y"
+#line 367 "parse-gram.y"
{ grammar_rule_begin (current_lhs, current_lhs_location); }
break;
case 61:
-#line 366 "parse-gram.y"
+#line 369 "parse-gram.y"
{ grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); }
break;
case 62:
-#line 368 "parse-gram.y"
+#line 371 "parse-gram.y"
{ grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); }
break;
case 63:
-#line 370 "parse-gram.y"
+#line 373 "parse-gram.y"
{ grammar_current_rule_prec_set (yyvsp[0].symbol, yylsp[0]); }
break;
case 64:
-#line 372 "parse-gram.y"
+#line 375 "parse-gram.y"
{ grammar_current_rule_dprec_set (yyvsp[0].integer, yylsp[0]); }
break;
case 65:
-#line 374 "parse-gram.y"
+#line 377 "parse-gram.y"
{ grammar_current_rule_merge_set (yyvsp[0].string, yylsp[0]); }
break;
case 66:
-#line 378 "parse-gram.y"
+#line 381 "parse-gram.y"
{ yyval.symbol = yyvsp[0].symbol; }
break;
case 67:
-#line 379 "parse-gram.y"
+#line 382 "parse-gram.y"
{ yyval.symbol = yyvsp[0].symbol; }
break;
case 68:
-#line 380 "parse-gram.y"
+#line 383 "parse-gram.y"
{ yyval.symbol = symbol_get (yyvsp[0].string, yylsp[0]); }
break;
case 69:
-#line 385 "parse-gram.y"
+#line 388 "parse-gram.y"
{ yyval.string = yyvsp[0].string; }
break;
case 70:
-#line 391 "parse-gram.y"
+#line 394 "parse-gram.y"
{
yyval.symbol = symbol_get (yyvsp[0].string, yylsp[0]);
symbol_class_set (yyval.symbol, token_sym, yylsp[0]);
break;
case 71:
-#line 400 "parse-gram.y"
+#line 403 "parse-gram.y"
{
yyval.string = yyvsp[0].string + 1;
yyval.string[strlen (yyval.string) - 1] = '\0';
break;
case 72:
-#line 408 "parse-gram.y"
+#line 411 "parse-gram.y"
{
yyval.string = xstrdup ("");
}
break;
case 73:
-#line 412 "parse-gram.y"
+#line 415 "parse-gram.y"
{
yyval.string = yyvsp[0].string;
}
}
-/* Line 955 of /usr/local/share/bison/yacc.c. */
-#line 1537 "parse-gram.c"
+/* Line 1081 of /usr/local/share/bison/yacc.c. */
+#line 1671 "parse-gram.c"
\f
yyvsp -= yylen;
yyssp -= yylen;
yyn = yyr1[yyn];
yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
yystate = yydefgoto[yyn - YYNTOKENS];
if (!yyerrstatus)
{
++yynerrs;
-
-#if YYERROR_VERBOSE
- yyn = yypact[yystate];
-
- if (yyn > YYFLAG && yyn < YYLAST)
- {
- YYSIZE_T yysize = 0;
- char *yymsg;
- int yyx, yycount;
-
- yycount = 0;
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
- if (yycheck[yyx + yyn] == yyx)
- yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("parse error, unexpected ") + 1;
- yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
- yymsg = (char *) YYSTACK_ALLOC (yysize);
- if (yymsg != 0)
- {
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
- yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
-
- if (yycount < 5)
- {
- yycount = 0;
- for (yyx = yyn < 0 ? -yyn : 0;
- yyx < (int) (sizeof (yytname) / sizeof (char *));
- yyx++)
- if (yycheck[yyx + yyn] == yyx)
- {
- const char *yyq = ! yycount ? ", expecting " : " or ";
- yyp = yystpcpy (yyp, yyq);
- yyp = yystpcpy (yyp, yytname[yyx]);
- yycount++;
- }
- }
- yyerror (yymsg);
- YYSTACK_FREE (yymsg);
- }
- else
- yyerror ("parse error; also virtual memory exhausted");
- }
- else
-#endif /* YYERROR_VERBOSE */
- yyerror ("parse error");
+ yyreport_parse_error (yystate, yychar, yylval, yylloc);
}
goto yyerrlab1;
for (;;)
{
yyn = yypact[yystate];
- if (yyn != YYFLAG)
+ if (yyn != YYPACT_NINF)
{
yyn += YYTERROR;
if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
}
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-static void
-yydestruct (int yytype,
- YYSTYPE yyvalue, YYLTYPE yylocation)
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvalue;
- (void) yylocation;
-
- switch (yytype)
- {
- default:
- break;
- }
-}
-
-
-#if YYDEBUG
-/*-----------------------------.
-| Print this symbol on YYOUT. |
-`-----------------------------*/
-
-static void
-yysymprint (FILE* yyout, int yytype,
- YYSTYPE yyvalue, YYLTYPE yylocation)
-{
- /* Pacify ``unused variable'' warnings. */
- (void) yyvalue;
- (void) yylocation;
-
- if (yytype < YYNTOKENS)
- {
- YYFPRINTF (yyout, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
- YYPRINT (yyout, yytoknum[yytype], yyvalue);
-# endif
- }
- else
- YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
-
- switch (yytype)
- {
- default:
- break;
- }
- YYFPRINTF (yyout, ")");
-}
-#endif /* YYDEBUG. */
-
-#line 421 "parse-gram.y"
+#line 424 "parse-gram.y"
/*------------------------------------------------------------------.
| When debugging the parser, display tokens' locations and values. |
}
void
-gram_error (gram_control_t *control ATTRIBUTE_UNUSED,
- location_t *yylloc, const char *msg)
+gram_error (location_t *yylloc, const char *msg)
{
complain_at (*yylloc, "%s", msg);
}