github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

erickedji / pseudoccompilercollection

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 2
    • 0
  • Source
  • Commits
  • Network (0)
  • Issues (0)
  • Downloads (0)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Branches (1)
    • master ✓
  • Tags (0)
Sending Request…
Enable Donations

Pledgie Donations

Once activated, we'll place the following badge in your repository's detail box:
Pledgie_example
This service is courtesy of Pledgie.

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

  cancel

http://erickedji.wordpress.com/

  cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

first commit 
erickedji (author)
Sun Apr 12 03:24:30 -0700 2009
commit  f52ec67447c4dfb81fc229a7f3b66f58a75218fc
tree    181d3c849d9e5a43518a82e2d67a57118effbf43
pseudoccompilercollection /
name age
history
message
file Makefile Loading commit data...
file README
file bc_generator.c
file code.pcc
file generator
file generator.scm
file ic_generator.c
file ic_generator.h
file ic_parser.c
file igen
file interpreter.c
file opname.c
file pc_lexer.lex
file pc_parser.tab.h
file pc_parser.y
file pc_symtable.c
file pc_symtable.h
file pcc_defs.h
file pci_defs.c
file pci_defs.h
file pseudocc.c
file pseudoci.c
file pseudocl.c
file rapport.tex
file shared.h
file tags
directory tests/
file uthash.h
README
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'.

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.
Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server