繁体   English   中英

Antlr4:使用带有 C# 生成代码的 Testrig

[英]Antlr4: Using a Testrig with C# generated code

几年前,我在 Java 中使用了 Antlr3 视图。 现在我正在用 C# 编码,我想赶上 Antrl4 中的变化并在 C# 代码生成中使用它。

java org.antlr.v4.Tool -Dlanguage=CSharp Hello.g4 -visitor

生成 C# 源代码。 为了测试探索,我想使用 grun-Testrig。 在 java 中,这应该是以下内容,但在 C# 中,我得到一个错误,显然是因为编译的 Lexer/Parser 应该在 DotNet-Runtime 中执行,而不是在 Java 中执行。

$java org.antlr.v4.runtime.misc.TestRig 你好 -gui 警告:TestRig 移至 org.antlr.v4.gui.TestRig; 自动调用无法将 Hello 加载为词法分析器或解析器

如何在 C#-Environment 中使用等效的 TestRig?

我通过在 VisualStudio 中的 c# 项目的属性中使用预构建事件来做到这一点。

我做了一个 PreBuildEvents.bat 如下:

set ThisDrive=%~d0
set ThisDirectory=%~dp0
%ThisDrive%
cd %ThisDirectory%
call setPath.bat
java org.antlr.v4.Tool -Dlanguage=CSharp MyGrammar.g4
java org.antlr.v4.Tool -Dlanguage=Java   MyGrammar.g4
javac -d .\class *.java

并在预构建事件中调用它。

然后我可以使用我的 grun.bat 模拟结果:

java -cp "./class;%CLASSPATH%" org.antlr.v4.gui.TestRig %*

但是,如果您在规则操作中包含了 c# 代码,这将不起作用,因为 java 文件中会有语法错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM