mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Miscellaneous %define and %code cleanup.
* data/bison.m4 (b4_percent_define_flag_if): Correct comments on how values are interpreted. * doc/bison.texinfo (Decl Summary): Clean up and extend %define documentation a little more. * src/muscle_tab.c (MUSCLE_USER_NAME_CONVERT, muscle_percent_define_insert, muscle_percent_code_grow): New functions/macros. * src/muscle_tab.h (muscle_percent_define_insert, muscle_percent_code_grow): Prototype. * src/parse-gram.y (prologue_declaration): Use muscle_percent_define_insert and muscle_percent_code_grow when parsing %define and %code directives. Make it easy to share %define boolean variables between the front-end and back-end. Though not used yet, this will be useful in the future. * data/bison.m4 (b4_check_user_names): Rewrite comments to talk about Bison uses of names rather than just skeleton uses of names. (b4_percent_define_get, b4_percent_define_ifdef): Rename b4_percent_define_skeleton_variables(VARIABLE) to b4_percent_define_bison_variables(VARIABLE). (b4_percent_code_get, b4_percent_code_ifdef): Rename b4_percent_code_skeleton_qualifiers(QUALIFIER) to b4_percent_code_bison_qualifiers(QUALIFIER). (b4_check_user_names_wrap): Update for renames. * src/muscle_tab.c, src/muscle_tab.h (muscle_percent_define_flag_if, muscle_percent_define_default): New functions mimicking b4_percent_define_flag_if and b4_percent_define_default. For %define variables, report locations for invalid values and redefinitions. * data/bison.m4 (b4_percent_define_flag_if): Read b4_percent_define_loc(VARIABLE) to report the location of an invalid value for VARIABLE. (b4_percent_define_default): Save a special location in b4_percent_define_loc(VARIABLE) in case the default value for VARIABLE must later be reported as invalid. * src/muscle_tab.c (muscle_location_grow, muscle_location_decode): New functions. (muscle_percent_define_insert): Record the location of VARIABLE in muscle percent_define_loc(VARIABLE), and use it to report the previous location for a redefinition. (muscle_percent_define_flag_if): Update like b4_percent_define_flag_if. (muscle_percent_define_default): Update like b4_percent_define_default. (muscle_grow_user_name_list): Rename to... (muscle_user_name_list_grow): ... this for consistency and use muscle_location_grow. * src/muscle_tab.h (muscle_location_grow): Prototype. * tests/input.at (%define errors): Update expected output. * tests/skeletons.at (%define boolean variables: invalid skeleton defaults): New test case.
This commit is contained in:
@@ -811,7 +811,9 @@ start: ;
|
||||
|
||||
AT_CHECK([[bison input.y]], [0], [],
|
||||
[[input.y:2.9-11: warning: %define variable `var' redefined
|
||||
input.y:1.9-11: warning: previous definition
|
||||
input.y:3.10-12: warning: %define variable `var' redefined
|
||||
input.y:2.9-11: warning: previous definition
|
||||
input.y:1.9-11: warning: %define variable `var' is not used
|
||||
input.y:2.9-11: warning: %define variable `var' is not used
|
||||
input.y:3.10-12: warning: %define variable `var' is not used
|
||||
@@ -836,7 +838,7 @@ start: ;
|
||||
]])
|
||||
|
||||
AT_CHECK([[bison Input.y]], [1], [],
|
||||
[[Input.y: invalid value for %define variable `public'
|
||||
[[Input.y:2.9-14: invalid value for %define boolean variable `public'
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
@@ -19,10 +19,10 @@
|
||||
AT_BANNER([[Skeleton Support.]])
|
||||
|
||||
## ------------------------------ ##
|
||||
## relative skeleton file names. ##
|
||||
## Relative skeleton file names. ##
|
||||
## ------------------------------ ##
|
||||
|
||||
AT_SETUP([[relative skeleton file names]])
|
||||
AT_SETUP([[Relative skeleton file names]])
|
||||
|
||||
AT_CHECK([[mkdir tmp]])
|
||||
|
||||
@@ -79,10 +79,10 @@ AT_CLEANUP
|
||||
|
||||
|
||||
## ------------------------------- ##
|
||||
## installed skeleton file names. ##
|
||||
## Installed skeleton file names. ##
|
||||
## ------------------------------- ##
|
||||
|
||||
AT_SETUP([[installed skeleton file names]])
|
||||
AT_SETUP([[Installed skeleton file names]])
|
||||
|
||||
m4_pushdef([AT_GRAM],
|
||||
[[%{
|
||||
@@ -141,3 +141,31 @@ AT_PARSER_CHECK([[./input-gram]], [[1]], [],
|
||||
m4_popdef([AT_GRAM])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
## ------------------------------------------------------ ##
|
||||
## %define boolean variables: invalid skeleton defaults. ##
|
||||
## ------------------------------------------------------ ##
|
||||
|
||||
AT_SETUP([[%define boolean variables: invalid skeleton defaults]])
|
||||
|
||||
AT_CHECK([[mkdir tmp]])
|
||||
|
||||
AT_DATA([[skel.c]],
|
||||
[[b4_percent_define_default([[foo]], [[bogus value]])
|
||||
b4_percent_define_flag_if([[foo]])
|
||||
]])
|
||||
|
||||
AT_DATA([[input.y]],
|
||||
[[%skeleton "./skel.c"
|
||||
%%
|
||||
start: ;
|
||||
]])
|
||||
|
||||
AT_CHECK([[bison input.y]], [[1]], [[]],
|
||||
[[[Bison:b4_percent_define_default]:0.0: invalid value for %define boolean variable `foo'
|
||||
]])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user