从 grako 翻译时 XText 中的节点 label/key

node label/key in XText when translating from grako

在 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 行为,但没有取得多大成功。

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

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

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