]> git.saurik.com Git - bison.git/commit - src/parse-gram.c
Consolidate the 4 prologue alternative directives (%code, %requires,
authorJoel E. Denny <jdenny@ces.clemson.edu>
Fri, 5 Jan 2007 08:14:45 +0000 (08:14 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Fri, 5 Jan 2007 08:14:45 +0000 (08:14 +0000)
commit8e0a5e9e735620ef5196a155eed1f8cf4d3aab5f
tree22ee8ad61dac743bd0929e81cc4656fa1f34ffa8
parent95021767a1e93fa7b83f8a6c5ec5fd5f8064dd2c
Consolidate the 4 prologue alternative directives (%code, %requires,
%provides, and %code-top) into a single %code directive with an
optional qualifier field.  Discussed at
<http://lists.gnu.org/archive/html/bison-patches/2007-01/msg00012.html>.
* NEWS (2.3a+): Rewrite the existing entry for the prologue
alternatives.
* doc/bison.texinfo (Prologue Alternatives): Update.
(Decl Summary): Update to %code "requires" and %code "provides".
(Calc++ Parser): Update to %code "requires".
(Bison Symbols): Remove entries for %requires, %provides, and
%code-top.  Rewrite %code entry, and add a %code "QUALIFIER" entry.
* data/bison.m4 (b4_user_provides, b4_user_requires): Remove as these
are replaced by b4_percent_code_provides and b4_percent_code_requires,
which are skeleton-specific.
(b4_check_percent_code_qualifiers): New.  A skeleton can use this to
declare what %code qualifiers it supports and to complain if any other
qualifiers were used in the grammar.
* data/glr.cc: Update to use b4_user_code([b4_percent_code_requires])
and b4_user_code([b4_percent_code_provides]) in place of
b4_user_requires and b4_user_provides.
* data/glr.c, data/lalr1.cc, data/push.c, data/yacc.c: Likewise.
Add b4_user_code([b4_percent_code_top]) and
b4_user_code([b4_percent_code]).
Invoke b4_check_percent_code_qualifiers.
* src/parse-gram.y (PERCENT_CODE_TOP, PERCENT_PROVIDES,
PERCENT_REQUIRES): Remove.
(grammar_declaration): Remove RHS's for %code-top, %provides, and
%requires.  Rewrite the %code RHS as the unqualified form defining the
muscle b4_percent_code.  Add another RHS for the qualified %code form,
which defines muscles of the form b4_percent_code_QUALIFIER and the
b4_used_percent_code_qualifiers muscle.
* src/scan-gram.l (PERCENT_CODE_TOP, PERCENT_PROVIDES,
PERCENT_REQUIRES): Remove.
* tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Update to use
%code "requires" and %code "provides".
* tests/input.at (Reject bad %code qualifiers): New.
15 files changed:
ChangeLog
NEWS
data/bison.m4
data/glr.c
data/glr.cc
data/lalr1.cc
data/push.c
data/yacc.c
doc/bison.texinfo
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
src/scan-gram.l
tests/actions.at
tests/input.at