Bonjour,
Je ne sais pas d'où vient exactement ton erreur, mais un de mes fichiers lex qui détecte à peu près la même chose ressemble à ca:
Code :
- ...
- idf [A-z]+([0-9]*[A-z]*)*
- cst_ent [0-9]+
- cst_chaine \".*\"
- commentaire \/\*.*\*\/
- blanc [\t]+
- ...
- {idf} {strncpy (yylval.String,yytext,MAX_CHAINE); return idf;}
- {cst_ent} {strncpy (yylval.String,yytext,MAX_CHAINE);return entier;}
- {cst_chaine} return chaine;
- {blanc} ;
- [ ]* ;
- \, return virg;
- \n numLignes++;
- \; return point_virg;
|
et mon analyse syntaxique fonctionnait correctement, ce qui n'était pas forcément le cas de la suite mais c'est une autre histoire.
Il me semble qu'il n'est pas nécessaire de gérer le cas d'erreur. J'ai dû virer la ligne:
Code :
- . {printf("erreur";);}
|
pour que cela fonctionne sinon j'avais des résultats bizarres surtout avec les retours chariot, personne n'a jamais compris le rapport.
Quand il trouve une erreur syntaxique, le programme généré par lex affiche lui-même "syntax error" (il me semble).
Message édité par ptitchep le 10-04-2008 à 19:14:06
---------------
deluser --remove-home ptitchep