Monkey is a C-like interpreter for the monkey language that is built in the book "Writing an interpreter in Go" by Thorsten Ball.
Before you begin, ensure you have met the following requirements:
- You have knowledge of programming and can do so in Go.
- You have Go v1.7+ installed.
- Function literals.
- First class and Higher Order Functions.
- Closures.
- Variable Bindings.
- Prefix and Infix operations.
-  Builtin Data types;
- Booleans.
- Strings.
- Hashes.
- Integers.
- Arrays.
 
- Builtin functions
-  lenfor length of iterables.
-  firstfor first element in an array.
-  lastfor the last element in an array.
-  restfor the elements in an array except the first.
-  pushto add a new element to the end of the array.
 
-  
- Read source code input from files.
- Support Unicode characters.
- Support floating point numbers.
- Postfix operations [?].
- Improve Syntax errors and stack errors.
- Add support for multiline strings.
- Improve string lexing i.e. check for opening and closing double quotes.
To install monkey, follow these steps:
- 
Clone this repository and then: $ cd monkey
- 
And then build a binary $ go build cmd/* -o monkey
- 
Finally run the binary $ ./monkey
To use monkey, follow these steps:
$ ./monkey
Hello mus!
            __,__
   .--.  .-"     "-.  .--.
  / .. \/  .-. .-.  \/ .. \
 | |  '|  /   Y   \  |'  | |
 | \   \  \ 0 | 0 /  /   / |
  \ '- ,\.-"""""""-./, -' /
   ''-' /_   ^ ^   _\ '-''
       |  \._   _./  |
       \   \ '~' /   /
        '._ '-=-' _.'
           '-----'
>> 1 + 1
3
>> let newAdder = fn(x) { fn(y) { x + y } };
>> let addTwo = newAdder(2);
>> addTwo(3);
5
To contribute to monkey, follow these steps:
- Fork this repository.
- Create a branch: git checkout -b <branch_name>.
- Make your changes and commit them: git commit -m '<commit_message>'
- Push to the original branch: git push origin <project_name>/<location>
- Create the pull a request.
If you want to contact me you can reach me at martinmshale@gmail.com.
This project uses the following license: MIT.