Probleme d'analyse lexicale - C - Programmation
Marsh Posté le 24-02-2005 à 21:35:45
C'est surement pour que les neuneus come moi puissent éprouver un profond plaisir en utilisant flex/yacc
Marsh Posté le 24-02-2005 à 21:54:58
Et encore on a pas attaquer les generateurs d'analyseurs syntaxiques à faire à la main.
Marsh Posté le 24-02-2005 à 22:05:59
chrisbk a écrit : mais mayrde quoi |
Bon, je te sens chaud pour m'aider là, non ?
Marsh Posté le 24-02-2005 à 22:22:48
Chronoklazm a écrit : Voila j'ai deux petits problemes avec mon lexer (pas de flex) pour le petit langage Logo. |
Pfffou... tout ça à débugguer je suis fatigué d'avance.
Juste pour dire que ta seconde hypothèse estvraie. Tu dois reconnaître le lexème (token) le plus long possible à chaque fois.
Marsh Posté le 24-02-2005 à 22:27:07
Chrono> chai pas si c moi qui ait la berlu mais ton programme comporte des erreurs de programmation assez grossières. Par exemple lorsque les variables s ou temp sont utilisées pour la première fois, ces dernières ne sont pas initialisées ou définies.
Ensuite sur la forme, ce qu'on peut remarquer à première vue, c'est que la forme canonique pour écrire un AFN en langage C, utilise le switch...case pour la gestion des états, ce qui évite les continue à tout bout de champ.
Voilà pour mes premières remarques.
Bonne chance...
Marsh Posté le 24-02-2005 à 22:47:31
Ok merci, pour le switch.
La variable s est initialisée a 0.
La variable temp, est comme son nom l'indique sert de mini-buffer donc bon ... mais je vais l'initialiser quand meme.
Marsh Posté le 24-02-2005 à 23:03:00
pains-aux-raisins a écrit : Chrono> ... la forme canonique pour écrire un AFN en langage C, utilise le switch...case pour la gestion des états ... |
Heu, t'as pas un exemple par hasard, google n'est pas tres bavard a ce sujet.
Marsh Posté le 24-02-2005 à 23:06:18
ben tout simplement
Code :
|
Marsh Posté le 24-02-2005 à 23:18:14
Oui ok ca j'avais compris je parlais plus d'exemples de codages d'automates faits entierement.
Marsh Posté le 24-02-2005 à 23:21:55
J'ai trouvé un petit exemple sympa sur un AFN qui vire les espaces en debut de lignes mais c'est un peu leger ...
Code :
|
Marsh Posté le 25-02-2005 à 08:42:18
Chronoklazm a écrit : Bon, je te sens chaud pour m'aider là, non ? |
heuh nan, les parseurs fait main ca ressemble souvent a du spaghetti ou meme l'aventurier le plus intrepide n'ose s'aventurer
Marsh Posté le 24-02-2005 à 21:10:17
Voila j'ai deux petits problemes avec mon lexer (pas de flex) pour le petit langage Logo.
La reconnaissance des operateurs '<< ' se fait correctement mais dès que il y a un nombre (ou autre à part un espace) tout de suite apres ... ça gouille.
exemple :
'<<20' donnera 'operateur nombre' au lieu de 'operateur operateur nombre'
alors que
'<<' donne bien 'operateur operateur'
Et ma deuxième question concerne la gestion des identificateurs (qui sont à priori gerés dans le meme état que les mot-cle et le sens), en fait il faut pouvoir reconnaitre le lexeme le plus long (par convention) donc par exemple le motcle "avancer" devra etre reconnu au lieu d'une suite d'identificateurs "a","v","a","n"...
Je pense qu'il faut d'abord que je teste la correspondance avec un motcle puis si elle echoue tester la reconnaisance d'un id.
Voici le source :
Message édité par Chronoklazm le 24-02-2005 à 21:40:45
---------------
Scheme is a programmable programming language ! I heard it through the grapevine !