mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
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:
@@ -300,6 +300,7 @@ b4_user_union_members
|
||||
]b4_parse_param_cons[
|
||||
}
|
||||
]b4_parse_trace_if([[
|
||||
import std.stdio;
|
||||
private File yyDebugStream;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 ()
|
||||
{
|
||||
|
||||
@@ -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"]])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user