Ich habe eine einfache Regel in ANTLR:Handhabung mehr Rückgabewerte in ANTLR
title returns [ElementVector<Element> v]
@init{
$v = new ElementVector<Element>() ;
}
: '[]'
| '[' title_args {$v.add($title_args.ele);} (',' title_args {$v = $title_args.ele ;})* ']'
;
mit title_args sein:
title_args returns [Element ele]
: author {$ele = new Element("author", $author.text); }
| location {$ele = new Element("location", $location.text); }
;
Dem Versuch, zu kompilieren, dass ich mit einem 127 Fehler in der Titel Regel konfrontiert erhalten : title_args ist eine nicht eindeutige Referenz.
Ich habe die Lösung einer anderen ähnlichen Frage auf dieser Website (How to deal with list return values in ANTLR) gefolgt, aber es scheint nur mit lexikalischen Regeln zu arbeiten.
Gibt es einen bestimmten Weg, um es zu umgehen?
Danke, Christos
Dies ist ein Hack und schlechter Rat. Die richtige Antwort ist die obige, deklarieren Sie einen Variablennamen für jede Produktion mit = und verweisen Sie dann darauf. –
user430788