Changeset 5356 in webkit for trunk/JavaScriptCore/kjs
- Timestamp:
- Nov 2, 2003, 2:51:46 PM (22 years ago)
- Location:
- trunk/JavaScriptCore/kjs
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/grammar.cpp
r5314 r5356 153 153 PropertyValueNode *plist; 154 154 PropertyNode *pnode; 155 CatchNode *cnode; 156 FinallyNode *fnode; 155 157 } YYSTYPE; 156 158 … … 318 320 #if YYDEBUG != 0 319 321 static const short yyrline[] = { 0, 320 16 5, 167, 168, 169, 170, 171, 174, 180, 182, 183,321 18 4, 185, 186, 187, 190, 192, 193, 196, 198, 202,322 20 4, 207, 209, 212, 214, 218, 220, 221, 224, 226,323 2 27, 228, 229, 232, 234, 237, 239, 240, 241, 244,324 2 46, 249, 251, 254, 256, 259, 261, 262, 265, 267,325 2 68, 269, 270, 271, 272, 273, 274, 275, 276, 277,326 28 0, 282, 283, 284, 287, 289, 290, 293, 295, 296,327 297, 300, 302, 304, 306, 308, 310, 312, 316, 318,328 3 19, 320, 321, 324, 326, 329, 331, 334, 336, 339,329 34 1, 345, 347, 351, 353, 357, 359, 363, 365, 366,330 3 67, 368, 369, 370, 371, 372, 373, 374, 375, 378,331 38 0, 383, 385, 386, 387, 388, 389, 390, 391, 392,332 39 3, 394, 395, 396, 397, 400, 402, 405, 407, 410,333 41 3, 422, 424, 428, 430, 433, 437, 441, 444, 451,334 45 3, 457, 459, 460, 463, 466, 469, 472, 477, 479,335 48 2, 484, 488, 489, 495, 497, 501, 502, 509, 511,336 51 5, 516, 522, 527, 532, 534, 538, 540, 543, 545,337 5 48, 550, 553, 555, 558, 563, 567, 569, 570, 573,338 5 77, 581, 583, 586, 588, 593, 595, 598, 601, 605,339 6 08, 612, 614, 617, 619322 169, 171, 172, 173, 174, 175, 178, 184, 186, 187, 323 188, 189, 190, 191, 194, 196, 197, 200, 202, 206, 324 208, 211, 213, 216, 218, 222, 224, 225, 228, 230, 325 231, 232, 233, 236, 238, 241, 243, 244, 245, 248, 326 250, 253, 255, 258, 260, 263, 265, 266, 269, 271, 327 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 328 284, 286, 287, 288, 291, 293, 294, 297, 299, 300, 329 301, 304, 306, 308, 310, 312, 314, 316, 320, 322, 330 323, 324, 325, 328, 330, 333, 335, 338, 340, 343, 331 345, 349, 351, 355, 357, 361, 363, 367, 369, 370, 332 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 333 384, 387, 389, 390, 391, 392, 393, 394, 395, 396, 334 397, 398, 399, 400, 401, 404, 406, 409, 411, 414, 335 417, 426, 428, 432, 434, 437, 441, 445, 448, 455, 336 457, 461, 463, 464, 467, 470, 473, 476, 481, 483, 337 486, 488, 492, 493, 499, 501, 505, 506, 513, 515, 338 519, 520, 526, 531, 536, 538, 542, 544, 547, 549, 339 552, 554, 557, 559, 562, 567, 571, 573, 574, 577, 340 581, 585, 587, 590, 592, 597, 599, 602, 605, 609, 341 612, 616, 618, 621, 623 340 342 }; 341 343 #endif … … 1334 1336 1335 1337 case 1: 1336 #line 1 66"grammar.y"1338 #line 170 "grammar.y" 1337 1339 { yyval.node = new NullNode(); ; 1338 1340 break;} 1339 1341 case 2: 1340 #line 1 67"grammar.y"1342 #line 171 "grammar.y" 1341 1343 { yyval.node = new BooleanNode(true); ; 1342 1344 break;} 1343 1345 case 3: 1344 #line 1 68"grammar.y"1346 #line 172 "grammar.y" 1345 1347 { yyval.node = new BooleanNode(false); ; 1346 1348 break;} 1347 1349 case 4: 1348 #line 1 69"grammar.y"1350 #line 173 "grammar.y" 1349 1351 { yyval.node = new NumberNode(yyvsp[0].dval); ; 1350 1352 break;} 1351 1353 case 5: 1352 #line 17 0"grammar.y"1354 #line 174 "grammar.y" 1353 1355 { yyval.node = new StringNode(yyvsp[0].ustr); ; 1354 1356 break;} 1355 1357 case 6: 1356 #line 17 1"grammar.y"1358 #line 175 "grammar.y" 1357 1359 { Lexer *l = Lexer::curr(); 1358 1360 if (!l->scanRegExp()) YYABORT; … … 1360 1362 break;} 1361 1363 case 7: 1362 #line 17 5"grammar.y"1364 #line 179 "grammar.y" 1363 1365 { Lexer *l = Lexer::curr(); 1364 1366 if (!l->scanRegExp()) YYABORT; … … 1366 1368 break;} 1367 1369 case 8: 1368 #line 18 1"grammar.y"1370 #line 185 "grammar.y" 1369 1371 { yyval.node = new ThisNode(); ; 1370 1372 break;} 1371 1373 case 9: 1372 #line 18 2"grammar.y"1374 #line 186 "grammar.y" 1373 1375 { yyval.node = new ResolveNode(*yyvsp[0].ident); ; 1374 1376 break;} 1375 1377 case 12: 1376 #line 18 5"grammar.y"1378 #line 189 "grammar.y" 1377 1379 { yyval.node = new GroupNode(yyvsp[-1].node); ; 1378 1380 break;} 1379 1381 case 13: 1380 #line 1 86"grammar.y"1381 { yyval.node = new ObjectLiteralNode( 0L); ;1382 #line 190 "grammar.y" 1383 { yyval.node = new ObjectLiteralNode(); ; 1382 1384 break;} 1383 1385 case 14: 1384 #line 1 87"grammar.y"1386 #line 191 "grammar.y" 1385 1387 { yyval.node = new ObjectLiteralNode(yyvsp[-1].plist); ; 1386 1388 break;} 1387 1389 case 15: 1388 #line 19 1"grammar.y"1390 #line 195 "grammar.y" 1389 1391 { yyval.node = new ArrayNode(yyvsp[-1].ival); ; 1390 1392 break;} 1391 1393 case 16: 1392 #line 19 2"grammar.y"1394 #line 196 "grammar.y" 1393 1395 { yyval.node = new ArrayNode(yyvsp[-1].elm); ; 1394 1396 break;} 1395 1397 case 17: 1396 #line 19 3"grammar.y"1398 #line 197 "grammar.y" 1397 1399 { yyval.node = new ArrayNode(yyvsp[-1].ival, yyvsp[-3].elm); ; 1398 1400 break;} 1399 1401 case 18: 1400 #line 197"grammar.y"1402 #line 201 "grammar.y" 1401 1403 { yyval.elm = new ElementNode(yyvsp[-1].ival, yyvsp[0].node); ; 1402 1404 break;} 1403 1405 case 19: 1404 #line 199"grammar.y"1406 #line 203 "grammar.y" 1405 1407 { yyval.elm = new ElementNode(yyvsp[-3].elm, yyvsp[-1].ival, yyvsp[0].node); ; 1406 1408 break;} 1407 1409 case 20: 1408 #line 20 3"grammar.y"1410 #line 207 "grammar.y" 1409 1411 { yyval.ival = 0; ; 1410 1412 break;} 1411 1413 case 22: 1412 #line 2 08"grammar.y"1414 #line 212 "grammar.y" 1413 1415 { yyval.ival = 1; ; 1414 1416 break;} 1415 1417 case 23: 1416 #line 2 09"grammar.y"1418 #line 213 "grammar.y" 1417 1419 { yyval.ival = yyvsp[-1].ival + 1; ; 1418 1420 break;} 1419 1421 case 24: 1420 #line 21 3"grammar.y"1422 #line 217 "grammar.y" 1421 1423 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node); ; 1422 1424 break;} 1423 1425 case 25: 1424 #line 21 5"grammar.y"1426 #line 219 "grammar.y" 1425 1427 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node, yyvsp[-4].plist); ; 1426 1428 break;} 1427 1429 case 26: 1428 #line 2 19"grammar.y"1430 #line 223 "grammar.y" 1429 1431 { yyval.pnode = new PropertyNode(*yyvsp[0].ident); ; 1430 1432 break;} 1431 1433 case 27: 1432 #line 22 0"grammar.y"1434 #line 224 "grammar.y" 1433 1435 { yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); ; 1434 1436 break;} 1435 1437 case 28: 1436 #line 22 1"grammar.y"1438 #line 225 "grammar.y" 1437 1439 { yyval.pnode = new PropertyNode(yyvsp[0].dval); ; 1438 1440 break;} 1439 1441 case 31: 1440 #line 2 27"grammar.y"1442 #line 231 "grammar.y" 1441 1443 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ; 1442 1444 break;} 1443 1445 case 32: 1444 #line 2 28"grammar.y"1446 #line 232 "grammar.y" 1445 1447 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ; 1446 1448 break;} 1447 1449 case 33: 1448 #line 2 29"grammar.y"1450 #line 233 "grammar.y" 1449 1451 { yyval.node = new NewExprNode(yyvsp[-1].node, yyvsp[0].args); ; 1450 1452 break;} 1451 1453 case 35: 1452 #line 23 4"grammar.y"1454 #line 238 "grammar.y" 1453 1455 { yyval.node = new NewExprNode(yyvsp[0].node); ; 1454 1456 break;} 1455 1457 case 36: 1456 #line 2 38"grammar.y"1458 #line 242 "grammar.y" 1457 1459 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ; 1458 1460 break;} 1459 1461 case 37: 1460 #line 2 39"grammar.y"1462 #line 243 "grammar.y" 1461 1463 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ; 1462 1464 break;} 1463 1465 case 38: 1464 #line 24 0"grammar.y"1466 #line 244 "grammar.y" 1465 1467 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ; 1466 1468 break;} 1467 1469 case 39: 1468 #line 24 1"grammar.y"1470 #line 245 "grammar.y" 1469 1471 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ; 1470 1472 break;} 1471 1473 case 40: 1472 #line 24 5"grammar.y"1473 { yyval.args = new ArgumentsNode( 0L); ;1474 #line 249 "grammar.y" 1475 { yyval.args = new ArgumentsNode(); ; 1474 1476 break;} 1475 1477 case 41: 1476 #line 2 46"grammar.y"1478 #line 250 "grammar.y" 1477 1479 { yyval.args = new ArgumentsNode(yyvsp[-1].alist); ; 1478 1480 break;} 1479 1481 case 42: 1480 #line 25 0"grammar.y"1482 #line 254 "grammar.y" 1481 1483 { yyval.alist = new ArgumentListNode(yyvsp[0].node); ; 1482 1484 break;} 1483 1485 case 43: 1484 #line 25 1"grammar.y"1486 #line 255 "grammar.y" 1485 1487 { yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ; 1486 1488 break;} 1487 1489 case 47: 1488 #line 26 1"grammar.y"1490 #line 265 "grammar.y" 1489 1491 { yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ; 1490 1492 break;} 1491 1493 case 48: 1492 #line 26 2"grammar.y"1494 #line 266 "grammar.y" 1493 1495 { yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ; 1494 1496 break;} 1495 1497 case 50: 1496 #line 2 67"grammar.y"1498 #line 271 "grammar.y" 1497 1499 { yyval.node = new DeleteNode(yyvsp[0].node); ; 1498 1500 break;} 1499 1501 case 51: 1500 #line 2 68"grammar.y"1502 #line 272 "grammar.y" 1501 1503 { yyval.node = new VoidNode(yyvsp[0].node); ; 1502 1504 break;} 1503 1505 case 52: 1504 #line 2 69"grammar.y"1506 #line 273 "grammar.y" 1505 1507 { yyval.node = new TypeOfNode(yyvsp[0].node); ; 1506 1508 break;} 1507 1509 case 53: 1508 #line 27 0"grammar.y"1510 #line 274 "grammar.y" 1509 1511 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ; 1510 1512 break;} 1511 1513 case 54: 1512 #line 27 1"grammar.y"1514 #line 275 "grammar.y" 1513 1515 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ; 1514 1516 break;} 1515 1517 case 55: 1516 #line 27 2"grammar.y"1518 #line 276 "grammar.y" 1517 1519 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ; 1518 1520 break;} 1519 1521 case 56: 1520 #line 27 3"grammar.y"1522 #line 277 "grammar.y" 1521 1523 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ; 1522 1524 break;} 1523 1525 case 57: 1524 #line 27 4"grammar.y"1526 #line 278 "grammar.y" 1525 1527 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ; 1526 1528 break;} 1527 1529 case 58: 1528 #line 27 5"grammar.y"1530 #line 279 "grammar.y" 1529 1531 { yyval.node = new NegateNode(yyvsp[0].node); ; 1530 1532 break;} 1531 1533 case 59: 1532 #line 2 76"grammar.y"1534 #line 280 "grammar.y" 1533 1535 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ; 1534 1536 break;} 1535 1537 case 60: 1536 #line 2 77"grammar.y"1538 #line 281 "grammar.y" 1537 1539 { yyval.node = new LogicalNotNode(yyvsp[0].node); ; 1538 1540 break;} 1539 1541 case 62: 1540 #line 28 2"grammar.y"1542 #line 286 "grammar.y" 1541 1543 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ; 1542 1544 break;} 1543 1545 case 63: 1544 #line 28 3"grammar.y"1546 #line 287 "grammar.y" 1545 1547 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ; 1546 1548 break;} 1547 1549 case 64: 1548 #line 28 4"grammar.y"1550 #line 288 "grammar.y" 1549 1551 { yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ; 1550 1552 break;} 1551 1553 case 66: 1552 #line 2 89"grammar.y"1554 #line 293 "grammar.y" 1553 1555 { yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '+'); ; 1554 1556 break;} 1555 1557 case 67: 1556 #line 29 0"grammar.y"1558 #line 294 "grammar.y" 1557 1559 { yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '-'); ; 1558 1560 break;} 1559 1561 case 69: 1560 #line 29 5"grammar.y"1562 #line 299 "grammar.y" 1561 1563 { yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ; 1562 1564 break;} 1563 1565 case 70: 1564 #line 296"grammar.y"1566 #line 300 "grammar.y" 1565 1567 { yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ; 1566 1568 break;} 1567 1569 case 71: 1568 #line 297"grammar.y"1570 #line 301 "grammar.y" 1569 1571 { yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ; 1570 1572 break;} 1571 1573 case 73: 1572 #line 30 3"grammar.y"1574 #line 307 "grammar.y" 1573 1575 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ; 1574 1576 break;} 1575 1577 case 74: 1576 #line 30 5"grammar.y"1578 #line 309 "grammar.y" 1577 1579 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ; 1578 1580 break;} 1579 1581 case 75: 1580 #line 3 07"grammar.y"1582 #line 311 "grammar.y" 1581 1583 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ; 1582 1584 break;} 1583 1585 case 76: 1584 #line 3 09"grammar.y"1586 #line 313 "grammar.y" 1585 1587 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ; 1586 1588 break;} 1587 1589 case 77: 1588 #line 31 1"grammar.y"1590 #line 315 "grammar.y" 1589 1591 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ; 1590 1592 break;} 1591 1593 case 78: 1592 #line 31 3"grammar.y"1594 #line 317 "grammar.y" 1593 1595 { yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ; 1594 1596 break;} 1595 1597 case 80: 1596 #line 3 18"grammar.y"1598 #line 322 "grammar.y" 1597 1599 { yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ; 1598 1600 break;} 1599 1601 case 81: 1600 #line 3 19"grammar.y"1602 #line 323 "grammar.y" 1601 1603 { yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ; 1602 1604 break;} 1603 1605 case 82: 1604 #line 32 0"grammar.y"1606 #line 324 "grammar.y" 1605 1607 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ; 1606 1608 break;} 1607 1609 case 83: 1608 #line 32 1"grammar.y"1610 #line 325 "grammar.y" 1609 1611 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);; 1610 1612 break;} 1611 1613 case 85: 1612 #line 3 26"grammar.y"1614 #line 330 "grammar.y" 1613 1615 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ; 1614 1616 break;} 1615 1617 case 87: 1616 #line 33 1"grammar.y"1618 #line 335 "grammar.y" 1617 1619 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ; 1618 1620 break;} 1619 1621 case 89: 1620 #line 3 36"grammar.y"1622 #line 340 "grammar.y" 1621 1623 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ; 1622 1624 break;} 1623 1625 case 91: 1624 #line 34 2"grammar.y"1626 #line 346 "grammar.y" 1625 1627 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ; 1626 1628 break;} 1627 1629 case 93: 1628 #line 3 48"grammar.y"1630 #line 352 "grammar.y" 1629 1631 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ; 1630 1632 break;} 1631 1633 case 95: 1632 #line 35 4"grammar.y"1634 #line 358 "grammar.y" 1633 1635 { yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ; 1634 1636 break;} 1635 1637 case 97: 1636 #line 36 0"grammar.y"1638 #line 364 "grammar.y" 1637 1639 { yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);; 1638 1640 break;} 1639 1641 case 98: 1640 #line 36 4"grammar.y"1642 #line 368 "grammar.y" 1641 1643 { yyval.op = OpEqual; ; 1642 1644 break;} 1643 1645 case 99: 1644 #line 36 5"grammar.y"1646 #line 369 "grammar.y" 1645 1647 { yyval.op = OpPlusEq; ; 1646 1648 break;} 1647 1649 case 100: 1648 #line 3 66"grammar.y"1650 #line 370 "grammar.y" 1649 1651 { yyval.op = OpMinusEq; ; 1650 1652 break;} 1651 1653 case 101: 1652 #line 3 67"grammar.y"1654 #line 371 "grammar.y" 1653 1655 { yyval.op = OpMultEq; ; 1654 1656 break;} 1655 1657 case 102: 1656 #line 3 68"grammar.y"1658 #line 372 "grammar.y" 1657 1659 { yyval.op = OpDivEq; ; 1658 1660 break;} 1659 1661 case 103: 1660 #line 3 69"grammar.y"1662 #line 373 "grammar.y" 1661 1663 { yyval.op = OpLShift; ; 1662 1664 break;} 1663 1665 case 104: 1664 #line 37 0"grammar.y"1666 #line 374 "grammar.y" 1665 1667 { yyval.op = OpRShift; ; 1666 1668 break;} 1667 1669 case 105: 1668 #line 37 1"grammar.y"1670 #line 375 "grammar.y" 1669 1671 { yyval.op = OpURShift; ; 1670 1672 break;} 1671 1673 case 106: 1672 #line 37 2"grammar.y"1674 #line 376 "grammar.y" 1673 1675 { yyval.op = OpAndEq; ; 1674 1676 break;} 1675 1677 case 107: 1676 #line 37 3"grammar.y"1678 #line 377 "grammar.y" 1677 1679 { yyval.op = OpXOrEq; ; 1678 1680 break;} 1679 1681 case 108: 1680 #line 37 4"grammar.y"1682 #line 378 "grammar.y" 1681 1683 { yyval.op = OpOrEq; ; 1682 1684 break;} 1683 1685 case 109: 1684 #line 37 5"grammar.y"1686 #line 379 "grammar.y" 1685 1687 { yyval.op = OpModEq; ; 1686 1688 break;} 1687 1689 case 111: 1688 #line 38 0"grammar.y"1690 #line 384 "grammar.y" 1689 1691 { yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ; 1690 1692 break;} 1691 1693 case 126: 1692 #line 40 1"grammar.y"1693 { yyval.stat = new BlockNode(0 L); DBG(yyval.stat, yylsp[0], yylsp[0]); ;1694 #line 405 "grammar.y" 1695 { yyval.stat = new BlockNode(0); DBG(yyval.stat, yylsp[0], yylsp[0]); ; 1694 1696 break;} 1695 1697 case 127: 1696 #line 40 2"grammar.y"1698 #line 406 "grammar.y" 1697 1699 { yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ; 1698 1700 break;} 1699 1701 case 128: 1700 #line 4 06"grammar.y"1702 #line 410 "grammar.y" 1701 1703 { yyval.slist = new StatListNode(yyvsp[0].stat); ; 1702 1704 break;} 1703 1705 case 129: 1704 #line 4 07"grammar.y"1706 #line 411 "grammar.y" 1705 1707 { yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ; 1706 1708 break;} 1707 1709 case 130: 1708 #line 41 1"grammar.y"1710 #line 415 "grammar.y" 1709 1711 { yyval.stat = new VarStatementNode(yyvsp[-1].vlist); 1710 1712 DBG(yyval.stat, yylsp[-2], yylsp[0]); ; 1711 1713 break;} 1712 1714 case 131: 1713 #line 41 3"grammar.y"1715 #line 417 "grammar.y" 1714 1716 { if (automatic()) { 1715 1717 yyval.stat = new VarStatementNode(yyvsp[-1].vlist); … … 1721 1723 break;} 1722 1724 case 132: 1723 #line 42 3"grammar.y"1725 #line 427 "grammar.y" 1724 1726 { yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ; 1725 1727 break;} 1726 1728 case 133: 1727 #line 42 5"grammar.y"1729 #line 429 "grammar.y" 1728 1730 { yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ; 1729 1731 break;} 1730 1732 case 134: 1731 #line 4 29"grammar.y"1733 #line 433 "grammar.y" 1732 1734 { yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); ; 1733 1735 break;} 1734 1736 case 135: 1735 #line 43 0"grammar.y"1737 #line 434 "grammar.y" 1736 1738 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); ; 1737 1739 break;} 1738 1740 case 136: 1739 #line 43 4"grammar.y"1741 #line 438 "grammar.y" 1740 1742 { yyval.init = new AssignExprNode(yyvsp[0].node); ; 1741 1743 break;} 1742 1744 case 137: 1743 #line 4 38"grammar.y"1745 #line 442 "grammar.y" 1744 1746 { yyval.stat = new EmptyStatementNode(); ; 1745 1747 break;} 1746 1748 case 138: 1747 #line 44 2"grammar.y"1749 #line 446 "grammar.y" 1748 1750 { yyval.stat = new ExprStatementNode(yyvsp[-1].node); 1749 1751 DBG(yyval.stat, yylsp[-1], yylsp[0]); ; 1750 1752 break;} 1751 1753 case 139: 1752 #line 44 4"grammar.y"1754 #line 448 "grammar.y" 1753 1755 { if (automatic()) { 1754 1756 yyval.stat = new ExprStatementNode(yyvsp[-1].node); … … 1758 1760 break;} 1759 1761 case 140: 1760 #line 45 2"grammar.y"1761 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0 L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;1762 #line 456 "grammar.y" 1763 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ; 1762 1764 break;} 1763 1765 case 141: 1764 #line 45 4"grammar.y"1766 #line 458 "grammar.y" 1765 1767 { yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ; 1766 1768 break;} 1767 1769 case 142: 1768 #line 4 58"grammar.y"1770 #line 462 "grammar.y" 1769 1771 { yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);; 1770 1772 break;} 1771 1773 case 143: 1772 #line 4 59"grammar.y"1774 #line 463 "grammar.y" 1773 1775 { yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ; 1774 1776 break;} 1775 1777 case 144: 1776 #line 46 1"grammar.y"1778 #line 465 "grammar.y" 1777 1779 { yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat); 1778 1780 DBG(yyval.stat,yylsp[-8],yylsp[-1]); ; 1779 1781 break;} 1780 1782 case 145: 1781 #line 46 4"grammar.y"1783 #line 468 "grammar.y" 1782 1784 { yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat); 1783 1785 DBG(yyval.stat,yylsp[-9],yylsp[-1]); ; 1784 1786 break;} 1785 1787 case 146: 1786 #line 4 67"grammar.y"1788 #line 471 "grammar.y" 1787 1789 { yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat); 1788 1790 DBG(yyval.stat,yylsp[-6],yylsp[-1]); ; 1789 1791 break;} 1790 1792 case 147: 1791 #line 47 0"grammar.y"1792 { yyval.stat = new ForInNode(*yyvsp[-4].ident,0 L,yyvsp[-2].node,yyvsp[0].stat);1793 #line 474 "grammar.y" 1794 { yyval.stat = new ForInNode(*yyvsp[-4].ident,0,yyvsp[-2].node,yyvsp[0].stat); 1793 1795 DBG(yyval.stat,yylsp[-7],yylsp[-1]); ; 1794 1796 break;} 1795 1797 case 148: 1796 #line 47 3"grammar.y"1798 #line 477 "grammar.y" 1797 1799 { yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat); 1798 1800 DBG(yyval.stat,yylsp[-8],yylsp[-1]); ; 1799 1801 break;} 1800 1802 case 149: 1801 #line 4 78"grammar.y"1802 { yyval.node = 0 L; ;1803 #line 482 "grammar.y" 1804 { yyval.node = 0; ; 1803 1805 break;} 1804 1806 case 151: 1805 #line 48 3"grammar.y"1807 #line 487 "grammar.y" 1806 1808 { yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ; 1807 1809 break;} 1808 1810 case 152: 1809 #line 48 4"grammar.y"1811 #line 488 "grammar.y" 1810 1812 { if (automatic()) { 1811 1813 yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); … … 1814 1816 break;} 1815 1817 case 153: 1816 #line 4 88"grammar.y"1818 #line 492 "grammar.y" 1817 1819 { yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ; 1818 1820 break;} 1819 1821 case 154: 1820 #line 4 89"grammar.y"1822 #line 493 "grammar.y" 1821 1823 { if (automatic()) { 1822 1824 yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]); … … 1825 1827 break;} 1826 1828 case 155: 1827 #line 496"grammar.y"1829 #line 500 "grammar.y" 1828 1830 { yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ; 1829 1831 break;} 1830 1832 case 156: 1831 #line 497"grammar.y"1833 #line 501 "grammar.y" 1832 1834 { if (automatic()) { 1833 1835 yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]); … … 1836 1838 break;} 1837 1839 case 157: 1838 #line 50 1"grammar.y"1840 #line 505 "grammar.y" 1839 1841 { yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ; 1840 1842 break;} 1841 1843 case 158: 1842 #line 50 2"grammar.y"1844 #line 506 "grammar.y" 1843 1845 { if (automatic()) { 1844 1846 yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]); … … 1848 1850 break;} 1849 1851 case 159: 1850 #line 51 0"grammar.y"1851 { yyval.stat = new ReturnNode(0 L); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;1852 #line 514 "grammar.y" 1853 { yyval.stat = new ReturnNode(0); DBG(yyval.stat,yylsp[-1],yylsp[0]); ; 1852 1854 break;} 1853 1855 case 160: 1854 #line 51 1"grammar.y"1856 #line 515 "grammar.y" 1855 1857 { if (automatic()) { 1856 yyval.stat = new ReturnNode(0 L); DBG(yyval.stat,yylsp[-1],yylsp[-1]);1858 yyval.stat = new ReturnNode(0); DBG(yyval.stat,yylsp[-1],yylsp[-1]); 1857 1859 } else 1858 1860 YYABORT; ; 1859 1861 break;} 1860 1862 case 161: 1861 #line 51 5"grammar.y"1863 #line 519 "grammar.y" 1862 1864 { yyval.stat = new ReturnNode(yyvsp[-1].node); ; 1863 1865 break;} 1864 1866 case 162: 1865 #line 5 16"grammar.y"1867 #line 520 "grammar.y" 1866 1868 { if (automatic()) 1867 1869 yyval.stat = new ReturnNode(yyvsp[-1].node); … … 1870 1872 break;} 1871 1873 case 163: 1872 #line 52 3"grammar.y"1874 #line 527 "grammar.y" 1873 1875 { yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat); 1874 1876 DBG(yyval.stat, yylsp[-4], yylsp[-1]); ; 1875 1877 break;} 1876 1878 case 164: 1877 #line 5 28"grammar.y"1879 #line 532 "grammar.y" 1878 1880 { yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk); 1879 1881 DBG(yyval.stat, yylsp[-4], yylsp[-1]); ; 1880 1882 break;} 1881 1883 case 165: 1882 #line 53 3"grammar.y"1883 { yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0 L, 0L); ;1884 #line 537 "grammar.y" 1885 { yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0, 0); ; 1884 1886 break;} 1885 1887 case 166: 1886 #line 53 5"grammar.y"1888 #line 539 "grammar.y" 1887 1889 { yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ; 1888 1890 break;} 1889 1891 case 167: 1890 #line 5 39"grammar.y"1891 { yyval.clist = 0 L; ;1892 #line 543 "grammar.y" 1893 { yyval.clist = 0; ; 1892 1894 break;} 1893 1895 case 169: 1894 #line 54 4"grammar.y"1896 #line 548 "grammar.y" 1895 1897 { yyval.clist = new ClauseListNode(yyvsp[0].ccl); ; 1896 1898 break;} 1897 1899 case 170: 1898 #line 54 5"grammar.y"1900 #line 549 "grammar.y" 1899 1901 { yyval.clist = new ClauseListNode(yyvsp[-1].clist, yyvsp[0].ccl); ; 1900 1902 break;} 1901 1903 case 171: 1902 #line 5 49"grammar.y"1903 { yyval.ccl = new CaseClauseNode(yyvsp[-1].node , 0L); ;1904 #line 553 "grammar.y" 1905 { yyval.ccl = new CaseClauseNode(yyvsp[-1].node); ; 1904 1906 break;} 1905 1907 case 172: 1906 #line 55 0"grammar.y"1908 #line 554 "grammar.y" 1907 1909 { yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ; 1908 1910 break;} 1909 1911 case 173: 1910 #line 55 4"grammar.y"1911 { yyval.ccl = new CaseClauseNode(0 L, 0L);; ;1912 #line 558 "grammar.y" 1913 { yyval.ccl = new CaseClauseNode(0); ; 1912 1914 break;} 1913 1915 case 174: 1914 #line 55 5"grammar.y"1915 { yyval.ccl = new CaseClauseNode(0 L, yyvsp[0].slist); ;1916 #line 559 "grammar.y" 1917 { yyval.ccl = new CaseClauseNode(0, yyvsp[0].slist); ; 1916 1918 break;} 1917 1919 case 175: 1918 #line 5 59"grammar.y"1920 #line 563 "grammar.y" 1919 1921 { yyvsp[0].stat->pushLabel(*yyvsp[-2].ident); 1920 1922 yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat); ; 1921 1923 break;} 1922 1924 case 176: 1923 #line 56 4"grammar.y"1925 #line 568 "grammar.y" 1924 1926 { yyval.stat = new ThrowNode(yyvsp[-1].node); ; 1925 1927 break;} 1926 1928 case 177: 1927 #line 5 68"grammar.y"1928 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0]. node); ;1929 #line 572 "grammar.y" 1930 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); ; 1929 1931 break;} 1930 1932 case 178: 1931 #line 5 69"grammar.y"1932 { yyval.stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ;1933 #line 573 "grammar.y" 1934 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); ; 1933 1935 break;} 1934 1936 case 179: 1935 #line 57 0"grammar.y"1936 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1]. node, yyvsp[0].node); ;1937 #line 574 "grammar.y" 1938 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); ; 1937 1939 break;} 1938 1940 case 180: 1939 #line 57 4"grammar.y"1940 { yyval. node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ;1941 #line 578 "grammar.y" 1942 { yyval.cnode = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ; 1941 1943 break;} 1942 1944 case 181: 1943 #line 5 78"grammar.y"1944 { yyval. node = new FinallyNode(yyvsp[0].stat); ;1945 #line 582 "grammar.y" 1946 { yyval.fnode = new FinallyNode(yyvsp[0].stat); ; 1945 1947 break;} 1946 1948 case 182: 1947 #line 58 2"grammar.y"1948 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, 0L,yyvsp[0].body); ;1949 #line 586 "grammar.y" 1950 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); ; 1949 1951 break;} 1950 1952 case 183: 1951 #line 58 4"grammar.y"1953 #line 588 "grammar.y" 1952 1954 { yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); ; 1953 1955 break;} 1954 1956 case 184: 1955 #line 5 87"grammar.y"1956 { yyval.node = new FuncExprNode( 0L,yyvsp[0].body); ;1957 #line 591 "grammar.y" 1958 { yyval.node = new FuncExprNode(yyvsp[0].body); ; 1957 1959 break;} 1958 1960 case 185: 1959 #line 5 89"grammar.y"1961 #line 593 "grammar.y" 1960 1962 { yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ; 1961 1963 break;} 1962 1964 case 186: 1963 #line 59 4"grammar.y"1965 #line 598 "grammar.y" 1964 1966 { yyval.param = new ParameterNode(*yyvsp[0].ident); ; 1965 1967 break;} 1966 1968 case 187: 1967 #line 59 5"grammar.y"1969 #line 599 "grammar.y" 1968 1970 { yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ; 1969 1971 break;} 1970 1972 case 188: 1971 #line 599"grammar.y"1972 { yyval.body = new FunctionBodyNode(0 L);1973 #line 603 "grammar.y" 1974 { yyval.body = new FunctionBodyNode(0); 1973 1975 DBG(yyval.body, yylsp[-1], yylsp[0]);; 1974 1976 break;} 1975 1977 case 189: 1976 #line 60 1"grammar.y"1978 #line 605 "grammar.y" 1977 1979 { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs); 1978 1980 DBG(yyval.body, yylsp[-2], yylsp[0]);; 1979 1981 break;} 1980 1982 case 190: 1981 #line 6 06"grammar.y"1982 { yyval.prog = new ProgramNode(0 L);1983 #line 610 "grammar.y" 1984 { yyval.prog = new ProgramNode(0); 1983 1985 Parser::progNode = yyval.prog; ; 1984 1986 break;} 1985 1987 case 191: 1986 #line 6 08"grammar.y"1988 #line 612 "grammar.y" 1987 1989 { yyval.prog = new ProgramNode(yyvsp[0].srcs); 1988 1990 Parser::progNode = yyval.prog; ; 1989 1991 break;} 1990 1992 case 192: 1991 #line 61 3"grammar.y"1993 #line 617 "grammar.y" 1992 1994 { yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ; 1993 1995 break;} 1994 1996 case 193: 1995 #line 61 4"grammar.y"1997 #line 618 "grammar.y" 1996 1998 { yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ; 1997 1999 break;} 1998 2000 case 194: 1999 #line 6 18"grammar.y"2001 #line 622 "grammar.y" 2000 2002 { yyval.stat = yyvsp[0].stat; ; 2001 2003 break;} 2002 2004 case 195: 2003 #line 6 19"grammar.y"2005 #line 623 "grammar.y" 2004 2006 { yyval.stat = yyvsp[0].func; ; 2005 2007 break;} … … 2227 2229 return 1; 2228 2230 } 2229 #line 62 2"grammar.y"2231 #line 626 "grammar.y" 2230 2232 2231 2233 -
trunk/JavaScriptCore/kjs/grammar.cpp.h
r3215 r5356 24 24 PropertyValueNode *plist; 25 25 PropertyNode *pnode; 26 CatchNode *cnode; 27 FinallyNode *fnode; 26 28 } YYSTYPE; 27 29 -
trunk/JavaScriptCore/kjs/grammar.h
r3215 r5356 24 24 PropertyValueNode *plist; 25 25 PropertyNode *pnode; 26 CatchNode *cnode; 27 FinallyNode *fnode; 26 28 } YYSTYPE; 27 29 -
trunk/JavaScriptCore/kjs/grammar.y
r5314 r5356 78 78 PropertyValueNode *plist; 79 79 PropertyNode *pnode; 80 CatchNode *cnode; 81 FinallyNode *fnode; 80 82 } 81 83 … … 131 133 %type <node> ExprOpt 132 134 %type <node> CallExpr 133 %type <node> Catch Finally 135 136 %type <cnode> Catch 137 %type <fnode> Finally 134 138 135 139 %type <stat> Statement Block … … 184 188 | ArrayLiteral 185 189 | '(' Expr ')' { $$ = new GroupNode($2); } 186 | '{' '}' { $$ = new ObjectLiteralNode( 0L); }190 | '{' '}' { $$ = new ObjectLiteralNode(); } 187 191 | '{' PropertyNameAndValueList '}' { $$ = new ObjectLiteralNode($2); } 188 192 ; … … 243 247 244 248 Arguments: 245 '(' ')' { $$ = new ArgumentsNode( 0L); }249 '(' ')' { $$ = new ArgumentsNode(); } 246 250 | '(' ArgumentList ')' { $$ = new ArgumentsNode($2); } 247 251 ; … … 399 403 400 404 Block: 401 '{' '}' { $$ = new BlockNode(0 L); DBG($$, @2, @2); }405 '{' '}' { $$ = new BlockNode(0); DBG($$, @2, @2); } 402 406 | '{' SourceElements '}' { $$ = new BlockNode($2); DBG($$, @3, @3); } 403 407 ; … … 450 454 451 455 IfStatement: /* shift/reduce conflict due to dangling else */ 452 IF '(' Expr ')' Statement { $$ = new IfNode($3,$5,0 L);DBG($$,@1,@4); }456 IF '(' Expr ')' Statement { $$ = new IfNode($3,$5,0);DBG($$,@1,@4); } 453 457 | IF '(' Expr ')' Statement ELSE Statement 454 458 { $$ = new IfNode($3,$5,$7);DBG($$,@1,@4); } … … 468 472 DBG($$,@1,@6); } 469 473 | FOR '(' VAR IDENT IN Expr ')' 470 Statement { $$ = new ForInNode(*$4,0 L,$6,$8);474 Statement { $$ = new ForInNode(*$4,0,$6,$8); 471 475 DBG($$,@1,@7); } 472 476 | FOR '(' VAR IDENT Initializer IN Expr ')' … … 476 480 477 481 ExprOpt: 478 /* nothing */ { $$ = 0 L; }482 /* nothing */ { $$ = 0; } 479 483 | Expr 480 484 ; … … 508 512 509 513 ReturnStatement: 510 RETURN ';' { $$ = new ReturnNode(0 L); DBG($$,@1,@2); }514 RETURN ';' { $$ = new ReturnNode(0); DBG($$,@1,@2); } 511 515 | RETURN error { if (automatic()) { 512 $$ = new ReturnNode(0 L); DBG($$,@1,@1);516 $$ = new ReturnNode(0); DBG($$,@1,@1); 513 517 } else 514 518 YYABORT; } … … 531 535 532 536 CaseBlock: 533 '{' CaseClausesOpt '}' { $$ = new CaseBlockNode($2, 0 L, 0L); }537 '{' CaseClausesOpt '}' { $$ = new CaseBlockNode($2, 0, 0); } 534 538 | '{' CaseClausesOpt DefaultClause CaseClausesOpt '}' 535 539 { $$ = new CaseBlockNode($2, $3, $4); } … … 537 541 538 542 CaseClausesOpt: 539 /* nothing */ { $$ = 0 L; }543 /* nothing */ { $$ = 0; } 540 544 | CaseClauses 541 545 ; … … 547 551 548 552 CaseClause: 549 CASE Expr ':' { $$ = new CaseClauseNode($2 , 0L); }553 CASE Expr ':' { $$ = new CaseClauseNode($2); } 550 554 | CASE Expr ':' StatementList { $$ = new CaseClauseNode($2, $4); } 551 555 ; 552 556 553 557 DefaultClause: 554 DEFAULT ':' { $$ = new CaseClauseNode(0 L, 0L);; }555 | DEFAULT ':' StatementList { $$ = new CaseClauseNode(0 L, $3); }558 DEFAULT ':' { $$ = new CaseClauseNode(0); } 559 | DEFAULT ':' StatementList { $$ = new CaseClauseNode(0, $3); } 556 560 ; 557 561 … … 567 571 TryStatement: 568 572 TRY Block Catch { $$ = new TryNode($2, $3); } 569 | TRY Block Finally { $$ = new TryNode($2, 0L,$3); }573 | TRY Block Finally { $$ = new TryNode($2, $3); } 570 574 | TRY Block Catch Finally { $$ = new TryNode($2, $3, $4); } 571 575 ; … … 580 584 581 585 FunctionDeclaration: 582 FUNCTION IDENT '(' ')' FunctionBody { $$ = new FuncDeclNode(*$2, 0L,$5); }586 FUNCTION IDENT '(' ')' FunctionBody { $$ = new FuncDeclNode(*$2, $5); } 583 587 | FUNCTION IDENT '(' FormalParameterList ')' FunctionBody 584 588 { $$ = new FuncDeclNode(*$2, $4, $6); } 585 589 586 590 FunctionExpr: 587 FUNCTION '(' ')' FunctionBody { $$ = new FuncExprNode( 0L,$4); }591 FUNCTION '(' ')' FunctionBody { $$ = new FuncExprNode($4); } 588 592 | FUNCTION '(' FormalParameterList ')' FunctionBody 589 593 { $$ = new FuncExprNode($3, $5); } … … 597 601 598 602 FunctionBody: 599 '{' '}' /* TODO: spec ??? */ { $$ = new FunctionBodyNode(0 L);603 '{' '}' /* TODO: spec ??? */ { $$ = new FunctionBodyNode(0); 600 604 DBG($$, @1, @2);} 601 605 | '{' SourceElements '}' { $$ = new FunctionBodyNode($2); … … 604 608 605 609 Program: 606 /* nothing, empty script */ { $$ = new ProgramNode(0 L);610 /* nothing, empty script */ { $$ = new ProgramNode(0); 607 611 Parser::progNode = $$; } 608 612 | SourceElements { $$ = new ProgramNode($1); -
trunk/JavaScriptCore/kjs/nodes.cpp
r5291 r5356 342 342 // ------------------------------ ArrayNode ------------------------------------ 343 343 344 void ArrayNode::reverseElementList()345 {346 ElementNode *head = 0;347 ElementNode *next;348 for (ElementNode *n = element; n; n = next) {349 next = n->list;350 n->list = head;351 head = n;352 }353 element = head;354 }355 356 344 void ArrayNode::ref() 357 345 { … … 391 379 392 380 // ------------------------------ ObjectLiteralNode ---------------------------- 393 394 void ObjectLiteralNode::reverseList()395 {396 PropertyValueNode *head = 0;397 PropertyValueNode *next;398 for (PropertyValueNode *n = list; n; n = next) {399 next = n->list;400 n->list = head;401 head = n;402 }403 list = head;404 }405 381 406 382 void ObjectLiteralNode::ref() … … 561 537 // ------------------------------ ArgumentListNode ----------------------------- 562 538 563 ArgumentListNode::ArgumentListNode(Node *e) : list(0L), expr(e)564 {565 }566 567 ArgumentListNode::ArgumentListNode(ArgumentListNode *l, Node *e)568 : list(l), expr(e)569 {570 }571 572 539 void ArgumentListNode::ref() 573 540 { … … 613 580 614 581 // ------------------------------ ArgumentsNode -------------------------------- 615 616 void ArgumentsNode::reverseList()617 {618 ArgumentListNode *head = 0;619 ArgumentListNode *next;620 for (ArgumentListNode *n = list; n; n = next) {621 next = n->list;622 n->list = head;623 head = n;624 }625 list = head;626 }627 582 628 583 void ArgumentsNode::ref() … … 1513 1468 // ------------------------------ StatListNode --------------------------------- 1514 1469 1470 StatListNode::StatListNode(StatementNode *s) 1471 : statement(s), list(this) 1472 { 1473 setLoc(s->firstLine(), s->lastLine(), s->sourceId()); 1474 } 1475 1476 StatListNode::StatListNode(StatListNode *l, StatementNode *s) 1477 : statement(s), list(l->list) 1478 { 1479 l->list = this; 1480 setLoc(l->firstLine(), s->lastLine(), l->sourceId()); 1481 } 1482 1515 1483 void StatListNode::ref() 1516 1484 { … … 1701 1669 // ------------------------------ VarStatementNode ----------------------------- 1702 1670 1703 void VarStatementNode::reverseList()1704 {1705 VarDeclListNode *head = 0;1706 VarDeclListNode *next;1707 for (VarDeclListNode *n = list; n; n = next) {1708 next = n->list;1709 n->list = head;1710 head = n;1711 }1712 list = head;1713 }1714 1715 1671 void VarStatementNode::ref() 1716 1672 { … … 1745 1701 // ------------------------------ BlockNode ------------------------------------ 1746 1702 1747 void BlockNode::reverseList() 1748 { 1749 SourceElementsNode *head = 0; 1750 SourceElementsNode *next; 1751 for (SourceElementsNode *n = source; n; n = next) { 1752 next = n->elements; 1753 n->elements = head; 1754 head = n; 1755 } 1756 source = head; 1703 BlockNode::BlockNode(SourceElementsNode *s) 1704 { 1705 if (s) { 1706 source = s->elements; 1707 s->elements = 0; 1708 setLoc(s->firstLine(), s->lastLine(), s->sourceId()); 1709 } else { 1710 source = 0; 1711 } 1757 1712 } 1758 1713 … … 1988 1943 1989 1944 // ------------------------------ ForNode -------------------------------------- 1990 1991 VarDeclListNode *ForNode::reverseList(VarDeclListNode *list)1992 {1993 VarDeclListNode *head = 0;1994 VarDeclListNode *next;1995 for (VarDeclListNode *n = list; n; n = next) {1996 next = n->list;1997 n->list = head;1998 head = n;1999 }2000 return head;2001 }2002 1945 2003 1946 void ForNode::ref() … … 2275 2218 // ------------------------------ CaseClauseNode ------------------------------- 2276 2219 2277 void CaseClauseNode::reverseList()2278 {2279 StatListNode *head = 0;2280 StatListNode *next;2281 for (StatListNode *n = list; n; n = next) {2282 next = n->list;2283 n->list = head;2284 head = n;2285 }2286 list = head;2287 }2288 2289 2220 void CaseClauseNode::ref() 2290 2221 { … … 2370 2301 // ------------------------------ CaseBlockNode -------------------------------- 2371 2302 2372 void CaseBlockNode::reverseLists() 2373 { 2374 ClauseListNode *head = 0; 2375 ClauseListNode *next;2376 for (ClauseListNode *n = list1; n; n = next) {2377 next = n->nx;2378 n->nx = head;2379 head = n;2380 } 2381 list1 = head; 2382 2383 head = 0; 2384 for (ClauseListNode *n = list2; n; n = next) {2385 next = n->nx;2386 n->nx = head;2387 head = n;2388 }2389 list2 = head;2390 } 2391 2303 CaseBlockNode::CaseBlockNode(ClauseListNode *l1, CaseClauseNode *d, 2304 ClauseListNode *l2) 2305 { 2306 if (l1) { 2307 list1 = l1->nx; 2308 l1->nx = 0; 2309 } else { 2310 list1 = 0; 2311 } 2312 2313 def = d; 2314 2315 if (l2) { 2316 list2 = l2->nx; 2317 l2->nx = 0; 2318 } else { 2319 list2 = 0; 2320 } 2321 } 2322 2392 2323 void CaseBlockNode::ref() 2393 2324 { … … 2773 2704 // ------------------------------ FuncDeclNode --------------------------------- 2774 2705 2775 void FuncDeclNode::reverseParameterList()2776 {2777 ParameterNode *head = 0;2778 ParameterNode *next;2779 for (ParameterNode *n = param; n; n = next) {2780 next = n->next;2781 n->next = head;2782 head = n;2783 }2784 param = head;2785 }2786 2787 2706 void FuncDeclNode::ref() 2788 2707 { … … 2838 2757 // ------------------------------ FuncExprNode --------------------------------- 2839 2758 2840 void FuncExprNode::reverseParameterList()2841 {2842 ParameterNode *head = 0;2843 ParameterNode *next;2844 for (ParameterNode *n = param; n; n = next) {2845 next = n->next;2846 n->next = head;2847 head = n;2848 }2849 param = head;2850 }2851 2852 2759 void FuncExprNode::ref() 2853 2760 { … … 2886 2793 2887 2794 // ------------------------------ SourceElementsNode --------------------------- 2795 2796 SourceElementsNode::SourceElementsNode(StatementNode *s1) 2797 : element(s1), elements(this) 2798 { 2799 setLoc(s1->firstLine(), s1->lastLine(), s1->sourceId()); 2800 } 2801 2802 SourceElementsNode::SourceElementsNode(SourceElementsNode *s1, StatementNode *s2) 2803 : element(s2), elements(s1->elements) 2804 { 2805 s1->elements = this; 2806 setLoc(s1->firstLine(), s2->lastLine(), s1->sourceId()); 2807 } 2888 2808 2889 2809 void SourceElementsNode::ref() -
trunk/JavaScriptCore/kjs/nodes.h
r5209 r5356 210 210 class ElementNode : public Node { 211 211 public: 212 ElementNode(int e, Node *n) : list(0L), elision(e), node(n) { } 212 // list pointer is tail of a circular list, cracked in the ArrayNode ctor 213 ElementNode(int e, Node *n) : list(this), elision(e), node(n) { } 213 214 ElementNode(ElementNode *l, int e, Node *n) 214 : list(l ), elision(e), node(n) {}215 : list(l->list), elision(e), node(n) { l->list = this; } 215 216 virtual void ref(); 216 217 virtual bool deref(); … … 226 227 class ArrayNode : public Node { 227 228 public: 228 ArrayNode(int e) : element(0 L), elision(e), opt(true) { }229 ArrayNode(int e) : element(0), elision(e), opt(true) { } 229 230 ArrayNode(ElementNode *ele) 230 : element(ele ), elision(0), opt(false) { reverseElementList(); }231 : element(ele->list), elision(0), opt(false) { ele->list = 0; } 231 232 ArrayNode(int eli, ElementNode *ele) 232 : element(ele), elision(eli), opt(true) { reverseElementList(); } 233 virtual void ref(); 234 virtual bool deref(); 235 Value evaluate(ExecState *exec); 236 virtual void streamTo(SourceStream &s) const; 237 private: 238 void reverseElementList(); 233 : element(ele->list), elision(eli), opt(true) { ele->list = 0; } 234 virtual void ref(); 235 virtual bool deref(); 236 Value evaluate(ExecState *exec); 237 virtual void streamTo(SourceStream &s) const; 238 private: 239 239 ElementNode *element; 240 240 int elision; … … 242 242 }; 243 243 244 class ObjectLiteralNode : public Node {245 public:246 ObjectLiteralNode(PropertyValueNode *l) : list(l) { reverseList(); }247 virtual void ref();248 virtual bool deref();249 Value evaluate(ExecState *exec);250 virtual void streamTo(SourceStream &s) const;251 private:252 void reverseList();253 PropertyValueNode *list;254 };255 256 244 class PropertyValueNode : public Node { 257 245 public: 258 PropertyValueNode(PropertyNode *n, Node *a, PropertyValueNode *l = 0L) 259 : name(n), assign(a), list(l) { } 246 // list pointer is tail of a circular list, cracked in the ObjectLiteralNode ctor 247 PropertyValueNode(PropertyNode *n, Node *a) 248 : name(n), assign(a), list(this) { } 249 PropertyValueNode(PropertyNode *n, Node *a, PropertyValueNode *l) 250 : name(n), assign(a), list(l->list) { l->list = this; } 260 251 virtual void ref(); 261 252 virtual bool deref(); … … 269 260 }; 270 261 262 class ObjectLiteralNode : public Node { 263 public: 264 ObjectLiteralNode() : list(0) { } 265 ObjectLiteralNode(PropertyValueNode *l) : list(l->list) { l->list = 0; } 266 virtual void ref(); 267 virtual bool deref(); 268 Value evaluate(ExecState *exec); 269 virtual void streamTo(SourceStream &s) const; 270 private: 271 PropertyValueNode *list; 272 }; 273 271 274 class PropertyNode : public Node { 272 275 public: … … 308 311 class ArgumentListNode : public Node { 309 312 public: 310 ArgumentListNode(Node *e); 311 ArgumentListNode(ArgumentListNode *l, Node *e); 313 // list pointer is tail of a circular list, cracked in the ArgumentsNode ctor 314 ArgumentListNode(Node *e) : list(this), expr(e) { } 315 ArgumentListNode(ArgumentListNode *l, Node *e) 316 : list(l->list), expr(e) { l->list = this; } 312 317 virtual void ref(); 313 318 virtual bool deref(); … … 323 328 class ArgumentsNode : public Node { 324 329 public: 325 ArgumentsNode(ArgumentListNode *l) : list(l) { reverseList(); } 330 ArgumentsNode() : list(0) { } 331 ArgumentsNode(ArgumentListNode *l) 332 : list(l->list) { l->list = 0; } 326 333 virtual void ref(); 327 334 virtual bool deref(); … … 330 337 virtual void streamTo(SourceStream &s) const; 331 338 private: 332 void reverseList();333 339 ArgumentListNode *list; 334 340 }; … … 336 342 class NewExprNode : public Node { 337 343 public: 338 NewExprNode(Node *e) : expr(e), args(0 L) {}344 NewExprNode(Node *e) : expr(e), args(0) {} 339 345 NewExprNode(Node *e, ArgumentsNode *a) : expr(e), args(a) {} 340 346 virtual void ref(); … … 593 599 class StatListNode : public StatementNode { 594 600 public: 595 StatListNode(StatementNode *s) : statement(s), list(0L) { } 596 StatListNode(StatListNode *l, StatementNode *s) : statement(s), list(l) { } 601 // list pointer is tail of a circular list, cracked in the CaseClauseNode ctor 602 StatListNode(StatementNode *s); 603 StatListNode(StatListNode *l, StatementNode *s); 597 604 virtual void ref(); 598 605 virtual bool deref(); … … 632 639 class VarDeclListNode : public Node { 633 640 public: 634 VarDeclListNode(VarDeclNode *v) : list(0L), var(v) {} 635 VarDeclListNode(VarDeclListNode *l, VarDeclNode *v) : list(l), var(v) {} 641 // list pointer is tail of a circular list, cracked in the ForNode/VarStatementNode ctor 642 VarDeclListNode(VarDeclNode *v) : list(this), var(v) {} 643 VarDeclListNode(VarDeclListNode *l, VarDeclNode *v) 644 : list(l->list), var(v) { l->list = this; } 636 645 virtual void ref(); 637 646 virtual bool deref(); … … 648 657 class VarStatementNode : public StatementNode { 649 658 public: 650 VarStatementNode(VarDeclListNode *l) : list(l) { reverseList(); }651 virtual void ref();652 virtual bool deref();653 virtual Completion execute(ExecState *exec);654 virtual void processVarDecls(ExecState *exec);655 virtual void streamTo(SourceStream &s) const;656 private:657 void reverseList();659 VarStatementNode(VarDeclListNode *l) 660 : list(l->list) { l->list = 0; } 661 virtual void ref(); 662 virtual bool deref(); 663 virtual Completion execute(ExecState *exec); 664 virtual void processVarDecls(ExecState *exec); 665 virtual void streamTo(SourceStream &s) const; 666 private: 658 667 VarDeclListNode *list; 659 668 }; … … 661 670 class BlockNode : public StatementNode { 662 671 public: 663 BlockNode(SourceElementsNode *s) : source(s) { reverseList(); }672 BlockNode(SourceElementsNode *s); 664 673 virtual void ref(); 665 674 virtual bool deref(); … … 668 677 virtual void streamTo(SourceStream &s) const; 669 678 protected: 670 void reverseList();671 679 SourceElementsNode *source; 672 680 }; … … 735 743 expr1(e1), expr2(e2), expr3(e3), statement(s) {} 736 744 ForNode(VarDeclListNode *e1, Node *e2, Node *e3, StatementNode *s) : 737 expr1(reverseList(e1)), expr2(e2), expr3(e3), statement(s) {} 738 virtual void ref(); 739 virtual bool deref(); 740 virtual Completion execute(ExecState *exec); 741 virtual void processVarDecls(ExecState *exec); 742 virtual void streamTo(SourceStream &s) const; 743 private: 744 static VarDeclListNode *reverseList(VarDeclListNode *); 745 expr1(e1->list), expr2(e2), expr3(e3), statement(s) { e1->list = 0; } 746 virtual void ref(); 747 virtual bool deref(); 748 virtual Completion execute(ExecState *exec); 749 virtual void processVarDecls(ExecState *exec); 750 virtual void streamTo(SourceStream &s) const; 751 private: 745 752 Node *expr1, *expr2, *expr3; 746 753 StatementNode *statement; … … 808 815 }; 809 816 810 class CaseClauseNode: public Node { 811 public: 812 CaseClauseNode(Node *e, StatListNode *l) : expr(e), list(l) { reverseList(); } 817 class CaseClauseNode : public Node { 818 public: 819 CaseClauseNode(Node *e) : expr(e), list(0) { } 820 CaseClauseNode(Node *e, StatListNode *l) 821 : expr(e), list(l->list) { l->list = 0; } 813 822 virtual void ref(); 814 823 virtual bool deref(); … … 818 827 virtual void streamTo(SourceStream &s) const; 819 828 private: 820 void reverseList();821 829 Node *expr; 822 830 StatListNode *list; … … 825 833 class ClauseListNode : public Node { 826 834 public: 827 ClauseListNode(CaseClauseNode *c) : cl(c), nx(0L) { } 828 ClauseListNode(ClauseListNode *n, CaseClauseNode *c) : cl(c), nx(n) { } 835 // list pointer is tail of a circular list, cracked in the CaseBlockNode ctor 836 ClauseListNode(CaseClauseNode *c) : cl(c), nx(this) { } 837 ClauseListNode(ClauseListNode *n, CaseClauseNode *c) 838 : cl(c), nx(n->nx) { n->nx = this; } 829 839 virtual void ref(); 830 840 virtual bool deref(); … … 840 850 }; 841 851 842 class CaseBlockNode: public Node { 843 public: 844 CaseBlockNode(ClauseListNode *l1, CaseClauseNode *d, ClauseListNode *l2) 845 : list1(l1), def(d), list2(l2) { reverseLists(); } 852 class CaseBlockNode : public Node { 853 public: 854 CaseBlockNode(ClauseListNode *l1, CaseClauseNode *d, ClauseListNode *l2); 846 855 virtual void ref(); 847 856 virtual bool deref(); … … 851 860 virtual void streamTo(SourceStream &s) const; 852 861 private: 853 void reverseLists();854 862 ClauseListNode *list1; 855 863 CaseClauseNode *def; … … 922 930 class TryNode : public StatementNode { 923 931 public: 924 TryNode(StatementNode *b, Node *c = 0L, Node *f = 0L) 925 : block(b), _catch((CatchNode*)c), _final((FinallyNode*)f) {} 932 TryNode(StatementNode *b, CatchNode *c) 933 : block(b), _catch(c), _final(0) {} 934 TryNode(StatementNode *b, FinallyNode *f) 935 : block(b), _catch(0), _final(f) {} 936 TryNode(StatementNode *b, CatchNode *c, FinallyNode *f) 937 : block(b), _catch(c), _final(f) {} 926 938 virtual void ref(); 927 939 virtual bool deref(); … … 937 949 class ParameterNode : public Node { 938 950 public: 939 ParameterNode(const Identifier &i) : id(i), next(0L) { } 940 ParameterNode(ParameterNode *list, const Identifier &i) : id(i), next(list) { } 951 // list pointer is tail of a circular list, cracked in the FuncDeclNode/FuncExprNode ctor 952 ParameterNode(const Identifier &i) : id(i), next(this) { } 953 ParameterNode(ParameterNode *list, const Identifier &i) 954 : id(i), next(list->next) { list->next = this; } 941 955 virtual void ref(); 942 956 virtual bool deref(); … … 961 975 class FuncDeclNode : public StatementNode { 962 976 public: 977 FuncDeclNode(const Identifier &i, FunctionBodyNode *b) 978 : ident(i), param(0), body(b) { } 963 979 FuncDeclNode(const Identifier &i, ParameterNode *p, FunctionBodyNode *b) 964 : ident(i), param(p ), body(b) { reverseParameterList(); }980 : ident(i), param(p->next), body(b) { p->next = 0; } 965 981 virtual void ref(); 966 982 virtual bool deref(); … … 970 986 virtual void streamTo(SourceStream &s) const; 971 987 private: 972 void reverseParameterList();973 988 Identifier ident; 974 989 ParameterNode *param; … … 978 993 class FuncExprNode : public Node { 979 994 public: 995 FuncExprNode(FunctionBodyNode *b) : param(0), body(b) { } 980 996 FuncExprNode(ParameterNode *p, FunctionBodyNode *b) 981 : param(p), body(b) { reverseParameterList(); } 982 virtual void ref(); 983 virtual bool deref(); 984 Value evaluate(ExecState *exec); 985 virtual void streamTo(SourceStream &s) const; 986 private: 987 void reverseParameterList(); 997 : param(p->next), body(b) { p->next = 0; } 998 virtual void ref(); 999 virtual bool deref(); 1000 Value evaluate(ExecState *exec); 1001 virtual void streamTo(SourceStream &s) const; 1002 private: 988 1003 ParameterNode *param; 989 1004 FunctionBodyNode *body; … … 993 1008 class SourceElementsNode : public StatementNode { 994 1009 public: 995 SourceElementsNode(StatementNode *s1) { element = s1; elements = 0L; }996 SourceElementsNode(S ourceElementsNode *s1, StatementNode *s2)997 { elements = s1; element = s2; }1010 // list pointer is tail of a circular list, cracked in the BlockNode (or subclass) ctor 1011 SourceElementsNode(StatementNode *s1); 1012 SourceElementsNode(SourceElementsNode *s1, StatementNode *s2); 998 1013 virtual void ref(); 999 1014 virtual bool deref();
Note:
See TracChangeset
for help on using the changeset viewer.