mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
skeletons: factor comments about symbols
* data/variant.hh (b4_char_sizeof_): Rename as... * data/bison.m4 (b4_symbol_tag_comment): this. Provide more documentation about b4_symbol_*.
This commit is contained in:
@@ -341,6 +341,33 @@ b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated.
|
|||||||
# macro per (token, field), where field can has_id, id, etc.: see
|
# macro per (token, field), where field can has_id, id, etc.: see
|
||||||
# src/output.c:prepare_symbols_definitions().
|
# src/output.c:prepare_symbols_definitions().
|
||||||
#
|
#
|
||||||
|
# The various FIELDS are:
|
||||||
|
#
|
||||||
|
# - has_id: 0 or 1.
|
||||||
|
# Whether the symbol has an id.
|
||||||
|
# - id: string
|
||||||
|
# If has_id, the id. Guaranteed to be usable as a C identifier.
|
||||||
|
# - tag: string.
|
||||||
|
# A representat of the symbol. Can be 'foo', 'foo.id', '"foo"' etc.
|
||||||
|
# - user_number: integer
|
||||||
|
# The assigned (external) number as used by yylex.
|
||||||
|
# - is_token: 0 or 1
|
||||||
|
# Whether this is a terminal symbol.
|
||||||
|
# - number: integer
|
||||||
|
# The internalized number (used after yytranslate).
|
||||||
|
# - has_type: 0, 1
|
||||||
|
# Whether has a semantic value.
|
||||||
|
# - type
|
||||||
|
# If it has a semantic value, its type tag, or, if variant are used,
|
||||||
|
# its type.
|
||||||
|
# - has_printer: 0, 1
|
||||||
|
# - printer: string
|
||||||
|
# - printer_file: string
|
||||||
|
# - printer_line: integer
|
||||||
|
# If the symbol has a printer, everything about it.
|
||||||
|
# - has_destructor, destructor, destructor_file, destructor_line
|
||||||
|
# Likewise.
|
||||||
|
#
|
||||||
# The following macros provide access to these values.
|
# The following macros provide access to these values.
|
||||||
|
|
||||||
# b4_symbol_(NUM, FIELD)
|
# b4_symbol_(NUM, FIELD)
|
||||||
@@ -354,7 +381,7 @@ m4_define([b4_symbol_],
|
|||||||
# b4_symbol(NUM, FIELD)
|
# b4_symbol(NUM, FIELD)
|
||||||
# ---------------------
|
# ---------------------
|
||||||
# Recover a FIELD about symbol #NUM. Thanks to m4_indir, fails if
|
# Recover a FIELD about symbol #NUM. Thanks to m4_indir, fails if
|
||||||
# undefined. If FIELD = id, prepend the prefix.
|
# undefined. If FIELD = id, prepend the token prefix.
|
||||||
m4_define([b4_symbol],
|
m4_define([b4_symbol],
|
||||||
[m4_case([$2],
|
[m4_case([$2],
|
||||||
[id], [m4_do([b4_percent_define_get([api.token.prefix])],
|
[id], [m4_do([b4_percent_define_get([api.token.prefix])],
|
||||||
@@ -373,6 +400,14 @@ m4_define([b4_symbol_if],
|
|||||||
[m4_fatal([$0: field $2 of $1 is not a Boolean:] b4_symbol([$1], [$2]))])])
|
[m4_fatal([$0: field $2 of $1 is not a Boolean:] b4_symbol([$1], [$2]))])])
|
||||||
|
|
||||||
|
|
||||||
|
# b4_symbol_tag_comment(SYMBOL-NUM)
|
||||||
|
# ---------------------------------
|
||||||
|
# Issue a comment giving the tag of symbol NUM.
|
||||||
|
m4_define([b4_symbol_tag_comment],
|
||||||
|
[b4_comment([b4_symbol([$1], [tag])])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
# b4_symbol_action_location(SYMBOL-NUM, KIND)
|
# b4_symbol_action_location(SYMBOL-NUM, KIND)
|
||||||
# -------------------------------------------
|
# -------------------------------------------
|
||||||
# Report the location of the KIND action as FILE:LINE.
|
# Report the location of the KIND action as FILE:LINE.
|
||||||
@@ -469,6 +504,9 @@ m4_define([b4_token_format],
|
|||||||
# ---------------------
|
# ---------------------
|
||||||
# Run actions for the symbol NUMS that all have the same type-name.
|
# Run actions for the symbol NUMS that all have the same type-name.
|
||||||
# Skip NUMS that have no type-name.
|
# Skip NUMS that have no type-name.
|
||||||
|
#
|
||||||
|
# To specify the action to run, define b4_dollar_dollar(NUMBER,
|
||||||
|
# TAG, TYPE).
|
||||||
m4_define([b4_type_action_],
|
m4_define([b4_type_action_],
|
||||||
[b4_symbol_if([$1], [has_type],
|
[b4_symbol_if([$1], [has_type],
|
||||||
[m4_map([b4_symbol_case_], [$@])[]dnl
|
[m4_map([b4_symbol_case_], [$@])[]dnl
|
||||||
|
|||||||
@@ -51,13 +51,6 @@ m4_define([_b4_char_sizeof_dummy],
|
|||||||
dummy[]_b4_char_sizeof_counter])
|
dummy[]_b4_char_sizeof_counter])
|
||||||
|
|
||||||
|
|
||||||
# b4_char_sizeof_(SYMBOL-NUM)
|
|
||||||
# ---------------------------
|
|
||||||
# A comment describing this symbol.
|
|
||||||
m4_define([b4_char_sizeof_],
|
|
||||||
[ // b4_symbol([$1], [tag])
|
|
||||||
])
|
|
||||||
|
|
||||||
# b4_char_sizeof(SYMBOL-NUMS)
|
# b4_char_sizeof(SYMBOL-NUMS)
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# To be mapped on the list of type names to produce:
|
# To be mapped on the list of type names to produce:
|
||||||
@@ -69,7 +62,7 @@ m4_define([b4_char_sizeof_],
|
|||||||
m4_define([b4_char_sizeof],
|
m4_define([b4_char_sizeof],
|
||||||
[b4_symbol_if([$1], [has_type],
|
[b4_symbol_if([$1], [has_type],
|
||||||
[
|
[
|
||||||
m4_map([b4_char_sizeof_], [$@])dnl
|
m4_map([ b4_symbol_tag_comment], [$@])dnl
|
||||||
char _b4_char_sizeof_dummy@{sizeof([b4_symbol([$1], [type])])@};
|
char _b4_char_sizeof_dummy@{sizeof([b4_symbol([$1], [type])])@};
|
||||||
])])
|
])])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user