[x] Call methods on object, support for no-such-method
[x] Access global variable (outside current func scope)
[x] Support for the this keyword, bound to object
[x] Refactor native functions/stdlib as objects?
[x] arguments[] array to access all received arguments
[x] Add K values to DUMP instructions, as comments
[x] Bytecode compiler command-line
[x] Dynamic loading of .goblin source files (and/or compiled bytecode)
[x] Test file that runs all .goblin test data and compares output to expected
[x] Syntax
[x] Lexer
[x] Parser
[x] Module/package support (import "user/library")
[x] Code generation
[x] Ternary operator (?:)
[x] Refactor Ctx.Load() by returning only the compiled Module, and have Module.Run() (Val, error) to execute it. Pass the ctx in the constructor of the module (and to each function's constructor).
[x] Call a specific Goblin function from Go (get any *Func, possibly based on name?)
[x] Make import a built-in function, not a keyword (so import can happen in an if, for example)
Example: mod := import("dir/sub/mod")
[x] Make a debug built-in function or keyword, that takes a number as argument, to generate a DUMP (then debug the ternary operator bug for test file 19)
[x] len() builtin, returns the number of items in an object if it is an object, the length of the string representation of the value otherwise
[x] Make assignment to builtins/keywords fail
[x] Cyclic dependencies don't work anymore now that Ctx.Load doesn't Run the modules
[x] Support standard for loop (for i := 0; i < 10; i++)
[x] test use as script in #!
[x] Stdlib
[x] Emitter tests to validate statements generation (i.e. an if, if else, func within a func within a func, etc.)
[x] A complex-ier implementation of an agora program (a JSON parser/stringifier)
[x] Finalize stdlib tests
[x] Finalize stdlib docs
[x] Review all docs, comments for godoc.org
Docs:
[x] Internals + Native API on godoc
[x] Readme with changelog, quick start, short example, links to docs, to contributing, and license
[x] Wiki for language docs by version (ie: all pages for v0.1, then copy for v0.2, ...): installation/Getting started (detailed), similarities & differences vs Go, language reference, VM opcodes, roadmap, stdlib, known bugs (with links to issues), how to write native modules
this
keyword, bound to objectCtx.Load()
by returning only the compiled Module, and haveModule.Run() (Val, error)
to execute it. Pass the ctx in the constructor of the module (and to each function's constructor).import
a built-in function, not a keyword (so import can happen in anif
, for example) Example:mod := import("dir/sub/mod")
debug
built-in function or keyword, that takes a number as argument, to generate a DUMP (then debug the ternary operator bug for test file 19)len()
builtin, returns the number of items in an object if it is an object, the length of the string representation of the value otherwisefor
loop (for i := 0; i < 10; i++
)Docs: