我想要做的,是修改了一下基本的entity
DSL例子,所以它支持原语,让人觉得这是可以做到:
entity Dog {
name : String
}
entity Person {
name : String
dog : Dog
}
使得成员的类型可以是到另一个实体的名称的引用,或预定义的原语。 我也在寻找一种方式,所以内容有助于两者的原语和实体名称所生成编辑器。
这里是我的.xtext
至今:
Model:
(entites+=Entity)*;
Entity:
'entity' name=ID '{'
(members+=Member)*
'}';
AbstractType:
Entity | PrimitiveType;
PrimitiveType:
name='Integer' | name='String';
Member:
(many?='many')? name=ID ':' (type=[AbstractType]);
在这种情况下, Integer
和String
由编辑为关键字的认可,但它们标记为错误,与消息:
不匹配输入“整数”期待RULE_ID
我试着用了这个问题的解决方案: 定义XTEXT语法中基元 ,其中一半是体面的,因为原语未标记为错误,但没有内容帮助他们。
那么,什么是该做的正确方法是什么?