在执行 java -cp C:\Tools\Libraries\antlr4-csharp-complete.jar org.antlr.v4.Tool Hello.g4 时,我得到以下文件:
HelloBaseListener.cs
Hello.tokens
HelloListener.cs
HelloParser.cs
HelloLexer.tokens
HelloLexer.java
我的问题是关于最后一个文件。为什么是 .java 而不是 .cs?我正在使用 antlr4-csharp-4.0.1-SNAPSHOT-complete.jar
语法是:
grammar Hello; // Define a grammar called Hello
options
{
language=CSharp_v4_0;
}
r : 'hello' ID ; // match keyword hello followed by an identifier
ID : [a-z]+ ; // match lower-case identifiers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines, \r (Windows)
你好山姆!我只有 Visual Studio Express,所以我无法安装扩展。这是我正在使用的代码,但它仍在生成 HelloLexer.java。
AntlrClassGenerationTaskInternal a = new AntlrClassGenerationTaskInternal();
List<String> files = new List<string>();
files.Add(@"C:\Tools\Grammars\Hello.g4");
a.JavaVendor = "JavaSoft";
a.ToolPath = @"C:\Tools\Libraries\antlr4-csharp-complete.jar";
a.JavaInstallation = "Java Development Kit";
a.SourceCodeFiles = files;
a.OutputPath = @"C:\Tools\Grammars\CSharp\";
a.Execute();
顺便说一句,Visual Studio 抱怨,因为它无法找到 Antlr4ClassGenerationTask.IsFatalException(ex)
感谢您在这方面的帮助。
问候,奥马尔。