参考:
https://www.eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html
https://blog.csdn.net/donhao/article/details/7182792
datatype String
entity Blog {
title: String
many posts: Post
}
entity HasAuthor {
author: String
}
entity Post extends HasAuthor {
title: String
content: String
many comments: Comment
}
entity Comment extends HasAuthor {
content: String
}
Domainmodel :
elements += Type*
;
入口;
Donmainmodel包含任意数量(*)的 Type,且该 Type会被加到(+=)一个名为elements的特性中。
DataType:
'datatype' name = ID
;
Entity :
'entity' name = ID ('extends' superType = [Entity])? '{'
features += Feature*
'}'
;
Feature:
(many ?= 'many')? name = ID ':' type = [Type]
;
赋值有下面几种方式:
添加Package和Import,可将代码分到不同的文件中。 比较好理解。
PackageDeclaration:
'package' name = QualifiedName '{'
(elements += AbstractElement)*
'}'
;
AbstractElement:
PackageDeclaration | Type | Import
;
QualifiedName:
ID ('.' ID)*
;
QualifiedName有一点特殊,其不包含任何赋值,因此仅作为数据类型规则,返回一个字符串。因此, Package的特性 name是 String类型。