Xtext运行时编译

时间:2012-11-18 17:50:01

标签: java parsing dsl xtext

我正在尝试理解Xtext,并了解它是否符合我的需求。我正在寻找一种工具,它允许我创建一个DSL,可以在执行期间在我的应用程序中进行编译和评估。

Xtext似乎是一个非常好的工具,因为它为此提供了很多东西(语法编辑器,IDE集成,解析器生成器等)。据我所知,Xtext可以为我生成解析器和IDE扩展,但是如果我需要编译器,我必须自己编写或者创建Java映射,这导致生成的Java源文件,我可以编译。

我没有看到的是,是否可以将Xtext的解析器和生成器嵌入到我的应用程序中,并在运行时编译在我的DSL中编写的脚本而无需预编译它们。目标是通过我的应用程序发布脚本,使发布后的更改成为可能。

1 个答案:

答案 0 :(得分:2)

是的,这是完全可能的,实际上很容易。所有核心组件,即非IDE功能,都独立于Eclipse。文档中的示例Java代码显示了如何执行此操作。 这基本上是一件事或

// creating the injector
Injector injector = new MyLanguageStandaloneSetup().createInjectorAndDoEMFRegistration()

// obtain a resource set
XtextResourceSet resourceSet = injector.get(XtextResourceSet.class);

// load file
Resource resource = resourceSet.getResource(URI.create("path/to/file.mylanguage"), true);

// obtain root AST element
MyModel model = (MyModel) resource.getContents().get(0);