Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将xtext编辑器支持与外部ANTLR解析器链接_Java_Antlr_Xtext_Stringtemplate - Fatal编程技术网

Java 将xtext编辑器支持与外部ANTLR解析器链接

Java 将xtext编辑器支持与外部ANTLR解析器链接,java,antlr,xtext,stringtemplate,Java,Antlr,Xtext,Stringtemplate,我当前的项目(名为IoTSuite)采用高级规范,解析它们,并用Java和Android生成代码。在这个项目中,我编写了ANTLR语法来解析高级规范,并使用StringTemplate作为代码生成器 但是,由于良好的编辑器支持和语法着色功能,我使用了xtext语法(与ANTLR语法相同,但它是用xtext编写的)。现在,我执行以下三个步骤: 步骤1:我已经编写了xtext语法,如下图所示 步骤2:现在,我从MyDsl.xtext语法生成支持工件,然后作为Eclipse应用程序运行整个项目,如下

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

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

步骤1:我已经编写了xtext语法,如下图所示

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

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

现在,我的要求是——我想使用IoTSuite项目中编写的ANTLR语法解析高级规范,如步骤3所示。
简言之,我的需求是将用xtext编写的高级规范与ANTLR解析器连接起来。我怎么做呢?如果您需要更清晰的解决方案,请让我知道

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

您可能希望在保存资源时调用自己的ANTLR解析器。IGenerator钩子可用于调用解析器和生成器

请考虑使用XCATED代码生成,这比StrugT模板好得多,并且与XTraseBasic集成得很好。SDK附带的Xtext的Statemachine示例演示了如何做到这一点(以及如何使用IGenerator接口)