[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/9] skeletons: add support for %code epilogue
From: |
Akim Demaille |
Subject: |
[PATCH 1/9] skeletons: add support for %code epilogue |
Date: |
Sun, 2 Feb 2020 15:26:19 +0100 |
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.
---
data/skeletons/glr.c | 3 ++-
data/skeletons/lalr1.d | 5 ++---
data/skeletons/lalr1.java | 6 ++----
data/skeletons/yacc.c | 3 ++-
tests/calc.at | 1 +
tests/java.at | 14 ++++----------
6 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/data/skeletons/glr.c b/data/skeletons/glr.c
index a3b0e69e..8cf56c31 100644
--- a/data/skeletons/glr.c
+++ b/data/skeletons/glr.c
@@ -2720,5 +2720,6 @@ m4_if(b4_prefix, [yy], [],
#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[
#define yylloc ]b4_prefix[lloc]])])[
-]b4_epilogue[]dnl
+]b4_percent_code_get([[epilogue]])[]dnl
+b4_epilogue[]dnl
b4_output_end
diff --git a/data/skeletons/lalr1.d b/data/skeletons/lalr1.d
index bbf87c63..6bae65f4 100644
--- a/data/skeletons/lalr1.d
+++ b/data/skeletons/lalr1.d
@@ -902,9 +902,8 @@ m4_popdef([b4_at_dollar])])dnl
stream.writeln ();
}]])[
}
-
- /* User implementation code. */
]b4_percent_code_get[
}
-]b4_epilogue[]dnl
+]b4_percent_code_get([[epilogue]])[]dnl
+b4_epilogue[]dnl
b4_output_end
diff --git a/data/skeletons/lalr1.java b/data/skeletons/lalr1.java
index 678510a1..58490697 100644
--- a/data/skeletons/lalr1.java
+++ b/data/skeletons/lalr1.java
@@ -1036,10 +1036,8 @@ b4_dollar_popdef[]dnl
private static final int yyfinal_ = ]b4_final_state_number[;
private static final int yyntokens_ = ]b4_tokens_number[;
-/* User implementation code. */
-]b4_percent_code_get[]dnl
-
+]b4_percent_code_get[
}
-
+]b4_percent_code_get([[epilogue]])[]dnl
b4_epilogue[]dnl
b4_output_end
diff --git a/data/skeletons/yacc.c b/data/skeletons/yacc.c
index ccdf485c..c3c50da6 100644
--- a/data/skeletons/yacc.c
+++ b/data/skeletons/yacc.c
@@ -2065,5 +2065,6 @@ yypushreturn:]])[
YYSTACK_FREE (yymsg);]])[
return yyresult;
}
-]b4_epilogue[]dnl
+]b4_percent_code_get([[epilogue]])[]dnl
+b4_epilogue[]dnl
b4_output_end
diff --git a/tests/calc.at b/tests/calc.at
index 9be19e2c..bcaffb79 100644
--- a/tests/calc.at
+++ b/tests/calc.at
@@ -25,6 +25,7 @@
m4_pushdef([AT_CALC_MAIN], [AT_LANG_DISPATCH([$0], $@)])
+# Whether token translation is supported.
m4_pushdef([AT_TOKEN_TRANSLATE_IF],
[AT_ERROR_CUSTOM_IF([$1], [AT_ERROR_DETAILED_IF([$1], [$2])])])
diff --git a/tests/java.at b/tests/java.at
index 28a3377b..0383ddd4 100644
--- a/tests/java.at
+++ b/tests/java.at
@@ -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
--
2.25.0
- [PATCH 0/9] Prepare Java for parse.error custom|detailed, Akim Demaille, 2020/02/02
- [PATCH 2/9] tests: comment changes, Akim Demaille, 2020/02/02
- [PATCH 4/9] java: example: improve, Akim Demaille, 2020/02/02
- [PATCH 1/9] skeletons: add support for %code epilogue,
Akim Demaille <=
- [PATCH 3/9] java: example: rely on autoboxing, Akim Demaille, 2020/02/02
- [PATCH 5/9] java: example: properly track the locations, Akim Demaille, 2020/02/02
- [PATCH 7/9] java: formatting changes, Akim Demaille, 2020/02/02
- [PATCH 8/9] java: add access to the number of errors, Akim Demaille, 2020/02/02
- [PATCH 6/9] java: avoid trailing white spaces, Akim Demaille, 2020/02/02
- [PATCH 9/9] java: use the same calc tests as the other skeletons, Akim Demaille, 2020/02/02