mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
d: add support for %printer
Currently we display the addresses of the semantic values. Instead, print the values. Add support for YY_USE across languages. * data/skeletons/c.m4, data/skeletons/d.m4 (b4_use): New. * data/skeletons/bison.m4 (b4_symbol_actions): Use b4_use to be portable to D. Add support for %printer, and use it. * data/skeletons/d.m4: Instead of duplicating what's already in c-like.m4, include it. (b4_symbol_action): New. Differs from the one in bison.m4 in that it uses yyval/yyloc instead of *yyvaluep and *yylocationp. * data/skeletons/lalr1.d (yy_symbol_print): Avoid calls to formatting, just call write directly. Use the %printer. * examples/d/calc/calc.y: Specify a printer. Enable traces when $YYDEBUG is set. * tests/calc.at: Fix the use of %printer with D.
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
|
||||
%define api.parser.class {Calc}
|
||||
%define parse.error verbose
|
||||
%define parse.trace
|
||||
|
||||
%locations
|
||||
|
||||
@@ -38,6 +39,7 @@
|
||||
EOL "end of line"
|
||||
%token <ival> NUM "number"
|
||||
%type <ival> exp
|
||||
%printer { yyo.write($$); } <ival>
|
||||
|
||||
%left "-" "+"
|
||||
%left "*" "/"
|
||||
@@ -168,6 +170,9 @@ int main()
|
||||
{
|
||||
auto l = calcLexer(stdin);
|
||||
auto p = new Calc(l);
|
||||
import core.stdc.stdlib : getenv;
|
||||
if (getenv("YYDEBUG"))
|
||||
p.setDebugLevel(1);
|
||||
p.parse();
|
||||
return l.exit_status;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user