Mako
Lightweight, efficient Lua-like scripting language with a Go backend!
the go mod is git.sharkk.net/Sharkk/Mako
Lexing & Parsing
Recursive descent + Pratt parsing. Scanner should move through tokens with virtually no allocations. Easy-to-consume AST for bytecode compilation.
VM
Stack-based VM, register-based optimizations where it makes sense for performance, and a very minimal bytecode format to preserve space.
Memory Management
Go's GC is robust and can be used for most needs; the internals can pool commonly used structures to reduce pressure.
Syntax
Lua-like, but with more minimalism and eventually some syntactic sugars.
// C style comments
// No local for variable definitions; the local behavior should be implicit
x = "foo"
y = "bar"
fn add(a, b)
return a + b
end
echo add(x, y) // Outputs: foobar
if expression and expression2 then
res = add(1, 2)
elseif otherExpression() then
// do other stuff
else
// final thing
end
Description
Languages
Go
100%