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

使用您的解决方案,AST 中只有最后一个 ID 可用。我认为var应该是一个包含所有 ID 的多值特征,而不仅仅是最后一个。这可以表示为

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

在生成的 ASTvar中是一个 ID 列表。

于 2016-04-25T07:08:16.547 回答