Changeset 5314 in webkit for trunk/JavaScriptCore/kjs
- Timestamp:
- Oct 30, 2003, 10:42:38 AM (22 years ago)
- Location:
- trunk/JavaScriptCore/kjs
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/grammar.cpp
r4739 r5314 318 318 #if YYDEBUG != 0 319 319 static const short yyrline[] = { 0, 320 165, 167, 168, 169, 170, 171, 174, 180, 182, 18 4,321 18 5, 186, 187, 188, 191, 193, 194, 197, 199, 203,322 20 5, 208, 210, 213, 215, 219, 221, 222, 225, 227,323 22 8, 229, 230, 233, 235, 238, 240, 241, 242, 246,324 24 8, 251, 253, 256, 258, 261, 263, 264, 267, 269,325 2 70, 271, 272, 273, 274, 275, 276, 277, 278, 279,326 28 2, 284, 285, 286, 289, 291, 292, 295, 297, 298,327 29 9, 302, 304, 306, 308, 310, 312, 314, 318, 320,328 3 21, 322, 323, 326, 328, 331, 333, 336, 338, 341,329 34 3, 347, 349, 353, 355, 359, 361, 365, 367, 368,330 36 9, 370, 371, 372, 373, 374, 375, 376, 377, 380,331 38 2, 385, 387, 388, 389, 390, 391, 392, 393, 394,332 39 5, 396, 397, 398, 399, 402, 404, 407, 409, 412,333 41 5, 424, 426, 430, 432, 435, 439, 443, 446, 453,334 45 5, 459, 461, 462, 465, 468, 471, 475, 481, 483,335 48 6, 488, 492, 494, 501, 503, 507, 509, 517, 519,336 5 23, 524, 530, 535, 540, 542, 546, 548, 551, 553,337 5 56, 558, 561, 563, 566, 572, 576, 578, 579, 582,338 5 86, 590, 593, 597, 599, 604, 606, 609, 612, 616,339 6 19, 623, 625, 628, 630320 165, 167, 168, 169, 170, 171, 174, 180, 182, 183, 321 184, 185, 186, 187, 190, 192, 193, 196, 198, 202, 322 204, 207, 209, 212, 214, 218, 220, 221, 224, 226, 323 227, 228, 229, 232, 234, 237, 239, 240, 241, 244, 324 246, 249, 251, 254, 256, 259, 261, 262, 265, 267, 325 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 326 280, 282, 283, 284, 287, 289, 290, 293, 295, 296, 327 297, 300, 302, 304, 306, 308, 310, 312, 316, 318, 328 319, 320, 321, 324, 326, 329, 331, 334, 336, 339, 329 341, 345, 347, 351, 353, 357, 359, 363, 365, 366, 330 367, 368, 369, 370, 371, 372, 373, 374, 375, 378, 331 380, 383, 385, 386, 387, 388, 389, 390, 391, 392, 332 393, 394, 395, 396, 397, 400, 402, 405, 407, 410, 333 413, 422, 424, 428, 430, 433, 437, 441, 444, 451, 334 453, 457, 459, 460, 463, 466, 469, 472, 477, 479, 335 482, 484, 488, 489, 495, 497, 501, 502, 509, 511, 336 515, 516, 522, 527, 532, 534, 538, 540, 543, 545, 337 548, 550, 553, 555, 558, 563, 567, 569, 570, 573, 338 577, 581, 583, 586, 588, 593, 595, 598, 601, 605, 339 608, 612, 614, 617, 619 340 340 }; 341 341 #endif … … 1351 1351 case 5: 1352 1352 #line 170 "grammar.y" 1353 { yyval.node = new StringNode(yyvsp[0].ustr); delete yyvsp[0].ustr;;1353 { yyval.node = new StringNode(yyvsp[0].ustr); ; 1354 1354 break;} 1355 1355 case 6: … … 1371 1371 case 9: 1372 1372 #line 182 "grammar.y" 1373 { yyval.node = new ResolveNode(*yyvsp[0].ident); 1374 delete yyvsp[0].ident; ; 1373 { yyval.node = new ResolveNode(*yyvsp[0].ident); ; 1375 1374 break;} 1376 1375 case 12: 1376 #line 185 "grammar.y" 1377 { yyval.node = new GroupNode(yyvsp[-1].node); ; 1378 break;} 1379 case 13: 1377 1380 #line 186 "grammar.y" 1378 { yyval.node = new GroupNode(yyvsp[-1].node); ;1379 break;} 1380 case 1 3:1381 { yyval.node = new ObjectLiteralNode(0L); ; 1382 break;} 1383 case 14: 1381 1384 #line 187 "grammar.y" 1382 { yyval.node = new ObjectLiteralNode(0L); ;1383 break;}1384 case 14:1385 #line 188 "grammar.y"1386 1385 { yyval.node = new ObjectLiteralNode(yyvsp[-1].plist); ; 1387 1386 break;} 1388 1387 case 15: 1388 #line 191 "grammar.y" 1389 { yyval.node = new ArrayNode(yyvsp[-1].ival); ; 1390 break;} 1391 case 16: 1389 1392 #line 192 "grammar.y" 1390 { yyval.node = new ArrayNode(yyvsp[-1]. ival); ;1391 break;} 1392 case 1 6:1393 { yyval.node = new ArrayNode(yyvsp[-1].elm); ; 1394 break;} 1395 case 17: 1393 1396 #line 193 "grammar.y" 1394 { yyval.node = new ArrayNode(yyvsp[-1].elm); ;1395 break;}1396 case 17:1397 #line 194 "grammar.y"1398 1397 { yyval.node = new ArrayNode(yyvsp[-1].ival, yyvsp[-3].elm); ; 1399 1398 break;} 1400 1399 case 18: 1401 #line 19 8"grammar.y"1400 #line 197 "grammar.y" 1402 1401 { yyval.elm = new ElementNode(yyvsp[-1].ival, yyvsp[0].node); ; 1403 1402 break;} 1404 1403 case 19: 1405 #line 200"grammar.y"1404 #line 199 "grammar.y" 1406 1405 { yyval.elm = new ElementNode(yyvsp[-3].elm, yyvsp[-1].ival, yyvsp[0].node); ; 1407 1406 break;} 1408 1407 case 20: 1409 #line 20 4"grammar.y"1408 #line 203 "grammar.y" 1410 1409 { yyval.ival = 0; ; 1411 1410 break;} 1412 1411 case 22: 1412 #line 208 "grammar.y" 1413 { yyval.ival = 1; ; 1414 break;} 1415 case 23: 1413 1416 #line 209 "grammar.y" 1414 { yyval.ival = 1; ;1415 break;}1416 case 23:1417 #line 210 "grammar.y"1418 1417 { yyval.ival = yyvsp[-1].ival + 1; ; 1419 1418 break;} 1420 1419 case 24: 1421 #line 21 4"grammar.y"1420 #line 213 "grammar.y" 1422 1421 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node); ; 1423 1422 break;} 1424 1423 case 25: 1425 #line 21 6"grammar.y"1424 #line 215 "grammar.y" 1426 1425 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node, yyvsp[-4].plist); ; 1427 1426 break;} 1428 1427 case 26: 1428 #line 219 "grammar.y" 1429 { yyval.pnode = new PropertyNode(*yyvsp[0].ident); ; 1430 break;} 1431 case 27: 1429 1432 #line 220 "grammar.y" 1430 { yyval.pnode = new PropertyNode( *yyvsp[0].ident); delete yyvsp[0].ident; ;1431 break;} 1432 case 2 7:1433 { yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); ; 1434 break;} 1435 case 28: 1433 1436 #line 221 "grammar.y" 1434 { yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); delete yyvsp[0].ustr; ;1435 break;}1436 case 28:1437 #line 222 "grammar.y"1438 1437 { yyval.pnode = new PropertyNode(yyvsp[0].dval); ; 1439 1438 break;} 1440 1439 case 31: 1440 #line 227 "grammar.y" 1441 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ; 1442 break;} 1443 case 32: 1441 1444 #line 228 "grammar.y" 1442 { yyval.node = new AccessorNode 1(yyvsp[-3].node, yyvsp[-1].node); ;1443 break;} 1444 case 3 2:1445 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ; 1446 break;} 1447 case 33: 1445 1448 #line 229 "grammar.y" 1446 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); delete yyvsp[0].ident; ;1447 break;}1448 case 33:1449 #line 230 "grammar.y"1450 1449 { yyval.node = new NewExprNode(yyvsp[-1].node, yyvsp[0].args); ; 1451 1450 break;} 1452 1451 case 35: 1453 #line 23 5"grammar.y"1452 #line 234 "grammar.y" 1454 1453 { yyval.node = new NewExprNode(yyvsp[0].node); ; 1455 1454 break;} 1456 1455 case 36: 1456 #line 238 "grammar.y" 1457 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ; 1458 break;} 1459 case 37: 1457 1460 #line 239 "grammar.y" 1458 1461 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ; 1459 1462 break;} 1460 case 3 7:1463 case 38: 1461 1464 #line 240 "grammar.y" 1462 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;1463 break;} 1464 case 3 8:1465 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ; 1466 break;} 1467 case 39: 1465 1468 #line 241 "grammar.y" 1466 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ; 1467 break;} 1468 case 39: 1469 #line 242 "grammar.y" 1470 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); 1471 delete yyvsp[0].ident; ; 1469 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ; 1472 1470 break;} 1473 1471 case 40: 1474 #line 24 7"grammar.y"1472 #line 245 "grammar.y" 1475 1473 { yyval.args = new ArgumentsNode(0L); ; 1476 1474 break;} 1477 1475 case 41: 1478 #line 24 8"grammar.y"1476 #line 246 "grammar.y" 1479 1477 { yyval.args = new ArgumentsNode(yyvsp[-1].alist); ; 1480 1478 break;} 1481 1479 case 42: 1482 #line 25 2"grammar.y"1480 #line 250 "grammar.y" 1483 1481 { yyval.alist = new ArgumentListNode(yyvsp[0].node); ; 1484 1482 break;} 1485 1483 case 43: 1486 #line 25 3"grammar.y"1484 #line 251 "grammar.y" 1487 1485 { yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ; 1488 1486 break;} 1489 1487 case 47: 1490 #line 26 3"grammar.y"1488 #line 261 "grammar.y" 1491 1489 { yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ; 1492 1490 break;} 1493 1491 case 48: 1494 #line 26 4"grammar.y"1492 #line 262 "grammar.y" 1495 1493 { yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ; 1496 1494 break;} 1497 1495 case 50: 1496 #line 267 "grammar.y" 1497 { yyval.node = new DeleteNode(yyvsp[0].node); ; 1498 break;} 1499 case 51: 1500 #line 268 "grammar.y" 1501 { yyval.node = new VoidNode(yyvsp[0].node); ; 1502 break;} 1503 case 52: 1498 1504 #line 269 "grammar.y" 1499 { yyval.node = new DeleteNode(yyvsp[0].node); ;1500 break;} 1501 case 5 1:1505 { yyval.node = new TypeOfNode(yyvsp[0].node); ; 1506 break;} 1507 case 53: 1502 1508 #line 270 "grammar.y" 1503 { yyval.node = new VoidNode(yyvsp[0].node); ;1504 break;} 1505 case 5 2:1509 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ; 1510 break;} 1511 case 54: 1506 1512 #line 271 "grammar.y" 1507 { yyval.node = new TypeOfNode(yyvsp[0].node); ;1508 break;} 1509 case 5 3:1513 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ; 1514 break;} 1515 case 55: 1510 1516 #line 272 "grammar.y" 1511 { yyval.node = new PrefixNode(Op PlusPlus, yyvsp[0].node); ;1512 break;} 1513 case 5 4:1517 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ; 1518 break;} 1519 case 56: 1514 1520 #line 273 "grammar.y" 1515 { yyval.node = new PrefixNode(Op PlusPlus, yyvsp[0].node); ;1516 break;} 1517 case 5 5:1521 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ; 1522 break;} 1523 case 57: 1518 1524 #line 274 "grammar.y" 1519 { yyval.node = new PrefixNode(OpMinusMinus,yyvsp[0].node); ;1520 break;} 1521 case 5 6:1525 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ; 1526 break;} 1527 case 58: 1522 1528 #line 275 "grammar.y" 1523 { yyval.node = new PrefixNode(OpMinusMinus,yyvsp[0].node); ;1524 break;} 1525 case 5 7:1529 { yyval.node = new NegateNode(yyvsp[0].node); ; 1530 break;} 1531 case 59: 1526 1532 #line 276 "grammar.y" 1527 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ;1528 break;} 1529 case 58:1533 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ; 1534 break;} 1535 case 60: 1530 1536 #line 277 "grammar.y" 1531 { yyval.node = new NegateNode(yyvsp[0].node); ;1532 break;}1533 case 59:1534 #line 278 "grammar.y"1535 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ;1536 break;}1537 case 60:1538 #line 279 "grammar.y"1539 1537 { yyval.node = new LogicalNotNode(yyvsp[0].node); ; 1540 1538 break;} 1541 1539 case 62: 1540 #line 282 "grammar.y" 1541 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ; 1542 break;} 1543 case 63: 1544 #line 283 "grammar.y" 1545 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ; 1546 break;} 1547 case 64: 1542 1548 #line 284 "grammar.y" 1543 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;1544 break;}1545 case 63:1546 #line 285 "grammar.y"1547 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;1548 break;}1549 case 64:1550 #line 286 "grammar.y"1551 1549 { yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ; 1552 1550 break;} 1553 1551 case 66: 1554 #line 2 91"grammar.y"1552 #line 289 "grammar.y" 1555 1553 { yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '+'); ; 1556 1554 break;} 1557 1555 case 67: 1558 #line 29 2"grammar.y"1556 #line 290 "grammar.y" 1559 1557 { yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '-'); ; 1560 1558 break;} 1561 1559 case 69: 1560 #line 295 "grammar.y" 1561 { yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ; 1562 break;} 1563 case 70: 1564 #line 296 "grammar.y" 1565 { yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ; 1566 break;} 1567 case 71: 1562 1568 #line 297 "grammar.y" 1563 { yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;1564 break;}1565 case 70:1566 #line 298 "grammar.y"1567 { yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;1568 break;}1569 case 71:1570 #line 299 "grammar.y"1571 1569 { yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ; 1572 1570 break;} 1573 1571 case 73: 1572 #line 303 "grammar.y" 1573 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ; 1574 break;} 1575 case 74: 1574 1576 #line 305 "grammar.y" 1575 { yyval.node = new RelationalNode(yyvsp[-2].node, Op Less, yyvsp[0].node); ;1576 break;} 1577 case 7 4:1577 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ; 1578 break;} 1579 case 75: 1578 1580 #line 307 "grammar.y" 1579 { yyval.node = new RelationalNode(yyvsp[-2].node, Op Greater, yyvsp[0].node); ;1580 break;} 1581 case 7 5:1581 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ; 1582 break;} 1583 case 76: 1582 1584 #line 309 "grammar.y" 1583 { yyval.node = new RelationalNode(yyvsp[-2].node, Op LessEq, yyvsp[0].node); ;1584 break;} 1585 case 7 6:1585 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ; 1586 break;} 1587 case 77: 1586 1588 #line 311 "grammar.y" 1587 { yyval.node = new RelationalNode(yyvsp[-2].node, Op GreaterEq, yyvsp[0].node); ;1588 break;} 1589 case 7 7:1589 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ; 1590 break;} 1591 case 78: 1590 1592 #line 313 "grammar.y" 1591 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;1592 break;}1593 case 78:1594 #line 315 "grammar.y"1595 1593 { yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ; 1596 1594 break;} 1597 1595 case 80: 1596 #line 318 "grammar.y" 1597 { yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ; 1598 break;} 1599 case 81: 1600 #line 319 "grammar.y" 1601 { yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ; 1602 break;} 1603 case 82: 1598 1604 #line 320 "grammar.y" 1599 { yyval.node = new EqualNode(yyvsp[-2].node, Op EqEq, yyvsp[0].node); ;1600 break;} 1601 case 8 1:1605 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ; 1606 break;} 1607 case 83: 1602 1608 #line 321 "grammar.y" 1603 { yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;1604 break;}1605 case 82:1606 #line 322 "grammar.y"1607 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;1608 break;}1609 case 83:1610 #line 323 "grammar.y"1611 1609 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);; 1612 1610 break;} 1613 1611 case 85: 1614 #line 32 8"grammar.y"1612 #line 326 "grammar.y" 1615 1613 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ; 1616 1614 break;} 1617 1615 case 87: 1618 #line 33 3"grammar.y"1616 #line 331 "grammar.y" 1619 1617 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ; 1620 1618 break;} 1621 1619 case 89: 1622 #line 33 8"grammar.y"1620 #line 336 "grammar.y" 1623 1621 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ; 1624 1622 break;} 1625 1623 case 91: 1626 #line 34 4"grammar.y"1624 #line 342 "grammar.y" 1627 1625 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ; 1628 1626 break;} 1629 1627 case 93: 1630 #line 3 50"grammar.y"1628 #line 348 "grammar.y" 1631 1629 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ; 1632 1630 break;} 1633 1631 case 95: 1634 #line 35 6"grammar.y"1632 #line 354 "grammar.y" 1635 1633 { yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ; 1636 1634 break;} 1637 1635 case 97: 1638 #line 36 2"grammar.y"1636 #line 360 "grammar.y" 1639 1637 { yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);; 1640 1638 break;} 1641 1639 case 98: 1640 #line 364 "grammar.y" 1641 { yyval.op = OpEqual; ; 1642 break;} 1643 case 99: 1644 #line 365 "grammar.y" 1645 { yyval.op = OpPlusEq; ; 1646 break;} 1647 case 100: 1642 1648 #line 366 "grammar.y" 1643 { yyval.op = Op Equal; ;1644 break;} 1645 case 99:1649 { yyval.op = OpMinusEq; ; 1650 break;} 1651 case 101: 1646 1652 #line 367 "grammar.y" 1647 { yyval.op = Op PlusEq; ;1648 break;} 1649 case 10 0:1653 { yyval.op = OpMultEq; ; 1654 break;} 1655 case 102: 1650 1656 #line 368 "grammar.y" 1651 { yyval.op = Op MinusEq; ;1652 break;} 1653 case 10 1:1657 { yyval.op = OpDivEq; ; 1658 break;} 1659 case 103: 1654 1660 #line 369 "grammar.y" 1655 { yyval.op = Op MultEq; ;1656 break;} 1657 case 10 2:1661 { yyval.op = OpLShift; ; 1662 break;} 1663 case 104: 1658 1664 #line 370 "grammar.y" 1659 { yyval.op = Op DivEq; ;1660 break;} 1661 case 10 3:1665 { yyval.op = OpRShift; ; 1666 break;} 1667 case 105: 1662 1668 #line 371 "grammar.y" 1663 { yyval.op = Op LShift; ;1664 break;} 1665 case 10 4:1669 { yyval.op = OpURShift; ; 1670 break;} 1671 case 106: 1666 1672 #line 372 "grammar.y" 1667 { yyval.op = Op RShift; ;1668 break;} 1669 case 10 5:1673 { yyval.op = OpAndEq; ; 1674 break;} 1675 case 107: 1670 1676 #line 373 "grammar.y" 1671 { yyval.op = Op URShift; ;1672 break;} 1673 case 10 6:1677 { yyval.op = OpXOrEq; ; 1678 break;} 1679 case 108: 1674 1680 #line 374 "grammar.y" 1675 { yyval.op = Op AndEq; ;1676 break;} 1677 case 10 7:1681 { yyval.op = OpOrEq; ; 1682 break;} 1683 case 109: 1678 1684 #line 375 "grammar.y" 1679 { yyval.op = OpXOrEq; ;1680 break;}1681 case 108:1682 #line 376 "grammar.y"1683 { yyval.op = OpOrEq; ;1684 break;}1685 case 109:1686 #line 377 "grammar.y"1687 1685 { yyval.op = OpModEq; ; 1688 1686 break;} 1689 1687 case 111: 1690 #line 38 2"grammar.y"1688 #line 380 "grammar.y" 1691 1689 { yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ; 1692 1690 break;} 1693 1691 case 126: 1694 #line 40 3"grammar.y"1692 #line 401 "grammar.y" 1695 1693 { yyval.stat = new BlockNode(0L); DBG(yyval.stat, yylsp[0], yylsp[0]); ; 1696 1694 break;} 1697 1695 case 127: 1698 #line 40 4"grammar.y"1696 #line 402 "grammar.y" 1699 1697 { yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ; 1700 1698 break;} 1701 1699 case 128: 1702 #line 40 8"grammar.y"1700 #line 406 "grammar.y" 1703 1701 { yyval.slist = new StatListNode(yyvsp[0].stat); ; 1704 1702 break;} 1705 1703 case 129: 1706 #line 40 9"grammar.y"1704 #line 407 "grammar.y" 1707 1705 { yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ; 1708 1706 break;} 1709 1707 case 130: 1710 #line 41 3"grammar.y"1708 #line 411 "grammar.y" 1711 1709 { yyval.stat = new VarStatementNode(yyvsp[-1].vlist); 1712 1710 DBG(yyval.stat, yylsp[-2], yylsp[0]); ; 1713 1711 break;} 1714 1712 case 131: 1715 #line 41 5"grammar.y"1713 #line 413 "grammar.y" 1716 1714 { if (automatic()) { 1717 1715 yyval.stat = new VarStatementNode(yyvsp[-1].vlist); … … 1723 1721 break;} 1724 1722 case 132: 1723 #line 423 "grammar.y" 1724 { yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ; 1725 break;} 1726 case 133: 1725 1727 #line 425 "grammar.y" 1726 { yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;1727 break;}1728 case 133:1729 #line 427 "grammar.y"1730 1728 { yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ; 1731 1729 break;} 1732 1730 case 134: 1733 #line 4 31"grammar.y"1734 { yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); delete yyvsp[0].ident;;1731 #line 429 "grammar.y" 1732 { yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); ; 1735 1733 break;} 1736 1734 case 135: 1737 #line 43 2"grammar.y"1738 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); delete yyvsp[-1].ident;;1735 #line 430 "grammar.y" 1736 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); ; 1739 1737 break;} 1740 1738 case 136: 1741 #line 43 6"grammar.y"1739 #line 434 "grammar.y" 1742 1740 { yyval.init = new AssignExprNode(yyvsp[0].node); ; 1743 1741 break;} 1744 1742 case 137: 1745 #line 4 40"grammar.y"1743 #line 438 "grammar.y" 1746 1744 { yyval.stat = new EmptyStatementNode(); ; 1747 1745 break;} 1748 1746 case 138: 1749 #line 44 4"grammar.y"1747 #line 442 "grammar.y" 1750 1748 { yyval.stat = new ExprStatementNode(yyvsp[-1].node); 1751 1749 DBG(yyval.stat, yylsp[-1], yylsp[0]); ; 1752 1750 break;} 1753 1751 case 139: 1754 #line 44 6"grammar.y"1752 #line 444 "grammar.y" 1755 1753 { if (automatic()) { 1756 1754 yyval.stat = new ExprStatementNode(yyvsp[-1].node); … … 1760 1758 break;} 1761 1759 case 140: 1760 #line 452 "grammar.y" 1761 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ; 1762 break;} 1763 case 141: 1762 1764 #line 454 "grammar.y" 1763 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;1764 break;}1765 case 141:1766 #line 456 "grammar.y"1767 1765 { yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ; 1768 1766 break;} 1769 1767 case 142: 1770 #line 4 60"grammar.y"1768 #line 458 "grammar.y" 1771 1769 { yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);; 1772 1770 break;} 1773 1771 case 143: 1772 #line 459 "grammar.y" 1773 { yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ; 1774 break;} 1775 case 144: 1774 1776 #line 461 "grammar.y" 1775 { yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;1776 break;}1777 case 144:1778 #line 463 "grammar.y"1779 1777 { yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat); 1780 1778 DBG(yyval.stat,yylsp[-8],yylsp[-1]); ; 1781 1779 break;} 1782 1780 case 145: 1783 #line 46 6"grammar.y"1781 #line 464 "grammar.y" 1784 1782 { yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat); 1785 1783 DBG(yyval.stat,yylsp[-9],yylsp[-1]); ; 1786 1784 break;} 1787 1785 case 146: 1788 #line 46 9"grammar.y"1786 #line 467 "grammar.y" 1789 1787 { yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat); 1790 1788 DBG(yyval.stat,yylsp[-6],yylsp[-1]); ; 1791 1789 break;} 1792 1790 case 147: 1793 #line 47 2"grammar.y"1791 #line 470 "grammar.y" 1794 1792 { yyval.stat = new ForInNode(*yyvsp[-4].ident,0L,yyvsp[-2].node,yyvsp[0].stat); 1795 DBG(yyval.stat,yylsp[-7],yylsp[-1]); 1796 delete yyvsp[-4].ident; ; 1793 DBG(yyval.stat,yylsp[-7],yylsp[-1]); ; 1797 1794 break;} 1798 1795 case 148: 1799 #line 47 6"grammar.y"1796 #line 473 "grammar.y" 1800 1797 { yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat); 1801 DBG(yyval.stat,yylsp[-8],yylsp[-1]); 1802 delete yyvsp[-5].ident; ; 1798 DBG(yyval.stat,yylsp[-8],yylsp[-1]); ; 1803 1799 break;} 1804 1800 case 149: 1805 #line 4 82"grammar.y"1801 #line 478 "grammar.y" 1806 1802 { yyval.node = 0L; ; 1807 1803 break;} 1808 1804 case 151: 1809 #line 48 7"grammar.y"1805 #line 483 "grammar.y" 1810 1806 { yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ; 1811 1807 break;} 1812 1808 case 152: 1813 #line 48 8"grammar.y"1809 #line 484 "grammar.y" 1814 1810 { if (automatic()) { 1815 1811 yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); … … 1818 1814 break;} 1819 1815 case 153: 1820 #line 492 "grammar.y" 1821 { yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); 1822 delete yyvsp[-1].ident; ; 1816 #line 488 "grammar.y" 1817 { yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ; 1823 1818 break;} 1824 1819 case 154: 1825 #line 4 94"grammar.y"1820 #line 489 "grammar.y" 1826 1821 { if (automatic()) { 1827 1822 yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]); 1828 delete yyvsp[-1].ident;1829 1823 } else 1830 1824 YYABORT; ; 1831 1825 break;} 1832 1826 case 155: 1833 #line 502"grammar.y"1827 #line 496 "grammar.y" 1834 1828 { yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ; 1835 1829 break;} 1836 1830 case 156: 1837 #line 503"grammar.y"1831 #line 497 "grammar.y" 1838 1832 { if (automatic()) { 1839 1833 yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]); … … 1842 1836 break;} 1843 1837 case 157: 1844 #line 507 "grammar.y" 1845 { yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); 1846 delete yyvsp[-1].ident; ; 1838 #line 501 "grammar.y" 1839 { yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ; 1847 1840 break;} 1848 1841 case 158: 1849 #line 50 9"grammar.y"1842 #line 502 "grammar.y" 1850 1843 { if (automatic()) { 1851 1844 yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]); 1852 delete yyvsp[-1].ident;1853 1845 } else 1854 1846 YYABORT; … … 1856 1848 break;} 1857 1849 case 159: 1858 #line 51 8"grammar.y"1850 #line 510 "grammar.y" 1859 1851 { yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[0]); ; 1860 1852 break;} 1861 1853 case 160: 1862 #line 51 9"grammar.y"1854 #line 511 "grammar.y" 1863 1855 { if (automatic()) { 1864 1856 yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[-1]); … … 1867 1859 break;} 1868 1860 case 161: 1869 #line 5 23"grammar.y"1861 #line 515 "grammar.y" 1870 1862 { yyval.stat = new ReturnNode(yyvsp[-1].node); ; 1871 1863 break;} 1872 1864 case 162: 1873 #line 5 24"grammar.y"1865 #line 516 "grammar.y" 1874 1866 { if (automatic()) 1875 1867 yyval.stat = new ReturnNode(yyvsp[-1].node); … … 1878 1870 break;} 1879 1871 case 163: 1880 #line 5 31"grammar.y"1872 #line 523 "grammar.y" 1881 1873 { yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat); 1882 1874 DBG(yyval.stat, yylsp[-4], yylsp[-1]); ; 1883 1875 break;} 1884 1876 case 164: 1885 #line 5 36"grammar.y"1877 #line 528 "grammar.y" 1886 1878 { yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk); 1887 1879 DBG(yyval.stat, yylsp[-4], yylsp[-1]); ; 1888 1880 break;} 1889 1881 case 165: 1890 #line 5 41"grammar.y"1882 #line 533 "grammar.y" 1891 1883 { yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0L, 0L); ; 1892 1884 break;} 1893 1885 case 166: 1894 #line 5 43"grammar.y"1886 #line 535 "grammar.y" 1895 1887 { yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ; 1896 1888 break;} 1897 1889 case 167: 1898 #line 5 47"grammar.y"1890 #line 539 "grammar.y" 1899 1891 { yyval.clist = 0L; ; 1900 1892 break;} 1901 1893 case 169: 1902 #line 5 52"grammar.y"1894 #line 544 "grammar.y" 1903 1895 { yyval.clist = new ClauseListNode(yyvsp[0].ccl); ; 1904 1896 break;} 1905 1897 case 170: 1906 #line 5 53"grammar.y"1898 #line 545 "grammar.y" 1907 1899 { yyval.clist = new ClauseListNode(yyvsp[-1].clist, yyvsp[0].ccl); ; 1908 1900 break;} 1909 1901 case 171: 1910 #line 5 57"grammar.y"1902 #line 549 "grammar.y" 1911 1903 { yyval.ccl = new CaseClauseNode(yyvsp[-1].node, 0L); ; 1912 1904 break;} 1913 1905 case 172: 1914 #line 55 8"grammar.y"1906 #line 550 "grammar.y" 1915 1907 { yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ; 1916 1908 break;} 1917 1909 case 173: 1918 #line 5 62"grammar.y"1910 #line 554 "grammar.y" 1919 1911 { yyval.ccl = new CaseClauseNode(0L, 0L);; ; 1920 1912 break;} 1921 1913 case 174: 1922 #line 5 63"grammar.y"1914 #line 555 "grammar.y" 1923 1915 { yyval.ccl = new CaseClauseNode(0L, yyvsp[0].slist); ; 1924 1916 break;} 1925 1917 case 175: 1926 #line 5 67"grammar.y"1918 #line 559 "grammar.y" 1927 1919 { yyvsp[0].stat->pushLabel(*yyvsp[-2].ident); 1928 yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat); 1929 delete yyvsp[-2].ident; ; 1920 yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat); ; 1930 1921 break;} 1931 1922 case 176: 1932 #line 5 73"grammar.y"1923 #line 564 "grammar.y" 1933 1924 { yyval.stat = new ThrowNode(yyvsp[-1].node); ; 1934 1925 break;} 1935 1926 case 177: 1936 #line 5 77"grammar.y"1927 #line 568 "grammar.y" 1937 1928 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].node); ; 1938 1929 break;} 1939 1930 case 178: 1931 #line 569 "grammar.y" 1932 { yyval.stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ; 1933 break;} 1934 case 179: 1935 #line 570 "grammar.y" 1936 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ; 1937 break;} 1938 case 180: 1939 #line 574 "grammar.y" 1940 { yyval.node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); ; 1941 break;} 1942 case 181: 1940 1943 #line 578 "grammar.y" 1941 { yyval. stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ;1942 break;} 1943 case 1 79:1944 #line 5 79"grammar.y"1945 { yyval. stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ;1946 break;} 1947 case 18 0:1948 #line 58 3"grammar.y"1949 { yyval. node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); delete yyvsp[-2].ident; ;1950 break;} 1951 case 18 1:1944 { yyval.node = new FinallyNode(yyvsp[0].stat); ; 1945 break;} 1946 case 182: 1947 #line 582 "grammar.y" 1948 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, 0L, yyvsp[0].body); ; 1949 break;} 1950 case 183: 1951 #line 584 "grammar.y" 1952 { yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); ; 1953 break;} 1954 case 184: 1952 1955 #line 587 "grammar.y" 1953 { yyval.node = new FinallyNode(yyvsp[0].stat); ; 1954 break;} 1955 case 182: 1956 #line 591 "grammar.y" 1957 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, 0L, yyvsp[0].body); 1958 delete yyvsp[-3].ident; ; 1959 break;} 1960 case 183: 1956 { yyval.node = new FuncExprNode(0L, yyvsp[0].body); ; 1957 break;} 1958 case 185: 1959 #line 589 "grammar.y" 1960 { yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ; 1961 break;} 1962 case 186: 1961 1963 #line 594 "grammar.y" 1962 { yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); 1963 delete yyvsp[-4].ident; ; 1964 break;} 1965 case 184: 1966 #line 598 "grammar.y" 1967 { yyval.node = new FuncExprNode(0L, yyvsp[0].body); ; 1968 break;} 1969 case 185: 1970 #line 600 "grammar.y" 1971 { yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ; 1972 break;} 1973 case 186: 1974 #line 605 "grammar.y" 1975 { yyval.param = new ParameterNode(*yyvsp[0].ident); delete yyvsp[0].ident; ; 1964 { yyval.param = new ParameterNode(*yyvsp[0].ident); ; 1976 1965 break;} 1977 1966 case 187: 1978 #line 606"grammar.y"1979 { yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); delete yyvsp[0].ident;;1967 #line 595 "grammar.y" 1968 { yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ; 1980 1969 break;} 1981 1970 case 188: 1982 #line 610"grammar.y"1971 #line 599 "grammar.y" 1983 1972 { yyval.body = new FunctionBodyNode(0L); 1984 1973 DBG(yyval.body, yylsp[-1], yylsp[0]);; 1985 1974 break;} 1986 1975 case 189: 1987 #line 6 12"grammar.y"1976 #line 601 "grammar.y" 1988 1977 { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs); 1989 1978 DBG(yyval.body, yylsp[-2], yylsp[0]);; 1990 1979 break;} 1991 1980 case 190: 1992 #line 6 17"grammar.y"1981 #line 606 "grammar.y" 1993 1982 { yyval.prog = new ProgramNode(0L); 1994 1983 Parser::progNode = yyval.prog; ; 1995 1984 break;} 1996 1985 case 191: 1997 #line 6 19"grammar.y"1986 #line 608 "grammar.y" 1998 1987 { yyval.prog = new ProgramNode(yyvsp[0].srcs); 1999 1988 Parser::progNode = yyval.prog; ; 2000 1989 break;} 2001 1990 case 192: 2002 #line 6 24"grammar.y"1991 #line 613 "grammar.y" 2003 1992 { yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ; 2004 1993 break;} 2005 1994 case 193: 2006 #line 6 25"grammar.y"1995 #line 614 "grammar.y" 2007 1996 { yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ; 2008 1997 break;} 2009 1998 case 194: 2010 #line 6 29"grammar.y"1999 #line 618 "grammar.y" 2011 2000 { yyval.stat = yyvsp[0].stat; ; 2012 2001 break;} 2013 2002 case 195: 2014 #line 6 30"grammar.y"2003 #line 619 "grammar.y" 2015 2004 { yyval.stat = yyvsp[0].func; ; 2016 2005 break;} … … 2238 2227 return 1; 2239 2228 } 2240 #line 6 33"grammar.y"2241 2242 2243 int yyerror (const char * ) /* Called by yyparse on error */2229 #line 622 "grammar.y" 2230 2231 2232 int yyerror (const char * /* s */) /* Called by yyparse on error */ 2244 2233 { 2245 //fprintf(stderr, "ERROR: %s at line %d\n",2246 // s, KJScript::lexer()->lineNo());2234 // fprintf(stderr, "ERROR: %s at line %d\n", 2235 // s, KJS::Lexer::curr()->lineNo()); 2247 2236 return 1; 2248 2237 } -
trunk/JavaScriptCore/kjs/grammar.y
r4739 r5314 168 168 | FALSETOKEN { $$ = new BooleanNode(false); } 169 169 | NUMBER { $$ = new NumberNode($1); } 170 | STRING { $$ = new StringNode($1); delete $1;}170 | STRING { $$ = new StringNode($1); } 171 171 | '/' /* a RegExp ? */ { Lexer *l = Lexer::curr(); 172 172 if (!l->scanRegExp()) YYABORT; … … 180 180 PrimaryExpr: 181 181 THIS { $$ = new ThisNode(); } 182 | IDENT { $$ = new ResolveNode(*$1); 183 delete $1; } 182 | IDENT { $$ = new ResolveNode(*$1); } 184 183 | Literal 185 184 | ArrayLiteral … … 218 217 219 218 PropertyName: 220 IDENT { $$ = new PropertyNode(*$1); delete $1;}221 | STRING { $$ = new PropertyNode(Identifier(*$1)); delete $1;}219 IDENT { $$ = new PropertyNode(*$1); } 220 | STRING { $$ = new PropertyNode(Identifier(*$1)); } 222 221 | NUMBER { $$ = new PropertyNode($1); } 223 222 ; … … 227 226 | FunctionExpr 228 227 | MemberExpr '[' Expr ']' { $$ = new AccessorNode1($1, $3); } 229 | MemberExpr '.' IDENT { $$ = new AccessorNode2($1, *$3); delete $3;}228 | MemberExpr '.' IDENT { $$ = new AccessorNode2($1, *$3); } 230 229 | NEW MemberExpr Arguments { $$ = new NewExprNode($2, $3); } 231 230 ; … … 240 239 | CallExpr Arguments { $$ = new FunctionCallNode($1, $2); } 241 240 | CallExpr '[' Expr ']' { $$ = new AccessorNode1($1, $3); } 242 | CallExpr '.' IDENT { $$ = new AccessorNode2($1, *$3); 243 delete $3; } 241 | CallExpr '.' IDENT { $$ = new AccessorNode2($1, *$3); } 244 242 ; 245 243 … … 429 427 430 428 VariableDeclaration: 431 IDENT { $$ = new VarDeclNode(*$1, 0); delete $1;}432 | IDENT Initializer { $$ = new VarDeclNode(*$1, $2); delete $1;}429 IDENT { $$ = new VarDeclNode(*$1, 0); } 430 | IDENT Initializer { $$ = new VarDeclNode(*$1, $2); } 433 431 ; 434 432 … … 471 469 | FOR '(' VAR IDENT IN Expr ')' 472 470 Statement { $$ = new ForInNode(*$4,0L,$6,$8); 473 DBG($$,@1,@7); 474 delete $4; } 471 DBG($$,@1,@7); } 475 472 | FOR '(' VAR IDENT Initializer IN Expr ')' 476 473 Statement { $$ = new ForInNode(*$4,$5,$7,$9); 477 DBG($$,@1,@8); 478 delete $4; } 474 DBG($$,@1,@8); } 479 475 ; 480 476 … … 490 486 } else 491 487 YYABORT; } 492 | CONTINUE IDENT ';' { $$ = new ContinueNode(*$2); DBG($$,@1,@3); 493 delete $2; } 488 | CONTINUE IDENT ';' { $$ = new ContinueNode(*$2); DBG($$,@1,@3); } 494 489 | CONTINUE IDENT error { if (automatic()) { 495 490 $$ = new ContinueNode(*$2);DBG($$,@1,@2); 496 delete $2;497 491 } else 498 492 YYABORT; } … … 505 499 } else 506 500 YYABORT; } 507 | BREAK IDENT ';' { $$ = new BreakNode(*$2); DBG($$,@1,@3); 508 delete $2; } 501 | BREAK IDENT ';' { $$ = new BreakNode(*$2); DBG($$,@1,@3); } 509 502 | BREAK IDENT error { if (automatic()) { 510 503 $$ = new BreakNode(*$2); DBG($$,@1,@2); 511 delete $2;512 504 } else 513 505 YYABORT; … … 566 558 LabelledStatement: 567 559 IDENT ':' Statement { $3->pushLabel(*$1); 568 $$ = new LabelNode(*$1, $3); 569 delete $1; } 560 $$ = new LabelNode(*$1, $3); } 570 561 ; 571 562 … … 581 572 582 573 Catch: 583 CATCH '(' IDENT ')' Block { $$ = new CatchNode(*$3, $5); delete $3;}574 CATCH '(' IDENT ')' Block { $$ = new CatchNode(*$3, $5); } 584 575 ; 585 576 … … 589 580 590 581 FunctionDeclaration: 591 FUNCTION IDENT '(' ')' FunctionBody { $$ = new FuncDeclNode(*$2, 0L, $5); 592 delete $2; } 582 FUNCTION IDENT '(' ')' FunctionBody { $$ = new FuncDeclNode(*$2, 0L, $5); } 593 583 | FUNCTION IDENT '(' FormalParameterList ')' FunctionBody 594 { $$ = new FuncDeclNode(*$2, $4, $6); 595 delete $2; } 584 { $$ = new FuncDeclNode(*$2, $4, $6); } 596 585 597 586 FunctionExpr: … … 603 592 604 593 FormalParameterList: 605 IDENT { $$ = new ParameterNode(*$1); delete $1;}606 | FormalParameterList ',' IDENT { $$ = new ParameterNode($1, *$3); delete $3;}594 IDENT { $$ = new ParameterNode(*$1); } 595 | FormalParameterList ',' IDENT { $$ = new ParameterNode($1, *$3); } 607 596 ; 608 597 … … 633 622 %% 634 623 635 int yyerror (const char * ) /* Called by yyparse on error */624 int yyerror (const char * /* s */) /* Called by yyparse on error */ 636 625 { 637 //fprintf(stderr, "ERROR: %s at line %d\n",638 // s, KJScript::lexer()->lineNo());626 // fprintf(stderr, "ERROR: %s at line %d\n", 627 // s, KJS::Lexer::curr()->lineNo()); 639 628 return 1; 640 629 } -
trunk/JavaScriptCore/kjs/internal.cpp
r5239 r5314 448 448 //kjsyydebug=1; 449 449 int parseError = kjsyyparse(); 450 Lexer::curr()->doneParsing(); 450 451 ProgramNode *prog = progNode; 451 452 progNode = 0; -
trunk/JavaScriptCore/kjs/lexer.cpp
r5083 r5314 68 68 bol(true), 69 69 #endif 70 current(0), next1(0), next2(0), next3(0) 70 current(0), next1(0), next2(0), next3(0), 71 strings(0), numStrings(0), stringsCapacity(0), 72 identifiers(0), numIdentifiers(0), identifiersCapacity(0) 71 73 { 72 74 // allocate space for read buffers … … 74 76 buffer16 = new UChar[size16]; 75 77 currLexer = this; 76 77 78 } 78 79 79 80 Lexer::~Lexer() 80 81 { 82 doneParsing(); 81 83 delete [] buffer8; 82 84 delete [] buffer16; … … 503 505 break; 504 506 } 505 /* TODO: close leak on parse error. same holds true for String */ 506 kjsyylval.ident = new KJS::Identifier(buffer16, pos16); 507 kjsyylval.ident = makeIdentifier(buffer16, pos16); 507 508 token = IDENT; 508 509 break; … … 519 520 break; 520 521 case String: 521 kjsyylval.ustr = newUString(buffer16, pos16);522 kjsyylval.ustr = makeUString(buffer16, pos16); 522 523 token = STRING; 523 524 break; … … 817 818 return true; 818 819 } 820 821 822 void Lexer::doneParsing() 823 { 824 for (unsigned i = 0; i < numIdentifiers; i++) { 825 delete identifiers[i]; 826 } 827 free (identifiers); 828 identifiers = 0; 829 numIdentifiers = 0; 830 identifiersCapacity = 0; 831 832 for (unsigned i = 0; i < numStrings; i++) { 833 delete strings[i]; 834 } 835 free (strings); 836 strings = 0; 837 numStrings = 0; 838 stringsCapacity = 0; 839 } 840 841 const int initialCapacity = 64; 842 const int growthFactor = 2; 843 844 Identifier *Lexer::makeIdentifier(UChar *buffer, unsigned int pos) 845 { 846 if (numIdentifiers == identifiersCapacity) { 847 identifiersCapacity = (identifiersCapacity == 0) ? initialCapacity : identifiersCapacity *growthFactor; 848 identifiers = (KJS::Identifier **)realloc(identifiers, sizeof(KJS::Identifier *) * identifiersCapacity); 849 } 850 851 KJS::Identifier *identifier = new KJS::Identifier(buffer16, pos16); 852 identifiers[numIdentifiers++] = identifier; 853 return identifier; 854 } 855 856 UString *Lexer::makeUString(UChar *buffer, unsigned int pos) 857 { 858 if (numStrings == stringsCapacity) { 859 stringsCapacity = (stringsCapacity == 0) ? initialCapacity : stringsCapacity *growthFactor; 860 strings = (UString **)realloc(strings, sizeof(UString *) * stringsCapacity); 861 } 862 863 UString *string = new UString(buffer16, pos16); 864 strings[numStrings++] = string; 865 return string; 866 } -
trunk/JavaScriptCore/kjs/lexer.h
r1623 r5314 26 26 #include "ustring.h" 27 27 28 28 29 namespace KJS { 30 31 class Identifier; 29 32 30 33 class RegExp; … … 118 121 static void globalClear(); 119 122 #endif 123 124 void doneParsing(); 125 120 126 private: 121 127 122 128 void record8(unsigned short c); 123 129 void record16(UChar c); 130 131 KJS::Identifier *makeIdentifier(UChar *buffer, unsigned int pos); 132 UString *makeUString(UChar *buffer, unsigned int pos); 124 133 125 134 const UChar *code; … … 133 142 unsigned short current, next1, next2, next3; 134 143 144 UString **strings; 145 unsigned int numStrings; 146 unsigned int stringsCapacity; 147 148 KJS::Identifier **identifiers; 149 unsigned int numIdentifiers; 150 unsigned int identifiersCapacity; 151 135 152 // for future extensions 136 153 class LexerPrivate;
Note:
See TracChangeset
for help on using the changeset viewer.