java - Xtext运行时编译

标签 java parsing dsl xtext

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

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

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

最佳答案

是的,这是完全可能的,而且实际上非常简单。所有核心组件(即非 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);

关于java - Xtext运行时编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442808/

相关文章:

java - 在 Intellij IDEA 13 中玩框架 2 运行单元测试

parsing - 如何解决 LR(1) 文法定义中的歧义?

java - 如何在 Eclipse 中将 Javadoc 导出为 .jar 文件?

java - 用 Java 解析 Excel 文件哪个开源更好?

java - 当架构未知时,在 Java 中解析来自本地主机提取服务器的 DBpedia JSON

java - 注释是 Java 中的某种 DSL 吗?

ruby - 如何在 Ruby 中创建这个小型 DSL?

Scala 编译器无法推断类型参数

java - 弹出窗口的宽度和高度 = 0

java - 这是根据规范进行的 Java 双重解析行为吗?