amoeba-interpreter

command module
v0.0.0-...-43a95db Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 29, 2021 License: MIT Imports: 2 Imported by: 0

README

Amoeba Interpreter

An interpreter for the Amoeba programming language. Written from scratch in Go with no dependencies 🎉

Amoeba Screenshot

Features

  • C-like syntax
  • variables (integers, booleans, strings, arrays, objects)
  • arithmetic expressions
  • first-class and higher-order functions
  • closures
  • builtin functions:
    • amoeba(): prints out awesome ascii art
    • len(ARRAY or STRING): returns length of string or array
    • push(ARRAY, ANY): adds new item to array (does not mutate)
    • first(ARRAY): returns first item in array
    • rest(ARRAY): returns all but first item in array
    • last(ARRAY): returns last item in array
    • print(ANY, ANY, ...): prints out to the console

Give it a try!

Clone

  1. git clone https://github.com/ASteinheiser/amoeba-interpreter.git
  2. cd amoeba-interpreter

Then pass a file path as an argument

./amoeba-interpreter -file=amoeba-test-program.txt

OR use the REPL

./amoeba-interpreter

REPL Screenshot

Local Dev

  1. Install Go
  2. git clone https://github.com/ASteinheiser/amoeba-interpreter.git
  3. cd amoeba-interpreter
  4. go run main.go

Run the test suite

You can run the tests for a sub-module individually as long as it has a *_test.go file:

go test ./ast/
go test ./lexer/
go test ./parser/
go test ./evaluator/

OR you can run all the tests at once:

./run-tests.sh

Tests Screenshot

Roadmap

  • add <= and >= operators
  • add postfix operators (such as ++)
  • prettier printing of function, array, and hash values
  • enhance error messages with line number and file name

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package ast is an Abstract Syntax Tree, which will be used to represent Amoeba programs as data that we can later evaluate
Package ast is an Abstract Syntax Tree, which will be used to represent Amoeba programs as data that we can later evaluate

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL