Brian Picciano
4870455430
The new gg format is based on a BNF file which can be found in the `gg` directory. The code for decoding `.gg` files has been refactored to mirror that file. The result is more resilient parsing, better errors, and a greater ability to extend the format in the future. The new decoder is notable in that it does not use a lexer. Both lexing and parsing are done in a single step. The format syntax itself has also been modified. Rather than using semi-colons everywhere, commas are used as separators in tuples. Additionally the final comma/semi-colon is no longer required. |
||
---|---|---|
cmd/eval | ||
examples | ||
gg | ||
graph | ||
sandbox | ||
vm | ||
.gitignore | ||
flake.lock | ||
flake.nix | ||
go.mod | ||
go.sum | ||
README.md |
Ginger
A programming language utilizing a graph datastructure for syntax. Currently in super-early-alpha-don't-actually-use-this-for-anything development.
Development
Current efforts on ginger are focused on a golang-based virtual machine, which will then be used to bootstrap the language.
If you are on a machine with nix installed, you can run:
nix develop
from the repo root and you will be dropped into a shell with all dependencies (including the correct go version) in your PATH, ready to use.
Demo
An example program which computes the Nth fibonacci number can be found at
examples/fib.gg
. You can try it out by doing:
go run ./cmd/eval/main.go "$(cat examples/fib.gg)" 5
Where you can replace 5
with any number.