我当前的项目(命名为IoTSuite)采用高级规范,解析它们,并用Java和Android生成代码。在这个项目中,我编写了ANTLR语法来解析高级规范,并使用StringTemplate作为代码生成器。
但是,由于良好的编辑器支持和语法着色特性,我使用了xtext语法(与ANTLR语法相同,但它是用xText编写的)。现在,我执行以下三个步骤:
步骤1:我已经编写了xtext语法,如下图所示。
步骤2:现在,我从MyDsl.xtext
语法生成支持工件,然后将整个项目作为Eclipse Application运行,如下图所示。
步骤3:之后,Eclipse应用程序运行,允许我编写高级规范,如下图所示。
现在,我的要求是-我希望使用在IoTSuite项目中编写的ANTLR语法来解析高级规范,如step3所示。简而言之,我的要求是将用xtext编写的高级规范与ANTLR解析器连接起来。我怎么能做到呢?如果您需要更清晰的解决方案,请让我知道。
发布于 2017-04-04 08:15:48
Xtext生成自己的ANTLR语法。该语法还使用代码来实例化该语法的AST。无法交换生成的解析器。
您可能希望在保存资源时调用您自己的ANTLR解析器。IGenerator钩子可以用来调用解析器和生成器。
请考虑使用Xtend来生成代码,这比StringTemplate要好得多,并且可以与Xtext基础设施顺利集成。软件开发工具包附带的Xtext的Statemachine示例展示了如何做到这一点(以及如何使用IGenerator接口)。
https://stackoverflow.com/questions/33684328
复制