Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
IDEA-MPS和Eclipse-Xtext的实际用途是什么_Eclipse_Xtext_Mps - Fatal编程技术网

IDEA-MPS和Eclipse-Xtext的实际用途是什么

IDEA-MPS和Eclipse-Xtext的实际用途是什么,eclipse,xtext,mps,Eclipse,Xtext,Mps,这两个框架都处理元模型: (日食) (JetBrain) 您是否有使用这些工具进行元模型转换的实际应用示例? 关于,举例说明了一种用法,即创建自己的编程语言和领域特定语言(DSL) 一旦有了一种语言,您就需要对其进行处理,这意味着通常要将您的模型转换为另一种表示形式。 负责此转换的设施称为生成器,由一组转换模板(例如,XPand)和一些执行这些模板的代码组成。在某些情况下,读入模型并应用转换生成代码 : ,它附带一个点对点解释器(现在使用为点语法生成的Xtext开关API),支持特殊点边缘定

这两个框架都处理元模型:

  • (日食)
  • (JetBrain)
您是否有使用这些工具进行元模型转换的实际应用示例?

关于,举例说明了一种用法,即创建自己的编程语言和领域特定语言(DSL)

一旦有了一种语言,您就需要对其进行处理,这意味着通常要将您的模型转换为另一种表示形式。
负责此转换的设施称为生成器,由一组转换模板(例如,
XPand
)和一些执行这些模板的代码组成。在某些情况下,读入模型并应用转换生成代码

:

,它附带一个点对点解释器(现在使用为点语法生成的Xtext开关API),支持特殊点边缘定义


关于MPS,您有,
像这样:


(来源:)

我们使用MPS创建了一个整体。代码生成不是目标,而是指获得一些可执行代码。目标是为开发人员提供一个工具,使他们能够以最小的工作量创建DSL


MPS的酷之处在于它还为您的语言提供了一个IDE。您创建的不同DSL是兼容的,也就是说,您可以创建使用闭包扩展Java的DSL和另一个启用外部方法的DSL,这些扩展将协同工作

我认为XText的主要用途首先是根据您定义的语法创建一个DSL,并为您自动生成一个eclipse工作台。其次,它可以将DSL中编写的scrpit转换为java。XText2中的内置表达式是一个加号。
该框架为您提供了一个免费的IDE来支持您编写您创建的DSL。DSL是ulimate提供的产品。它可以用来从现实世界中抽象规则和逻辑。例如,在我们的项目中,产品配置规则。只有专家知道它们,所以他们会在您创建的DSL中编写一些。

注意:a将说明两种框架的实际示例。关于差异,请看代码生成是最终目标还是我看得不够远?@S.R:不,最终目标仍然是模型转换。您将一个AST(抽象语法树)转换为另一个,这将为您提供:代码(代码生成)、节点(第一个示例中的节点图)或任何其他表示目标模型的AST。您能帮我找到java的闭包扩展吗?我找不到一些如何扩展java synthax的例子。要在MPS中使用java闭包,只需导入语言jetbrains.MPS.baseLanguage.closures