2016-04-21 8 views
0

In grako kann man das folgende name:e verwenden, um das Ergebnis von e zum AST unter Verwendung des Namens als Schlüssel hinzuzufügen. Zum BeispielKnoten Label/Schlüssel in XText beim Übersetzen von grako

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

Was wäre eine gute Übersetzung von diesem zu Xtext? Ich versuchte

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

, die nicht versagt wird, sondern die folgende Warnung Anhebung

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'. 

Ich denke, ich versuche das name Verhalten zu imitieren, haben aber nicht viel Erfolg.

+0

Keine Antwort, aber es ist erwähnenswert, dass in den letzten Versionen von Grako geschrieben werden kann: '' var: ','. {ID} '' – Apalala

Antwort

1

Mit Ihrer Lösung wird nur die letzte ID im AST verfügbar sein. Ich nehme an, var sollte eine mehrwertige Funktion sein, die alle IDs enthält, nicht nur die letzte. Dies kann als

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

Im resultierenden AST ausgedrückt werden var ist eine Liste von IDs.