cs_Cartman13
Messages postés20Date d'inscriptionsamedi 8 octobre 2005StatutMembreDernière intervention22 janvier 2007
-
27 oct. 2006 à 17:05
oussemastar
Messages postés2Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention11 juin 2008
-
11 juin 2008 à 12:01
Bonjour a tous.
Je bosse actuellement sur un analyseur sémantique en C++.
Concrètement le fichier est le avec ifstream (flux d'entrée) et stocké dans un tableau dynamique.
Je n'ai aucun problème pour parcourir le contenu et repérer la nature des éléments.
Quelles erreurs peut on trouver lors d'une analyse lexicale ?
Comment faut il s'y prendre en C++ pour faire l'analyse syntaxique (structure, ...) ?
Je vous remercie de votre aide et ne vous demande en aucun cas un code complet.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201013 27 oct. 2006 à 17:24
On trouve peu d'erreurs en général dans l'analyse lexicale (je ne vois qu'une chose: la lecture d'un caractère non autorisé dans le langage).
C'est plutot l'analyseur syntaxique qui trouve des erreurs (item non attendu par exemple).
Ton analyseur syntaxique doit faire appel au lexical dès qu'il veut lire quelque chose
Voila ce que je peux te dire, tes question n'étant pas très précises
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201624 27 oct. 2006 à 19:04
Tu peux aussi te renseigner sur la technique des automates avec matrices de transitions (nom pompeux mais simple à utiliser), on construit d'abord un graphe qui constituera les états de l'automate, et à chaque état, une ou plusieurs actions sont prévues.
On a une Matrice **etat et une Matrice **transition, et dans un fichier on lit les lignes et colonnes representant le graphe j'usqu'à un état terminal(nombre négatif) ou un état d'erreur(0). Le fichier de transition peut etre (pour "var++ ou var += chiffre" par exemple):
2 1 0 0
2 3 4 0
0 3 4 0
0 0 -5 6
0 0 0 0
0 0 0 -7
etat 1 = espace
etat 2 = identificateur (var)
etat 3 = espace
etat 4 = operator +
etat 5 = operator + (terminal)etat 6 operator etat 7 = chiffre (ou nombre) (terminal)
Fait une recherche sur automate sur le Web, on peut trouver pas mal de choses interessantes.
oussemastar
Messages postés2Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention11 juin 2008 11 juin 2008 à 12:01
Nous avons un projet à faire et nous voulons savoir comment créer un analyseur lexical et syntaxique à l'aide de flex et bison permettant d’analyser un fichier de code source. Ainsi, détecter et définir l’utilisation des variables et des instructions au sein des fonctions, des procédures et des sous programmes faisant partie de ce fichier.