Changeset 2735 in webkit for trunk/JavaScriptCore/kjs/grammar.cpp


Ignore:
Timestamp:
Nov 18, 2002, 1:45:10 PM (23 years ago)
Author:
mjs
Message:

Change ArgumentListNode operations to be iterative instead of
recursive. This probably fixes 3095446 (Crash in
KJS::ArgumentListNode::ref()) but I can't reproduce it myself so
I'm not 100% sure. I think the original bug was a stack overflow
and this change would remove that possibility.

  • kjs/nodes.cpp: (ArgumentListNode::ref): Make iterative. (ArgumentListNode::deref): Make iterative. (ArgumentListNode::evaluateList): Make iterative.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/grammar.cpp

    r2522 r2735  
    255255    93,    96,     0,    95,    96,     0,    95,    66,   114,    67,
    256256     0,    95,    70,    58,     0,    62,    63,     0,    62,    97,
    257     63,     0,   112,     0,    97,    68,   112,     0,    94,     0,
     257    63,     0,   112,     0,   112,    68,    97,     0,    94,     0,
    258258    95,     0,    98,     0,    98,    42,     0,    98,    43,     0,
    259259    99,     0,    18,   100,     0,    17,   100,     0,    26,   100,
     
    318318   199,   202,   204,   207,   209,   213,   216,   217,   220,   222,
    319319   223,   224,   226,   229,   231,   234,   236,   237,   238,   242,
    320    244,   247,   249,   252,   254,   257,   259,   260,   263,   265,
    321    266,   267,   268,   269,   270,   271,   272,   273,   274,   275,
    322    278,   280,   281,   282,   285,   287,   288,   291,   293,   294,
    323    295,   298,   300,   302,   304,   306,   308,   310,   314,   316,
    324    317,   318,   319,   322,   324,   327,   329,   332,   334,   337,
    325    339,   343,   345,   349,   351,   355,   357,   361,   363,   364,
    326    365,   366,   367,   368,   369,   370,   371,   372,   373,   376,
    327    378,   381,   383,   384,   385,   386,   387,   388,   389,   390,
    328    391,   392,   393,   394,   395,   398,   400,   403,   405,   408,
    329    411,   420,   422,   426,   428,   431,   435,   439,   442,   449,
    330    451,   455,   457,   458,   461,   464,   467,   471,   477,   479,
    331    482,   484,   488,   490,   497,   499,   503,   505,   513,   515,
    332    519,   520,   526,   531,   536,   538,   542,   544,   547,   549,
    333    552,   554,   557,   559,   562,   568,   572,   574,   575,   578,
    334    582,   586,   589,   593,   595,   600,   602,   606,   609,   613,
    335    616,   620,   623,   629,   631
     320   244,   247,   250,   256,   258,   261,   263,   264,   267,   269,
     321   270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
     322   282,   284,   285,   286,   289,   291,   292,   295,   297,   298,
     323   299,   302,   304,   306,   308,   310,   312,   314,   318,   320,
     324   321,   322,   323,   326,   328,   331,   333,   336,   338,   341,
     325   343,   347,   349,   353,   355,   359,   361,   365,   367,   368,
     326   369,   370,   371,   372,   373,   374,   375,   376,   377,   380,
     327   382,   385,   387,   388,   389,   390,   391,   392,   393,   394,
     328   395,   396,   397,   398,   399,   402,   404,   407,   409,   412,
     329   415,   424,   426,   430,   432,   435,   439,   443,   446,   453,
     330   455,   459,   461,   462,   465,   468,   471,   475,   481,   483,
     331   486,   488,   492,   494,   501,   503,   507,   509,   517,   519,
     332   523,   524,   530,   535,   540,   542,   546,   548,   551,   553,
     333   556,   558,   561,   563,   566,   572,   576,   578,   579,   582,
     334   586,   590,   593,   597,   599,   604,   606,   610,   613,   617,
     335   620,   624,   627,   633,   635
    336336};
    337337#endif
     
    473473-32768,-32768,  1066,   230,  1066,-32768,  1066,  1066,   -45,   483,
    474474   162,-32768,-32768,   705,-32768,-32768,    -6,   150,   176,    50,
    475    220,   -37,   185,   212,-32768,   154,   850,   214,-32768,-32768,
    476 -32768,-32768,   922,  1066,   234,-32768,  1066,   237,-32768,-32768,
     475   220,   -37,   185,   212,-32768,   154,   850,   196,-32768,-32768,
     476-32768,-32768,   922,  1066,   224,-32768,  1066,   234,-32768,-32768,
    477477-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
    478478-32768,-32768,-32768,  1066,  1066,  1066,  1066,  1066,  1066,  1066,
    479479  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,
    480480  1066,  1066,  1066,  1066,  1066,  1066,  1066,  1066,-32768,  1066,
    481 -32768,-32768,-32768,-32768,   244,    87,   241,   226,-32768,-32768,
     481-32768,-32768,-32768,-32768,   244,    87,   238,   225,-32768,-32768,
    482482-32768,-32768,-32768,  1066,-32768,-32768,   -24,-32768,-32768,-32768,
    483     64,-32768,   248,   100,-32768,-32768,   103,   252,   121,   122,
    484    124,-32768,-32768,   253,     0,   283,-32768,-32768,-32768,-32768,
    485     35,  1066,-32768,-32768,    12,-32768,-32768,-32768,-32768,   181,
    486 -32768,   203,-32768,   223,-32768,-32768,-32768,-32768,-32768,    71,
     483    64,-32768,   243,   100,-32768,-32768,   103,   248,   121,   122,
     484   124,-32768,-32768,   250,     0,   281,-32768,-32768,-32768,-32768,
     485    35,  1066,-32768,-32768,    12,-32768,-32768,-32768,-32768,   252,
     486   249,   223,-32768,   228,-32768,-32768,-32768,-32768,-32768,    71,
    487487    71,   -25,   -25,   -25,    38,    38,    38,    38,    38,    38,
    488     82,    82,    82,    82,   239,   239,   239,    84,   133,   249,
    489 -32768,   -15,   -41,  1066,  1066,-32768,-32768,   248,   190,   557,
    490 -32768,   248,   259,   705,  1066,   705,   255,   705,   262,-32768,
    491 -32768,   254,-32768,   994,-32768,  1066,-32768,-32768,  1066,  1066,
    492    298,  1066,   197,   245,-32768,   248,-32768,   260,-32768,-32768,
    493    307,   199,-32768,   323,-32768,-32768,   270,  1066,-32768,-32768,
    494 -32768,-32768,   200,  1066,   261,   705,  1066,-32768,-32768,   705,
    495 -32768,  1066,    23,   323,-32768,     0,-32768,   705,   201,  1066,
    496 -32768,   274,-32768,   232,   275,-32768,   323,-32768,-32768,-32768,
    497    705,   280,   705,   705,   705,   281,-32768,   705,-32768,-32768,
    498    705,   705,-32768,-32768,-32768,   348,   349,-32768
     488    82,    82,    82,    82,   239,   239,   239,    84,   133,   247,
     489-32768,   -15,   -41,  1066,  1066,-32768,-32768,   243,   181,   557,
     490-32768,   243,   260,   705,  1066,   705,   255,   705,   262,-32768,
     491-32768,   253,-32768,   994,-32768,  1066,-32768,-32768,  1066,  1066,
     492   299,  1066,   190,   241,-32768,   243,-32768,   264,-32768,-32768,
     493   307,   197,-32768,   323,-32768,-32768,   270,  1066,-32768,-32768,
     494-32768,-32768,   199,  1066,   259,   705,  1066,-32768,-32768,   705,
     495-32768,  1066,    23,   323,-32768,     0,-32768,   705,   200,  1066,
     496-32768,   274,-32768,   229,   275,-32768,   323,-32768,-32768,-32768,
     497   705,   282,   705,   705,   705,   283,-32768,   705,-32768,-32768,
     498   705,   705,-32768,-32768,-32768,   346,   349,-32768
    499499};
    500500
    501501static const short yypgoto[] = {-32768,
    502 -32768,-32768,-32768,   126,-32768,-32768,   135,   346,   351,-32768,
    503    -34,-32768,    41,-32768,     1,   148,   -10,    15,   117,   123,
    504 -32768,-32768,   184,   196,-32768,-32768,  -122,-32768,    -9,   -17,
    505    -22,    29,-32768,   191,   178,   118,-32768,-32768,-32768,-32768,
    506   -225,-32768,-32768,-32768,-32768,-32768,-32768,    44,-32768,    55,
    507 -32768,-32768,-32768,-32768,-32768,   166,-32768,-32768,   182,  -223,
     502-32768,-32768,-32768,   126,-32768,-32768,   135,   351,   352,-32768,
     503   -34,    88,    41,-32768,     1,   142,   -10,    15,   117,    96,
     504-32768,-32768,   178,   198,-32768,-32768,  -122,-32768,    -9,   -17,
     505   -22,    28,-32768,   191,   182,   118,-32768,-32768,-32768,-32768,
     506  -225,-32768,-32768,-32768,-32768,-32768,-32768,    44,-32768,    58,
     507-32768,-32768,-32768,-32768,-32768,   167,-32768,-32768,   183,  -223,
    508508-32768,     2,-32768
    509509};
     
    530530   149,   150,   151,   152,   133,   156,   157,   174,   137,   242,
    531531   243,   244,   138,   140,   141,   237,   238,   239,   167,   168,
    532     26,   310,   272,   311,   175,   274,   312,   273,    85,   153,
     532    26,   310,   272,   231,   175,   274,   312,   273,    85,   153,
    533533   180,    30,    31,   176,    86,    96,    33,   245,   246,   247,
    534534   248,   249,   250,   276,   277,   327,   278,   194,   180,   180,
     
    538538   224,   225,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
    539539  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
    540   -126,  -126,  -126,   285,   -28,  -126,  -126,  -126,   286,  -126,
    541   -126,   208,   296,   222,   293,   187,   301,   273,   303,   316,
    542    306,   321,   328,   341,   180,   302,   180,   180,   180,   287,
    543    180,   298,   169,   170,   171,   172,   223,  -126,  -126,  -126,
    544    313,   228,   187,  -126,  -126,   251,   252,   253,   254,   288,
    545    180,   233,  -126,  -126,   235,   255,   256,   257,   331,   180,
    546    344,   262,   333,   339,   329,   240,   241,   187,   180,   265,
    547    340,   270,   334,   275,   279,   215,   300,   289,   304,   307,
    548    187,   314,   308,   347,   319,   349,   350,   350,   317,   320,
     540  -126,  -126,  -126,   296,   -28,  -126,  -126,  -126,   273,  -126,
     541  -126,   208,   316,   222,   293,   187,   301,   180,   303,   321,
     542   306,   328,   341,   228,   180,   302,   180,   180,   255,   256,
     543   257,   298,   169,   170,   171,   172,   223,  -126,  -126,  -126,
     544   313,   233,   187,  -126,  -126,   251,   252,   253,   254,   287,
     545   180,   235,  -126,  -126,   288,   180,   180,   344,   331,   240,
     546   241,   262,   333,   339,   329,   180,   270,   187,   265,   275,
     547   340,   279,   334,   215,   285,   289,   286,   300,   304,   307,
     548   187,   308,   314,   347,   317,   349,   350,   350,   319,   320,
    549549   354,   322,   326,   355,   355,    97,   343,     1,     2,     3,
    550      4,     5,   348,   345,   330,   353,     8,   357,   358,    84,
    551    284,    13,    14,    87,    16,   282,   140,   141,    88,   258,
     550     4,     5,   330,   345,   348,   357,     8,   353,   358,    84,
     551   284,    13,    14,   258,    16,   282,   140,   141,    87,    88,
    552552    19,   142,   143,   144,   145,   146,   147,   148,   149,   150,
    553    151,   152,   259,   352,   267,   263,    24,    25,   338,   291,
    554    346,   281,   269,     0,    26,     0,     0,     0,     0,     0,
     553   151,   152,   352,   311,   259,   263,    24,    25,   267,   291,
     554   346,   338,   281,   269,    26,     0,     0,     0,     0,     0,
    555555     0,     0,    85,    28,    29,    30,    31,   153,    86,     0,
    556556    33,     0,     0,     0,     0,    34,    35,    36,    37,     0,
     
    657657    21,    22,    23,    63,    69,    26,    27,    28,    68,    30,
    658658    31,    22,    63,    69,   264,   265,   274,    68,   276,    63,
    659    278,    63,    63,    63,    68,   275,    68,    68,    68,    67,
    660     68,   270,    34,    35,    36,    37,    65,    58,    59,    60,
    661    290,    68,   292,    64,    65,   169,   170,   171,   172,    67,
    662     68,    58,    73,    74,    58,   173,   174,   175,   316,    68,
    663     69,    58,   320,   326,   314,   158,   159,   317,    68,    84,
    664    328,    64,   322,    62,    62,    33,    58,    69,    64,    58,
    665    330,    24,    69,   341,    65,   343,   344,   345,    84,    23,
     659   278,    63,    63,    68,    68,   275,    68,    68,   173,   174,
     660   175,   270,    34,    35,    36,    37,    65,    58,    59,    60,
     661   290,    58,   292,    64,    65,   169,   170,   171,   172,    67,
     662    68,    58,    73,    74,    67,    68,    68,    69,   316,   158,
     663   159,    58,   320,   326,   314,    68,    64,   317,    84,    62,
     664   328,    62,   322,    33,    63,    69,    68,    58,    64,    58,
     665   330,    69,    24,   341,    84,   343,   344,   345,    65,    23,
    666666   348,     9,    63,   351,   352,     1,    63,     3,     4,     5,
    667      6,     7,    63,    69,    84,    65,    12,     0,     0,    15,
    668    225,    17,    18,     8,    20,   221,    42,    43,     8,   176,
     667     6,     7,    84,    69,    63,     0,    12,    65,     0,    15,
     668   225,    17,    18,   176,    20,   221,    42,    43,     8,     8,
    669669    26,    47,    48,    49,    50,    51,    52,    53,    54,    55,
    670     56,    57,   177,   345,   197,   185,    42,    43,   324,   262,
    671    337,   216,   201,    -1,    50,    -1,    -1,    -1,    -1,    -1,
     670    56,    57,   345,   286,   177,   185,    42,    43,   197,   262,
     671   337,   324,   216,   201,    50,    -1,    -1,    -1,    -1,    -1,
    672672    -1,    -1,    58,    59,    60,    61,    62,    83,    64,    -1,
    673673    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,
     
    14441444    break;}
    14451445case 43:
    1446 #line 249 "grammar.y"
    1447 { yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ;
     1446#line 250 "grammar.y"
     1447{ yyval.alist = new ArgumentListNode(yyvsp[0].alist, yyvsp[-2].node); ;
    14481448    break;}
    14491449case 47:
    1450 #line 259 "grammar.y"
     1450#line 263 "grammar.y"
    14511451{ yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ;
    14521452    break;}
    14531453case 48:
    1454 #line 260 "grammar.y"
     1454#line 264 "grammar.y"
    14551455{ yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ;
    14561456    break;}
    14571457case 50:
    1458 #line 265 "grammar.y"
     1458#line 269 "grammar.y"
    14591459{ yyval.node = new DeleteNode(yyvsp[0].node); ;
    14601460    break;}
    14611461case 51:
    1462 #line 266 "grammar.y"
     1462#line 270 "grammar.y"
    14631463{ yyval.node = new VoidNode(yyvsp[0].node); ;
    14641464    break;}
    14651465case 52:
    1466 #line 267 "grammar.y"
     1466#line 271 "grammar.y"
    14671467{ yyval.node = new TypeOfNode(yyvsp[0].node); ;
    14681468    break;}
    14691469case 53:
    1470 #line 268 "grammar.y"
     1470#line 272 "grammar.y"
    14711471{ yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
    14721472    break;}
    14731473case 54:
    1474 #line 269 "grammar.y"
     1474#line 273 "grammar.y"
    14751475{ yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
    14761476    break;}
    14771477case 55:
    1478 #line 270 "grammar.y"
     1478#line 274 "grammar.y"
    14791479{ yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
    14801480    break;}
    14811481case 56:
    1482 #line 271 "grammar.y"
     1482#line 275 "grammar.y"
    14831483{ yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
    14841484    break;}
    14851485case 57:
    1486 #line 272 "grammar.y"
     1486#line 276 "grammar.y"
    14871487{ yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
    14881488    break;}
    14891489case 58:
    1490 #line 273 "grammar.y"
     1490#line 277 "grammar.y"
    14911491{ yyval.node = new NegateNode(yyvsp[0].node); ;
    14921492    break;}
    14931493case 59:
    1494 #line 274 "grammar.y"
     1494#line 278 "grammar.y"
    14951495{ yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
    14961496    break;}
    14971497case 60:
    1498 #line 275 "grammar.y"
     1498#line 279 "grammar.y"
    14991499{ yyval.node = new LogicalNotNode(yyvsp[0].node); ;
    15001500    break;}
    15011501case 62:
    1502 #line 280 "grammar.y"
     1502#line 284 "grammar.y"
    15031503{ yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;
    15041504    break;}
    15051505case 63:
    1506 #line 281 "grammar.y"
     1506#line 285 "grammar.y"
    15071507{ yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;
    15081508    break;}
    15091509case 64:
    1510 #line 282 "grammar.y"
     1510#line 286 "grammar.y"
    15111511{ yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ;
    15121512    break;}
    15131513case 66:
    1514 #line 287 "grammar.y"
     1514#line 291 "grammar.y"
    15151515{ yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '+'); ;
    15161516    break;}
    15171517case 67:
    1518 #line 288 "grammar.y"
     1518#line 292 "grammar.y"
    15191519{ yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '-'); ;
    15201520    break;}
    15211521case 69:
    1522 #line 293 "grammar.y"
     1522#line 297 "grammar.y"
    15231523{ yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;
    15241524    break;}
    15251525case 70:
    1526 #line 294 "grammar.y"
     1526#line 298 "grammar.y"
    15271527{ yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;
    15281528    break;}
    15291529case 71:
    1530 #line 295 "grammar.y"
     1530#line 299 "grammar.y"
    15311531{ yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ;
    15321532    break;}
    15331533case 73:
    1534 #line 301 "grammar.y"
     1534#line 305 "grammar.y"
    15351535{ yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
    15361536    break;}
    15371537case 74:
    1538 #line 303 "grammar.y"
     1538#line 307 "grammar.y"
    15391539{ yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
    15401540    break;}
    15411541case 75:
    1542 #line 305 "grammar.y"
     1542#line 309 "grammar.y"
    15431543{ yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
    15441544    break;}
    15451545case 76:
    1546 #line 307 "grammar.y"
     1546#line 311 "grammar.y"
    15471547{ yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
    15481548    break;}
    15491549case 77:
    1550 #line 309 "grammar.y"
     1550#line 313 "grammar.y"
    15511551{ yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
    15521552    break;}
    15531553case 78:
    1554 #line 311 "grammar.y"
     1554#line 315 "grammar.y"
    15551555{ yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ;
    15561556    break;}
    15571557case 80:
    1558 #line 316 "grammar.y"
     1558#line 320 "grammar.y"
    15591559{ yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ;
    15601560    break;}
    15611561case 81:
    1562 #line 317 "grammar.y"
     1562#line 321 "grammar.y"
    15631563{ yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;
    15641564    break;}
    15651565case 82:
    1566 #line 318 "grammar.y"
     1566#line 322 "grammar.y"
    15671567{ yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;
    15681568    break;}
    15691569case 83:
    1570 #line 319 "grammar.y"
     1570#line 323 "grammar.y"
    15711571{ yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);;
    15721572    break;}
    15731573case 85:
    1574 #line 324 "grammar.y"
     1574#line 328 "grammar.y"
    15751575{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ;
    15761576    break;}
    15771577case 87:
    1578 #line 329 "grammar.y"
     1578#line 333 "grammar.y"
    15791579{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ;
    15801580    break;}
    15811581case 89:
    1582 #line 334 "grammar.y"
     1582#line 338 "grammar.y"
    15831583{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ;
    15841584    break;}
    15851585case 91:
    1586 #line 340 "grammar.y"
     1586#line 344 "grammar.y"
    15871587{ yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ;
    15881588    break;}
    15891589case 93:
    1590 #line 346 "grammar.y"
     1590#line 350 "grammar.y"
    15911591{ yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ;
    15921592    break;}
    15931593case 95:
    1594 #line 352 "grammar.y"
     1594#line 356 "grammar.y"
    15951595{ yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
    15961596    break;}
    15971597case 97:
    1598 #line 358 "grammar.y"
     1598#line 362 "grammar.y"
    15991599{ yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
    16001600    break;}
    16011601case 98:
    1602 #line 362 "grammar.y"
     1602#line 366 "grammar.y"
    16031603{ yyval.op = OpEqual; ;
    16041604    break;}
    16051605case 99:
    1606 #line 363 "grammar.y"
     1606#line 367 "grammar.y"
    16071607{ yyval.op = OpPlusEq; ;
    16081608    break;}
    16091609case 100:
    1610 #line 364 "grammar.y"
     1610#line 368 "grammar.y"
    16111611{ yyval.op = OpMinusEq; ;
    16121612    break;}
    16131613case 101:
    1614 #line 365 "grammar.y"
     1614#line 369 "grammar.y"
    16151615{ yyval.op = OpMultEq; ;
    16161616    break;}
    16171617case 102:
    1618 #line 366 "grammar.y"
     1618#line 370 "grammar.y"
    16191619{ yyval.op = OpDivEq; ;
    16201620    break;}
    16211621case 103:
    1622 #line 367 "grammar.y"
     1622#line 371 "grammar.y"
    16231623{ yyval.op = OpLShift; ;
    16241624    break;}
    16251625case 104:
    1626 #line 368 "grammar.y"
     1626#line 372 "grammar.y"
    16271627{ yyval.op = OpRShift; ;
    16281628    break;}
    16291629case 105:
    1630 #line 369 "grammar.y"
     1630#line 373 "grammar.y"
    16311631{ yyval.op = OpURShift; ;
    16321632    break;}
    16331633case 106:
    1634 #line 370 "grammar.y"
     1634#line 374 "grammar.y"
    16351635{ yyval.op = OpAndEq; ;
    16361636    break;}
    16371637case 107:
    1638 #line 371 "grammar.y"
     1638#line 375 "grammar.y"
    16391639{ yyval.op = OpXOrEq; ;
    16401640    break;}
    16411641case 108:
    1642 #line 372 "grammar.y"
     1642#line 376 "grammar.y"
    16431643{ yyval.op = OpOrEq; ;
    16441644    break;}
    16451645case 109:
    1646 #line 373 "grammar.y"
     1646#line 377 "grammar.y"
    16471647{ yyval.op = OpModEq; ;
    16481648    break;}
    16491649case 111:
    1650 #line 378 "grammar.y"
     1650#line 382 "grammar.y"
    16511651{ yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ;
    16521652    break;}
    16531653case 126:
    1654 #line 399 "grammar.y"
     1654#line 403 "grammar.y"
    16551655{ yyval.stat = new BlockNode(0L); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
    16561656    break;}
    16571657case 127:
    1658 #line 400 "grammar.y"
     1658#line 404 "grammar.y"
    16591659{ yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
    16601660    break;}
    16611661case 128:
    1662 #line 404 "grammar.y"
     1662#line 408 "grammar.y"
    16631663{ yyval.slist = new StatListNode(yyvsp[0].stat); ;
    16641664    break;}
    16651665case 129:
    1666 #line 405 "grammar.y"
     1666#line 409 "grammar.y"
    16671667{ yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
    16681668    break;}
    16691669case 130:
    1670 #line 409 "grammar.y"
     1670#line 413 "grammar.y"
    16711671{ yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
    16721672                                      DBG(yyval.stat, yylsp[-2], yylsp[0]); ;
    16731673    break;}
    16741674case 131:
    1675 #line 411 "grammar.y"
     1675#line 415 "grammar.y"
    16761676{ if (automatic()) {
    16771677                                          yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
     
    16831683    break;}
    16841684case 132:
    1685 #line 421 "grammar.y"
     1685#line 425 "grammar.y"
    16861686{ yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;
    16871687    break;}
    16881688case 133:
    1689 #line 423 "grammar.y"
     1689#line 427 "grammar.y"
    16901690{ yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
    16911691    break;}
    16921692case 134:
    1693 #line 427 "grammar.y"
     1693#line 431 "grammar.y"
    16941694{ yyval.decl = new VarDeclNode(yyvsp[0].ustr, 0); delete yyvsp[0].ustr; ;
    16951695    break;}
    16961696case 135:
    1697 #line 428 "grammar.y"
     1697#line 432 "grammar.y"
    16981698{ yyval.decl = new VarDeclNode(yyvsp[-1].ustr, yyvsp[0].init); delete yyvsp[-1].ustr; ;
    16991699    break;}
    17001700case 136:
    1701 #line 432 "grammar.y"
     1701#line 436 "grammar.y"
    17021702{ yyval.init = new AssignExprNode(yyvsp[0].node); ;
    17031703    break;}
    17041704case 137:
    1705 #line 436 "grammar.y"
     1705#line 440 "grammar.y"
    17061706{ yyval.stat = new EmptyStatementNode(); ;
    17071707    break;}
    17081708case 138:
    1709 #line 440 "grammar.y"
     1709#line 444 "grammar.y"
    17101710{ yyval.stat = new ExprStatementNode(yyvsp[-1].node);
    17111711                                     DBG(yyval.stat, yylsp[-1], yylsp[0]); ;
    17121712    break;}
    17131713case 139:
    1714 #line 442 "grammar.y"
     1714#line 446 "grammar.y"
    17151715{ if (automatic()) {
    17161716                                       yyval.stat = new ExprStatementNode(yyvsp[-1].node);
     
    17201720    break;}
    17211721case 140:
    1722 #line 450 "grammar.y"
     1722#line 454 "grammar.y"
    17231723{ yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
    17241724    break;}
    17251725case 141:
    1726 #line 452 "grammar.y"
     1726#line 456 "grammar.y"
    17271727{ yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
    17281728    break;}
    17291729case 142:
    1730 #line 456 "grammar.y"
     1730#line 460 "grammar.y"
    17311731{ yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);;
    17321732    break;}
    17331733case 143:
    1734 #line 457 "grammar.y"
     1734#line 461 "grammar.y"
    17351735{ yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
    17361736    break;}
    17371737case 144:
    1738 #line 459 "grammar.y"
     1738#line 463 "grammar.y"
    17391739{ yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
    17401740                                     DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
    17411741    break;}
    17421742case 145:
    1743 #line 462 "grammar.y"
     1743#line 466 "grammar.y"
    17441744{ yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
    17451745                                     DBG(yyval.stat,yylsp[-9],yylsp[-1]); ;
    17461746    break;}
    17471747case 146:
    1748 #line 465 "grammar.y"
     1748#line 469 "grammar.y"
    17491749{ yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat);
    17501750                                     DBG(yyval.stat,yylsp[-6],yylsp[-1]); ;
    17511751    break;}
    17521752case 147:
    1753 #line 468 "grammar.y"
     1753#line 472 "grammar.y"
    17541754{ yyval.stat = new ForInNode(yyvsp[-4].ustr,0L,yyvsp[-2].node,yyvsp[0].stat);
    17551755                                     DBG(yyval.stat,yylsp[-7],yylsp[-1]);
     
    17571757    break;}
    17581758case 148:
    1759 #line 472 "grammar.y"
     1759#line 476 "grammar.y"
    17601760{ yyval.stat = new ForInNode(yyvsp[-5].ustr,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat);
    17611761                                     DBG(yyval.stat,yylsp[-8],yylsp[-1]);
     
    17631763    break;}
    17641764case 149:
    1765 #line 478 "grammar.y"
     1765#line 482 "grammar.y"
    17661766{ yyval.node = 0L; ;
    17671767    break;}
    17681768case 151:
    1769 #line 483 "grammar.y"
     1769#line 487 "grammar.y"
    17701770{ yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
    17711771    break;}
    17721772case 152:
    1773 #line 484 "grammar.y"
     1773#line 488 "grammar.y"
    17741774{ if (automatic()) {
    17751775                                       yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
     
    17781778    break;}
    17791779case 153:
    1780 #line 488 "grammar.y"
     1780#line 492 "grammar.y"
    17811781{ yyval.stat = new ContinueNode(yyvsp[-1].ustr); DBG(yyval.stat,yylsp[-2],yylsp[0]);
    17821782                                     delete yyvsp[-1].ustr; ;
    17831783    break;}
    17841784case 154:
    1785 #line 490 "grammar.y"
     1785#line 494 "grammar.y"
    17861786{ if (automatic()) {
    17871787                                       yyval.stat = new ContinueNode(yyvsp[-1].ustr);DBG(yyval.stat,yylsp[-2],yylsp[-1]);
     
    17911791    break;}
    17921792case 155:
    1793 #line 498 "grammar.y"
     1793#line 502 "grammar.y"
    17941794{ yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
    17951795    break;}
    17961796case 156:
    1797 #line 499 "grammar.y"
     1797#line 503 "grammar.y"
    17981798{ if (automatic()) {
    17991799                                       yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
     
    18021802    break;}
    18031803case 157:
    1804 #line 503 "grammar.y"
     1804#line 507 "grammar.y"
    18051805{ yyval.stat = new BreakNode(yyvsp[-1].ustr); DBG(yyval.stat,yylsp[-2],yylsp[0]);
    18061806                                     delete yyvsp[-1].ustr; ;
    18071807    break;}
    18081808case 158:
    1809 #line 505 "grammar.y"
     1809#line 509 "grammar.y"
    18101810{ if (automatic()) {
    18111811                                       yyval.stat = new BreakNode(yyvsp[-1].ustr); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
     
    18161816    break;}
    18171817case 159:
    1818 #line 514 "grammar.y"
     1818#line 518 "grammar.y"
    18191819{ yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
    18201820    break;}
    18211821case 160:
    1822 #line 515 "grammar.y"
     1822#line 519 "grammar.y"
    18231823{ if (automatic()) {
    18241824                                       yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
     
    18271827    break;}
    18281828case 161:
    1829 #line 519 "grammar.y"
     1829#line 523 "grammar.y"
    18301830{ yyval.stat = new ReturnNode(yyvsp[-1].node); ;
    18311831    break;}
    18321832case 162:
    1833 #line 520 "grammar.y"
     1833#line 524 "grammar.y"
    18341834{ if (automatic())
    18351835                                       yyval.stat = new ReturnNode(yyvsp[-1].node);
     
    18381838    break;}
    18391839case 163:
    1840 #line 527 "grammar.y"
     1840#line 531 "grammar.y"
    18411841{ yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat);
    18421842                                     DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
    18431843    break;}
    18441844case 164:
    1845 #line 532 "grammar.y"
     1845#line 536 "grammar.y"
    18461846{ yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk);
    18471847                                     DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
    18481848    break;}
    18491849case 165:
    1850 #line 537 "grammar.y"
     1850#line 541 "grammar.y"
    18511851{ yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0L, 0L); ;
    18521852    break;}
    18531853case 166:
    1854 #line 539 "grammar.y"
     1854#line 543 "grammar.y"
    18551855{ yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
    18561856    break;}
    18571857case 167:
    1858 #line 543 "grammar.y"
     1858#line 547 "grammar.y"
    18591859{ yyval.clist = 0L; ;
    18601860    break;}
    18611861case 169:
    1862 #line 548 "grammar.y"
     1862#line 552 "grammar.y"
    18631863{ yyval.clist = new ClauseListNode(yyvsp[0].ccl); ;
    18641864    break;}
    18651865case 170:
    1866 #line 549 "grammar.y"
     1866#line 553 "grammar.y"
    18671867{ yyval.clist = yyvsp[-1].clist->append(yyvsp[0].ccl); ;
    18681868    break;}
    18691869case 171:
    1870 #line 553 "grammar.y"
     1870#line 557 "grammar.y"
    18711871{ yyval.ccl = new CaseClauseNode(yyvsp[-1].node, 0L); ;
    18721872    break;}
    18731873case 172:
    1874 #line 554 "grammar.y"
     1874#line 558 "grammar.y"
    18751875{ yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
    18761876    break;}
    18771877case 173:
    1878 #line 558 "grammar.y"
     1878#line 562 "grammar.y"
    18791879{ yyval.ccl = new CaseClauseNode(0L, 0L);; ;
    18801880    break;}
    18811881case 174:
    1882 #line 559 "grammar.y"
     1882#line 563 "grammar.y"
    18831883{ yyval.ccl = new CaseClauseNode(0L, yyvsp[0].slist); ;
    18841884    break;}
    18851885case 175:
    1886 #line 563 "grammar.y"
     1886#line 567 "grammar.y"
    18871887{ yyvsp[0].stat->pushLabel(yyvsp[-2].ustr);
    18881888                                     yyval.stat = new LabelNode(yyvsp[-2].ustr, yyvsp[0].stat);
     
    18901890    break;}
    18911891case 176:
    1892 #line 569 "grammar.y"
     1892#line 573 "grammar.y"
    18931893{ yyval.stat = new ThrowNode(yyvsp[-1].node); ;
    18941894    break;}
    18951895case 177:
    1896 #line 573 "grammar.y"
     1896#line 577 "grammar.y"
    18971897{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].node); ;
    18981898    break;}
    18991899case 178:
    1900 #line 574 "grammar.y"
     1900#line 578 "grammar.y"
    19011901{ yyval.stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ;
    19021902    break;}
    19031903case 179:
    1904 #line 575 "grammar.y"
     1904#line 579 "grammar.y"
    19051905{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ;
    19061906    break;}
    19071907case 180:
    1908 #line 579 "grammar.y"
     1908#line 583 "grammar.y"
    19091909{ yyval.node = new CatchNode(yyvsp[-2].ustr, yyvsp[0].stat); delete yyvsp[-2].ustr; ;
    19101910    break;}
    19111911case 181:
    1912 #line 583 "grammar.y"
     1912#line 587 "grammar.y"
    19131913{ yyval.node = new FinallyNode(yyvsp[0].stat); ;
    19141914    break;}
    19151915case 182:
    1916 #line 587 "grammar.y"
     1916#line 591 "grammar.y"
    19171917{ yyval.func = new FuncDeclNode(yyvsp[-3].ustr, 0L, yyvsp[0].body);
    19181918                                             delete yyvsp[-3].ustr; ;
    19191919    break;}
    19201920case 183:
    1921 #line 590 "grammar.y"
     1921#line 594 "grammar.y"
    19221922{ yyval.func = new FuncDeclNode(yyvsp[-4].ustr, yyvsp[-2].param, yyvsp[0].body);
    19231923                                     delete yyvsp[-4].ustr; ;
    19241924    break;}
    19251925case 184:
    1926 #line 594 "grammar.y"
     1926#line 598 "grammar.y"
    19271927{ yyval.node = new FuncExprNode(0L, yyvsp[0].body); ;
    19281928    break;}
    19291929case 185:
    1930 #line 596 "grammar.y"
     1930#line 600 "grammar.y"
    19311931{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
    19321932    break;}
    19331933case 186:
    1934 #line 601 "grammar.y"
     1934#line 605 "grammar.y"
    19351935{ yyval.param = new ParameterNode(yyvsp[0].ustr); delete yyvsp[0].ustr; ;
    19361936    break;}
    19371937case 187:
    1938 #line 602 "grammar.y"
     1938#line 606 "grammar.y"
    19391939{ yyval.param = yyvsp[-2].param->append(yyvsp[0].ustr);
    19401940                                     delete yyvsp[0].ustr; ;
    19411941    break;}
    19421942case 188:
    1943 #line 607 "grammar.y"
     1943#line 611 "grammar.y"
    19441944{ yyval.body = new FunctionBodyNode(0L);
    19451945                                     DBG(yyval.body, yylsp[-1], yylsp[0]);;
    19461946    break;}
    19471947case 189:
    1948 #line 609 "grammar.y"
     1948#line 613 "grammar.y"
    19491949{ yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
    19501950                                     DBG(yyval.body, yylsp[-2], yylsp[0]);;
    19511951    break;}
    19521952case 190:
    1953 #line 614 "grammar.y"
     1953#line 618 "grammar.y"
    19541954{ yyval.prog = new ProgramNode(0L);
    19551955                                     Parser::progNode = yyval.prog; ;
    19561956    break;}
    19571957case 191:
    1958 #line 616 "grammar.y"
     1958#line 620 "grammar.y"
    19591959{ yyval.prog = new ProgramNode(yyvsp[0].srcs);
    19601960                                     Parser::progNode = yyval.prog; ;
    19611961    break;}
    19621962case 192:
    1963 #line 621 "grammar.y"
     1963#line 625 "grammar.y"
    19641964{ yyval.srcs = new SourceElementsNode(yyvsp[0].src); ;
    19651965    break;}
    19661966case 193:
    1967 #line 623 "grammar.y"
     1967#line 627 "grammar.y"
    19681968{ yyval.srcs = new SourceElementsNode(yyvsp[0].srcs, yyvsp[-1].src); ;
    19691969    break;}
    19701970case 194:
    1971 #line 630 "grammar.y"
     1971#line 634 "grammar.y"
    19721972{ yyval.src = new SourceElementNode(yyvsp[0].stat); ;
    19731973    break;}
    19741974case 195:
    1975 #line 631 "grammar.y"
     1975#line 635 "grammar.y"
    19761976{ yyval.src = new SourceElementNode(yyvsp[0].func); ;
    19771977    break;}
     
    21992199  return 1;
    22002200}
    2201 #line 634 "grammar.y"
     2201#line 638 "grammar.y"
    22022202
    22032203
Note: See TracChangeset for help on using the changeset viewer.