Ocaml version >= 4.13.1,modules fmt et linenoise ( pour le REPL )
opam install fmt linenoise
Téléchargement automatique des binaire pour linux x86_64 (dernière version).
curl https://raw.githubusercontent.com/coco33920/ocaml-baguettesharp-interpreter/master/download.sh | sh
le script télécharge la dernière version, l'installe sous ~/.local/bin/baguette_sharp
et le rend éxecutable
alternativement vous pouvez faire
wget https://raw.githubusercontent.com/coco33920/ocaml-baguettesharp-interpreter/master/download.sh
sh download.sh
ou encore juste éxecuter le script
wget https://github.com/coco33920/ocaml-baguettesharp-interpreter/releases/latest/download/baguette.linux64
mv baguette.linux64 ~/.local/bin/baguette_sharp #par exemple pour l'avoir dans $PATH
chmod +x ~/.local/bin/baguette_sharp #pour être executable
Build la dernière version stable depuis OPAM opam install baguette_sharp
compile et installe la dernière version OPAM
de baguette_sharp sous baguette_sharp.repl
Pour installer depuis les sources il faut installer d'abord les dépendances opam install fmt linenoise
et avoir OCaml >= 4.13.1
Installation depuis les sources automatiques (avec installations de dépendances) :
curl https://raw.githubusercontent.com/coco33920/ocaml-baguettesharp-interpreter/master/automatic.sh | sh
ce qui reviens à faire
opam install -y linenoise fmt
git clone https://github.com/coco33920/ocaml-baguettesharp-interpreter
cd ocaml-baguettesharp-interpreter
dune build @install
dune install
Le script installe le repl sous baguette_sharp.repl
dans le bin de OPAM (qui est dans le $PATH
)
J'ai repris ce projet début 2022, il sert de TIPE ENS et Tétraconcours ( je suis en prépa ) pour illustrer la théorie des langages formels de manière plus ludique, pour sa manière ludique de jouer avec... des pâtisseries!
Le parser est fini, il sert à transformer la liste de token en un arbre de syntaxe abstraite ( AST en anglais ) qui va permettre d'interpréter le langage après, l'algorithme s'occupe de transformer une liste en un arbre avec les fonctions/opérateurs et leurs arguments ( qui peuvent aussi être des fonctions ) ainsi que l'interpréteur qui prend l'AST et interprète le langage, le travail porte maintenant sur la partie théorique (turing-completeness) et la partie compilateur.
La syntaxe est proche du BASIC mais sans les boucles explicite ( on peut les faire... mais il faut vous débrouiller ;) )
Actuellement l'interpréteur supporte les entier, les flottant, les chaînes de caractères, les booleans, les conditions simple, le retour à une ligne antérieure/postérieure et les if/else et implémente les fonctions standard précédemment implémentées dans la version en GO La grammaire est identique, chaque mot/symbole est séparé d'un espace et chaque symbole et fonction ont un nom de pâtisserie/viennoiserie/sucrerie française ou non.
Les keywords sont simple (voir le WIKI) et ne sont pas suivi de parenthèse ( comme le LABEL par exemple )
dune install
dune exec baguette_sharp_interpreter
dune runtest
Voir le WIKI ( en anglais ) pour des informations plus détaillées