[Mono-devel-list] Javascript status
cesar lopez nataren
cesar at ciencias.unam.mx
Tue Jun 29 18:58:50 EDT 2004
On Tue, 2004-06-29 at 23:35 +0200, Joe Ante wrote:
> Hi,
Hello Joe
> Whats the status of javascript for mono?
This is the status:
We can divide the JScript support on Mono in two fields: compiler and
execution support.
** Currently our compiler (mjs) targets the ECMAScript3 language
specification (ECMA-262, [1]). It's divided on the following
phases: lexical analyzer, parser, semantic analyzer and code
generator.
* Lexical analyzer, currently our lexer does not take care of:
- automatic semicolon insertion process (see section 7.9 from
ECMA-262)
- RegExp grammar (see section 15.10 from ECMA-262),
- Construct NumericLiteral's in a less generic way.
* Parser,
- do not check [no LineTerminator here] condition on
ContinueStatement, BreakStatement and ReturnStatement (see section
12.7, 12.8 and 12.9 from ECMA-262).
- do not check [lookahead not in { '{', 'function'} }] condition from
ExpressionStatement (see section 12.4 from ECMA-262).
- LabelledStatement (see section 12.12 from ECMA-262),
- Block Vs ObjectLiteral non-determinism problem
(http://bugzilla.ximian.com/show_bug.cgi?id=52285),
- We do not allow elisions on ArrayLiteral (see section 11.1.4 from
ECMA-262).
- Trouble parsing NewExpression rule,
(http://bugzilla.ximian.com/show_bug.cgi?id=52286)
- Missing FunctionExpression rule on MemberExpression (see section
11.2 from ECMA-262).
* Semantic Analyzer, now we don't do any type inferencing (not
required by the ECMAScript spec but really desirable for better code
generation).
* Code generator, missing pieces:
- FunctionExpression (see section 13 from ECMA-262), not particular
problems are known.
- LabelledStatement, non-determinism problem if we add the rule to
the parser in the straighforward way (see section 12.12 from
ECMA-262).
- ReturnStatement (see section 12.9 from ECMA-262).
- for-in statement (see section 12.6 from ECMA-262).
- And the following expressions:
- MemberExpression (see section 11.2 from ECMA-262).
- NewExpression (see section 11.2 from ECMA-262).
- CallExpression (see section 11.2 from ECMA-262).
- LeftHandSideExpression (see section 11.2 from ECMA-262).
- PostfixExpression (section 11.3), UnaryExpression (section 11.4 from
ECMA-262),
** The execution support can be divided in: classes that allow the
execution of the code generated by mjs, this involves the classes
that
perform explicit operations like adding, dividing, etc. This
classes generally have a method named EvaluateFoo (object o1,
object2) which are the ones that perform the dynamic type checks
and perform the desired operation depending on the args received.
In the other side it's an engine that allows scripting on
applications
(VsaEngine or Visual Studio for Applications). Eric Lippert has
been throwing some insight related to scripting engines, this could
help us understand the way things must get done
(http://weblogs.asp.net/ericlippert/category/4480.aspx)
If you're interested on helping, drop me an email
Cesar
More information about the Mono-devel-list
mailing list