Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/viet281101/minic-misp_compiler
A small language compiler in Ocaml, translates MiniC syntax into MISP and runs
https://github.com/viet281101/minic-misp_compiler
compiler misp ocaml
Last synced: 4 days ago
JSON representation
A small language compiler in Ocaml, translates MiniC syntax into MISP and runs
- Host: GitHub
- URL: https://github.com/viet281101/minic-misp_compiler
- Owner: Viet281101
- Created: 2024-01-24T12:53:25.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-01-24T12:58:26.000Z (11 months ago)
- Last Synced: 2024-04-17T02:23:36.368Z (8 months ago)
- Topics: compiler, misp, ocaml
- Language: OCaml
- Homepage:
- Size: 1.32 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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
- [x] types de base :
- [x] entiers,
- [x] booléens,
- [x] chaînes de caractères;- [X] bibliothèque de base :
- [X] lecture et écriture sur l’entrée et la sortie standard des types de bases,
- [X] opérateurs logiques de base sur les booléens (et, ou, non),
- [X] opérateurs arithmétiques de base sur les entiers (addition, soustraction, multiplication, division, modulo);- [X] expression :
- [X] valeur,
- [X] variable,
- [X] appel de fonction (de la bibliothèque de base ou définie par l’utilisateur·ice);- [X] instructions :
- [X] déclaration de variable,
- [X] assignation de la valeur d’une expression à une variable,
- [X] renvoie de la valeur d’une expression,
- [X] branchement conditionnel “si expression alors bloc sinon bloc”,
- [X] boucle “tant que expression faire bloc”;
- [X] un bloc est une séquence d’instructions;- [X] un programme est une liste de définitions de fonctions (dont une s’appelle main) :
- [X] une fonction déclare son nom, les noms et types de ses arguments, son type de retour, et son corps,
- [X] le corps d’une fonction est un bloc.