40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
# Crafting Interpreters
|
|
|
|
Using rust to implement the first part of
|
|
[Crafting interpreters](https://craftinginterpreters.com) for the
|
|
[FHNW](https://www.fhnw.ch) [PL-Circle](https://github.com/fhnw-pl-circle).
|
|
|
|
All dependencies for running the respective implementations are specified in the
|
|
[flake.nix](./flake.nix) file within the project folder (look for the key
|
|
`buildInputs`, though [rustup](https://rustup.rs/) might just work with the
|
|
provided toolchain file). My recommendation is to use the provided
|
|
[nix flake](https://nixos.wiki/wiki/Flakes) directly, as it sets up everything
|
|
automatically.
|
|
|
|
Use `cargo run -- <ARGS>` to run the interpreter directly from the source code.
|
|
Specify needed arguments in place of `<ARGS>`.
|
|
|
|
```
|
|
Usage: rox <COMMAND>
|
|
|
|
Commands:
|
|
run Run a Lox source file
|
|
repl Run a Lox REPL
|
|
help Print this message or the help of the given subcommand(s)
|
|
|
|
Options:
|
|
-h, --help Print help
|
|
-V, --version Print version
|
|
```
|
|
|
|
For example running the
|
|
[Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)
|
|
implemented in [brainfuck](https://en.wikipedia.org/wiki/Brainfuck) (read the
|
|
[source file](bf/game_of_life.bf) to figure out how to use it):
|
|
|
|
```
|
|
RUST_LOG=info cargo run --release -- run -s ./lox/bf.lox -- bf/game_of_life.bf
|
|
```
|
|
|
|
Please note that some parts of the implementation have not been given enough
|
|
thought.
|