如何在Xtext DSL中包含Java代码块?

时间:2012-08-30 12:04:14

标签: java dsl xtext

在Xtext语法中,我可以使用XExpression / XBlockExpression类型包含Xbase代码块。我如何使用Java代码块做同样的事情?随后的java应该包含在从DSL构造生成的Java中。

2 个答案:

答案 0 :(得分:1)

不可能直接包含Java代码块(除非您准备编写完整的Java语法和相应的工具支持,例如变量分辨率或代码生成)。

但是,可以使用模型推导者中的内置Xtext服务或使用XbaseCompiler将Xbase代码块转换为Java代码块。也可以使用XbaseInterpreter类简单地解释它。

最后,如果您真的需要Java代码块,可以将它们写在.java文件中,并使用JvmIdentifiableElements引用它们。

答案 1 :(得分:1)

您现在可以使用JBase(https://github.com/LorenzoBettini/jbase)进行此操作。 JBase是专门为您所描述的用例而创建的(请参见https://dl.acm.org/citation.cfm?id=2972217),并且可以通过扩展JBase而不是XBase进行细微的改动。