[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

* Lexical analyzer, currently our lexer does not take care of:
  - automatic semicolon insertion process (see section 7.9 from

  - 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

  - We do not allow elisions on ArrayLiteral (see section 11.1.4 from

  - Trouble parsing NewExpression rule,

  - 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

* 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

  - 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

** The execution support can be divided in: classes that allow the
   execution of the code generated by mjs, this involves the classes
   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
   (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

If you're interested on helping, drop me an email


More information about the Mono-devel-list mailing list