X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f6b561d9f9cbc6fc95bbb86518372a5cb52f45a6..ea9e670d728ac659e139434de31ea9306ecdd117:/data/bison.m4?ds=sidebyside diff --git a/data/bison.m4 b/data/bison.m4 index 1907e42e..6f06266d 100644 --- a/data/bison.m4 +++ b/data/bison.m4 @@ -61,6 +61,30 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison.])]) +## -------- ## +## Output. ## +## -------- ## + +# b4_output_begin(FILE) +# --------------------- +# Enable output, i.e., send to diversion 0, expand after "#", and +# generate the tag to output into FILE. Must be followed by EOL. +m4_define([b4_output_begin], +[m4_changecom() +m4_divert_push(0)dnl +@output(m4_unquote([$1])@)@dnl +]) + + +# b4_output_end() +# --------------- +# Output nothing, restore # as comment character (no expansions after #). +m4_define([b4_output_end], +[m4_divert_pop(0) +m4_changecom([#]) +]) + + ## ---------------- ## ## Error handling. ## ## ---------------- ## @@ -333,7 +357,7 @@ m4_define([b4_symbol_], # undefined. If FIELD = id, prepend the prefix. m4_define([b4_symbol], [m4_case([$2], - [id], [m4_do([b4_percent_define_get([api.tokens.prefix])], + [id], [m4_do([b4_percent_define_get([api.token.prefix])], [b4_symbol_([$1], [id])])], [b4_symbol_($@)])]) @@ -697,17 +721,18 @@ m4_define([b4_percent_define_default], m4_define([b4_percent_define_syncline(]$1[)], [[]])])]) -# b4_percent_define_if_define(VARIABLE) -# ------------------------------------- -# Define b4_VARIABLE_if that executes its $1 or $2 depending whether +# b4_percent_define_if_define(NAME, [VARIABLE = NAME]) +# ---------------------------------------------------- +# Define b4_NAME_if that executes its $1 or $2 depending whether # VARIABLE was %defined. The characters `.' and `-' in VARIABLE are mapped # to `_'. m4_define([b4_percent_define_if_define_], [m4_define(m4_bpatsubst([b4_$1_if], [[-.]], [_]), - [b4_percent_define_flag_if([$1], [$2], [$3])])]) + [b4_percent_define_flag_if(m4_default([$2], [$1]), + [$3], [$4])])]) m4_define([b4_percent_define_if_define], -[b4_percent_define_default([[$1]], [[false]]) -b4_percent_define_if_define_([$1], $[1], $[2])]) +[b4_percent_define_default([m4_default([$2], [$1])], [[false]]) +b4_percent_define_if_define_([$1], [$2], $[1], $[2])]) # b4_percent_define_check_values(VALUES) @@ -790,20 +815,27 @@ m4_define([b4_percent_code_ifdef], # Default values for %define. # --------------------------- -# If the api.tokens.prefix, it is empty. -m4_percent_define_default([[api.tokens.prefix]], [[]]) +# If the api.token.prefix, it is empty. +m4_percent_define_default([[api.token.prefix]], [[]]) # b4_parse_assert_if([IF-ASSERTIONS-ARE-USED], [IF-NOT]) # b4_parse_trace_if([IF-DEBUG-TRACES-ARE-ENABLED], [IF-NOT]) -# b4_lex_symbol_if([IF-YYLEX-RETURNS-A-COMPLETE-SYMBOL], [IF-NOT]) +# b4_token_ctor_if([IF-YYLEX-RETURNS-A-TOKEN], [IF-NOT]) # b4_variant_if([IF-VARIANT-ARE-USED], [IF-NOT]) # ---------------------------------------------- -b4_percent_define_if_define([lex_symbol]) +b4_percent_define_if_define([token_ctor], [api.token.constructor]) b4_percent_define_if_define([locations]) # Whether locations are tracked. b4_percent_define_if_define([parse.assert]) b4_percent_define_if_define([parse.trace]) b4_percent_define_if_define([variant]) +# b4_bison_locations_if([IF-TRUE]) +# -------------------------------- +# Expand IF-TRUE if using locations, and using the default location +# type. +m4_define([b4_bison_locations_if], +[b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [], [$1])])]) + # b4_error_verbose_if([IF-ERRORS-ARE-VERBOSE], [IF-NOT]) # ------------------------------------------------------