我在使用xtext交叉引用时遇到了一些问题 这是一个非常简单的语法:
grammar org.xtext.example.mydsl1.Test with org.eclipse.xtext.common.Terminals
generate test "http://www.xtext.org/example/mydsl1/Test"
Model: block=Block? cs+=Company* ;
Block: '{' g=[Employee] '}';
Company: 'Company' name=ID
'{' es+= Employee* '}';
Employee: 'Employee' name=ID ';' ;
这是我的dsl:
{ Pooyan }
Company Sony{
Employee Pooyan;
Employee John;
}
它始终显示“无法解析对员工'Pooyan'的引用。” 有人可以帮帮我吗? 我不知道......
答案 0 :(得分:4)
Pooyan的完全限定名称是Sony.Pooyan。由于块中的交叉引用“g”是在另一个包含中定义的,因此您必须进行小的自定义以将其放在范围内。
答案 1 :(得分:1)
加入Sebastians'回答让它更精确:你需要改变" fragment = exports.QualifiedNamesFragment auto-inject {}" to" fragment = exports.SimpleNamesFragment"在xtext项目的相应.mwe2文件中。
希望这有帮助。