nodus | Je rencontre un problème bizarre avec un programme lex. J'essaie de faire une copie de la commande wc, c'est surement du code crade mais ça marche (a moitié ):
Les erreurs sont en bold.
Par exemple lorsque mon code est:
Code :
- %{
- #include <stdio.h>
- int nblignes;
- int motl;
- int nbcars;
- int nbmots;
- %}
- MOTESP [.]\32
- %%
- \n ++nblignes;
- . ++nbcars;
- [a-zA-Z0-9][:space:]|[a-zA-Z0-9]\n ++nbmots;
- %%
- int main(void)
- {
- nblignes=0;
- nbcars=0;
- nbmots=0;
- yyin=stdin;
- yylex();
- printf("nblignes = %d, nbcars=%d, nbmots=%d\n",nblignes,nbcars+nblignes,nbmots);
- }
|
J'obtiens le résultat:
Code :
- $ cat fichier | ./wc2
- nblignes = 1, nbcars=21, nbmots=7
|
Code :
- Alors que si j'ai ce code:
- %{
- #include <stdio.h>
- int nblignes;
- int motl;
- int nbcars;
- int nbmots;
- %}
- MOTESP [.]\32
- %%
- \n ++nblignes;
- . ++nbcars;
- %%
- int main(void)
- {
- nblignes=0;
- nbcars=0;
- nbmots=0;
- yyin=stdin;
- yylex();
- printf("nblignes = %d, nbcars=%d, nbmots=%d\n",nblignes,nbcars+nblignes,nbmots);
- }
|
le résultat devient:
Code :
- $ cat fichier | ./wc2
- nblignes = 4, nbcars=35, nbmots=0
|
Mon fichier d'entrée est:
$ cat fichier
toto titi
tata
tutu
toto tata titi
et wc me donne le résultat:
$ wc fichier
4 7 35 fichier
Autant dire que le résultat de mon code est assez empirique car quelque soit le code le résultat est à moitié bon à moité faux...
Si vous avez une idée je suis tout ouïe, merci de votre aide |