0

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

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

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

4

1 回答 1

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);
于 2012-11-20T18:13:44.707 回答