我在寫一個Xtext語法,我想支持在我的目標語言中使用變量或參數的交叉引用。我怎樣才能寫出對兩件事之一的引用?
所以目標語言看起來像:
function(p1) {
x1 = eat(p1) // line 1
x2 = eat(x1) // line 2
}
就因爲這一點,我已經定義:
Instruction:
name=Value '=' 'eat' '(' ref=[Instruction|Value] ')'
這適用於第2行,但沒有第1行,因爲一個參數是不是指令。我試圖將其定義爲:
Instruction:
name=Value '=' 'eat' '(' ref=([Instruction|Value] | [Parameter|Value]) ')'
或者這個的各種變化 - 例如,使用單一的Ref
規則可能是兩種可能的參考可能性之一 - 但所有這些都被Xtext拒絕。這是可行的,如果是這樣,如何?我想另一種方法是定義一個代表參數和指令的單個元素,然後引用它,但我不知道如何做到這一點,而不允許語法或整個指令出現在參數列表中)
我還沒有深入研究xtext的代碼,只有語法到目前爲止,但如果你描述的是唯一的解決方案,那麼它看起來像我沒有選擇。 – Oak 2012-07-17 11:39:52