2009-12-05 8 views
0

Je l'ai dans mon fichier yacc.Comment passer une structure à une fonction dans un fichier yacc?

var_declaration : type_specifier ID ';' {$2->args = ""; $2->value = 0; $2->arraysize = 0; $2->type = "variable";} 

Tout ce qui précède fonctionne.

Je veux l'ajouter à cela.

fn($2); 

De l'intérieur de la fonction, je veux faire des choses comme ça.

fn(struct symtab sp) 
    { 
    sp->value = 0; 
    } 

Mais quand je tente de compiler le programme que je reçois cette erreur:

error: invalid type argument of ‘->’ (have ‘struct symtab')

+0

yacc devrait juste émettre les choses dans les accolades comme code. –

Répondre

6

je suppose que votre fonction doit être

fn(struct symtab* sp) 

au lieu de

fn(struct symtab sp) 

et au fait, comme $ 2 est un union Je ne pense pas que

$2->args = ""; $2->value = 0; $2->arraysize = 0; 

est correcte. Et

$2->type = "variable"; 

n'est pas valide. Pouvez-vous montrer l'exemple du code qui ne fonctionne pas?