J'ai une règle simple ANTLR:Gestion des multiples valeurs de retour dans ANTLR
title returns [ElementVector<Element> v]
@init{
$v = new ElementVector<Element>() ;
}
: '[]'
| '[' title_args {$v.add($title_args.ele);} (',' title_args {$v = $title_args.ele ;})* ']'
;
avec title_args étant:
title_args returns [Element ele]
: author {$ele = new Element("author", $author.text); }
| location {$ele = new Element("location", $location.text); }
;
Essayer de compiler que je me confronté à une erreur 127 dans la règle de titre : title_args est une référence non unique.
J'ai suivi la solution donnée à une autre question similaire sur ce site web (How to deal with list return values in ANTLR) mais cela ne semble fonctionner qu'avec des règles lexicales.
Existe-t-il un moyen spécifique de contourner ce problème?
Merci, Christos
Ceci est un hack et un mauvais conseil. La bonne réponse est celle ci-dessus, déclarez un nom de variable pour chaque production en utilisant = puis faites-en référence. –
user430788