X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/88511166129779993b64a99adde2b0264e1e9a7a..09ccae9b18a7c09ebf7bb8df2a18c8c4a6def248:/src/parse-gram.y diff --git a/src/parse-gram.y b/src/parse-gram.y index fa74d8d8..8e3b7320 100644 --- a/src/parse-gram.y +++ b/src/parse-gram.y @@ -115,6 +115,7 @@ static int current_prec = 0; %token PERCENT_LEFT "%left" %token PERCENT_RIGHT "%right" %token PERCENT_NONASSOC "%nonassoc" +%token PERCENT_PRECEDENCE "%precedence" %token PERCENT_PREC "%prec" %token PERCENT_DPREC "%dprec" @@ -254,7 +255,7 @@ prologue_declaration: muscle_code_grow ("initial_action", action.code, @2); code_scanner_last_string_free (); } -| "%language" STRING { language_argmatch ($2, 1, &@1); } +| "%language" STRING { language_argmatch ($2, grammar_prio, @1); } | "%lex-param" "{...}" { add_param ("lex_param", $2, @2); } | "%locations" { locations_flag = true; } | "%name-prefix" STRING { spec_name_prefix = $2; } @@ -300,7 +301,7 @@ prologue_declaration: skeleton_user = uniqstr_new (skeleton_build); free (skeleton_build); } - skeleton_arg (skeleton_user, 1, &@1); + skeleton_arg (skeleton_user, grammar_prio, @1); } | "%token-table" { token_table_flag = true; } | "%verbose" { report_flag |= report_states; } @@ -352,9 +353,9 @@ grammar_declaration: ; -/*----------* - | %union. | - *----------*/ +/*---------. +| %union. | +`---------*/ %token PERCENT_UNION "%union"; @@ -412,9 +413,10 @@ precedence_declaration: ; precedence_declarator: - "%left" { $$ = left_assoc; } -| "%right" { $$ = right_assoc; } -| "%nonassoc" { $$ = non_assoc; } + "%left" { $$ = left_assoc; } +| "%right" { $$ = right_assoc; } +| "%nonassoc" { $$ = non_assoc; } +| "%precedence" { $$ = precedence_assoc; } ; type.opt: @@ -541,14 +543,14 @@ rhs: ; -/*----------------------------* - | variable and content.opt. | - *---------------------------*/ +/*---------------------------. +| variable and content.opt. | +`---------------------------*/ variable: ID - | STRING { $$ = uniqstr_new ($1); } /* deprecated and not M4-friendly */ - ; +| STRING { $$ = uniqstr_new ($1); } /* deprecated and not M4-friendly */ +; /* Some content or empty by default. */ content.opt: @@ -560,9 +562,9 @@ content.opt: ; -/*-------------* - | braceless. | - *-------------*/ +/*------------. +| braceless. | +`------------*/ braceless: "{...}" @@ -577,9 +579,9 @@ braceless: ; -/*---------------* - | Identifiers. | - *---------------*/ +/*--------------. +| Identifiers. | +`--------------*/ /* Identifiers are returned as uniqstr values by the scanner. Depending on their use, we may need to make them genuine symbols. */