mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Encapsulate code properties and related functionality for the various
destructors, printers, and actions into a code_props structure and interface. * src/location.h (EMPTY_LOCATION_INIT): Define so that it's easier to consistently initialize const structs that have an empty location field. * src/location.c (empty_location): Initialize with EMPTY_LOCATION_INIT to ensure consistency. * src/output.c (symbol_destructors_output, symbol_printers_output): Replace with... (symbol_code_props_output): ... this to eliminate duplicate code. (output_skeleton): Update to use symbol_code_props_output. * src/parse-gram.y (prologue_declaration, braceless, epilogue.opt): Update all uses of translate_* functions to use the new code_props interface and to use gram_scanner_last_string_free and code_scanner_last_string_free where possible. (grammar_declaration): symbol_list_destructor_set and symbol_list_printer_set now perform the translation, so don't do it here. Use gram_scanner_last_string_free where possible. * src/reader.c: Update to use code_props interface for destructors and rule actions. * src/scan-code.h (code_props): New structure. (code_props_none_init, CODE_PROPS_NONE_INIT, code_props_none): New function, macro, and const global variable for initializing a code_props with no code. (code_props_plain_init, code_props_symbol_action_init, code_props_rule_action_init, code_props_translate_code, code_props_code_get, code_props_location_get, code_props_is_value_used): The rest of the new code_props interface. (translate_rule_action, translate_symbol_action, translate_code): Remove as these are now just special cases within code_props_translate_code, which is switched on the code_props kind. (code_scanner_last_string_free): New function similar to gram_scanner_last_string_free. * src/scan-code.l: Implement the new interface. (last_string): New static global similar to the one in scan-gram.l. (SC_SYMBOL_ACTION): For $$, set the is_value_used member of the code_props since Bison will one day use this information for destructors and printers. (<*><<EOF>>): Use STRING_FINISH so that last_string is set. (handle_action_dollar): Update to use the code_props interface of rule actions. Use symbol_list_n_get and set is_value_used directly since symbol_list_n_used_set is removed. * src/symlist.h, src/symlist.c (symbol_list): Replace action, action_location, and used members with a code_props member, and update all uses. (symbol_list_n_used_set): Remove since it would need to break the encapsulation of code_props. (symbol_list_destructor_set, symbol_list_printer_set): Perform code translation here rather than depending on the caller to do so. * src/symtab.h (symbol, semantic_type): Remove destructor_location and printer_location members and change the type of the destructor and printer members to code_props. (symbol_destructor_location_get, symbol_printer_location_get): Remove unneeded. (symbol_destructor_set, symbol_destructor_get, symbol_printer_set, symbol_printer_get, semantic_type_destructor_set, semantic_type_printer_set, default_tagged_destructor_set, default_tagless_destructor_set, default_tagged_printer_set, default_tagless_printer_set): Use code_props in arguments and return types in place of const char * and location. * src/symtab.c: Update implementation for interface and struct changes. (default_tagged_destructor_location, default_tagless_destructor_location, default_tagged_printer_location, default_tagless_printer_location): Remove since we... (default_tagged_destructor, default_tagless_destructor, default_tagged_printer, default_tagless_printer): ... change the type of these to code_props. (SYMBOL_CODE_PRINT): New similar to SYMBOL_ATTR_PRINT but for code_props members. (symbol_print): Use SYMBOL_CODE_PRINT. * src/scan-gram.h (gram_last_string): Remove declaration. * src/scan-gram.l (last_string): Declare it static.
This commit is contained in:
211
src/parse-gram.c
211
src/parse-gram.c
@@ -668,16 +668,16 @@ static const yytype_int8 yyrhs[] =
|
||||
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||
static const yytype_uint16 yyrline[] =
|
||||
{
|
||||
0, 210, 210, 218, 220, 224, 225, 226, 227, 228,
|
||||
229, 230, 231, 232, 233, 238, 242, 243, 244, 245,
|
||||
246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
|
||||
256, 260, 261, 262, 266, 274, 282, 286, 290, 291,
|
||||
292, 293, 304, 305, 309, 337, 337, 342, 342, 347,
|
||||
358, 373, 374, 375, 379, 380, 385, 387, 392, 393,
|
||||
397, 398, 399, 400, 405, 410, 415, 421, 427, 438,
|
||||
439, 448, 449, 455, 456, 457, 464, 464, 468, 469,
|
||||
470, 475, 476, 478, 480, 482, 484, 494, 495, 501,
|
||||
505, 510, 526, 528, 537, 542, 543, 548, 555, 557
|
||||
0, 210, 210, 218, 220, 224, 225, 233, 234, 235,
|
||||
236, 237, 238, 239, 240, 245, 254, 255, 256, 257,
|
||||
258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
|
||||
268, 272, 273, 274, 278, 285, 292, 296, 300, 301,
|
||||
302, 303, 314, 315, 319, 348, 348, 353, 353, 358,
|
||||
369, 384, 385, 386, 390, 391, 396, 398, 403, 404,
|
||||
408, 409, 410, 411, 416, 421, 426, 432, 438, 449,
|
||||
450, 459, 460, 466, 467, 468, 475, 475, 479, 480,
|
||||
481, 486, 487, 489, 491, 493, 495, 505, 506, 512,
|
||||
516, 521, 541, 543, 552, 557, 558, 563, 570, 572
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -1887,62 +1887,69 @@ yyreduce:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 225 "parse-gram.y"
|
||||
{ prologue_augment (translate_code ((yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])), (yylsp[(1) - (1)]), union_seen); }
|
||||
{
|
||||
code_props plain_code;
|
||||
code_props_plain_init (&plain_code, (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)]));
|
||||
code_props_translate_code (&plain_code);
|
||||
gram_scanner_last_string_free ();
|
||||
prologue_augment (code_props_code_get (plain_code), (yylsp[(1) - (1)]), union_seen);
|
||||
code_scanner_last_string_free ();
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 226 "parse-gram.y"
|
||||
#line 233 "parse-gram.y"
|
||||
{ debug_flag = true; }
|
||||
break;
|
||||
|
||||
case 8:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 227 "parse-gram.y"
|
||||
#line 234 "parse-gram.y"
|
||||
{ muscle_insert ((yyvsp[(2) - (3)].chars), (yyvsp[(3) - (3)].chars)); }
|
||||
break;
|
||||
|
||||
case 9:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 228 "parse-gram.y"
|
||||
#line 235 "parse-gram.y"
|
||||
{ defines_flag = true; }
|
||||
break;
|
||||
|
||||
case 10:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 229 "parse-gram.y"
|
||||
#line 236 "parse-gram.y"
|
||||
{ error_verbose = true; }
|
||||
break;
|
||||
|
||||
case 11:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 230 "parse-gram.y"
|
||||
#line 237 "parse-gram.y"
|
||||
{ expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
|
||||
break;
|
||||
|
||||
case 12:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 231 "parse-gram.y"
|
||||
#line 238 "parse-gram.y"
|
||||
{ expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
|
||||
break;
|
||||
|
||||
case 13:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 232 "parse-gram.y"
|
||||
#line 239 "parse-gram.y"
|
||||
{ spec_file_prefix = (yyvsp[(3) - (3)].chars); }
|
||||
break;
|
||||
|
||||
case 14:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 234 "parse-gram.y"
|
||||
#line 241 "parse-gram.y"
|
||||
{
|
||||
nondeterministic_parser = true;
|
||||
glr_parser = true;
|
||||
@@ -1952,114 +1959,119 @@ yyreduce:
|
||||
case 15:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 239 "parse-gram.y"
|
||||
#line 246 "parse-gram.y"
|
||||
{
|
||||
muscle_code_grow ("initial_action", translate_symbol_action ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])), (yylsp[(2) - (2)]));
|
||||
code_props action;
|
||||
code_props_symbol_action_init (&action, (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)]));
|
||||
code_props_translate_code (&action);
|
||||
gram_scanner_last_string_free ();
|
||||
muscle_code_grow ("initial_action", code_props_code_get (action), (yylsp[(2) - (2)]));
|
||||
code_scanner_last_string_free ();
|
||||
}
|
||||
break;
|
||||
|
||||
case 16:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 242 "parse-gram.y"
|
||||
#line 254 "parse-gram.y"
|
||||
{ add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 17:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 243 "parse-gram.y"
|
||||
#line 255 "parse-gram.y"
|
||||
{ locations_flag = true; }
|
||||
break;
|
||||
|
||||
case 18:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 244 "parse-gram.y"
|
||||
#line 256 "parse-gram.y"
|
||||
{ spec_name_prefix = (yyvsp[(3) - (3)].chars); }
|
||||
break;
|
||||
|
||||
case 19:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 245 "parse-gram.y"
|
||||
#line 257 "parse-gram.y"
|
||||
{ no_lines_flag = true; }
|
||||
break;
|
||||
|
||||
case 20:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 246 "parse-gram.y"
|
||||
#line 258 "parse-gram.y"
|
||||
{ nondeterministic_parser = true; }
|
||||
break;
|
||||
|
||||
case 21:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 247 "parse-gram.y"
|
||||
#line 259 "parse-gram.y"
|
||||
{ spec_outfile = (yyvsp[(3) - (3)].chars); }
|
||||
break;
|
||||
|
||||
case 22:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 248 "parse-gram.y"
|
||||
#line 260 "parse-gram.y"
|
||||
{ add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 23:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 249 "parse-gram.y"
|
||||
#line 261 "parse-gram.y"
|
||||
{ pure_parser = true; }
|
||||
break;
|
||||
|
||||
case 24:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 250 "parse-gram.y"
|
||||
#line 262 "parse-gram.y"
|
||||
{ push_parser = true; }
|
||||
break;
|
||||
|
||||
case 25:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 251 "parse-gram.y"
|
||||
#line 263 "parse-gram.y"
|
||||
{ version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
|
||||
break;
|
||||
|
||||
case 26:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 252 "parse-gram.y"
|
||||
#line 264 "parse-gram.y"
|
||||
{ skeleton = (yyvsp[(2) - (2)].chars); }
|
||||
break;
|
||||
|
||||
case 27:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 253 "parse-gram.y"
|
||||
#line 265 "parse-gram.y"
|
||||
{ token_table_flag = true; }
|
||||
break;
|
||||
|
||||
case 28:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 254 "parse-gram.y"
|
||||
#line 266 "parse-gram.y"
|
||||
{ report_flag = report_states; }
|
||||
break;
|
||||
|
||||
case 29:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 255 "parse-gram.y"
|
||||
#line 267 "parse-gram.y"
|
||||
{ yacc_flag = true; }
|
||||
break;
|
||||
|
||||
case 33:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 263 "parse-gram.y"
|
||||
#line 275 "parse-gram.y"
|
||||
{
|
||||
grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
|
||||
}
|
||||
@@ -2068,12 +2080,11 @@ yyreduce:
|
||||
case 34:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 267 "parse-gram.y"
|
||||
#line 279 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
const char *action = translate_symbol_action ((yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
|
||||
for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
|
||||
symbol_list_destructor_set (list, action, (yylsp[(2) - (3)]));
|
||||
symbol_list_destructor_set (list, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
|
||||
symbol_list_free ((yyvsp[(3) - (3)].list));
|
||||
}
|
||||
break;
|
||||
@@ -2081,12 +2092,11 @@ yyreduce:
|
||||
case 35:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 275 "parse-gram.y"
|
||||
#line 286 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
const char *action = translate_symbol_action ((yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
|
||||
for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
|
||||
symbol_list_printer_set (list, action, (yylsp[(2) - (3)]));
|
||||
symbol_list_printer_set (list, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
|
||||
symbol_list_free ((yyvsp[(3) - (3)].list));
|
||||
}
|
||||
break;
|
||||
@@ -2094,7 +2104,7 @@ yyreduce:
|
||||
case 36:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 283 "parse-gram.y"
|
||||
#line 293 "parse-gram.y"
|
||||
{
|
||||
default_prec = true;
|
||||
}
|
||||
@@ -2103,7 +2113,7 @@ yyreduce:
|
||||
case 37:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 287 "parse-gram.y"
|
||||
#line 297 "parse-gram.y"
|
||||
{
|
||||
default_prec = false;
|
||||
}
|
||||
@@ -2112,49 +2122,49 @@ yyreduce:
|
||||
case 38:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 290 "parse-gram.y"
|
||||
#line 300 "parse-gram.y"
|
||||
{ prologue_augment ((yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]), true); }
|
||||
break;
|
||||
|
||||
case 39:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 291 "parse-gram.y"
|
||||
#line 301 "parse-gram.y"
|
||||
{ prologue_augment ((yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]), false); }
|
||||
break;
|
||||
|
||||
case 40:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 292 "parse-gram.y"
|
||||
#line 302 "parse-gram.y"
|
||||
{ muscle_code_grow ("provides", (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 41:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 293 "parse-gram.y"
|
||||
#line 303 "parse-gram.y"
|
||||
{ muscle_code_grow ("requires", (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 42:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 304 "parse-gram.y"
|
||||
#line 314 "parse-gram.y"
|
||||
{}
|
||||
break;
|
||||
|
||||
case 43:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 305 "parse-gram.y"
|
||||
#line 315 "parse-gram.y"
|
||||
{ muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 44:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 310 "parse-gram.y"
|
||||
#line 320 "parse-gram.y"
|
||||
{
|
||||
char const *body = (yyvsp[(3) - (3)].code);
|
||||
|
||||
@@ -2175,20 +2185,21 @@ yyreduce:
|
||||
|
||||
union_seen = true;
|
||||
muscle_code_grow ("stype", body, (yylsp[(3) - (3)]));
|
||||
gram_scanner_last_string_free ();
|
||||
}
|
||||
break;
|
||||
|
||||
case 45:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 337 "parse-gram.y"
|
||||
#line 348 "parse-gram.y"
|
||||
{ current_class = nterm_sym; }
|
||||
break;
|
||||
|
||||
case 46:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 338 "parse-gram.y"
|
||||
#line 349 "parse-gram.y"
|
||||
{
|
||||
current_class = unknown_sym;
|
||||
current_type = NULL;
|
||||
@@ -2198,14 +2209,14 @@ yyreduce:
|
||||
case 47:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 342 "parse-gram.y"
|
||||
#line 353 "parse-gram.y"
|
||||
{ current_class = token_sym; }
|
||||
break;
|
||||
|
||||
case 48:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 343 "parse-gram.y"
|
||||
#line 354 "parse-gram.y"
|
||||
{
|
||||
current_class = unknown_sym;
|
||||
current_type = NULL;
|
||||
@@ -2215,7 +2226,7 @@ yyreduce:
|
||||
case 49:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 348 "parse-gram.y"
|
||||
#line 359 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
tag_seen = true;
|
||||
@@ -2228,7 +2239,7 @@ yyreduce:
|
||||
case 50:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 359 "parse-gram.y"
|
||||
#line 370 "parse-gram.y"
|
||||
{
|
||||
symbol_list *list;
|
||||
++current_prec;
|
||||
@@ -2245,98 +2256,98 @@ yyreduce:
|
||||
case 51:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 373 "parse-gram.y"
|
||||
#line 384 "parse-gram.y"
|
||||
{ (yyval.assoc) = left_assoc; }
|
||||
break;
|
||||
|
||||
case 52:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 374 "parse-gram.y"
|
||||
#line 385 "parse-gram.y"
|
||||
{ (yyval.assoc) = right_assoc; }
|
||||
break;
|
||||
|
||||
case 53:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 375 "parse-gram.y"
|
||||
#line 386 "parse-gram.y"
|
||||
{ (yyval.assoc) = non_assoc; }
|
||||
break;
|
||||
|
||||
case 54:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 379 "parse-gram.y"
|
||||
#line 390 "parse-gram.y"
|
||||
{ current_type = NULL; }
|
||||
break;
|
||||
|
||||
case 55:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 380 "parse-gram.y"
|
||||
#line 391 "parse-gram.y"
|
||||
{ current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
|
||||
break;
|
||||
|
||||
case 56:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 386 "parse-gram.y"
|
||||
#line 397 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 57:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 388 "parse-gram.y"
|
||||
#line 399 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
|
||||
break;
|
||||
|
||||
case 58:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 392 "parse-gram.y"
|
||||
#line 403 "parse-gram.y"
|
||||
{ (yyval.list) = (yyvsp[(1) - (1)].list); }
|
||||
break;
|
||||
|
||||
case 59:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 393 "parse-gram.y"
|
||||
#line 404 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
|
||||
break;
|
||||
|
||||
case 60:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 397 "parse-gram.y"
|
||||
#line 408 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 61:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 398 "parse-gram.y"
|
||||
#line 409 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 62:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 399 "parse-gram.y"
|
||||
#line 410 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 63:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 400 "parse-gram.y"
|
||||
#line 411 "parse-gram.y"
|
||||
{ (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 64:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 406 "parse-gram.y"
|
||||
#line 417 "parse-gram.y"
|
||||
{
|
||||
current_type = (yyvsp[(1) - (1)].uniqstr);
|
||||
tag_seen = true;
|
||||
@@ -2346,7 +2357,7 @@ yyreduce:
|
||||
case 65:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 411 "parse-gram.y"
|
||||
#line 422 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
|
||||
symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
|
||||
@@ -2356,7 +2367,7 @@ yyreduce:
|
||||
case 66:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 416 "parse-gram.y"
|
||||
#line 427 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
||||
symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
|
||||
@@ -2367,7 +2378,7 @@ yyreduce:
|
||||
case 67:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 422 "parse-gram.y"
|
||||
#line 433 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
|
||||
symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
|
||||
@@ -2378,7 +2389,7 @@ yyreduce:
|
||||
case 68:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 428 "parse-gram.y"
|
||||
#line 439 "parse-gram.y"
|
||||
{
|
||||
symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
|
||||
symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
|
||||
@@ -2390,7 +2401,7 @@ yyreduce:
|
||||
case 75:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 458 "parse-gram.y"
|
||||
#line 469 "parse-gram.y"
|
||||
{
|
||||
yyerrok;
|
||||
}
|
||||
@@ -2399,70 +2410,70 @@ yyreduce:
|
||||
case 76:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 464 "parse-gram.y"
|
||||
#line 475 "parse-gram.y"
|
||||
{ current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
|
||||
break;
|
||||
|
||||
case 78:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 468 "parse-gram.y"
|
||||
#line 479 "parse-gram.y"
|
||||
{ grammar_current_rule_end ((yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 79:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 469 "parse-gram.y"
|
||||
#line 480 "parse-gram.y"
|
||||
{ grammar_current_rule_end ((yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 81:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 475 "parse-gram.y"
|
||||
#line 486 "parse-gram.y"
|
||||
{ grammar_current_rule_begin (current_lhs, current_lhs_location); }
|
||||
break;
|
||||
|
||||
case 82:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 477 "parse-gram.y"
|
||||
#line 488 "parse-gram.y"
|
||||
{ grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 83:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 479 "parse-gram.y"
|
||||
#line 490 "parse-gram.y"
|
||||
{ grammar_current_rule_action_append ((yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
|
||||
break;
|
||||
|
||||
case 84:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 481 "parse-gram.y"
|
||||
#line 492 "parse-gram.y"
|
||||
{ grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 85:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 483 "parse-gram.y"
|
||||
#line 494 "parse-gram.y"
|
||||
{ grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 86:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 485 "parse-gram.y"
|
||||
#line 496 "parse-gram.y"
|
||||
{ grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
|
||||
break;
|
||||
|
||||
case 89:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 501 "parse-gram.y"
|
||||
#line 512 "parse-gram.y"
|
||||
{
|
||||
static char one[] = "1";
|
||||
(yyval.chars) = one;
|
||||
@@ -2472,24 +2483,28 @@ yyreduce:
|
||||
case 91:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 511 "parse-gram.y"
|
||||
#line 522 "parse-gram.y"
|
||||
{
|
||||
code_props plain_code;
|
||||
(yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
|
||||
(yyval.chars) = translate_code ((yyvsp[(1) - (1)].code) + 1, (yylsp[(1) - (1)]));
|
||||
code_props_plain_init (&plain_code, (yyvsp[(1) - (1)].code)+1, (yylsp[(1) - (1)]));
|
||||
code_props_translate_code (&plain_code);
|
||||
gram_scanner_last_string_free ();
|
||||
(yyval.chars) = code_props_code_get (plain_code);
|
||||
}
|
||||
break;
|
||||
|
||||
case 92:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 527 "parse-gram.y"
|
||||
#line 542 "parse-gram.y"
|
||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 93:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 529 "parse-gram.y"
|
||||
#line 544 "parse-gram.y"
|
||||
{
|
||||
(yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
|
||||
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
||||
@@ -2500,14 +2515,14 @@ yyreduce:
|
||||
case 94:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 537 "parse-gram.y"
|
||||
#line 552 "parse-gram.y"
|
||||
{ (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
|
||||
break;
|
||||
|
||||
case 97:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 549 "parse-gram.y"
|
||||
#line 564 "parse-gram.y"
|
||||
{
|
||||
(yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
|
||||
symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
|
||||
@@ -2517,17 +2532,21 @@ yyreduce:
|
||||
case 99:
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 558 "parse-gram.y"
|
||||
#line 573 "parse-gram.y"
|
||||
{
|
||||
muscle_code_grow ("epilogue", translate_code ((yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)])), (yylsp[(2) - (2)]));
|
||||
code_props plain_code;
|
||||
code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
|
||||
code_props_translate_code (&plain_code);
|
||||
gram_scanner_last_string_free ();
|
||||
muscle_code_grow ("epilogue", code_props_code_get (plain_code), (yylsp[(2) - (2)]));
|
||||
code_scanner_last_string_free ();
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
/* Line 1269 of yacc.c */
|
||||
#line 2531 "parse-gram.c"
|
||||
#line 2550 "parse-gram.c"
|
||||
default: break;
|
||||
}
|
||||
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
|
||||
@@ -2746,7 +2765,7 @@ yyreturn:
|
||||
|
||||
|
||||
/* Line 1486 of yacc.c */
|
||||
#line 564 "parse-gram.y"
|
||||
#line 583 "parse-gram.y"
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user