Mono JScript .Net Compiler Cesar Lopez Nataren (cesar@ciencias.unam.mx) 2003 Structure: Divided by compilation phase. Lexical Analysis: We use the Antlr [1] lexer generator for producing the one needed for our compiler. But, the Microsoft.JScript namespace, exposes some classes related to that task. Those are: - JSToken - JSScanner - Context - DocumentContext - JScriptLexer, this is the class generated by Antlr. Syntax Analysis and Abstract Syntax Tree construction: - 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 [1] You can get info about it at: http://antlr.org