如何在xtextdsl中包含Java代码块?
在Xtext语法中,我可以使用如何在xtextdsl中包含Java代码块?,java,dsl,xtext,Java,Dsl,Xtext,在Xtext语法中,我可以使用XExpression/XBlockExpression类型包含Xbase代码块。我如何对Java代码块执行同样的操作?包含的java稍后应包含在从DSL构造生成的java中。不可能直接包含java代码块(除非您准备编写完整的java语法和相应的工具支持,例如变量解析或代码生成) 但是,可以使用模型推断器中的内置Xtext服务或使用Xbase编译器将Xbase代码块转换为Java代码块。也可以简单地用XBaseTranslator类解释它 最后,如果您真的需要Jav
XExpression
/XBlockExpression
类型包含Xbase代码块。我如何对Java代码块执行同样的操作?包含的java稍后应包含在从DSL构造生成的java中。不可能直接包含java代码块(除非您准备编写完整的java语法和相应的工具支持,例如变量解析或代码生成)
但是,可以使用模型推断器中的内置Xtext服务或使用Xbase编译器将Xbase代码块转换为Java代码块。也可以简单地用XBaseTranslator类解释它
最后,如果您真的需要Java代码块,您可以将它们写入.Java文件中,并使用JVM IdentifiableElements引用它们。您现在可以使用JBase()完成这项工作。JBase是专门为您描述的用例创建的(请参阅),可以通过扩展JBase而不是XBase来进行一些小的更改。这正是我所担心的。我知道xbase的功能,这有点遗憾,因为xbase到java可以工作,但java到java不能(尽管eclipse中已经提供了所有java工具支持):D背景想法是,我可以用附加功能“丰富”java,而不必在这里用另一个工具来打扰所有优秀的java开发人员“编程语言“学习。包含Java代码比看起来要困难得多——除非您不需要语法突出显示、内容辅助等奇特的功能。JDT具有非常高的性能,但几乎不可重用的工具,因此很难包含在Xtext中,因为它依赖于不同的技术。总之,通过引入一种新的语言,可以更容易地提供有用的工具。