Changeset 2847 in webkit for trunk/JavaScriptCore


Ignore:
Timestamp:
Nov 24, 2002, 2:12:02 AM (23 years ago)
Author:
mjs
Message:
  • fixed 3095446 - Crash on AppleScript page due to very long argument list
  • kjs/grammar.y: Don't try to construct the argument list in the right order, since that blows out the parser stack.
  • kjs/nodes.cpp: (ArgumentsNode::ArgumentsNode): Instead reverse the argument list here.
  • kjs/nodes.h: Make ArgumentsNode a friend of ArgumentListNode.
  • kjs/grammar.cpp: Updated from grammar.y.
Location:
trunk/JavaScriptCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r2846 r2847  
     12002-11-24  Maciej Stachowiak  <[email protected]>
     2
     3        - fixed 3095446 - Crash on AppleScript page due to very long argument list
     4       
     5        * kjs/grammar.y: Don't try to construct the argument list in the
     6        right order, since that blows out the parser stack.
     7        * kjs/nodes.cpp:
     8        (ArgumentsNode::ArgumentsNode): Instead reverse the argument list
     9        here.
     10        * kjs/nodes.h: Make ArgumentsNode a friend of ArgumentListNode.
     11        * kjs/grammar.cpp: Updated from grammar.y.
     12
    1132002-11-23  Maciej Stachowiak  <[email protected]>
    214
  • trunk/JavaScriptCore/ChangeLog-2002-12-03

    r2846 r2847  
     12002-11-24  Maciej Stachowiak  <[email protected]>
     2
     3        - fixed 3095446 - Crash on AppleScript page due to very long argument list
     4       
     5        * kjs/grammar.y: Don't try to construct the argument list in the
     6        right order, since that blows out the parser stack.
     7        * kjs/nodes.cpp:
     8        (ArgumentsNode::ArgumentsNode): Instead reverse the argument list
     9        here.
     10        * kjs/nodes.h: Make ArgumentsNode a friend of ArgumentListNode.
     11        * kjs/grammar.cpp: Updated from grammar.y.
     12
    1132002-11-23  Maciej Stachowiak  <[email protected]>
    214
  • trunk/JavaScriptCore/ChangeLog-2003-10-25

    r2846 r2847  
     12002-11-24  Maciej Stachowiak  <[email protected]>
     2
     3        - fixed 3095446 - Crash on AppleScript page due to very long argument list
     4       
     5        * kjs/grammar.y: Don't try to construct the argument list in the
     6        right order, since that blows out the parser stack.
     7        * kjs/nodes.cpp:
     8        (ArgumentsNode::ArgumentsNode): Instead reverse the argument list
     9        here.
     10        * kjs/nodes.h: Make ArgumentsNode a friend of ArgumentListNode.
     11        * kjs/grammar.cpp: Updated from grammar.y.
     12
    1132002-11-23  Maciej Stachowiak  <[email protected]>
    214
  • trunk/JavaScriptCore/kjs/grammar.cpp

    r2760 r2847  
    256256    93,    96,     0,    95,    96,     0,    95,    66,   114,    67,
    257257     0,    95,    70,    58,     0,    62,    63,     0,    62,    97,
    258     63,     0,   112,     0,   112,    68,    97,     0,    94,     0,
     258    63,     0,   112,     0,    97,    68,   112,     0,    94,     0,
    259259    95,     0,    98,     0,    98,    42,     0,    98,    43,     0,
    260260    99,     0,    18,   100,     0,    17,   100,     0,    26,   100,
     
    319319   200,   203,   205,   208,   210,   214,   216,   217,   220,   222,
    320320   223,   224,   225,   228,   230,   233,   235,   236,   237,   241,
    321    243,   246,   249,   255,   257,   260,   262,   263,   266,   268,
    322    269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
    323    281,   283,   284,   285,   288,   290,   291,   294,   296,   297,
    324    298,   301,   303,   305,   307,   309,   311,   313,   317,   319,
    325    320,   321,   322,   325,   327,   330,   332,   335,   337,   340,
    326    342,   346,   348,   352,   354,   358,   360,   364,   366,   367,
    327    368,   369,   370,   371,   372,   373,   374,   375,   376,   379,
    328    381,   384,   386,   387,   388,   389,   390,   391,   392,   393,
    329    394,   395,   396,   397,   398,   401,   403,   406,   408,   411,
    330    414,   423,   425,   429,   431,   434,   438,   442,   445,   452,
    331    454,   458,   460,   461,   464,   467,   470,   474,   480,   482,
    332    485,   487,   491,   493,   500,   502,   506,   508,   516,   518,
    333    522,   523,   529,   534,   539,   541,   545,   547,   550,   552,
    334    555,   557,   560,   562,   565,   571,   575,   577,   578,   581,
    335    585,   589,   592,   596,   598,   603,   605,   609,   612,   616,
    336    619,   623,   626,   632,   634
     321   243,   246,   248,   251,   253,   256,   258,   259,   262,   264,
     322   265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     323   277,   279,   280,   281,   284,   286,   287,   290,   292,   293,
     324   294,   297,   299,   301,   303,   305,   307,   309,   313,   315,
     325   316,   317,   318,   321,   323,   326,   328,   331,   333,   336,
     326   338,   342,   344,   348,   350,   354,   356,   360,   362,   363,
     327   364,   365,   366,   367,   368,   369,   370,   371,   372,   375,
     328   377,   380,   382,   383,   384,   385,   386,   387,   388,   389,
     329   390,   391,   392,   393,   394,   397,   399,   402,   404,   407,
     330   410,   419,   421,   425,   427,   430,   434,   438,   441,   448,
     331   450,   454,   456,   457,   460,   463,   466,   470,   476,   478,
     332   481,   483,   487,   489,   496,   498,   502,   504,   512,   514,
     333   518,   519,   525,   530,   535,   537,   541,   543,   546,   548,
     334   551,   553,   556,   558,   561,   567,   571,   573,   574,   577,
     335   581,   585,   588,   592,   594,   599,   601,   605,   608,   612,
     336   615,   619,   622,   628,   630
    337337};
    338338#endif
     
    474474-32768,-32768,  1066,   230,  1066,-32768,  1066,  1066,   -45,   483,
    475475   162,-32768,-32768,   705,-32768,-32768,    -6,   150,   176,    50,
    476    220,   -37,   185,   212,-32768,   154,   850,   196,-32768,-32768,
    477 -32768,-32768,   922,  1066,   224,-32768,  1066,   234,-32768,-32768,
     476   220,   -37,   185,   212,-32768,   154,   850,   214,-32768,-32768,
     477-32768,-32768,   922,  1066,   234,-32768,  1066,   237,-32768,-32768,
    478478-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    479479-32768,-32768,-32768,  1066,  1066,  1066,  1066,  1066,  1066,  1066,
    480480  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,
    481481  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,-32768,  1066,
    482 -32768,-32768,-32768,-32768,   244,    87,   238,   225,-32768,-32768,
     482-32768,-32768,-32768,-32768,   244,    87,   241,   226,-32768,-32768,
    483483-32768,-32768,-32768,  1066,-32768,-32768,   -24,-32768,-32768,-32768,
    484     64,-32768,   243,   100,-32768,-32768,   103,   248,   121,   122,
    485    124,-32768,-32768,   250,     0,   281,-32768,-32768,-32768,-32768,
    486     35,  1066,-32768,-32768,    12,-32768,-32768,-32768,-32768,   252,
    487    249,   223,-32768,   228,-32768,-32768,-32768,-32768,-32768,    71,
     484    64,-32768,   248,   100,-32768,-32768,   103,   252,   121,   122,
     485   124,-32768,-32768,   253,     0,   283,-32768,-32768,-32768,-32768,
     486    35,  1066,-32768,-32768,    12,-32768,-32768,-32768,-32768,   181,
     487-32768,   203,-32768,   223,-32768,-32768,-32768,-32768,-32768,    71,
    488488    71,   -25,   -25,   -25,    38,    38,    38,    38,    38,    38,
    489     82,    82,    82,    82,   239,   239,   239,    84,   133,   247,
    490 -32768,   -15,   -41,  1066,  1066,-32768,-32768,   243,   181,   557,
    491 -32768,   243,   260,   705,  1066,   705,   255,   705,   262,-32768,
    492 -32768,   253,-32768,   994,-32768,  1066,-32768,-32768,  1066,  1066,
    493    299,  1066,   190,   241,-32768,   243,-32768,   264,-32768,-32768,
    494    307,   197,-32768,   323,-32768,-32768,   270,  1066,-32768,-32768,
    495 -32768,-32768,   199,  1066,   259,   705,  1066,-32768,-32768,   705,
    496 -32768,  1066,    23,   323,-32768,     0,-32768,   705,   200,  1066,
    497 -32768,   274,-32768,   229,   275,-32768,   323,-32768,-32768,-32768,
    498    705,   282,   705,   705,   705,   283,-32768,   705,-32768,-32768,
    499    705,   705,-32768,-32768,-32768,   346,   349,-32768
     489    82,    82,    82,    82,   239,   239,   239,    84,   133,   249,
     490-32768,   -15,   -41,  1066,  1066,-32768,-32768,   248,   190,   557,
     491-32768,   248,   259,   705,  1066,   705,   255,   705,   262,-32768,
     492-32768,   254,-32768,   994,-32768,  1066,-32768,-32768,  1066,  1066,
     493   298,  1066,   197,   245,-32768,   248,-32768,   260,-32768,-32768,
     494   307,   199,-32768,   323,-32768,-32768,   270,  1066,-32768,-32768,
     495-32768,-32768,   200,  1066,   261,   705,  1066,-32768,-32768,   705,
     496-32768,  1066,    23,   323,-32768,     0,-32768,   705,   201,  1066,
     497-32768,   274,-32768,   232,   275,-32768,   323,-32768,-32768,-32768,
     498   705,   280,   705,   705,   705,   281,-32768,   705,-32768,-32768,
     499   705,   705,-32768,-32768,-32768,   348,   349,-32768
    500500};
    501501
    502502static const short yypgoto[] = {-32768,
    503 -32768,-32768,-32768,   126,-32768,-32768,   135,   351,   352,-32768,
    504    -34,    88,    41,-32768,     1,   142,   -10,    15,   117,    96,
    505 -32768,-32768,   178,   198,-32768,-32768,  -122,-32768,    -9,   -17,
    506    -22,    28,-32768,   191,   182,   118,-32768,-32768,-32768,-32768,
    507   -225,-32768,-32768,-32768,-32768,-32768,-32768,    44,-32768,    58,
    508 -32768,-32768,-32768,-32768,-32768,   167,-32768,-32768,   183,  -223,
     503-32768,-32768,-32768,   126,-32768,-32768,   135,   346,   351,-32768,
     504   -34,-32768,    41,-32768,     1,   148,   -10,    15,   117,   123,
     505-32768,-32768,   184,   196,-32768,-32768,  -122,-32768,    -9,   -17,
     506   -22,    29,-32768,   191,   178,   118,-32768,-32768,-32768,-32768,
     507  -225,-32768,-32768,-32768,-32768,-32768,-32768,    44,-32768,    55,
     508-32768,-32768,-32768,-32768,-32768,   166,-32768,-32768,   182,  -223,
    509509-32768,     2,-32768
    510510};
     
    531531   149,   150,   151,   152,   133,   156,   157,   174,   137,   242,
    532532   243,   244,   138,   140,   141,   237,   238,   239,   167,   168,
    533     26,   310,   272,   231,   175,   274,   312,   273,    85,   153,
     533    26,   310,   272,   311,   175,   274,   312,   273,    85,   153,
    534534   180,    30,    31,   176,    86,    96,    33,   245,   246,   247,
    535535   248,   249,   250,   276,   277,   327,   278,   194,   180,   180,
     
    539539   224,   225,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
    540540  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
    541   -126,  -126,  -126,   296,   -28,  -126,  -126,  -126,   273,  -126,
    542   -126,   208,   316,   222,   293,   187,   301,   180,   303,   321,
    543    306,   328,   341,   228,   180,   302,   180,   180,   255,   256,
    544    257,   298,   169,   170,   171,   172,   223,  -126,  -126,  -126,
    545    313,   233,   187,  -126,  -126,   251,   252,   253,   254,   287,
    546    180,   235,  -126,  -126,   288,   180,   180,   344,   331,   240,
    547    241,   262,   333,   339,   329,   180,   270,   187,   265,   275,
    548    340,   279,   334,   215,   285,   289,   286,   300,   304,   307,
    549    187,   308,   314,   347,   317,   349,   350,   350,   319,   320,
     541  -126,  -126,  -126,   285,   -28,  -126,  -126,  -126,   286,  -126,
     542  -126,   208,   296,   222,   293,   187,   301,   273,   303,   316,
     543   306,   321,   328,   341,   180,   302,   180,   180,   180,   287,
     544   180,   298,   169,   170,   171,   172,   223,  -126,  -126,  -126,
     545   313,   228,   187,  -126,  -126,   251,   252,   253,   254,   288,
     546   180,   233,  -126,  -126,   235,   255,   256,   257,   331,   180,
     547   344,   262,   333,   339,   329,   240,   241,   187,   180,   265,
     548   340,   270,   334,   275,   279,   215,   300,   289,   304,   307,
     549   187,   314,   308,   347,   319,   349,   350,   350,   317,   320,
    550550   354,   322,   326,   355,   355,    97,   343,     1,     2,     3,
    551      4,     5,   330,   345,   348,   357,     8,   353,   358,    84,
    552    284,    13,    14,   258,    16,   282,   140,   141,    87,    88,
     551     4,     5,   348,   345,   330,   353,     8,   357,   358,    84,
     552   284,    13,    14,    87,    16,   282,   140,   141,    88,   258,
    553553    19,   142,   143,   144,   145,   146,   147,   148,   149,   150,
    554    151,   152,   352,   311,   259,   263,    24,    25,   267,   291,
    555    346,   338,   281,   269,    26,     0,     0,     0,     0,     0,
     554   151,   152,   259,   352,   267,   263,    24,    25,   338,   291,
     555   346,   281,   269,     0,    26,     0,     0,     0,     0,     0,
    556556     0,     0,    85,    28,    29,    30,    31,   153,    86,     0,
    557557    33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
     
    658658    21,    22,    23,    63,    69,    26,    27,    28,    68,    30,
    659659    31,    22,    63,    69,   264,   265,   274,    68,   276,    63,
    660    278,    63,    63,    68,    68,   275,    68,    68,   173,   174,
    661    175,   270,    34,    35,    36,    37,    65,    58,    59,    60,
    662    290,    58,   292,    64,    65,   169,   170,   171,   172,    67,
    663     68,    58,    73,    74,    67,    68,    68,    69,   316,   158,
    664    159,    58,   320,   326,   314,    68,    64,   317,    84,    62,
    665    328,    62,   322,    33,    63,    69,    68,    58,    64,    58,
    666    330,    69,    24,   341,    84,   343,   344,   345,    65,    23,
     660   278,    63,    63,    63,    68,   275,    68,    68,    68,    67,
     661    68,   270,    34,    35,    36,    37,    65,    58,    59,    60,
     662   290,    68,   292,    64,    65,   169,   170,   171,   172,    67,
     663    68,    58,    73,    74,    58,   173,   174,   175,   316,    68,
     664    69,    58,   320,   326,   314,   158,   159,   317,    68,    84,
     665   328,    64,   322,    62,    62,    33,    58,    69,    64,    58,
     666   330,    24,    69,   341,    65,   343,   344,   345,    84,    23,
    667667   348,     9,    63,   351,   352,     1,    63,     3,     4,     5,
    668      6,     7,    84,    69,    63,     0,    12,    65,     0,    15,
    669    225,    17,    18,   176,    20,   221,    42,    43,     8,     8,
     668     6,     7,    63,    69,    84,    65,    12,     0,     0,    15,
     669   225,    17,    18,     8,    20,   221,    42,    43,     8,   176,
    670670    26,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    671     56,    57,   345,   286,   177,   185,    42,    43,   197,   262,
    672    337,   324,   216,   201,    50,    -1,    -1,    -1,    -1,    -1,
     671    56,    57,   177,   345,   197,   185,    42,    43,   324,   262,
     672   337,   216,   201,    -1,    50,    -1,    -1,    -1,    -1,    -1,
    673673    -1,    -1,    58,    59,    60,    61,    62,    83,    64,    -1,
    674674    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
     
    14431443    break;}
    14441444case 43:
    1445 #line 249 "grammar.y"
    1446 { yyval.alist = new ArgumentListNode(yyvsp[0].alist, yyvsp[-2].node); ;
     1445#line 248 "grammar.y"
     1446{ yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ;
    14471447    break;}
    14481448case 47:
    1449 #line 262 "grammar.y"
     1449#line 258 "grammar.y"
    14501450{ yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ;
    14511451    break;}
    14521452case 48:
    1453 #line 263 "grammar.y"
     1453#line 259 "grammar.y"
    14541454{ yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ;
    14551455    break;}
    14561456case 50:
     1457#line 264 "grammar.y"
     1458{ yyval.node = new DeleteNode(yyvsp[0].node); ;
     1459    break;}
     1460case 51:
     1461#line 265 "grammar.y"
     1462{ yyval.node = new VoidNode(yyvsp[0].node); ;
     1463    break;}
     1464case 52:
     1465#line 266 "grammar.y"
     1466{ yyval.node = new TypeOfNode(yyvsp[0].node); ;
     1467    break;}
     1468case 53:
     1469#line 267 "grammar.y"
     1470{ yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
     1471    break;}
     1472case 54:
    14571473#line 268 "grammar.y"
    1458 { yyval.node = new DeleteNode(yyvsp[0].node); ;
    1459     break;}
    1460 case 51:
     1474{ yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
     1475    break;}
     1476case 55:
    14611477#line 269 "grammar.y"
    1462 { yyval.node = new VoidNode(yyvsp[0].node); ;
    1463     break;}
    1464 case 52:
     1478{ yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
     1479    break;}
     1480case 56:
    14651481#line 270 "grammar.y"
    1466 { yyval.node = new TypeOfNode(yyvsp[0].node); ;
    1467     break;}
    1468 case 53:
     1482{ yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
     1483    break;}
     1484case 57:
    14691485#line 271 "grammar.y"
    1470 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
    1471     break;}
    1472 case 54:
     1486{ yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
     1487    break;}
     1488case 58:
    14731489#line 272 "grammar.y"
    1474 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
    1475     break;}
    1476 case 55:
     1490{ yyval.node = new NegateNode(yyvsp[0].node); ;
     1491    break;}
     1492case 59:
    14771493#line 273 "grammar.y"
    1478 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
    1479     break;}
    1480 case 56:
     1494{ yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
     1495    break;}
     1496case 60:
    14811497#line 274 "grammar.y"
    1482 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
    1483     break;}
    1484 case 57:
    1485 #line 275 "grammar.y"
    1486 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
    1487     break;}
    1488 case 58:
    1489 #line 276 "grammar.y"
    1490 { yyval.node = new NegateNode(yyvsp[0].node); ;
    1491     break;}
    1492 case 59:
    1493 #line 277 "grammar.y"
    1494 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
    1495     break;}
    1496 case 60:
    1497 #line 278 "grammar.y"
    14981498{ yyval.node = new LogicalNotNode(yyvsp[0].node); ;
    14991499    break;}
    15001500case 62:
    1501 #line 283 "grammar.y"
     1501#line 279 "grammar.y"
    15021502{ yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;
    15031503    break;}
    15041504case 63:
    1505 #line 284 "grammar.y"
     1505#line 280 "grammar.y"
    15061506{ yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;
    15071507    break;}
    15081508case 64:
    1509 #line 285 "grammar.y"
     1509#line 281 "grammar.y"
    15101510{ yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ;
    15111511    break;}
    15121512case 66:
    1513 #line 290 "grammar.y"
     1513#line 286 "grammar.y"
    15141514{ yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '+'); ;
    15151515    break;}
    15161516case 67:
    1517 #line 291 "grammar.y"
     1517#line 287 "grammar.y"
    15181518{ yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '-'); ;
    15191519    break;}
    15201520case 69:
    1521 #line 296 "grammar.y"
     1521#line 292 "grammar.y"
    15221522{ yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;
    15231523    break;}
    15241524case 70:
    1525 #line 297 "grammar.y"
     1525#line 293 "grammar.y"
    15261526{ yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;
    15271527    break;}
    15281528case 71:
    1529 #line 298 "grammar.y"
     1529#line 294 "grammar.y"
    15301530{ yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ;
    15311531    break;}
    15321532case 73:
     1533#line 300 "grammar.y"
     1534{ yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
     1535    break;}
     1536case 74:
     1537#line 302 "grammar.y"
     1538{ yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
     1539    break;}
     1540case 75:
    15331541#line 304 "grammar.y"
    1534 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
    1535     break;}
    1536 case 74:
     1542{ yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
     1543    break;}
     1544case 76:
    15371545#line 306 "grammar.y"
    1538 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
    1539     break;}
    1540 case 75:
     1546{ yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
     1547    break;}
     1548case 77:
    15411549#line 308 "grammar.y"
    1542 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
    1543     break;}
    1544 case 76:
     1550{ yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
     1551    break;}
     1552case 78:
    15451553#line 310 "grammar.y"
    1546 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
    1547     break;}
    1548 case 77:
    1549 #line 312 "grammar.y"
    1550 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
    1551     break;}
    1552 case 78:
    1553 #line 314 "grammar.y"
    15541554{ yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ;
    15551555    break;}
    15561556case 80:
    1557 #line 319 "grammar.y"
     1557#line 315 "grammar.y"
    15581558{ yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ;
    15591559    break;}
    15601560case 81:
    1561 #line 320 "grammar.y"
     1561#line 316 "grammar.y"
    15621562{ yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;
    15631563    break;}
    15641564case 82:
    1565 #line 321 "grammar.y"
     1565#line 317 "grammar.y"
    15661566{ yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;
    15671567    break;}
    15681568case 83:
    1569 #line 322 "grammar.y"
     1569#line 318 "grammar.y"
    15701570{ yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);;
    15711571    break;}
    15721572case 85:
    1573 #line 327 "grammar.y"
     1573#line 323 "grammar.y"
    15741574{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ;
    15751575    break;}
    15761576case 87:
    1577 #line 332 "grammar.y"
     1577#line 328 "grammar.y"
    15781578{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ;
    15791579    break;}
    15801580case 89:
    1581 #line 337 "grammar.y"
     1581#line 333 "grammar.y"
    15821582{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ;
    15831583    break;}
    15841584case 91:
    1585 #line 343 "grammar.y"
     1585#line 339 "grammar.y"
    15861586{ yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ;
    15871587    break;}
    15881588case 93:
    1589 #line 349 "grammar.y"
     1589#line 345 "grammar.y"
    15901590{ yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ;
    15911591    break;}
    15921592case 95:
    1593 #line 355 "grammar.y"
     1593#line 351 "grammar.y"
    15941594{ yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
    15951595    break;}
    15961596case 97:
     1597#line 357 "grammar.y"
     1598{ yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
     1599    break;}
     1600case 98:
    15971601#line 361 "grammar.y"
    1598 { yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
    1599     break;}
    1600 case 98:
     1602{ yyval.op = OpEqual; ;
     1603    break;}
     1604case 99:
     1605#line 362 "grammar.y"
     1606{ yyval.op = OpPlusEq; ;
     1607    break;}
     1608case 100:
     1609#line 363 "grammar.y"
     1610{ yyval.op = OpMinusEq; ;
     1611    break;}
     1612case 101:
     1613#line 364 "grammar.y"
     1614{ yyval.op = OpMultEq; ;
     1615    break;}
     1616case 102:
    16011617#line 365 "grammar.y"
    1602 { yyval.op = OpEqual; ;
    1603     break;}
    1604 case 99:
     1618{ yyval.op = OpDivEq; ;
     1619    break;}
     1620case 103:
    16051621#line 366 "grammar.y"
    1606 { yyval.op = OpPlusEq; ;
    1607     break;}
    1608 case 100:
     1622{ yyval.op = OpLShift; ;
     1623    break;}
     1624case 104:
    16091625#line 367 "grammar.y"
    1610 { yyval.op = OpMinusEq; ;
    1611     break;}
    1612 case 101:
     1626{ yyval.op = OpRShift; ;
     1627    break;}
     1628case 105:
    16131629#line 368 "grammar.y"
    1614 { yyval.op = OpMultEq; ;
    1615     break;}
    1616 case 102:
     1630{ yyval.op = OpURShift; ;
     1631    break;}
     1632case 106:
    16171633#line 369 "grammar.y"
    1618 { yyval.op = OpDivEq; ;
    1619     break;}
    1620 case 103:
     1634{ yyval.op = OpAndEq; ;
     1635    break;}
     1636case 107:
    16211637#line 370 "grammar.y"
    1622 { yyval.op = OpLShift; ;
    1623     break;}
    1624 case 104:
     1638{ yyval.op = OpXOrEq; ;
     1639    break;}
     1640case 108:
    16251641#line 371 "grammar.y"
    1626 { yyval.op = OpRShift; ;
    1627     break;}
    1628 case 105:
     1642{ yyval.op = OpOrEq; ;
     1643    break;}
     1644case 109:
    16291645#line 372 "grammar.y"
    1630 { yyval.op = OpURShift; ;
    1631     break;}
    1632 case 106:
    1633 #line 373 "grammar.y"
    1634 { yyval.op = OpAndEq; ;
    1635     break;}
    1636 case 107:
    1637 #line 374 "grammar.y"
    1638 { yyval.op = OpXOrEq; ;
    1639     break;}
    1640 case 108:
    1641 #line 375 "grammar.y"
    1642 { yyval.op = OpOrEq; ;
    1643     break;}
    1644 case 109:
    1645 #line 376 "grammar.y"
    16461646{ yyval.op = OpModEq; ;
    16471647    break;}
    16481648case 111:
    1649 #line 381 "grammar.y"
     1649#line 377 "grammar.y"
    16501650{ yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ;
    16511651    break;}
    16521652case 126:
    1653 #line 402 "grammar.y"
     1653#line 398 "grammar.y"
    16541654{ yyval.stat = new BlockNode(0L); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
    16551655    break;}
    16561656case 127:
     1657#line 399 "grammar.y"
     1658{ yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
     1659    break;}
     1660case 128:
    16571661#line 403 "grammar.y"
    1658 { yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
    1659     break;}
    1660 case 128:
    1661 #line 407 "grammar.y"
    16621662{ yyval.slist = new StatListNode(yyvsp[0].stat); ;
    16631663    break;}
    16641664case 129:
     1665#line 404 "grammar.y"
     1666{ yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
     1667    break;}
     1668case 130:
    16651669#line 408 "grammar.y"
    1666 { yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
    1667     break;}
    1668 case 130:
    1669 #line 412 "grammar.y"
    16701670{ yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
    16711671                                      DBG(yyval.stat, yylsp[-2], yylsp[0]); ;
    16721672    break;}
    16731673case 131:
    1674 #line 414 "grammar.y"
     1674#line 410 "grammar.y"
    16751675{ if (automatic()) {
    16761676                                          yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
     
    16821682    break;}
    16831683case 132:
    1684 #line 424 "grammar.y"
     1684#line 420 "grammar.y"
    16851685{ yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;
    16861686    break;}
    16871687case 133:
     1688#line 422 "grammar.y"
     1689{ yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
     1690    break;}
     1691case 134:
    16881692#line 426 "grammar.y"
    1689 { yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
    1690     break;}
    1691 case 134:
    1692 #line 430 "grammar.y"
    16931693{ yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); delete yyvsp[0].ident; ;
    16941694    break;}
    16951695case 135:
     1696#line 427 "grammar.y"
     1697{ yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); delete yyvsp[-1].ident; ;
     1698    break;}
     1699case 136:
    16961700#line 431 "grammar.y"
    1697 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); delete yyvsp[-1].ident; ;
    1698     break;}
    1699 case 136:
     1701{ yyval.init = new AssignExprNode(yyvsp[0].node); ;
     1702    break;}
     1703case 137:
    17001704#line 435 "grammar.y"
    1701 { yyval.init = new AssignExprNode(yyvsp[0].node); ;
    1702     break;}
    1703 case 137:
     1705{ yyval.stat = new EmptyStatementNode(); ;
     1706    break;}
     1707case 138:
    17041708#line 439 "grammar.y"
    1705 { yyval.stat = new EmptyStatementNode(); ;
    1706     break;}
    1707 case 138:
    1708 #line 443 "grammar.y"
    17091709{ yyval.stat = new ExprStatementNode(yyvsp[-1].node);
    17101710                                     DBG(yyval.stat, yylsp[-1], yylsp[0]); ;
    17111711    break;}
    17121712case 139:
    1713 #line 445 "grammar.y"
     1713#line 441 "grammar.y"
    17141714{ if (automatic()) {
    17151715                                       yyval.stat = new ExprStatementNode(yyvsp[-1].node);
     
    17191719    break;}
    17201720case 140:
    1721 #line 453 "grammar.y"
     1721#line 449 "grammar.y"
    17221722{ yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
    17231723    break;}
    17241724case 141:
     1725#line 451 "grammar.y"
     1726{ yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
     1727    break;}
     1728case 142:
    17251729#line 455 "grammar.y"
    1726 { yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
    1727     break;}
    1728 case 142:
    1729 #line 459 "grammar.y"
    17301730{ yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);;
    17311731    break;}
    17321732case 143:
    1733 #line 460 "grammar.y"
     1733#line 456 "grammar.y"
    17341734{ yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
    17351735    break;}
    17361736case 144:
    1737 #line 462 "grammar.y"
     1737#line 458 "grammar.y"
    17381738{ yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
    17391739                                     DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
    17401740    break;}
    17411741case 145:
    1742 #line 465 "grammar.y"
     1742#line 461 "grammar.y"
    17431743{ yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
    17441744                                     DBG(yyval.stat,yylsp[-9],yylsp[-1]); ;
    17451745    break;}
    17461746case 146:
    1747 #line 468 "grammar.y"
     1747#line 464 "grammar.y"
    17481748{ yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat);
    17491749                                     DBG(yyval.stat,yylsp[-6],yylsp[-1]); ;
    17501750    break;}
    17511751case 147:
    1752 #line 471 "grammar.y"
     1752#line 467 "grammar.y"
    17531753{ yyval.stat = new ForInNode(*yyvsp[-4].ident,0L,yyvsp[-2].node,yyvsp[0].stat);
    17541754                                     DBG(yyval.stat,yylsp[-7],yylsp[-1]);
     
    17561756    break;}
    17571757case 148:
    1758 #line 475 "grammar.y"
     1758#line 471 "grammar.y"
    17591759{ yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat);
    17601760                                     DBG(yyval.stat,yylsp[-8],yylsp[-1]);
     
    17621762    break;}
    17631763case 149:
    1764 #line 481 "grammar.y"
     1764#line 477 "grammar.y"
    17651765{ yyval.node = 0L; ;
    17661766    break;}
    17671767case 151:
    1768 #line 486 "grammar.y"
     1768#line 482 "grammar.y"
    17691769{ yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
    17701770    break;}
    17711771case 152:
    1772 #line 487 "grammar.y"
     1772#line 483 "grammar.y"
    17731773{ if (automatic()) {
    17741774                                       yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
     
    17771777    break;}
    17781778case 153:
    1779 #line 491 "grammar.y"
     1779#line 487 "grammar.y"
    17801780{ yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]);
    17811781                                     delete yyvsp[-1].ident; ;
    17821782    break;}
    17831783case 154:
    1784 #line 493 "grammar.y"
     1784#line 489 "grammar.y"
    17851785{ if (automatic()) {
    17861786                                       yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]);
     
    17901790    break;}
    17911791case 155:
    1792 #line 501 "grammar.y"
     1792#line 497 "grammar.y"
    17931793{ yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
    17941794    break;}
    17951795case 156:
    1796 #line 502 "grammar.y"
     1796#line 498 "grammar.y"
    17971797{ if (automatic()) {
    17981798                                       yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
     
    18011801    break;}
    18021802case 157:
    1803 #line 506 "grammar.y"
     1803#line 502 "grammar.y"
    18041804{ yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]);
    18051805                                     delete yyvsp[-1].ident; ;
    18061806    break;}
    18071807case 158:
    1808 #line 508 "grammar.y"
     1808#line 504 "grammar.y"
    18091809{ if (automatic()) {
    18101810                                       yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
     
    18151815    break;}
    18161816case 159:
    1817 #line 517 "grammar.y"
     1817#line 513 "grammar.y"
    18181818{ yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
    18191819    break;}
    18201820case 160:
    1821 #line 518 "grammar.y"
     1821#line 514 "grammar.y"
    18221822{ if (automatic()) {
    18231823                                       yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
     
    18261826    break;}
    18271827case 161:
    1828 #line 522 "grammar.y"
     1828#line 518 "grammar.y"
    18291829{ yyval.stat = new ReturnNode(yyvsp[-1].node); ;
    18301830    break;}
    18311831case 162:
    1832 #line 523 "grammar.y"
     1832#line 519 "grammar.y"
    18331833{ if (automatic())
    18341834                                       yyval.stat = new ReturnNode(yyvsp[-1].node);
     
    18371837    break;}
    18381838case 163:
    1839 #line 530 "grammar.y"
     1839#line 526 "grammar.y"
    18401840{ yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat);
    18411841                                     DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
    18421842    break;}
    18431843case 164:
    1844 #line 535 "grammar.y"
     1844#line 531 "grammar.y"
    18451845{ yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk);
    18461846                                     DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
    18471847    break;}
    18481848case 165:
    1849 #line 540 "grammar.y"
     1849#line 536 "grammar.y"
    18501850{ yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0L, 0L); ;
    18511851    break;}
    18521852case 166:
     1853#line 538 "grammar.y"
     1854{ yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
     1855    break;}
     1856case 167:
    18531857#line 542 "grammar.y"
    1854 { yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
    1855     break;}
    1856 case 167:
    1857 #line 546 "grammar.y"
    18581858{ yyval.clist = 0L; ;
    18591859    break;}
    18601860case 169:
    1861 #line 551 "grammar.y"
     1861#line 547 "grammar.y"
    18621862{ yyval.clist = new ClauseListNode(yyvsp[0].ccl); ;
    18631863    break;}
    18641864case 170:
     1865#line 548 "grammar.y"
     1866{ yyval.clist = yyvsp[-1].clist->append(yyvsp[0].ccl); ;
     1867    break;}
     1868case 171:
    18651869#line 552 "grammar.y"
    1866 { yyval.clist = yyvsp[-1].clist->append(yyvsp[0].ccl); ;
    1867     break;}
    1868 case 171:
    1869 #line 556 "grammar.y"
    18701870{ yyval.ccl = new CaseClauseNode(yyvsp[-1].node, 0L); ;
    18711871    break;}
    18721872case 172:
     1873#line 553 "grammar.y"
     1874{ yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
     1875    break;}
     1876case 173:
    18731877#line 557 "grammar.y"
    1874 { yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
    1875     break;}
    1876 case 173:
    1877 #line 561 "grammar.y"
    18781878{ yyval.ccl = new CaseClauseNode(0L, 0L);; ;
    18791879    break;}
    18801880case 174:
     1881#line 558 "grammar.y"
     1882{ yyval.ccl = new CaseClauseNode(0L, yyvsp[0].slist); ;
     1883    break;}
     1884case 175:
    18811885#line 562 "grammar.y"
    1882 { yyval.ccl = new CaseClauseNode(0L, yyvsp[0].slist); ;
    1883     break;}
    1884 case 175:
    1885 #line 566 "grammar.y"
    18861886{ yyvsp[0].stat->pushLabel(*yyvsp[-2].ident);
    18871887                                     yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat);
     
    18891889    break;}
    18901890case 176:
     1891#line 568 "grammar.y"
     1892{ yyval.stat = new ThrowNode(yyvsp[-1].node); ;
     1893    break;}
     1894case 177:
    18911895#line 572 "grammar.y"
    1892 { yyval.stat = new ThrowNode(yyvsp[-1].node); ;
    1893     break;}
    1894 case 177:
    1895 #line 576 "grammar.y"
    18961896{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].node); ;
    18971897    break;}
    18981898case 178:
    1899 #line 577 "grammar.y"
     1899#line 573 "grammar.y"
    19001900{ yyval.stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ;
    19011901    break;}
    19021902case 179:
     1903#line 574 "grammar.y"
     1904{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ;
     1905    break;}
     1906case 180:
    19031907#line 578 "grammar.y"
    1904 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ;
    1905     break;}
    1906 case 180:
     1908{ yyval.node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); delete yyvsp[-2].ident; ;
     1909    break;}
     1910case 181:
    19071911#line 582 "grammar.y"
    1908 { yyval.node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); delete yyvsp[-2].ident; ;
    1909     break;}
    1910 case 181:
     1912{ yyval.node = new FinallyNode(yyvsp[0].stat); ;
     1913    break;}
     1914case 182:
    19111915#line 586 "grammar.y"
    1912 { yyval.node = new FinallyNode(yyvsp[0].stat); ;
    1913     break;}
    1914 case 182:
    1915 #line 590 "grammar.y"
    19161916{ yyval.func = new FuncDeclNode(*yyvsp[-3].ident, 0L, yyvsp[0].body);
    19171917                                             delete yyvsp[-3].ident; ;
    19181918    break;}
    19191919case 183:
    1920 #line 593 "grammar.y"
     1920#line 589 "grammar.y"
    19211921{ yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body);
    19221922                                     delete yyvsp[-4].ident; ;
    19231923    break;}
    19241924case 184:
    1925 #line 597 "grammar.y"
     1925#line 593 "grammar.y"
    19261926{ yyval.node = new FuncExprNode(0L, yyvsp[0].body); ;
    19271927    break;}
    19281928case 185:
    1929 #line 599 "grammar.y"
     1929#line 595 "grammar.y"
    19301930{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
    19311931    break;}
    19321932case 186:
    1933 #line 604 "grammar.y"
     1933#line 600 "grammar.y"
    19341934{ yyval.param = new ParameterNode(*yyvsp[0].ident); delete yyvsp[0].ident; ;
    19351935    break;}
    19361936case 187:
    1937 #line 605 "grammar.y"
     1937#line 601 "grammar.y"
    19381938{ yyval.param = yyvsp[-2].param->append(*yyvsp[0].ident);
    19391939                                     delete yyvsp[0].ident; ;
    19401940    break;}
    19411941case 188:
    1942 #line 610 "grammar.y"
     1942#line 606 "grammar.y"
    19431943{ yyval.body = new FunctionBodyNode(0L);
    19441944                                     DBG(yyval.body, yylsp[-1], yylsp[0]);;
    19451945    break;}
    19461946case 189:
    1947 #line 612 "grammar.y"
     1947#line 608 "grammar.y"
    19481948{ yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
    19491949                                     DBG(yyval.body, yylsp[-2], yylsp[0]);;
    19501950    break;}
    19511951case 190:
    1952 #line 617 "grammar.y"
     1952#line 613 "grammar.y"
    19531953{ yyval.prog = new ProgramNode(0L);
    19541954                                     Parser::progNode = yyval.prog; ;
    19551955    break;}
    19561956case 191:
    1957 #line 619 "grammar.y"
     1957#line 615 "grammar.y"
    19581958{ yyval.prog = new ProgramNode(yyvsp[0].srcs);
    19591959                                     Parser::progNode = yyval.prog; ;
    19601960    break;}
    19611961case 192:
    1962 #line 624 "grammar.y"
     1962#line 620 "grammar.y"
    19631963{ yyval.srcs = new SourceElementsNode(yyvsp[0].src); ;
    19641964    break;}
    19651965case 193:
    1966 #line 626 "grammar.y"
     1966#line 622 "grammar.y"
    19671967{ yyval.srcs = new SourceElementsNode(yyvsp[0].srcs, yyvsp[-1].src); ;
    19681968    break;}
    19691969case 194:
    1970 #line 633 "grammar.y"
     1970#line 629 "grammar.y"
    19711971{ yyval.src = new SourceElementNode(yyvsp[0].stat); ;
    19721972    break;}
    19731973case 195:
    1974 #line 634 "grammar.y"
     1974#line 630 "grammar.y"
    19751975{ yyval.src = new SourceElementNode(yyvsp[0].func); ;
    19761976    break;}
     
    21982198  return 1;
    21992199}
    2200 #line 637 "grammar.y"
     2200#line 633 "grammar.y"
    22012201
    22022202
  • trunk/JavaScriptCore/kjs/grammar.y

    r2760 r2847  
    246246ArgumentList:
    247247    AssignmentExpr                  { $$ = new ArgumentListNode($1); }
    248 /* #ifdef APPLE_CHANGES (not using an actual ifdef because this is yacc) */
    249    | AssignmentExpr ',' ArgumentList { $$ = new ArgumentListNode($3, $1); }
    250 /* #else */
    251 /* | ArgumentList ',' AssignmentExpr { $$ = new ArgumentListNode($1, $3); } */
    252 /* #endif */
     248  | ArgumentList ',' AssignmentExpr { $$ = new ArgumentListNode($1, $3); }
    253249;
    254250
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r2824 r2847  
    616616ArgumentsNode::ArgumentsNode(ArgumentListNode *l) : list(l)
    617617{
     618  if (list == NULL) {
     619    return;
     620  }
     621
     622  ArgumentListNode *prev = list;
     623  ArgumentListNode *cur = prev->list;
     624 
     625  while (cur != NULL) {
     626    prev->list = cur->list;
     627    cur->list = list;
     628    list = cur;
     629    cur = prev->list;
     630  }
    618631}
    619632
  • trunk/JavaScriptCore/kjs/nodes.h

    r2760 r2847  
    315315    virtual void streamTo(SourceStream &s) const;
    316316  private:
     317    friend class ArgumentsNode;
    317318    ArgumentListNode *list;
    318319    Node *expr;
Note: See TracChangeset for help on using the changeset viewer.