1 2004-06-24 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
3 * jscript-lexer-parser.g: added ast building for object_literal,
4 it's disabled for now while I fix the "block Vs object_literal"
5 non-determinism problem on the parser. Added rule for
6 array_literal. Build PropertyName ast build.
7 * Literal.cs: fixed the negative numbers code generation (we must
8 optimize this). Added initial ObjectLiteral's class, code generation and
9 Resolve process. Added class ObjectLiteralItem and PropertyName.
10 * ArrayLiteral.cs: added internal size field as an ArrayLiteral can have
11 elisions we keep track of the "real" size here. Added constructor. Added initial
12 Resolve and Emit code.
13 * ASTList.cs: added Size property.
14 * Globals.cs, ASTList.cs: Back to the useful namespace (M.J).
16 2004-06-20 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
18 * CodeGenerator.cs: Added LoopBegin and LoopEnd to EmitContext, they are used by
19 break and continue in order to jump to the desired place. Added
20 check for converting to boolean if we encounter an identifier (at need_convert_to_boolean).
21 * Statement.cs: class If.Emit, call fall_true instead of fall_false so we don't
22 need to jump if the expression evaluates to true. Continue class,
23 replaced ParentIsItrStm with InLoop, emit jump to correct
24 place. Break class, implemented Resolve; deleted
25 ParentIsCorrect. DoWhile, While classes, set LoopBegin and
26 LoopEnd. While class, set LoopBegin and LoopEnd.
27 * ast.cs: Added InLoop and InSwitch.
28 * jscript-lexer-parser.g: pass parent to break_stm. Added block as
29 a statement. Temporarily disabled object_literal in order to test
30 the block structure and continue and break statements.
32 2004-05-28 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
34 * Statement.cs: changed parent_is_itr_stm method to ParentIsItrStm
35 property. Added initial pieces for Break's Resolve. Fixed bug that
36 did not let Emit the code for case clauses that came after the
37 default clause (we match the jsc behavior).
38 * jscript-lexer-parser.g: set parent of switch's clauses.
40 2004-05-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
42 * Statement.cs: added parent as a parameter on Continue constructor. Added parent_is_itr_stm
43 * jscript-lexer-parser.g: set parent hierarchy for continue
44 statement. Set to correct parent in iteration_stm.
46 2004-05-24 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
48 * StrictEquality.cs, JSFieldInfo.cs: got it back to Microsoft.JScript namespace.
50 * Statement.cs: Added code generation support for 'switch' statement.
52 * jscript-lexer-parser.g: added 'using' for
53 System.Collections. Allow 'switch' statement building of its
54 ast. Added parent parameter to constructor of With. Build
57 * With.cs: code generation support for 'with' stm.
59 2004-05-21 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
61 * Statement.cs: initial code generation of 'for'.
62 * jscript-lexer-parser.g: let's build for's ast.
64 2004-05-18 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
66 * jscript-lexer-parser.g: let's build Try/Catch/Finally ast.
67 * expression.cs: handle Try case for field or local vars allocation.
68 * Try.cs: implemented Emit.
69 * Throw.cs: implemented code generation.
70 * FunctionDeclaration.cs: cache some values.
72 2004-04-26 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
74 * FunctionDeclaration.cs: let's make function name formation
75 (get_name ()) a little bit less dumb. We cache the prefix now so
76 we don't have to recalculate it everytime.
78 2004-04-22 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
80 * Literal.cs: emit the correct code for negative numbers.
81 * jscript-lexer-parser.g: set parent unary_expr.
83 2004-04-18 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
85 * expression.cs: added code generation for 'x1 ? x2 :x3' op.
86 * Statement.cs: Added code generation for while and do-while.
88 2004-04-17 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
90 * Statement.cs (class if): reimplemented Emit based on fall_false.
91 * Equality.cs: added code generation for != and emit jumping code
92 only in the case we are at a global expression not statement.
93 * CodeGenerator.cs (fall_true, fall_false): Check if convertion to
94 boolean needed. Made emit_to_boolean internal. Added need_convert_to_boolean.
96 2004-04-14 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
98 * expression.cs (Binary.Emit): treat boolean operator
99 specially. Added emit_jumping_code.
100 * CodeGenerator.cs: Added emit_to_boolean. Added fall_true and
101 fall_false, which will express all boolean expressions and control
104 2004-04-02 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
106 * Equality.cs: Moved the Emit and Resolve code here.
107 * jscript-lexer-parser.g: Build a Equality object instead of a
108 Binary object for equality_expr.
109 * expression.cs: moved equality oeprators (resolve and IL gen) to
110 Equality.Emit and Equality.Resolve.
112 2004-03-31 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
114 * expression.cs: Added shift operators IL emit.
115 * BitwiseBinary.cs: added constructor for building it according to
116 JSToken enum. return a new object on EvaluateBitwiseBinary (this
117 needs a real implementation).
118 * expression.cs: added code for evaluation of bitwise operators at emit_op_eval.
120 * Statement.cs: added stub for While and DoWhile ast
121 representation (reworking my Emit code).
122 * jscript-parser-lexer.g: allow iteration statement ast build.
124 * FunctionDeclaration.cs: agrouped code for setting custom attribute.
126 * expression.cs: added Modulo operator case.
128 2004-03-16 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
130 * Convert.cs: added rule for string conversion.
132 * Plus.cs: added rule for string addition.
134 * PostOrPrefixOperator.cs: added constructor, returned to Microsoft.JScript ns, initial Resolve and
135 Emit (cases where there's no real operator).
137 * StringLiteral.cs: now implements Exp as can appear as a simple
138 exp in global code. Added check for Pop generation.
140 * expression.cs: added IL generation code for print func call.
141 Args class added get_element, Size and made Resolve behave as the
142 others (collect the differents Resolve's return values from each
143 of the arguments). Expression class, added default Resolve call
144 for non-Exp implementers.
146 * jscript-lexer-parser.g: postfix_expr rule now returns a simple
147 AST, this handles the case where no postOrPrefixOp present; Unary
150 * FormalParameterList.cs: added get_element, retrieves nth element.
152 2004-03-14 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
154 * ScriptStream.cs: let's print some messages.
156 * jscript-lexer-parser.g (STRING_LITERAL): Do not include the ' in the text of the rule.
158 2004-03-13 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
160 * jscript-lexer-parser.g: keep track of return's parent.
161 * Statement.cs: added parent parameter to constructor.
163 * expression.cs: refactored Emit code from Identifier, now we take
164 care of function's paramenter references. First attack to function
165 calls, check if Resolve from Call succeed.
167 * VariableDeclaration.cs: Deleted Decl class, field_info and
168 local_builder fields were being used only by VariableDeclaration,
169 I'll keep them there.
171 * FormalParameterList.cs: added field pos to FormalParam, and set
172 it at FormalParameterList's Resolve stage.
174 * TODO: updated TODO.
176 2004-03-07 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
178 * jscript-lexer-parser.g: build If's ast. Keep track of expr parent.
180 * expression.cs: At class Conditional renamed fields. Class
181 Expression inherits from Exp as we must keep track if we must pop
182 the last value (this is for the comma operator), track the parent,
183 at Resolve we take care of the last value of the expression,
185 * VariableDeclaration.cs: updates needed because of EmitContext change.
187 * Statement.cs: added parent param to If constructor. Implement
188 Resolve and Emit for If statement.
190 * Relational.cs: Set parent. The boxing happens in the containing statement.
192 * FunctionDeclaration.cs: Added func_type field, will be used to determine the
193 type of the function we are generating (global function, method
194 from a class, etc) and attach to it the correct custom
195 attribute. Simplified the code for nested functions:
196 refactored the code so no code duplication is involved, now we
197 have only one function that retrieves the name of the function,
198 now create a new EmitContext for the body of the method.
200 * FormalParameterList.cs, Literal.cs, StringLiteral.cs: use
201 current EmitContext's ILGenerator.
203 * Convert.cs: Do not throw the NotImplementedException anymore for
204 method ToBoolean, for now we always return false. This must get a
207 * CodeGenerator.cs: Deleted one of ILGenerator fields
208 from EmitContext, suffices using only one (more notes about the
209 change on the Functiondeclaration entry). Imitate jsc behavior for
210 compiled files names, aggregate the exe or dll extension after last dot.
212 * Block.cs: In order to implement the comma operator (i.e., expression,
213 assign_exp), we must track if our expressions are at a global
214 scope, in which case we must pop the last result too.
216 2004-01-25 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
218 * Relational.cs: Initial generation of CIL for relational operators.
220 2004-01-23 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
222 * jscript-lexer-parser.g: formal_param_list receives a parent too.
224 * SymbolTable.cs: added size and current_symbols properties.
226 * JSLocalField.cs: don't throw not ImplementedException from
227 constructor (same reason, testing purposes, must get implemented
230 * IdentificationTable.cs: added num_of_locals and current_locals properties.
232 * FunctionDeclaration.cs: added a LocalBuilder and DictionaryEntry
233 as fields. Not throw NotImplementedException for
234 JScriptFunctionDeclaration (testing purposes, must get implemeted
235 for real). Let's build our function closures! Added functions:
236 build_closure and build_closure_nested, build_local_fields. Keep
237 track of current parameters and locals defs.
239 * FormalParameterList.cs: made FormalParam inherit from
240 AST. Implement the Emit for parameters, yeah!
242 * CodeGenerator.cs: added a ModuleBuilder reference. New constructor.
244 * Closure.cs: do not throw the exception (this allow me to run the
245 tests at mcs/jtests and check that at least i'm not generating
246 invalid CIL). Be aware that this must be really implemented.
248 * Block.cs: renamed field, and implement the double pass for
249 nested function declarations code emittion, yeah!.
251 2004-01-16 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
253 * Microsoft.JScript/VsaReferenceItem.cs: renamed field, reuse parent's ctr.
254 * Microsoft.JScript/VsaItem.cs: renamed some fields, added ctr,
255 * Microsoft.JScript/VsaGlobalItem.cs: reuse parent ctr.
256 * Microsoft.JScript/VsaCodeItem.cs: reuse parent ctr.
257 * Microsoft.JScript/GlobalScope.cs: reuse constructors from parent.
259 * UnaryOp.cs: inherit from Exp now.
260 * Plus.cs: Don't throw the exception when calling constructor, let
261 it build the default handler. Return a new object when calling
262 EvaluatePlus until properly implemented.
264 * NumericUnary.cs: added new Resolve.
265 * NumericBinary.cs: assign operator val at ctr. Return a new
266 object when calling EvaluateNumericBinary until properly
267 implemented. Added Resolve.
268 * Equality.cs: added ctr and return false for EvaluateEquality
269 until properly implemented. Added Resolve's functions.
271 * Block.cs (Resolve): That check was not necessary.
273 * InstanceOf.cs, PostOrPrefixOperator.cs, Relational.cs,
274 StrictEquality.cs, TypeOf.cs: added Resolve inherited from
275 BinaryOp and UnaryOp, and this from Exp.
276 * IdentificationTable.cs, ScriptBlock.cs: deleted debugging messages.
277 * jscript-lexer-parser.g: deleted debugging messages. Create a
278 Assign object instance of a simple Binary obj. Same case for Equality.
280 * expression.cs: added Exp abstract class. Classes that are ast of
281 language constructions that can appear as global expressions that
282 get evaluated and then the result is discarded inherit from this
283 new class. This let meee keep track of things that must get Popped
284 or can even avoid the evaluation of it. Wrote real Resolve method
285 for classes: Unary, Binary.
286 Implemted Emit method for some binary operations (+, -, / and *),
287 for other operators some more code is still missing.
288 Identifier: handle assignment cases and global exp cases.
289 Added class Assign (compisite assignment still missing tough :-(
291 * driver.cs: deleted debug messages, added "Compilation Succeeded"
293 * VariableStatement.cs, VariableDeclaration.cs: wrote real Resolve method.
294 * Literal.cs (BooleanLiteral, NumericLiteral): now inherits from
295 Exp and handle the case for global expressions that must be popped
296 after evaluation. no more invalid IL being generated! yeah!
297 * Block.cs: wrote real Resolve method, erased debug messages.
298 * BitwiseBinary.cs, InstanceOf.cs, UnaryOp.cs: : add new Resolve inherited from Exp.
299 * BinaryOp.cs, Conditional: now inherits from Exp.
301 2004-01-15 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
303 * ReferenceAttribute.cs: moved it back to namespace Microsoft.JScript.
305 * CodeGenerator.cs: small fixes to generate same things that ms.
307 2004-01-13 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
309 * VariableDeclaration.cs: get the this.type which is a Type not a TypeBuilder.
311 2004-01-12 Atsushi Enomoto <atsushi@ximian.com>
313 * JSMethodInfo.cs : tiny fix for NET_2_0 build.
315 2003-12-24 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
317 * jscript-lexer-parser.g: keep track of parent reference for
318 IDENTIFIER, STRING_LITERAL.
320 * expression.cs: Added 'binding' field. Added 'parent' parameter
321 to constructor. Now we emit the proper code for the identifier.
323 * VariableStatement.cs: updated to field names instead of the old
326 * VariableDeclaration.cs: Added class Decl, it constains the
327 references to the static field or LocalBuilder that are created
328 when a declaration is emitted. Deleted unuseful properties (Id,
331 * SymbolTable.cs: Deleted Retrieve method. Contains now returns an
332 object instead of a boolean.
334 * StringLiteral.cs: Deleted unuseful properties. Use ig instead of ec.ig.
336 * IdentificationTable.cs: Deleted Retrieve method. Contains method
337 now return an object instead of a boolean, that reference is the
338 binding associated with the identifier being searched.
340 2003-12-18 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
342 * jscript-lexer-parser.g: Keep track of parent for numeric_literal.
344 * VariableDeclaration.cs: now I handle initialization (ex. var x =
345 2; or function f () { var x = 4; }) at global scope or at
348 * Literal.cs: Added parent param to NumericLiteral constructor.
350 * FunctionDeclaration.cs: Added Ret opcode for all function declaration bodies.
352 2003-12-17 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
354 * CodeGenerator.cs: Added IL emittion for ldnull on default ending code for 'Global Code'.
356 2003-12-10 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
358 * jscript-lexer-parser.g: added 'tokens { IN = "in"; INSTANCE_OF =
359 "instanceof"; }' in order to be able to parse both keywords. When
360 generating the parser, one warning about nondeterminism
361 (k==1:"in") is generated ignore it.
363 2003-12-07 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
365 * jscript-lexer-parser.g: things like 'new Point (10, 20).x' were
366 not parsable now they are. Mozilla's and Janet's test suites are
367 being really helpful.
369 2003-12-05 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
371 * jscript-lexer-parser.g: added check for non-null reference at
372 var_decl_list rule. Added single quote STRING_LITERAL lexical rule
373 and multiple lines comments rule.
375 * jscript-lexer-parser.g: Now I keep track of the parent for most
376 of the syntatic constructs. Fixed object_literal rule.
378 * ast.cs: Added field parent. This will help me to track nested
379 blocks for all of the syntatic constructs and will allow to Emit
380 everything in one single pass.
381 * FunctionDeclaration.cs, FunctionExpression.cs: Rearranged the
383 * Block.cs, FunctionObject.cs: deleted parent field as AST will
384 hold it. Delete parent parameter from constructor.
385 * CodeGenerator.cs: Add field gc_ig (global code IL generator) to
386 EmitContext class. The idea is Emitting everything in one pass (decls
387 and 'Global Code' method, the parent reference let me know which IL
388 generator use, gc_ig or ig).
389 * Equality.cs, BooleanLiteral, Relational.cs: Added new parameter to
390 constructor. Use new parent reference for choosing the IL
391 generator. NumericLiteral a 'hard coded' int32 IL emittion added
393 * StringLiteral.cs, Literal.cs (BooleanLiteral.Emit): now I use
394 the parent reference to infere which IL generator to use.
395 * VariableDeclaration.cs: deleted parent field. At Emit, now I use the parent
396 reference to infer which IL generator to use.
397 * expression.cs: Added paramenter parent to constructor of: Unary,
398 Binary, Conditional, Call.
400 2003-11-30 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
402 * expression.cs: Added new field to Call class, so it can handle more arguments.
404 * StringLiteral.cs (Emit) : Load the string value.
406 * Literal.cs: BooleanLiteral, Resolve always return true. Emit the value and box it to Boolean.
408 * CodeGenerator.cs: Set parent if 'JScript 0' to GlobalScope. Set
409 custom attribute. Build default 'JScript 0' constructor. Emit
410 default initial/final code of 'Global Code'. Create default
413 2003-11-29 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
415 * jscript-lexer-grammar.g: define new rule 'arguments' instead of
416 repeating hand written rule all around. Change "." for DOT, dumb
417 mistake by myself. Added rule new_expr. Now we handle properly the
418 call_expr rule (as defined on the spec), and added a new
419 argument. Added subrule new_expr to left_hand_side_expr rule.
421 2003-11-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
423 * expression.cs (Expression): implemented Emit.
425 * expression.cs (Binary): Emit now creates a local for the
426 different kinds of binary expressions (initial code for this).
428 * ast.cs: Emit method now is abstract instead of virtual.
430 * CodeGenerator.cs: changed no_global_code_method to is_global_code_method.
432 * ASTList.cs, ArrayLiteral.cs, BitwiseBinary.cs, DebugBreak.cs,
433 Enum.cs, Equality.cs, Eval.cs, ForIn.cs, FormalParameterList.cs,
434 FunctionExpression.cs, Import.cs, InstanceOf.cs, Literal.cs,
435 NumericLiteral, NumericBinary.cs, NumericUnary.cs, Package.cs,
436 Plus.cs, PostOrPrefixOperator.cs, Print.cs, Relational.cs,
437 Continue, Break, Return, StrictEquality.cs, StringLiteral.cs,
438 Throw.cs, Try.cs, TypeOf.cs, VariableDeclaration.cs, With.cs,
439 Conditional, Call, Identifier, Args, Expression, :
442 * FunctionDeclaration.cs: Check if values are not null first (at
443 Resolve). Ignore code generation is at 'Global Code'.
445 * VariableDeclaration.cs: Now I take care of IL generation when we
446 are at statements and expressions at global code, 'Global Code'
447 method is populated with that IL.
449 * CodeGenerator.cs: Added flag for 'Global Code' method
450 emittion. Now I call 'Emit' twice. The first for declarations the
451 follower for statements and expressions at global scope.
453 2003-11-10 cesar lopez nataren <cesar@ciencias.unam.mx>
455 * Visitor.cs: Deleted.
457 2003-11-09 cesar lopez nataren <cesar@ciencias.unam.mx>
459 * FormalParameterList.cs: Now inherits from AST. Each of the
460 formal parameters gets into the IdentificationTable at Resolve.
462 * FunctionDeclaration.cs:Resolve (), We open a new block when
463 encountering a FunctionDeclaration, resolve de parameters and the
464 body, at the end we close the block.
466 * IdentificationTable.cs: Now we keep track of parent of the
467 current block. 'Enter (...)' now receives an object, not a
468 VarDecl. 'Contains' now take care of searching through the binding
471 * Literal.cs: Deleted 'Literal' class, was being used for
472 nothing. All the classes the inherited from it, now do it from
473 AST. A 'literal' does resolve to true by default.
475 * Relational.cs: Resolve recursively left and right.
477 * SemanticAnalyser.cs: added flag for 'print statement'.
479 * Statement.cs: 'If' class, resolves firstly the condition, the true_stm
482 * driver.cs: Init the semantic analysis phase.
484 * expression.cs: 'Unary' class, resolves its operand
485 first. 'Binary' class,resolves left and right first. 'Args' class
486 resolve all the formal parameters first. 'Expression' resolve all
487 the nested expressions first.
489 * jscript-lexer-parser.g: Replaced 'Literal' references for AST ones.
491 2003-11-08 cesar lopez nataren <cesar@ciencias.unam.mx>
493 * jscript-lexer-parser.g: Allow the building of numeric_literal and DECIMAL_LITERAL,
494 this is temporal in order to get Factorial compiled by mjs (must
495 build the types according to Ecma-262 spec).
497 * Literal.cs: Added NumericLiteral class.
499 2003-11-06 cesar lopez nataren <cesar@ciencias.unam.mx>
501 * FunctionDeclaration.cs: Build a ScriptFunction local variable,
502 if inside a nested block.
504 2003-11-05 cesar lopez nataren <cesar@ciencias.unam.mx>
506 * jscript-lexer-parser.g: Now we take care of parents. This allows
507 to keep track if we are inside nested blocks. At
508 'func_decl_or_expr', now I built the FunctionDeclaration or
509 FunctionExpression first and then assign its body to it - this let
510 me get a non-null value of the FunctionExpression or
511 FunctionDeclaration so I can detect if it's a nested block (thanks go to Jackson!).
513 * Block.cs, FunctionObject.cs, VariableDeclaration.cs: Added 'AST parent' field.
514 * Block.cs, FunctionDeclaration.cs, FunctionExpression.cs,
515 FunctionObject.cs, VariableDeclaration.cs: Added 'AST parent' parameter to constructor.
517 * ScriptBlock.cs: Initiate the global block with 'null' as parent.
519 * FunctionDeclaration.cs: Added 'get_composite_name ()' method
520 (gets the name of a function if it's nested). Emit code for
521 function's body. At 'Emit ()' now we take care if it's a nested
524 * FunctionObject.cs: default return type is 'void' not
525 'Object'. Function declarations without parameters map to functions with
526 'Object this' and 'VsaEngine engine' as parameters by
527 default. Assign parent to nested block.
529 * VariableDeclaration.cs: At 'Emit ()', now we take care if we are
530 a global declaration or inside a function declaration.
532 2003-11-04 cesar lopez nataren <cesar@ciencias.unam.mx>
534 * FunctionObject.cs: Handle no parameters on functions.
536 * jscript-lexer-parser.g: Allow functions without parameters.
538 2003-11-03 cesar lopez nataren <cesar@ciencias.unam.mx>
540 * ASTList.cs, ArrayLiteral.cs, BitwiseBinary.cs, Blocks.cs,
541 DebugBreak.cs, Enum.cs, Equality.cs, Eval.cs, ForIn.cs,
542 FunctionDeclaration.cs, FunctionExpression.cs, Import.cs,
543 InstanceOf.cs, Literal.cs, NumericBinary.cs, NumericUnary.cs,
544 Package.cs, Plus.cs, PostOrPrefixOperator.cs, Print.cs,
545 Relational.cs, ScriptBlock.cs, StrictEquality.cs, Throw.cs,
546 Try.cs, TypeOf.cs, VariableDeclaration.cs, VariableStatement.cs,
547 With.cs, expression.cs : Added
548 'Resolve' method stub.
550 * CodeGenerator.cs: Added a ILGenerator field to EmitContext.
552 * FormalParameterList.cs: Added FormalParam class. Change Add
553 method to receive the id and the type annotation from function's parameters.
555 * FunctionDeclaration.cs: Added code for initial function's
556 definition code generation.
558 * FunctionObject.cs: Added MethodAttributes and type_annot
559 fields. Added params_types function, which returns an array of
560 types from each of the function's parameters.
562 * IdentificationTable.cs: Added ToString method.
564 * SemanticAnalizer.cs: Fixed the file name (maybe I should erase it
565 and add it again with the correct name). Not based on the Visitor
566 pattern anymore. Deleted all the VisitFOO methods. Added a
567 IdentificationTable field. Added Run, Dump methods.
569 * Statement.cs: Deleted Statement class (it was being used for
570 nothing). All classes that were having Statement as parent,
571 changed their parent to be AST.
573 * SymbolTable.cs: Added Add method that receives the id and the
574 declaration class. Retrieve changed to return an AST. Added
575 ToString method. Added 'SymbolTable parent' field.
577 * VariableDeclaration.cs: Added InitValue property.
579 * ast.cs: Added some comments and abstract method 'Resolve'.
581 * jscript-lexer-parser.g: Added parsing support for formal
582 parameters type annotations.
584 2003-10-30 cesar lopez nataren <cesar@ciencias.unam.mx>
586 * jscript-lexer-parser.g: fixed function call parsing! yeah! (give
589 2003-10-28 cesar lopez nataren <cesar@ciencias.unam.mx>
591 * jscript-lexer-parser.g: allow empty program files. Added type
592 annotations on var decl and function decl.
593 * VariableDeclaration.cs: added return type annotation field.
594 * FunctionExpression.cs: added return type parameter to constructor.
595 * FunctionDeclaration.cs: added return type parameter to
596 constructor. Added Emit method (just creates the static field at
597 the global object, for now).
598 * FunctionObject.cs: added return type to constructor. Changed
599 names to readable ones ;-)
601 * ScriptStream.cs: added WriteLine.
603 2003-10-24 cesar lopez nataren <cesar@ciencias.unam.mx>
605 * ast.cs: Added 'virtual' Emit method (I might change it to be
606 abstract, but I would have to added to all classes that derive
607 from it. I'll do it later)
608 * Block.cs: Added Emit method.
609 * CodeGnerator.cs: Restructured it (not based on the Visitor pattern
610 anymore) - still missing some methods, ut on the way. A nice
611 hacking weekend coming. Added EmitContext class.
612 * ScriptBlock.cs: Added Emit method.
613 * VariableDeclaration.cs: Changed type field from string to
614 Type. Added Emit method.
615 * VariableStatement.cs: Added Emit method.
616 * driver.cs: Added CodeGeneration phase (only simple var
617 declarations support it. More coming soon).
620 2003-10-22 cesar lopez nataren <cesar@ciencias.unam.mx>
622 * statement.cs: added Return class.
624 * Throw.cs: Added expression field, constructor and ToString.
626 * jscript-lexer-parser.g: Allow return_stm and throw_stm tree
629 * With.cs: added constructor and ToString. Back to the non-tmp
632 * jscript-parser-lexer.g: allow with_stm tree building.
634 * jscript-lexer-parser.g: changed the return type from if_stm from
635 'If' to AST. Added tree for continue_stm. Allowed building of
638 * statement.cs: switched to internal 'If' class. Added Continue
639 class. Added Break class.
641 * jscript-lexer-parser.g: build tree for function decl or expr.
643 * FunctionDeclaration.cs: added internal constructor.
645 * FunctionExpression.cs: added internal constructor.
647 * FunctionObject.cs: added internal constructor and ToString method.
649 * jscript-lexer-parser.g: added building tree for if_stm.
650 * Statement.cs: Added if class for 'if' statement.
653 2003-10-21 cesar lopez nataren <cesar@ciencias.unam.mx>
655 * VariableDeclaration.cs: added the initializer to ToString.
657 * jscript-lexer-parser.g: Allow "christmas trees" (aka expression
660 * Block.cs, Equality.cs, Relational.cs: modified ToString
662 * Equality.cs, Relational.cs, StringLiteral.cs,
663 VariableDeclaration.cs: Added constructor
665 * VariableStatement.cs, ScriptBlock.cs: changed from hungarian
666 name convetion style to mono style.
668 * UnaryOp.cs: added operator and operand fields.
670 * VariableDeclaration.cs: chenged field name from assignExp to val.
672 * BinaryOp.cs: Made "internal" the attributes, added the two
675 * JScriptLexer.cs, JScriptParser.cs, JScriptParserokenTypes.cs,: updates from grammar changes.
677 * driver.cs: Dump the string representation of the parsed exps.
679 * Literal.cs: added BooleanLiteral
681 * Relational.cs: added constructor, ToString,
683 2003-10-10 cesar lopez nataren <cesar@ciencias.unam.mx>
685 * README: added some info about hacking the grammar
687 * JSparser.cs: Updated the constructor to not receiving params.
689 * JScriptLexer.cs, JScriptParser.cs, JScriptParserTokenTypes.cs,
690 JScriptParserTokenTypes.txt: update of antlr generated files from
693 * jscript-lexer-parser.g: Rewrote the EcmaScript grammar. Now we
694 can parse a little bit more useful programs like:
696 function factorial (i)
703 k = factorial (i - 1);
712 As you can see, it's not the classic factorial function
713 definition, I still have to make some tricks like storing the
714 result from the recursive call and then multiply. But this new
715 grammar it's easier to alter than the old one. Also we got support
716 for for-in statements, for statements, global expressions, support
717 for object accesors or better known as the "dot" operator. Two
718 rules are on the eye: left_hand_size_expr and call_expr, in order
719 to finish the parsing grammar and fix the bugs.
722 2003-09-29 <cesar@ciencias.unam.mx>
724 * Added: VsaGlobalItem.cs, VsaReferenceItem.cs, VsaCodeItem.cs
726 * Added VsaItem.cs, implements IVsaItem.
728 2003-09-28 <cesar@ciencias.unam.mx>
730 * VsaItems.cs: Check that no name is repeated (this was docs fault
731 :-)). This is the beauty of testing.
733 * Add VsaItems.cs, implements IVsaItems.
735 2003-09-22 <cesar@ciencias.unam.mx>
737 * DocumentContext.cs: changed constructor from internal to public,
738 this a kind of hack ;), but we can build mjs.exe with that change.
740 * driver.cs, ast.cs, VsaEngine.cs, VariableStatement.cs,
741 VariableDeclaration.cs, VBArrayConstructor.cs, StringObject.cs,
742 StringLiteral.cs, StringConstructor.cs, Statement.cs,
743 ScriptStream.cs, ScriptObject.cs, ScriptFunction.cs,
744 ScriptBlock.cs, RegExpObject.cs, RegExpConstructor.cs, Print.cs,
745 Package.cs, ObjectConstructor.cs, NumberObject.cs,
746 NumberConstructor.cs, MathObject.cs, Literal.cs,
747 LenientGlobalObject.cs, JSVariableField.cs, JSToken.cs,
748 JSScanner.cs, JSParser.cs, JSObject.cs, JSLocalField.cs,
749 JSFunctionAttributeEnum.cs, JSFunctionAttibute.cs, JSField.cs,
750 JSBuiltIn.cs, IVsaScriptScope.cs, IRedirectOutput.cs,
751 IActivationObject.cs, GlobalScope.cs, GlobalObject.cs,
752 FunctionObject.cs, FunctionExpression.cs, FunctionDeclaration.cs,
753 FunctionConstructor.cs, FormalParameterList.cs, ErrorObject.cs,
754 ErrorConstructor.cs, EnumeratorObject.cs,
755 EnumeratorConstructor.cs, Enum.cs, Empty.cs, DocumentContext.cs,
756 DateObject.cs, DateConstructor.cs, Context.cs, Closure.cs,
757 BooleanObject.cs, BooleanConstructor.cs, Block.cs, BinaryOp.cs,
758 BaseVsaEngine.cs, ArrayObject.cs, ArrayConstructor.cs,
759 ActiveXObjectConstructor.cs, ActivationObject.cs:
761 indentation comformance to mono style. Returned to
762 Microsoft.JScript namespace name. Now we can build
763 Microsoft.JScript.dll on Linux/Windows, and build mjs.exe on
764 linux/Windows with our Microsoft.JScript.dll. To build mjs.exe:
765 $(CSC) /r:Microsoft.JScript.dll driver.cs. Also changed my mind
766 about the namespace stuff, because I want people
767 to contribute NUnit tests for Microsoft.JScript public API.
769 * jscript-lexer-parser.g: Now we are back to Microsoft.JScript namespace.
771 2003-09-21 <cesar@ciencias.unam.mx>
773 * jscript-lexer-parser.g: fixed typo and added SEMI_COLON to print_statement.
775 2003-09-20 <cesar@ciencias.unam.mx>
777 * jscript-lexer-parser.g: We are little bit closer to the spec on
778 StringLiteral definition.
780 * jscript-lexer-parser.g: One line patch, the beauty of tests :-)
782 * jscript-lexer-parser.g: Build ast for FunctionExpression.
784 * JSObject.cs: we don't throw NotImplementedException anymore,
785 this let us use FunctionExpression to build the ast.
787 * FunctionExpression.cs: Added a FunctionObject as field, a
790 * FunctionObject.cs: Added default constructor.
792 * driver.cs: Deleted the Jsc class. We are not generating code
793 now. I'm moving to provide something like mcs's EmitContext
794 instead of the CodeGenerator class having the Reflection.Emit
795 builders and ILGenerator. This driver is just for Lexical and
796 Parsing phases testing.
798 * driver.cs: Now we are using the Microsoft.JScript public API
799 functions to load the lexer and parser.
801 * ScriptBlock.cs,Block.cs: Added ToString function.
803 2003-09-20 <cesar@ciencias.unam.mx>
805 * ASTList.cs, ArrayLiteral.cs, BitwiseBinary.cs, Block.cs,
806 DebugBreak.cs, Enum.cs, Equality.cs, Eval.cs, ForIn.cs,
807 FunctionExpression.cs, Import.cs, In.cs, InstanceOf.cs,
808 Literal.cs, NumericBinary.cs, NumericUnary.cs, Package.cs,
809 Plus.cs, PostOrPrefixOperator.cs, Print.cs, Relational.cs,
810 Statement.cs, StrictEquality.cs, StringLiteral.cs, Throw.cs,
811 Try.cs, TypeOf.cs, VariableDeclaration.cs, With.cs, ast.cs,
812 : erased Visit method and made some mono indentation style changes.
814 * CodeGenerator.cs: commented some function calls.
815 * FunctionDeclaration.cs: moved function attributes to
816 FunctionObject class, erased Visit method.
817 * FunctionObject.cs: Here is where we store a function
818 expression/declaration info, erased Visit method.
819 * ScriptBlock.cs: Added a Block field, Block will contain the
821 * jscript-lexer-parser.g: updated the grammar to build the program
822 representation based on ScriptBlock.
824 2003-09-19 <cesar@ciencias.unam.mx>
826 * JSToken.cs: public API compliance.
828 2003-09-07 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
830 * Context.cs: Added constructor and Document field.
831 * DocumentContext.cs: Added Name field.
832 * JSParser.cs: Integration of antlr's generated parser with
833 JSParser public API. ScriptBlock is now the principal data structure that
834 represents a Jscript .Net program.
835 * JSScanner.cs: Integration of antlr's generated lexer with
836 JSScanner public API.
838 2003-07-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
839 * Added files StringLiteral.cs, CodeGenerator.cs and Print.cs.
841 2003-07-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
843 * jscript-lexer-parser.g: Changed the namespace to
844 Microsoft.JScript.Tmp.
846 * jscript-lexer-parser.g: Fixwd a typo at source_elements rule.
848 * jscript-lexer-parser.g: Got the name of a
849 global_function_declaration and also its return type if
852 * jscript-lexer-parser.g: Added syntatic rule for print_statement.
853 * jscript-lexer-parser.g: Initial construction of AST for
854 enum_statement and package_statement.
856 * jscript-lexer-parser.g: Fixed the enum_statement to accept
857 empty enum declarations.
859 * jscript-lexer-parser.g: Got the type of a
860 veriable_declaration.
862 * jscript-lexer-parser.g: Initial construction of AST for
863 primary_expression (in particular literal).
866 2003-07-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
868 * driver.cs: Modified the driver structure to be compatible
869 with our new CodeGenrator and SemanticAnalizer. I
870 removed the builders from Reflection.Emit to the
871 CodeGenerator. Added an ASTList, SemanticAnalizer and
872 CodeGenerator here. Adde methods Run, GenerateCode
875 2003-07-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
876 * Statement.cs: Forgot to include it on last commit.
878 2003-07-27 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
880 * Decided to change temporarly namespace name
881 Microsoft.JScript to Microsoft.JScript.Tmp in order to be able
882 to run the code generated by our CIL code generator (on next
883 commit will come). The problem is that we don't have the
884 runtime support for our compiler, this involve VsaEngine class
885 and its "friends", which I have not found a lot of
886 doumentation for. If someone knows a docs place for them,
887 don't hesitate to send me a email pointing to them.
889 * Changed from public to internal Visit function at some
892 * Package.cs: Added Name and Members fields.
894 * SemanticAnalizer.cs: Added methods VisitPrint and
897 * VariableDeclaration.cs: Added Type field.
899 * Visitor.cs: Changed from public to internal. Added
900 VisitPrint and VisitStringLiteral methods.
902 * VsaEngine.cs: Fixed namespace name from Microsoft.JScript to
903 Microsoft.JScript.Vsa and then to Microsoft.JScript.Vsa.Tmp.
908 2003-07-22 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
910 * Added CmdLineError.cs and JSError.cs, last night I forgot to
913 2003-07-21 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
915 ArrayPrototype.cs, ArrayWrapper.cs, BitwiseBinary.cs,
916 BlockScope.cs, BooleanPrototype.cs, BreakOutOfFinally.cs,
917 CmdLineException.cs, CmdLineOptionParser.cs,
918 ContinueOutOfFinally.cs, Convert.cs, DatePrototype.cs,
919 DocumentContext.cs, EnumeratorPrototype.cs, Equality.cs,
920 ErrorPrototype.cs, EvalErrorObject.cs, Expando.cs,
921 FieldAccessor.cs, FunctionPrototype.cs, FunctionWrapper.cs,
922 Globals.cs, In.cs, InstanceOf.cs, JSConstructor.cs,
923 JScriptException.cs, JSFieldInfo.cs, JSMethodInfo.cs, JSParser.cs,
924 JSPrototypeObject.cs, JSScanner.cs, LateBinding.cs,
925 LenientArrayPrototype.cs, LenientBooleanPrototype.cs,
926 LenientDateConstructor.cs, LenientDatePrototype.cs,
927 LenientEnumeratorPrototype.cs, LenientErrorPrototype.cs,
928 LenientFunctionPrototype.cs, LenientMathObject.cs,
929 LenientNumberPrototype.cs, LenientObjectPrototype.cs,
930 LenientRegExpPrototype.cs, LenientStringConstructor.cs,
931 LenientStringPrototype.cs, LenientVBArrayPrototype.cs,
932 MemberInfoList.cs, MethodInvoker.cs, Missing.cs, Namespace.cs,
933 NotRecommendedAttribute.cs, NumberPrototype.cs, NumericBinary.cs,
934 NumericUnary.cs, ObjectPrototype.cs, Plus.cs,
935 PostOrPrefixOperator.cs, RangeErrorObject.cs,
936 ReferenceAttribute.cs, ReferenceErrorObject.cs, RegExpMatch.cs,
937 RegExpPrototype.cs, Relational.cs, ResInfo.cs,
938 ReturnOutOfFinally.cs, ScriptStream.cs, SimpleHashtable.cs,
939 StackFrame.cs, StrictEquality.cs, StringPrototype.cs,
940 SuperTypeMembersSorter.cs, SyntaxErrorObject.cs, TypedArray.cs,
941 TypeErrorObject.cs, TypeOf.cs, TypeReflector.cs,
942 URIErrorObject.cs, VBArrayObject.cs, VBArrayPrototype.cs,
943 VersionableAttribute.cs
945 Now, I must fill in the blanks :-)
948 2003-07-09 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
949 * jscript-lexer-parser.g: Added conditional_compilation_directive,
950 which is the beginning of our support for conditional compilation
951 statements and directives in our parser. Added
952 cc_on_statement, and some lexer rules for getting the needed
953 tokens (COND_SET, COND_DEBUG, COND_POSITION, COND_POSITION,
954 COND_IF, COND_ELIF, COND_ELSE, COND_END and CC_ON.
957 2003-07-03 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
959 * jscript-lexer-parser.g: Changed the format of copyright notice.
961 This changes will allow the support
962 for the grammar added by MS to EcmaScript (aka its JScript .Net),
963 I'm still missing some, but they are on the way.
965 * jscript-lexer-parser.g: Deleted function_declaration, and
966 added global_function_declaration and type_function_declaration.
967 I decided to make the grammar as strict as the MS docs mark,
968 but there's a difference between what their docs says and what
969 their compiler does. For this case I decided to follow the
970 docs. A program like:
971 private function F ()
973 according to the docs, would not be syntaticly correct. But the MS
974 compiler, accepts the grammar construct and mark the error at
975 semantic analysis phase. I followed the docs this time.
977 * jscript-lexer-parser.g: Added debbuger_statement.
978 * jscript-lexer-parser.g: Added import_statement.
979 * jscript-lexer-parser.g: Added package_statement and package_member(s).
980 * jscript-lexer-parser.g: Added super_statement.
981 * jscript-lexer-parser.g: Added const_statement.
982 * jscript-lexer-parser.g: Added class_statement,
983 interfaces_list and class_members.
985 * jscript-lexer-parser.g: Added interface_statement and
988 * jscript-lexer-parser.g: Added enum_statement.
989 * jscript-lexer-parser.g: Added static_statement. The rule for
990 this syntatic construc is: static identifier { [body] }
991 body does not get well specified in the docs. Must search wich
992 are the possible values of it.
994 * jscript-lexer-parser.g: At variable_declaration, added
995 support for explicit type declaration.
997 * jscript-lexer-parser.g: Added numeric_literal,
998 DECIMAL_LITERAL and HEX_INTEGER_LITERAL.
1000 * jscript-lexer-parser.g: Added modifiers, modifier, version_modifier.
1003 2003-06-09 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
1006 * Added the Visit method to classes: AST, ArrayLiteral, ASTList,
1007 Block, DebugBreak, Eval, ForIn, FunctionDeclaration,
1008 FunctionExpression, Import, Package, ScriptBlock, Throw, Try,
1011 That method will be the driver that will allow classes
1012 that implement the Visitor interface do a walk through the AST's
1013 elements, in particular the Semantic Analizer and the Code
1014 Generator. Every class that inherits from AST will have a Visit
1015 method, that method will receive a Visitor and a object as
1016 parameters, the only thing that it'll do is letting the Visitor
1017 call the respective method VisitX, where X is the name of the
1018 currently visited class.
1020 * ASTList.cs:Added constructor, Add, Visit, ToString methods.
1022 * FunctionDeclaration.cs: Added constructor, Visit and ToString
1025 * jscript-lexer-parser.g: Added a ASTList as a parameter to the
1026 program (the main entry of the parser). Also added as parameters:
1027 - An AST to source_element.
1028 - A Statement to statement.
1029 - A VariableStatement to variable_statement.
1030 - A VariableStatement to variable_declaration_list.
1031 - A FormalParamerList by formal_parameter_list.
1032 - A ASTList by function_body.
1034 And now some rules return objects:
1035 - A VariableDeclaration by variable_declaration.
1036 - A Functiondeclaration by function_declaration.
1038 * driver.cs: Added the construction of the AST of the EcmaScript
1041 * Visitor.cs: Added this file. It's the visitor interface.
1043 * VariableDeclaration.cs: Added this class, it's the AST
1044 representation of a variable declaration.
1046 * Statement.cs: Added this file. It's the logical representation
1049 * VariableStatement.cs: Added this class. It's the AST
1050 representation of a chain of variable declarations.
1052 * FormalParameterList.cs: The function declaration needs to store
1053 its parameter, we will put them on this class.
1055 * SemanticAnalizer.cs: Added this class. I'll use the Visitor pattern in order to
1056 implement the semantic analysis and code generation
1057 phases. SemanticAnalizer and CodeGenerator will implement the
1058 Visitor interface, they will walk a program's
1059 AST tree and do their respective work.
1061 * IdentificationTable.cs: Added this class. The SymbolTable will be used
1062 by the SemanticAnalyzer in order to keep track of the variable
1063 declaration encountered, etc..
1065 * SymbolTable.cs: A simple hashtable but for commodity i'll call
1069 2003-05-03 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
1071 * jscript-lexer-parser.g:
1072 - Deleted the assignment_operator COMPOUND_ASSIGNMENT, and added
1073 MULTIPLICATION_ASSIGN, DIVISION_ASSIGN, REMAINDER_ASSIGN,
1074 ADDITION_ASSIGN, SUBSTRACTION_ASSIGN, SIGNED_LEFT_SHIFT_ASSIGN,
1075 SIGNED_RIGHT_SHIFT_ASSIGN, UNSIGNED_RIGHT_SHIFT_ASSIGN,
1076 BITWISE_AND_ASSIGN, BITWISE_OR_ASSIGN.
1077 - Changed INTERROGATION to CONDITIONAL.
1078 - Changed TRIANGLE to BITWISE_XOR.
1079 - Changed SLASH to DIVISION.
1080 - Changed PERCENT to REMAINDER.
1081 - Changed ADMIRATION to LOGICAL_NOT
1082 - Added BITWISE_NOT (~).
1083 - Added the INCREMENT and DECREMENT rules for
1084 left_hand_side_expression.
1085 - Increased lexer lookup from 2 to 4.
1086 - Redefined the definitions of: L_THAN, G_THAN, MINUS, TIMES,
1087 BITWISE_AND, BITWISE_OR,
1088 - Added operator: EQUALS, DOES_NOT_EQUALS, STRICT_EQUALS,
1089 REMAINDER, UNSIGNED_RIGHT_SHIFT.
1090 - Added the recursion rules for equality_expression.
1091 - Added the recursion rules for shift_expression.
1093 - The most important thing, added support for expressions like:
1096 2003-04-20 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1099 - Erased the Context class, it was used for the first
1100 test of the print_statement and Reflection.Emit. As I erased the
1101 Program, SourceElements, SourceElement from the ANTLR grammar (for
1102 the rework of the AST tied to the MS JScript public API), I erased
1104 - Erased the methods: EmitJScript0Type, EmitJScript0Cons,
1105 EmitGlobalCode, EmitJScript0, EmitJScriptMainType,
1106 EmitJScriptMainCons, EmitJScriptMainFunction, EmitJScriptMain,
1109 * jscript-lexer-parser.g:
1110 - Erased the references to the classes Program, SourceElements,
1111 SourceElement, Statement, FunctionDeclaration and erased
1112 print_statement rule.
1114 * JSCriptLexer.cs JScriptParser.cs and the other files generated
1115 by antlr, reflect changes from the grammar changes.
1117 2003-04-19 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1118 * Added stubs for the classes:
1121 ActiveXObjectConstructor.cs
1125 AssemblyCustomAttributeList.cs
1130 BooleanConstructor.cs
1138 EnumeratorConstructor.cs
1144 FunctionConstructor.cs
1145 FunctionDeclaration.cs
1146 FunctionExpression.cs
1150 IActivationObject.cs
1156 JSFunctionAttribute.cs
1157 JSFunctionAttributeEnum.cs
1162 LenientGlobalObject.cs
1164 NumberConstructor.cs
1166 ObjectConstructor.cs
1168 RegExpConstructor.cs
1173 StringConstructor.cs
1178 VBArrayConstructor.cs
1183 2003-04-11 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1185 * jscript-lexer-parser.g:
1186 - Added rules for: continue_statement, break_statement,
1187 return_statement, throw statement (all of them do not ensure that
1188 no LineSeparator appears between the keyword on the left and the
1189 identifier, expression or semicolon on the right, that must be fixed).
1190 - Added single line comments rule.
1192 2003-04-08 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1194 * jscript-lexer-parser.g: Added syntatic rule for:
1196 - while and for-in subrules of iteration_statement.
1197 - Added array_literal - got tricky - I just could get the simplest rule going :)
1201 2003-04-08 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1203 * jscript-lexer-parser.g:
1204 - Syntatic rule for iteration_statement.
1205 - "do" subrule for it.
1206 - Added ((L_THAN | G_THAN | LE_THAN | GE_THAN | "instanceof" |
1207 "in") relational_expression | ) rule to relational_expression.
1208 -Added function_expression syntatic rule.
1209 - Added STRING_LITERAL to literal rules.
1210 - "Less/Greater or equal than" lexer rule.
1212 2003-04-03 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1214 * jscript-lexer-parser.g: Added switch_statement rule, case_block, case_clauses, case_clause, default_clause, labelled_statement, try_statement, catch_exp, finally_exp.
1216 2003-04-01 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1218 * jscript-lexer-parser.g: Added the grammar rules for: with_statement, object_literal, ( expression ), property_name_and_value_list, property_name and expression.
1221 2003-03-30 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1223 * Added a README file. Explains the dependencies and build process.
1225 2003-03-30 Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1227 * Added this ChangeLog file.
1229 * ast.cs: Added this file. Contains the classes used for building
1230 the EcmaScript 's AST.
1232 * JScript*: These are the files generated by antlr (the parser generator).
1234 * TODOAttribute.cs: Changed the namespace in order to use it freely on Microsoft.JScript.
1236 * driver.cs: Added this file. Contains the compiler entry point. And some Reflection.Emit methods,
1237 that will be moved to other file in the future.
1239 * jscript-lexer-parser.g: The EcmaScript's antlr grammar.