mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
glr2.cc: example: use objects (not pointers) to represent the AST
Currently we are using pointers. The whole point of glr2.cc (vs. glr.cc) is precisely to allow genuine C++ objects to be semantic values. Let's make that work. * data/skeletons/glr2.cc (glr_state::glr_state): Be sure to initialize yysval. (glr_state): Add copy-ctor, assignment and dtor. (glr_state::copyFrom): Be sure to initialize the destination if it was not. (glr_state::~glr_state): Destroy the semantic value. * examples/c++/glr/ast.hh: Rewrite so that we use genuine objects, rather than a traditional OOP hierarchy that requires to deal with pointers. With help from Bruno Belanyi <bruno.belanyi@epita.fr>. * examples/c++/glr/c++-types.yy: Remove memory management. Use true objects. (main): Don't reach yydebug directly. * examples/c++/glr/local.mk: We need C++11.
This commit is contained in:
17
TODO
17
TODO
@@ -9,6 +9,23 @@ Clarify that rule numbers in the skeletons are 1-based.
|
||||
There are many macros that should obey api.prefix: YY_CPLUSPLUS, YY_MOVE,
|
||||
etc.
|
||||
|
||||
** YYDEBUG etc. in C++
|
||||
Discourage the use of YYDEBUG in C++ (see thread with Jot). Stop supporting
|
||||
#define YYSTYPE by the user.
|
||||
|
||||
Add value_type as a synonym for semantic_type.
|
||||
|
||||
** Asymmetries
|
||||
In glr_state, we have yysval and yylloc. It should be yyval/yyloc (and
|
||||
yylval/yylloc when referring to the lookahead). glr.c should
|
||||
s/yysval/yyval/.
|
||||
|
||||
Also
|
||||
|
||||
yystack.yyglrShift (create_state_set_index(0), 0, 0, yylval, &yylloc);
|
||||
|
||||
Why are yylval and yylloc treated differently?
|
||||
|
||||
** yyerrok in Java
|
||||
And add tests in calc.at, to prepare work for D.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user