我不太確定我瞭解xText中的範圍過程是如何工作的,它與幾個模型文件一起工作。 在一個文件中引用工作正常,只需要沿着ref=[referencedObject | ID]
這一行指定一條規則,我就可以獲得自動完成以開箱即用;但是,我似乎無法訪問另一個文件中的任何EObject
。我發現的信息並不是非常明確,我不明白我應該怎麼做才能使它工作...Xtext - 在不同文件中作用域
我試圖通過QualifiedName
引用,但我根本沒有得到哪裏我應該讓參考實際發生 - 我的單獨文件如何互相訪問。
編輯:代碼
File returns File:
UIRule | EventRule
;
QualifiedName:
ID ('.' ID)*
;
/* First file */
UIRule returns Ui:
{Ui}
"ui"
(screens+=ScreenRule (screens+=ScreenRule)*)?
;
ScreenRule returns Screen:
name=ID "as" "screen"
'{'
(elements+=GUIElementRule)*
'}'
;
GUIElementRule returns Button:
name=ID "as" "element"
;
/* Second file */
EventRule returns Event:
{Event}
"event"
rules+=RuleRule*
;
RuleRule returns Rule:
"on" "{" on=ButtonPressRule "}"
"do" "{" do=ActionRule "}"
;
ButtonPressRule returns Pressed:
"press" "[" source=[GUIElement | QualifiedName] "]"
;
ActionRule returns Open:
"open" "[" screen=[Screen | QualifiedName] "]"
;
這就是我已經做的,但我一定犯了一個錯誤,有些參考不起作用。 「無法解析對...的引用」錯誤,等等。 我想參考的對象有'name' A,它包含在對象B中,它自己在對象C(文件的根)內。 QualifiedName是否是C.B.A?根對象是否需要命名? 'ScopeProvider'尚未修改。 –
@ S.W。首先:我修正了關於'QN'的語法。第二:你的例子的QualifiedName將是'C.B.A'。在不修改ScopeProvider的情況下,您必須使用該名稱作爲參考。您不需要命名根對象。除此之外:如果沒有更多的_code_就診斷問題是不可能的。自然語言描述不起作用。有關詳細信息,請參閱http://sscce.org/。 –
我添加了一個代碼示例。第二個文件的引用都不起作用。 –