[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/4] d: prepare to be able to run LAC tests
From: |
Akim Demaille |
Subject: |
[PATCH 4/4] d: prepare to be able to run LAC tests |
Date: |
Sat, 7 Aug 2021 12:56:32 +0200 |
Unfortunately it seems to be quite difficult to have "LAC: Exploratory
stack" run for D.
* data/skeletons/lalr1.d: We need File when traces are enabled.
* tests/local.at (AT_YYLEX_DEFINE(d)): New.
* tests/regression.at: Prepare for D, but don't run it, it does not
work.
---
data/skeletons/lalr1.d | 1 +
tests/local.at | 20 ++++++++++++++++++++
tests/regression.at | 10 +++++++++-
3 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/data/skeletons/lalr1.d b/data/skeletons/lalr1.d
index dc54c664..97303772 100644
--- a/data/skeletons/lalr1.d
+++ b/data/skeletons/lalr1.d
@@ -300,6 +300,7 @@ b4_user_union_members
]b4_parse_param_cons[
}
]b4_parse_trace_if([[
+ import std.stdio;
private File yyDebugStream;
/**
diff --git a/tests/local.at b/tests/local.at
index e24c419d..01cf5845 100644
--- a/tests/local.at
+++ b/tests/local.at
@@ -953,6 +953,26 @@ m4_define([AT_YYERROR_DEFINE(d)],
]])[]])
+# FIXME: this does not work. It is a stub copied blindly from Java.
+m4_define([AT_YYLEX_DEFINE(d)],
+[[
+ /*--------.
+ | yylex. |
+ `--------*/
+
+ public string input = ]$1[;
+ public int index = 0;
+ public int yylex() {
+ if (index < input.length())
+ return input.charAt(index++);
+ else
+ return 0;
+ }
+ public Object getLVal() {
+ ]m4_ifval([$2], [$2], [return null])[;
+ }
+]])
+
m4_define([AT_MAIN_DEFINE(d)],
[[int main ()
{
diff --git a/tests/regression.at b/tests/regression.at
index 52ef5e15..73d9268a 100644
--- a/tests/regression.at
+++ b/tests/regression.at
@@ -1337,7 +1337,10 @@ m4_pushdef([AT_LAC_CHECK], [
AT_BISON_OPTION_PUSHDEFS([%debug $1])
AT_DATA_GRAMMAR([input.y],
-[AT_JAVA_IF([[%code imports {
+[AT_LANG_CASE(
+[d], [[%define api.symbol.prefix {SYM_}
+]],
+[java], [[%code imports {
import java.io.IOException;
}
@@ -1419,6 +1422,11 @@ m4_pushdef([AT_LAC_CHECK], [
# C++.
AT_LAC_CHECK([[%skeleton "lalr1.cc"]])
+# D.
+# FIXME: does not work. lalr1.d cannot work with literal chars,
+# and AT_YYLEX_DEFINE(d) is incorrect.
+# AT_LAC_CHECK([[%skeleton "lalr1.d"]])
+
# Java.
AT_LAC_CHECK([[%skeleton "lalr1.java"]])
--
2.32.0