mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-11 21:33:04 +00:00
Named symbol references.
Discussed in: http://lists.gnu.org/archive/html/bison-patches/2009-01/msg00000.html http://lists.gnu.org/archive/html/bison-patches/2009-02/msg00002.html http://lists.gnu.org/archive/html/bison-patches/2009-03/msg00009.html * src/parse-gram.y: Add new syntax (named_ref.opt). * src/reader.c: Store named refs in symbol lists. * src/reader.h: New argument for symbol_append and action_append functions. * src/scan-code.h: Add new field (named_ref) into code_props data structure. Keeps named ref of midrule actions. * src/scan-code.l: Support for named refs in semantic action code. New function 'parse_named_ref'. * src/scan-gram.l: Support bracketed id. * src/symlist.c: Store named refs in symbol lists. * src/symlist.h: New field in symbol list: named_ref. * src/named-ref.h: New file, a struct for named_ref. * src/named-ref.c: New file, named_ref_new function. * src/Makefile.am: Add two new files. * tests/testsuite.at: Include new test group: * tests/named-refs.at: this new file.
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
# define SCAN_CODE_H_
|
||||
|
||||
# include "location.h"
|
||||
# include "named-ref.h"
|
||||
|
||||
struct symbol_list;
|
||||
|
||||
@@ -64,6 +65,9 @@ typedef struct code_props {
|
||||
|
||||
/** \c NULL iff \c code_props::kind is not \c CODE_PROPS_RULE_ACTION. */
|
||||
struct symbol_list *rule;
|
||||
|
||||
/* Named reference. */
|
||||
named_ref *named_ref;
|
||||
} code_props;
|
||||
|
||||
/**
|
||||
@@ -76,7 +80,7 @@ void code_props_none_init (code_props *self);
|
||||
|
||||
/** Equivalent to \c code_props_none_init. */
|
||||
#define CODE_PROPS_NONE_INIT \
|
||||
{CODE_PROPS_NONE, NULL, EMPTY_LOCATION_INIT, false, NULL}
|
||||
{CODE_PROPS_NONE, NULL, EMPTY_LOCATION_INIT, false, NULL, NULL}
|
||||
|
||||
/** Initialized by \c CODE_PROPS_NONE_INIT with no further modification. */
|
||||
extern code_props const code_props_none;
|
||||
@@ -129,7 +133,8 @@ void code_props_symbol_action_init (code_props *self, char const *code,
|
||||
* - The caller frees \c rule.
|
||||
*/
|
||||
void code_props_rule_action_init (code_props *self, char const *code,
|
||||
location code_loc, struct symbol_list *rule);
|
||||
location code_loc, struct symbol_list *rule,
|
||||
named_ref *named_ref);
|
||||
|
||||
/**
|
||||
* \pre
|
||||
|
||||
Reference in New Issue
Block a user