skeletons: add support for %code epilogue

When building the test cases, emitting code in the epilogue is very
constraining.  Let's make it simpler thanks to %code epilogue.

However, I don't want to document this: it is bad style to use it (we
should avoid having too many ways to write the same thing,
TI!MTOWTDI), just put your code in the true epilogue section.

* data/skeletons/glr.c, data/skeletons/lalr1.d, data/skeletons/lalr1.java,
* data/skeletons/yacc.c: Implement support for %code epilogue.
Remove useless comments.
* tests/calc.at, tests/java.at: Simplify.
This commit is contained in:
Akim Demaille
2020-02-01 08:38:53 +01:00
parent 493359b758
commit 0774b2c6e3
6 changed files with 13 additions and 19 deletions

View File

@@ -117,13 +117,8 @@ exp:
| '-' error { $$ = new Integer (0); return YYERROR; }
;
]AT_LEXPARAM_IF([[
%code lexer {
]],
[[
%%
class CalcLexer implements Calc.Lexer {
]])[
]AT_LEXPARAM_IF([[%code lexer {]],
[[%code epilogue { class CalcLexer implements Calc.Lexer {]])[
StreamTokenizer st;
public ]AT_LEXPARAM_IF([[YYLexer]], [[CalcLexer]])[ (InputStream is)
@@ -176,10 +171,9 @@ class CalcLexer implements Calc.Lexer {
else
return st.ttype;
}
]AT_LEXPARAM_IF([[
]AT_LEXPARAM_IF([], [[}]])[
};
%%]], [[
}]])[
%%
]AT_JAVA_POSITION_DEFINE[
]])
])# _AT_DATA_JAVA_CALC_Y