Skip to content

erickedji/pseudoccompilercollection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published