Mini-compilateur

Description

Ce code a été écrit dans le cadre d'un cours sur les langagues et compilateur. Il contient un analyseur lexical qui lit dans un fichier d'entrée et renvoit une suite d'unité lexical représentant le fichier source. Il y a ensuite une analyseur syntaxique qui lit une grammaire LL(1) dans le fichier grammar.txt dans le dossier syntax et qui génère un arbre syntaxique. Cette arbre syntaxique est ensuite traduit dans une représentation intermédiaire du code à l'aide de la classe SLIPGenerator. Enfin, à partir de l'arbre en représentation, on génère le code final, code qui ressemble assez à de l'assembleur. En fait, ce code s'exécute sur une petite machine virtuelle programmée en java mais, étant donné que ce n'est pas moi qui l'ai codée, je ne l'inclus pas dans le code. Le projet contient aussi une classe qui permet de vérifier qu'une grammaire est bien LL(1).

Le langage en lui même est assez basique avec un syntaxe proche de Java (très proche meme :)). Il permet quand même de faire des appels de fonctions, des boucles, des tests (imbriquées éventuellement), des fonctions récursives. Il permet aussi de gérer des objets très basiques qui fonctionne en utilisant un niveau (Pour avoir une meilleur idée de ce qu'on peut faire avec des objets, voir le dossier testSLIP).

Ce projet est fonctionnel mais il doit encore y avoir quelques problèmes à gauche et à droite surtout dans la partie de la traduction de l'arbre syntaxique en arbre en représentation interne (la génération de code est loin d'être optimale).

Enfin, pour ceux qui se demanderait ce qui signifie 'SLIP', c'est l'abbréviation pour "Simple Language with Integer and Pointer".

Si vous avez des questions -> commentaires :)

Conclusion :


BUG: aucun ( en espérant ne pas avoir à mettre à jour cette partie :p )

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.