mherkender / lua.js

An ECMAscript framework to compile and run Lua code, allowing Lua to run in a browser or in Flash
http://blog.brokenfunction.com/
600 stars 73 forks source link

loadstring behaves differently #32

Open dgjxqz opened 11 years ago

dgjxqz commented 11 years ago

3 Issues:

  1. Arguments not passed to the top level function of a parsed chunk (via ...).
  2. Parsed chunk has it's own global environment.
  3. Lua understands calling function with func()() but javascript needs () around i.e. (func())()

From command line,

% lua -e 'var=123 loadstring"print(var,...)"(456)'

gives:

123     456

In chrome,

<script src=lua+parser.min.js></script>
<script>lua_load('var=123 loadstring"print(var,...)"(456)')();</script>
<script>lua_load('var=123 (loadstring"print(var,...)")(456)')();</script>
<script>lua_load('var=123 (loadstring"print(var)")(456)')();</script>

gives:

Uncaught Error: Parse error on line 1:
...print(var,...)"(456)
-----------------------^
Expecting '(', ':', '.', 'STRING', '{', '[', got 'EOF' lua+parser.min.js:127
Uncaught ReferenceError: varargs is not defined
undefined lua+parser.min.js:16