首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建Lexer/Parser?

如何创建Lexer/Parser?
EN

Stack Overflow用户
提问于 2019-10-07 06:37:09
回答 2查看 2.1K关注 0票数 0

所用:

2019

要安装ANTLR,我使用- 隧道视觉实验室/antlr4cs // Github.com

我在这里学了语法- antlr/grammars v4 // Github.com

语法:

  • CSharpLexer.g4;
  • CSharpParser.g4;
  • CSharpPreprocessorParser.g4;

我做了:

  1. 安装了ANTLR;
  2. 创建一个WinFrom应用程序;
  3. 增加语法; 右键单击解决方案资源管理器中的项目或文件夹,然后选择 AddExisting Element.

问题.

如何创建Lexer/Parser?

说明中说应该创建额外的类,但是这种情况不会发生。

更新1。

我做了:

  1. 我关闭了2019年;
  2. 我在Visual 2017中启动了该项目;
  3. 我删除了文件:
  • CSharpLexer.g4;
  • CSharpParser.g4;
  • CSharpPreprocessorParser.g4;
  1. 我点击了“添加新项目”;
  2. 我选择了"ANTL 4 Lexer"; 注:在"VS-2019“中没有"ANTL”模板。6.我把名字设为"CSharpLexer";
  3. 我点击“添加”;
  4. 结果:
  • VS创建了一个文件- CSharpLexer.g4
  • VS创建了一个文件- CSharpLexer.g4.cs
  • VS为文件CSharpLexer.g4设置属性“assembly "=”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"?

EN

回答 2

Stack Overflow用户

发布于 2019-10-07 07:22:04

通过将Antlr包添加到VS项目中,包括一个语法文件并构建该项目,输出文件(lexer/Parser)将自动生成在语法文件所在的同一个文件夹中。

然后,您应该使用VS“添加现有项”将生成的cs文件添加到项目中,以便将它们编译为"C#“文件。

票数 1
EN

Stack Overflow用户

发布于 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项目中。

代码语言:javascript
复制
C:\ikvmc.exe -target:library csharp-lexer-parser.jar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58264499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档