From 04e606547946d08a252641bc4c49c94a1b6daa8b Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sat, 15 Jun 2002 18:26:45 +0000 Subject: [PATCH] * src/parse-gram.y: Move %token in the declaration section so that we don't depend upon CVS Bison. --- ChangeLog | 12 +- src/parse-gram.c | 402 ++++++++++++++++++++++++++++--------------------------- src/parse-gram.h | 120 ++++++++--------- src/parse-gram.y | 7 +- 4 files changed, 271 insertions(+), 270 deletions(-) diff --git a/ChangeLog b/ChangeLog index 528a742..1fc233d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,13 @@ 2002-06-15 Akim Demaille + * src/parse-gram.y: Move %token in the declaration section so that + we don't depend upon CVS Bison. + +2002-06-15 Akim Demaille + * src/state.h, src/state.c (state_rule_lookaheads_print): New. * src/print.c (print_core): Use it. - 2002-06-15 Akim Demaille * src/conflicts.c (log_resolution): Accept the rule involved in @@ -16,7 +20,6 @@ (set_conflicts): Adjust. * src/lalr.c, src/lalr.h, src/state.h: Comment changes. - 2002-06-15 Akim Demaille * src/state.h (state_t): Replace the `lookaheadsp' member, a @@ -26,7 +29,6 @@ (states_lookaheads_count, states_lookaheads_initialize): these. (lalr): Adjust. - 2002-06-15 Akim Demaille * src/gram.h, src/gram.c (grammar_rules_partial_print): New, eved @@ -36,7 +38,6 @@ * tests/reduce.at (Useless Rules, Reduced Automaton) (Underivable Rules): Adjust. - 2002-06-15 Akim Demaille Copy BYacc's nice way to report the grammar. @@ -47,7 +48,6 @@ (rule_print): Use grammar_rhs_print. * src/print.c (print_grammar): Use grammar_rules_print. - 2002-06-15 Akim Demaille Complete and rationalize `useless thing' warnings. @@ -67,7 +67,6 @@ * tests/conflicts.at (Unresolved SR Conflicts) (Solved SR Conflicts): Adjust. - 2002-06-15 Akim Demaille Let symbols have a location. @@ -101,7 +100,6 @@ * tests/regression.at (Web2c Report, Rule Line Numbers): Adjust the line numbers. - 2002-06-14 Akim Demaille Grammar declarations may be found in the grammar section. diff --git a/src/parse-gram.c b/src/parse-gram.c index 842793e..827947e 100644 --- a/src/parse-gram.c +++ b/src/parse-gram.c @@ -131,36 +131,36 @@ int current_prec = 0; PERCENT_NTERM = 262, PERCENT_TYPE = 263, PERCENT_UNION = 264, - PERCENT_EXPECT = 265, - PERCENT_START = 266, - 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 + PERCENT_LEFT = 265, + PERCENT_RIGHT = 266, + PERCENT_NONASSOC = 267, + PERCENT_EXPECT = 268, + PERCENT_START = 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 }; # endif /* POSIX requires `int' for tokens in interfaces. */ @@ -174,36 +174,36 @@ int current_prec = 0; #define PERCENT_NTERM 262 #define PERCENT_TYPE 263 #define PERCENT_UNION 264 -#define PERCENT_EXPECT 265 -#define PERCENT_START 266 -#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 +#define PERCENT_LEFT 265 +#define PERCENT_RIGHT 266 +#define PERCENT_NONASSOC 267 +#define PERCENT_EXPECT 268 +#define PERCENT_START 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 @@ -353,7 +353,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 #define YYFLAG -32768 -#define YYLAST 90 +#define YYLAST 102 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 40 @@ -424,37 +424,37 @@ static const unsigned char yyprhs[] = /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const signed char yyrhs[] = { - 41, 0, -1, 42, 33, 57, 67, -1, -1, 42, - 43, 68, -1, 44, -1, 34, -1, 22, -1, 18, - 66, 66, -1, 20, -1, 14, -1, 10, 5, -1, - 16, 28, 66, -1, 23, -1, 17, 28, 66, -1, - 24, -1, 15, 28, 66, -1, 19, -1, 25, 66, - -1, 26, -1, 13, -1, 21, -1, 49, -1, 45, - -1, 11, 63, -1, 9, 36, -1, -1, 7, 46, - 56, -1, -1, 6, 47, 56, -1, -1, 8, 27, - 48, 53, -1, -1, 51, 52, 50, 54, -1, 37, - -1, 38, -1, 39, -1, -1, 27, -1, 32, -1, - 53, 32, -1, 63, -1, 54, 63, -1, 27, -1, - 32, -1, 32, 5, -1, 32, 65, -1, 32, 5, + 41, 0, -1, 42, 36, 57, 67, -1, -1, 42, + 43, 68, -1, 44, -1, 37, -1, 25, -1, 21, + 66, 66, -1, 23, -1, 17, -1, 13, 5, -1, + 19, 31, 66, -1, 26, -1, 20, 31, 66, -1, + 27, -1, 18, 31, 66, -1, 22, -1, 28, 66, + -1, 29, -1, 16, -1, 24, -1, 49, -1, 45, + -1, 14, 63, -1, 9, 39, -1, -1, 7, 46, + 56, -1, -1, 6, 47, 56, -1, -1, 8, 30, + 48, 53, -1, -1, 51, 52, 50, 54, -1, 10, + -1, 11, -1, 12, -1, -1, 30, -1, 35, -1, + 53, 35, -1, 63, -1, 54, 63, -1, 30, -1, + 35, -1, 35, 5, -1, 35, 65, -1, 35, 5, 65, -1, 55, -1, 56, 55, -1, 58, -1, 57, - 58, -1, 59, -1, 44, 29, -1, -1, 32, 30, - 60, 61, 29, -1, 62, -1, 61, 31, 62, -1, - -1, 62, 63, -1, 62, 64, -1, 62, 12, 63, - -1, 32, -1, 65, -1, 4, -1, 36, -1, 3, - -1, 3, -1, -1, 33, 35, -1, -1, 29, -1 + 58, -1, 59, -1, 44, 32, -1, -1, 35, 33, + 60, 61, 32, -1, 62, -1, 61, 34, 62, -1, + -1, 62, 63, -1, 62, 64, -1, 62, 15, 63, + -1, 35, -1, 65, -1, 4, -1, 39, -1, 3, + -1, 3, -1, -1, 36, 38, -1, -1, 32, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { - 0, 146, 146, 159, 161, 164, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 184, 186, 187, 191, 199, 199, 205, 205, - 210, 210, 216, 216, 226, 228, 229, 232, 234, 238, - 240, 244, 250, 258, 263, 268, 274, 280, 290, 293, - 302, 304, 310, 312, 315, 315, 320, 322, 325, 328, - 330, 332, 336, 338, 339, 342, 348, 357, 365, 370, - 376, 378 + 0, 150, 150, 163, 165, 168, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 188, 190, 191, 195, 203, 203, 209, 209, + 214, 214, 220, 220, 227, 229, 230, 233, 235, 239, + 241, 245, 251, 259, 264, 269, 275, 281, 291, 294, + 303, 305, 311, 313, 316, 316, 321, 323, 326, 329, + 331, 333, 337, 339, 340, 343, 349, 358, 366, 371, + 377, 379 }; #endif @@ -464,14 +464,14 @@ static const unsigned short yyrline[] = static const char *const yytname[] = { "\"end of string\"", "error", "$undefined.", "STRING", "CHARACTER", "INT", - "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%union\"", "\"%expect\"", - "\"%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", "declarations", "declaration", + "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%union\"", "\"%left\"", + "\"%right\"", "\"%nonassoc\"", "\"%expect\"", "\"%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", "$axiom", "input", "declarations", "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2", "@3", "precedence_declaration", "@4", "precedence_declarator", "type.opt", "nterms_to_type.1", "terms_to_prec.1", "symbol_def", "symbol_defs.1", @@ -523,9 +523,9 @@ static const unsigned char yyr2[] = means the default is an error. */ static const short yydefact[] = { - 3, 0, 0, 0, 28, 26, 0, 0, 0, 0, - 20, 10, 0, 0, 0, 0, 17, 9, 21, 7, - 13, 15, 0, 19, 0, 6, 34, 35, 36, 70, + 3, 0, 0, 0, 28, 26, 0, 0, 34, 35, + 36, 0, 0, 20, 10, 0, 0, 0, 0, 17, + 9, 21, 7, 13, 15, 0, 19, 0, 6, 70, 5, 23, 22, 37, 0, 0, 30, 25, 11, 66, 64, 62, 24, 63, 0, 0, 0, 67, 0, 18, 0, 0, 68, 50, 52, 71, 4, 38, 32, 43, @@ -547,24 +547,24 @@ static const short yydefgoto[] = STATE-NUM. */ static const short yypact[] = { - -32768, 7, -5,-32768,-32768,-32768, -1, 11, 46, 38, - -32768,-32768, 36, 43, 44, 66,-32768,-32768,-32768,-32768, - -32768,-32768, 66,-32768, 29,-32768,-32768,-32768,-32768, 48, - -32768,-32768,-32768, 52, 18, 18,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768, 66, 66, 66,-32768, 66,-32768, - 50, 54, 16,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 41,-32768, 18, 18, 49,-32768,-32768,-32768,-32768,-32768, - -32768, 51,-32768,-32768, 38, 81,-32768,-32768,-32768, 53, - -32768,-32768, 38,-32768,-32768,-32768, 31, 27,-32768,-32768, - -32768, 38,-32768,-32768,-32768, 27,-32768 + -32768, 9, 32,-32768,-32768,-32768, -13, -9,-32768,-32768, + -32768, 27, 0,-32768,-32768, 3, 5, 33, 60,-32768, + -32768,-32768,-32768,-32768,-32768, 60,-32768, 12,-32768, 34, + -32768,-32768,-32768, 35, -24, -24,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768, 60, 60, 60,-32768, 60,-32768, + 38, 49, 66,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 2,-32768, -24, -24, 47,-32768,-32768,-32768,-32768,-32768, + -32768, 29,-32768,-32768, 0, 80,-32768,-32768,-32768, 50, + -32768,-32768, 0,-32768,-32768,-32768, -20, -2,-32768,-32768, + -32768, 0,-32768,-32768,-32768, -2,-32768 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { - -32768,-32768,-32768,-32768, 85,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, -6, 55,-32768, 37,-32768, - -32768,-32768, -2, -9,-32768, -17, 30,-32768,-32768 + -32768,-32768,-32768,-32768, 82,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768, -47, 51,-32768, 36,-32768, + -32768,-32768, -3, -12,-32768, -50, -17,-32768,-32768 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -572,30 +572,32 @@ static const short yypgoto[] = number is the opposite. If zero, do what YYDEFACT says. */ static const short yytable[] = { - 42, 4, 5, 6, 7, 8, 9, 3, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 4, 5, 6, 7, 36, 9, 24, 25, - 39, 40, 26, 27, 28, 4, 5, 6, 7, 91, - 9, 39, 40, 76, 39, 59, 75, 37, 50, 71, - 60, 38, 49, 26, 27, 28, 77, 77, 84, 41, - 89, 50, 90, 92, 44, 83, 26, 27, 28, 47, - 41, 45, 46, 88, 65, 66, 67, 55, 68, 57, - 69, 78, 96, 70, 39, 85, 81, 30, 95, 72, - 63 + 42, 39, 40, 39, 40, 39, 59, 75, 49, 3, + 76, 60, 89, 91, 90, 77, 77, 36, 4, 5, + 6, 7, 8, 9, 10, 84, 12, 65, 66, 67, + 37, 68, 38, 41, 44, 41, 45, 92, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 50, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 83, 47, 46, 57, 55, 81, 27, 28, + 88, 69, 4, 5, 6, 7, 8, 9, 10, 96, + 12, 70, 78, 39, 30, 85, 63, 95, 72, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 71 }; static const short yycheck[] = { - 9, 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, 60, 3, 27, 5, 36, 32, 33, - 32, 5, 22, 37, 38, 39, 62, 63, 75, 32, - 29, 32, 31, 36, 28, 74, 37, 38, 39, 3, - 32, 28, 28, 82, 44, 45, 46, 29, 48, 27, - 30, 32, 91, 29, 3, 32, 35, 2, 90, 52, - 35 + 12, 3, 4, 3, 4, 3, 30, 5, 25, 0, + 60, 35, 32, 15, 34, 62, 63, 30, 6, 7, + 8, 9, 10, 11, 12, 75, 14, 44, 45, 46, + 39, 48, 5, 35, 31, 35, 31, 39, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 35, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 74, 3, 31, 30, 32, 38, 36, 37, + 82, 33, 6, 7, 8, 9, 10, 11, 12, 91, + 14, 32, 35, 3, 2, 35, 35, 90, 52, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 35, 36 }; #if YYDEBUG @@ -604,15 +606,15 @@ static const short yycheck[] = static const unsigned char yystos[] = { 0, 41, 42, 0, 6, 7, 8, 9, 10, 11, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 33, 34, 37, 38, 39, 43, - 44, 45, 49, 51, 47, 46, 27, 36, 5, 3, - 4, 32, 63, 65, 28, 28, 28, 3, 66, 66, - 32, 44, 57, 58, 59, 29, 68, 27, 52, 27, - 32, 55, 56, 56, 48, 66, 66, 66, 66, 30, - 29, 33, 58, 67, 50, 5, 65, 55, 32, 53, - 60, 35, 54, 63, 65, 32, 61, 62, 63, 29, - 31, 12, 36, 63, 64, 62, 63 + 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 36, 37, 43, + 44, 45, 49, 51, 47, 46, 30, 39, 5, 3, + 4, 35, 63, 65, 31, 31, 31, 3, 66, 66, + 35, 44, 57, 58, 59, 32, 68, 30, 52, 30, + 35, 55, 56, 56, 48, 66, 66, 66, 66, 33, + 32, 36, 58, 67, 50, 5, 65, 55, 35, 53, + 60, 38, 54, 63, 65, 35, 61, 62, 63, 32, + 34, 15, 39, 63, 64, 62, 63 }; #endif @@ -1182,7 +1184,7 @@ yyreduce: switch (yyn) { case 2: -#line 148 "parse-gram.y" +#line 152 "parse-gram.y" { yycontrol->errcode = 0; epilogue_set (yyvsp[0].string, yylsp[0]); @@ -1190,94 +1192,94 @@ yyreduce: break; case 6: -#line 166 "parse-gram.y" +#line 170 "parse-gram.y" { prologue_augment (yyvsp[0].string, yylsp[0]); } break; case 7: -#line 167 "parse-gram.y" +#line 171 "parse-gram.y" { debug_flag = 1; } break; case 8: -#line 168 "parse-gram.y" +#line 172 "parse-gram.y" { muscle_insert (yyvsp[-1].string, yyvsp[0].string); } break; case 9: -#line 169 "parse-gram.y" +#line 173 "parse-gram.y" { defines_flag = 1; } break; case 10: -#line 170 "parse-gram.y" +#line 174 "parse-gram.y" { error_verbose = 1; } break; case 11: -#line 171 "parse-gram.y" +#line 175 "parse-gram.y" { expected_conflicts = yyvsp[0].integer; } break; case 12: -#line 172 "parse-gram.y" +#line 176 "parse-gram.y" { spec_file_prefix = yyvsp[0].string; } break; case 13: -#line 173 "parse-gram.y" +#line 177 "parse-gram.y" { locations_flag = 1; } break; case 14: -#line 174 "parse-gram.y" +#line 178 "parse-gram.y" { spec_name_prefix = yyvsp[0].string; } break; case 15: -#line 175 "parse-gram.y" +#line 179 "parse-gram.y" { no_lines_flag = 1; } break; case 16: -#line 176 "parse-gram.y" +#line 180 "parse-gram.y" { spec_outfile = yyvsp[0].string; } break; case 17: -#line 177 "parse-gram.y" +#line 181 "parse-gram.y" { pure_parser = 1; } break; case 18: -#line 178 "parse-gram.y" +#line 182 "parse-gram.y" { skeleton = yyvsp[0].string; } break; case 19: -#line 179 "parse-gram.y" +#line 183 "parse-gram.y" { token_table_flag = 1; } break; case 20: -#line 180 "parse-gram.y" +#line 184 "parse-gram.y" { report_flag = 1; } break; case 21: -#line 181 "parse-gram.y" +#line 185 "parse-gram.y" { yacc_flag = 1; } break; case 24: -#line 188 "parse-gram.y" +#line 192 "parse-gram.y" { grammar_start_symbol_set (yyvsp[0].symbol, yylsp[0]); } break; case 25: -#line 192 "parse-gram.y" +#line 196 "parse-gram.y" { typed = 1; MUSCLE_INSERT_INT ("stype_line", yylsp[0].first_line); @@ -1286,12 +1288,12 @@ yyreduce: break; case 26: -#line 200 "parse-gram.y" +#line 204 "parse-gram.y" { current_class = nterm_sym; } break; case 27: -#line 201 "parse-gram.y" +#line 205 "parse-gram.y" { current_class = unknown_sym; current_type = NULL; @@ -1299,12 +1301,12 @@ yyreduce: break; case 28: -#line 205 "parse-gram.y" +#line 209 "parse-gram.y" { current_class = token_sym; } break; case 29: -#line 206 "parse-gram.y" +#line 210 "parse-gram.y" { current_class = unknown_sym; current_type = NULL; @@ -1312,64 +1314,64 @@ yyreduce: break; case 30: -#line 210 "parse-gram.y" +#line 214 "parse-gram.y" {current_type = yyvsp[0].string; } break; case 31: -#line 211 "parse-gram.y" +#line 215 "parse-gram.y" { current_type = NULL; } break; case 32: -#line 218 "parse-gram.y" +#line 222 "parse-gram.y" { current_assoc = yyvsp[-1].assoc; ++current_prec; } break; case 33: -#line 220 "parse-gram.y" +#line 224 "parse-gram.y" { current_assoc = non_assoc; current_type = NULL; } break; case 34: -#line 227 "parse-gram.y" +#line 228 "parse-gram.y" { yyval.assoc = left_assoc; } break; case 35: -#line 228 "parse-gram.y" +#line 229 "parse-gram.y" { yyval.assoc = right_assoc; } break; case 36: -#line 229 "parse-gram.y" +#line 230 "parse-gram.y" { yyval.assoc = non_assoc; } break; case 37: -#line 233 "parse-gram.y" +#line 234 "parse-gram.y" { current_type = NULL;} break; case 38: -#line 234 "parse-gram.y" +#line 235 "parse-gram.y" { current_type = yyvsp[0].string; } break; case 39: -#line 239 "parse-gram.y" +#line 240 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); } break; case 40: -#line 240 "parse-gram.y" +#line 241 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); } break; case 41: -#line 246 "parse-gram.y" +#line 247 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc); @@ -1377,7 +1379,7 @@ yyreduce: break; case 42: -#line 251 "parse-gram.y" +#line 252 "parse-gram.y" { symbol_type_set (yyvsp[0].symbol, current_type); symbol_precedence_set (yyvsp[0].symbol, current_prec, current_assoc); @@ -1385,14 +1387,14 @@ yyreduce: break; case 43: -#line 260 "parse-gram.y" +#line 261 "parse-gram.y" { current_type = yyvsp[0].string; } break; case 44: -#line 264 "parse-gram.y" +#line 265 "parse-gram.y" { symbol_class_set (yyvsp[0].symbol, current_class); symbol_type_set (yyvsp[0].symbol, current_type); @@ -1400,7 +1402,7 @@ yyreduce: break; case 45: -#line 269 "parse-gram.y" +#line 270 "parse-gram.y" { symbol_class_set (yyvsp[-1].symbol, current_class); symbol_type_set (yyvsp[-1].symbol, current_type); @@ -1409,7 +1411,7 @@ yyreduce: break; case 46: -#line 275 "parse-gram.y" +#line 276 "parse-gram.y" { symbol_class_set (yyvsp[-1].symbol, current_class); symbol_type_set (yyvsp[-1].symbol, current_type); @@ -1418,7 +1420,7 @@ yyreduce: break; case 47: -#line 281 "parse-gram.y" +#line 282 "parse-gram.y" { symbol_class_set (yyvsp[-2].symbol, current_class); symbol_type_set (yyvsp[-2].symbol, current_type); @@ -1428,77 +1430,77 @@ yyreduce: break; case 48: -#line 292 "parse-gram.y" +#line 293 "parse-gram.y" {;} break; case 49: -#line 294 "parse-gram.y" +#line 295 "parse-gram.y" {;} break; case 54: -#line 316 "parse-gram.y" +#line 317 "parse-gram.y" { current_lhs = yyvsp[-1].symbol; current_lhs_location = yylsp[-1]; } break; case 55: -#line 317 "parse-gram.y" +#line 318 "parse-gram.y" {;} break; case 56: -#line 321 "parse-gram.y" +#line 322 "parse-gram.y" { grammar_rule_end (yylsp[0]); } break; case 57: -#line 322 "parse-gram.y" +#line 323 "parse-gram.y" { grammar_rule_end (yylsp[0]); } break; case 58: -#line 327 "parse-gram.y" +#line 328 "parse-gram.y" { grammar_rule_begin (current_lhs, current_lhs_location); } break; case 59: -#line 329 "parse-gram.y" +#line 330 "parse-gram.y" { grammar_current_rule_symbol_append (yyvsp[0].symbol, yylsp[0]); } break; case 60: -#line 331 "parse-gram.y" +#line 332 "parse-gram.y" { grammar_current_rule_action_append (yyvsp[0].string, yylsp[0]); } break; case 61: -#line 333 "parse-gram.y" +#line 334 "parse-gram.y" { grammar_current_rule_prec_set (yyvsp[0].symbol); } break; case 62: -#line 337 "parse-gram.y" +#line 338 "parse-gram.y" { yyval.symbol = yyvsp[0].symbol; } break; case 63: -#line 338 "parse-gram.y" +#line 339 "parse-gram.y" { yyval.symbol = yyvsp[0].symbol; } break; case 64: -#line 339 "parse-gram.y" +#line 340 "parse-gram.y" { yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); } break; case 65: -#line 344 "parse-gram.y" +#line 345 "parse-gram.y" { yyval.string = yyvsp[0].string; } break; case 66: -#line 350 "parse-gram.y" +#line 351 "parse-gram.y" { yyval.symbol = getsym (yyvsp[0].string, yylsp[0]); symbol_class_set (yyval.symbol, token_sym); @@ -1506,7 +1508,7 @@ yyreduce: break; case 67: -#line 359 "parse-gram.y" +#line 360 "parse-gram.y" { yyval.string = yyvsp[0].string + 1; yyval.string[strlen (yyval.string) - 1] = '\0'; @@ -1514,14 +1516,14 @@ yyreduce: break; case 68: -#line 367 "parse-gram.y" +#line 368 "parse-gram.y" { yyval.string = xstrdup (""); } break; case 69: -#line 371 "parse-gram.y" +#line 372 "parse-gram.y" { yyval.string = yyvsp[0].string; } @@ -1531,7 +1533,7 @@ yyreduce: } /* Line 1012 of /usr/local/share/bison/bison.simple. */ -#line 1535 "parse-gram.c" +#line 1537 "parse-gram.c" yyvsp -= yylen; yyssp -= yylen; @@ -1752,7 +1754,7 @@ yyreturn: return yyresult; } -#line 380 "parse-gram.y" +#line 381 "parse-gram.y" /*------------------------------------------------------------------. | When debugging the parser, display tokens' locations and values. | diff --git a/src/parse-gram.h b/src/parse-gram.h index aaa4a17..f6bb5cc 100644 --- a/src/parse-gram.h +++ b/src/parse-gram.h @@ -15,36 +15,36 @@ PERCENT_NTERM = 262, PERCENT_TYPE = 263, PERCENT_UNION = 264, - PERCENT_EXPECT = 265, - PERCENT_START = 266, - 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 + PERCENT_LEFT = 265, + PERCENT_RIGHT = 266, + PERCENT_NONASSOC = 267, + PERCENT_EXPECT = 268, + PERCENT_START = 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 }; # endif /* POSIX requires `int' for tokens in interfaces. */ @@ -58,36 +58,36 @@ #define PERCENT_NTERM 262 #define PERCENT_TYPE 263 #define PERCENT_UNION 264 -#define PERCENT_EXPECT 265 -#define PERCENT_START 266 -#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 +#define PERCENT_LEFT 265 +#define PERCENT_RIGHT 266 +#define PERCENT_NONASSOC 267 +#define PERCENT_EXPECT 268 +#define PERCENT_START 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 diff --git a/src/parse-gram.y b/src/parse-gram.y index ca344d1..98f404c 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -102,6 +102,10 @@ int current_prec = 0; %token PERCENT_NTERM "%nterm" %token PERCENT_TYPE "%type" %token PERCENT_UNION "%union" +%token PERCENT_LEFT "%left" +%token PERCENT_RIGHT "%right" +%token PERCENT_NONASSOC "%nonassoc" + %token PERCENT_EXPECT "%expect" %token PERCENT_START "%start" %token PERCENT_PREC "%prec" @@ -220,9 +224,6 @@ precedence_declaration: { current_assoc = non_assoc; current_type = NULL; } ; -%token PERCENT_LEFT "%left"; -%token PERCENT_RIGHT "%right"; -%token PERCENT_NONASSOC "%nonassoc"; precedence_declarator: "%left" { $$ = left_assoc; } | "%right" { $$ = right_assoc; } -- 2.7.4