Skip to content

Releases: bradford-hamilton/monkey-lang

v0.3.0

15 Feb 21:43
Compare
Choose a tag to compare

Changelog

v0.2.5

16 Dec 00:50
Compare
Choose a tag to compare

Changelog

c29313d add ability to have question marks in your identifiers like: has_attribute?

v0.2.1

13 Nov 04:12
Compare
Choose a tag to compare

Changelog

5d95d57 try creating a tap for monkey lang

v0.2.0

13 Nov 00:53
Compare
Choose a tag to compare

Changelog

99bb768 Add -, *, / arithmatic
4bd868e Add OpPop for popping the last thing left on the stack and start building out subtraction, multiplication, and division
413173a Add a basic repl and main entry point that starts it. For now repl just prints tokens
724c541 Add ability to analyze a majority of the syntax into tokens (=, +, -, , /, <, >, !, ==, !=, (, ), {, }, ;, identifiers, numbers, and keywords)
d940e59 Add ability to use multi line comments with /
*/
fa7c454 Add all of monkey’s prefix and infix operators
0387e4d Add basic environment functionality to store variables from let statements
52b1f17 Add builtin function for arrays: “pop”
d51a5c5 Add code coverage into travis build
c021c90 Add engine flag to choose between evaluator/interpreter or compiler/bytecode execution. Add console flag to enter repl or pass file for execution (latter not implemented yet)
20a77a6 Add line numbers to error handling in evaluator
421c3e0 Add line numbers to every token from lexer. Will soon integrate into better error handling
ddfb8da Add line numbers to lexer, will extend to tokens for better error handling
6b7248e Add maps for prefix parse functions and infix parse functions on our Parser. When creating a new Parser, register appropriate prefix functions. Do this for identifiers and numbers so far.
630db79 Add more work towards closures using free symbols
7d33ce6 Add postfix operations (++ and —-) to evaluator
4b3106d Add some initial support for native functions. Right now just len for string length
74bcbfd Add support for <= and >= in both evaluator & bytecode/compiler/vm
6cc2ff7 Add support for comparisons and arithmetic!!
61cf2a3 Add support for consts in evaluator as well as bytecode/compiler/vm. At this point it is essentially a clone of let statements -> once reassignment is supported consts will not have the ability to be reassigned
2e80006 Add support for modulo in evaluator
9f800a7 Add support for modulo operator in bytecode/compiler/vm
a3318e7 Add support for single line comments
4a1d9d2 Add support for string comparisons using == and !=
166ea34 Add support for strings
de91298 Add tests around enclosing environments and closures
a06b79d Add tokens for && and ||
3fbda7a Adjust real to print parsed code… and a neat monkey face error message
ac5c0ac Begin closures implementation… all functions are a closure
3e29634 Begin work on the VM, OpConstant working being pushed onto the VM stack
2dc5a26 Begin writing parser to parse tokens into an AST. Parsing of statements mostly complete
8703845 Can’t believe I came this far with this bug
d56203f Change puts to print and add logical operator example to program.mo
f023457 Create LICENSE
582e165 Decided to change number to integer
37d0b5c Finish closures
c9df598 Finish hashes, ensure ability to evaluate hash literals and get values by key with index like syntax
dcf741a Finish implementing conditionals and make sure vm is null safe
0575d6a Finish most of the implementation around conditionals using opcode jumps
4d94f87 Finish test coverage on ast
302fda6 Finish up by creating a benchmark tool. Takes either —engine=vm or —engine=eval
9e9d80f Fix misspellings in comments
008b481 Implement a nice base around hash maps
436d851 Implement addition in bytecode/compiler/vm
175748f Implement an ObjectType struct that wraps all monkey values, start work on the evaluator for Integers, and update the REPL to actually be a REPL and now evaluates the integers
e48ce67 Implement arrays, hashes, and index access for both
269e467 Implement builtin functions in compiler/vm
3d3b532 Implement function calls and ensure variable environment integrity
c385b09 Implement if & return evaluation. Begin setting up error handling
011aeb1 Implement if expressions, functions, call expressions. Parser is generally ready to roll!
ed90e7d Implement infix (binary) expressions, booleans, and a lot of Pratt parsing precedences for operators, etc
5681a19 Implement let statements with a global store of symbols through a symbol table
2aa53a8 Implement postfix operators ++ and -- in bytecode/compiler/vm
d688e9f Initial commit - create basic lexer and token types and give basic scanning functionality
51261b9 Introduce binaries for multiple platforms with goreleaser
bd87514 Merge branch 'master' of github.com:bradford-hamilton/monkey-lang
859a271 Merge pull request #1 from bradford-hamilton/add-license-1
8bed6dd Modify the AST and it’s nodes to have ability to return the whole program as strings and write simple test for it
a01767f Rename native to builtin (good enough for go, good enough me!) and add len, first, last, rest, and push to arrays!
2a58ad1 Set up parser to handle && and ||
1d1ee9b Start building on travis
b4fbe72 Start implementation for functions and compilation scope
d2954ce Start implementing conditionals through opcode jumps
75151e6 Start implementing null in bytecode/vm
d89487b Start set up for if expressions and block statements
33cd658 Start some base work on compiler and bytecode
f7361d9 Update constants to camelcase -> go naming convention
9981a77 Update evaluator to handle && and ||
c40fb48 Update lexer to work with runes instead of bytes
c735c73 Update pop to return a copy of the array without last element instead of returning the last element
c2cd131 add Function struct to monkeys object types
e4b1c51 add a gitignore.. better late then never
3174b85 add a good chunk of array functionality
c4f86cb add ability to print messages!
344be1f add another set of tests for many of monkeys objects
7a08484 add comment for operator precendence constant declarations
5ab0daa add const function example to program.mo and fix a comment
58088e5 add current go version badge
9fa85b7 add functionality for parsing prefix expressions
7a33323 add reference to compiler book -> the next part of monkey lang
04d3fd9 add some simple object tests
3510a7d add support for && and || logical operators in bytecode/compiler/vm
63d3a93 add tests for hash
1e6a9db add tests for postfix expressions in ast
adfc0b5 implement arrays in compiler/vm
345433f implement local variables, nested variable scopes (symbol tables), frames for function calls, function parameters
ea4c773 implement strings and string concatenation for compiler/vm
da27372 keep increasing test coverage in objects
d37059a refactor project for clarity/modularity
cd48f8f start adding builtins tests
4e140b7 start adding tests for a bunch of ast statements
d7693b3 test all current builtins
093cc1f update go from 1.11.5 -> 1.12.9, update badge
22f04db update travis go version

Initial pre-release

28 Aug 01:51
Compare
Choose a tag to compare
Initial pre-release Pre-release
Pre-release

Initial release of monkey as designed in https://interpreterbook.com and https://compilerbook.com with some small alterations and the ability to run monkey files in addition to the interactive console.