我是Xtext的新手并且遇到了一个简单的Xtext程序问题:
我的语法看起来像这样:
grammar org.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.common.Terminals
generate domainmodel "http://www.xtext.org/example/domainmodel/Domainmodel"
Library:
(books+=Book)*;
Book:
'Book'
isbn=ID
title=STRING
(subtitle=STRING)?
pages=INT
('sequelof' sequelof=[Book])?
('hardcover'|'softcover');
我的脚本看起来像这样
Book J123 "LotR1" "The Fellowship" 608 hardcover
Book J124 "LotR2" "Two Towers" 510 sequelof J123 hardcover
但" J123"在第二行是红色下划线,它表示"无法解决对Book' J123'"
的引用Everthing else工作正常,例如Content Assist(Strg + Space)
也许你可以帮助我:)
答案 0 :(得分:2)
默认情况下,引用适用于name
属性。即您需要将语法更改为以下内容:
grammar org.xtext.example.domainmodel.Domainmodel with
org.eclipse.xtext.common.Terminals
generate domainmodel "http://www.xtext.org/example/domainmodel/Domainmodel"
Library:
(books+=Book)*;
Book:
'Book'
name=ID
title=STRING
(subtitle=STRING)?
pages=INT
('sequelof' sequelof=[Book])?
('hardcover'|'softcover');
如果您不想这样做,可以实施IQualifiedName
提供程序,以便使用isbn
属性计算名称。