mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-16 07:43:03 +00:00
Rename %before-definitions to %start-header and %after-definitions to
%end-header. Don't use these declarations to separate pre-prologue blocks from post-prologue blocks. Add new order-independent declarations %before-header and %after-header as alternatives to the traditional Yacc pre-prologue and post-prologue blocks. Discussed at <http://lists.gnu.org/archive/html/bison-patches/2006-06/msg00110.html>. * NEWS (2.3+): Update for these changes. * data/glr.c (b4_before_definitions): Update to... (b4_start_header): ... this. (b4_after_definitions): Update to... (b4_end_header): ... this. * data/glr.cc: Likewise. * data/lalr1.cc: Likewise. * data/yacc.c: Likewise. * doc/bison.texinfo (The prologue): Update names, and replace remaining prologue blocks with %*-header declarations. (Calc++ Parser): Likewise. (Bison Declaration Summary): Update names. (Bison Symbols): Update description. * src/parse-gram.y (PERCENT_AFTER_DEFINITIONS): Update to... (PERCENT_END_HEADER): ... this. (PERCENT_BEFORE_DEFINITIONS): Update to... (PERCENT_START_HEADER): ... this. (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens. (declaration): Update token names and m4 macro names. When parsing %end-header and %start-header, invoke translate_code before muscle_code_grow, and no longer set global booleans to remember whether these declarations have been seen. Parse new %after-header and %before-header. * src/reader.c (before_definitions, after_definitions): Remove. (prologue_augment): Accept a new bool argument to specify whether to augment the pre-prologue or post-prologue. * src/reader.h (before_definitions, after_definitions): Remove these extern's. (prologue_augment): Add new bool argument. * src/scan-gram.l (PERCENT_AFTER_DEFINITIONS): Update to... (PERCENT_END_HEADER): ... this. (PERCENT_BEFORE_DEFINITIONS): Update to... (PERCENT_START_HEADER): ... this. (PERCENT_AFTER_HEADER, PERCENT_BEFORE_HEADER): New tokens. * tests/actions.at (Printers and Destructors): Update names.
This commit is contained in:
@@ -130,14 +130,13 @@ static int current_prec = 0;
|
||||
`----------------------*/
|
||||
|
||||
%token
|
||||
PERCENT_AFTER_DEFINITIONS
|
||||
"%after-definitions"
|
||||
PERCENT_BEFORE_DEFINITIONS
|
||||
"%before-definitions"
|
||||
PERCENT_AFTER_HEADER "%after-header"
|
||||
PERCENT_BEFORE_HEADER "%before-header"
|
||||
PERCENT_DEBUG "%debug"
|
||||
PERCENT_DEFAULT_PREC "%default-prec"
|
||||
PERCENT_DEFINE "%define"
|
||||
PERCENT_DEFINES "%defines"
|
||||
PERCENT_END_HEADER "%end-header"
|
||||
PERCENT_ERROR_VERBOSE "%error-verbose"
|
||||
PERCENT_EXPECT "%expect"
|
||||
PERCENT_EXPECT_RR "%expect-rr"
|
||||
@@ -157,6 +156,7 @@ static int current_prec = 0;
|
||||
PERCENT_REQUIRE "%require"
|
||||
PERCENT_SKELETON "%skeleton"
|
||||
PERCENT_START "%start"
|
||||
PERCENT_START_HEADER "%start-header"
|
||||
PERCENT_TOKEN_TABLE "%token-table"
|
||||
PERCENT_VERBOSE "%verbose"
|
||||
PERCENT_YACC "%yacc"
|
||||
@@ -214,21 +214,21 @@ declarations:
|
||||
|
||||
declaration:
|
||||
grammar_declaration
|
||||
| PROLOGUE { prologue_augment (translate_code ($1, @1),
|
||||
@1); }
|
||||
| "%after-definitions" "{...}"
|
||||
| PROLOGUE
|
||||
{
|
||||
after_definitions = true;
|
||||
/* Remove the '{', and replace the '}' with '\n'. */
|
||||
$2[strlen ($2) - 1] = '\n';
|
||||
muscle_code_grow ("after_definitions", $2+1, @2);
|
||||
prologue_augment (translate_code ($1, @1), @1, typed);
|
||||
}
|
||||
| "%before-definitions" "{...}"
|
||||
| "%after-header" "{...}"
|
||||
{
|
||||
before_definitions = true;
|
||||
/* Remove the '{', and replace the '}' with '\n'. */
|
||||
$2[strlen ($2) - 1] = '\n';
|
||||
muscle_code_grow ("before_definitions", $2+1, @2);
|
||||
prologue_augment (translate_code ($2+1, @2), @2, true);
|
||||
}
|
||||
| "%before-header" "{...}"
|
||||
{
|
||||
/* Remove the '{', and replace the '}' with '\n'. */
|
||||
$2[strlen ($2) - 1] = '\n';
|
||||
prologue_augment (translate_code ($2+1, @2), @2, false);
|
||||
}
|
||||
| "%debug" { debug_flag = true; }
|
||||
| "%define" string_content
|
||||
@@ -238,6 +238,12 @@ declaration:
|
||||
}
|
||||
| "%define" string_content string_content { muscle_insert ($2, $3); }
|
||||
| "%defines" { defines_flag = true; }
|
||||
| "%end-header" "{...}"
|
||||
{
|
||||
/* Remove the '{', and replace the '}' with '\n'. */
|
||||
$2[strlen ($2) - 1] = '\n';
|
||||
muscle_code_grow ("end_header", translate_code ($2+1, @2), @2);
|
||||
}
|
||||
| "%error-verbose" { error_verbose = true; }
|
||||
| "%expect" INT { expected_sr_conflicts = $2; }
|
||||
| "%expect-rr" INT { expected_rr_conflicts = $2; }
|
||||
@@ -261,6 +267,12 @@ declaration:
|
||||
| "%pure-parser" { pure_parser = true; }
|
||||
| "%require" string_content { version_check (&@2, $2); }
|
||||
| "%skeleton" string_content { skeleton = $2; }
|
||||
| "%start-header" "{...}"
|
||||
{
|
||||
/* Remove the '{', and replace the '}' with '\n'. */
|
||||
$2[strlen ($2) - 1] = '\n';
|
||||
muscle_code_grow ("start_header", translate_code ($2+1, @2), @2);
|
||||
}
|
||||
| "%token-table" { token_table_flag = true; }
|
||||
| "%verbose" { report_flag = report_states; }
|
||||
| "%yacc" { yacc_flag = true; }
|
||||
|
||||
Reference in New Issue
Block a user