deprecate %defines in favor of %header

This is consistent with --defines being deprecated in favor of
--header.  The directive %defines is also too similar to %define.
And %header matches nicely with api.header.name.

* src/scan-gram.l (%defines): Deprecate to %header.
(%header): Scan it.
* src/parse-gram.y (PERCENT_DEFINES): Replace with...
(PERCENT_HEADER): this.
* data/skeletons/lalr1.java
* doc/bison.texi
* tests/actions.at, tests/c++.at, tests/calc.at, tests/conflicts.at,
* tests/input.at, tests/java.at, tests/local.at, tests/output.at,
* tests/synclines.at, tests/types.at:
Convert most tests to check %header instead of %defines.
This commit is contained in:
Akim Demaille
2020-09-06 14:20:43 +02:00
parent 75c3746ce2
commit b327f38832
17 changed files with 185 additions and 136 deletions

View File

@@ -96,8 +96,8 @@
string from the scanner (should be CODE). */
static char const *translate_code_braceless (char *code, location loc);
/* Handle a %defines directive. */
static void handle_defines (char const *value);
/* Handle a %header directive. */
static void handle_header (char const *value);
/* Handle a %error-verbose directive. */
static void handle_error_verbose (location const *loc, char const *directive);
@@ -153,7 +153,7 @@
%define parse.error custom
%define parse.lac full
%define parse.trace
%defines
%header
%expect 0
%verbose
@@ -188,20 +188,19 @@
PERCENT_CODE "%code"
PERCENT_DEFAULT_PREC "%default-prec"
PERCENT_DEFINE "%define"
PERCENT_DEFINES "%defines"
PERCENT_ERROR_VERBOSE "%error-verbose"
PERCENT_EXPECT "%expect"
PERCENT_EXPECT_RR "%expect-rr"
PERCENT_FLAG "%<flag>"
PERCENT_FILE_PREFIX "%file-prefix"
PERCENT_FLAG "%<flag>"
PERCENT_GLR_PARSER "%glr-parser"
PERCENT_HEADER "%header"
PERCENT_INITIAL_ACTION "%initial-action"
PERCENT_LANGUAGE "%language"
PERCENT_NAME_PREFIX "%name-prefix"
PERCENT_NO_DEFAULT_PREC "%no-default-prec"
PERCENT_NO_LINES "%no-lines"
PERCENT_NONDETERMINISTIC_PARSER
"%nondeterministic-parser"
PERCENT_NONDETERMINISTIC_PARSER "%nondeterministic-parser"
PERCENT_OUTPUT "%output"
PERCENT_PURE_PARSER "%pure-parser"
PERCENT_REQUIRE "%require"
@@ -339,8 +338,7 @@ prologue_declaration:
muscle_percent_define_insert ($2, @$, $3.kind, $3.chars,
MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
}
| "%defines" { header_flag = true; }
| "%defines" STRING { handle_defines ($2); }
| "%header" string.opt { handle_header ($2); }
| "%error-verbose" { handle_error_verbose (&@$, $1); }
| "%expect" INT_LITERAL { expected_sr_conflicts = $2; }
| "%expect-rr" INT_LITERAL { expected_rr_conflicts = $2; }
@@ -485,6 +483,12 @@ precedence_declarator:
| "%precedence" { $$ = precedence_assoc; }
;
%type <char*> string.opt;
string.opt:
%empty { $$ = NULL; }
| STRING { $$ = $1; }
;
tag.opt:
%empty { $$ = NULL; }
| TAG { $$ = $1; }
@@ -947,13 +951,16 @@ add_param (param_type type, char *decl, location loc)
static void
handle_defines (char const *value)
handle_header (char const *value)
{
header_flag = true;
char *file = unquote (value);
spec_header_file = xstrdup (file);
gram_scanner_last_string_free ();
unquote_free (file);
if (value)
{
char *file = unquote (value);
spec_header_file = xstrdup (file);
gram_scanner_last_string_free ();
unquote_free (file);
}
}

View File

@@ -245,15 +245,16 @@ eqopt ({sp}=)?
"%debug" RETURN_PERCENT_FLAG ("parse.trace");
"%default-prec" return BISON_DIRECTIVE (DEFAULT_PREC);
"%define" return BISON_DIRECTIVE (DEFINE);
"%defines" return BISON_DIRECTIVE (DEFINES);
"%defines" return BISON_DIRECTIVE (HEADER); // Deprecated in 3.8.
"%destructor" return BISON_DIRECTIVE (DESTRUCTOR);
"%dprec" return BISON_DIRECTIVE (DPREC);
"%empty" return BISON_DIRECTIVE (EMPTY);
"%expect" return BISON_DIRECTIVE (EXPECT);
"%expect-rr" return BISON_DIRECTIVE (EXPECT_RR);
"%file-prefix" RETURN_VALUE (PERCENT_FILE_PREFIX, uniqstr_new (yytext));
"%initial-action" return BISON_DIRECTIVE (INITIAL_ACTION);
"%glr-parser" return BISON_DIRECTIVE (GLR_PARSER);
"%header" return BISON_DIRECTIVE (HEADER);
"%initial-action" return BISON_DIRECTIVE (INITIAL_ACTION);
"%language" return BISON_DIRECTIVE (LANGUAGE);
"%left" return PERCENT_LEFT;
"%lex-param" RETURN_PERCENT_PARAM (lex);