java - 将 xtext 编辑器支持与外部 ANTLR 解析器链接起来

标签 java antlr xtext stringtemplate

我当前的项目(将其命名为 IoTSuite)采用高级规范、解析它们并生成 Java 和 Android 代码。在这个项目中,我编写了 ANTLR 语法来解析高级规范,并使用 StringTemplate 作为代码生成器。

但是,由于良好的编辑器支持和语法着色功能,我使用了 xtext 语法(与 ANTLR 语法相同,但它是用 xText 编写的)。现在,我执行以下三个步骤:

第 1 步:我编写了 xtext 语法,如下图所示。

Image 1

第 2 步:现在,我从 MyDsl.xtext 语法生成支持工件,然后将整个项目作为 Eclipse 应用程序运行,如下图所示。

enter image description here

第 3 步:此后,Eclipse 应用程序运行,允许我编写高级规范,如下图所示。

enter image description here 现在,我的要求是 - 我想使用 IoTSuite 项目中编写的 ANTLR 语法来解析高级规范,如步骤 3 所示。 简而言之,我的要求是将 xtext 编写的高级规范与 ANTLR 解析器连接起来。我怎样才能做到呢?如果您需要更清晰的解决方案,请告诉我。

最佳答案

Xtext 生成自己的 ANTLR 语法。该语法还使用代码来实例化该语法的 AST。生成的解析器无法交换。

您可能想要做的是在保存资源时调用您自己的 ANTLR 解析器。 IGenerator Hook 可用于调用解析器和生成器。

还请考虑使用 Xtend 进行代码生成,它比 StringTemplate 好得多,并且与 Xtext 基础设施顺利集成。 SDK 附带的 Xtext 状态机示例展示了如何执行此操作(以及使用 IGenerator 接口(interface))。

关于java - 将 xtext 编辑器支持与外部 ANTLR 解析器链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684328/

相关文章:

java - 可绘制动画结束时进入新 Activity

java - JDK 1.7 允许自定义 taglet 的名称*以点开头*。 JDK 1.8 禁止它?

java - Hibernate @Version 字段错误

javascript - 使用 ANTLR 解析 JavaDoc 注释

java - Eclipse 将 XText 编辑器添加到透视图

java - JSONObject JSON 数组长度

java - 如何在 ANTLR 中分离出 block 的开始和结束标记

antlr - 有没有办法生成单元测试来测试我的语法

java - Xtext 语法匹配某些 xml 标签之间的任何输入

java - XTEND - 资源管理