OCaml Baguette# Interpreter
Welcome to the website of the Interpreter of OCaml. The content here is for the moment the README.md of the repo. See Boulangerie for BOULANGERIE, the Baguette# Package Manager
Table of Contents
- OCaml Baguette# Interpreter
- REPL
- Basic Usage
- Advanced Usage
- Random Guessing Game
- Binary Turing Machine
- Binary Turing Machine Examples
Requirements
Ocaml version >= 4.13.1, modules fmt,str and linenoise ( REPL )
opam install fmt str linenoise
Installation
Pre-compiled binaries
Automatic download of the linux x86_64 binaries
curl https://raw.githubusercontent.com/coco33920/ocaml-baguettesharp-interpreter/master/download.sh | sh
the script downloads the latest binaries (which was tagged on the releases), install it as ~/.local/bin/baguette_sharp
and flag it as executable. You can also do
wget https://raw.githubusercontent.com/coco33920/ocaml-baguettesharp-interpreter/master/download.sh
sh download.sh
Or just executing the script itself
wget https://github.com/coco33920/ocaml-baguettesharp-interpreter/releases/latest/download/baguette.linux64
mv baguette.linux64 ~/.local/bin/baguette_sharp
chmod +x ~/.local/bin/baguette_sharp
OPAM
Build the latest stable version in OPAM repositories opam install baguette_sharp it compile and install the latest
baguette_sharp version under baguette_sharp.repl in OPAM files (which are in $PATH)
Source
You must install the dependencies to build from sources, which are fmt and linenoise. And an OCaml version of at least 4.13.1.
An automatic script to download sources, install dependencies and build from source is available here :
curl https://raw.githubusercontent.com/coco33920/ocaml-baguettesharp-interpreter/master/automatic.sh | sh
Which is exactly :
opam install -y linenoise fmt
git clone https://github.com/coco33920/ocaml-baguettesharp-interpreter
cd ocaml-baguettesharp-interpreter
dune build @install
dune install
The script, same as OPAM, install the repl under baguette_sharp.repl in the OPAM files.
History
I restarted this project early 2022, to act as a TIPE (a french weird oral exam for the concours of Écoles d’Ingénieurs) to frame the formal language theory, and to do that you’ll play with our world famous pastries !
The lexer, parser and interpreter are finished, they take a string of language and transform it into an abstract syntax tree (AST) that the interpreter take to execute the language. I now work on the theoritical part of the issue (turing-completeness), and the compiler.
The syntax is really close to a BASIC but with less explicit words and keywords you’ll see :)
Support
The language supports integers, floating point numbers, strings, booleans, predicates, gotos, conditionnals gotos (if/else), and implements many of the standard instructions you can find in a language standard library. Keywords are simple and are the only instances when you don’t need parenthesis, go see the WIKI for more accurate informations
Building
dune build .
Usage
dune exec baguette_sharp_interpreter
Test
dune runtest