如何创建Lexer / Parser?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建Lexer / Parser?相关的知识,希望对你有一定的参考价值。
使用过:Visual Studio-2019
要安装ANTLR
,我要使用-tunnelvisionlabs/antlr4cs // Github.com
我在这里接受了语法-antlr/grammars-v4 // Github.com语法:-CSharpLexer.g4;-CSharpParser.g4;-CSharpPreprocessorParser.g4;
我做了:1.安装了ANTLR;2.创建一个WinFrom应用程序;3.增加语法;在解决方案资源管理器中右键单击项目或文件夹,然后选择Add
→Existing Element
。
问题。如何创建Lexer / Parser?这些说明说应该创建其他类,但是不会发生。
更新1。
我做了:1.我关闭了Visual Studio 2019;2.我在Visual Studio 2017中打开了该项目;3.我删除了文件:-CSharpLexer.g4;-CSharpParser.g4;-CSharpPreprocessorParser.g4;4.单击“添加新项”;5.我选择了“ ANTL 4 Lexer”;注意:“ VS-2019”中没有“ ANTL”模板。6.我将名称设置为“ CSharpLexer”;7.我点击“添加”;8.结果:-VS创建了一个文件-CSharpLexer.g4
;-VS创建了一个文件-CSharpLexer.g4.cs
;-为文件CSharpLexer.g4
的VS设置属性“对程序集的操作“ =“ Antlr4”。
问题。更新1。1.我说的对吗?2.在哪里可以获取数据来填写文件CSharpLexer.g4
?我可以从链接中的文件CSharpLexer.g4
中获取数据吗?https://github.com/antlr/grammars-v4/tree/master/csharp?3.是否以相同方式创建文件“ CSharpParser.g4”,“ CSharpPreprocessorParser.g4”?4.文件使用什么模板-“ CSharpPreprocessorParser.g4”?
通过将Antlr软件包(包括一个语法文件)添加到VS项目中并构建该项目,输出文件(词法分析器/解析器)将在与语法文件位于相同的文件夹中自动生成。
然后您应该使用VS“添加现有项”将生成的CS文件添加到您的项目中,以便可以将它们编译为“ C#”文件。
如果您无法通过@NirMH的建议进行测试,我强烈建议您首先尝试使用Java运行时,因为Java是ANTLR项目中的第一个公民。 https://github.com/antlr/antlr4/blob/master/doc/targets.md
无论您选择哪种目标语法(在C#中为目标语法),用Java运行时生成ANTLR4结果都比任何其他语言都稳定。我已经用JS,C#和Python生成器进行了测试,但是它们都不够稳定。 stable意味着,在非Java解析期间,您可能会遇到一个永恒的循环。
当然,您可以使用Java ANTLR运行时解析C#
文件。要生成词法分析器/解析器文件,请演练the tutorial。生成的结果是普通的.java
文件,因此您应该从它们创建自己的jar库文件。
我同意整个过程不是一键解决所有问题,但是语言处理总是很脏。
要在WinForm中调用jar
,可以使用IKVM nuget包,如下所述将jar
转换为dll
,然后将dll
添加到WinForm项目中。
C:ikvmc.exe -target:library csharp-lexer-parser.jar
以上是关于如何创建Lexer / Parser?的主要内容,如果未能解决你的问题,请参考以下文章
Antlr4 Can‘t load Hello as lexer or parser
Antlr4 Can‘t load Hello as lexer or parser