X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/e96c9728dacee1d130874c7f521ee8cbea921eea..4f6bb8b24bf3f7a373c873528d95cc30898f8cc3:/src/parse-gram.c diff --git a/src/parse-gram.c b/src/parse-gram.c index b72f4192..76a29d40 100644 --- a/src/parse-gram.c +++ b/src/parse-gram.c @@ -72,6 +72,7 @@ #include "reader.h" #include "conflicts.h" +/* Produce verbose parse errors. */ #define YYERROR_VERBOSE 1 /* Pass the control structure to YYPARSE and YYLEX. */ @@ -91,7 +92,7 @@ of the tokens. */ #define YYPRINT(File, Type, Value) \ yyprint (File, &yylloc, Type, &Value) -static void yyprint (FILE *file, const yyltype *loc, +static void yyprint (FILE *file, const location_t *loc, int type, const yystype *value); symbol_class current_class = unknown_sym; @@ -117,34 +118,34 @@ int current_prec = 0; PERCENT_UNION = 264, PERCENT_EXPECT = 265, PERCENT_START = 266, - PERCENT_LEFT = 267, - PERCENT_RIGHT = 268, - PERCENT_NONASSOC = 269, - PERCENT_PREC = 270, - PERCENT_VERBOSE = 271, - PERCENT_ERROR_VERBOSE = 272, - PERCENT_OUTPUT = 273, - PERCENT_FILE_PREFIX = 274, - PERCENT_NAME_PREFIX = 275, - PERCENT_DEFINE = 276, - PERCENT_PURE_PARSER = 277, - PERCENT_DEFINES = 278, - PERCENT_YACC = 279, - PERCENT_DEBUG = 280, - PERCENT_LOCATIONS = 281, - PERCENT_NO_LINES = 282, - PERCENT_SKELETON = 283, - PERCENT_TOKEN_TABLE = 284, - TYPE = 285, - EQUAL = 286, - SEMICOLON = 287, - COLON = 288, - PIPE = 289, - ID = 290, - PERCENT_PERCENT = 291, - PROLOGUE = 292, - EPILOGUE = 293, - BRACED_CODE = 294 + PERCENT_PREC = 267, + PERCENT_VERBOSE = 268, + PERCENT_ERROR_VERBOSE = 269, + PERCENT_OUTPUT = 270, + PERCENT_FILE_PREFIX = 271, + PERCENT_NAME_PREFIX = 272, + PERCENT_DEFINE = 273, + PERCENT_PURE_PARSER = 274, + PERCENT_DEFINES = 275, + PERCENT_YACC = 276, + PERCENT_DEBUG = 277, + PERCENT_LOCATIONS = 278, + PERCENT_NO_LINES = 279, + PERCENT_SKELETON = 280, + PERCENT_TOKEN_TABLE = 281, + TYPE = 282, + EQUAL = 283, + SEMICOLON = 284, + COLON = 285, + PIPE = 286, + ID = 287, + PERCENT_PERCENT = 288, + PROLOGUE = 289, + EPILOGUE = 290, + BRACED_CODE = 291, + PERCENT_LEFT = 292, + PERCENT_RIGHT = 293, + PERCENT_NONASSOC = 294 }; # endif /* POSIX requires `int' for tokens in interfaces. */ @@ -160,34 +161,34 @@ int current_prec = 0; #define PERCENT_UNION 264 #define PERCENT_EXPECT 265 #define PERCENT_START 266 -#define PERCENT_LEFT 267 -#define PERCENT_RIGHT 268 -#define PERCENT_NONASSOC 269 -#define PERCENT_PREC 270 -#define PERCENT_VERBOSE 271 -#define PERCENT_ERROR_VERBOSE 272 -#define PERCENT_OUTPUT 273 -#define PERCENT_FILE_PREFIX 274 -#define PERCENT_NAME_PREFIX 275 -#define PERCENT_DEFINE 276 -#define PERCENT_PURE_PARSER 277 -#define PERCENT_DEFINES 278 -#define PERCENT_YACC 279 -#define PERCENT_DEBUG 280 -#define PERCENT_LOCATIONS 281 -#define PERCENT_NO_LINES 282 -#define PERCENT_SKELETON 283 -#define PERCENT_TOKEN_TABLE 284 -#define TYPE 285 -#define EQUAL 286 -#define SEMICOLON 287 -#define COLON 288 -#define PIPE 289 -#define ID 290 -#define PERCENT_PERCENT 291 -#define PROLOGUE 292 -#define EPILOGUE 293 -#define BRACED_CODE 294 +#define PERCENT_PREC 267 +#define PERCENT_VERBOSE 268 +#define PERCENT_ERROR_VERBOSE 269 +#define PERCENT_OUTPUT 270 +#define PERCENT_FILE_PREFIX 271 +#define PERCENT_NAME_PREFIX 272 +#define PERCENT_DEFINE 273 +#define PERCENT_PURE_PARSER 274 +#define PERCENT_DEFINES 275 +#define PERCENT_YACC 276 +#define PERCENT_DEBUG 277 +#define PERCENT_LOCATIONS 278 +#define PERCENT_NO_LINES 279 +#define PERCENT_SKELETON 280 +#define PERCENT_TOKEN_TABLE 281 +#define TYPE 282 +#define EQUAL 283 +#define SEMICOLON 284 +#define COLON 285 +#define PIPE 286 +#define ID 287 +#define PERCENT_PERCENT 288 +#define PROLOGUE 289 +#define EPILOGUE 290 +#define BRACED_CODE 291 +#define PERCENT_LEFT 292 +#define PERCENT_RIGHT 293 +#define PERCENT_NONASSOC 294 @@ -206,13 +207,15 @@ int current_prec = 0; #endif #ifndef YYSTYPE -#line 73 "parse-gram.y" +#line 74 "parse-gram.y" typedef union { symbol_t *symbol; int integer; char *string; associativity assoc; } yystype; +/* Line 199 of /home/akim/src/bison/data/bison.simple. */ +#line 219 "parse-gram.c" # define YYSTYPE yystype # define YYSTYPE_IS_TRIVIAL 1 #endif @@ -232,8 +235,8 @@ typedef struct yyltype /* Copy the second part of user declarations. */ -/* Line 217 of /usr/local/share/bison/bison.simple. */ -#line 237 "parse-gram.c" +/* Line 219 of /home/akim/src/bison/data/bison.simple. */ +#line 240 "parse-gram.c" #if ! defined (yyoverflow) || YYERROR_VERBOSE @@ -335,16 +338,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 #define YYFLAG -32768 -#define YYLAST 110 +#define YYLAST 91 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 40 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 28 +#define YYNNTS 30 /* YYNRULES -- Number of rules. */ -#define YYNRULES 69 +#define YYNRULES 72 /* YYNRULES -- Number of states. */ -#define YYNSTATES 94 +#define YYNSTATES 98 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -393,48 +396,51 @@ static const unsigned char yytranslate[] = YYRHS. */ static const unsigned char yyprhs[] = { - 0, 0, 3, 4, 10, 11, 14, 16, 18, 20, - 24, 26, 28, 31, 35, 37, 41, 43, 47, 49, - 52, 54, 56, 58, 60, 61, 65, 68, 69, 73, - 74, 79, 83, 84, 89, 91, 93, 95, 96, 98, - 100, 103, 105, 108, 110, 112, 115, 118, 122, 124, - 127, 129, 132, 133, 139, 141, 145, 146, 149, 152, - 156, 158, 160, 162, 164, 166, 168, 169, 172, 173 + 0, 0, 3, 4, 10, 11, 15, 17, 19, 21, + 25, 27, 29, 32, 36, 38, 42, 44, 48, 50, + 53, 55, 57, 59, 61, 63, 66, 69, 70, 74, + 75, 79, 80, 85, 86, 91, 93, 95, 97, 98, + 100, 102, 105, 107, 110, 112, 114, 117, 120, 124, + 126, 129, 131, 134, 136, 139, 140, 146, 148, 152, + 153, 156, 159, 163, 165, 167, 169, 171, 173, 175, + 176, 179, 180 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const signed char yyrhs[] = { - 41, 0, -1, -1, 42, 43, 36, 57, 66, -1, - -1, 43, 44, -1, 45, -1, 37, -1, 25, -1, - 21, 65, 65, -1, 23, -1, 17, -1, 10, 5, - -1, 19, 31, 65, -1, 26, -1, 20, 31, 65, - -1, 27, -1, 18, 31, 65, -1, 22, -1, 28, - 65, -1, 29, -1, 16, -1, 24, -1, 49, -1, - -1, 7, 46, 56, -1, 11, 62, -1, -1, 6, - 47, 56, -1, -1, 8, 30, 48, 53, -1, 9, - 39, 67, -1, -1, 51, 52, 50, 54, -1, 12, - -1, 13, -1, 14, -1, -1, 30, -1, 35, -1, - 53, 35, -1, 62, -1, 54, 62, -1, 30, -1, - 35, -1, 35, 5, -1, 35, 64, -1, 35, 5, - 64, -1, 55, -1, 56, 55, -1, 58, -1, 57, - 58, -1, -1, 35, 33, 59, 60, 32, -1, 61, - -1, 60, 34, 61, -1, -1, 61, 62, -1, 61, - 63, -1, 61, 15, 62, -1, 35, -1, 64, -1, - 4, -1, 39, -1, 3, -1, 3, -1, -1, 36, - 38, -1, -1, 32, -1 + 41, 0, -1, -1, 42, 43, 33, 58, 68, -1, + -1, 43, 44, 69, -1, 45, -1, 34, -1, 22, + -1, 18, 67, 67, -1, 20, -1, 14, -1, 10, + 5, -1, 16, 28, 67, -1, 23, -1, 17, 28, + 67, -1, 24, -1, 15, 28, 67, -1, 19, -1, + 25, 67, -1, 26, -1, 13, -1, 21, -1, 50, + -1, 46, -1, 11, 64, -1, 9, 36, -1, -1, + 7, 47, 57, -1, -1, 6, 48, 57, -1, -1, + 8, 27, 49, 54, -1, -1, 52, 53, 51, 55, + -1, 37, -1, 38, -1, 39, -1, -1, 27, -1, + 32, -1, 54, 32, -1, 64, -1, 55, 64, -1, + 27, -1, 32, -1, 32, 5, -1, 32, 66, -1, + 32, 5, 66, -1, 56, -1, 57, 56, -1, 59, + -1, 58, 59, -1, 60, -1, 45, 29, -1, -1, + 32, 30, 61, 62, 29, -1, 63, -1, 62, 31, + 63, -1, -1, 63, 64, -1, 63, 65, -1, 63, + 12, 64, -1, 32, -1, 66, -1, 4, -1, 36, + -1, 3, -1, 3, -1, -1, 33, 35, -1, -1, + 29, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { - 0, 131, 131, 131, 139, 141, 144, 146, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 167, 169, 169, 174, 178, 178, 183, - 183, 187, 195, 195, 202, 204, 205, 208, 210, 214, - 216, 220, 226, 235, 240, 245, 251, 257, 267, 270, - 274, 276, 279, 279, 284, 286, 289, 292, 294, 296, - 300, 302, 303, 306, 312, 321, 329, 334, 340, 342 + 0, 131, 131, 131, 144, 146, 149, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 169, 171, 172, 176, 184, 184, 190, + 190, 195, 195, 201, 201, 211, 213, 214, 217, 219, + 223, 225, 229, 235, 243, 248, 253, 259, 265, 275, + 278, 287, 289, 295, 297, 300, 300, 305, 307, 310, + 313, 315, 317, 321, 323, 324, 327, 333, 342, 350, + 355, 361, 363 }; #endif @@ -445,18 +451,19 @@ static const char *const yytname[] = { "\"end of string\"", "error", "$undefined.", "STRING", "CHARACTER", "INT", "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%union\"", "\"%expect\"", - "\"%start\"", "\"%left\"", "\"%right\"", "\"%nonassoc\"", "\"%prec\"", - "\"%verbose\"", "\"%error-verbose\"", "\"%output\"", "\"%file-prefix\"", - "\"%name-prefix\"", "\"%define\"", "\"%pure-parser\"", "\"%defines\"", - "\"%yacc\"", "\"%debug\"", "\"%locations\"", "\"%no-lines\"", - "\"%skeleton\"", "\"%token-table\"", "TYPE", "\"=\"", "\";\"", "\":\"", - "\"|\"", "\"identifier\"", "\"%%\"", "PROLOGUE", "EPILOGUE", - "BRACED_CODE", "$axiom", "input", "@1", "directives", "directive", - "grammar_directives", "@2", "@3", "@4", "precedence_directives", "@5", - "precedence_directive", "type.opt", "nterms_to_type.1", - "terms_to_prec.1", "symbol_def", "symbol_defs.1", "gram", "rules", "@6", - "rhses.1", "rhs", "symbol", "action", "string_as_id", "string_content", - "epilogue.opt", "semi_colon_opt", 0 + "\"%start\"", "\"%prec\"", "\"%verbose\"", "\"%error-verbose\"", + "\"%output\"", "\"%file-prefix\"", "\"%name-prefix\"", "\"%define\"", + "\"%pure-parser\"", "\"%defines\"", "\"%yacc\"", "\"%debug\"", + "\"%locations\"", "\"%no-lines\"", "\"%skeleton\"", "\"%token-table\"", + "TYPE", "\"=\"", "\";\"", "\":\"", "\"|\"", "\"identifier\"", "\"%%\"", + "PROLOGUE", "EPILOGUE", "BRACED_CODE", "\"%left\"", "\"%right\"", + "\"%nonassoc\"", "$axiom", "input", "@1", "declarations", "declaration", + "grammar_declaration", "symbol_declaration", "@2", "@3", "@4", + "precedence_declaration", "@5", "precedence_declarator", "type.opt", + "nterms_to_type.1", "terms_to_prec.1", "symbol_def", "symbol_defs.1", + "grammar", "rules_or_grammar_declaration", "rules", "@6", "rhses.1", + "rhs", "symbol", "action", "string_as_id", "string_content", + "epilogue.opt", "semi_colon.opt", 0 }; #endif @@ -476,23 +483,25 @@ static const unsigned char yyr1[] = { 0, 40, 42, 41, 43, 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 45, 46, 45, 45, 47, 45, 48, - 45, 45, 50, 49, 51, 51, 51, 52, 52, 53, - 53, 54, 54, 55, 55, 55, 55, 55, 56, 56, - 57, 57, 59, 58, 60, 60, 61, 61, 61, 61, - 62, 62, 62, 63, 64, 65, 66, 66, 67, 67 + 44, 44, 44, 45, 45, 45, 45, 47, 46, 48, + 46, 49, 46, 51, 50, 52, 52, 52, 53, 53, + 54, 54, 55, 55, 56, 56, 56, 56, 56, 57, + 57, 58, 58, 59, 59, 61, 60, 62, 62, 63, + 63, 63, 63, 64, 64, 64, 65, 66, 67, 68, + 68, 69, 69 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const unsigned char yyr2[] = { - 0, 2, 0, 5, 0, 2, 1, 1, 1, 3, + 0, 2, 0, 5, 0, 3, 1, 1, 1, 3, 1, 1, 2, 3, 1, 3, 1, 3, 1, 2, - 1, 1, 1, 1, 0, 3, 2, 0, 3, 0, - 4, 3, 0, 4, 1, 1, 1, 0, 1, 1, - 2, 1, 2, 1, 1, 2, 2, 3, 1, 2, - 1, 2, 0, 5, 1, 3, 0, 2, 2, 3, - 1, 1, 1, 1, 1, 1, 0, 2, 0, 1 + 1, 1, 1, 1, 1, 2, 2, 0, 3, 0, + 3, 0, 4, 0, 4, 1, 1, 1, 0, 1, + 1, 2, 1, 2, 1, 1, 2, 2, 3, 1, + 2, 1, 2, 1, 2, 0, 5, 1, 3, 0, + 2, 2, 3, 1, 1, 1, 1, 1, 1, 0, + 2, 0, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -500,48 +509,48 @@ static const unsigned char yyr2[] = means the default is an error. */ static const short yydefact[] = { - 2, 0, 4, 0, 0, 27, 24, 0, 0, 0, - 0, 34, 35, 36, 21, 11, 0, 0, 0, 0, - 18, 10, 22, 8, 14, 16, 0, 20, 0, 7, - 5, 6, 23, 37, 0, 0, 29, 68, 12, 64, - 62, 60, 26, 61, 0, 0, 0, 65, 0, 19, - 0, 66, 50, 38, 32, 43, 44, 48, 28, 25, - 0, 69, 31, 17, 13, 15, 9, 52, 0, 51, - 3, 0, 45, 46, 49, 39, 30, 56, 67, 33, - 41, 47, 40, 0, 54, 42, 53, 56, 0, 63, - 57, 58, 55, 59 + 2, 0, 4, 0, 0, 29, 27, 0, 0, 0, + 0, 21, 11, 0, 0, 0, 0, 18, 10, 22, + 8, 14, 16, 0, 20, 0, 7, 35, 36, 37, + 71, 6, 24, 23, 38, 0, 0, 31, 26, 12, + 67, 65, 63, 25, 64, 0, 0, 0, 68, 0, + 19, 0, 0, 69, 51, 53, 72, 5, 39, 33, + 44, 45, 49, 30, 28, 0, 17, 13, 15, 9, + 55, 54, 0, 52, 3, 0, 46, 47, 50, 40, + 32, 59, 70, 34, 42, 48, 41, 0, 57, 43, + 56, 59, 0, 66, 60, 61, 58, 62 }; /* YYPGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { - -1, 1, 2, 4, 30, 31, 35, 34, 60, 32, - 71, 33, 54, 76, 79, 57, 58, 51, 52, 77, - 83, 84, 90, 91, 43, 48, 70, 62 + -1, 1, 2, 4, 30, 52, 32, 36, 35, 65, + 33, 75, 34, 59, 80, 83, 62, 63, 53, 54, + 55, 81, 87, 88, 94, 95, 44, 49, 74, 57 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const short yypact[] = { - -32768, 9,-32768,-32768, 73,-32768,-32768, -19, -24, 12, - 0,-32768,-32768,-32768,-32768,-32768, -5, -3, -1, 26, - -32768,-32768,-32768,-32768,-32768,-32768, 26,-32768, -4,-32768, - -32768,-32768,-32768, 2, -23, -23,-32768, 4,-32768,-32768, - -32768,-32768,-32768,-32768, 26, 26, 26,-32768, 26,-32768, - 1, -17,-32768,-32768,-32768,-32768, 5,-32768, -23, -23, - 3,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 6,-32768, - -32768, 0, 36,-32768,-32768,-32768, 7,-32768,-32768, 0, - -32768,-32768,-32768, -18, -2,-32768,-32768,-32768, 0,-32768, - -32768,-32768, -2,-32768 + -32768, 7,-32768,-32768, -5,-32768,-32768, -1, 11, 51, + 38,-32768,-32768, 36, 43, 44, 66,-32768,-32768,-32768, + -32768,-32768,-32768, 66,-32768, 29,-32768,-32768,-32768,-32768, + 45,-32768,-32768,-32768, 48, 18, 18,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768, 66, 66, 66,-32768, 66, + -32768, 46, 49, 16,-32768,-32768,-32768,-32768,-32768,-32768, + -32768, 41,-32768, 18, 18, 52,-32768,-32768,-32768,-32768, + -32768,-32768, 42,-32768,-32768, 38, 82,-32768,-32768,-32768, + 54,-32768,-32768, 38,-32768,-32768,-32768, 31, 27,-32768, + -32768,-32768, 38,-32768,-32768,-32768, 27,-32768 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, -38, 8,-32768, -11,-32768, - -32768, -46, -10,-32768, -50, -21,-32768,-32768 + -32768,-32768,-32768,-32768,-32768, 83,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768, -12, 53,-32768, 35, + -32768,-32768,-32768, 0, -10,-32768, -18, 34,-32768,-32768 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -549,34 +558,30 @@ static const short yypgoto[] = number is the opposite. If zero, do what YYDEFACT says. */ static const short yytable[] = { - 42, 39, 40, 39, 40, 49, 73, 55, 39, 3, - 72, 36, 56, 88, 86, 37, 87, 38, 50, 68, - 74, 74, 81, 63, 64, 65, 44, 66, 45, 47, - 46, 50, 53, 41, 67, 41, 61, 89, 75, 39, - 69, 92, 82, 59, 78, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 80, 0, 0, 0, 0, 0, 0, 0, 85, - 0, 0, 0, 0, 0, 0, 0, 0, 93, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 0, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 0, 0, 0, 0, 0, 0, 28, - 29 + 43, 5, 6, 7, 8, 9, 10, 3, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 5, 6, 7, 8, 37, 10, 25, 26, + 40, 41, 27, 28, 29, 5, 6, 7, 8, 92, + 10, 40, 41, 77, 40, 60, 76, 38, 51, 72, + 61, 78, 78, 27, 28, 29, 39, 50, 85, 42, + 90, 51, 91, 93, 45, 84, 27, 28, 29, 48, + 42, 46, 47, 89, 56, 58, 70, 82, 71, 66, + 67, 68, 97, 69, 79, 40, 86, 31, 73, 64, + 0, 96 }; static const short yycheck[] = { - 10, 3, 4, 3, 4, 26, 56, 30, 3, 0, - 5, 30, 35, 15, 32, 39, 34, 5, 35, 36, - 58, 59, 72, 44, 45, 46, 31, 48, 31, 3, - 31, 35, 30, 35, 33, 35, 32, 39, 35, 3, - 51, 87, 35, 35, 38, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 71, -1, -1, -1, -1, -1, -1, -1, 79, - -1, -1, -1, -1, -1, -1, -1, -1, 88, 6, - 7, 8, 9, 10, 11, 12, 13, 14, -1, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, -1, -1, -1, -1, -1, -1, 36, - 37 + 10, 6, 7, 8, 9, 10, 11, 0, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 6, 7, 8, 9, 27, 11, 33, 34, + 3, 4, 37, 38, 39, 6, 7, 8, 9, 12, + 11, 3, 4, 61, 3, 27, 5, 36, 32, 33, + 32, 63, 64, 37, 38, 39, 5, 23, 76, 32, + 29, 32, 31, 36, 28, 75, 37, 38, 39, 3, + 32, 28, 28, 83, 29, 27, 30, 35, 29, 45, + 46, 47, 92, 49, 32, 3, 32, 4, 53, 36, + -1, 91 }; #if YYDEBUG @@ -585,15 +590,15 @@ static const short yycheck[] = static const unsigned char yystos[] = { 0, 41, 42, 0, 43, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 36, 37, - 44, 45, 49, 51, 47, 46, 30, 39, 5, 3, - 4, 35, 62, 64, 31, 31, 31, 3, 65, 65, - 35, 57, 58, 30, 52, 30, 35, 55, 56, 56, - 48, 32, 67, 65, 65, 65, 65, 33, 36, 58, - 66, 50, 5, 64, 55, 35, 53, 59, 38, 54, - 62, 64, 35, 60, 61, 62, 32, 34, 15, 39, - 62, 63, 61, 62 + 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 33, 34, 37, 38, 39, + 44, 45, 46, 50, 52, 48, 47, 27, 36, 5, + 3, 4, 32, 64, 66, 28, 28, 28, 3, 67, + 67, 32, 45, 58, 59, 60, 29, 69, 27, 53, + 27, 32, 56, 57, 57, 49, 67, 67, 67, 67, + 30, 29, 33, 59, 68, 51, 5, 66, 56, 32, + 54, 61, 35, 55, 64, 66, 32, 62, 63, 64, + 29, 31, 12, 36, 64, 65, 63, 64 }; #endif @@ -1171,119 +1176,113 @@ yyreduce: #line 133 "parse-gram.y" { yycontrol->errcode = 0; - epilogue_set (yyvsp[0].string, yylsp[0].first_line); + epilogue_set (yyvsp[0].string, yylsp[0]); } break; case 7: -#line 147 "parse-gram.y" - { - prologue_augment (yyvsp[0].string, yylsp[0].first_line); - } +#line 151 "parse-gram.y" + { prologue_augment (yyvsp[0].string, yylsp[0]); } break; case 8: -#line 150 "parse-gram.y" +#line 152 "parse-gram.y" { debug_flag = 1; } break; case 9: -#line 151 "parse-gram.y" +#line 153 "parse-gram.y" { muscle_insert (yyvsp[-1].string, yyvsp[0].string); } break; case 10: -#line 152 "parse-gram.y" +#line 154 "parse-gram.y" { defines_flag = 1; } break; case 11: -#line 153 "parse-gram.y" +#line 155 "parse-gram.y" { error_verbose = 1; } break; case 12: -#line 154 "parse-gram.y" +#line 156 "parse-gram.y" { expected_conflicts = yyvsp[0].integer; } break; case 13: -#line 155 "parse-gram.y" +#line 157 "parse-gram.y" { spec_file_prefix = yyvsp[0].string; } break; case 14: -#line 156 "parse-gram.y" +#line 158 "parse-gram.y" { locations_flag = 1; } break; case 15: -#line 157 "parse-gram.y" +#line 159 "parse-gram.y" { spec_name_prefix = yyvsp[0].string; } break; case 16: -#line 158 "parse-gram.y" +#line 160 "parse-gram.y" { no_lines_flag = 1; } break; case 17: -#line 159 "parse-gram.y" +#line 161 "parse-gram.y" { spec_outfile = yyvsp[0].string; } break; case 18: -#line 160 "parse-gram.y" +#line 162 "parse-gram.y" { pure_parser = 1; } break; case 19: -#line 161 "parse-gram.y" +#line 163 "parse-gram.y" { skeleton = yyvsp[0].string; } break; case 20: -#line 162 "parse-gram.y" +#line 164 "parse-gram.y" { token_table_flag = 1; } break; case 21: -#line 163 "parse-gram.y" +#line 165 "parse-gram.y" { report_flag = 1; } break; case 22: -#line 164 "parse-gram.y" +#line 166 "parse-gram.y" { yacc_flag = 1; } break; - case 24: -#line 169 "parse-gram.y" - { current_class = nterm_sym; } - break; - case 25: -#line 170 "parse-gram.y" +#line 173 "parse-gram.y" { - current_class = unknown_sym; - current_type = NULL; + grammar_start_symbol_set (yyvsp[0].symbol); } break; case 26: -#line 175 "parse-gram.y" +#line 177 "parse-gram.y" { - grammar_start_symbol_set (yyvsp[0].symbol); + typed = 1; + MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line); + muscle_insert ("stype", yyvsp[0].string); } break; case 27: -#line 178 "parse-gram.y" - { current_class = token_sym; } +#line 185 "parse-gram.y" + { current_class = nterm_sym; } break; case 28: -#line 179 "parse-gram.y" +#line 186 "parse-gram.y" { current_class = unknown_sym; current_type = NULL; @@ -1291,104 +1290,108 @@ yyreduce: break; case 29: -#line 183 "parse-gram.y" - {current_type = yyvsp[0].string; } +#line 190 "parse-gram.y" + { current_class = token_sym; } break; case 30: -#line 184 "parse-gram.y" +#line 191 "parse-gram.y" { + current_class = unknown_sym; current_type = NULL; } break; case 31: -#line 188 "parse-gram.y" - { - typed = 1; - MUSCLE_INSERT_INT ("stype_line", yylsp[-1].first_line); - muscle_insert ("stype", yyvsp[-1].string); - } +#line 195 "parse-gram.y" + {current_type = yyvsp[0].string; } break; case 32: -#line 197 "parse-gram.y" - { current_assoc = yyvsp[-1].assoc; ++current_prec; } +#line 196 "parse-gram.y" + { + current_type = NULL; + } break; case 33: -#line 199 "parse-gram.y" - { current_assoc = non_assoc; current_type = NULL; } +#line 203 "parse-gram.y" + { current_assoc = yyvsp[-1].assoc; ++current_prec; } break; case 34: -#line 203 "parse-gram.y" - { yyval.assoc = left_assoc; } +#line 205 "parse-gram.y" + { current_assoc = non_assoc; current_type = NULL; } break; case 35: -#line 204 "parse-gram.y" - { yyval.assoc = right_assoc; } +#line 212 "parse-gram.y" + { yyval.assoc = left_assoc; } break; case 36: -#line 205 "parse-gram.y" - { yyval.assoc = non_assoc; } +#line 213 "parse-gram.y" + { yyval.assoc = right_assoc; } break; case 37: -#line 209 "parse-gram.y" - { current_type = NULL;} +#line 214 "parse-gram.y" + { yyval.assoc = non_assoc; } break; case 38: -#line 210 "parse-gram.y" - { current_type = yyvsp[0].string; } +#line 218 "parse-gram.y" + { current_type = NULL;} break; case 39: -#line 215 "parse-gram.y" - { symbol_type_set (yyvsp[0].symbol, current_type); } +#line 219 "parse-gram.y" + { current_type = yyvsp[0].string; } break; case 40: -#line 216 "parse-gram.y" +#line 224 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); } break; case 41: -#line 222 "parse-gram.y" +#line 225 "parse-gram.y" + { symbol_type_set (yyvsp[0].symbol, current_type); } + break; + + case 42: +#line 231 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc); } break; - case 42: -#line 227 "parse-gram.y" + case 43: +#line 236 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc); } break; - case 43: -#line 237 "parse-gram.y" + case 44: +#line 245 "parse-gram.y" { current_type = yyvsp[0].string; } break; - case 44: -#line 241 "parse-gram.y" + case 45: +#line 249 "parse-gram.y" { symbol_class_set (yyvsp[0].symbol, current_class); symbol_type_set (yyvsp[0].symbol, current_type); } break; - case 45: -#line 246 "parse-gram.y" + case 46: +#line 254 "parse-gram.y" { symbol_class_set (yyvsp[-1].symbol, current_class); symbol_type_set (yyvsp[-1].symbol, current_type); @@ -1396,8 +1399,8 @@ yyreduce: } break; - case 46: -#line 252 "parse-gram.y" + case 47: +#line 260 "parse-gram.y" { symbol_class_set (yyvsp[-1].symbol, current_class); symbol_type_set (yyvsp[-1].symbol, current_type); @@ -1405,8 +1408,8 @@ yyreduce: } break; - case 47: -#line 258 "parse-gram.y" + case 48: +#line 266 "parse-gram.y" { symbol_class_set (yyvsp[-2].symbol, current_class); symbol_type_set (yyvsp[-2].symbol, current_type); @@ -1415,101 +1418,101 @@ yyreduce: } break; - case 48: -#line 269 "parse-gram.y" + case 49: +#line 277 "parse-gram.y" {;} break; - case 49: -#line 271 "parse-gram.y" + case 50: +#line 279 "parse-gram.y" {;} break; - case 52: -#line 280 "parse-gram.y" + case 55: +#line 301 "parse-gram.y" { current_lhs = yyvsp[-1].symbol; } break; - case 53: -#line 281 "parse-gram.y" + case 56: +#line 302 "parse-gram.y" {;} break; - case 54: -#line 285 "parse-gram.y" + case 57: +#line 306 "parse-gram.y" { grammar_rule_end (); } break; - case 55: -#line 286 "parse-gram.y" + case 58: +#line 307 "parse-gram.y" { grammar_rule_end (); } break; - case 56: -#line 291 "parse-gram.y" + case 59: +#line 312 "parse-gram.y" { grammar_rule_begin (current_lhs); } break; - case 57: -#line 293 "parse-gram.y" + case 60: +#line 314 "parse-gram.y" { grammar_current_rule_symbol_append (yyvsp[0].symbol); } break; - case 58: -#line 295 "parse-gram.y" + case 61: +#line 316 "parse-gram.y" { grammar_current_rule_action_append (yyvsp[0].string, yylsp[0].first_line); } break; - case 59: -#line 297 "parse-gram.y" + case 62: +#line 318 "parse-gram.y" { grammar_current_rule_prec_set (yyvsp[0].symbol); } break; - case 60: -#line 301 "parse-gram.y" + case 63: +#line 322 "parse-gram.y" { yyval.symbol = yyvsp[0].symbol; } break; - case 61: -#line 302 "parse-gram.y" + case 64: +#line 323 "parse-gram.y" { yyval.symbol = yyvsp[0].symbol; } break; - case 62: -#line 303 "parse-gram.y" + case 65: +#line 324 "parse-gram.y" { yyval.symbol = getsym (yyvsp[0].string); } break; - case 63: -#line 308 "parse-gram.y" + case 66: +#line 329 "parse-gram.y" { yyval.string = yyvsp[0].string; } break; - case 64: -#line 314 "parse-gram.y" + case 67: +#line 335 "parse-gram.y" { yyval.symbol = getsym (yyvsp[0].string); symbol_class_set (yyval.symbol, token_sym); } break; - case 65: -#line 323 "parse-gram.y" + case 68: +#line 344 "parse-gram.y" { yyval.string = yyvsp[0].string + 1; yyval.string[strlen (yyval.string) - 1] = '\0'; } break; - case 66: -#line 331 "parse-gram.y" + case 69: +#line 352 "parse-gram.y" { yyval.string = xstrdup (""); } break; - case 67: -#line 335 "parse-gram.y" + case 70: +#line 356 "parse-gram.y" { yyval.string = yyvsp[0].string; } @@ -1518,8 +1521,8 @@ yyreduce: } -/* Line 1010 of /usr/local/share/bison/bison.simple. */ -#line 1523 "parse-gram.c" +/* Line 1012 of /home/akim/src/bison/data/bison.simple. */ +#line 1526 "parse-gram.c" yyvsp -= yylen; yyssp -= yylen; @@ -1740,7 +1743,7 @@ yyreturn: return yyresult; } -#line 344 "parse-gram.y" +#line 365 "parse-gram.y" /*------------------------------------------------------------------. | When debugging the parser, display tokens' locations and values. | @@ -1748,7 +1751,7 @@ yyreturn: static void yyprint (FILE *file, - const yyltype *loc, int type, const yystype *value) + const location_t *loc, int type, const yystype *value) { fputs (" (", file); LOCATION_PRINT (file, *loc); @@ -1785,7 +1788,7 @@ yyprint (FILE *file, void gram_error (gram_control_t *control ATTRIBUTE_UNUSED, - yyltype *yylloc, const char *msg) + location_t *yylloc, const char *msg) { LOCATION_PRINT (stderr, *yylloc); fprintf (stderr, ": %s\n", msg);