2009-12-06 3 views
0

Je veux que mon programme flex/yacc fasse la même chose que ce qu'il fait déjà, mais je veux le modifier un peu. Si je devais mettre un main() dans mon fichier .l, et qu'il fasse la même chose que si je n'avais pas ajouté de main(), à quoi ressemblerait le code?À quoi ressemble le principal main() créé par flex?

+1

est-il pas possible pour vous même de regarder la documentation de flex ou de bison avant de poser une question ici? –

Répondre

1

Vous pouvez générer votre code comme d'habitude, puis copier votre "main normale".

Mais comme l'analyseur norme attend une entrée de stdin, tout ce que vous avez besoin à faire dans main() est appel yyparse()

selon 'lex & yacc' (page 211) principale est standard:

main(ac, av) 
{ 
    yyparse(); 
    return 0; 
} 

il est un exemple plus complet à la page 96 qui définit l'entrée et la sortie via ce type de code:

extern FILE *yyin, *yyout; 

yyin = fopen(infile,"r"); 
if(yyin == NULL) /* handle error */ 

yyout = fopen(outfile,"w") 
/* error handling agian */ 

yyparse(); 

/* post processing */ 

exit(0); 
Questions connexes