2005-03-29 Cesar Lopez Nataren <cnataren@novell.com>
[mono.git] / mcs / class / Microsoft.JScript / Microsoft.JScript / ChangeLog
1 2005-03-29  Cesar Lopez Nataren  <cnataren@novell.com>
2
3         * GlobalScope.cs: Set parent and engine in ctr. Return 'this' for
4         GetDefaultThisObject.
5         * ScriptObject.cs: Added protected 'parent' field of type
6         GlobalScope.
7
8 2005-03-16  Cesar Lopez Nataren  <cnataren@novell.com>
9
10         * FunctionExpression.cs: Update to TypeManager new API.
11
12         * TypeManager.cs: Keep both MethodBuilder and LocalBuilder around.
13
14         * FunctionDeclaration.cs: In some contexts we need the
15         MethodBuilder and LocalBuilder, so we must keep both around.
16
17         * expression.cs: (load_script_func) Take care if bounded variable
18         was declared in a nested context. (emit_create_instance) Handle
19         the FunctionConstructor case.
20
21 2005-02-28  Cesar Lopez Nataren  <cnataren@novell.com>
22
23         * ForIn.cs: Initial implementation of ForIn stm.
24
25 2005-02-27  Cesar Lopez Nataren  <cnataren@novell.com>
26
27         * VariableStatement.cs (PopulateContext): Do not add the symbol to
28         the context if already defined in current context.
29
30         * CodeGenerator.cs: Renamed VariableDefined to variable_defined_in_current_scope.
31
32         * TypeManager.cs: Reimplemented it, We use an IdentificationTable
33         instead of a simple Hashtable so we can handle scopes
34         properly. Cleaner api.
35
36         * VariableDeclaration.cs: Use new CodeGenerator api. (EmitDecl)
37         Add the builders to the TypeManager.
38
39         * Block.cs: Use new TypeManager api.
40
41         * FunctionDeclaration.cs: Use new TypeManager api. Take care of
42         scopes in the TypeManger on Emit.
43
44         * IdentificationTable.cs: (Binder) Changed the type of value from
45         AST to object so I can use this symbol table
46         anywhere. (IdentificationTable) Add current_locals stack and added
47         method InCurrentScope. 
48
49         * expression.cs: Use new api from TypeManager, Add casts where neeeded.
50
51         This solves an infinite loop we were falling into when calling
52         IdentificationTable.CurrentLocals when repeated declarations where
53         inside function declarations.
54         
55         * ast.cs: Added protected field ig to class Function.
56         * Block.cs: Emit function's body in a later phase since free
57         ocurrences of functions - at the same level of it - can be handled
58         properly, since they must be defined and inited to the correct values.
59         * FunctionDeclaration.cs: Renamed Emit to create_closure. And make
60         Emit only generate the code of the body.
61
62         Fixes #73078.
63
64 2005-02-22  Cesar Lopez Nataren  <cnataren@novell.com>
65
66         * Block.cs: Report error JS5040. Reopened #72674, see last comment of it.
67
68         * CodeGenerator.cs: Added method VariableDefined.
69         
70         * TypeManager.cs: Added method SetMethod.
71         
72         * VariableDeclaration.cs (EmitDecl): Added logic to allow multiple
73         declarations of the same var. Fixes #72674.
74         
75         * Block.cs: Added hashtable ocurrences. It holds the index of the
76         previous declaration which after encountering another one with the
77         same name gets nuked.
78
79         * FunctionDeclaration.cs: Added logic for allowing multiple
80         declaration of methods with the same name. Fixes #72674.        
81
82         * expression.cs (Args): Added field func. Holds a reference to the
83         Function which to the args are being passed. Use it to track the
84         proper number of arguments for the call. 
85
86 2005-02-20  Cesar Lopez Nataren  <cnataren@novell.com>
87
88         * expression.cs (Args.Emit): check if num_of_args is -1.
89         * ast.cs (Function.NumOfArgs): avoid using a null pointer. In the
90         code generation phase if num_of_args is -1 means the actual
91         arguments are the desired number of args. Fixes #72697.
92
93         * Parser.cs: Pass proper parent.
94         * CodeGenerator.cs: added emit_get_default_this.
95         * Literal.cs (This) : Resolve and Emit implemented. Fixes #72477
96         * expression.cs: (emit_late_get_or_set) use
97         load_engine. (load_script_func) Ensure that TypeManager has a ref
98         to the local otherwise it's a field. (New.Resolve) Check if late
99         binding is needed. (New.Emit) Generate proper IL that make use of
100         late binding  when the id of the constructor it's not part of the
101         build in objects.
102
103 2005-02-14  Cesar Lopez Nataren  <cnataren@novell.com>
104
105         * Token.cs, TokenStream.cs, Parser.cs: make this classes internal.
106
107         * Context.cs: delete wrongly exposed ctr.
108
109 2005-02-10  Cesar Lopez Nataren  <cnataren@novell.com>
110
111         * expression.cs: use InFuntion in proper places.
112
113         * Parser.cs: Add parameter that indicates if it's a prefix
114         operator. When building the MemberExprTail set to proper parent.
115         * PostOrPrefixOperator.cs: Partial implementation of ++ and --,
116         prefix and suffix, we assume that the operand is a variable.
117
118 2005-02-09  Cesar Lopez Nataren  <cnataren@novell.com>
119
120         * expression.cs: Added method EmitStore and EmitLoad to Identifier
121         class. Implemented op= operators. Fixes 72393.
122
123 2005-02-08  Cesar Lopez Nataren  <cnataren@novell.com>
124
125         * expression.cs (Identifier.Emit): Handle case where we are
126         assigning to a formal parameter. Fixes #72333.
127
128 2005-02-06  Cesar Lopez Nataren  <cnataren@novell.com>
129
130         * expression.cs: (load_script_func) Load localbuilder in an
131         invocation when needed, this let us have higher order functions,
132         which is lovely (Fixes #71129). Update calls to load_engine to new signature. 
133         * FunctionDeclaration.cs: Add LocalBuilder to TypeManager.locals
134         * Statement.cs: Changed ctr to Init, so we can track correctly the
135         parent hierarchy when building the ast of the program.
136         * TypeManager.cs: Added field locals. Factored code for
137         handling the tables. Added enums ManagedType and Operation.
138         * Parser.cs: Track correctly the parent of return.
139         * ast.cs (class Function): add ScriptBlock as possible parent of a
140         global expression.
141         * CodeGenerator.cs: change signature of load_engine. Instead of a
142         AST a boolean. So we can call it with InFunction as parameter.
143
144 2005-02-05  Cesar Lopez Nataren  <cnataren@novell.com>
145
146         * expression.cs: rework the late binding algorithm, we directly
147         call an object's method if it's a static method of it. Added field
148         late_bind, properties AccessField and Binding, renamed emit_access
149         to emit_array_access to class Binary. Added fields params_info,
150         late_bind and var_args to Class Args; also methods has_var_args,
151         force_strong_type, reworked its Emit code, we take care of methods
152         which have variable number of arguments, take care of needed
153         conversions and boxing when the call has specific strong types as
154         formal parameters. Added method IsPrint and property Parameters to
155         class BuiltIn.
156         * IdentificationTable.cs: Better implementation of jscript's
157         environments semantics. Added classes Symbol and Binder.
158         * SymbolTable.cs: Nuked.
159         * Block.cs: Fix the semantic of semantic analysis and code
160         generatipo process, we now allow forward declarations of variables
161         and functions.
162         * FunctionDeclaration.cs: Added default ctr and Init method. Fix
163         the semantics of the Resolve and Emit process, we can have forward
164         declaration of variables and functions. Fix order in which
165         JSLocalField's get build.
166         * FunctionExpression.cs: Fix order in which JSLocalField's get build. 
167         * VariableStatement.cs: Added methods EmitVariableDecls and PopulateContext.
168         * VariableDeclaration.cs: Added method EmitDecl. Delay the Resolve
169         and Emit process until the second phase.
170         * Statement.cs: Resolve process of For class take care of
171         VariableStatements for populating the environment in advance.
172         * TypeManager.cs: Make GetMethod return a MethodBuilder.
173         * ast.cs: Added field locals, property NumOfArgs, method GetName
174         to abstract class Function.
175         * SemanticAnalyser.cs: unified global environment and the stack of
176         contexts. Added field global_obj, adapt methods to new
177         IdentificationTable api. Delete method ObjectSystemContains. Added
178         method contains, is_js_object, object_contains_method, map_to_ctr,
179         get_member.
180         * Try.cs: Update to new IdentificationTable api.
181         * ScriptObject.cs, JSPropertyInfo.cs, FormalParameterList.cs,
182         JSFieldInfo.cs, JSMethodInfo.cs, JSLocalField.cs,
183         ScriptFunction.cs: use full namespace name for Binder.
184
185 2005-01-17  Cesar Lopez Nataren  <cnataren@novell.com>
186
187         * CodeGenerator.cs: Added load_engine.
188         * expression.cs (emit_func_call), FunctionDeclaration.cs: Fix
189         computation of VsaEngine.
190
191 2005-01-11  Cesar Lopez Nataren  <cnataren@novell.com>
192
193         * StringConstructor.cs: implement CreateInstance.
194
195 2005-01-10  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
196
197         * BooleanPrototype.cs: update to assert_type.
198         * SemanticAnalizer.cs: move BooleanPrototype.AssertType here, rename it to assert_type.
199
200 2005-01-06  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
201
202         * BooleanObject.cs: implement ctr's.
203         * BooleanPrototype.cs: back to M.J namespace. Implement contructor
204         property, toString and valueOf, add AssertType.
205
206         * Convert.cs: add ToString overload and implement.
207
208         * JSFieldInfo.cs, JSLocalField.cs: Add conditional NET_2_0 or BOOTSTRAP_NET_2_0 's
209         Mono_GetGenericFieldDefinition.
210
211         * StringObject.cs: add ctrs.
212
213 2005-01-05  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
214
215         * ObjectPrototype.cs: Add internal ctr. Implement hasOwnProperty.
216         * ObjectConstructor.cs: implemented CreateInstance.
217         * expression.cs (emit_create_instance): add Boolean case.
218         * Try.cs, Statement.cs (EmitStms), Literal.cs
219         (ObjectLiteralItem.Emit), CodeGenerator.cs (fall_false): delete
220         unused variables.
221
222 2004-12-15  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
223
224         * CodeGenerator.cs: add support for compiling not only from cwd.
225
226 2004-12-13  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
227
228         * expression.cs: emit code for null literal.
229
230 2004-12-06  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
231
232         * expression.cs: added StringConstructor case.
233
234         * MemberInfoList.cs: added internal classes Node, ListIter,
235         ChainHash and implement MemberInfoList.
236         * JSObject.cs: implement AddField, AddProperty, AddMethod,
237         GetMembers, RemoveMember, GetEnumerator, add ChainHash's ext
238         field.
239         
240
241 2004-11-30  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
242
243         * *Prototype.cs: return constructor.
244
245 2004-11-25  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
246
247         * GlobalObject.cs: return the different kinds of object's
248         constructors.
249         * DateConstructor.cs, StringConstructor.cs, ObjectConstructor.cs,
250         NumberConstructor.cs, VBArrayConstructor.cs,
251         FunctionConstructor.cs, EnumeratorConstructor.cs,
252         BooleanConstructor.cs, ArrayConstructor.cs, RegExpConstructor.cs,
253         ActiveXObjectConstructor.cs : added default constructor and static
254         contructor field.       
255         * ErrorConstructor.cs: added default and discriminatory ctrs. Let
256         us know which type of error we are.
257         * DateObject.cs: add field that hold the millisecond representation of date.
258         * JSError.cs, JScriptException.cs: back to Microsoft.JScript namespace.
259         * DatePrototype.cs: add default ctr.
260         
261         * MathObject.cs: implement its methods.
262
263 2004-11-24  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
264
265         * DateConstructor.cs: runtime support, ported parse method from Rhino.
266
267 2004-11-22  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
268
269         * CodeGenerator.cs: (ff_emit_relational) receive a full
270         EmitContext as parameter. Added
271         ff_emit_equality_cond. (fall_false) take where of the case where
272         an expression is received.
273         
274         * Parser.cs: use ToJSToken for building the Relational
275         object. Map relational Token's to JSToken's.
276         * expression.cs: Added Size property to class
277         Expression. (emit_create_instance): Added Number code generation. 
278
279         * Relational.cs (Emit): fix typo, emit boxing to boolean.
280
281 2004-11-19  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
282
283         * NumericBinary.cs: implement EvaluateNumericBinary.
284
285 2004-11-15  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
286
287         * CodeGenerator.cs: factor code for fall_true/fall_false (add
288         emit_default_case, ft_binary_recursion, ft_emit_equality,
289         ff_emit_relational, ff_binary_recursion). Fix
290         trouble with logical ops code generation.       
291
292 2004-11-12  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
293
294         * TypeOf.cs, Plus.cs, Equality.cs:  implementation of
295         JScriptTypeOf, EvaluatePlus, EvaluateEquality.
296         * Convert.cs (ToString): use the IConvertible/TypeCode approach
297         for convertions. Add GetTypeCode.
298
299         * Parser.cs, expression.cs: discriminate among =, +=, -=, etc. Add overload of
300         ToJSToken.
301
302 2004-11-10  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
303
304         * expression.cs (emit_late_call): Pop after Call or CallValue when
305         needed. (New.Emit) add emit_create_instance.
306         
307
308 2004-11-08  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
309
310         * expression.cs (class New): add new operator support. Add
311         emit_args, implemented Emit.
312
313         * expression.cs: emit unary operator code.
314         * TypeOf.cs: back to Microsoft.JScript namespace. fix typo.
315         * Literal.cs: constrain more the case of negative numeric literal.
316
317         * expression.cs (emit_func_call): pop if function's return type is
318         non-void and has no effect. 
319
320 2004-11-07  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
321
322         * BinaryOp.cs: added constructor for instantiating derived classes.
323         * BitwiseBinary.cs, Equality.cs, In.cs, InstanceOf.cs,
324         NumericBinary.cs, Plus.cs, Relational.cs, StrictEquality.cs,
325         expression.cs (classes Binary, Assign): use inherited constructor. 
326         * BitwiseBinary.cs, Equality.cs: deleted public constructor which carried the context.  
327
328 2004-10-25  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
329
330         * StringObject.cs: add value field
331
332         * expression.cs: implement LateBinding. Added methods:
333         emit_late_binding, init_late_binding, emit_late_get_or_set,
334         get_global_scope_or_this, setup_late_call_args, load_script_func, emit_late_call
335         * Convert.cs: implement CheckIfDoubleIsInteger and CheckIfSingleIsInteger
336
337 2004-10-20  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
338
339         * ast.cs (Function): added method emit_return_local_field, if
340         there's a return stm inside a function we must allocate a
341         JSLocalField indicating the return type of the function.
342         * FunctionDeclaration.cs, FunctionExpression.cs: generate the
343         extra JSLocalField if needed
344
345 2004-10-19  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
346
347         * Parser.cs: set the operator properly.
348
349 2004-10-11  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
350
351         * GlobalObject.cs: ported encodeURI, encodeURIComponent,
352         decodeURI, decodeURIComponent from Rhino's codebase. Added methods encode and decode.
353         
354         * expression.cs (Call.Emit): implement IsConstructorProperty.
355
356 2004-10-06  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
357
358         * expression.cs: added support for function calls. Handle case of
359         print where no args are supplied.       
360
361 2004-10-05  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
362
363         * ast.cs: added GetContainerFunction property.
364         * Statement.cs: added class NotVoidReturnEventArgs and delegate
365         NotVoidReturnEventHandler, throw an event in case we find a
366         return, the enclosing function object takes care of changing the
367         return type of the function.
368         * FunctionDeclaration.cs, FunctionExpression.cs: take care of
369         return's inside functions.
370
371 2004-09-22  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
372
373         * expression.cs: Binary, use ResolveFieldAccess only in case the operator is JSToken.AccessField.
374
375         * Parser.cs: use ToJSToken to set the operator properly.
376         * FunctionDeclaration.cs: delete spaces.
377
378 2004-09-21  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
379
380         * FunctionDeclaration.cs: check for parent being a ScriptBlock.
381
382 2004-09-20  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
383
384         * expression.cs: added semantic analysis for accessing fields on
385         class Binary. Semantic Analysis for Calls it takes care of
386         constructors and methods, added invocation code for built in
387         methods. Added interface IAccesible that let us resolve the '.'
388         operator. Class Args handles missing or surplus arguments. Added
389         class BuiltIn which will take care of all builtins of ECMAScript.
390         * ast.cs: added check for parent equal to ScriptBlock.
391         * SymbolTable.cs: added method Remove.
392         * Statement.cs: Added abstract class Jump of which Continue and
393         Break inherit, checks the label stuff. Added checks for Label
394         stuff to Continue and Break classes. Added method Init for
395         DoWhile. Fixes for loops statements in order to be able for have
396         nested loops. Initial support for Label statements.
397         * SemanticAnalizer.cs: added hash global_env and
398         IdentificationTable label_set for keeping track of global methods and
399         label sets. Added static constructor, method BuildGlobalEnv,
400         ImplementationName, ObjectSystemContains, AddLabel, ContainsLabel,
401         GetLabel, RemoveLabel.  
402         * Relational.cs: added code generation for ops instanceof and
403         in. Fixes for usual relational ops.
404         * Parser.cs:fixes to keep track of the inheritance chain.
405         * MathObject.cs: added internal constructor.
406         * JSFunctionAttribute.cs: added fields value and built_in_function
407         so we can decide when a method is really a built in.
408         * IdentificationTable.cs: added method Remove.
409         * CodeGenerator.cs: fixes for fall_true & fall_false for taking care of ast when is a Expression.
410
411 2004-08-25  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
412
413         * expression.cs: made Binary is IAssignable, added fields assign
414         and right_side, added method ResolveAssign (which now receives an
415         extra parameter, being the right side of the assigment). Take care of being
416         inside a function for array indexing. Take care of lvalue case
417         too. Assign.Emit just calls left.Emit since left knows everything
418         about the right side of the assigment after Resolve process.
419         * BitwiseBinary.cs, CodeGenerator.cs, Equality.cs, NumericBinary.cs, : updates for BinaryOp change.
420         * BinaryOp.cs: renamed current_op to op as with the new
421         parser we no longer need to keep track of the old_op.
422
423 2004-08-24  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
424
425         * expression.cs: do not pass the operand as a parameter to the
426         constructor as it gets after the parent gets constructed, same
427         with binary. Added code generation for array index access.
428         * Parser.cs: added ToJStoken which converts Token to JSToken,
429         factored the code for creation the Unary nodes. Take care of
430         parent relationship.
431         * LateBinding.cs: back to Microsoft.JScript namespace.
432         
433
434 2004-08-23  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
435
436         * Parser.cs: pass the skip_count to ArrayLiteral constructor.
437         * Missing.cs: back to Microsoft.JScript namespace.
438         * ArrayLiteral.cs: added field skip_count, it tells us if this is
439         a spaced-arrayliteral, in which case we add a null value in the
440         list, added null check in the resolve and code generation process.
441
442 2004-08-21  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
443
444         * expression.cs: added interface ICallable and and function AddArg
445         to class Call. Added class New.
446         * driver.cs: made it use the new lexer and parser.
447         * ast.cs: added field line_number, added property InFunction,
448         added class Function that factores all the code shared between
449         FunctionDeclaration and FunctionExpression.
450         * With.cs: constructor receives line number.
451         * VariableStatement.cs: constructor receives line number.       
452         * VariableDeclaration.cs: Added check for parent being
453         FunctionDeclaration and FunctionExpression.
454         * Try.cs: Moved the code that used to take care of the catch to
455         Catch class. Constructor receives forming elements and line
456         number. Removed mangle_id.
457         * Throw.cs: constructor receives line number.
458         * Statement.cs: If, DoWhile, Return  constructor receives line number. Renamed
459         identifier to label in Continue and Break class, its constructor now
460         receives the label and line number. For class, constructor
461         receives its forming parts. Switch class, constructor receives
462         line number, added function AddClause and AddStm. Added class
463         Catch. Added class Labelled.
464         * SemanticAnalyser.cs: Added field anon_method_counter, properties
465         NextAnonymousMethod and CurrentAnonymousMethod.
466         * Parser.cs: function ArgumentList receives a ICallable list
467         instead of a AST. Now we add the arguments of a callable. Build
468         Call's ast.
469         * Literal.cs: added constructor for 'this' literal and
470         ObjectLiteral constructor. Added RegExpLiteral class, will take
471         care of regular expressions semantic analysis and code generation.
472         * JSScanner.cs: use no more the antlr based lexer. Fix typo.
473         * JSParser.cs: make it use the new port of Rhino's Parser.
474         * FunctionObject.cs: Added constructor that receives the function name.
475         * FunctionExpression.cs: made it inherit from Function class. Added
476         constructor. Factored the code that used to set the prefix to
477         Function.set_prefix (it's shared with FunctionDeclaration). Added
478         fields local_script_func and field. Implemented Resolve and Emit
479         (now we can do: var x = function (this, method, is, anonymous) {... };).        
480         * FunctionDeclaration.cs: made it inherit from Function class in
481         order to share code with FunctionExpression. Added new
482         constructor. Moved the code that used to built the prefix to
483         Function inside function set_prefix. When building the closure
484         added check for  setting the type of a FunctionExpression. Moved
485         set_function_type and set_custom_attr to class Function. 
486         * ForIn.cs: added constructor and fields lhs, obj and body.
487         * Block.cs: added default constructor and line number based
488         constructor. Check for elems not being null before adding.
489         * ArrayLiteral.cs: set elements in constructor.
490         
491 2004-07-29  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
492
493         * Parser.cs: Added ClauseType enum. Added all the statements to current_script_or_fn,
494         building the other block was not needed. Build the ast's for the
495         expressions and statements, keep track of the parent relationship.
496
497 2004-07-19  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
498
499         * Added Token.cs, TokenStream.cs, Parser.cs which are the port of
500         Mozilla/Rhino's  parser.
501
502 2004-06-24  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
503
504         * jscript-lexer-parser.g: added ast building for object_literal,
505         it's disabled for now while I fix the "block Vs object_literal"
506         non-determinism problem on the parser. Added rule for
507         array_literal. Build PropertyName ast build.
508         * Literal.cs: fixed the negative numbers code generation (we must
509         optimize this). Added initial ObjectLiteral's class, code generation and
510         Resolve process. Added class ObjectLiteralItem and PropertyName.
511         * ArrayLiteral.cs: added internal size field as an ArrayLiteral can have
512         elisions we keep track of the "real" size here. Added constructor. Added initial
513         Resolve and Emit code.
514         * ASTList.cs: added Size property. 
515         * Globals.cs, ASTList.cs: Back to the useful namespace (M.J).
516
517 2004-06-20  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
518
519         * CodeGenerator.cs: Added LoopBegin and LoopEnd to EmitContext, they are used by
520         break and continue in order to jump to the desired place. Added
521         check for converting to boolean if we encounter an identifier (at need_convert_to_boolean).
522         * Statement.cs: class If.Emit, call fall_true instead of fall_false so we don't
523         need to jump if the expression evaluates to true. Continue class,
524         replaced ParentIsItrStm with InLoop, emit jump to correct
525         place. Break class, implemented Resolve; deleted
526         ParentIsCorrect. DoWhile, While classes, set LoopBegin and
527         LoopEnd. While class, set LoopBegin and LoopEnd. 
528         * ast.cs: Added InLoop and InSwitch.
529         * jscript-lexer-parser.g: pass parent to break_stm. Added block as
530         a statement. Temporarily disabled object_literal in order to test
531         the block structure and continue and break statements.
532         
533 2004-05-28  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
534
535         * Statement.cs: changed parent_is_itr_stm method to ParentIsItrStm
536         property. Added initial pieces for Break's Resolve. Fixed bug that
537         did not let Emit the code for case clauses that came after the
538         default clause (we match the jsc behavior).
539         * jscript-lexer-parser.g: set parent of switch's clauses.
540
541 2004-05-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
542
543         * Statement.cs: added parent as a parameter on Continue constructor. Added parent_is_itr_stm
544         * jscript-lexer-parser.g: set parent hierarchy for continue
545         statement. Set to correct parent in iteration_stm.
546
547 2004-05-24  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
548
549         * StrictEquality.cs, JSFieldInfo.cs: got it back to Microsoft.JScript namespace.
550
551         * Statement.cs: Added code generation support for 'switch' statement.
552
553         * jscript-lexer-parser.g: added 'using' for
554         System.Collections. Allow 'switch' statement building of its
555         ast. Added parent parameter to constructor of With. Build
556         inside_for ast. 
557
558         * With.cs: code generation support for 'with' stm.
559
560 2004-05-21  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
561
562         * Statement.cs: initial code generation of 'for'.
563         * jscript-lexer-parser.g: let's build for's ast.
564
565 2004-05-18  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
566
567         * jscript-lexer-parser.g: let's build Try/Catch/Finally ast.
568         * expression.cs: handle Try case for field or local vars allocation. 
569         * Try.cs: implemented Emit.
570         * Throw.cs: implemented code generation.
571         * FunctionDeclaration.cs: cache some values.
572
573 2004-04-26  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
574
575         * FunctionDeclaration.cs: let's make function name formation
576         (get_name ()) a little bit less dumb. We cache the prefix now so
577         we don't have to recalculate it everytime.
578
579 2004-04-22  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
580
581         * Literal.cs: emit the correct code for negative numbers.
582         * jscript-lexer-parser.g: set parent unary_expr.
583
584 2004-04-18  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
585
586         * expression.cs: added code generation for 'x1 ? x2 :x3' op.
587         * Statement.cs: Added code generation for while and do-while.
588
589 2004-04-17  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
590
591         * Statement.cs (class if): reimplemented Emit based on fall_false.
592         * Equality.cs: added code generation for != and emit jumping code
593         only in the case we are at a global expression not statement.
594         * CodeGenerator.cs (fall_true, fall_false): Check if convertion to
595         boolean needed. Made emit_to_boolean internal. Added need_convert_to_boolean.
596
597 2004-04-14  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
598
599         * expression.cs (Binary.Emit): treat boolean operator
600         specially. Added emit_jumping_code.
601         * CodeGenerator.cs: Added emit_to_boolean. Added fall_true and
602         fall_false, which will express all boolean expressions and control
603         flow conditions. 
604
605 2004-04-02  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
606
607         * Equality.cs: Moved the Emit and Resolve code here.
608         * jscript-lexer-parser.g: Build a Equality object instead of a
609         Binary object for equality_expr.
610         * expression.cs: moved equality oeprators (resolve and IL gen) to
611         Equality.Emit and Equality.Resolve.
612
613 2004-03-31  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
614
615         * expression.cs: Added shift operators IL emit.
616         * BitwiseBinary.cs: added constructor for building it according to
617         JSToken enum. return a new object on EvaluateBitwiseBinary (this
618         needs a real implementation).
619         * expression.cs: added code for evaluation of bitwise operators at emit_op_eval.
620
621         * Statement.cs: added stub for While and DoWhile ast
622         representation (reworking my Emit code).
623         * jscript-parser-lexer.g: allow iteration statement ast build.
624
625         * FunctionDeclaration.cs: agrouped code for setting custom attribute.
626
627         * expression.cs: added Modulo operator case.
628
629 2004-03-16  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
630
631         * Convert.cs: added rule for string conversion.
632
633         * Plus.cs: added rule for string addition.
634
635         * PostOrPrefixOperator.cs: added constructor, returned to Microsoft.JScript ns, initial Resolve and
636         Emit (cases where there's no real operator).
637
638         * StringLiteral.cs: now implements Exp as can appear as a simple
639         exp in global code. Added check for Pop generation.
640
641         * expression.cs: added IL generation code for print func call. 
642         Args class added get_element, Size and made Resolve behave as the
643         others (collect the differents Resolve's return values from each
644         of the arguments). Expression class, added default Resolve call
645         for non-Exp implementers.
646
647         * jscript-lexer-parser.g: postfix_expr rule now returns a simple
648         AST, this handles the case where no postOrPrefixOp present; Unary
649         returns an AST too.
650
651         * FormalParameterList.cs: added get_element, retrieves nth element.
652
653 2004-03-14  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
654
655         * ScriptStream.cs: let's print some messages.
656
657         * jscript-lexer-parser.g (STRING_LITERAL): Do not include the ' in the text of the rule.
658
659 2004-03-13  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
660
661         * jscript-lexer-parser.g: keep track of return's parent.
662         * Statement.cs: added parent parameter to constructor.
663
664         * expression.cs: refactored Emit code from Identifier, now we take
665         care of function's paramenter references. First attack to function
666         calls, check if Resolve from Call succeed.
667         
668         * VariableDeclaration.cs: Deleted Decl class, field_info and
669         local_builder fields were being used only by VariableDeclaration,
670         I'll keep them there.
671         
672         * FormalParameterList.cs: added field pos to FormalParam, and set
673         it at FormalParameterList's Resolve stage. 
674         
675         * TODO: updated TODO.
676
677 2004-03-07  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
678
679         * jscript-lexer-parser.g: build If's ast. Keep track of expr parent.
680
681         * expression.cs: At class Conditional renamed fields. Class
682         Expression inherits from Exp as we must keep track if we must pop
683         the last value (this is for the comma operator), track the parent,
684         at Resolve we take care of the last value of the expression, 
685
686         * VariableDeclaration.cs: updates needed because of EmitContext change.
687
688         * Statement.cs: added parent param to If constructor. Implement
689         Resolve and Emit for If statement.
690
691         * Relational.cs: Set parent. The boxing happens in the containing statement.
692
693         * FunctionDeclaration.cs: Added func_type field, will be used to determine the
694         type of the function we are generating (global function, method
695         from a class, etc) and attach to it the correct custom
696         attribute. Simplified the code for nested functions: 
697         refactored the code so no code duplication is involved, now we
698         have only one function that retrieves  the name of the function,
699         now create a new EmitContext for the body of the method.
700
701         * FormalParameterList.cs, Literal.cs, StringLiteral.cs:  use
702         current EmitContext's ILGenerator. 
703
704         * Convert.cs: Do not throw the NotImplementedException anymore for
705         method ToBoolean, for now we always return false. This must get a
706         real implementation.
707
708         * CodeGenerator.cs:  Deleted one of ILGenerator fields
709         from EmitContext, suffices using only one (more notes about the
710         change on the Functiondeclaration entry). Imitate jsc behavior for
711         compiled files names, aggregate the exe or dll extension after last dot.
712
713         * Block.cs: In order to implement the comma operator (i.e., expression,
714         assign_exp), we must track if our expressions are at a global
715         scope, in which case we must pop the last result too.
716
717 2004-01-25  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
718
719         * Relational.cs: Initial generation of CIL for relational operators.
720
721 2004-01-23  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
722
723         * jscript-lexer-parser.g: formal_param_list receives a parent too.
724
725         * SymbolTable.cs: added size and current_symbols properties.
726
727         * JSLocalField.cs: don't throw not ImplementedException from
728         constructor (same reason, testing purposes, must get implemented
729         for real).
730
731         * IdentificationTable.cs: added num_of_locals and current_locals properties.
732
733         * FunctionDeclaration.cs: added a LocalBuilder and DictionaryEntry
734         as fields. Not throw NotImplementedException for
735         JScriptFunctionDeclaration (testing purposes, must get implemeted
736         for real). Let's build our function closures! Added functions:
737         build_closure and build_closure_nested, build_local_fields. Keep
738         track of current parameters and locals defs.
739
740         * FormalParameterList.cs: made FormalParam inherit from
741         AST. Implement the Emit for parameters, yeah!
742
743         * CodeGenerator.cs: added a ModuleBuilder reference. New constructor.   
744
745         * Closure.cs: do not throw the exception (this allow me to run the
746         tests  at mcs/jtests and check that at least i'm not generating
747         invalid CIL). Be aware that this must be really implemented.
748
749         * Block.cs: renamed field, and implement the double pass for
750         nested function declarations code emittion, yeah!.
751
752 2004-01-16  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
753
754         * Microsoft.JScript/VsaReferenceItem.cs: renamed field, reuse parent's ctr.
755         * Microsoft.JScript/VsaItem.cs: renamed some fields, added ctr, 
756         * Microsoft.JScript/VsaGlobalItem.cs: reuse parent ctr.
757         * Microsoft.JScript/VsaCodeItem.cs: reuse parent ctr.
758         * Microsoft.JScript/GlobalScope.cs: reuse constructors from parent.
759
760         * UnaryOp.cs: inherit from Exp now.
761         * Plus.cs: Don't throw the exception when calling constructor, let
762         it build the default handler. Return a new object when calling
763         EvaluatePlus until properly implemented.
764
765         * NumericUnary.cs: added new Resolve.
766         * NumericBinary.cs: assign operator val at ctr. Return a new
767         object when calling EvaluateNumericBinary until properly
768         implemented. Added Resolve.
769         * Equality.cs: added ctr and return false for EvaluateEquality
770         until properly implemented. Added Resolve's functions.
771
772         * Block.cs (Resolve): That check was not necessary.
773         
774         * InstanceOf.cs, PostOrPrefixOperator.cs, Relational.cs,
775         StrictEquality.cs, TypeOf.cs: added Resolve inherited from
776         BinaryOp and UnaryOp, and this from Exp.
777         * IdentificationTable.cs, ScriptBlock.cs: deleted debugging messages.
778         * jscript-lexer-parser.g: deleted debugging messages. Create a
779         Assign object instance of a simple Binary obj. Same case for Equality.
780
781         * expression.cs: added Exp abstract class. Classes that are ast of
782         language constructions that can appear as global expressions that
783         get evaluated and then the result is discarded inherit from this
784         new class. This let meee keep track of things that must get Popped
785         or can even avoid the evaluation of it. Wrote real Resolve method
786         for classes: Unary, Binary.
787         Implemted Emit method for some binary operations (+, -, / and *),
788         for other operators some more code is still missing.    
789         Identifier: handle assignment cases and global exp cases.
790         Added class Assign (compisite assignment still missing tough :-(
791
792         * driver.cs: deleted debug messages, added "Compilation Succeeded"
793         message ;-).
794         * VariableStatement.cs, VariableDeclaration.cs: wrote real Resolve method.      
795         * Literal.cs (BooleanLiteral, NumericLiteral): now inherits from
796         Exp and handle the case for global expressions that must be popped
797         after evaluation. no more invalid IL being generated! yeah!
798         * Block.cs: wrote real Resolve method, erased debug messages.
799         * BitwiseBinary.cs, InstanceOf.cs, UnaryOp.cs: : add new Resolve inherited from Exp.
800         * BinaryOp.cs, Conditional: now inherits from Exp.
801
802 2004-01-15  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
803
804         * ReferenceAttribute.cs: moved it back to namespace Microsoft.JScript.
805
806         * CodeGenerator.cs: small fixes to generate same things that ms.
807
808 2004-01-13  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
809
810         * VariableDeclaration.cs: get the this.type which is a Type not a TypeBuilder.
811
812 2004-01-12  Atsushi Enomoto  <atsushi@ximian.com>
813
814         * JSMethodInfo.cs : tiny fix for NET_2_0 build.
815
816 2003-12-24  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
817
818         * jscript-lexer-parser.g: keep track of parent reference for
819         IDENTIFIER, STRING_LITERAL.
820
821         * expression.cs: Added 'binding' field. Added 'parent' parameter
822         to constructor. Now we emit the proper code for the identifier.
823
824         * VariableStatement.cs: updated to field names instead of the old
825         property's name.
826
827         * VariableDeclaration.cs: Added class Decl, it constains the
828         references to the static field or LocalBuilder that are created
829         when a declaration is emitted. Deleted unuseful properties (Id,
830         InitValue, Type).
831
832         * SymbolTable.cs: Deleted Retrieve method. Contains now returns an
833         object instead of a boolean.
834
835         * StringLiteral.cs: Deleted unuseful properties. Use ig instead of ec.ig.
836
837         * IdentificationTable.cs: Deleted Retrieve method. Contains method
838         now return an object instead of a boolean, that reference is the
839         binding associated with the identifier being searched.
840
841 2003-12-18  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
842
843         * jscript-lexer-parser.g: Keep track of parent for numeric_literal.
844
845         * VariableDeclaration.cs: now I handle initialization (ex. var x =
846         2; or function f () { var x = 4; }) at global scope or at
847         function's body.
848
849         * Literal.cs: Added parent param to NumericLiteral constructor.
850
851         * FunctionDeclaration.cs: Added Ret opcode for all function declaration bodies.
852
853 2003-12-17  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
854
855         * CodeGenerator.cs: Added IL emittion for ldnull on default ending code for 'Global Code'.
856
857 2003-12-10  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
858
859         * jscript-lexer-parser.g: added 'tokens { IN = "in"; INSTANCE_OF =
860         "instanceof"; }' in order to be able to parse both keywords. When
861         generating the parser, one warning about nondeterminism
862         (k==1:"in") is generated ignore it.
863
864 2003-12-07  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
865
866         * jscript-lexer-parser.g: things like 'new Point (10, 20).x' were
867         not parsable now they are. Mozilla's and Janet's  test suites are
868         being really helpful.
869
870 2003-12-05  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
871
872         * jscript-lexer-parser.g: added check for non-null reference at
873         var_decl_list rule. Added single quote STRING_LITERAL lexical rule
874         and multiple lines comments rule.
875
876         * jscript-lexer-parser.g: Now I keep track of the parent for most
877         of the syntatic constructs. Fixed object_literal rule.
878
879         * ast.cs: Added field parent. This will help me to track nested
880         blocks for all of the syntatic constructs and will allow to Emit
881         everything in one single pass.
882         * FunctionDeclaration.cs, FunctionExpression.cs: Rearranged the
883         parent stuff.
884         * Block.cs, FunctionObject.cs: deleted parent field as AST will
885         hold it. Delete parent parameter from constructor.
886         * CodeGenerator.cs: Add field gc_ig (global code IL generator) to
887         EmitContext class. The idea is Emitting everything in one pass (decls
888         and 'Global Code' method, the parent reference let me know which IL
889         generator use, gc_ig or ig).
890         * Equality.cs, BooleanLiteral, Relational.cs: Added new parameter to
891         constructor. Use new parent reference for choosing the IL
892         generator. NumericLiteral a 'hard coded' int32 IL emittion added
893         for testing. 
894         * StringLiteral.cs, Literal.cs (BooleanLiteral.Emit): now I use
895         the parent reference to infere which IL generator to use.
896         * VariableDeclaration.cs: deleted parent field. At Emit, now I use the parent
897         reference to infer which IL generator to use.
898         * expression.cs: Added paramenter parent to constructor of: Unary,
899         Binary, Conditional, Call.
900
901 2003-11-30  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
902
903         * expression.cs: Added new field to Call class, so it can handle more arguments.
904
905         * StringLiteral.cs (Emit) : Load the string value.
906
907         * Literal.cs: BooleanLiteral, Resolve always return true. Emit the value and box it to Boolean.
908
909         * CodeGenerator.cs: Set parent if 'JScript 0' to GlobalScope. Set
910         custom attribute. Build default 'JScript 0' constructor. Emit
911         default initial/final code of 'Global Code'. Create default
912         'JScript Main'.
913
914 2003-11-29  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
915
916         * jscript-lexer-grammar.g: define new rule 'arguments' instead of
917         repeating hand written rule all around. Change "." for DOT, dumb
918         mistake by myself. Added rule new_expr. Now we handle properly the
919         call_expr rule (as defined on the spec), and added a new
920         argument. Added subrule new_expr to  left_hand_side_expr rule.
921
922 2003-11-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
923
924         * expression.cs (Expression): implemented Emit.
925
926         * expression.cs (Binary): Emit now creates a local for the
927         different kinds of binary expressions (initial code for this).
928
929         * ast.cs: Emit method now is abstract instead of virtual.
930
931         * CodeGenerator.cs: changed no_global_code_method to is_global_code_method.
932
933         * ASTList.cs, ArrayLiteral.cs, BitwiseBinary.cs, DebugBreak.cs,
934         Enum.cs, Equality.cs, Eval.cs, ForIn.cs, FormalParameterList.cs,
935         FunctionExpression.cs, Import.cs, InstanceOf.cs, Literal.cs,
936         NumericLiteral, NumericBinary.cs, NumericUnary.cs, Package.cs,
937         Plus.cs, PostOrPrefixOperator.cs, Print.cs, Relational.cs,
938         Continue, Break, Return, StrictEquality.cs, StringLiteral.cs,
939         Throw.cs, Try.cs, TypeOf.cs, VariableDeclaration.cs, With.cs,
940         Conditional, Call, Identifier, Args, Expression, :
941         added Emit method.
942
943         * FunctionDeclaration.cs: Check if values are not null first (at
944         Resolve). Ignore code generation is at 'Global Code'.
945
946         * VariableDeclaration.cs: Now I take care of IL generation when we
947         are at statements and expressions at global code, 'Global Code'
948         method is populated with that IL.  
949
950         * CodeGenerator.cs: Added flag for 'Global Code' method
951         emittion. Now I call 'Emit' twice. The first for declarations the
952         follower for statements and expressions at global scope.
953         
954 2003-11-10 cesar lopez nataren <cesar@ciencias.unam.mx>
955
956         * Visitor.cs: Deleted.
957
958 2003-11-09 cesar lopez nataren <cesar@ciencias.unam.mx>
959
960         * FormalParameterList.cs: Now inherits from AST. Each of the
961         formal parameters gets into the IdentificationTable at Resolve.
962
963         * FunctionDeclaration.cs:Resolve (), We open a new block when
964         encountering a FunctionDeclaration, resolve de parameters and the
965         body, at the end we close the block.
966
967         * IdentificationTable.cs: Now we keep track of parent of the
968         current block. 'Enter (...)' now receives an object, not a
969         VarDecl. 'Contains' now take care of searching through the binding
970         chain.
971
972         * Literal.cs: Deleted 'Literal' class, was being used for
973         nothing. All the classes the inherited from it, now do it from
974         AST. A 'literal' does resolve to true by default.
975
976         * Relational.cs: Resolve recursively left and right.
977
978         * SemanticAnalyser.cs: added flag for 'print statement'.
979
980         * Statement.cs: 'If' class, resolves firstly the condition, the true_stm
981         and false_stm.
982
983         * driver.cs:  Init the semantic analysis phase.
984
985         * expression.cs: 'Unary' class, resolves its operand
986         first. 'Binary' class,resolves left and right first. 'Args' class
987         resolve all the formal parameters first. 'Expression' resolve all
988         the nested expressions first.
989
990         * jscript-lexer-parser.g: Replaced 'Literal' references for AST ones.
991         
992 2003-11-08 cesar lopez nataren <cesar@ciencias.unam.mx>
993
994         * jscript-lexer-parser.g: Allow the building of numeric_literal and DECIMAL_LITERAL,
995         this is temporal in order to get Factorial compiled by mjs (must
996         build the types according to Ecma-262 spec).
997
998         * Literal.cs: Added NumericLiteral class.
999
1000 2003-11-06 cesar lopez nataren <cesar@ciencias.unam.mx>
1001
1002         * FunctionDeclaration.cs: Build a ScriptFunction local variable,
1003         if inside a nested block.
1004
1005 2003-11-05 cesar lopez nataren <cesar@ciencias.unam.mx>
1006
1007         * jscript-lexer-parser.g: Now we take care of parents. This allows
1008         to keep track if we are inside nested blocks. At
1009         'func_decl_or_expr', now I built the FunctionDeclaration or
1010         FunctionExpression first and then assign its body to it - this let
1011         me get a non-null value of the FunctionExpression or
1012         FunctionDeclaration so I can detect if it's a nested block (thanks go to Jackson!).
1013
1014         * Block.cs, FunctionObject.cs, VariableDeclaration.cs: Added 'AST parent' field.
1015         * Block.cs, FunctionDeclaration.cs, FunctionExpression.cs,
1016         FunctionObject.cs, VariableDeclaration.cs: Added 'AST parent' parameter to constructor.
1017
1018         * ScriptBlock.cs: Initiate the global block with 'null' as parent.
1019         
1020         * FunctionDeclaration.cs: Added 'get_composite_name ()' method
1021         (gets the name of a function if it's nested). Emit code for
1022         function's body. At 'Emit ()' now we take care if it's a nested
1023         declaration.
1024
1025         * FunctionObject.cs: default return type is 'void' not
1026         'Object'. Function declarations without parameters map to functions with
1027         'Object this' and 'VsaEngine engine' as parameters by
1028         default. Assign parent to nested block.
1029
1030         * VariableDeclaration.cs: At 'Emit ()', now we take care if we are
1031         a global declaration or inside a function declaration.
1032         
1033 2003-11-04 cesar lopez nataren <cesar@ciencias.unam.mx>
1034
1035         * FunctionObject.cs: Handle no parameters on functions.
1036         
1037         * jscript-lexer-parser.g: Allow functions without parameters.
1038
1039 2003-11-03 cesar lopez nataren <cesar@ciencias.unam.mx>
1040
1041         * ASTList.cs, ArrayLiteral.cs, BitwiseBinary.cs, Blocks.cs,
1042         DebugBreak.cs, Enum.cs, Equality.cs, Eval.cs, ForIn.cs,
1043         FunctionDeclaration.cs, FunctionExpression.cs, Import.cs,
1044         InstanceOf.cs, Literal.cs, NumericBinary.cs, NumericUnary.cs,
1045         Package.cs, Plus.cs, PostOrPrefixOperator.cs, Print.cs,
1046         Relational.cs, ScriptBlock.cs, StrictEquality.cs, Throw.cs,
1047         Try.cs, TypeOf.cs, VariableDeclaration.cs, VariableStatement.cs,
1048         With.cs, expression.cs : Added 
1049         'Resolve' method stub.
1050
1051         * CodeGenerator.cs: Added a ILGenerator field to EmitContext.
1052
1053         * FormalParameterList.cs: Added FormalParam class. Change Add
1054         method to receive the id and the type annotation from function's parameters.
1055
1056         * FunctionDeclaration.cs: Added code for initial function's
1057         definition code generation.
1058
1059         * FunctionObject.cs: Added MethodAttributes and type_annot
1060         fields. Added params_types function, which returns an array of
1061         types from each of the function's parameters.
1062
1063         * IdentificationTable.cs: Added ToString method.
1064
1065         * SemanticAnalizer.cs: Fixed the file name (maybe I should erase it
1066         and add it again with the correct name). Not based on the Visitor
1067         pattern anymore. Deleted all the VisitFOO methods. Added a
1068         IdentificationTable field. Added Run, Dump methods.
1069
1070         * Statement.cs: Deleted Statement class (it was being used for
1071         nothing). All classes that were having Statement as parent,
1072         changed their parent to be AST.
1073
1074         * SymbolTable.cs: Added Add method that receives the id and the
1075         declaration class. Retrieve changed to return an AST. Added
1076         ToString method. Added 'SymbolTable parent' field.
1077
1078         * VariableDeclaration.cs: Added InitValue property.
1079
1080         * ast.cs: Added some comments and abstract method 'Resolve'.
1081
1082         * jscript-lexer-parser.g: Added parsing support for formal
1083         parameters type annotations.
1084         
1085 2003-10-30  cesar lopez nataren <cesar@ciencias.unam.mx>
1086
1087         * jscript-lexer-parser.g: fixed function call parsing! yeah! (give
1088         thanks to Hector!) 
1089
1090 2003-10-28  cesar lopez nataren <cesar@ciencias.unam.mx>
1091
1092         * jscript-lexer-parser.g: allow empty program files. Added type
1093         annotations on var decl and function decl.
1094         * VariableDeclaration.cs: added return type annotation field.
1095         * FunctionExpression.cs: added return type parameter to constructor.
1096         * FunctionDeclaration.cs: added return type parameter to
1097         constructor. Added Emit method (just creates the static field at
1098         the global object, for now).
1099         * FunctionObject.cs: added return type to constructor. Changed
1100         names to readable ones ;-) 
1101
1102         * ScriptStream.cs: added WriteLine.
1103
1104 2003-10-24  cesar lopez nataren <cesar@ciencias.unam.mx>
1105
1106         * ast.cs: Added 'virtual' Emit method (I might change it to be
1107         abstract, but I would have to added to all classes that derive
1108         from it. I'll do it later)
1109         * Block.cs: Added Emit method.
1110         * CodeGnerator.cs: Restructured it (not based on the Visitor pattern
1111         anymore) - still missing some methods, ut on the way. A nice
1112         hacking weekend coming. Added EmitContext class.
1113         * ScriptBlock.cs: Added Emit method.
1114         * VariableDeclaration.cs: Changed type field from string to
1115         Type. Added Emit method.
1116         * VariableStatement.cs: Added Emit method.
1117         * driver.cs: Added CodeGeneration phase (only simple var
1118         declarations support it. More coming soon).
1119
1120
1121 2003-10-22  cesar lopez nataren <cesar@ciencias.unam.mx>
1122
1123         * statement.cs: added Return class.
1124
1125         * Throw.cs: Added expression field, constructor and ToString.
1126         
1127         * jscript-lexer-parser.g: Allow return_stm and throw_stm tree
1128         building.  
1129         
1130         * With.cs: added constructor and ToString. Back to the non-tmp
1131         namespace.
1132
1133         * jscript-parser-lexer.g: allow with_stm tree building.
1134
1135         * jscript-lexer-parser.g: changed the return type from if_stm from
1136         'If' to AST. Added tree for continue_stm. Allowed building of
1137         Break tree.
1138
1139         * statement.cs: switched to internal 'If' class. Added Continue
1140         class. Added Break class.
1141         
1142         * jscript-lexer-parser.g: build tree for function decl or expr.
1143
1144         * FunctionDeclaration.cs: added internal constructor.
1145
1146         * FunctionExpression.cs: added internal constructor.
1147
1148         * FunctionObject.cs: added internal constructor and ToString method.
1149
1150         * jscript-lexer-parser.g: added building tree for if_stm.
1151         * Statement.cs: Added if class for 'if' statement.
1152         
1153
1154 2003-10-21  cesar lopez nataren  <cesar@ciencias.unam.mx>
1155
1156         * VariableDeclaration.cs: added the initializer to ToString.
1157         
1158         * jscript-lexer-parser.g: Allow "christmas trees" (aka expression
1159         trees) building.
1160         
1161         * Block.cs, Equality.cs, Relational.cs: modified ToString 
1162
1163         * Equality.cs, Relational.cs, StringLiteral.cs,
1164         VariableDeclaration.cs: Added constructor 
1165
1166         * VariableStatement.cs, ScriptBlock.cs: changed from hungarian
1167         name convetion style to mono style.
1168
1169         * UnaryOp.cs: added operator and operand fields.
1170
1171         * VariableDeclaration.cs: chenged field name from assignExp to val.
1172
1173         *  BinaryOp.cs: Made "internal" the attributes, added the two
1174         operators holders.
1175
1176         * JScriptLexer.cs, JScriptParser.cs, JScriptParserokenTypes.cs,: updates from grammar changes.
1177         
1178         * driver.cs: Dump the string representation of the parsed exps.
1179
1180         * Literal.cs:  added BooleanLiteral
1181
1182         * Relational.cs: added constructor, ToString, 
1183
1184 2003-10-10  cesar lopez nataren <cesar@ciencias.unam.mx>
1185
1186         * README: added some info about hacking the grammar
1187
1188         * JSparser.cs: Updated the constructor to not receiving params.
1189
1190         * JScriptLexer.cs, JScriptParser.cs, JScriptParserTokenTypes.cs,
1191         JScriptParserTokenTypes.txt: update of antlr generated files from
1192         grammar changes. 
1193
1194         * jscript-lexer-parser.g: Rewrote the EcmaScript grammar. Now we
1195         can parse a little bit more useful programs like:
1196
1197         function factorial (i)
1198         {
1199                 var k;
1200
1201                 if (i <= 0)
1202                         return 1;
1203                 else {
1204                         k = factorial (i - 1);
1205                         return i * k;
1206                 }
1207         }
1208
1209         var x;
1210         x = factorial (4); 
1211         print (x);
1212
1213         As you can see, it's not the classic factorial function
1214         definition, I still have to make some tricks like storing the
1215         result from the recursive call and then multiply. But this new
1216         grammar it's easier to alter than the old one. Also we got support
1217         for for-in statements, for statements, global expressions, support
1218         for object accesors or better known as the "dot" operator. Two
1219         rules are on the eye: left_hand_size_expr and call_expr, in order
1220         to finish the parsing grammar and fix the bugs.
1221
1222
1223 2003-09-29    <cesar@ciencias.unam.mx>
1224
1225         * Added: VsaGlobalItem.cs, VsaReferenceItem.cs, VsaCodeItem.cs
1226
1227         * Added VsaItem.cs, implements IVsaItem.
1228
1229 2003-09-28    <cesar@ciencias.unam.mx>
1230
1231         * VsaItems.cs: Check that no name is repeated (this was docs fault
1232         :-)). This is the beauty of testing.
1233
1234         * Add VsaItems.cs, implements IVsaItems.
1235
1236 2003-09-22    <cesar@ciencias.unam.mx>
1237
1238         * DocumentContext.cs: changed constructor from internal to public,
1239         this a kind of hack ;), but we can build mjs.exe with that change.
1240
1241         * driver.cs, ast.cs, VsaEngine.cs, VariableStatement.cs,
1242         VariableDeclaration.cs, VBArrayConstructor.cs, StringObject.cs,
1243         StringLiteral.cs, StringConstructor.cs, Statement.cs,
1244         ScriptStream.cs, ScriptObject.cs, ScriptFunction.cs,
1245         ScriptBlock.cs, RegExpObject.cs, RegExpConstructor.cs, Print.cs,
1246         Package.cs, ObjectConstructor.cs, NumberObject.cs,
1247         NumberConstructor.cs, MathObject.cs, Literal.cs,
1248         LenientGlobalObject.cs, JSVariableField.cs, JSToken.cs,
1249         JSScanner.cs, JSParser.cs, JSObject.cs, JSLocalField.cs,
1250         JSFunctionAttributeEnum.cs, JSFunctionAttibute.cs, JSField.cs,
1251         JSBuiltIn.cs, IVsaScriptScope.cs, IRedirectOutput.cs,
1252         IActivationObject.cs, GlobalScope.cs, GlobalObject.cs,
1253         FunctionObject.cs, FunctionExpression.cs, FunctionDeclaration.cs,
1254         FunctionConstructor.cs, FormalParameterList.cs, ErrorObject.cs,
1255         ErrorConstructor.cs, EnumeratorObject.cs,
1256         EnumeratorConstructor.cs, Enum.cs, Empty.cs, DocumentContext.cs,
1257         DateObject.cs, DateConstructor.cs, Context.cs, Closure.cs,
1258         BooleanObject.cs, BooleanConstructor.cs, Block.cs, BinaryOp.cs,
1259         BaseVsaEngine.cs, ArrayObject.cs, ArrayConstructor.cs,
1260         ActiveXObjectConstructor.cs, ActivationObject.cs: 
1261
1262         indentation comformance to mono style. Returned to
1263         Microsoft.JScript namespace name. Now we can build
1264         Microsoft.JScript.dll on Linux/Windows, and build mjs.exe on
1265         linux/Windows with our Microsoft.JScript.dll. To build mjs.exe:
1266         $(CSC) /r:Microsoft.JScript.dll  driver.cs. Also changed my mind
1267         about the namespace stuff, because I want people 
1268         to contribute NUnit tests for Microsoft.JScript public API.
1269                 
1270         * jscript-lexer-parser.g: Now we are back to Microsoft.JScript namespace.
1271
1272 2003-09-21    <cesar@ciencias.unam.mx>
1273
1274         * jscript-lexer-parser.g: fixed typo and added SEMI_COLON to print_statement.
1275
1276 2003-09-20    <cesar@ciencias.unam.mx>
1277
1278         * jscript-lexer-parser.g: We are little bit closer to the spec on
1279         StringLiteral definition.  
1280
1281         * jscript-lexer-parser.g: One line patch, the beauty of tests :-)
1282
1283         * jscript-lexer-parser.g: Build ast for FunctionExpression.
1284
1285         * JSObject.cs: we don't throw NotImplementedException anymore,
1286         this let us use FunctionExpression to build the ast.
1287
1288         * FunctionExpression.cs: Added a FunctionObject as field, a
1289         default constructor.
1290
1291         * FunctionObject.cs: Added default constructor.
1292
1293         * driver.cs: Deleted the Jsc class. We are not generating code
1294         now. I'm moving to provide something like mcs's EmitContext
1295         instead of the CodeGenerator class having the Reflection.Emit
1296         builders and ILGenerator. This driver is just for Lexical and
1297         Parsing phases testing.
1298
1299         * driver.cs: Now we are using the Microsoft.JScript public API
1300         functions to load the lexer and parser.
1301
1302         * ScriptBlock.cs,Block.cs: Added ToString function.
1303
1304 2003-09-20    <cesar@ciencias.unam.mx>
1305
1306         * ASTList.cs, ArrayLiteral.cs, BitwiseBinary.cs, Block.cs,
1307         DebugBreak.cs, Enum.cs, Equality.cs, Eval.cs, ForIn.cs,
1308         FunctionExpression.cs, Import.cs, In.cs, InstanceOf.cs,
1309         Literal.cs, NumericBinary.cs, NumericUnary.cs, Package.cs,
1310         Plus.cs, PostOrPrefixOperator.cs, Print.cs, Relational.cs,
1311         Statement.cs, StrictEquality.cs, StringLiteral.cs, Throw.cs,
1312         Try.cs, TypeOf.cs, VariableDeclaration.cs, With.cs, ast.cs, 
1313         : erased Visit method and made some mono indentation style changes.
1314
1315         * CodeGenerator.cs: commented some function calls.
1316         * FunctionDeclaration.cs: moved function attributes to
1317         FunctionObject class, erased Visit method.
1318         * FunctionObject.cs: Here is where we store a function
1319         expression/declaration info, erased Visit method.
1320         * ScriptBlock.cs: Added a Block field, Block will contain the
1321         source elements.
1322         * jscript-lexer-parser.g: updated the grammar to build the program
1323         representation based on ScriptBlock.
1324
1325 2003-09-19    <cesar@ciencias.unam.mx>
1326
1327         * JSToken.cs: public API compliance.
1328
1329 2003-09-07 Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1330
1331         * Context.cs: Added constructor and Document field.
1332         * DocumentContext.cs: Added Name field.
1333         * JSParser.cs: Integration of antlr's generated parser with
1334         JSParser public API. ScriptBlock is now the principal data structure that
1335         represents a Jscript .Net program.
1336         * JSScanner.cs: Integration of antlr's generated lexer with
1337         JSScanner public API.
1338
1339 2003-07-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1340         * Added files StringLiteral.cs, CodeGenerator.cs and Print.cs.
1341
1342 2003-07-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1343
1344         * jscript-lexer-parser.g: Changed the namespace to
1345         Microsoft.JScript.Tmp.
1346
1347         * jscript-lexer-parser.g: Fixwd a typo at source_elements rule.
1348
1349         * jscript-lexer-parser.g: Got the name of a
1350         global_function_declaration and also its return type if
1351         available. 
1352
1353         * jscript-lexer-parser.g: Added syntatic rule for print_statement.
1354         * jscript-lexer-parser.g: Initial construction of AST for
1355         enum_statement and package_statement.
1356
1357         * jscript-lexer-parser.g: Fixed the enum_statement to accept
1358         empty enum declarations.
1359
1360         * jscript-lexer-parser.g: Got the type of a
1361         veriable_declaration.
1362
1363         * jscript-lexer-parser.g: Initial construction of AST for
1364         primary_expression (in particular literal).
1365
1366
1367 2003-07-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1368
1369         * driver.cs: Modified the driver structure to be compatible
1370         with our new CodeGenrator and SemanticAnalizer. I
1371         removed the builders from Reflection.Emit to the
1372         CodeGenerator. Added an ASTList, SemanticAnalizer and
1373         CodeGenerator here. Adde methods Run, GenerateCode
1374
1375
1376 2003-07-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1377         * Statement.cs: Forgot to include it on last commit.
1378
1379 2003-07-27  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1380         
1381         * Decided to change temporarly namespace name
1382         Microsoft.JScript to Microsoft.JScript.Tmp in order to be able
1383         to run the code generated by our CIL code generator (on  next
1384         commit will come). The problem is that we don't have the
1385         runtime support for our compiler, this involve VsaEngine class
1386         and its "friends", which I have not found a lot of
1387         doumentation for. If someone knows a docs place for them,
1388         don't hesitate to send me a email pointing to them.
1389
1390         * Changed from public to internal Visit function at some
1391         classes.
1392
1393         * Package.cs: Added Name and Members fields.
1394         
1395         * SemanticAnalizer.cs: Added methods VisitPrint and
1396         VisitStringLiteral.
1397
1398         * VariableDeclaration.cs: Added Type field.
1399
1400         * Visitor.cs: Changed from public to internal. Added
1401         VisitPrint and VisitStringLiteral methods.
1402
1403         * VsaEngine.cs: Fixed namespace name from Microsoft.JScript to
1404         Microsoft.JScript.Vsa and then to Microsoft.JScript.Vsa.Tmp.
1405         
1406
1407
1408
1409 2003-07-22  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1410
1411         * Added CmdLineError.cs and JSError.cs, last night I forgot to
1412         commit them.
1413
1414 2003-07-21 Cesar Lopez Nataren <cesar@ciencias.unam.mx>
1415         * Added files:
1416         ArrayPrototype.cs, ArrayWrapper.cs, BitwiseBinary.cs, 
1417         BlockScope.cs, BooleanPrototype.cs, BreakOutOfFinally.cs, 
1418         CmdLineException.cs, CmdLineOptionParser.cs, 
1419         ContinueOutOfFinally.cs, Convert.cs, DatePrototype.cs, 
1420         DocumentContext.cs, EnumeratorPrototype.cs, Equality.cs, 
1421         ErrorPrototype.cs, EvalErrorObject.cs, Expando.cs, 
1422         FieldAccessor.cs, FunctionPrototype.cs, FunctionWrapper.cs, 
1423         Globals.cs, In.cs, InstanceOf.cs, JSConstructor.cs, 
1424         JScriptException.cs, JSFieldInfo.cs, JSMethodInfo.cs, JSParser.cs, 
1425         JSPrototypeObject.cs, JSScanner.cs, LateBinding.cs, 
1426         LenientArrayPrototype.cs, LenientBooleanPrototype.cs, 
1427         LenientDateConstructor.cs, LenientDatePrototype.cs, 
1428         LenientEnumeratorPrototype.cs, LenientErrorPrototype.cs, 
1429         LenientFunctionPrototype.cs, LenientMathObject.cs, 
1430         LenientNumberPrototype.cs, LenientObjectPrototype.cs, 
1431         LenientRegExpPrototype.cs, LenientStringConstructor.cs, 
1432         LenientStringPrototype.cs, LenientVBArrayPrototype.cs, 
1433         MemberInfoList.cs, MethodInvoker.cs, Missing.cs, Namespace.cs, 
1434         NotRecommendedAttribute.cs, NumberPrototype.cs, NumericBinary.cs, 
1435         NumericUnary.cs, ObjectPrototype.cs, Plus.cs, 
1436         PostOrPrefixOperator.cs, RangeErrorObject.cs, 
1437         ReferenceAttribute.cs, ReferenceErrorObject.cs, RegExpMatch.cs, 
1438         RegExpPrototype.cs, Relational.cs, ResInfo.cs, 
1439         ReturnOutOfFinally.cs, ScriptStream.cs, SimpleHashtable.cs, 
1440         StackFrame.cs, StrictEquality.cs, StringPrototype.cs, 
1441         SuperTypeMembersSorter.cs, SyntaxErrorObject.cs, TypedArray.cs, 
1442         TypeErrorObject.cs, TypeOf.cs, TypeReflector.cs, 
1443         URIErrorObject.cs, VBArrayObject.cs, VBArrayPrototype.cs, 
1444         VersionableAttribute.cs 
1445
1446         Now, I must fill in the blanks :-)
1447
1448
1449 2003-07-09  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1450         * jscript-lexer-parser.g: Added conditional_compilation_directive,
1451         which is the beginning of our support for conditional compilation
1452         statements and directives in our parser. Added
1453         cc_on_statement, and some lexer rules for getting the needed
1454         tokens (COND_SET, COND_DEBUG, COND_POSITION, COND_POSITION,
1455         COND_IF, COND_ELIF, COND_ELSE, COND_END and CC_ON.
1456
1457
1458 2003-07-03  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1459
1460         * jscript-lexer-parser.g: Changed the format of copyright notice.
1461
1462         This changes will allow the support
1463         for the grammar added by MS to EcmaScript (aka its JScript .Net),
1464         I'm still missing some, but they are on the way.
1465
1466         * jscript-lexer-parser.g: Deleted function_declaration, and
1467         added global_function_declaration and type_function_declaration.
1468         I decided  to make the grammar as strict as the MS docs mark,
1469         but there's a difference between what their docs says and what
1470         their compiler does. For this case I decided to follow the
1471         docs. A program like: 
1472                 private function F () 
1473                 {}
1474         according to the docs, would not be syntaticly correct. But the MS
1475         compiler, accepts the grammar construct and mark the error at
1476         semantic analysis phase. I followed the docs this time. 
1477
1478         * jscript-lexer-parser.g: Added debbuger_statement.
1479         * jscript-lexer-parser.g: Added import_statement.
1480         * jscript-lexer-parser.g: Added package_statement and package_member(s).
1481         * jscript-lexer-parser.g: Added super_statement.
1482         * jscript-lexer-parser.g: Added const_statement.
1483         * jscript-lexer-parser.g: Added class_statement,
1484         interfaces_list and class_members. 
1485
1486         * jscript-lexer-parser.g: Added interface_statement and
1487         interface_members.
1488
1489         * jscript-lexer-parser.g: Added enum_statement.
1490         * jscript-lexer-parser.g: Added static_statement. The rule for
1491         this syntatic construc is: static identifier { [body] }
1492         body does not get well specified in the docs. Must search wich
1493         are the possible values of it.
1494
1495         * jscript-lexer-parser.g: At variable_declaration, added
1496         support for explicit type declaration.
1497
1498         * jscript-lexer-parser.g: Added numeric_literal,
1499         DECIMAL_LITERAL and HEX_INTEGER_LITERAL.
1500
1501         * jscript-lexer-parser.g: Added modifiers, modifier, version_modifier.
1502
1503
1504 2003-06-09  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1505
1506
1507         * Added the Visit method to classes: AST, ArrayLiteral, ASTList,
1508         Block, DebugBreak, Eval, ForIn, FunctionDeclaration,
1509         FunctionExpression, Import, Package, ScriptBlock, Throw, Try,
1510         With, 
1511         
1512         That method will be the driver that will allow classes
1513         that implement the Visitor interface do a walk through the AST's
1514         elements, in particular the Semantic Analizer and the Code
1515         Generator. Every class that inherits from AST will have a Visit
1516         method, that method will receive a Visitor and a object as
1517         parameters, the only thing that it'll do is letting the Visitor
1518         call the respective method VisitX, where X is the name of the
1519         currently visited class.
1520         
1521         * ASTList.cs:Added constructor, Add, Visit, ToString  methods.
1522
1523         * FunctionDeclaration.cs: Added constructor, Visit and ToString
1524         methods.
1525         
1526         * jscript-lexer-parser.g: Added a ASTList as a parameter to the
1527         program (the main entry of the parser). Also added as parameters: 
1528                 - An AST to source_element.
1529                 - A Statement to statement.
1530                 - A VariableStatement to variable_statement.
1531                 - A VariableStatement to variable_declaration_list.
1532                 - A FormalParamerList by formal_parameter_list.
1533                 - A ASTList by function_body.
1534         
1535         And now some rules return objects:
1536                 - A VariableDeclaration by variable_declaration.
1537                 - A Functiondeclaration by function_declaration.
1538
1539         * driver.cs: Added the construction of the AST of the EcmaScript
1540         program.
1541
1542         * Visitor.cs: Added this file. It's the visitor interface. 
1543
1544         * VariableDeclaration.cs: Added this class, it's the AST
1545         representation of a variable declaration.
1546
1547         * Statement.cs: Added this file. It's the logical representation
1548         of a Statement.
1549
1550         * VariableStatement.cs: Added this class. It's the AST
1551         representation of a chain of variable declarations.
1552         
1553         * FormalParameterList.cs: The function declaration needs to store
1554         its parameter, we will put them on this class.
1555
1556         * SemanticAnalizer.cs: Added this class. I'll use the Visitor pattern in order to
1557         implement the semantic analysis and code generation
1558         phases. SemanticAnalizer and CodeGenerator will implement the
1559         Visitor interface, they will walk a program's
1560         AST tree and do their respective work.
1561
1562         * IdentificationTable.cs: Added this class. The SymbolTable will be used
1563         by the SemanticAnalyzer in order to keep track of the variable
1564         declaration encountered, etc..
1565
1566         * SymbolTable.cs: A simple hashtable but for commodity i'll call
1567         it this way.
1568
1569         
1570 2003-05-03  Cesar Lopez Nataren  <cesar@ciencias.unam.mx>
1571
1572         * jscript-lexer-parser.g:
1573         - Deleted the assignment_operator COMPOUND_ASSIGNMENT, and added
1574         MULTIPLICATION_ASSIGN, DIVISION_ASSIGN, REMAINDER_ASSIGN,
1575         ADDITION_ASSIGN, SUBSTRACTION_ASSIGN, SIGNED_LEFT_SHIFT_ASSIGN,
1576         SIGNED_RIGHT_SHIFT_ASSIGN, UNSIGNED_RIGHT_SHIFT_ASSIGN,
1577         BITWISE_AND_ASSIGN, BITWISE_OR_ASSIGN.
1578         - Changed INTERROGATION to CONDITIONAL.
1579         - Changed TRIANGLE to BITWISE_XOR.
1580         - Changed SLASH to DIVISION.
1581         - Changed PERCENT to REMAINDER.
1582         - Changed ADMIRATION to LOGICAL_NOT
1583         - Added BITWISE_NOT (~).
1584         - Added the INCREMENT and DECREMENT rules for
1585         left_hand_side_expression.
1586         - Increased lexer lookup from 2 to 4.
1587         - Redefined the definitions of: L_THAN, G_THAN, MINUS, TIMES,
1588         BITWISE_AND, BITWISE_OR,
1589         - Added operator: EQUALS, DOES_NOT_EQUALS, STRICT_EQUALS,
1590         REMAINDER, UNSIGNED_RIGHT_SHIFT.
1591         - Added the recursion rules for equality_expression.
1592         - Added the recursion rules for shift_expression.
1593         - Now we skip tabs.
1594         - The most important thing, added support for expressions like:
1595         sdf.[hgh], cool!
1596
1597 2003-04-20      Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1598
1599         * driver.cs: 
1600         - Erased the Context class, it was used for the first
1601         test of the print_statement and Reflection.Emit. As I erased the
1602         Program, SourceElements, SourceElement from the ANTLR grammar (for
1603         the rework of the AST tied to the MS JScript public API), I erased
1604         some uses in here.
1605         - Erased the methods: EmitJScript0Type, EmitJScript0Cons,
1606         EmitGlobalCode, EmitJScript0, EmitJScriptMainType,
1607         EmitJScriptMainCons, EmitJScriptMainFunction, EmitJScriptMain,
1608         Emit.
1609
1610         * jscript-lexer-parser.g: 
1611         - Erased the references to the classes Program, SourceElements,
1612         SourceElement, Statement, FunctionDeclaration and erased
1613         print_statement rule. 
1614
1615         * JSCriptLexer.cs JScriptParser.cs and the other files generated
1616         by antlr, reflect changes from the grammar changes.
1617
1618 2003-04-19      Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1619         * Added stubs for the classes:
1620         ASTList.cs 
1621         ActivationObject.cs 
1622         ActiveXObjectConstructor.cs 
1623         ArrayConstructor.cs 
1624         ArrayLiteral.cs 
1625         ArrayObject.cs 
1626         AssemblyCustomAttributeList.cs 
1627         BaseVsaEngine.cs 
1628         BinaryOp.cs 
1629         Binding.cs 
1630         Block.cs 
1631         BooleanConstructor.cs 
1632         BooleanObject.cs 
1633         Closure.cs 
1634         Context.cs 
1635         DateConstructor.cs 
1636         DateObject.cs 
1637         DebugBreak.cs 
1638         Empty.cs 
1639         EnumeratorConstructor.cs 
1640         EnumeratorObject.cs 
1641         ErrorConstructor.cs 
1642         ErrorObject.cs 
1643         Eval.cs 
1644         ForIn.cs 
1645         FunctionConstructor.cs 
1646         FunctionDeclaration.cs 
1647         FunctionExpression.cs 
1648         FunctionObject.cs 
1649         GlobalObject.cs 
1650         GlobalScope.cs 
1651         IActivationObject.cs 
1652         IRedirectOutput.cs 
1653         IVsaScriptScope.cs 
1654         Import.cs 
1655         JSBuiltIn.cs 
1656         JSField.cs 
1657         JSFunctionAttribute.cs 
1658         JSFunctionAttributeEnum.cs 
1659         JSLocalField.cs 
1660         JSObject.cs 
1661         JSToken.cs 
1662         JSVariableField.cs 
1663         LenientGlobalObject.cs 
1664         MathObject.cs 
1665         NumberConstructor.cs 
1666         NumberObject.cs 
1667         ObjectConstructor.cs 
1668         Package.cs 
1669         RegExpConstructor.cs 
1670         RegExpObject.cs 
1671         ScriptBlock.cs 
1672         ScriptFunction.cs 
1673         ScriptObject.cs 
1674         StringConstructor.cs 
1675         StringObject.cs 
1676         Throw.cs 
1677         Try.cs 
1678         UnaryOp.cs 
1679         VBArrayConstructor.cs 
1680         VsaEngine.cs 
1681         With.cs         
1682         
1683
1684 2003-04-11      Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1685
1686         * jscript-lexer-parser.g:
1687         - Added rules for: continue_statement, break_statement,
1688         return_statement, throw statement (all of them do not ensure that
1689         no LineSeparator appears between the keyword on the left and the
1690         identifier, expression or semicolon on the right, that must be fixed).
1691         - Added single line comments rule.
1692
1693 2003-04-08      Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1694
1695         * jscript-lexer-parser.g: Added syntatic rule for:
1696         - if_statement.
1697         - while and for-in subrules of iteration_statement.
1698         - Added array_literal - got tricky - I just could get the simplest rule going :)
1699         - Added elision.
1700
1701         
1702 2003-04-08      Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1703
1704         * jscript-lexer-parser.g:
1705         - Syntatic rule for iteration_statement.
1706         - "do" subrule for it.
1707         - Added ((L_THAN | G_THAN | LE_THAN | GE_THAN | "instanceof" |
1708         "in") relational_expression | ) rule to relational_expression.
1709         -Added function_expression syntatic rule.
1710         - Added STRING_LITERAL to literal rules.
1711         - "Less/Greater or equal than" lexer rule.
1712
1713 2003-04-03      Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1714
1715         * jscript-lexer-parser.g: Added switch_statement rule, case_block, case_clauses, case_clause, default_clause, labelled_statement, try_statement, catch_exp, finally_exp.
1716
1717 2003-04-01    Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1718
1719         * jscript-lexer-parser.g: Added the grammar rules for: with_statement, object_literal, ( expression ), property_name_and_value_list, property_name and expression.
1720         
1721
1722 2003-03-30    Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1723
1724         * Added a README file. Explains the dependencies and build process.
1725
1726 2003-03-30   Cesar Octavio Lopez Nataren <cesar@ciencias.unam.mx>
1727
1728         * Added this ChangeLog file.
1729         
1730         * ast.cs: Added this file. Contains the classes used for building
1731         the EcmaScript 's AST.
1732
1733         * JScript*: These are the files generated by antlr (the parser generator). 
1734
1735         * TODOAttribute.cs: Changed the namespace in order to use it freely on Microsoft.JScript.
1736
1737         * driver.cs: Added this file. Contains the compiler entry point. And some Reflection.Emit methods,
1738         that will be moved to other file in the future.
1739
1740         * jscript-lexer-parser.g: The EcmaScript's antlr grammar.