2016-04-21 36 views
0

在grako中,可以使用以下name:e將名稱的結果添加到AST中作爲關鍵字。例如,當從grako翻譯時,XText中的節點標籤/鍵

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行爲,但沒有取得多大成功。

+0

不是一個答案,但值得注意的是,在最近的Grako版本中可以這樣寫:''var:','。{ID}'' – Apalala

回答

1

使用您的解決方案,只有最後一個ID將在AST中可用。我假設var應該是一個包含所有ID的多值特徵,而不僅僅是最後一個。這可以表示爲

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

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