Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xtextdsl中包含Java代码块?_Java_Dsl_Xtext - Fatal编程技术网

如何在xtextdsl中包含Java代码块?

如何在xtextdsl中包含Java代码块?,java,dsl,xtext,Java,Dsl,Xtext,在Xtext语法中,我可以使用XExpression/XBlockExpression类型包含Xbase代码块。我如何对Java代码块执行同样的操作?包含的java稍后应包含在从DSL构造生成的java中。不可能直接包含java代码块(除非您准备编写完整的java语法和相应的工具支持,例如变量解析或代码生成) 但是,可以使用模型推断器中的内置Xtext服务或使用Xbase编译器将Xbase代码块转换为Java代码块。也可以简单地用XBaseTranslator类解释它 最后,如果您真的需要Jav

在Xtext语法中,我可以使用
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中,因为它依赖于不同的技术。总之,通过引入一种新的语言,可以更容易地提供有用的工具。