J'écris un programme avec YACC/Flex et je suis en utilisant le code suivant (pas exactement la même chose parce que je mélange le code d'un autre fichier):types pour plusieurs membres
DataType datat;
%union {
int integer;
char *string;
DataType type;
}
Integer { yylval.type = INTEGER; return INT; }
%type <type> INT
data : INTNUM { yylval.type = INTEGER; }
Ensuite, si j'écris quelque chose comme ceci:
foo : data { bar(yylval.type); }
bar reçoit correctement le type de données ENTIER, mais si j'ai ceci:
foo : data data { ??? }
Comment puis-je obtenir le yylval.type pour le premier et le second membre séparément?
Merci beaucoup!
Merci, mais * 1.type de $ * ou * $ 2.type * ne fonctionne pas pour moi. J'ai des erreurs de compilation. – Menda
Regardez les manuels Lex et Yacc à http://dinosaur.compilertools.net/. Sur la page http://memphis.compilertools.net/interpreter.html vous pouvez trouver un simple interprète/calculatrice qui montre que vous devriez vraiment utiliser 1 $, 2 $, ... – Patrick