0

grako では、次のようname:eにして e の結果を名前をキーとして AST に追加できます。例えば

var_def
    =
    var+:ID {',' var+:ID}*

これを Xtext に翻訳すると、どのようなものがよいでしょうか? 私は試した

var_def:
     var=ID (',' var=ID)*;

これは失敗していませんが、次の警告が発生しています

Multiple markers at this line
- The possibly assigned value of feature 'var' may be overridden
   by subsequent assignments.
- This assignment will override the possibly assigned value of
   feature 'var'.

私はname動作を模倣しようとしていると思いますが、あまり成功していません。

4

1 に答える 1

1

あなたのソリューションでは、最後の ID のみが AST で利用可能になります。var最後のIDだけでなく、すべてのIDを保持する多値機能であるべきだと思います。これは次のように表現できます。

var_def:
    var+=ID (',' var+=ID)*;

結果の ASTvarには、ID のリストがあります。

于 2016-04-25T07:08:16.547 に答える