Yacc : analyse lexical

764 mots 4 pages
1. Analyse lexicale

Le but de l’analyseur lexical est de convertir un flux de caractères entrant en un flux d’entités lexicales (lexèmes) accompagnées d’un indicateur de valeur.
Les lexèmes ainsi que les valeurs associées sont ensuite transmis à l’analyse syntaxique qui, à partir de ces derniers, va vérifier si la syntaxe de l’expression tapée par l’utilisateur est correcte (par exemple, nombre de parenthèses ouvertes = nombre de parenthèses fermées).

Le fichier Module_lexical.c est le fichier principal, le module_lexical.h et commun.h sont les bibliothèques de ce dernier.
Le fichier d’entête « commun.h » définit les valeurs des fonctions et des types de lexèmes.
Module_lexical.h est le fichier d’interface permettant aux autres d’utiliser notre fonction. Sont indiquées également dans ce fichier, les bibliothèques à utiliser.
Pour cette analyse nous utilisons deux tableaux principaux : - chaine[ ], qui contient l’expression rentrée par l’utlisateur. - Liste_lexeme[ ], qui est composé de 2 colonnes (type_lex et valeur).
Ce tableau nous sert à envoyer l’expression de départ sous forme de lexemes à l’analyseur syntaxique.
Pour l’ajout de fonctions, d’erreurs, de séparateurs ou d’opérateurs supplémentaires, il faut modifier commun.h.
Par exemple, si nous voulons ajouter la fonction ABS (valeur absolue), il suffit de rajouter la ligne « #define ABS 8 » au niveau des types de fonctions.
Dans le programme principal Module_lexical.c, il faudra rajouter la partie de code entière ci-dessous dans le default supplémentaire : // ABS else if ( chaine[in]=='A' && chaine[in+1]=='B' && chaine[in+2]=='S' ) { liste_lexeme[out].type_lex = FONCTION; liste_lexeme[out].valeur = ABS; out++; in += 2; }
Ce code effectue un test au niveau de chaine[], en verifiant que A,B et S sont trois valeurs prises consécutivement par cette chaine de caractères.
Si c’est le cas, on assigne la valeur FONCTION à la cellule courante (« out ») du tableau

en relation

  • DM 2 Commentaire Sur Le Feu De Barbusse
    1891 mots | 8 pages
  • Baccalauréat latin 2009
    1024 mots | 5 pages
  • English la martin
    664 mots | 3 pages
  • Synthèse anglais
    1771 mots | 8 pages
  • Le crapaud
    997 mots | 4 pages
  • Joker
    431 mots | 2 pages
  • Tartuffe, molière acte iv scène 5 lecture analytique
    941 mots | 4 pages
  • Metamorphse de berenger
    1068 mots | 5 pages
  • asra
    416 mots | 2 pages
  • Phèdre acte 4 scène 2
    1488 mots | 6 pages
  • Paysage
    752 mots | 4 pages
  • Dossier1
    522 mots | 3 pages
  • Magellan
    1718 mots | 7 pages
  • HISTOIRE DROIT I
    2927 mots | 12 pages
  • la conception de la fonction présidentielle sous la Vè république
    1182 mots | 5 pages