problème bizarre ??? [lex] - Divers - Programmation
Marsh Posté le 02-12-2004 à 18:33:51
A vue de nez, je dirais qu'il y a ambiguïté dans ta déclaration de syntaxe. Tes lexèmes pour les caractères et les retours chariots ne posent pas de problème. Le fait de mettre "." comme lexème va complètement occulter ta détection de mot par la suite. Le parcours de ton fichier par flex en fonction des lexèmes est séquentiel, et non pas parallèle...
Tu peux toujours intervertir tes 2 lignes (celle qui contient le ++nbcars et le ++nbmots), mais ton nombre de caractères ne sera pas valide ...
Essaye de revoir ta règle de définition du lexème mot, et incrémente ton nombre de caractères de la taille de chaque mot ...
Marsh Posté le 02-12-2004 à 19:58:39
dsls a écrit : A vue de nez, je dirais qu'il y a ambiguïté dans ta déclaration de syntaxe. Tes lexèmes pour les caractères et les retours chariots ne posent pas de problème. Le fait de mettre "." comme lexème va complètement occulter ta détection de mot par la suite. Le parcours de ton fichier par flex en fonction des lexèmes est séquentiel, et non pas parallèle... |
Mais pour compter les caractères \n et espace cela va poser un problème ?
Marsh Posté le 02-12-2004 à 20:45:27
Il suffit d'incrémenter nbcars aux bons endroits ...
Essaye avec ces définitions :
Code :
|
Marsh Posté le 03-12-2004 à 13:01:02
Ça marche parfaitement, je vais étudier ça plus en détail. En tout cas merci de ton aide
Marsh Posté le 02-12-2004 à 18:19:42
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:
J'obtiens le résultat:
le résultat devient:
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