X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/2abdfeefce57f8f03bf2e93df0bfa63aad380fd1..e764d4df7653fc7d04f97ae214c3c453de416ab9:/src/parse-gram.c diff --git a/src/parse-gram.c b/src/parse-gram.c index bc5c9af2..afc95903 100644 --- a/src/parse-gram.c +++ b/src/parse-gram.c @@ -98,21 +98,22 @@ PERCENT_OUTPUT = 288, PERCENT_PARSE_PARAM = 289, PERCENT_PURE_PARSER = 290, - PERCENT_SKELETON = 291, - PERCENT_START = 292, - PERCENT_TOKEN_TABLE = 293, - PERCENT_VERBOSE = 294, - PERCENT_YACC = 295, - TYPE = 296, - EQUAL = 297, - SEMICOLON = 298, - PIPE = 299, - ID = 300, - ID_COLON = 301, - PERCENT_PERCENT = 302, - PROLOGUE = 303, - EPILOGUE = 304, - BRACED_CODE = 305 + PERCENT_REQUIRE = 291, + PERCENT_SKELETON = 292, + PERCENT_START = 293, + PERCENT_TOKEN_TABLE = 294, + PERCENT_VERBOSE = 295, + PERCENT_YACC = 296, + TYPE = 297, + EQUAL = 298, + SEMICOLON = 299, + PIPE = 300, + ID = 301, + ID_COLON = 302, + PERCENT_PERCENT = 303, + PROLOGUE = 304, + EPILOGUE = 305, + BRACED_CODE = 306 }; #endif /* Tokens. */ @@ -150,21 +151,22 @@ #define PERCENT_OUTPUT 288 #define PERCENT_PARSE_PARAM 289 #define PERCENT_PURE_PARSER 290 -#define PERCENT_SKELETON 291 -#define PERCENT_START 292 -#define PERCENT_TOKEN_TABLE 293 -#define PERCENT_VERBOSE 294 -#define PERCENT_YACC 295 -#define TYPE 296 -#define EQUAL 297 -#define SEMICOLON 298 -#define PIPE 299 -#define ID 300 -#define ID_COLON 301 -#define PERCENT_PERCENT 302 -#define PROLOGUE 303 -#define EPILOGUE 304 -#define BRACED_CODE 305 +#define PERCENT_REQUIRE 291 +#define PERCENT_SKELETON 292 +#define PERCENT_START 293 +#define PERCENT_TOKEN_TABLE 294 +#define PERCENT_VERBOSE 295 +#define PERCENT_YACC 296 +#define TYPE 297 +#define EQUAL 298 +#define SEMICOLON 299 +#define PIPE 300 +#define ID 301 +#define ID_COLON 302 +#define PERCENT_PERCENT 303 +#define PROLOGUE 304 +#define EPILOGUE 305 +#define BRACED_CODE 306 @@ -205,6 +207,7 @@ #include "quotearg.h" #include "reader.h" #include "symlist.h" +#include "strverscmp.h" #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N) static YYLTYPE lloc_default (YYLTYPE const *, int); @@ -212,6 +215,8 @@ static YYLTYPE lloc_default (YYLTYPE const *, int); #define YY_LOCATION_PRINT(File, Loc) \ location_print (File, Loc) +static void version_check (location const *loc, char const *version); + /* Request detailed syntax error messages, and pass them to GRAM_ERROR. FIXME: depends on the undocumented availability of YYLLOC. */ #undef yyerror @@ -248,7 +253,7 @@ static int current_prec = 0; #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 79 "parse-gram.y" +#line 82 "parse-gram.y" typedef union YYSTYPE { symbol *symbol; symbol_list *list; @@ -258,7 +263,7 @@ typedef union YYSTYPE { uniqstr uniqstr; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 262 "parse-gram.c" +#line 267 "parse-gram.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -282,20 +287,19 @@ typedef struct YYLTYPE /* Line 219 of yacc.c. */ -#line 286 "parse-gram.c" - -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int +#line 291 "parse-gram.c" + +#ifndef YYSIZE_T +# if defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +# elif defined (size_t) +# define YYSIZE_T size_t +# elif ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) @@ -312,6 +316,9 @@ typedef struct YYLTYPE # endif #endif +/* Suppress unused-variable warnings by "using" E. */ +#define YYUSE(e) do {;} while (/*CONSTCOND*/ 0 && (e)) + #if ! defined (yyoverflow) || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -320,11 +327,21 @@ typedef struct YYLTYPE # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca +# elif defined (__BUILTIN_VA_ARG_INCR) +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined (_AIX) +# define YYSTACK_ALLOC __alloca +# elif defined (_MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if defined (__STDC__) || defined (__cplusplus) +# if (! defined (_ALLOCA_H) && ! defined (_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) # include /* INFRINGES ON USER NAME SPACE */ -# define YYINCLUDED_STDLIB_H +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif # endif # endif # endif @@ -351,14 +368,14 @@ extern "C" { # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \ +# if (! defined (malloc) && ! defined (_STDLIB_H) \ && (defined (__STDC__) || defined (__cplusplus))) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \ +# if (! defined (free) && ! defined (_STDLIB_H) \ && (defined (__STDC__) || defined (__cplusplus))) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -406,7 +423,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ - while (0) + while (/*CONSTCOND*/ 0) # endif # endif @@ -424,7 +441,7 @@ union yyalloc yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ - while (0) + while (/*CONSTCOND*/ 0) #endif @@ -437,20 +454,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 158 +#define YYLAST 161 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 51 +#define YYNTOKENS 52 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 25 /* YYNRULES -- Number of rules. */ -#define YYNRULES 79 +#define YYNRULES 81 /* YYNRULES -- Number of states. */ -#define YYNSTATES 108 +#define YYNSTATES 110 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 305 +#define YYMAXUTOK 306 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -488,7 +505,7 @@ static const unsigned char yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50 + 45, 46, 47, 48, 49, 50, 51 }; #if YYDEBUG @@ -496,53 +513,55 @@ static const unsigned char yytranslate[] = YYRHS. */ static const unsigned char yyprhs[] = { - 0, 0, 3, 8, 9, 12, 14, 16, 18, 22, - 24, 26, 29, 32, 36, 38, 40, 42, 44, 48, - 50, 52, 56, 58, 60, 63, 65, 67, 69, 71, - 73, 75, 78, 80, 83, 86, 88, 90, 91, 95, - 96, 100, 104, 108, 110, 112, 114, 115, 117, 119, - 122, 124, 126, 129, 132, 136, 138, 141, 143, 146, - 148, 151, 154, 155, 159, 161, 165, 168, 169, 172, - 175, 179, 183, 187, 189, 191, 193, 195, 197, 198 + 0, 0, 3, 8, 9, 12, 14, 16, 18, 21, + 25, 27, 29, 32, 35, 39, 41, 43, 45, 47, + 51, 53, 55, 59, 61, 63, 66, 69, 71, 73, + 75, 77, 79, 81, 84, 86, 89, 92, 94, 96, + 97, 101, 102, 106, 110, 114, 116, 118, 120, 121, + 123, 125, 128, 130, 132, 135, 138, 142, 144, 147, + 149, 152, 154, 157, 160, 161, 165, 167, 171, 174, + 175, 178, 181, 185, 189, 193, 195, 197, 199, 201, + 203, 204 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yysigned_char yyrhs[] = { - 52, 0, -1, 53, 47, 65, 75, -1, -1, 53, - 54, -1, 55, -1, 48, -1, 17, -1, 19, 74, - 74, -1, 20, -1, 21, -1, 22, 4, -1, 23, - 4, -1, 24, 42, 74, -1, 25, -1, 26, -1, - 27, -1, 28, -1, 29, 42, 74, -1, 31, -1, - 32, -1, 33, 42, 74, -1, 34, -1, 35, -1, - 36, 74, -1, 38, -1, 39, -1, 40, -1, 43, - -1, 59, -1, 56, -1, 37, 71, -1, 10, -1, - 8, 62, -1, 9, 62, -1, 18, -1, 30, -1, - -1, 6, 57, 64, -1, -1, 5, 58, 64, -1, - 7, 41, 62, -1, 60, 61, 62, -1, 11, -1, - 12, -1, 13, -1, -1, 41, -1, 71, -1, 62, - 71, -1, 41, -1, 45, -1, 45, 4, -1, 45, - 73, -1, 45, 4, 73, -1, 63, -1, 64, 63, - -1, 66, -1, 65, 66, -1, 67, -1, 55, 43, - -1, 1, 43, -1, -1, 46, 68, 69, -1, 70, - -1, 69, 44, 70, -1, 69, 43, -1, -1, 70, - 71, -1, 70, 72, -1, 70, 14, 71, -1, 70, - 15, 4, -1, 70, 16, 41, -1, 45, -1, 73, - -1, 50, -1, 3, -1, 3, -1, -1, 47, 49, - -1 + 53, 0, -1, 54, 48, 66, 76, -1, -1, 54, + 55, -1, 56, -1, 49, -1, 17, -1, 19, 75, + -1, 19, 75, 75, -1, 20, -1, 21, -1, 22, + 4, -1, 23, 4, -1, 24, 43, 75, -1, 25, + -1, 26, -1, 27, -1, 28, -1, 29, 43, 75, + -1, 31, -1, 32, -1, 33, 43, 75, -1, 34, + -1, 35, -1, 36, 75, -1, 37, 75, -1, 39, + -1, 40, -1, 41, -1, 44, -1, 60, -1, 57, + -1, 38, 72, -1, 10, -1, 8, 63, -1, 9, + 63, -1, 18, -1, 30, -1, -1, 6, 58, 65, + -1, -1, 5, 59, 65, -1, 7, 42, 63, -1, + 61, 62, 63, -1, 11, -1, 12, -1, 13, -1, + -1, 42, -1, 72, -1, 63, 72, -1, 42, -1, + 46, -1, 46, 4, -1, 46, 74, -1, 46, 4, + 74, -1, 64, -1, 65, 64, -1, 67, -1, 66, + 67, -1, 68, -1, 56, 44, -1, 1, 44, -1, + -1, 47, 69, 70, -1, 71, -1, 70, 45, 71, + -1, 70, 44, -1, -1, 71, 72, -1, 71, 73, + -1, 71, 14, 72, -1, 71, 15, 4, -1, 71, + 16, 42, -1, 46, -1, 74, -1, 51, -1, 3, + -1, 3, -1, -1, 48, 50, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 188, 188, 196, 198, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 216, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 236, - 237, 238, 242, 248, 255, 262, 266, 273, 273, 278, - 278, 283, 293, 308, 309, 310, 314, 315, 321, 322, - 327, 331, 336, 342, 348, 359, 360, 369, 370, 376, - 377, 382, 389, 389, 393, 394, 395, 400, 401, 403, - 405, 407, 409, 414, 415, 419, 425, 434, 439, 441 + 0, 192, 192, 200, 202, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 221, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 242, 243, 244, 248, 254, 261, 268, 272, 279, + 279, 284, 284, 289, 299, 314, 315, 316, 320, 321, + 327, 328, 333, 337, 342, 348, 354, 365, 366, 375, + 376, 382, 383, 388, 395, 395, 399, 400, 401, 406, + 407, 409, 411, 413, 415, 420, 421, 425, 431, 440, + 445, 447 }; #endif @@ -560,15 +579,16 @@ static const char *const yytname[] = "\"%initial-action {...}\"", "\"%lex-param {...}\"", "\"%locations\"", "\"%name-prefix\"", "\"%no-default-prec\"", "\"%no-lines\"", "\"%nondeterministic-parser\"", "\"%output\"", "\"%parse-param {...}\"", - "\"%pure-parser\"", "\"%skeleton\"", "\"%start\"", "\"%token-table\"", - "\"%verbose\"", "\"%yacc\"", "\"type\"", "\"=\"", "\";\"", "\"|\"", - "\"identifier\"", "\"identifier:\"", "\"%%\"", "\"%{...%}\"", - "\"epilogue\"", "\"{...}\"", "$accept", "input", "declarations", - "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2", - "precedence_declaration", "precedence_declarator", "type.opt", - "symbols.1", "symbol_def", "symbol_defs.1", "grammar", - "rules_or_grammar_declaration", "rules", "@3", "rhses.1", "rhs", - "symbol", "action", "string_as_id", "string_content", "epilogue.opt", 0 + "\"%pure-parser\"", "\"%require\"", "\"%skeleton\"", "\"%start\"", + "\"%token-table\"", "\"%verbose\"", "\"%yacc\"", "\"type\"", "\"=\"", + "\";\"", "\"|\"", "\"identifier\"", "\"identifier:\"", "\"%%\"", + "\"%{...%}\"", "\"epilogue\"", "\"{...}\"", "$accept", "input", + "declarations", "declaration", "grammar_declaration", + "symbol_declaration", "@1", "@2", "precedence_declaration", + "precedence_declarator", "type.opt", "symbols.1", "symbol_def", + "symbol_defs.1", "grammar", "rules_or_grammar_declaration", "rules", + "@3", "rhses.1", "rhs", "symbol", "action", "string_as_id", + "string_content", "epilogue.opt", 0 }; #endif @@ -582,34 +602,36 @@ static const unsigned short int yytoknum[] = 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, 300, 301, 302, 303, 304, - 305 + 305, 306 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 51, 52, 53, 53, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, - 55, 55, 55, 55, 55, 55, 55, 57, 56, 58, - 56, 56, 59, 60, 60, 60, 61, 61, 62, 62, - 63, 63, 63, 63, 63, 64, 64, 65, 65, 66, - 66, 66, 68, 67, 69, 69, 69, 70, 70, 70, - 70, 70, 70, 71, 71, 72, 73, 74, 75, 75 + 0, 52, 53, 54, 54, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 56, 56, 56, 56, 56, 56, 56, 56, 58, + 57, 59, 57, 57, 60, 61, 61, 61, 62, 62, + 63, 63, 64, 64, 64, 64, 64, 65, 65, 66, + 66, 67, 67, 67, 69, 68, 70, 70, 70, 71, + 71, 71, 71, 71, 71, 72, 72, 73, 74, 75, + 76, 76 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const unsigned char yyr2[] = { - 0, 2, 4, 0, 2, 1, 1, 1, 3, 1, - 1, 2, 2, 3, 1, 1, 1, 1, 3, 1, - 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, - 1, 2, 1, 2, 2, 1, 1, 0, 3, 0, - 3, 3, 3, 1, 1, 1, 0, 1, 1, 2, - 1, 1, 2, 2, 3, 1, 2, 1, 2, 1, - 2, 2, 0, 3, 1, 3, 2, 0, 2, 2, - 3, 3, 3, 1, 1, 1, 1, 1, 0, 2 + 0, 2, 4, 0, 2, 1, 1, 1, 2, 3, + 1, 1, 2, 2, 3, 1, 1, 1, 1, 3, + 1, 1, 3, 1, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 2, 1, 2, 2, 1, 1, 0, + 3, 0, 3, 3, 3, 1, 1, 1, 0, 1, + 1, 2, 1, 1, 2, 2, 3, 1, 2, 1, + 2, 1, 2, 2, 0, 3, 1, 3, 2, 0, + 2, 2, 3, 3, 3, 1, 1, 1, 1, 1, + 0, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -617,113 +639,115 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned char yydefact[] = { - 3, 0, 0, 1, 39, 37, 0, 0, 0, 32, - 43, 44, 45, 7, 35, 0, 9, 10, 0, 0, - 0, 14, 15, 16, 17, 0, 36, 19, 20, 0, - 22, 23, 0, 0, 25, 26, 27, 28, 0, 6, - 4, 5, 30, 29, 46, 0, 0, 0, 76, 73, - 33, 48, 74, 34, 77, 0, 11, 12, 0, 0, - 0, 24, 31, 0, 62, 0, 0, 57, 59, 47, - 0, 50, 51, 55, 40, 38, 41, 49, 8, 13, - 18, 21, 61, 67, 60, 0, 58, 2, 42, 52, - 53, 56, 63, 64, 79, 54, 66, 67, 0, 0, - 0, 75, 68, 69, 65, 70, 71, 72 + 3, 0, 0, 1, 41, 39, 0, 0, 0, 34, + 45, 46, 47, 7, 37, 0, 10, 11, 0, 0, + 0, 15, 16, 17, 18, 0, 38, 20, 21, 0, + 23, 24, 0, 0, 0, 27, 28, 29, 30, 0, + 6, 4, 5, 32, 31, 48, 0, 0, 0, 78, + 75, 35, 50, 76, 36, 79, 8, 12, 13, 0, + 0, 0, 25, 26, 33, 0, 64, 0, 0, 59, + 61, 49, 0, 52, 53, 57, 42, 40, 43, 51, + 9, 14, 19, 22, 63, 69, 62, 0, 60, 2, + 44, 54, 55, 58, 65, 66, 81, 56, 68, 69, + 0, 0, 0, 77, 70, 71, 67, 72, 73, 74 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yysigned_char yydefgoto[] = { - -1, 1, 2, 40, 65, 42, 46, 45, 43, 44, - 70, 50, 73, 74, 66, 67, 68, 83, 92, 93, - 51, 103, 52, 55, 87 + -1, 1, 2, 41, 67, 43, 47, 46, 44, 45, + 72, 51, 75, 76, 68, 69, 70, 85, 94, 95, + 52, 105, 53, 56, 89 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -67 +#define YYPACT_NINF -69 static const yysigned_char yypact[] = { - -67, 5, 110, -67, -67, -67, -34, 0, 0, -67, - -67, -67, -67, -67, -67, 13, -67, -67, 20, 31, - -17, -67, -67, -67, -67, -6, -67, -67, -67, -5, - -67, -67, 13, 0, -67, -67, -67, -67, 68, -67, - -67, -67, -67, -67, -3, -37, -37, 0, -67, -67, - 0, -67, -67, 0, -67, 13, -67, -67, 13, 13, - 13, -67, -67, -2, -67, 3, 21, -67, -67, -67, - 0, -67, 6, -67, -37, -37, 0, -67, -67, -67, - -67, -67, -67, -67, -67, 1, -67, -67, 0, 39, - -67, -67, -32, -1, -67, -67, -67, -67, 0, 43, - 7, -67, -67, -67, -1, -67, -67, -67 + -69, 5, 112, -69, -69, -69, -35, 0, 0, -69, + -69, -69, -69, -69, -69, 13, -69, -69, 20, 31, + -18, -69, -69, -69, -69, -6, -69, -69, -69, -5, + -69, -69, 13, 13, 0, -69, -69, -69, -69, 69, + -69, -69, -69, -69, -69, -2, -38, -38, 0, -69, + -69, 0, -69, -69, 0, -69, 13, -69, -69, 13, + 13, 13, -69, -69, -69, -8, -69, 3, 21, -69, + -69, -69, 0, -69, 6, -69, -38, -38, 0, -69, + -69, -69, -69, -69, -69, -69, -69, 2, -69, -69, + 0, 39, -69, -69, -33, -1, -69, -69, -69, -69, + 0, 44, 1, -69, -69, -69, -1, -69, -69, -69 }; /* YYPGOTO[NTERM-NUM]. */ static const yysigned_char yypgoto[] = { - -67, -67, -67, -67, 50, -67, -67, -67, -67, -67, - -67, -7, -56, 8, -67, -13, -67, -67, -67, -41, - -33, -67, -66, 29, -67 + -69, -69, -69, -69, 47, -69, -69, -69, -69, -69, + -69, -7, -58, 7, -69, -15, -69, -69, -69, -44, + -34, -69, -68, 30, -69 }; /* 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. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -79 +#define YYTABLE_NINF -81 static const yysigned_char yytable[] = { - 62, 53, 48, 48, 71, 3, 90, 47, 72, 48, - 89, 96, 97, 98, 99, 100, 54, 77, 91, 91, - 77, -78, 63, 95, 56, 58, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 57, 59, 60, 69, 14, - 76, 82, 48, 77, 49, 49, 84, 106, 107, 101, - 94, 26, 41, 86, 75, 77, 104, 0, 33, 0, - 102, 61, 0, 88, 0, 105, 0, 64, 85, 63, - 0, 102, 0, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 0, 0, 78, 0, 14, 79, 80, 81, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 0, 0, 0, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 0, 0, 37, 0, 0, 0, 38, 39 + 64, 54, 49, 49, 73, 3, 92, 48, 74, 49, + 91, 98, 99, 100, 101, 102, 55, 79, 93, 93, + 79, -80, 65, 97, 57, 59, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 58, 84, 60, 61, 14, + 71, 78, 49, 109, 79, 50, 50, 86, 108, 42, + 103, 26, 96, 88, 77, 106, 79, 0, 0, 34, + 0, 104, 62, 63, 0, 90, 107, 0, 66, 87, + 65, 0, 104, 0, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 0, 0, 0, 80, 14, 0, 81, + 82, 83, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 66, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 0, 0, 0, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 0, 0, 38, 0, 0, 0, + 39, 40 }; static const yysigned_char yycheck[] = { - 33, 8, 3, 3, 41, 0, 72, 41, 45, 3, - 4, 43, 44, 14, 15, 16, 3, 50, 74, 75, - 53, 0, 1, 89, 4, 42, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 4, 42, 42, 41, 18, - 47, 43, 3, 76, 45, 45, 43, 4, 41, 50, - 49, 30, 2, 66, 46, 88, 97, -1, 37, -1, - 93, 32, -1, 70, -1, 98, -1, 46, 47, 1, - -1, 104, -1, 5, 6, 7, 8, 9, 10, 11, - 12, 13, -1, -1, 55, -1, 18, 58, 59, 60, - -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, - -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, - -1, -1, -1, -1, 46, 5, 6, 7, 8, 9, - 10, 11, 12, 13, -1, -1, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, -1, -1, 43, -1, -1, -1, 47, 48 + 34, 8, 3, 3, 42, 0, 74, 42, 46, 3, + 4, 44, 45, 14, 15, 16, 3, 51, 76, 77, + 54, 0, 1, 91, 4, 43, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 4, 44, 43, 43, 18, + 42, 48, 3, 42, 78, 46, 46, 44, 4, 2, + 51, 30, 50, 68, 47, 99, 90, -1, -1, 38, + -1, 95, 32, 33, -1, 72, 100, -1, 47, 48, + 1, -1, 106, -1, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, -1, -1, 56, 18, -1, 59, + 60, 61, -1, -1, -1, -1, -1, -1, -1, 30, + -1, -1, -1, -1, -1, -1, -1, 38, -1, -1, + -1, -1, -1, -1, -1, -1, 47, 5, 6, 7, + 8, 9, 10, 11, 12, 13, -1, -1, -1, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, -1, -1, 44, -1, -1, -1, + 48, 49 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 52, 53, 0, 5, 6, 7, 8, 9, 10, + 0, 53, 54, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 43, 47, 48, - 54, 55, 56, 59, 60, 58, 57, 41, 3, 45, - 62, 71, 73, 62, 3, 74, 4, 4, 42, 42, - 42, 74, 71, 1, 46, 55, 65, 66, 67, 41, - 61, 41, 45, 63, 64, 64, 62, 71, 74, 74, - 74, 74, 43, 68, 43, 47, 66, 75, 62, 4, - 73, 63, 69, 70, 49, 73, 43, 44, 14, 15, - 16, 50, 71, 72, 70, 71, 4, 41 + 34, 35, 36, 37, 38, 39, 40, 41, 44, 48, + 49, 55, 56, 57, 60, 61, 59, 58, 42, 3, + 46, 63, 72, 74, 63, 3, 75, 4, 4, 43, + 43, 43, 75, 75, 72, 1, 47, 56, 66, 67, + 68, 42, 62, 42, 46, 64, 65, 65, 63, 72, + 75, 75, 75, 75, 44, 69, 44, 48, 67, 76, + 63, 4, 74, 64, 70, 71, 50, 74, 44, 45, + 14, 15, 16, 51, 72, 73, 71, 72, 4, 42 }; #define yyerrok (yyerrstatus = 0) @@ -759,7 +783,7 @@ do \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ -while (0) +while (/*CONSTCOND*/ 0) #define YYTERROR 1 @@ -788,7 +812,7 @@ while (0) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (0) + while (/*CONSTCOND*/ 0) #endif @@ -828,7 +852,7 @@ while (0) do { \ if (yydebug) \ YYFPRINTF Args; \ -} while (0) +} while (/*CONSTCOND*/ 0) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ @@ -839,7 +863,7 @@ do { \ Type, Value, Location); \ YYFPRINTF (stderr, "\n"); \ } \ -} while (0) +} while (/*CONSTCOND*/ 0) /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | @@ -866,7 +890,7 @@ yy_stack_print (bottom, top) do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ -} while (0) +} while (/*CONSTCOND*/ 0) /*------------------------------------------------. @@ -896,7 +920,7 @@ yy_reduce_print (yyrule) do { \ if (yydebug) \ yy_reduce_print (Rule); \ -} while (0) +} while (/*CONSTCOND*/ 0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -1153,9 +1177,8 @@ yysymprint (yyoutput, yytype, yyvaluep, yylocationp) YYLTYPE *yylocationp; #endif { - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - (void) yylocationp; + YYUSE (yyvaluep); + YYUSE (yylocationp); if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); @@ -1172,94 +1195,94 @@ yysymprint (yyoutput, yytype, yyvaluep, yylocationp) switch (yytype) { case 3: /* "\"string\"" */ -#line 165 "parse-gram.y" +#line 169 "parse-gram.y" { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); }; -#line 1178 "parse-gram.c" +#line 1201 "parse-gram.c" break; case 4: /* "\"integer\"" */ -#line 178 "parse-gram.y" +#line 182 "parse-gram.y" { fprintf (stderr, "%d", (yyvaluep->integer)); }; -#line 1183 "parse-gram.c" +#line 1206 "parse-gram.c" break; case 8: /* "\"%destructor {...}\"" */ -#line 167 "parse-gram.y" +#line 171 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1188 "parse-gram.c" +#line 1211 "parse-gram.c" break; case 9: /* "\"%printer {...}\"" */ -#line 171 "parse-gram.y" +#line 175 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1193 "parse-gram.c" +#line 1216 "parse-gram.c" break; case 10: /* "\"%union {...}\"" */ -#line 172 "parse-gram.y" +#line 176 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1198 "parse-gram.c" +#line 1221 "parse-gram.c" break; case 26: /* "\"%initial-action {...}\"" */ -#line 168 "parse-gram.y" +#line 172 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1203 "parse-gram.c" +#line 1226 "parse-gram.c" break; case 27: /* "\"%lex-param {...}\"" */ -#line 169 "parse-gram.y" +#line 173 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1208 "parse-gram.c" +#line 1231 "parse-gram.c" break; case 34: /* "\"%parse-param {...}\"" */ -#line 170 "parse-gram.y" +#line 174 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1213 "parse-gram.c" +#line 1236 "parse-gram.c" break; - case 41: /* "\"type\"" */ -#line 176 "parse-gram.y" + case 42: /* "\"type\"" */ +#line 180 "parse-gram.y" { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); }; -#line 1218 "parse-gram.c" +#line 1241 "parse-gram.c" break; - case 45: /* "\"identifier\"" */ -#line 180 "parse-gram.y" + case 46: /* "\"identifier\"" */ +#line 184 "parse-gram.y" { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); }; -#line 1223 "parse-gram.c" +#line 1246 "parse-gram.c" break; - case 46: /* "\"identifier:\"" */ -#line 182 "parse-gram.y" + case 47: /* "\"identifier:\"" */ +#line 186 "parse-gram.y" { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); }; -#line 1228 "parse-gram.c" +#line 1251 "parse-gram.c" break; - case 48: /* "\"%{...%}\"" */ -#line 174 "parse-gram.y" + case 49: /* "\"%{...%}\"" */ +#line 178 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1233 "parse-gram.c" +#line 1256 "parse-gram.c" break; - case 49: /* "\"epilogue\"" */ -#line 174 "parse-gram.y" + case 50: /* "\"epilogue\"" */ +#line 178 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1238 "parse-gram.c" +#line 1261 "parse-gram.c" break; - case 50: /* "\"{...}\"" */ -#line 173 "parse-gram.y" + case 51: /* "\"{...}\"" */ +#line 177 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1243 "parse-gram.c" +#line 1266 "parse-gram.c" break; - case 71: /* "symbol" */ -#line 180 "parse-gram.y" + case 72: /* "symbol" */ +#line 184 "parse-gram.y" { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); }; -#line 1248 "parse-gram.c" +#line 1271 "parse-gram.c" break; - case 72: /* "action" */ -#line 173 "parse-gram.y" + case 73: /* "action" */ +#line 177 "parse-gram.y" { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); }; -#line 1253 "parse-gram.c" +#line 1276 "parse-gram.c" break; - case 73: /* "string_as_id" */ -#line 180 "parse-gram.y" + case 74: /* "string_as_id" */ +#line 184 "parse-gram.y" { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); }; -#line 1258 "parse-gram.c" +#line 1281 "parse-gram.c" break; - case 74: /* "string_content" */ -#line 165 "parse-gram.y" + case 75: /* "string_content" */ +#line 169 "parse-gram.y" { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); }; -#line 1263 "parse-gram.c" +#line 1286 "parse-gram.c" break; default: break; @@ -1284,9 +1307,8 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp) YYLTYPE *yylocationp; #endif { - /* Pacify ``unused variable'' warnings. */ - (void) yyvaluep; - (void) yylocationp; + YYUSE (yyvaluep); + YYUSE (yylocationp); if (!yymsg) yymsg = "Deleting"; @@ -1340,7 +1362,7 @@ yyparse (void) #else int yyparse () - ; + #endif #endif { @@ -1430,7 +1452,7 @@ YYLTYPE yylloc; /* User initialization code. */ -#line 69 "parse-gram.y" +#line 72 "parse-gram.y" { /* Bison's grammar can initial empty locations, hence a default location is needed. */ @@ -1438,8 +1460,8 @@ YYLTYPE yylloc; yylloc.start.line = yylloc.end.line = 1; yylloc.start.column = yylloc.end.column = 0; } -/* Line 1044 of yacc.c. */ -#line 1443 "parse-gram.c" +/* Line 1056 of yacc.c. */ +#line 1465 "parse-gram.c" yylsp[0] = yylloc; goto yysetstate; @@ -1628,129 +1650,139 @@ yyreduce: switch (yyn) { case 6: -#line 203 "parse-gram.y" +#line 207 "parse-gram.y" { prologue_augment ((yyvsp[0].chars), (yylsp[0])); } break; case 7: -#line 204 "parse-gram.y" +#line 208 "parse-gram.y" { debug_flag = true; } break; case 8: -#line 205 "parse-gram.y" - { muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); } +#line 209 "parse-gram.y" + { muscle_insert ((yyvsp[0].chars), "1"); } break; case 9: -#line 206 "parse-gram.y" - { defines_flag = true; } +#line 210 "parse-gram.y" + { muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); } break; case 10: -#line 207 "parse-gram.y" - { error_verbose = true; } +#line 211 "parse-gram.y" + { defines_flag = true; } break; case 11: -#line 208 "parse-gram.y" - { expected_sr_conflicts = (yyvsp[0].integer); } +#line 212 "parse-gram.y" + { error_verbose = true; } break; case 12: -#line 209 "parse-gram.y" - { expected_rr_conflicts = (yyvsp[0].integer); } +#line 213 "parse-gram.y" + { expected_sr_conflicts = (yyvsp[0].integer); } break; case 13: -#line 210 "parse-gram.y" - { spec_file_prefix = (yyvsp[0].chars); } +#line 214 "parse-gram.y" + { expected_rr_conflicts = (yyvsp[0].integer); } break; case 14: -#line 212 "parse-gram.y" +#line 215 "parse-gram.y" + { spec_file_prefix = (yyvsp[0].chars); } + break; + + case 15: +#line 217 "parse-gram.y" { nondeterministic_parser = true; glr_parser = true; } break; - case 15: -#line 217 "parse-gram.y" + case 16: +#line 222 "parse-gram.y" { muscle_code_grow ("initial_action", (yyvsp[0].chars), (yylsp[0])); } break; - case 16: -#line 220 "parse-gram.y" + case 17: +#line 225 "parse-gram.y" { add_param ("lex_param", (yyvsp[0].chars), (yylsp[0])); } break; - case 17: -#line 221 "parse-gram.y" + case 18: +#line 226 "parse-gram.y" { locations_flag = true; } break; - case 18: -#line 222 "parse-gram.y" + case 19: +#line 227 "parse-gram.y" { spec_name_prefix = (yyvsp[0].chars); } break; - case 19: -#line 223 "parse-gram.y" + case 20: +#line 228 "parse-gram.y" { no_lines_flag = true; } break; - case 20: -#line 224 "parse-gram.y" + case 21: +#line 229 "parse-gram.y" { nondeterministic_parser = true; } break; - case 21: -#line 225 "parse-gram.y" + case 22: +#line 230 "parse-gram.y" { spec_outfile = (yyvsp[0].chars); } break; - case 22: -#line 226 "parse-gram.y" + case 23: +#line 231 "parse-gram.y" { add_param ("parse_param", (yyvsp[0].chars), (yylsp[0])); } break; - case 23: -#line 227 "parse-gram.y" + case 24: +#line 232 "parse-gram.y" { pure_parser = true; } break; - case 24: -#line 228 "parse-gram.y" + case 25: +#line 233 "parse-gram.y" + { version_check (&(yylsp[0]), (yyvsp[0].chars)); } + break; + + case 26: +#line 234 "parse-gram.y" { skeleton = (yyvsp[0].chars); } break; - case 25: -#line 229 "parse-gram.y" + case 27: +#line 235 "parse-gram.y" { token_table_flag = true; } break; - case 26: -#line 230 "parse-gram.y" + case 28: +#line 236 "parse-gram.y" { report_flag = report_states; } break; - case 27: -#line 231 "parse-gram.y" + case 29: +#line 237 "parse-gram.y" { yacc_flag = true; } break; - case 31: -#line 239 "parse-gram.y" + case 33: +#line 245 "parse-gram.y" { grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0])); } break; - case 32: -#line 243 "parse-gram.y" + case 34: +#line 249 "parse-gram.y" { typed = true; MUSCLE_INSERT_INT ("stype_line", (yylsp[0]).start.line); @@ -1758,8 +1790,8 @@ yyreduce: } break; - case 33: -#line 249 "parse-gram.y" + case 35: +#line 255 "parse-gram.y" { symbol_list *list; for (list = (yyvsp[0].list); list; list = list->next) @@ -1768,8 +1800,8 @@ yyreduce: } break; - case 34: -#line 256 "parse-gram.y" + case 36: +#line 262 "parse-gram.y" { symbol_list *list; for (list = (yyvsp[0].list); list; list = list->next) @@ -1778,48 +1810,48 @@ yyreduce: } break; - case 35: -#line 263 "parse-gram.y" + case 37: +#line 269 "parse-gram.y" { default_prec = true; } break; - case 36: -#line 267 "parse-gram.y" + case 38: +#line 273 "parse-gram.y" { default_prec = false; } break; - case 37: -#line 273 "parse-gram.y" + case 39: +#line 279 "parse-gram.y" { current_class = nterm_sym; } break; - case 38: -#line 274 "parse-gram.y" + case 40: +#line 280 "parse-gram.y" { current_class = unknown_sym; current_type = NULL; } break; - case 39: -#line 278 "parse-gram.y" + case 41: +#line 284 "parse-gram.y" { current_class = token_sym; } break; - case 40: -#line 279 "parse-gram.y" + case 42: +#line 285 "parse-gram.y" { current_class = unknown_sym; current_type = NULL; } break; - case 41: -#line 284 "parse-gram.y" + case 43: +#line 290 "parse-gram.y" { symbol_list *list; for (list = (yyvsp[0].list); list; list = list->next) @@ -1828,8 +1860,8 @@ yyreduce: } break; - case 42: -#line 294 "parse-gram.y" + case 44: +#line 300 "parse-gram.y" { symbol_list *list; ++current_prec; @@ -1843,58 +1875,58 @@ yyreduce: } break; - case 43: -#line 308 "parse-gram.y" + case 45: +#line 314 "parse-gram.y" { (yyval.assoc) = left_assoc; } break; - case 44: -#line 309 "parse-gram.y" + case 46: +#line 315 "parse-gram.y" { (yyval.assoc) = right_assoc; } break; - case 45: -#line 310 "parse-gram.y" + case 47: +#line 316 "parse-gram.y" { (yyval.assoc) = non_assoc; } break; - case 46: -#line 314 "parse-gram.y" + case 48: +#line 320 "parse-gram.y" { current_type = NULL; } break; - case 47: -#line 315 "parse-gram.y" + case 49: +#line 321 "parse-gram.y" { current_type = (yyvsp[0].uniqstr); } break; - case 48: -#line 321 "parse-gram.y" + case 50: +#line 327 "parse-gram.y" { (yyval.list) = symbol_list_new ((yyvsp[0].symbol), (yylsp[0])); } break; - case 49: -#line 322 "parse-gram.y" + case 51: +#line 328 "parse-gram.y" { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].symbol), (yylsp[0])); } break; - case 50: -#line 328 "parse-gram.y" + case 52: +#line 334 "parse-gram.y" { current_type = (yyvsp[0].uniqstr); } break; - case 51: -#line 332 "parse-gram.y" + case 53: +#line 338 "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 52: -#line 337 "parse-gram.y" + case 54: +#line 343 "parse-gram.y" { symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1])); symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1])); @@ -1902,8 +1934,8 @@ yyreduce: } break; - case 53: -#line 343 "parse-gram.y" + case 55: +#line 349 "parse-gram.y" { symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1])); symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1])); @@ -1911,8 +1943,8 @@ yyreduce: } break; - case 54: -#line 349 "parse-gram.y" + case 56: +#line 355 "parse-gram.y" { symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2])); symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2])); @@ -1921,96 +1953,96 @@ yyreduce: } break; - case 60: -#line 378 "parse-gram.y" + case 62: +#line 384 "parse-gram.y" { if (yacc_flag) complain_at ((yyloc), _("POSIX forbids declarations in the grammar")); } break; - case 61: -#line 383 "parse-gram.y" + case 63: +#line 389 "parse-gram.y" { yyerrok; } break; - case 62: -#line 389 "parse-gram.y" + case 64: +#line 395 "parse-gram.y" { current_lhs = (yyvsp[0].symbol); current_lhs_location = (yylsp[0]); } break; - case 64: -#line 393 "parse-gram.y" + case 66: +#line 399 "parse-gram.y" { grammar_rule_end ((yylsp[0])); } break; - case 65: -#line 394 "parse-gram.y" + case 67: +#line 400 "parse-gram.y" { grammar_rule_end ((yylsp[0])); } break; - case 67: -#line 400 "parse-gram.y" + case 69: +#line 406 "parse-gram.y" { grammar_rule_begin (current_lhs, current_lhs_location); } break; - case 68: -#line 402 "parse-gram.y" + case 70: +#line 408 "parse-gram.y" { grammar_current_rule_symbol_append ((yyvsp[0].symbol), (yylsp[0])); } break; - case 69: -#line 404 "parse-gram.y" + case 71: +#line 410 "parse-gram.y" { grammar_current_rule_action_append ((yyvsp[0].chars), (yylsp[0])); } break; - case 70: -#line 406 "parse-gram.y" + case 72: +#line 412 "parse-gram.y" { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); } break; - case 71: -#line 408 "parse-gram.y" + case 73: +#line 414 "parse-gram.y" { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); } break; - case 72: -#line 410 "parse-gram.y" + case 74: +#line 416 "parse-gram.y" { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); } break; - case 73: -#line 414 "parse-gram.y" + case 75: +#line 420 "parse-gram.y" { (yyval.symbol) = (yyvsp[0].symbol); } break; - case 74: -#line 415 "parse-gram.y" + case 76: +#line 421 "parse-gram.y" { (yyval.symbol) = (yyvsp[0].symbol); } break; - case 75: -#line 420 "parse-gram.y" + case 77: +#line 426 "parse-gram.y" { (yyval.chars) = (yyvsp[0].chars); } break; - case 76: -#line 426 "parse-gram.y" + case 78: +#line 432 "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])); } break; - case 77: -#line 435 "parse-gram.y" + case 79: +#line 441 "parse-gram.y" { (yyval.chars) = (yyvsp[0].chars); } break; - case 79: -#line 442 "parse-gram.y" + case 81: +#line 448 "parse-gram.y" { muscle_code_grow ("epilogue", (yyvsp[0].chars), (yylsp[0])); scanner_last_string_free (); @@ -2021,8 +2053,8 @@ yyreduce: default: break; } -/* Line 1240 of yacc.c. */ -#line 2026 "parse-gram.c" +/* Line 1252 of yacc.c. */ +#line 2058 "parse-gram.c" yyvsp -= yylen; yyssp -= yylen; @@ -2126,7 +2158,7 @@ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ - if (0) + if (/*CONSTCOND*/ 0) goto yyerrorlab; yyerror_range[0] = yylsp[1-yylen]; @@ -2232,7 +2264,7 @@ yyreturn: } -#line 448 "parse-gram.y" +#line 454 "parse-gram.y" @@ -2317,6 +2349,14 @@ add_param (char const *type, char *decl, location loc) scanner_last_string_free (); } +static void +version_check (location const *loc, char const *version) +{ + if (strverscmp (version, PACKAGE_VERSION) > 0) + complain_at (*loc, "require bison %s, but have %s", + version, PACKAGE_VERSION); +} + static void gram_error (location const *loc, char const *msg) {