该文用于使用Gemoc这一基于Eclipse的特定领域语言(Domain Specific Language,dsl)创建平台进行创建dsl的操作步骤,参考了使用Gemoc创建一个fsm。使用的Gemoc版本是2.4.0-SNAPSHOT. 由于步骤繁琐,本文仅用于提醒自己以及同学在遗忘之际回忆之用,不会提供过多细节讲解,还望周知。
1.首先创建Ecore元模型,同时也称作是dsl的抽象语法
2.在编辑好ecore文件后,即定义好dsl中的必要元素后,右键点击model.genmodel,并Generate All。系统会自动生成edit editor tests 三个项目。
3.新建一个Viewpoint Specification Project项目,并修改description下的odesign文件,在这里定义dsl的具体语法。
4.新建一个GEMOC Sequential xDSML Project项目,叫做ecnu.csl
注意在创建过程中,在最后步骤中,要选择Ecore file location,这里选择我们刚刚定义好的Ecore项目中的model.ecore文件,K3 DSA Project name此时可以不选择。
创建完成后,打开src目录下的.elange文件,为了使该组装语言能够被其他项目继承,在language 之前加上external 关键字。并右键点击Melange,进行clean All, Generate All。
5.接下来创建第二个GEMOC Sequential xDSML Project项目ecnu.xcsl,第一步与4类似。然后添加对上一个xDSML ProjectMelange文件的依赖,如下图所示。
此时项目会报错,因为没有添加对ecnu.csl的依赖,现在添加,方法是通过META-INF文件下的MANIFEST.MF添加eclipse插件依赖。
之后,我们创建DSA项目,即dsl的操作语义。右键Xcsl.melange,添加DSA project,如下图所示。(注意在创建过程中,要选择正确的Ecore model文件)
在新建的DSL项目中,编写操作语义。并根据需要添加外部的插件依赖。(因为该项目是作为eclipse的插件进行运行的,不能通过传统的classpath添加jar包依赖,而应该通过META-INF文件下的MANIFEST.MF添加eclipse插件依赖<把想依赖的jar包发布为eclipse插件>)
6.回到ecnu.xcsl项目,选择.melange文件,通过alt+/快捷键添加对DSA的依赖,如下图所示
最后,我们对ecnu.xcsl右键melange,并clean all,generate all。
7.至此,整个语言工作台的建模工作就完成了。此时可以启动另一个eclipse平台,试试添加使用dsl建模的模型。
1.新建一个Modeling Project
2.在该项目中新建一个Model Model,如下图所示。Model Model是我们在创建ecore modeling project时指定的。
注意在Model Object选择步骤,要选择ecore 元模型的根结点,在我们的元模型中,Cosimulation System是根结点。
4.右键项目,添加Viewpoints Selection
5.右键项目,添加Representation Wizard
6.然后就可以在自动心打开的.aird文件进行模型编辑了。
以上就是本文内容,dsl能够对领域内的知识进行高度抽象,简化了建模人员的操作,提高了建模效率,对于一切想要脱离底层实现并进行高级抽象,以便让更多的领域专家能够参与模型设计、开发的工作人员来说,都是一个不错的选择。