[英]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.