私は 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
、2 つの可能な参照の可能性のうちの 1 つである単一のルールを使用する - しかし、これらはすべて Xtext によって拒否されます。これは実行可能ですか? もしそうなら、どのように?
(別の方法として、パラメーターと命令の両方を表す単一の要素を定義してから参照することも考えられますが、構文または命令全体をパラメーター リストに表示させずにそれを行う方法がわかりませんでした。 )