我当前的项目(将其命名为IoTSuite)采用高级规范,解析它们,并在Java和Android中生成代码。在这个项目中,我编写了ANTLR语法来解析高级规范,我已经将StringTemplate用于代码生成器。
但是,由于良好的编辑器支持和语法着色功能,我使用了xtext语法(与ANTLR语法相同,但它是用xText编写的)。现在,我执行以下三个步骤:
步骤1:我已经编写了xtext语法,如下图所示。
步骤2:现在,我从MyDsl.xtext
语法生成支持工件,然后将整个项目作为Eclipse Application运行,如下图所示。
步骤3:在此之后,Eclipse应用程序运行,允许我编写高级规范,如下图所示。
现在,我的要求是 - 我想使用IoTSuite项目中编写的ANTLR语法解析高级规范,如步骤3所示。 简而言之,我的要求是将用xtext编写的高级规范与ANTLR解析器连接起来。我怎么能这样做?如果您需要更清晰的解决方案,请告诉我。
答案 0 :(得分:1)
Xtext生成自己的ANTLR语法。该语法还使用代码来实例化语法的AST。生成的解析器无法交换。
您可能想要做的是在保存资源时调用自己的ANTLR解析器。 IGenerator钩子可用于调用解析器和生成器。
请考虑使用Xtend进行代码生成,它比StringTemplate好得多,并且可以与Xtext基础架构顺利集成。随SDK附带的Xtext的Statemachine示例显示了如何执行此操作(以及使用IGenerator接口)。