/MiniC-MISP_compiler

A small language compiler in Ocaml, translates MiniC syntax into MISP and runs

Primary LanguageOCaml

Démarrage projet compiler

Build & Compiler

  • Utiliser dune buile (Attention la version dune dans les fichiers "dune" et "dune-projet" ) :
dune buile main.exe

ou

ocamlbuild -use-menhir main.byte
  • Compiler (essayer avec les tests/) en utilisant main.exe ou main.byte, par exemple avec "int.test":
./main.exe tests/int.test

puis

spim -file result.s

TODO liste

  • types de base :

    • entiers,
    • booléens,
    • chaînes de caractères;
  • bibliothèque de base :

    • lecture et écriture sur l’entrée et la sortie standard des types de bases,
    • opérateurs logiques de base sur les booléens (et, ou, non),
    • opérateurs arithmétiques de base sur les entiers (addition, soustraction, multiplication, division, modulo);
  • expression :

    • valeur,
    • variable,
    • appel de fonction (de la bibliothèque de base ou définie par l’utilisateur·ice);
  • instructions :

    • déclaration de variable,
    • assignation de la valeur d’une expression à une variable,
    • renvoie de la valeur d’une expression,
    • branchement conditionnel “si expression alors bloc sinon bloc”,
    • boucle “tant que expression faire bloc”;
    • un bloc est une séquence d’instructions;
  • un programme est une liste de définitions de fonctions (dont une s’appelle main) :

    • une fonction déclare son nom, les noms et types de ses arguments, son type de retour, et son corps,
    • le corps d’une fonction est un bloc.