Architecture de PCC:
December 4, 2010 · View on GitHub
PseudoC Compiler Collection. Compilateur et interprétateur de byte-code pour le PseudoC (un langage proche du C).
KEDJI Komlan Akpédjé eric.kedji@gmail.com. http://erickedji.wordpress.com/
Architecture de PCC:
Un fichier source PseudoC passe à travers les étages
suivant avant l'exécution:
-> Lexer (pc_lexer.c pc_lexer.lex pseudocl.c)
-> Scanner & Compiler (pc_parser.y pc_symtable.c pseudocc.c)
-> Intermediate Code (ic_generator.c ic_parser.c)
-> Byte Code (bc_generator.c)
-> Execution (interpreter.c pci_defs.c pseudoci.c)
Compilation:
Un Makefile est inclus, il suffit de taper `make'
dans ce répertoire (utilisez `make clean' d'abord
pour supprimer les anciens exécutables et recompiler).
Le projet utilise BOEHM GC comme garbage collector
(à mettre dans le répertoire gc). Avant de taper
`make', rentrer dans le répertoire `gc' et taper:
$ ./configure; make
La dernière version de BOEHM GC est disponible ici:
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Exécution:
pseudocl: lit l'entrée standard et affiche sur la
sortie standard les tokens lus.
pseudocc: compile les fichiers passées en argument
(lit la sortie standard s'il n'y a pas
d'argument) en un fichier contenant le code
intermédiaire (`PseudoCIntermediateCode.s').
pseudoci: recoit en argument un fichier (lit l'entrée
standard sinon) contenant du code intermédaire,
génère du byte-code, et l'interprête.
Le byte-code généré est enregistré dans un fichier
nommmé `PseudoCBinary.pcb'.
Tests:
Dans le répertoire tests, le script `runall.sh'
exécute tous les tests sémantiques.
Pour exécuter les tests syntaxiques (`syntaxtest.sh'),
il faut disposer de DrScheme (http://www.drscheme.org/).
Rapport:
Le rapport est dans le fichier `rapport.pdf'.
Notez que pour le générer, vous avez besoin de `xelatex`.
Todo:
- Meilleure intégration de BOEHM GC
- Traitement décent des arguments en ligne de commande
- Ne pas regénérer le byte code si le code source n'a
pas changé
- Finir le travail sur la table de symboles pour permettre
la compilation de plusieurs fichiers
- Optimiser le byte-code généré (peep-hole optimisation)
Licence:
Le code est dans le domaine public, sauf les librairies tierces qui sont
sous licence GPL. Abusez-en comme vous voulez. Gardez tout simplement une
trace de l'auteur original.