Age | Commit message (Collapse) | Author | Files | Lines |
|
* module/language/lua/compile-tree-il.scm (while-loop->tree-il):
Generate `letrec' instead of `let'.
Generate valid `lambda' expression.
|
|
* module/language/lua/compile-tree-il.scm (make-sequence): New procedure.
|
|
* module/language/lua/compile-tree-il.scm: Rename.
|
|
* module/language/lua/compile-tree-il.scm (compile): Add clause for
ast-variable-arguments.
* module/language/lua/parser.scm (define-ast, make-parser): Add
vararg-gensym field to functions, gensym field to variable-arguments.
Propagate *vararg-gensym* from functions to variable-arguments.
* test-suite/tests/lua-eval-2.test ("lua-eval"): Check for #nil
|
|
values resulting from a function call as the last argument.
doc/ref/api-languages.texi: Add a small blurb about Lua.
module/language/lua/compile-tree-il.scm: Function calls now properly
handle multiple values resulting from a function call as the last
argument.
|
|
* module/language/lua/compile-tree-il.scm: Fix and/or double evaluation.
* module/language/lua/notes.org: Add file describing known issues.
* module/language/lua/parser.scm: (token-type): Recognize and/or.
* module/language/lua/standard/math.scm: Add modf, fmod implementations.
* test-suite/tests/lua-eval-3.test: Add another test file for basic
language features.
|
|
* module/language/lua/compile-tree-il.scm (compile): Get more lua code
returning via the normal path.
|
|
* module/language/lua/compile-tree-il.scm: Reflow a bit, and a number of
small rewrites. Added some FIXMEs.
|
|
* module/language/lua/runtime.scm (true?, false?): Remove, now that #nil
is false.
* module/language/lua/compile-tree-il.scm: Don't emit calls to true? or
false?.
|
|
* module/language/lua/common.scm: Remove `or-eqv?'. Make a bit more
idiomatic.
* module/language/lua/compile-tree-il.scm:
* module/language/lua/lexer.scm:
* module/language/lua/parser.scm:
* module/language/lua/runtime.scm: Replace or-eqv? instances with memq
or memv.
|
|
What is missing:
+ Functions: module, getfenv, setfenv, math.modf, table.sort
+ Parser: needs to be more flexible
+ Compiler: needs more extensive work to properly handle all possible
cases of variable arguments, multiple returns, and loops
+ Language: Variable arguments and unpacking of multiple returns. (For
example we need to be able to handle something as complex as
print(unpack({...})), which is easy with Lua's explicit stack but will
require lots of tree-il gymnastics, or perhaps modifications to better
allow different calling conventions. (For instance -- how would we
support Python or Ruby, where keyword arguments are gathered into a
hashtable and passed as a single argument?)
What is there:
A fair shot at supporting Lua 5.1, not quite a drop-in replacement, but
not far from that goal either.
|