Analyseur lexical en C

Analyseur lexical en C - C - Programmation

Marsh Posté le 23-04-2005 à 17:20:20    

Salut tout le monde
 
Jeu veux creer un analyseur lexical en C
Le resultat de cet analyseur de etre passé à l'analyseur symentique
 
Si j'ai bien compri je dois creer à la fin de l'analyse la table de symbole des differntes unités lexicales de mon langage.
 
Donc je dois lire caractere par caractere le fichier source, mais j'ai quelques questions qui ne me permettent pas de savoir comment aborder cette analyse.
 
1) la table de symbole de etre sotocké sous quelle structure ( tableau, fichier .......)
2) est-ce que je dois stoquer expressions logiques (a < b) et d'affectation ( a=5) ? Si oui sur quelle forme !!!
 
Merci d'avance


Message édité par mehdi_tn le 23-04-2005 à 17:27:08
Reply

Marsh Posté le 23-04-2005 à 17:20:20   

Reply

Marsh Posté le 23-04-2005 à 17:38:24    

un analyseur lexical est qqch de compliqué. Donc sincerement je ne te conseil vraiment pas d'essayé de le faire toi même comme ça. Cherche plutot l'algorithme sur le net afin de te faciliter la vie. Moi je l'ai vu cette année à mon cours d'algo, et je t'assure que c'est vraiment quelque chose de compliquer à faire. Donc bonne chance...
 
Pour les symboles, commences par les stockés dans un vecteur, les accès fichiers sont trop lent.

Reply

Marsh Posté le 23-04-2005 à 17:46:57    

merci pour ta reponse
 
enfin ce n'est pa si compilqué que ca!!!  
il fau juste lire caractere par caractere et faire des switch (ou des if )pour identifier les symboles genre :
 
switch (c)
{
case '<' : return OPINF ;
break;
}
 
de toute facon je dois lire d'un fichier parceque le code source se trouve là.
 
mais le probleme comment stocker tout ca !!!!!!!!!!!!!!

Reply

Marsh Posté le 23-04-2005 à 18:09:06    

Pour faire ça j'utiliserais un arbre, mais j'ai la flemme d'aller chercher "LA" méthode pour vérifier si c'est ce qu'il y a de mieux.

Reply

Marsh Posté le 23-04-2005 à 18:13:37    

mehdi_tn a écrit :

merci pour ta reponse
 
enfin ce n'est pa si compilqué que ca!!!  
il fau juste lire caractere par caractere et faire des switch (ou des if )pour identifier les symboles genre :
 
switch (c)
{
case '<' : return OPINF ;
break;
}
 
de toute facon je dois lire d'un fichier parceque le code source se trouve là.
 
mais le probleme comment stocker tout ca !!!!!!!!!!!!!!


 
ca va etre infernal. A ta place j'utiliserais flex pour l'analyse lexicale couplé a bison pour la syntaxique et pas untruc fait main (qui devient rapidement ingérable)


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 23-04-2005 à 18:15:52    

je sais le C m'est imposé :(:(:(
je veux juste savoir sous quelle forme doit se presentée le resultat de l'analyse lexicale pour la donner a Bison pour qu'il fasse l'analyse syntaxique

Reply

Marsh Posté le 23-04-2005 à 18:29:43    

de mémoire, un entier representant le token (flex, c'et comme bison, hein, c'est un truc qui genere du C)


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 23-04-2005 à 18:31:05    

merci pour ta reponse mais tu m'aides pa tro ^^

Reply

Marsh Posté le 23-04-2005 à 18:33:08    

bin je sais pu, hein, fo que tu regardes la doc de yacc, y doit appeler une fonction genre int yylex() et y bosser avec le resultat :o


---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 23-04-2005 à 18:36:51    

mais je ne travaille pas avec flex  :??:  :??:  
Ce que je vais commencer par faire :
mettre les unités lexicales dans un tableau avec un identifiant ( c'est une etape que je suis sure qu'il faut passer par ) ensuite on verra !!!!  :whistle:


Message édité par mehdi_tn le 23-04-2005 à 18:37:50
Reply

Marsh Posté le 23-04-2005 à 18:36:51   

Reply

Marsh Posté le 23-04-2005 à 18:39:23    

oué, mais bison appelle une fonction nommé yylex() pour savoir quel est le prochain token. (de cette definition tu deduiras qu'il l'appelle un certain nbre de fois). Que cette fonction soit celle de flex ou la tienne, cela importe peu


Message édité par chrisbk le 23-04-2005 à 18:39:47

---------------
NP: HTTP Error 764 Stupid coder found
Reply

Marsh Posté le 23-04-2005 à 19:38:01    

mehdi_tn => http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
 
Je pense que de toute facon si tu te sert de Bison par la suite t'aura qu'a en faire une de fonction yylex, ca va pas etre evident mais bon ...


Message édité par Chronoklazm le 23-04-2005 à 19:39:08

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed