当新建一个Xtext工程后,会自动打开Entities.xtext文件,这里面是一些语言的语法定义。
新建一个工程后一般都包括了如下三个工程:
• org.example.entities 这是主工程,里面包含着一些语言定义和所有的运行组件
is the main project that contains the grammardefinition and all the runtime components that are independent from the UI
• org.example.entities.tests 包含的是测试单元
• org.example.entities.ui contains 包含的是界面
在.xtext文件中进行语法定义:
//声明了这门语言的名字,它与所有的.xtext文件相关联
grammar org.example.entities.Entities with org.eclipse.xtext.common.
Terminals
//定义了一些生成EMF的规则
Model:
greetings+=Greeting*;
Greeting:
'Hello' name = ID '!';
这些才是真正的语法规则
Model: entities += Entity*;
表明我们声明:Entities DSL程序是一个Entity的集合,其中*表示任意个(包括0个),"+="隐含着这是一个集合,因此一个程序可以是空的或者包含0个Entity
If we wanted our programs to contain at least one Entity, we should have used the operator + instead of *.
Entity的格式是:
Entity:
'entity' name = ID ('extends' superType=[Entity])? '{'
attributes += Attribute*
'}'
;
有三个关键字entity extends {}
因此说一个有效的Entity必须符合以下格式:
entity nameEntity
详情可以可以参考Xtext官网: