[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:17:57 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 8e8091f7207c708e2e7e8a012e93051d2c4763fb
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Dec 30 23:17:23 2002 +0000

            Reviewed by Don and Maciej.
    
    	- follow-on to my fix for 3134693 that fixes one more case of recursion and simplifies further
    
            * kjs/grammar.y: Remove SourceElementNode and just use a StatementNode instead.
    	Reverse SourceElements rule so the recursive rule comes first as in the original
    	KJS code (avoids actual parser recursion).
    
            * kjs/grammar.cpp: Regenerated.
            * kjs/grammar.cpp.h: Regenerated.
            * kjs/grammar.h: Regenerated.
    
            * kjs/nodes.h: Make processFuncDecl a virtual function in StatementNode so that we can
    	use a StatementNode instead of a SourceElementNode. Add a call to reverseList in BlockNode
    	to correct the order of the linked list in SourceElementsNode, to replace the technique
    	where we reversed it in the parser. Remove SourceElementNode class, and make the element in
    	SourceElementsNode be a StatementNode instead.
            * kjs/nodes.cpp: Remove SourceElementNode code.
            (StatementNode::processFuncDecl): Added empty function.
            (BlockNode::reverseList): Added. Used to make the SourceElements list ordered correctly.
            * kjs/nodes2string.cpp: Remove SourceElementNode code.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3215 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 7856bde..6e5f72d 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,27 @@
+2002-12-30  Darin Adler  <darin at apple.com>
+
+        Reviewed by Don and Maciej.
+
+	- follow-on to my fix for 3134693 that fixes one more case of recursion and simplifies further
+
+        * kjs/grammar.y: Remove SourceElementNode and just use a StatementNode instead.
+	Reverse SourceElements rule so the recursive rule comes first as in the original
+	KJS code (avoids actual parser recursion).
+
+        * kjs/grammar.cpp: Regenerated.
+        * kjs/grammar.cpp.h: Regenerated.
+        * kjs/grammar.h: Regenerated.
+
+        * kjs/nodes.h: Make processFuncDecl a virtual function in StatementNode so that we can
+	use a StatementNode instead of a SourceElementNode. Add a call to reverseList in BlockNode
+	to correct the order of the linked list in SourceElementsNode, to replace the technique
+	where we reversed it in the parser. Remove SourceElementNode class, and make the element in
+	SourceElementsNode be a StatementNode instead.
+        * kjs/nodes.cpp: Remove SourceElementNode code.
+        (StatementNode::processFuncDecl): Added empty function.
+        (BlockNode::reverseList): Added. Used to make the SourceElements list ordered correctly.
+        * kjs/nodes2string.cpp: Remove SourceElementNode code.
+
 === Alexander-46 ===
 
 2002-12-28  Darin Adler  <darin at apple.com>
diff --git a/JavaScriptCore/ChangeLog-2003-10-25 b/JavaScriptCore/ChangeLog-2003-10-25
index 7856bde..6e5f72d 100644
--- a/JavaScriptCore/ChangeLog-2003-10-25
+++ b/JavaScriptCore/ChangeLog-2003-10-25
@@ -1,3 +1,27 @@
+2002-12-30  Darin Adler  <darin at apple.com>
+
+        Reviewed by Don and Maciej.
+
+	- follow-on to my fix for 3134693 that fixes one more case of recursion and simplifies further
+
+        * kjs/grammar.y: Remove SourceElementNode and just use a StatementNode instead.
+	Reverse SourceElements rule so the recursive rule comes first as in the original
+	KJS code (avoids actual parser recursion).
+
+        * kjs/grammar.cpp: Regenerated.
+        * kjs/grammar.cpp.h: Regenerated.
+        * kjs/grammar.h: Regenerated.
+
+        * kjs/nodes.h: Make processFuncDecl a virtual function in StatementNode so that we can
+	use a StatementNode instead of a SourceElementNode. Add a call to reverseList in BlockNode
+	to correct the order of the linked list in SourceElementsNode, to replace the technique
+	where we reversed it in the parser. Remove SourceElementNode class, and make the element in
+	SourceElementsNode be a StatementNode instead.
+        * kjs/nodes.cpp: Remove SourceElementNode code.
+        (StatementNode::processFuncDecl): Added empty function.
+        (BlockNode::reverseList): Added. Used to make the SourceElements list ordered correctly.
+        * kjs/nodes2string.cpp: Remove SourceElementNode code.
+
 === Alexander-46 ===
 
 2002-12-28  Darin Adler  <darin at apple.com>
diff --git a/JavaScriptCore/kjs/grammar.cpp b/JavaScriptCore/kjs/grammar.cpp
index eaeb089..7cfd6a1 100644
--- a/JavaScriptCore/kjs/grammar.cpp
+++ b/JavaScriptCore/kjs/grammar.cpp
@@ -136,7 +136,6 @@ typedef union {
   FuncDeclNode        *func;
   ProgramNode         *prog;
   AssignExprNode      *init;
-  SourceElementNode   *src;
   SourceElementsNode  *srcs;
   StatListNode        *slist;
   ArgumentsNode       *args;
@@ -307,34 +306,34 @@ static const short yyrhs[] = {     3,
     63,   145,     0,    15,    58,    62,   144,    63,   145,     0,
     15,    62,    63,   145,     0,    15,    62,   144,    63,   145,
      0,    58,     0,   144,    68,    58,     0,    64,    65,     0,
-    64,   147,    65,     0,     0,   147,     0,   148,     0,   148,
-   147,     0,   115,     0,   142,     0
+    64,   147,    65,     0,     0,   147,     0,   148,     0,   147,
+   148,     0,   115,     0,   142,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   163,   165,   166,   167,   168,   169,   172,   178,   180,   182,
-   183,   184,   185,   186,   189,   191,   192,   195,   197,   201,
-   203,   206,   208,   211,   213,   217,   219,   220,   223,   225,
-   226,   227,   228,   231,   233,   236,   238,   239,   240,   244,
-   246,   249,   251,   254,   256,   259,   261,   262,   265,   267,
-   268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-   280,   282,   283,   284,   287,   289,   290,   293,   295,   296,
-   297,   300,   302,   304,   306,   308,   310,   312,   316,   318,
-   319,   320,   321,   324,   326,   329,   331,   334,   336,   339,
-   341,   345,   347,   351,   353,   357,   359,   363,   365,   366,
-   367,   368,   369,   370,   371,   372,   373,   374,   375,   378,
-   380,   383,   385,   386,   387,   388,   389,   390,   391,   392,
-   393,   394,   395,   396,   397,   400,   402,   405,   407,   410,
-   413,   422,   424,   428,   430,   433,   437,   441,   444,   451,
-   453,   457,   459,   460,   463,   466,   469,   473,   479,   481,
-   484,   486,   490,   492,   499,   501,   505,   507,   515,   517,
-   521,   522,   528,   533,   538,   540,   544,   546,   549,   551,
-   554,   556,   559,   561,   564,   570,   574,   576,   577,   580,
-   584,   588,   591,   595,   597,   602,   604,   608,   611,   615,
-   618,   622,   624,   627,   629
+   162,   164,   165,   166,   167,   168,   171,   177,   179,   181,
+   182,   183,   184,   185,   188,   190,   191,   194,   196,   200,
+   202,   205,   207,   210,   212,   216,   218,   219,   222,   224,
+   225,   226,   227,   230,   232,   235,   237,   238,   239,   243,
+   245,   248,   250,   253,   255,   258,   260,   261,   264,   266,
+   267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+   279,   281,   282,   283,   286,   288,   289,   292,   294,   295,
+   296,   299,   301,   303,   305,   307,   309,   311,   315,   317,
+   318,   319,   320,   323,   325,   328,   330,   333,   335,   338,
+   340,   344,   346,   350,   352,   356,   358,   362,   364,   365,
+   366,   367,   368,   369,   370,   371,   372,   373,   374,   377,
+   379,   382,   384,   385,   386,   387,   388,   389,   390,   391,
+   392,   393,   394,   395,   396,   399,   401,   404,   406,   409,
+   412,   421,   423,   427,   429,   432,   436,   440,   443,   450,
+   452,   456,   458,   459,   462,   465,   468,   472,   478,   480,
+   483,   485,   489,   491,   498,   500,   504,   506,   514,   516,
+   520,   521,   527,   532,   537,   539,   543,   545,   548,   550,
+   553,   555,   558,   560,   563,   569,   573,   575,   576,   579,
+   583,   587,   590,   594,   596,   601,   603,   607,   610,   614,
+   617,   621,   623,   626,   628
 };
 #endif
 
@@ -461,100 +460,100 @@ static const short yydefgoto[] = {    39,
    356,   124,    79
 };
 
-static const short yypact[] = {   631,
--32768,-32768,-32768,-32768,-32768,     3,   -38,   111,   -24,     5,
-   -14,   335,  1066,  1066,   -12,-32768,   705,     9,  1066,    47,
-    51,  1066,     0,  1066,  1066,-32768,    50,  1066,  1066,-32768,
-  1066,   409,    12,  1066,  1066,  1066,  1066,-32768,-32768,-32768,
--32768,    42,-32768,    83,   315,-32768,-32768,    71,   -25,    38,
-    82,   239,    54,    68,    84,   133,   -23,-32768,-32768,    11,
+static const short yypact[] = {   779,
+-32768,-32768,-32768,-32768,-32768,     5,   -28,   111,   -30,     6,
+   -31,   335,  1252,  1252,   -16,-32768,   853,    -5,  1252,     9,
+    57,  1252,   -20,  1252,  1252,-32768,   -21,  1252,  1252,-32768,
+  1252,   409,    -1,  1252,  1252,  1252,  1252,-32768,-32768,-32768,
+-32768,    42,-32768,    43,   179,-32768,-32768,   -14,    12,   195,
+    82,   118,    72,    85,    93,   151,   -23,-32768,-32768,    11,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   631,-32768,
-     6,-32768,   778,   114,-32768,    45,    42,-32768,   105,    17,
--32768,-32768,     7,-32768,   129,   -42,-32768,-32768,    18,   112,
--32768,-32768,  1066,   230,  1066,-32768,  1066,  1066,   -45,   483,
-   162,-32768,-32768,   705,-32768,-32768,    -6,   150,   176,    50,
-   220,   -37,   185,   212,-32768,   154,   850,   214,-32768,-32768,
--32768,-32768,   922,  1066,   234,-32768,  1066,   237,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   779,-32768,-32768,
+     7,-32768,   964,   161,-32768,    45,    42,-32768,   136,    17,
+-32768,-32768,     8,-32768,   192,    24,-32768,-32768,    18,    90,
+-32768,-32768,  1252,   236,  1252,-32768,  1252,  1252,   -45,   483,
+   231,-32768,-32768,   853,-32768,-32768,    59,   191,   196,   -21,
+   935,   123,   208,   557,-32768,   200,  1036,   203,-32768,-32768,
+-32768,-32768,  1108,  1252,   222,-32768,  1252,   224,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,  1066,  1066,  1066,  1066,  1066,  1066,  1066,
-  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,
-  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,-32768,  1066,
--32768,-32768,-32768,-32768,   244,    87,   241,   226,-32768,-32768,
--32768,-32768,-32768,  1066,-32768,-32768,   -24,-32768,-32768,-32768,
-    64,-32768,   248,   100,-32768,-32768,   103,   252,   121,   122,
-   124,-32768,-32768,   253,     0,   283,-32768,-32768,-32768,-32768,
-    35,  1066,-32768,-32768,    12,-32768,-32768,-32768,-32768,   181,
--32768,   203,-32768,   223,-32768,-32768,-32768,-32768,-32768,    71,
-    71,   -25,   -25,   -25,    38,    38,    38,    38,    38,    38,
-    82,    82,    82,    82,   239,   239,   239,    84,   133,   249,
--32768,   -15,   -41,  1066,  1066,-32768,-32768,   248,   190,   557,
--32768,   248,   259,   705,  1066,   705,   255,   705,   262,-32768,
--32768,   254,-32768,   994,-32768,  1066,-32768,-32768,  1066,  1066,
-   298,  1066,   197,   245,-32768,   248,-32768,   260,-32768,-32768,
-   307,   199,-32768,   323,-32768,-32768,   270,  1066,-32768,-32768,
--32768,-32768,   200,  1066,   261,   705,  1066,-32768,-32768,   705,
--32768,  1066,    23,   323,-32768,     0,-32768,   705,   201,  1066,
--32768,   274,-32768,   232,   275,-32768,   323,-32768,-32768,-32768,
-   705,   280,   705,   705,   705,   281,-32768,   705,-32768,-32768,
-   705,   705,-32768,-32768,-32768,   348,   349,-32768
+-32768,-32768,-32768,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
+  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
+  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,-32768,  1252,
+-32768,-32768,-32768,-32768,   226,    87,   217,   204,-32768,-32768,
+-32768,-32768,-32768,  1252,-32768,-32768,   -30,-32768,-32768,-32768,
+   105,-32768,   223,   103,-32768,-32768,   113,   227,   115,   116,
+   117,-32768,-32768,   228,   -20,   253,-32768,-32768,-32768,-32768,
+    35,  1252,-32768,-32768,    -1,-32768,-32768,-32768,-32768,   119,
+-32768,   202,-32768,   206,-32768,-32768,-32768,-32768,-32768,   -14,
+   -14,    12,    12,    12,   195,   195,   195,   195,   195,   195,
+    82,    82,    82,    82,   118,   118,   118,    93,   151,   225,
+-32768,    -3,   -44,  1252,  1252,-32768,-32768,   223,   126,   631,
+-32768,   223,   233,   853,  1252,   853,   229,   853,   234,-32768,
+-32768,   232,-32768,  1180,-32768,  1252,-32768,-32768,  1252,  1252,
+   271,  1252,   127,   212,-32768,   223,-32768,   705,-32768,-32768,
+   274,   157,-32768,   289,-32768,-32768,   237,  1252,-32768,-32768,
+-32768,-32768,   174,  1252,   218,   853,  1252,-32768,-32768,   853,
+-32768,  1252,    23,   289,-32768,   -20,-32768,   853,   175,  1252,
+-32768,   243,-32768,   207,   238,-32768,   289,-32768,-32768,-32768,
+   853,   246,   853,   853,   853,   245,-32768,   853,-32768,-32768,
+   853,   853,-32768,-32768,-32768,   312,   314,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,-32768,-32768,   126,-32768,-32768,   135,   346,   351,-32768,
-   -34,-32768,    41,-32768,     1,   148,   -10,    15,   117,   123,
--32768,-32768,   184,   196,-32768,-32768,  -122,-32768,    -9,   -17,
-   -22,    29,-32768,   191,   178,   118,-32768,-32768,-32768,-32768,
-  -225,-32768,-32768,-32768,-32768,-32768,-32768,    44,-32768,    55,
--32768,-32768,-32768,-32768,-32768,   166,-32768,-32768,   182,  -223,
--32768,     2,-32768
+-32768,-32768,-32768,    91,-32768,-32768,    94,   309,   310,-32768,
+   -34,-32768,    41,-32768,     1,   120,    88,   -18,    75,    78,
+-32768,-32768,   143,   145,-32768,-32768,  -122,-32768,    -9,   -17,
+   -22,   -25,-32768,   138,   128,    67,-32768,-32768,-32768,-32768,
+  -249,-32768,-32768,-32768,-32768,-32768,-32768,    -7,-32768,    13,
+-32768,-32768,-32768,-32768,-32768,   129,-32768,-32768,   131,  -223,
+-32768,     2,   -74
 };
 
 
-#define	YYLAST		1140
+#define	YYLAST		1326
 
 
 static const short yytable[] = {   104,
-   111,    78,    99,    80,   227,    92,   183,   199,   290,   139,
-   231,   179,   109,   101,   102,   202,   177,   196,   205,   106,
-   203,   117,   180,    83,   112,   113,   197,   220,   115,   116,
-   221,   236,   335,    89,   129,   130,   131,   132,   212,   294,
-   189,   190,   292,    95,   295,   158,   159,    96,   299,   103,
-   189,   190,   193,   100,   100,   260,   219,   261,   178,   100,
-    81,   180,    93,   110,   100,   100,   315,   194,   100,   100,
-   105,   266,   318,   187,   100,   100,   100,   100,   180,   125,
-   182,   160,   161,   162,   197,   180,    82,   336,    94,   184,
-   200,   332,   191,   207,   181,   209,   218,   210,   211,   283,
-   198,   206,   191,   133,   342,   163,   164,   134,   107,   192,
-   264,   135,   108,     1,     2,     3,     4,     5,   114,   165,
-   166,   202,     8,   186,   232,    84,   268,   234,   140,   141,
-    16,   155,   173,   142,   143,   144,   145,   146,   147,   148,
-   149,   150,   151,   152,   133,   156,   157,   174,   137,   242,
-   243,   244,   138,   140,   141,   237,   238,   239,   167,   168,
-    26,   310,   272,   311,   175,   274,   312,   273,    85,   153,
-   180,    30,    31,   176,    86,    96,    33,   245,   246,   247,
-   248,   249,   250,   276,   277,   327,   278,   194,   180,   180,
-   201,   180,   280,   214,   215,   100,   100,   100,   100,   100,
+   111,    78,    99,   182,   227,    80,    92,   183,   199,   139,
+   231,   179,   109,   101,   102,   294,   177,   196,   205,   106,
+   290,   117,   180,   197,   112,   113,    95,    89,   115,   116,
+    96,   236,   335,    83,   129,   130,   131,   132,   212,   292,
+   189,   190,   315,   110,   295,   103,   155,   114,   299,   182,
+   189,   190,   193,   100,   100,   260,   105,   261,   178,   100,
+   156,   157,    81,    93,   100,   100,   125,   332,   100,   100,
+   107,   266,   318,   187,   100,   100,   100,   100,   180,   194,
+   342,   202,   158,   159,   197,   180,   203,   336,    82,    94,
+   184,   200,   191,   207,   181,   209,   218,   210,   211,   283,
+   198,   206,   191,   133,   133,   163,   164,   134,   137,   192,
+   264,   135,   138,     1,     2,     3,     4,     5,   108,   165,
+   166,   219,     8,   186,   232,    84,   180,   234,   140,   141,
+    16,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+   149,   150,   151,   152,   245,   246,   247,   248,   249,   250,
+   173,   169,   170,   171,   172,   237,   238,   239,   167,   168,
+    26,   310,   202,   311,   174,   272,   312,   268,    85,   153,
+   273,    30,    31,   175,    86,   274,    33,   276,   277,   278,
+   180,   285,   180,   180,   180,   327,   286,   220,   296,   316,
+   221,   176,   280,   273,   180,   100,   100,   100,   100,   100,
    100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
-   100,   100,   100,   100,   100,   100,   100,   100,   -27,  -126,
-   224,   225,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
-  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
-  -126,  -126,  -126,   285,   -28,  -126,  -126,  -126,   286,  -126,
-  -126,   208,   296,   222,   293,   187,   301,   273,   303,   316,
-   306,   321,   328,   341,   180,   302,   180,   180,   180,   287,
-   180,   298,   169,   170,   171,   172,   223,  -126,  -126,  -126,
-   313,   228,   187,  -126,  -126,   251,   252,   253,   254,   288,
-   180,   233,  -126,  -126,   235,   255,   256,   257,   331,   180,
-   344,   262,   333,   339,   329,   240,   241,   187,   180,   265,
-   340,   270,   334,   275,   279,   215,   300,   289,   304,   307,
-   187,   314,   308,   347,   319,   349,   350,   350,   317,   320,
-   354,   322,   326,   355,   355,    97,   343,     1,     2,     3,
-     4,     5,   348,   345,   330,   353,     8,   357,   358,    84,
-   284,    13,    14,    87,    16,   282,   140,   141,    88,   258,
-    19,   142,   143,   144,   145,   146,   147,   148,   149,   150,
-   151,   152,   259,   352,   267,   263,    24,    25,   338,   291,
-   346,   281,   269,     0,    26,     0,     0,     0,     0,     0,
-     0,     0,    85,    28,    29,    30,    31,   153,    86,     0,
+   100,   100,   100,   100,   100,   100,   100,   100,   194,   321,
+   140,   141,    96,   182,   180,   142,   143,   144,   145,   146,
+   147,   148,   149,   150,   151,   152,   328,   341,   160,   161,
+   162,   180,   180,   251,   252,   253,   254,   242,   243,   244,
+   255,   256,   257,   201,   293,   187,   301,   208,   303,   -27,
+   306,   153,   214,   215,   -28,   302,   224,   225,   287,   180,
+   228,   298,   288,   180,   180,   344,   222,   240,   241,   233,
+   313,   235,   187,   262,   180,   215,   270,   265,   275,   279,
+   300,   307,   304,   289,   314,   317,   320,   322,   331,   326,
+   308,   330,   333,   339,   329,   343,   345,   187,   348,   353,
+   340,   357,   334,   358,   282,   284,    87,    88,   258,   352,
+   187,   259,   263,   347,   267,   349,   350,   350,   291,   346,
+   354,   269,     0,   355,   355,    97,   338,     1,     2,     3,
+     4,     5,     0,     0,   281,     0,     8,     0,     0,    84,
+     0,    13,    14,     0,    16,     0,     0,     0,     0,     0,
+    19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    24,    25,     0,     0,
+     0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
+     0,     0,    85,    28,    29,    30,    31,     0,    86,     0,
     33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
      0,     1,     2,     3,   118,   119,     6,     0,    98,     7,
      8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
@@ -577,101 +576,120 @@ static const short yytable[] = {   104,
      0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
      0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
      0,     0,     0,     0,    27,    28,    29,    30,    31,     0,
-    32,   297,    33,     0,     0,     0,     0,    34,    35,    36,
+    32,   223,    33,     0,     0,     0,     0,    34,    35,    36,
     37,     0,     0,     1,     2,     3,     4,     5,     6,     0,
     38,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     16,    17,    18,     0,     0,     0,    19,    20,    21,     0,
     22,    23,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
     26,     0,     0,     0,     0,     0,     0,     0,    27,    28,
-    29,    30,    31,     0,    32,     0,    33,     0,     0,     0,
+    29,    30,    31,     0,    32,   297,    33,     0,     0,     0,
      0,    34,    35,    36,    37,     0,     0,     1,     2,     3,
-     4,     5,     6,     0,    38,     7,     8,     9,    10,    84,
+     4,     5,     6,     0,    38,     7,     8,     9,    10,    11,
     12,    13,    14,    15,    16,    17,    18,     0,     0,     0,
     19,    20,    21,     0,    22,    23,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,    24,    25,     0,     0,
      0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
-     0,     0,    27,    28,    29,    30,    31,     0,    32,     0,
+     0,     0,    27,    28,    29,    30,    31,     0,    32,   319,
     33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
-     1,     2,     3,     4,     5,     0,     0,     0,    38,     8,
-   185,     0,    84,     0,    13,    14,     0,    16,     0,     0,
+     0,     1,     2,     3,     4,     5,     6,     0,    38,     7,
+     8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+    18,     0,     0,     0,    19,    20,    21,     0,    22,    23,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
+     0,     0,     0,     0,     0,     0,    27,    28,    29,    30,
+    31,     0,    32,     0,    33,     0,     0,     0,     0,    34,
+    35,    36,    37,     0,     0,     1,     2,     3,     4,     5,
+     6,     0,    38,     7,     8,     9,    10,    84,    12,    13,
+    14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
+    21,     0,    22,    23,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
+     0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
+    27,    28,    29,    30,    31,     0,    32,     0,    33,     0,
+     0,     0,     0,    34,    35,    36,    37,     0,     0,     0,
+     0,     0,     0,     0,  -126,     0,    38,  -126,  -126,  -126,
+  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
+  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,     0,     0,
+  -126,  -126,  -126,     0,  -126,  -126,     1,     2,     3,     4,
+     5,     0,     0,     0,     0,     8,   185,     0,    84,     0,
+    13,    14,     0,    16,     0,     0,     0,     0,     0,    19,
+     0,     0,  -126,  -126,  -126,     0,     0,     0,  -126,  -126,
+     0,     0,     0,     0,     0,    24,    25,  -126,  -126,     0,
+     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
+     0,    85,    28,    29,    30,    31,     0,    86,     0,    33,
+     0,     0,     0,     0,    34,    35,    36,    37,     1,     2,
+     3,     4,     5,     0,     0,     0,     0,     8,     0,     0,
+    84,     0,    13,    14,     0,    16,     0,     0,     0,     0,
+     0,    19,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
+     0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
+     0,     0,     0,    85,    28,    29,    30,    31,     0,    86,
+     0,    33,   226,     0,     0,     0,    34,    35,    36,    37,
+     1,     2,     3,     4,     5,     0,     0,     0,     0,     8,
+     0,     0,    84,     0,    13,    14,     0,    16,     0,     0,
      0,     0,     0,    19,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,    24,
     25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
      0,     0,     0,     0,     0,    85,    28,    29,    30,    31,
-     0,    86,     0,    33,     0,     0,     0,     0,    34,    35,
+   229,    86,     0,    33,     0,     0,     0,     0,    34,    35,
     36,    37,     1,     2,     3,     4,     5,     0,     0,     0,
      0,     8,     0,     0,    84,     0,    13,    14,     0,    16,
      0,     0,     0,     0,     0,    19,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,    24,    25,     0,     0,     0,     0,     0,     0,    26,
      0,     0,     0,     0,     0,     0,     0,    85,    28,    29,
-    30,    31,     0,    86,     0,    33,   226,     0,     0,     0,
+    30,    31,     0,    86,     0,    33,   309,     0,     0,     0,
     34,    35,    36,    37,     1,     2,     3,     4,     5,     0,
      0,     0,     0,     8,     0,     0,    84,     0,    13,    14,
      0,    16,     0,     0,     0,     0,     0,    19,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
      0,    26,     0,     0,     0,     0,     0,     0,     0,    85,
-    28,    29,    30,    31,   229,    86,     0,    33,     0,     0,
-     0,     0,    34,    35,    36,    37,     1,     2,     3,     4,
-     5,     0,     0,     0,     0,     8,     0,     0,    84,     0,
-    13,    14,     0,    16,     0,     0,     0,     0,     0,    19,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
-     0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
-     0,    85,    28,    29,    30,    31,     0,    86,     0,    33,
-   309,     0,     0,     0,    34,    35,    36,    37,     1,     2,
-     3,     4,     5,     0,     0,     0,     0,     8,     0,     0,
-    84,     0,    13,    14,     0,    16,     0,     0,     0,     0,
-     0,    19,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
-     0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
-     0,     0,     0,    85,    28,    29,    30,    31,     0,    86,
-     0,    33,     0,     0,     0,     0,    34,    35,    36,    37
+    28,    29,    30,    31,     0,    86,     0,    33,     0,     0,
+     0,     0,    34,    35,    36,    37
 };
 
 static const short yycheck[] = {    17,
-    23,     0,    12,     1,   127,     1,     1,     1,    24,    44,
-   133,     1,    22,    13,    14,    58,    40,     1,     1,    19,
-    63,    31,    68,    62,    24,    25,    68,    65,    28,    29,
-    68,   154,    10,    58,    34,    35,    36,    37,    84,   265,
-     6,     7,    84,    58,   268,    71,    72,    62,   272,    62,
-     6,     7,    87,    13,    14,   178,    63,   180,    82,    19,
-    58,    68,    58,    64,    24,    25,   292,    83,    28,    29,
-    62,   194,   296,    83,    34,    35,    36,    37,    68,    68,
-    79,    44,    45,    46,    68,    68,    84,    65,    84,    84,
-    84,   317,    58,   103,    84,   105,   114,   107,   108,   222,
-    84,    84,    58,    62,   330,    24,    25,    66,    62,    65,
-    24,    70,    62,     3,     4,     5,     6,     7,    69,    38,
-    39,    58,    12,    83,   134,    15,    63,   137,    42,    43,
-    20,    61,    79,    47,    48,    49,    50,    51,    52,    53,
-    54,    55,    56,    57,    62,    75,    76,    80,    66,   160,
-   161,   162,    70,    42,    43,   155,   156,   157,    77,    78,
-    50,   284,    63,   286,    81,    63,   289,    68,    58,    83,
-    68,    61,    62,    41,    64,    62,    66,   163,   164,   165,
-   166,   167,   168,    63,    63,   308,    63,    83,    68,    68,
-    62,    68,   215,    32,    33,   155,   156,   157,   158,   159,
+    23,     0,    12,    78,   127,     1,     1,     1,     1,    44,
+   133,     1,    22,    13,    14,   265,    40,     1,     1,    19,
+    24,    31,    68,    68,    24,    25,    58,    58,    28,    29,
+    62,   154,    10,    62,    34,    35,    36,    37,    84,    84,
+     6,     7,   292,    64,   268,    62,    61,    69,   272,   124,
+     6,     7,    87,    13,    14,   178,    62,   180,    82,    19,
+    75,    76,    58,    58,    24,    25,    68,   317,    28,    29,
+    62,   194,   296,    83,    34,    35,    36,    37,    68,    83,
+   330,    58,    71,    72,    68,    68,    63,    65,    84,    84,
+    84,    84,    58,   103,    84,   105,   114,   107,   108,   222,
+    84,    84,    58,    62,    62,    24,    25,    66,    66,    65,
+    24,    70,    70,     3,     4,     5,     6,     7,    62,    38,
+    39,    63,    12,    83,   134,    15,    68,   137,    42,    43,
+    20,    42,    43,    47,    48,    49,    50,    51,    52,    53,
+    54,    55,    56,    57,   163,   164,   165,   166,   167,   168,
+    79,    34,    35,    36,    37,   155,   156,   157,    77,    78,
+    50,   284,    58,   286,    80,    63,   289,    63,    58,    83,
+    68,    61,    62,    81,    64,    63,    66,    63,    63,    63,
+    68,    63,    68,    68,    68,   308,    68,    65,    63,    63,
+    68,    41,   215,    68,    68,   155,   156,   157,   158,   159,
    160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-   170,   171,   172,   173,   174,   175,   176,   177,    69,     0,
-    67,    68,     3,     4,     5,     6,     7,     8,     9,    10,
-    11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-    21,    22,    23,    63,    69,    26,    27,    28,    68,    30,
-    31,    22,    63,    69,   264,   265,   274,    68,   276,    63,
-   278,    63,    63,    63,    68,   275,    68,    68,    68,    67,
-    68,   270,    34,    35,    36,    37,    65,    58,    59,    60,
-   290,    68,   292,    64,    65,   169,   170,   171,   172,    67,
-    68,    58,    73,    74,    58,   173,   174,   175,   316,    68,
-    69,    58,   320,   326,   314,   158,   159,   317,    68,    84,
-   328,    64,   322,    62,    62,    33,    58,    69,    64,    58,
-   330,    24,    69,   341,    65,   343,   344,   345,    84,    23,
-   348,     9,    63,   351,   352,     1,    63,     3,     4,     5,
-     6,     7,    63,    69,    84,    65,    12,     0,     0,    15,
-   225,    17,    18,     8,    20,   221,    42,    43,     8,   176,
-    26,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-    56,    57,   177,   345,   197,   185,    42,    43,   324,   262,
-   337,   216,   201,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    58,    59,    60,    61,    62,    83,    64,    -1,
+   170,   171,   172,   173,   174,   175,   176,   177,    83,    63,
+    42,    43,    62,   298,    68,    47,    48,    49,    50,    51,
+    52,    53,    54,    55,    56,    57,    63,    63,    44,    45,
+    46,    68,    68,   169,   170,   171,   172,   160,   161,   162,
+   173,   174,   175,    62,   264,   265,   274,    22,   276,    69,
+   278,    83,    32,    33,    69,   275,    67,    68,    67,    68,
+    68,   270,    67,    68,    68,    69,    69,   158,   159,    58,
+   290,    58,   292,    58,    68,    33,    64,    84,    62,    62,
+    58,    58,    64,    69,    24,    84,    23,     9,   316,    63,
+    69,    84,   320,   326,   314,    63,    69,   317,    63,    65,
+   328,     0,   322,     0,   221,   225,     8,     8,   176,   345,
+   330,   177,   185,   341,   197,   343,   344,   345,   262,   337,
+   348,   201,    -1,   351,   352,     1,   324,     3,     4,     5,
+     6,     7,    -1,    -1,   216,    -1,    12,    -1,    -1,    15,
+    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
+    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
+    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,
     66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
     -1,     3,     4,     5,     6,     7,     8,    -1,    84,    11,
     12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
@@ -701,22 +719,55 @@ static const short yycheck[] = {    17,
     30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
     50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-    60,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
+    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,
     -1,    71,    72,    73,    74,    -1,    -1,     3,     4,     5,
      6,     7,     8,    -1,    84,    11,    12,    13,    14,    15,
     16,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
     26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
     -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,
+    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,    65,
     66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
-     3,     4,     5,     6,     7,    -1,    -1,    -1,    84,    12,
-    13,    -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,
+    -1,     3,     4,     5,     6,     7,     8,    -1,    84,    11,
+    12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
+    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,
+    72,    73,    74,    -1,    -1,     3,     4,     5,     6,     7,
+     8,    -1,    84,    11,    12,    13,    14,    15,    16,    17,
+    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,    27,
+    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
+    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
+    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,     0,    -1,    84,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+    16,    17,    18,    19,    20,    21,    22,    23,    -1,    -1,
+    26,    27,    28,    -1,    30,    31,     3,     4,     5,     6,
+     7,    -1,    -1,    -1,    -1,    12,    13,    -1,    15,    -1,
+    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,
+    -1,    -1,    58,    59,    60,    -1,    -1,    -1,    64,    65,
+    -1,    -1,    -1,    -1,    -1,    42,    43,    73,    74,    -1,
+    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,    66,
+    -1,    -1,    -1,    -1,    71,    72,    73,    74,     3,     4,
+     5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,
+    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,
+    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
+    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
+    -1,    66,    67,    -1,    -1,    -1,    71,    72,    73,    74,
+     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,
+    -1,    -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,
     -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
     43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,
-    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,
+    63,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,
     73,    74,     3,     4,     5,     6,     7,    -1,    -1,    -1,
     -1,    12,    -1,    -1,    15,    -1,    17,    18,    -1,    20,
     -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,
@@ -730,22 +781,8 @@ static const short yycheck[] = {    17,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
     -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-    59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
-    -1,    -1,    71,    72,    73,    74,     3,     4,     5,     6,
-     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,
-    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,
-    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    58,    59,    60,    61,    62,    -1,    64,    -1,    66,
-    67,    -1,    -1,    -1,    71,    72,    73,    74,     3,     4,
-     5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,
-    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,
-    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
-    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
-    -1,    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74
+    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
+    -1,    -1,    71,    72,    73,    74
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1291,386 +1328,386 @@ yyreduce:
   switch (yyn) {
 
 case 1:
-#line 164 "grammar.y"
+#line 163 "grammar.y"
 { yyval.node = new NullNode(); ;
     break;}
 case 2:
-#line 165 "grammar.y"
+#line 164 "grammar.y"
 { yyval.node = new BooleanNode(true); ;
     break;}
 case 3:
-#line 166 "grammar.y"
+#line 165 "grammar.y"
 { yyval.node = new BooleanNode(false); ;
     break;}
 case 4:
-#line 167 "grammar.y"
+#line 166 "grammar.y"
 { yyval.node = new NumberNode(yyvsp[0].dval); ;
     break;}
 case 5:
-#line 168 "grammar.y"
+#line 167 "grammar.y"
 { yyval.node = new StringNode(yyvsp[0].ustr); delete yyvsp[0].ustr; ;
     break;}
 case 6:
-#line 169 "grammar.y"
+#line 168 "grammar.y"
 { Lexer *l = Lexer::curr();
                                      if (!l->scanRegExp()) YYABORT;
                                      yyval.node = new RegExpNode(l->pattern,l->flags);;
     break;}
 case 7:
-#line 173 "grammar.y"
+#line 172 "grammar.y"
 { Lexer *l = Lexer::curr();
                                      if (!l->scanRegExp()) YYABORT;
                                      yyval.node = new RegExpNode(UString('=')+l->pattern,l->flags);;
     break;}
 case 8:
-#line 179 "grammar.y"
+#line 178 "grammar.y"
 { yyval.node = new ThisNode(); ;
     break;}
 case 9:
-#line 180 "grammar.y"
+#line 179 "grammar.y"
 { yyval.node = new ResolveNode(*yyvsp[0].ident);
                                      delete yyvsp[0].ident; ;
     break;}
 case 12:
-#line 184 "grammar.y"
+#line 183 "grammar.y"
 { yyval.node = new GroupNode(yyvsp[-1].node); ;
     break;}
 case 13:
-#line 185 "grammar.y"
+#line 184 "grammar.y"
 { yyval.node = new ObjectLiteralNode(0L); ;
     break;}
 case 14:
-#line 186 "grammar.y"
+#line 185 "grammar.y"
 { yyval.node = new ObjectLiteralNode(yyvsp[-1].plist); ;
     break;}
 case 15:
-#line 190 "grammar.y"
+#line 189 "grammar.y"
 { yyval.node = new ArrayNode(yyvsp[-1].ival); ;
     break;}
 case 16:
-#line 191 "grammar.y"
+#line 190 "grammar.y"
 { yyval.node = new ArrayNode(yyvsp[-1].elm); ;
     break;}
 case 17:
-#line 192 "grammar.y"
+#line 191 "grammar.y"
 { yyval.node = new ArrayNode(yyvsp[-1].ival, yyvsp[-3].elm); ;
     break;}
 case 18:
-#line 196 "grammar.y"
+#line 195 "grammar.y"
 { yyval.elm = new ElementNode(yyvsp[-1].ival, yyvsp[0].node); ;
     break;}
 case 19:
-#line 198 "grammar.y"
+#line 197 "grammar.y"
 { yyval.elm = new ElementNode(yyvsp[-3].elm, yyvsp[-1].ival, yyvsp[0].node); ;
     break;}
 case 20:
-#line 202 "grammar.y"
+#line 201 "grammar.y"
 { yyval.ival = 0; ;
     break;}
 case 22:
-#line 207 "grammar.y"
+#line 206 "grammar.y"
 { yyval.ival = 1; ;
     break;}
 case 23:
-#line 208 "grammar.y"
+#line 207 "grammar.y"
 { yyval.ival = yyvsp[-1].ival + 1; ;
     break;}
 case 24:
-#line 212 "grammar.y"
+#line 211 "grammar.y"
 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node); ;
     break;}
 case 25:
-#line 214 "grammar.y"
+#line 213 "grammar.y"
 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node, yyvsp[-4].plist); ;
     break;}
 case 26:
-#line 218 "grammar.y"
+#line 217 "grammar.y"
 { yyval.pnode = new PropertyNode(*yyvsp[0].ident); delete yyvsp[0].ident; ;
     break;}
 case 27:
-#line 219 "grammar.y"
+#line 218 "grammar.y"
 { yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); delete yyvsp[0].ustr; ;
     break;}
 case 28:
-#line 220 "grammar.y"
+#line 219 "grammar.y"
 { yyval.pnode = new PropertyNode(yyvsp[0].dval); ;
     break;}
 case 31:
-#line 226 "grammar.y"
+#line 225 "grammar.y"
 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 32:
-#line 227 "grammar.y"
+#line 226 "grammar.y"
 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); delete yyvsp[0].ident; ;
     break;}
 case 33:
-#line 228 "grammar.y"
+#line 227 "grammar.y"
 { yyval.node = new NewExprNode(yyvsp[-1].node, yyvsp[0].args); ;
     break;}
 case 35:
-#line 233 "grammar.y"
+#line 232 "grammar.y"
 { yyval.node = new NewExprNode(yyvsp[0].node); ;
     break;}
 case 36:
-#line 237 "grammar.y"
+#line 236 "grammar.y"
 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
     break;}
 case 37:
-#line 238 "grammar.y"
+#line 237 "grammar.y"
 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
     break;}
 case 38:
-#line 239 "grammar.y"
+#line 238 "grammar.y"
 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
     break;}
 case 39:
-#line 240 "grammar.y"
+#line 239 "grammar.y"
 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident);
                                      delete yyvsp[0].ident; ;
     break;}
 case 40:
-#line 245 "grammar.y"
+#line 244 "grammar.y"
 { yyval.args = new ArgumentsNode(0L); ;
     break;}
 case 41:
-#line 246 "grammar.y"
+#line 245 "grammar.y"
 { yyval.args = new ArgumentsNode(yyvsp[-1].alist); ;
     break;}
 case 42:
-#line 250 "grammar.y"
+#line 249 "grammar.y"
 { yyval.alist = new ArgumentListNode(yyvsp[0].node); ;
     break;}
 case 43:
-#line 251 "grammar.y"
+#line 250 "grammar.y"
 { yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ;
     break;}
 case 47:
-#line 261 "grammar.y"
+#line 260 "grammar.y"
 { yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ;
     break;}
 case 48:
-#line 262 "grammar.y"
+#line 261 "grammar.y"
 { yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ;
     break;}
 case 50:
-#line 267 "grammar.y"
+#line 266 "grammar.y"
 { yyval.node = new DeleteNode(yyvsp[0].node); ;
     break;}
 case 51:
-#line 268 "grammar.y"
+#line 267 "grammar.y"
 { yyval.node = new VoidNode(yyvsp[0].node); ;
     break;}
 case 52:
-#line 269 "grammar.y"
+#line 268 "grammar.y"
 { yyval.node = new TypeOfNode(yyvsp[0].node); ;
     break;}
 case 53:
-#line 270 "grammar.y"
+#line 269 "grammar.y"
 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
     break;}
 case 54:
-#line 271 "grammar.y"
+#line 270 "grammar.y"
 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
     break;}
 case 55:
-#line 272 "grammar.y"
+#line 271 "grammar.y"
 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
     break;}
 case 56:
-#line 273 "grammar.y"
+#line 272 "grammar.y"
 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
     break;}
 case 57:
-#line 274 "grammar.y"
+#line 273 "grammar.y"
 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
     break;}
 case 58:
-#line 275 "grammar.y"
+#line 274 "grammar.y"
 { yyval.node = new NegateNode(yyvsp[0].node); ;
     break;}
 case 59:
-#line 276 "grammar.y"
+#line 275 "grammar.y"
 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
     break;}
 case 60:
-#line 277 "grammar.y"
+#line 276 "grammar.y"
 { yyval.node = new LogicalNotNode(yyvsp[0].node); ;
     break;}
 case 62:
-#line 282 "grammar.y"
+#line 281 "grammar.y"
 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;
     break;}
 case 63:
-#line 283 "grammar.y"
+#line 282 "grammar.y"
 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;
     break;}
 case 64:
-#line 284 "grammar.y"
+#line 283 "grammar.y"
 { yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ;
     break;}
 case 66:
-#line 289 "grammar.y"
+#line 288 "grammar.y"
 { yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '+'); ;
     break;}
 case 67:
-#line 290 "grammar.y"
+#line 289 "grammar.y"
 { yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '-'); ;
     break;}
 case 69:
-#line 295 "grammar.y"
+#line 294 "grammar.y"
 { yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;
     break;}
 case 70:
-#line 296 "grammar.y"
+#line 295 "grammar.y"
 { yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;
     break;}
 case 71:
-#line 297 "grammar.y"
+#line 296 "grammar.y"
 { yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ;
     break;}
 case 73:
-#line 303 "grammar.y"
+#line 302 "grammar.y"
 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
     break;}
 case 74:
-#line 305 "grammar.y"
+#line 304 "grammar.y"
 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
     break;}
 case 75:
-#line 307 "grammar.y"
+#line 306 "grammar.y"
 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
     break;}
 case 76:
-#line 309 "grammar.y"
+#line 308 "grammar.y"
 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
     break;}
 case 77:
-#line 311 "grammar.y"
+#line 310 "grammar.y"
 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
     break;}
 case 78:
-#line 313 "grammar.y"
+#line 312 "grammar.y"
 { yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ;
     break;}
 case 80:
-#line 318 "grammar.y"
+#line 317 "grammar.y"
 { yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ;
     break;}
 case 81:
-#line 319 "grammar.y"
+#line 318 "grammar.y"
 { yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;
     break;}
 case 82:
-#line 320 "grammar.y"
+#line 319 "grammar.y"
 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;
     break;}
 case 83:
-#line 321 "grammar.y"
+#line 320 "grammar.y"
 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);;
     break;}
 case 85:
-#line 326 "grammar.y"
+#line 325 "grammar.y"
 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ;
     break;}
 case 87:
-#line 331 "grammar.y"
+#line 330 "grammar.y"
 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ;
     break;}
 case 89:
-#line 336 "grammar.y"
+#line 335 "grammar.y"
 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ;
     break;}
 case 91:
-#line 342 "grammar.y"
+#line 341 "grammar.y"
 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ;
     break;}
 case 93:
-#line 348 "grammar.y"
+#line 347 "grammar.y"
 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ;
     break;}
 case 95:
-#line 354 "grammar.y"
+#line 353 "grammar.y"
 { yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 97:
-#line 360 "grammar.y"
+#line 359 "grammar.y"
 { yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
     break;}
 case 98:
-#line 364 "grammar.y"
+#line 363 "grammar.y"
 { yyval.op = OpEqual; ;
     break;}
 case 99:
-#line 365 "grammar.y"
+#line 364 "grammar.y"
 { yyval.op = OpPlusEq; ;
     break;}
 case 100:
-#line 366 "grammar.y"
+#line 365 "grammar.y"
 { yyval.op = OpMinusEq; ;
     break;}
 case 101:
-#line 367 "grammar.y"
+#line 366 "grammar.y"
 { yyval.op = OpMultEq; ;
     break;}
 case 102:
-#line 368 "grammar.y"
+#line 367 "grammar.y"
 { yyval.op = OpDivEq; ;
     break;}
 case 103:
-#line 369 "grammar.y"
+#line 368 "grammar.y"
 { yyval.op = OpLShift; ;
     break;}
 case 104:
-#line 370 "grammar.y"
+#line 369 "grammar.y"
 { yyval.op = OpRShift; ;
     break;}
 case 105:
-#line 371 "grammar.y"
+#line 370 "grammar.y"
 { yyval.op = OpURShift; ;
     break;}
 case 106:
-#line 372 "grammar.y"
+#line 371 "grammar.y"
 { yyval.op = OpAndEq; ;
     break;}
 case 107:
-#line 373 "grammar.y"
+#line 372 "grammar.y"
 { yyval.op = OpXOrEq; ;
     break;}
 case 108:
-#line 374 "grammar.y"
+#line 373 "grammar.y"
 { yyval.op = OpOrEq; ;
     break;}
 case 109:
-#line 375 "grammar.y"
+#line 374 "grammar.y"
 { yyval.op = OpModEq; ;
     break;}
 case 111:
-#line 380 "grammar.y"
+#line 379 "grammar.y"
 { yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ;
     break;}
 case 126:
-#line 401 "grammar.y"
+#line 400 "grammar.y"
 { yyval.stat = new BlockNode(0L); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
     break;}
 case 127:
-#line 402 "grammar.y"
+#line 401 "grammar.y"
 { yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
     break;}
 case 128:
-#line 406 "grammar.y"
+#line 405 "grammar.y"
 { yyval.slist = new StatListNode(yyvsp[0].stat); ;
     break;}
 case 129:
-#line 407 "grammar.y"
+#line 406 "grammar.y"
 { yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
     break;}
 case 130:
-#line 411 "grammar.y"
+#line 410 "grammar.y"
 { yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
                                       DBG(yyval.stat, yylsp[-2], yylsp[0]); ;
     break;}
 case 131:
-#line 413 "grammar.y"
+#line 412 "grammar.y"
 { if (automatic()) {
                                           yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
 					  DBG(yyval.stat, yylsp[-2], yylsp[-1]);
@@ -1680,36 +1717,36 @@ case 131:
                                       ;
     break;}
 case 132:
-#line 423 "grammar.y"
+#line 422 "grammar.y"
 { yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;
     break;}
 case 133:
-#line 425 "grammar.y"
+#line 424 "grammar.y"
 { yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
     break;}
 case 134:
-#line 429 "grammar.y"
+#line 428 "grammar.y"
 { yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); delete yyvsp[0].ident; ;
     break;}
 case 135:
-#line 430 "grammar.y"
+#line 429 "grammar.y"
 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); delete yyvsp[-1].ident; ;
     break;}
 case 136:
-#line 434 "grammar.y"
+#line 433 "grammar.y"
 { yyval.init = new AssignExprNode(yyvsp[0].node); ;
     break;}
 case 137:
-#line 438 "grammar.y"
+#line 437 "grammar.y"
 { yyval.stat = new EmptyStatementNode(); ;
     break;}
 case 138:
-#line 442 "grammar.y"
+#line 441 "grammar.y"
 { yyval.stat = new ExprStatementNode(yyvsp[-1].node);
                                      DBG(yyval.stat, yylsp[-1], yylsp[0]); ;
     break;}
 case 139:
-#line 444 "grammar.y"
+#line 443 "grammar.y"
 { if (automatic()) {
                                        yyval.stat = new ExprStatementNode(yyvsp[-1].node);
 				       DBG(yyval.stat, yylsp[-1], yylsp[-1]);
@@ -1717,70 +1754,70 @@ case 139:
 				       YYABORT; ;
     break;}
 case 140:
-#line 452 "grammar.y"
+#line 451 "grammar.y"
 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
     break;}
 case 141:
-#line 454 "grammar.y"
+#line 453 "grammar.y"
 { yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
     break;}
 case 142:
-#line 458 "grammar.y"
+#line 457 "grammar.y"
 { yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);;
     break;}
 case 143:
-#line 459 "grammar.y"
+#line 458 "grammar.y"
 { yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
     break;}
 case 144:
-#line 461 "grammar.y"
+#line 460 "grammar.y"
 { yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
 	                             DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
     break;}
 case 145:
-#line 464 "grammar.y"
+#line 463 "grammar.y"
 { yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
 	                             DBG(yyval.stat,yylsp[-9],yylsp[-1]); ;
     break;}
 case 146:
-#line 467 "grammar.y"
+#line 466 "grammar.y"
 { yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat);
 	                             DBG(yyval.stat,yylsp[-6],yylsp[-1]); ;
     break;}
 case 147:
-#line 470 "grammar.y"
+#line 469 "grammar.y"
 { yyval.stat = new ForInNode(*yyvsp[-4].ident,0L,yyvsp[-2].node,yyvsp[0].stat);
 	                             DBG(yyval.stat,yylsp[-7],yylsp[-1]);
                                      delete yyvsp[-4].ident; ;
     break;}
 case 148:
-#line 474 "grammar.y"
+#line 473 "grammar.y"
 { yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat);
 	                             DBG(yyval.stat,yylsp[-8],yylsp[-1]);
                                      delete yyvsp[-5].ident; ;
     break;}
 case 149:
-#line 480 "grammar.y"
+#line 479 "grammar.y"
 { yyval.node = 0L; ;
     break;}
 case 151:
-#line 485 "grammar.y"
+#line 484 "grammar.y"
 { yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
     break;}
 case 152:
-#line 486 "grammar.y"
+#line 485 "grammar.y"
 { if (automatic()) {
                                        yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
                                      } else
 				       YYABORT; ;
     break;}
 case 153:
-#line 490 "grammar.y"
+#line 489 "grammar.y"
 { yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]);
                                      delete yyvsp[-1].ident; ;
     break;}
 case 154:
-#line 492 "grammar.y"
+#line 491 "grammar.y"
 { if (automatic()) {
                                        yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]);
 				       delete yyvsp[-1].ident;
@@ -1788,23 +1825,23 @@ case 154:
 				       YYABORT; ;
     break;}
 case 155:
-#line 500 "grammar.y"
+#line 499 "grammar.y"
 { yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
     break;}
 case 156:
-#line 501 "grammar.y"
+#line 500 "grammar.y"
 { if (automatic()) {
                                        yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
                                      } else
 				       YYABORT; ;
     break;}
 case 157:
-#line 505 "grammar.y"
+#line 504 "grammar.y"
 { yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]);
                                      delete yyvsp[-1].ident; ;
     break;}
 case 158:
-#line 507 "grammar.y"
+#line 506 "grammar.y"
 { if (automatic()) {
                                        yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
 				       delete yyvsp[-1].ident;
@@ -1813,165 +1850,165 @@ case 158:
                                    ;
     break;}
 case 159:
-#line 516 "grammar.y"
+#line 515 "grammar.y"
 { yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
     break;}
 case 160:
-#line 517 "grammar.y"
+#line 516 "grammar.y"
 { if (automatic()) {
                                        yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
                                      } else
 				       YYABORT; ;
     break;}
 case 161:
-#line 521 "grammar.y"
+#line 520 "grammar.y"
 { yyval.stat = new ReturnNode(yyvsp[-1].node); ;
     break;}
 case 162:
-#line 522 "grammar.y"
+#line 521 "grammar.y"
 { if (automatic())
                                        yyval.stat = new ReturnNode(yyvsp[-1].node);
                                      else
 				       YYABORT; ;
     break;}
 case 163:
-#line 529 "grammar.y"
+#line 528 "grammar.y"
 { yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat);
                                      DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
     break;}
 case 164:
-#line 534 "grammar.y"
+#line 533 "grammar.y"
 { yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk);
                                      DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
     break;}
 case 165:
-#line 539 "grammar.y"
+#line 538 "grammar.y"
 { yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0L, 0L); ;
     break;}
 case 166:
-#line 541 "grammar.y"
+#line 540 "grammar.y"
 { yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
     break;}
 case 167:
-#line 545 "grammar.y"
+#line 544 "grammar.y"
 { yyval.clist = 0L; ;
     break;}
 case 169:
-#line 550 "grammar.y"
+#line 549 "grammar.y"
 { yyval.clist = new ClauseListNode(yyvsp[0].ccl); ;
     break;}
 case 170:
-#line 551 "grammar.y"
+#line 550 "grammar.y"
 { yyval.clist = yyvsp[-1].clist->append(yyvsp[0].ccl); ;
     break;}
 case 171:
-#line 555 "grammar.y"
+#line 554 "grammar.y"
 { yyval.ccl = new CaseClauseNode(yyvsp[-1].node, 0L); ;
     break;}
 case 172:
-#line 556 "grammar.y"
+#line 555 "grammar.y"
 { yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
     break;}
 case 173:
-#line 560 "grammar.y"
+#line 559 "grammar.y"
 { yyval.ccl = new CaseClauseNode(0L, 0L);; ;
     break;}
 case 174:
-#line 561 "grammar.y"
+#line 560 "grammar.y"
 { yyval.ccl = new CaseClauseNode(0L, yyvsp[0].slist); ;
     break;}
 case 175:
-#line 565 "grammar.y"
+#line 564 "grammar.y"
 { yyvsp[0].stat->pushLabel(*yyvsp[-2].ident);
                                      yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat);
                                      delete yyvsp[-2].ident; ;
     break;}
 case 176:
-#line 571 "grammar.y"
+#line 570 "grammar.y"
 { yyval.stat = new ThrowNode(yyvsp[-1].node); ;
     break;}
 case 177:
-#line 575 "grammar.y"
+#line 574 "grammar.y"
 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].node); ;
     break;}
 case 178:
-#line 576 "grammar.y"
+#line 575 "grammar.y"
 { yyval.stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ;
     break;}
 case 179:
-#line 577 "grammar.y"
+#line 576 "grammar.y"
 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ;
     break;}
 case 180:
-#line 581 "grammar.y"
+#line 580 "grammar.y"
 { yyval.node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); delete yyvsp[-2].ident; ;
     break;}
 case 181:
-#line 585 "grammar.y"
+#line 584 "grammar.y"
 { yyval.node = new FinallyNode(yyvsp[0].stat); ;
     break;}
 case 182:
-#line 589 "grammar.y"
+#line 588 "grammar.y"
 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, 0L, yyvsp[0].body);
                                              delete yyvsp[-3].ident; ;
     break;}
 case 183:
-#line 592 "grammar.y"
+#line 591 "grammar.y"
 { yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body);
                                      delete yyvsp[-4].ident; ;
     break;}
 case 184:
-#line 596 "grammar.y"
+#line 595 "grammar.y"
 { yyval.node = new FuncExprNode(0L, yyvsp[0].body); ;
     break;}
 case 185:
-#line 598 "grammar.y"
+#line 597 "grammar.y"
 { yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
     break;}
 case 186:
-#line 603 "grammar.y"
+#line 602 "grammar.y"
 { yyval.param = new ParameterNode(*yyvsp[0].ident); delete yyvsp[0].ident; ;
     break;}
 case 187:
-#line 604 "grammar.y"
+#line 603 "grammar.y"
 { yyval.param = yyvsp[-2].param->append(*yyvsp[0].ident);
 	                             delete yyvsp[0].ident; ;
     break;}
 case 188:
-#line 609 "grammar.y"
+#line 608 "grammar.y"
 { yyval.body = new FunctionBodyNode(0L);
 	                             DBG(yyval.body, yylsp[-1], yylsp[0]);;
     break;}
 case 189:
-#line 611 "grammar.y"
+#line 610 "grammar.y"
 { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
 	                             DBG(yyval.body, yylsp[-2], yylsp[0]);;
     break;}
 case 190:
-#line 616 "grammar.y"
+#line 615 "grammar.y"
 { yyval.prog = new ProgramNode(0L);
                                      Parser::progNode = yyval.prog; ;
     break;}
 case 191:
-#line 618 "grammar.y"
+#line 617 "grammar.y"
 { yyval.prog = new ProgramNode(yyvsp[0].srcs);
                                      Parser::progNode = yyval.prog; ;
     break;}
 case 192:
-#line 623 "grammar.y"
-{ yyval.srcs = new SourceElementsNode(yyvsp[0].src); ;
+#line 622 "grammar.y"
+{ yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
     break;}
 case 193:
-#line 624 "grammar.y"
-{ yyval.srcs = new SourceElementsNode(yyvsp[0].srcs, yyvsp[-1].src); ;
+#line 623 "grammar.y"
+{ yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
     break;}
 case 194:
-#line 628 "grammar.y"
-{ yyval.src = new SourceElementNode(yyvsp[0].stat); ;
+#line 627 "grammar.y"
+{ yyval.stat = yyvsp[0].stat; ;
     break;}
 case 195:
-#line 629 "grammar.y"
-{ yyval.src = new SourceElementNode(yyvsp[0].func); ;
+#line 628 "grammar.y"
+{ yyval.stat = yyvsp[0].func; ;
     break;}
 }
    /* the action file gets copied in in place of this dollarsign */
@@ -2195,7 +2232,7 @@ yyerrhandle:
     }
   return 1;
 }
-#line 632 "grammar.y"
+#line 631 "grammar.y"
 
 
 int yyerror (const char *)  /* Called by yyparse on error */
diff --git a/JavaScriptCore/kjs/grammar.cpp.h b/JavaScriptCore/kjs/grammar.cpp.h
index 7001a3b..cd63e82 100644
--- a/JavaScriptCore/kjs/grammar.cpp.h
+++ b/JavaScriptCore/kjs/grammar.cpp.h
@@ -10,7 +10,6 @@ typedef union {
   FuncDeclNode        *func;
   ProgramNode         *prog;
   AssignExprNode      *init;
-  SourceElementNode   *src;
   SourceElementsNode  *srcs;
   StatListNode        *slist;
   ArgumentsNode       *args;
diff --git a/JavaScriptCore/kjs/grammar.h b/JavaScriptCore/kjs/grammar.h
index 7001a3b..cd63e82 100644
--- a/JavaScriptCore/kjs/grammar.h
+++ b/JavaScriptCore/kjs/grammar.h
@@ -10,7 +10,6 @@ typedef union {
   FuncDeclNode        *func;
   ProgramNode         *prog;
   AssignExprNode      *init;
-  SourceElementNode   *src;
   SourceElementsNode  *srcs;
   StatListNode        *slist;
   ArgumentsNode       *args;
diff --git a/JavaScriptCore/kjs/grammar.y b/JavaScriptCore/kjs/grammar.y
index 65ae018..418d58b 100644
--- a/JavaScriptCore/kjs/grammar.y
+++ b/JavaScriptCore/kjs/grammar.y
@@ -61,7 +61,6 @@ using namespace KJS;
   FuncDeclNode        *func;
   ProgramNode         *prog;
   AssignExprNode      *init;
-  SourceElementNode   *src;
   SourceElementsNode  *srcs;
   StatListNode        *slist;
   ArgumentsNode       *args;
@@ -136,12 +135,12 @@ using namespace KJS;
 %type <stat>  BreakStatement ReturnStatement WithStatement
 %type <stat>  SwitchStatement LabelledStatement
 %type <stat>  ThrowStatement TryStatement
+%type <stat>  SourceElement
 
 %type <slist> StatementList
 %type <init>  Initializer
 %type <func>  FunctionDeclaration
 %type <body>  FunctionBody
-%type <src>   SourceElement
 %type <srcs>  SourceElements
 %type <param> FormalParameterList
 %type <op>    AssignmentOperator
@@ -621,12 +620,12 @@ Program:
 
 SourceElements:
     SourceElement                  { $$ = new SourceElementsNode($1); }
-  | SourceElement SourceElements   { $$ = new SourceElementsNode($2, $1); }
+  | SourceElements SourceElement   { $$ = new SourceElementsNode($1, $2); }
 ;
 
 SourceElement:
-    Statement                      { $$ = new SourceElementNode($1); }
-  | FunctionDeclaration            { $$ = new SourceElementNode($1); }
+    Statement                      { $$ = $1; }
+  | FunctionDeclaration            { $$ = $1; }
 ;
 
 %%
diff --git a/JavaScriptCore/kjs/nodes.cpp b/JavaScriptCore/kjs/nodes.cpp
index 165d3c1..8758e14 100644
--- a/JavaScriptCore/kjs/nodes.cpp
+++ b/JavaScriptCore/kjs/nodes.cpp
@@ -160,6 +160,10 @@ bool StatementNode::abortStatement(ExecState *exec)
     return false;
 }
 
+void StatementNode::processFuncDecl(ExecState *exec)
+{
+}
+
 // ------------------------------ NullNode -------------------------------------
 
 Value NullNode::evaluate(ExecState */*exec*/)
@@ -1710,6 +1714,18 @@ void VarStatementNode::processVarDecls(ExecState *exec)
 
 // ------------------------------ BlockNode ------------------------------------
 
+void BlockNode::reverseList()
+{
+  SourceElementsNode *head = 0;
+  SourceElementsNode *next;
+  for (SourceElementsNode *n = source; n; n = next) {
+    next = n->elements;
+    n->elements = head;
+    head = n;
+  }
+  source = head;
+}
+
 void BlockNode::ref()
 {
   Node::ref();
@@ -2784,48 +2800,6 @@ Value FuncExprNode::evaluate(ExecState *exec)
   return ret;
 }
 
-// ------------------------------ SourceElementNode ----------------------------
-
-void SourceElementNode::ref()
-{
-  Node::ref();
-  if ( statement )
-    statement->ref();
-  if ( function )
-    function->ref();
-}
-
-bool SourceElementNode::deref()
-{
-  if ( statement && statement->deref() )
-    delete statement;
-  if ( function && function->deref() )
-    delete function;
-  return Node::deref();
-}
-
-// ECMA 14
-Completion SourceElementNode::execute(ExecState *exec)
-{
-  if (statement)
-    return statement->execute(exec);
-
-  return Completion(Normal);
-}
-
-// ECMA 14
-void SourceElementNode::processFuncDecl(ExecState *exec)
-{
-  if (function)
-    function->processFuncDecl(exec);
-}
-
-void SourceElementNode::processVarDecls(ExecState *exec)
-{
-  if (statement)
-    statement->processVarDecls(exec);
-}
-
 // ------------------------------ SourceElementsNode ---------------------------
 
 void SourceElementsNode::ref()
diff --git a/JavaScriptCore/kjs/nodes.h b/JavaScriptCore/kjs/nodes.h
index c5c9dec..8346a21 100644
--- a/JavaScriptCore/kjs/nodes.h
+++ b/JavaScriptCore/kjs/nodes.h
@@ -123,6 +123,7 @@ namespace KJS {
     bool abortStatement(ExecState *exec);
     virtual Completion execute(ExecState *exec) = 0;
     void pushLabel(const Identifier &id) { ls.push(id); }
+    virtual void processFuncDecl(ExecState *exec);
   protected:
     LabelStack ls;
   private:
@@ -655,13 +656,14 @@ namespace KJS {
 
   class BlockNode : public StatementNode {
   public:
-    BlockNode(SourceElementsNode *s) : source(s) {}
+    BlockNode(SourceElementsNode *s) : source(s) { reverseList(); }
     virtual void ref();
     virtual bool deref();
     virtual Completion execute(ExecState *exec);
     virtual void processVarDecls(ExecState *exec);
     virtual void streamTo(SourceStream &s) const;
   protected:
+    void reverseList();
     SourceElementsNode *source;
   };
 
@@ -973,26 +975,11 @@ namespace KJS {
     FunctionBodyNode *body;
   };
 
-  class SourceElementNode : public StatementNode {
-  public:
-    SourceElementNode(StatementNode *s) : statement(s), function(0L) { }
-    SourceElementNode(FuncDeclNode *f) : statement(0L), function(f) { }
-    virtual void ref();
-    virtual bool deref();
-    Completion execute(ExecState *exec);
-    void processFuncDecl(ExecState *exec);
-    virtual void processVarDecls(ExecState *exec);
-    virtual void streamTo(SourceStream &s) const;
-  private:
-    StatementNode *statement;
-    FuncDeclNode *function;
-  };
-
   // A linked list of source element nodes
   class SourceElementsNode : public StatementNode {
   public:
-    SourceElementsNode(SourceElementNode *s1) { element = s1; elements = 0L; }
-    SourceElementsNode(SourceElementsNode *s1, SourceElementNode *s2)
+    SourceElementsNode(StatementNode *s1) { element = s1; elements = 0L; }
+    SourceElementsNode(SourceElementsNode *s1, StatementNode *s2)
       { elements = s1; element = s2; }
     virtual void ref();
     virtual bool deref();
@@ -1001,7 +988,8 @@ namespace KJS {
     virtual void processVarDecls(ExecState *exec);
     virtual void streamTo(SourceStream &s) const;
   private:
-    SourceElementNode *element; // 'this' element
+    friend class BlockNode;
+    StatementNode *element; // 'this' element
     SourceElementsNode *elements; // pointer to next
   };
 
diff --git a/JavaScriptCore/kjs/nodes2string.cpp b/JavaScriptCore/kjs/nodes2string.cpp
index 5ce655c..f638242 100644
--- a/JavaScriptCore/kjs/nodes2string.cpp
+++ b/JavaScriptCore/kjs/nodes2string.cpp
@@ -595,14 +595,6 @@ void FuncExprNode::streamTo(SourceStream &s) const
     << ")" << body;
 }
 
-void SourceElementNode::streamTo(SourceStream &s) const
-{
-  if (statement)
-    s << statement;
-  else
-    s << function;
-}
-
 void SourceElementsNode::streamTo(SourceStream &s) const
 {
   s << elements << element;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list