mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
Currently glr2.cc uses three variables/struct members to denote the
symbols' kind (or state), value and location. lalr1.cc has two types
for "complete" symbols: symbol_type and stack_symbol_type. Let's use
that model in glr2.cc too.
For a start use yyla (a symbol_type) to denote the lookahead, instead
of the triple yytoken, yylval and yylloc. This will make easier the
introduction of the "context" subclass, used in parse.error=custom.
It simplifies the code in several places. For instance from:
symbol_kind_type yytoken_current = this->yytoken;]b4_variant_if([[
value_type yylval_current;
]b4_symbol_variant([this->yytoken],
[yylval_current], [move], [this->yylval])], [[
value_type yylval_current = this->yylval;]])[]b4_locations_if([
location_type yylloc_current = this->yylloc;])[
to:
symbol_type yyla_current = std::move (this->yyla);
* data/skeletons/glr2.cc (yytoken, yylval, yylloc): Replace by...
(yyla): this.
Adjust all dependencies.
(yyloc_default): Remove, unused.
* tests/c++.at, tests/glr-regression.at, tests/types.at: C++11 is
required for glr2.cc.
Adjust to changes in glr2.cc.
AT_BISON_OPTION_PUSHDEFS/AT_BISON_OPTION_POPDEFS
These two macros must be given the (main) directives so that they define a number of other macros to:
- what the language is (so what compiler tool chain to use, what definition of yylex/yyerror, etc.)
- what skeleton is used
Keywords
The following keywords are used to label tests (with AT_KEYWORDS(category)). Please follow them and avoid creating synonyms.
- action
- api.value.type
- c++: c++ language
- cex: counterexamples.
- d: d language
- deprec: deprecated features.
- diagnostics
- glr
- graph
- html: html reports
- java
- lac
- %merge
- multistart
- push
- report: for automaton dumps
- %union
- variant
- yacc: POSIX yacc (%yacc)
Calculator
The grammar features several special directives:
!!YYERROR!+YYACCEPT!-YYABORT!*YYNOMEM