| JE documentation | view source | Contained in the JE distribution. |
JE::Code - ECMAScript parser and code executor for JE
use JE;
$j = new JE;
$code = $j->compile('1+1'); # returns a JE::Code object
$code->execute;
The execute method of a parse tree executes it. All the arguments are
optional.
The first argument will be the 'this' value of the execution context. The global object will be used if it is omitted or undef.
The second argument is the scope chain. A scope chain containing just the global object will be used if it is omitted or undef.
The third arg indicates the type of code. 0 or undef indicates global
code.
1 means eval code (code called by JavaScript's eval function,
which
has nothing to do with JE's eval method, which runs global code).
Variables created with var and function declarations
inside
eval code can be deleted, whereas such variables in global or function
code cannot. A value of 2 means function code, which requires an
explicit return
statement for a value to be returned.
If an error occurs, undef will be returned and $@ will contain the
error message. If no error occurs, $@ will be a null string.
You can transfer a JE::Code object to another JavaScript environment by
setting the global object this way. You can also set it to undef, if,
for instance, you want to serialise the compiled code without serialising
the entire JS environment. If you do that, you'll need to set the global
object again before you can use the code object.
WARNING: The parameter list is still subject to change.
This routine append a string such as 'at file, line 76.' to the error message passed to it, unless it ends with a line break already.
$code_object is a code object as returned by JE's or JE::Parser's
parse method. If it is omitted, the current value of $JE::Code::code
will be used (this is set while JS code is running). If $JE::Code::code
turns out to be undefined, then $message will be returned unchanged
(this is subject to change; later I might make it use Carp to add a Perl
file and line number).
$position is the position within the source code, which will be used to
determine the line number. If this is omitted, $JE::Code::pos will be used.
add_line_number can optionally be exported.
| JE documentation | view source | Contained in the JE distribution. |