package baguette_sharp

  1. Overview
  2. Docs
The Baguette# Interpreter REPL

Install

Dune Dependency

Authors

Maintainers

Sources

2.1.1.tar.gz
md5=3adac2d24fe0eb3924f2576d2abc77b0
sha512=37a8522ddf82920a09b88953311c34e84a5a45e4edb5bf704b24808eb3d82bc1c656fe823102c7299c2394f930fa11c5a040b9d4a39a72bab1edc4ff9ed88204

Description

The REPL for Baguette#

Published: 30 Nov 2022

README

README.md

The Baguette# OCaml Interpreter

coco33920 - ocaml-baguettesharp-interpreter GitHub release License


Baguette#
Baguette#

Contact - Mail

b# b#

Baguette# est de retour..... En OCaml !

Pré-requis

Ocaml version >= 4.13.1,modules fmt et linenoise ( pour le REPL )

opam install fmt linenoise

Installation

Binaires pré-compilées

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

OPAM

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

Source

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)

Histoire

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 ;) )

Support

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 )

Installation

dune install

Utilisation

dune exec baguette_sharp_interpreter

Test

dune runtest

Voir le WIKI ( en anglais ) pour des informations plus détaillées

Dependencies (4)

  1. linenoise >= "1.4.0"
  2. fmt >= "0.7.0"
  3. ocaml >= "4.13.1"
  4. dune >= "3.0" & < "3.13"

Dev Dependencies (1)

  1. odoc with-doc

Used by

None

Conflicts

None