Je suis en train d'essayer de faire ce que je pense être un simple passage de paramètre à une règle dans Antlr 3.3 :
grammaire rule_params;
options
{
output = AST;
}
rule_params
: extérieur;
extérieur : extérieur_id '[' inner[$outer_id.tree] ']';
inner[CommonTree parent] : inner_id '[' ']';
extérieur_id : '#'! ID;
inner_id : '$'! ID ;
ID : ('a'..'z' | 'A'..'Z') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_' )* ;
Donc le inner[CommonTree parent]
génère le suivant :
inner4=inner((outer_id2!=null?((Object)outer_id2.tree):null));
ce qui entraîne cette erreur :
La méthode inner(CommonTree) dans le type rule_paramsParser n'est pas applicable pour les arguments (Object)
Autant que je puisse le dire, c'est exactement la même chose que l'exemple dans le livre Antrl :
classDefinition[CommonTree mod]
(Emplacement Kindle 3993) - désolé je ne connais pas le numéro de page mais c'est au milieu du livre dans le chapitre 9, section intitulée "Creating Nodes with Arbitrary Actions".
Merci pour toute l'aide.
M