Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/erickedji/pseudoccompilercollection

Compiler and byte-code interpreter for a C-like langage (using LEX & YACC)
https://github.com/erickedji/pseudoccompilercollection

Last synced: about 2 months ago
JSON representation

Compiler and byte-code interpreter for a C-like langage (using LEX & YACC)

Lists

README

        

PseudoC Compiler Collection.
Compilateur et interprétateur de byte-code pour le PseudoC
(un langage proche du C).

KEDJI Komlan Akpédjé .
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.