我这样定义了一个语法
grammar org.xtext.example.mydsl1.MyDsl with org.eclipse.xtext.common.Terminals
generate myDsl "http://www.xtext.org/example/mydsl1/MyDsl"
Model:
persons+=(Person | David)
greetings=(GreetDavid | Greet);
Person returns Person:
'Holla. My name is' name=ID //First "create" a person
;
David returns Person:
'Holla. My name is' name='David' //David is a special person. He has name David
;
GreetDavid returns Greeting:
'Hello' person=[David] //Only greet David with Hello
;
Greet returns Greeting:
'Hi' person=[Person] //Greet other persons with Hi
;
当然,XText抱怨David不是已知类型:“无法解析类型为空”
我怎么才能简单地告诉XText David是一个将被命名为“David”的人呢?
我不想更改Ecore并专门为David创建一个类。
提前谢谢你
1条答案
按热度按时间mw3dktmi1#
您可以使用数据类型规则。例如: