d: prepare to be able to run LAC tests

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.
This commit is contained in:
Akim Demaille
2021-08-07 12:49:33 +02:00
parent 6d86d26b33
commit 7f1e9249d0
3 changed files with 30 additions and 1 deletions

View File

@@ -300,6 +300,7 @@ b4_user_union_members
]b4_parse_param_cons[
}
]b4_parse_trace_if([[
import std.stdio;
private File yyDebugStream;
/**

View File

@@ -953,6 +953,26 @@ public void reportSyntaxError(]AT_API_PREFIX[Parser.Context ctx)
]])[]])
# 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 ()
{

View File

@@ -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 @@ AT_LAC_CHECK([[%define api.push-pull both %define api.pure]])
# 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"]])