Ciao,
dovrebbe essere sufficiente richiamare la funzione yyparse(generata da Yacc/Bison) una volta per ogni file da analizzare.
Nel seguente esempio, l'utente specifica uno o più file da riga di comeando e il programma effettua il parsing di ognuno dei file:
codice:
void parse(char *filename)
{
yyin = fopen(filename, "r");
if (yyin == NULL)
{
fprintf(stderr,"Impossibile aprire il file: %s\n", filename);
}
else
{
if (yyparse() == 0)
fprintf(stderr,"Parsing eseguito con successo!\n");
else
fprintf(stderr,"Parsing fallito.\n");
}
}
int main(int argc, char **argv)
{
int k;
if (argc<2)
{
fprintf(stderr,"uso: %s filename\n", argv[0]);
return -1;
}
for ( k = 1; k < argc; k++ )
{
printf("\nParsing del file %s:\n\n", argv[k]);
parse(argv[k]);
}
return 0;
}
x XWolverineX : Bison(e il suo antenato, Yacc) è un generatore di parser e, cioè, un compilatore di compilatori :master: . Puoi vedere qui:
http://it.wikipedia.org/wiki/Generatore_di_parser