所用:
2019
要安装ANTLR,我使用- 隧道视觉实验室/antlr4cs // Github.com
我在这里学了语法- antlr/grammars v4 // Github.com
语法:
我做了:
Add→Existing Element.问题.
如何创建Lexer/Parser?
说明中说应该创建额外的类,但是这种情况不会发生。




更新1。
我做了:
CSharpLexer.g4;CSharpLexer.g4.cs;CSharpLexer.g4设置属性“assembly "=”Antlr4“。问题。更新-1.
CSharpLexer.g4文件?
我可以从位于链接CSharpLexer.g4 https://github.com/antlr/grammars-v4/tree/master/csharp的文件中获取数据吗?


发布于 2019-10-07 07:22:04
通过将Antlr包添加到VS项目中,包括一个语法文件并构建该项目,输出文件(lexer/Parser)将自动生成在语法文件所在的同一个文件夹中。
然后,您应该使用VS“添加现有项”将生成的cs文件添加到项目中,以便将它们编译为"C#“文件。
发布于 2019-10-07 08:27:01
如果您没有按照@NirMH的建议进行测试,那么我强烈建议您首先尝试使用运行时,因为是ANTLR项目中的第一个公民;https://github.com/antlr/antlr4/blob/master/doc/targets.md。
无论您选择什么目标语法(在您的例子中是C#),使用ANTLR4运行时生成ANTLR4结果都比任何其他语言都稳定。我已经用JS、C#和Python生成器进行了测试,但它们都不够稳定。稳定的意思是,在非java的解析过程中,您可能会有一个永恒的循环。
当然,您可以使用Java运行时解析C#文件。若要生成lexer/解析器文件,请演练本教程。生成的结果是普通的.java文件,因此您应该从它们创建自己的jar库文件。
我同意整个过程不是一键解决,而是语言处理总是肮脏的。
要在WinForm中调用WinForm,您可以使用IKVM nuget包将jar转换为dll,然后将dll添加到WinForm项目中。
C:\ikvmc.exe -target:library csharp-lexer-parser.jarhttps://stackoverflow.com/questions/58264499
复制相似问题