 			Mono JScript .Net Compiler

			    Cesar Lopez Nataren
		          (cesar@ciencias.unam.mx)
				    2003

Structure: Divided by compilation phase.

Lexical Analysis: We use a ported version of the parser from Mozilla's
Rhino (Token.cs, TokenStream.cs and Parser.cs)
The public API exposed by namespace Microsoft.JScript are:
- JSToken
- JSScanner
- Context
- DocumentContext


Syntax Analysis and Abstract Syntax Tree construction:

Now we use a ported version of the Parser from Mozilla/Rhino. If you
want to hack on the parser:

	- Add the extensions from MS, like classes, interfaces, etc.

- AST
- ASTList
- ArrayLiteral
- BinaryOp
- Binding *
- BitwiseBinary
- Block
- DebugBreak *
- Enum
- Equality
- Eval
- ForIn *
- FunctionDeclaration (used at runtime, too).
- FunctionExpression
- Import (used at runtime,too).
- JSParser
- JScriptParser is the parser generated by Antlr.
- Literal
- NumericBinary (used at runtime, too).
- Package
- Print
- ScriptBlock
- Statement (we could delete this one)
- Throw
- Try
- UnaryOp
- VariableDeclaration
- VariableStatement
- With


Visual Studio for Applications (VSA), execution support:
- BaseVsaEngine
- GlobalScope
- IRedirectOutput
- VsaEngine
- ActivationObject
- ScriptObject
- IActivationObject

Some other execution support classes:
- JSLocalField
- JSFunctionAttribute
- JSFunctionAttributeEnum


Object System:
- JSObject
- BooleanObject
- ArrayObject
- DateObject
- EnumeratorObject
- ErrorObject
- EvalErrorObject
- FunctionObject
- GlobalObject
- IActivationObject
- JSPrototypeObject
- MathObject
- NumberObject
- RegExpObject 
- StringObject
- VBArrayObject

- ArrayPrototype
- BooleanPrototype
- DatePrototype
- EnumeratorPrototype
- ErrorPrototype
- FunctionPrototype
- NumberPrototype
- ObjectPrototype
- RegExPrototype
- StringPrototype
- VBArrayPrototype


Non-strict object system:
- LenientGlobalObject
- LenientMathObject

- LenientArrayPrototype
- LenientBooleanPrototype
- LenientDatePrototype
- LenientEnumeratorPrototype
- LenientErrorPrototype
- LenientFunctionPrototype
- LenientMathObject
- LenientNumberPrototype
- LenientObjectPrototype
- LenientRegExpPrototype
- LenientStringPrototype
- LenientVBArrayPrototype

I/O support:
- ScriptStream


Utils:
- Convert
