déc
10

Analyseur Syntaxique

Voici cette fois-ci un sujet, qui ne touchera je pense que les plus geek d’entre vous. En effet, je vais vous présenter un travail réalisé pendant ma première année à l’ESGI. Il s’agit d’un analyseur syntaxique, réalisé dans le cadre du cours sur la théorie des compilateurs.

Le but étant de réaliser l’une des 3 parties liées à la compilation des langages à structure grammaticale. Sachant que la compilation utilise généralement les 3 principes suivants :

  • Analyse Lexicale : permet la décomposition d’un texte en léxèmes (tokens, mots clés).
  • Analyse Syntaxique : elle permet de valider la syntaxe d’un texte en rapport avec la grammaire proposée. C’est cette partie dont nous allons traiter par la suite. Il existe plusieurs façons de réaliser cette analyse, celle que nous allons voir est dite « analyse déterministe ascendante » ou LLC1 (1 car l’analyse ne s’effectuera que sur le lexème suivant à celui courant). Nous partons donc du principe que la grammaire étudiée sera dite « propre » (pas de récursivité ni de factorisation possible).
  • Analyse Sémantique : cette dernière analyse permet de vérifier la cohérence des structures de données. Elle permet de contrôler le sens des mots du texte.

L’application a été développée en PHP5 orienté objet, ce qui m’a permis de l’intégrer à ce blog. Vous pourrez trouver en exemple, la grammaire des opérations arithmétiques ainsi que celle des imbrications de paramètres entre parenthèses. Mais rien ne vous empêche d’écrire votre propre grammaire ainsi que vos propre mots…


Bienvenue à vous amateur de la compilation

Saisissez votre grammaire et votre mot :

A gauche pour la grammaire, et à droite pour votre mot (suivez l'exemple :D ).

Précisions :
- @ vaut epsilone et l'axiom est le premier non Terminal.
- Chaque terminal ou non terminal ne peut pas faire plus d'un caractère.
- les espaces, les tabulations et les sauts de ligne ne peuvent pas être des terminaux.
Attention à ne pas oublier ; en fin de chaque ligne de votre grammaire.
Pensez aussi à utiliser un navigateur compatible W3C comme FireFox ou Opera (pour ne pas citer Ienternet Explorer ^^)



Choisissez les données que vous souhaitez afficher :

Axiom
Ensemble des Productions
Ensemble des non Terminaux
Ensemble des Terminaux
Ensemble des Premiers
Ensemble des Suivants
Table d'analyse
Trace de l'analyse


Code Source

Pour les gens désireux de voir les sources, vous pouvez les obtenir ici : Code Source.
Pour toute utilisation même partielle du code, vous pouvez me contacter à olivier.georget@gmail.com


Pas de commentaire

Pas encore de commentaire.

Comments RSS Feed  

Désolé, les commentaires sont fermés pour le moment.

top