Première partie du Projet Systèmes Informatiques visant à réaliser un compilateur de C simplifié grâce à LEX/YACC.
FASCC permet de compiler un code C minimal en code assembleur orienté mémoire.
Le code assembleur en sortie peut ensuite être interprété grâce à l'utilitaire FASTINTERP.
- Implémentation des expressions séquentielles classiques (déclaration, affectation, affichage, opérations arithmétiques).
- Implémentation des constantes à la compilation.
- Création d'un interpréteur du code ASM.
- Implémentation des expressions conditionnelles (if et while).
- Implémentation de pointeurs
- Implémentation de fonctions
- Traitement des erreurs
- Optimisation du code ASM
Les commandes doivent être lancées dans le répertoire courant.
Les executables FASCC et FASTINTERP sont obtenus grâce à la commande :
$ make
La compilation d'un fichier C s'effectue ensuite sous la forme :
$ ./fascc chemin/vers/fichier.c
Le fichier de sortie se nomme out
par défaut et est placé dans le dossier courant.
L'option -o chemin/vers/sortie
peut être utilisée pour appliquer un nouveau nom et chemin.
Les fichiers assembleur en sortie peuvent ensuite être interprété avec :
$ ./fastinterp chemin/vers/sortie
Plusieurs exemples de code compilables sont disponibles dans le dossier test.
Ces fichhiers servent également de test pour le compilateur et peuvent être lancés via :
$ make test
Pour lancer une selection de fichiers test, la commande suivante peut-être utilisée :
$ make test TESTFILES="chemin/vers/test1.c chemin/vers/test2.c ... chemin/vers/testN.c"