1294 RESULT = parser.getQNameIgnoreDefaultNs("mod");
1295 parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1296 }
1297 return parser_result;
1298
1299 /*. . . . . . . . . . . . . . . . . . . .*/
1300 case 124: // QName ::= DIV
1301 {
1302 QName RESULT = null;
1303 RESULT = parser.getQNameIgnoreDefaultNs("div");
1304 parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1305 }
1306 return parser_result;
1307
1308 /*. . . . . . . . . . . . . . . . . . . .*/
1309 case 123: // QName ::= QNAME
1310 {
1311 QName RESULT = null;
1312 int qnameleft = (parser_stack.get(parser_top-0)).left;
1313 int qnameright = (parser_stack.get(parser_top-0)).right;
1314 String qname = (String)((Symbol) parser_stack.get(parser_top-0)).value;
1315 RESULT = parser.getQNameIgnoreDefaultNs(qname);
1316 parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1317 }
1318 return parser_result;
1319
1320 /*. . . . . . . . . . . . . . . . . . . .*/
1321 case 122: // NameTest ::= QName
1322 {
1323 Object RESULT = null;
1324 int qnleft = (parser_stack.get(parser_top-0)).left;
1325 int qnright = (parser_stack.get(parser_top-0)).right;
1326 QName qn = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1327 RESULT = qn;
1328 parser_result = new Symbol(26/*NameTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1329 }
1330 return parser_result;
1331
1332 /*. . . . . . . . . . . . . . . . . . . .*/
1333 case 121: // NameTest ::= STAR
1334 {
1335 Object RESULT = null;
1336 RESULT = null;
1337 parser_result = new Symbol(26/*NameTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1338 }
1339 return parser_result;
1340
1341 /*. . . . . . . . . . . . . . . . . . . .*/
1342 case 120: // NodeTest ::= PI
1343 {
1344 Object RESULT = null;
1345 RESULT = Integer.valueOf(NodeTest.PI);
1346 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1347 }
1348 return parser_result;
1349
1350 /*. . . . . . . . . . . . . . . . . . . .*/
1351 case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN
1352 {
1353 Object RESULT = null;
1354 int lleft = (parser_stack.get(parser_top-1)).left;
1355 int lright = (parser_stack.get(parser_top-1)).right;
1356 String l = (String)((Symbol) parser_stack.get(parser_top-1)).value;
1357
1358 QName name = parser.getQNameIgnoreDefaultNs("name");
1359 Expression exp = new EqualityExpr(Operators.EQ,
1360 new NameCall(name),
1361 new LiteralExpr(l));
1362 List<Predicate> predicates = new ArrayList<>();
1363 predicates.add(new Predicate(exp));
1364 RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates);
1365
1366 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1367 }
1368 return parser_result;
1369
1370 /*. . . . . . . . . . . . . . . . . . . .*/
1371 case 118: // NodeTest ::= COMMENT
1372 {
1373 Object RESULT = null;
1374 RESULT = Integer.valueOf(NodeTest.COMMENT);
1375 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1376 }
1383 RESULT = Integer.valueOf(NodeTest.TEXT);
1384 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1385 }
1386 return parser_result;
1387
1388 /*. . . . . . . . . . . . . . . . . . . .*/
1389 case 116: // NodeTest ::= NODE
1390 {
1391 Object RESULT = null;
1392 RESULT = Integer.valueOf(NodeTest.ANODE);
1393 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1394 }
1395 return parser_result;
1396
1397 /*. . . . . . . . . . . . . . . . . . . .*/
1398 case 115: // NodeTest ::= NameTest
1399 {
1400 Object RESULT = null;
1401 int ntleft = (parser_stack.get(parser_top-0)).left;
1402 int ntright = (parser_stack.get(parser_top-0)).right;
1403 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
1404 RESULT = nt;
1405 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1406 }
1407 return parser_result;
1408
1409 /*. . . . . . . . . . . . . . . . . . . .*/
1410 case 114: // Argument ::= Expr
1411 {
1412 Expression RESULT = null;
1413 int exleft = (parser_stack.get(parser_top-0)).left;
1414 int exright = (parser_stack.get(parser_top-0)).right;
1415 Expression ex = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1416 RESULT = ex;
1417 parser_result = new Symbol(3/*Argument*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1418 }
1419 return parser_result;
1420
1421 /*. . . . . . . . . . . . . . . . . . . .*/
1422 case 113: // VariableName ::= QName
1423 {
1424 QName RESULT = null;
1425 int vnameleft = (parser_stack.get(parser_top-0)).left;
1426 int vnameright = (parser_stack.get(parser_top-0)).right;
1427 QName vname = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1428
1429 RESULT = vname;
1430
1431 parser_result = new Symbol(39/*VariableName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1432 }
1433 return parser_result;
1434
1435 /*. . . . . . . . . . . . . . . . . . . .*/
1436 case 112: // FunctionName ::= QName
1437 {
1438 QName RESULT = null;
1439 int fnameleft = (parser_stack.get(parser_top-0)).left;
1440 int fnameright = (parser_stack.get(parser_top-0)).right;
1441 QName fname = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1442
1443 RESULT = fname;
1444
1445 parser_result = new Symbol(38/*FunctionName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1446 }
1447 return parser_result;
1448
1449 /*. . . . . . . . . . . . . . . . . . . .*/
1450 case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList
1451 {
1452 List<Expression> RESULT = null;
1453 int argleft = (parser_stack.get(parser_top-2)).left;
1454 int argright = (parser_stack.get(parser_top-2)).right;
1455 Expression arg = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
1456 int arglleft = (parser_stack.get(parser_top-0)).left;
1457 int arglright = (parser_stack.get(parser_top-0)).right;
1458 @SuppressWarnings("unchecked")
1459 List<Expression> argl = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-0)).value;
1460 argl.add(0, arg);
1461 RESULT = argl;
1462 parser_result = new Symbol(36/*NonemptyArgumentList*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1463 }
1464 return parser_result;
1465
1466 /*. . . . . . . . . . . . . . . . . . . .*/
1467 case 110: // NonemptyArgumentList ::= Argument
1468 {
1469 List<Expression> RESULT = null;
1470 int argleft = (parser_stack.get(parser_top-0)).left;
1471 int argright = (parser_stack.get(parser_top-0)).right;
1472 Expression arg = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1473
1474 List<Expression> temp = new ArrayList<>();
1475 temp.add(arg);
1476 RESULT = temp;
1477
1478 parser_result = new Symbol(36/*NonemptyArgumentList*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1479 }
1480 return parser_result;
1481
1482 /*. . . . . . . . . . . . . . . . . . . .*/
1483 case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN
1484 {
1485 Expression RESULT = null;
1486 int fnameleft = (parser_stack.get(parser_top-3)).left;
1487 int fnameright = (parser_stack.get(parser_top-3)).right;
1488 QName fname = (QName)((Symbol) parser_stack.get(parser_top-3)).value;
1489 int arglleft = (parser_stack.get(parser_top-1)).left;
1490 int arglright = (parser_stack.get(parser_top-1)).right;
1491 @SuppressWarnings("unchecked")
1492 List<Expression> argl = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-1)).value;
1493
1494 if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1495 RESULT = new ConcatCall(fname, argl);
1496 }
1497 else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1498 RESULT = new NumberCall(fname, argl);
1499 }
1500 else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
1501 parser.setMultiDocument(true);
1502 RESULT = new DocumentCall(fname, argl);
1503 }
1504 else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1505 RESULT = new StringCall(fname, argl);
1506 }
1507 else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
1508 RESULT = new BooleanCall(fname, argl);
1509 }
1510 else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1511 RESULT = new NameCall(fname, argl);
1512 }
1567 }
1568 // Special case for extension function nodeset()
1569 else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) {
1570 parser.setCallsNodeset(true); // implies MultiDOM
1571 RESULT = new FunctionCall(fname, argl);
1572 }
1573 else {
1574 RESULT = new FunctionCall(fname, argl);
1575 }
1576
1577 parser_result = new Symbol(16/*FunctionCall*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1578 }
1579 return parser_result;
1580
1581 /*. . . . . . . . . . . . . . . . . . . .*/
1582 case 108: // FunctionCall ::= FunctionName LPAREN RPAREN
1583 {
1584 Expression RESULT = null;
1585 int fnameleft = (parser_stack.get(parser_top-2)).left;
1586 int fnameright = (parser_stack.get(parser_top-2)).right;
1587 QName fname = (QName)((Symbol) parser_stack.get(parser_top-2)).value;
1588
1589
1590 if (fname == parser.getQNameIgnoreDefaultNs("current")) {
1591 RESULT = new CurrentCall(fname);
1592 }
1593 else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1594 RESULT = new NumberCall(fname, XPathParser.EmptyArgs);
1595 }
1596 else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1597 RESULT = new StringCall(fname, XPathParser.EmptyArgs);
1598 }
1599 else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1600 RESULT = new ConcatCall(fname, XPathParser.EmptyArgs);
1601 }
1602 else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
1603 RESULT = new BooleanExpr(true);
1604 }
1605 else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
1606 RESULT = new BooleanExpr(false);
1607 }
1623 else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1624 RESULT = new LocalNameCall(fname);
1625 }
1626 else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1627 RESULT = new NamespaceUriCall(fname);
1628 }
1629 else {
1630 RESULT = new FunctionCall(fname, XPathParser.EmptyArgs);
1631 }
1632
1633 parser_result = new Symbol(16/*FunctionCall*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1634 }
1635 return parser_result;
1636
1637 /*. . . . . . . . . . . . . . . . . . . .*/
1638 case 107: // VariableReference ::= DOLLAR VariableName
1639 {
1640 Expression RESULT = null;
1641 int varNameleft = (parser_stack.get(parser_top-0)).left;
1642 int varNameright = (parser_stack.get(parser_top-0)).right;
1643 QName varName = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
1644
1645 // An empty qname prefix for a variable or parameter reference
1646 // should map to the null namespace and not the default URI.
1647 SyntaxTreeNode node = parser.lookupName(varName);
1648
1649 if (node != null) {
1650 if (node instanceof Variable) {
1651 RESULT = new VariableRef((Variable)node);
1652 }
1653 else if (node instanceof Param) {
1654 RESULT = new ParameterRef((Param)node);
1655 }
1656 else {
1657 RESULT = new UnresolvedRef(varName);
1658 }
1659 }
1660
1661 if (node == null) {
1662 RESULT = new UnresolvedRef(varName);
1663 }
1664
1665 parser_result = new Symbol(15/*VariableReference*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1666 }
1667 return parser_result;
1668
1669 /*. . . . . . . . . . . . . . . . . . . .*/
1670 case 106: // PrimaryExpr ::= FunctionCall
1671 {
1672 Expression RESULT = null;
1673 int fcleft = (parser_stack.get(parser_top-0)).left;
1674 int fcright = (parser_stack.get(parser_top-0)).right;
1675 Expression fc = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1676 RESULT = fc;
1677 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1678 }
1679 return parser_result;
1680
1681 /*. . . . . . . . . . . . . . . . . . . .*/
1682 case 105: // PrimaryExpr ::= REAL
1683 {
1684 Expression RESULT = null;
1685 int numleft = (parser_stack.get(parser_top-0)).left;
1686 int numright = (parser_stack.get(parser_top-0)).right;
1687 Double num = (Double)((Symbol) parser_stack.get(parser_top-0)).value;
1688 RESULT = new RealExpr(num.doubleValue());
1689 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1690 }
1691 return parser_result;
1692
1693 /*. . . . . . . . . . . . . . . . . . . .*/
1694 case 104: // PrimaryExpr ::= INT
1695 {
1696 Expression RESULT = null;
1697 int numleft = (parser_stack.get(parser_top-0)).left;
1698 int numright = (parser_stack.get(parser_top-0)).right;
1699 Long num = (Long)((Symbol) parser_stack.get(parser_top-0)).value;
1700
1701 long value = num.longValue();
1702 if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
1703 RESULT = new RealExpr(value);
1704 }
1705 else {
1706 if (num.doubleValue() == -0)
1707 RESULT = new RealExpr(num.doubleValue());
1708 else if (num.intValue() == 0)
1709 RESULT = new IntExpr(num.intValue());
1710 else if (num.doubleValue() == 0.0)
1711 RESULT = new RealExpr(num.doubleValue());
1712 else
1713 RESULT = new IntExpr(num.intValue());
1714 }
1715
1716 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1717 }
1718 return parser_result;
1719
1720 /*. . . . . . . . . . . . . . . . . . . .*/
1721 case 103: // PrimaryExpr ::= Literal
1722 {
1723 Expression RESULT = null;
1724 int stringleft = (parser_stack.get(parser_top-0)).left;
1725 int stringright = (parser_stack.get(parser_top-0)).right;
1726 String string = (String)((Symbol) parser_stack.get(parser_top-0)).value;
1727
1728 /*
1729 * If the string appears to have the syntax of a QName, store
1730 * namespace info in the literal expression. This is used for
1731 * element-available and function-available functions, among
1732 * others. Also, the default namespace must be ignored.
1733 */
1734 String namespace = null;
1735 final int index = string.lastIndexOf(':');
1736
1737 if (index > 0) {
1738 final String prefix = string.substring(0, index);
1739 namespace = parser._symbolTable.lookupNamespace(prefix);
1740 }
1741 RESULT = (namespace == null) ? new LiteralExpr(string)
1742 : new LiteralExpr(string, namespace);
1743
1744 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1745 }
1746 return parser_result;
1747
1748 /*. . . . . . . . . . . . . . . . . . . .*/
1749 case 102: // PrimaryExpr ::= LPAREN Expr RPAREN
1750 {
1751 Expression RESULT = null;
1752 int exleft = (parser_stack.get(parser_top-1)).left;
1753 int exright = (parser_stack.get(parser_top-1)).right;
1754 Expression ex = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
1755 RESULT = ex;
1756 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1757 }
1758 return parser_result;
1759
1760 /*. . . . . . . . . . . . . . . . . . . .*/
1761 case 101: // PrimaryExpr ::= VariableReference
1762 {
1763 Expression RESULT = null;
1764 int vrleft = (parser_stack.get(parser_top-0)).left;
1765 int vrright = (parser_stack.get(parser_top-0)).right;
1766 Expression vr = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1767 RESULT = vr;
1768 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1769 }
1770 return parser_result;
1771
1772 /*. . . . . . . . . . . . . . . . . . . .*/
1773 case 100: // FilterExpr ::= PrimaryExpr Predicates
1774 {
1775 Expression RESULT = null;
1776 int primaryleft = (parser_stack.get(parser_top-1)).left;
1777 int primaryright = (parser_stack.get(parser_top-1)).right;
1778 Expression primary = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
1779 int ppleft = (parser_stack.get(parser_top-0)).left;
1780 int ppright = (parser_stack.get(parser_top-0)).right;
1781 @SuppressWarnings("unchecked")
1782 List<Expression> pp = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-0)).value;
1783 RESULT = new FilterExpr(primary, pp);
1784 parser_result = new Symbol(6/*FilterExpr*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1785 }
1786 return parser_result;
1787
1788 /*. . . . . . . . . . . . . . . . . . . .*/
1789 case 99: // FilterExpr ::= PrimaryExpr
1790 {
1791 Expression RESULT = null;
1792 int primaryleft = (parser_stack.get(parser_top-0)).left;
1793 int primaryright = (parser_stack.get(parser_top-0)).right;
1794 Expression primary = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1795 RESULT = primary;
1796 parser_result = new Symbol(6/*FilterExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1797 }
1798 return parser_result;
1799
1800 /*. . . . . . . . . . . . . . . . . . . .*/
1801 case 98: // AbbreviatedStep ::= DDOT
1802 {
1803 Expression RESULT = null;
1804 RESULT = new Step(Axis.PARENT, NodeTest.ANODE, null);
1805 parser_result = new Symbol(20/*AbbreviatedStep*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1806 }
1807 return parser_result;
1808
1809 /*. . . . . . . . . . . . . . . . . . . .*/
1810 case 97: // AbbreviatedStep ::= DOT
1811 {
1812 Expression RESULT = null;
1813 RESULT = new Step(Axis.SELF, NodeTest.ANODE, null);
1814 parser_result = new Symbol(20/*AbbreviatedStep*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1930 RESULT = Integer.valueOf(Axis.ANCESTOR);
1931 parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1932 }
1933 return parser_result;
1934
1935 /*. . . . . . . . . . . . . . . . . . . .*/
1936 case 83: // AxisSpecifier ::= ATSIGN
1937 {
1938 Integer RESULT = null;
1939 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
1940 parser_result = new Symbol(41/*AxisSpecifier*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1941 }
1942 return parser_result;
1943
1944 /*. . . . . . . . . . . . . . . . . . . .*/
1945 case 82: // AxisSpecifier ::= AxisName DCOLON
1946 {
1947 Integer RESULT = null;
1948 int anleft = (parser_stack.get(parser_top-1)).left;
1949 int anright = (parser_stack.get(parser_top-1)).right;
1950 Integer an = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
1951 RESULT = an;
1952 parser_result = new Symbol(41/*AxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1953 }
1954 return parser_result;
1955
1956 /*. . . . . . . . . . . . . . . . . . . .*/
1957 case 81: // Step ::= AbbreviatedStep
1958 {
1959 Expression RESULT = null;
1960 int abbrevleft = (parser_stack.get(parser_top-0)).left;
1961 int abbrevright = (parser_stack.get(parser_top-0)).right;
1962 Expression abbrev = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
1963 RESULT = abbrev;
1964 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1965 }
1966 return parser_result;
1967
1968 /*. . . . . . . . . . . . . . . . . . . .*/
1969 case 80: // Step ::= AxisSpecifier NodeTest
1970 {
1971 Expression RESULT = null;
1972 int axisleft = (parser_stack.get(parser_top-1)).left;
1973 int axisright = (parser_stack.get(parser_top-1)).right;
1974 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
1975 int ntestleft = (parser_stack.get(parser_top-0)).left;
1976 int ntestright = (parser_stack.get(parser_top-0)).right;
1977 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
1978 RESULT = new Step(axis.intValue(),
1979 parser.findNodeType(axis.intValue(), ntest),
1980 null);
1981
1982 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1983 }
1984 return parser_result;
1985
1986 /*. . . . . . . . . . . . . . . . . . . .*/
1987 case 79: // Step ::= AxisSpecifier NodeTest Predicates
1988 {
1989 Expression RESULT = null;
1990 int axisleft = (parser_stack.get(parser_top-2)).left;
1991 int axisright = (parser_stack.get(parser_top-2)).right;
1992 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-2)).value;
1993 int ntestleft = (parser_stack.get(parser_top-1)).left;
1994 int ntestright = (parser_stack.get(parser_top-1)).right;
1995 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
1996 int ppleft = (parser_stack.get(parser_top-0)).left;
1997 int ppright = (parser_stack.get(parser_top-0)).right;
1998 @SuppressWarnings("unchecked")
1999 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2000 RESULT = new Step(axis.intValue(),
2001 parser.findNodeType(axis.intValue(), ntest),
2002 pp);
2003
2004 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2005 }
2006 return parser_result;
2007
2008 /*. . . . . . . . . . . . . . . . . . . .*/
2009 case 78: // Step ::= NodeTest Predicates
2010 {
2011 Expression RESULT = null;
2012 int ntestleft = (parser_stack.get(parser_top-1)).left;
2013 int ntestright = (parser_stack.get(parser_top-1)).right;
2014 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
2015 int ppleft = (parser_stack.get(parser_top-0)).left;
2016 int ppright = (parser_stack.get(parser_top-0)).right;
2017 @SuppressWarnings("unchecked")
2018 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2019
2020 if (ntest instanceof Step) {
2021 Step step = (Step)ntest;
2022 step.addPredicates(pp);
2023 RESULT = (Step)ntest;
2024 }
2025 else {
2026 RESULT = new Step(Axis.CHILD,
2027 parser.findNodeType(Axis.CHILD, ntest), pp);
2028 }
2029
2030 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2031 }
2032 return parser_result;
2033
2034 /*. . . . . . . . . . . . . . . . . . . .*/
2035 case 77: // Step ::= NodeTest
2036 {
2037 Expression RESULT = null;
2038 int ntestleft = (parser_stack.get(parser_top-0)).left;
2039 int ntestright = (parser_stack.get(parser_top-0)).right;
2040 Object ntest = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2041
2042 if (ntest instanceof Step) {
2043 RESULT = (Step)ntest;
2044 }
2045 else {
2046 RESULT = new Step(Axis.CHILD,
2047 parser.findNodeType(Axis.CHILD, ntest),
2048 null);
2049 }
2050
2051 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2052 }
2053 return parser_result;
2054
2055 /*. . . . . . . . . . . . . . . . . . . .*/
2056 case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
2057 {
2058 Expression RESULT = null;
2059 int rlpleft = (parser_stack.get(parser_top-0)).left;
2060 int rlpright = (parser_stack.get(parser_top-0)).right;
2061 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2062
2063 //
2064 // Expand '//' into '/descendant-or-self::node()/' or
2065 // into /descendant-or-self::*/
2066 //
2067 int nodeType = DOM.NO_TYPE;
2068 if (rlp instanceof Step &&
2069 parser.isElementAxis(((Step) rlp).getAxis()))
2070 {
2071 nodeType = DTM.ELEMENT_NODE;
2072 }
2073 final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2074 RESULT = new AbsoluteLocationPath(parser.insertStep(step,
2075 (RelativeLocationPath) rlp));
2076
2077 parser_result = new Symbol(24/*AbbreviatedAbsoluteLocationPath*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2078 }
2079 return parser_result;
2080
2081 /*. . . . . . . . . . . . . . . . . . . .*/
2082 case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step
2083 {
2084 Expression RESULT = null;
2085 int rlpleft = (parser_stack.get(parser_top-2)).left;
2086 int rlpright = (parser_stack.get(parser_top-2)).right;
2087 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2088 int stepleft = (parser_stack.get(parser_top-0)).left;
2089 int stepright = (parser_stack.get(parser_top-0)).right;
2090 Expression step = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2091
2092 final Step right = (Step)step;
2093 final int axis = right.getAxis();
2094 final int type = right.getNodeType();
2095 final List<Predicate> predicates = right.getPredicates();
2096
2097 if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) {
2098 // Compress './/child:E' into 'descendant::E' - if possible
2099 if (predicates == null) {
2100 right.setAxis(Axis.DESCENDANT);
2101 if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2102 RESULT = right;
2103 }
2104 else {
2105 // Expand 'rlp//child::E' into 'rlp/descendant::E'
2106 RelativeLocationPath left = (RelativeLocationPath)rlp;
2107 RESULT = new ParentLocationPath(left, right);
2108 }
2109 }
2110 else {
2134 }
2135 else {
2136 // Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step'
2137 RelativeLocationPath left = (RelativeLocationPath)rlp;
2138 Step middle = new Step(Axis.DESCENDANTORSELF,
2139 DOM.NO_TYPE, null);
2140 ParentLocationPath ppl = new ParentLocationPath(middle, right);
2141 RESULT = new ParentLocationPath(left, ppl);
2142 }
2143
2144 parser_result = new Symbol(22/*AbbreviatedRelativeLocationPath*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2145 }
2146 return parser_result;
2147
2148 /*. . . . . . . . . . . . . . . . . . . .*/
2149 case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
2150 {
2151 Expression RESULT = null;
2152 int aalpleft = (parser_stack.get(parser_top-0)).left;
2153 int aalpright = (parser_stack.get(parser_top-0)).right;
2154 Expression aalp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2155 RESULT = aalp;
2156 parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2157 }
2158 return parser_result;
2159
2160 /*. . . . . . . . . . . . . . . . . . . .*/
2161 case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
2162 {
2163 Expression RESULT = null;
2164 int rlpleft = (parser_stack.get(parser_top-0)).left;
2165 int rlpright = (parser_stack.get(parser_top-0)).right;
2166 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2167 RESULT = new AbsoluteLocationPath(rlp);
2168 parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2169 }
2170 return parser_result;
2171
2172 /*. . . . . . . . . . . . . . . . . . . .*/
2173 case 72: // AbsoluteLocationPath ::= SLASH
2174 {
2175 Expression RESULT = null;
2176 RESULT = new AbsoluteLocationPath();
2177 parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2178 }
2179 return parser_result;
2180
2181 /*. . . . . . . . . . . . . . . . . . . .*/
2182 case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
2183 {
2184 Expression RESULT = null;
2185 int arlpleft = (parser_stack.get(parser_top-0)).left;
2186 int arlpright = (parser_stack.get(parser_top-0)).right;
2187 Expression arlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2188 RESULT = arlp;
2189 parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2190 }
2191 return parser_result;
2192
2193 /*. . . . . . . . . . . . . . . . . . . .*/
2194 case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step
2195 {
2196 Expression RESULT = null;
2197 int rlpleft = (parser_stack.get(parser_top-2)).left;
2198 int rlpright = (parser_stack.get(parser_top-2)).right;
2199 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2200 int stepleft = (parser_stack.get(parser_top-0)).left;
2201 int stepright = (parser_stack.get(parser_top-0)).right;
2202 Expression step = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2203
2204 if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
2205 RESULT = step; // Remove './' from the middle
2206 }
2207 else if (((Step) step).isAbbreviatedDot()) {
2208 RESULT = rlp; // Remove '/.' from the end
2209 }
2210 else {
2211 RESULT =
2212 new ParentLocationPath((RelativeLocationPath) rlp, step);
2213 }
2214
2215 parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2216 }
2217 return parser_result;
2218
2219 /*. . . . . . . . . . . . . . . . . . . .*/
2220 case 69: // RelativeLocationPath ::= Step
2221 {
2222 Expression RESULT = null;
2223 int stepleft = (parser_stack.get(parser_top-0)).left;
2224 int stepright = (parser_stack.get(parser_top-0)).right;
2225 Expression step = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2226 RESULT = step;
2227 parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2228 }
2229 return parser_result;
2230
2231 /*. . . . . . . . . . . . . . . . . . . .*/
2232 case 68: // LocationPath ::= AbsoluteLocationPath
2233 {
2234 Expression RESULT = null;
2235 int alpleft = (parser_stack.get(parser_top-0)).left;
2236 int alpright = (parser_stack.get(parser_top-0)).right;
2237 Expression alp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2238 RESULT = alp;
2239 parser_result = new Symbol(4/*LocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2240 }
2241 return parser_result;
2242
2243 /*. . . . . . . . . . . . . . . . . . . .*/
2244 case 67: // LocationPath ::= RelativeLocationPath
2245 {
2246 Expression RESULT = null;
2247 int rlpleft = (parser_stack.get(parser_top-0)).left;
2248 int rlpright = (parser_stack.get(parser_top-0)).right;
2249 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2250 RESULT = rlp;
2251 parser_result = new Symbol(4/*LocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2252 }
2253 return parser_result;
2254
2255 /*. . . . . . . . . . . . . . . . . . . .*/
2256 case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
2257 {
2258 Expression RESULT = null;
2259 int fexpleft = (parser_stack.get(parser_top-2)).left;
2260 int fexpright = (parser_stack.get(parser_top-2)).right;
2261 Expression fexp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2262 int rlpleft = (parser_stack.get(parser_top-0)).left;
2263 int rlpright = (parser_stack.get(parser_top-0)).right;
2264 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2265
2266 //
2267 // Expand '//' into '/descendant-or-self::node()/' or
2268 // into /descendant-or-self::*/
2269 //
2270 int nodeType = DOM.NO_TYPE;
2271 if (rlp instanceof Step &&
2272 parser.isElementAxis(((Step) rlp).getAxis()))
2273 {
2274 nodeType = DTM.ELEMENT_NODE;
2275 }
2276 final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2277 FilterParentPath fpp = new FilterParentPath(fexp, step);
2278 fpp = new FilterParentPath(fpp, rlp);
2279 if (fexp instanceof KeyCall == false) {
2280 fpp.setDescendantAxis();
2281 }
2282 RESULT = fpp;
2283
2284 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2285 }
2286 return parser_result;
2287
2288 /*. . . . . . . . . . . . . . . . . . . .*/
2289 case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
2290 {
2291 Expression RESULT = null;
2292 int fexpleft = (parser_stack.get(parser_top-2)).left;
2293 int fexpright = (parser_stack.get(parser_top-2)).right;
2294 Expression fexp = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2295 int rlpleft = (parser_stack.get(parser_top-0)).left;
2296 int rlpright = (parser_stack.get(parser_top-0)).right;
2297 Expression rlp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2298 RESULT = new FilterParentPath(fexp, rlp);
2299 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2300 }
2301 return parser_result;
2302
2303 /*. . . . . . . . . . . . . . . . . . . .*/
2304 case 64: // PathExpr ::= FilterExpr
2305 {
2306 Expression RESULT = null;
2307 int fexpleft = (parser_stack.get(parser_top-0)).left;
2308 int fexpright = (parser_stack.get(parser_top-0)).right;
2309 Expression fexp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2310 RESULT = fexp;
2311 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2312 }
2313 return parser_result;
2314
2315 /*. . . . . . . . . . . . . . . . . . . .*/
2316 case 63: // PathExpr ::= LocationPath
2317 {
2318 Expression RESULT = null;
2319 int lpleft = (parser_stack.get(parser_top-0)).left;
2320 int lpright = (parser_stack.get(parser_top-0)).right;
2321 Expression lp = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2322 RESULT = lp;
2323 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2324 }
2325 return parser_result;
2326
2327 /*. . . . . . . . . . . . . . . . . . . .*/
2328 case 62: // UnionExpr ::= PathExpr VBAR UnionExpr
2329 {
2330 Expression RESULT = null;
2331 int peleft = (parser_stack.get(parser_top-2)).left;
2332 int peright = (parser_stack.get(parser_top-2)).right;
2333 Expression pe = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2334 int restleft = (parser_stack.get(parser_top-0)).left;
2335 int restright = (parser_stack.get(parser_top-0)).right;
2336 Expression rest = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2337 RESULT = new UnionPathExpr(pe, rest);
2338 parser_result = new Symbol(18/*UnionExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2339 }
2340 return parser_result;
2341
2342 /*. . . . . . . . . . . . . . . . . . . .*/
2343 case 61: // UnionExpr ::= PathExpr
2344 {
2345 Expression RESULT = null;
2346 int peleft = (parser_stack.get(parser_top-0)).left;
2347 int peright = (parser_stack.get(parser_top-0)).right;
2348 Expression pe = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2349 RESULT = pe;
2350 parser_result = new Symbol(18/*UnionExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2351 }
2352 return parser_result;
2353
2354 /*. . . . . . . . . . . . . . . . . . . .*/
2355 case 60: // UnaryExpr ::= MINUS UnaryExpr
2356 {
2357 Expression RESULT = null;
2358 int ueleft = (parser_stack.get(parser_top-0)).left;
2359 int ueright = (parser_stack.get(parser_top-0)).right;
2360 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2361 RESULT = new UnaryOpExpr(ue);
2362 parser_result = new Symbol(14/*UnaryExpr*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2363 }
2364 return parser_result;
2365
2366 /*. . . . . . . . . . . . . . . . . . . .*/
2367 case 59: // UnaryExpr ::= UnionExpr
2368 {
2369 Expression RESULT = null;
2370 int ueleft = (parser_stack.get(parser_top-0)).left;
2371 int ueright = (parser_stack.get(parser_top-0)).right;
2372 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2373 RESULT = ue;
2374 parser_result = new Symbol(14/*UnaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2375 }
2376 return parser_result;
2377
2378 /*. . . . . . . . . . . . . . . . . . . .*/
2379 case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
2380 {
2381 Expression RESULT = null;
2382 int meleft = (parser_stack.get(parser_top-2)).left;
2383 int meright = (parser_stack.get(parser_top-2)).right;
2384 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2385 int ueleft = (parser_stack.get(parser_top-0)).left;
2386 int ueright = (parser_stack.get(parser_top-0)).right;
2387 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2388 RESULT = new BinOpExpr(BinOpExpr.MOD, me, ue);
2389 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2390 }
2391 return parser_result;
2392
2393 /*. . . . . . . . . . . . . . . . . . . .*/
2394 case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
2395 {
2396 Expression RESULT = null;
2397 int meleft = (parser_stack.get(parser_top-2)).left;
2398 int meright = (parser_stack.get(parser_top-2)).right;
2399 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2400 int ueleft = (parser_stack.get(parser_top-0)).left;
2401 int ueright = (parser_stack.get(parser_top-0)).right;
2402 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2403 RESULT = new BinOpExpr(BinOpExpr.DIV, me, ue);
2404 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2405 }
2406 return parser_result;
2407
2408 /*. . . . . . . . . . . . . . . . . . . .*/
2409 case 56: // MultiplicativeExpr ::= MultiplicativeExpr STAR UnaryExpr
2410 {
2411 Expression RESULT = null;
2412 int meleft = (parser_stack.get(parser_top-2)).left;
2413 int meright = (parser_stack.get(parser_top-2)).right;
2414 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2415 int ueleft = (parser_stack.get(parser_top-0)).left;
2416 int ueright = (parser_stack.get(parser_top-0)).right;
2417 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2418 RESULT = new BinOpExpr(BinOpExpr.TIMES, me, ue);
2419 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2420 }
2421 return parser_result;
2422
2423 /*. . . . . . . . . . . . . . . . . . . .*/
2424 case 55: // MultiplicativeExpr ::= UnaryExpr
2425 {
2426 Expression RESULT = null;
2427 int ueleft = (parser_stack.get(parser_top-0)).left;
2428 int ueright = (parser_stack.get(parser_top-0)).right;
2429 Expression ue = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2430 RESULT = ue;
2431 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2432 }
2433 return parser_result;
2434
2435 /*. . . . . . . . . . . . . . . . . . . .*/
2436 case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr
2437 {
2438 Expression RESULT = null;
2439 int aeleft = (parser_stack.get(parser_top-2)).left;
2440 int aeright = (parser_stack.get(parser_top-2)).right;
2441 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2442 int meleft = (parser_stack.get(parser_top-0)).left;
2443 int meright = (parser_stack.get(parser_top-0)).right;
2444 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2445 RESULT = new BinOpExpr(BinOpExpr.MINUS, ae, me);
2446 parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2447 }
2448 return parser_result;
2449
2450 /*. . . . . . . . . . . . . . . . . . . .*/
2451 case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr
2452 {
2453 Expression RESULT = null;
2454 int aeleft = (parser_stack.get(parser_top-2)).left;
2455 int aeright = (parser_stack.get(parser_top-2)).right;
2456 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2457 int meleft = (parser_stack.get(parser_top-0)).left;
2458 int meright = (parser_stack.get(parser_top-0)).right;
2459 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2460 RESULT = new BinOpExpr(BinOpExpr.PLUS, ae, me);
2461 parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2462 }
2463 return parser_result;
2464
2465 /*. . . . . . . . . . . . . . . . . . . .*/
2466 case 52: // AdditiveExpr ::= MultiplicativeExpr
2467 {
2468 Expression RESULT = null;
2469 int meleft = (parser_stack.get(parser_top-0)).left;
2470 int meright = (parser_stack.get(parser_top-0)).right;
2471 Expression me = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2472 RESULT = me;
2473 parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2474 }
2475 return parser_result;
2476
2477 /*. . . . . . . . . . . . . . . . . . . .*/
2478 case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
2479 {
2480 Expression RESULT = null;
2481 int releft = (parser_stack.get(parser_top-2)).left;
2482 int reright = (parser_stack.get(parser_top-2)).right;
2483 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2484 int aeleft = (parser_stack.get(parser_top-0)).left;
2485 int aeright = (parser_stack.get(parser_top-0)).right;
2486 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2487 RESULT = new RelationalExpr(Operators.GE, re, ae);
2488 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2489 }
2490 return parser_result;
2491
2492 /*. . . . . . . . . . . . . . . . . . . .*/
2493 case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
2494 {
2495 Expression RESULT = null;
2496 int releft = (parser_stack.get(parser_top-2)).left;
2497 int reright = (parser_stack.get(parser_top-2)).right;
2498 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2499 int aeleft = (parser_stack.get(parser_top-0)).left;
2500 int aeright = (parser_stack.get(parser_top-0)).right;
2501 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2502 RESULT = new RelationalExpr(Operators.LE, re, ae);
2503 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2504 }
2505 return parser_result;
2506
2507 /*. . . . . . . . . . . . . . . . . . . .*/
2508 case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
2509 {
2510 Expression RESULT = null;
2511 int releft = (parser_stack.get(parser_top-2)).left;
2512 int reright = (parser_stack.get(parser_top-2)).right;
2513 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2514 int aeleft = (parser_stack.get(parser_top-0)).left;
2515 int aeright = (parser_stack.get(parser_top-0)).right;
2516 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2517 RESULT = new RelationalExpr(Operators.GT, re, ae);
2518 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2519 }
2520 return parser_result;
2521
2522 /*. . . . . . . . . . . . . . . . . . . .*/
2523 case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
2524 {
2525 Expression RESULT = null;
2526 int releft = (parser_stack.get(parser_top-2)).left;
2527 int reright = (parser_stack.get(parser_top-2)).right;
2528 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2529 int aeleft = (parser_stack.get(parser_top-0)).left;
2530 int aeright = (parser_stack.get(parser_top-0)).right;
2531 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2532 RESULT = new RelationalExpr(Operators.LT, re, ae);
2533 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2534 }
2535 return parser_result;
2536
2537 /*. . . . . . . . . . . . . . . . . . . .*/
2538 case 47: // RelationalExpr ::= AdditiveExpr
2539 {
2540 Expression RESULT = null;
2541 int aeleft = (parser_stack.get(parser_top-0)).left;
2542 int aeright = (parser_stack.get(parser_top-0)).right;
2543 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2544 RESULT = ae;
2545 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2546 }
2547 return parser_result;
2548
2549 /*. . . . . . . . . . . . . . . . . . . .*/
2550 case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr
2551 {
2552 Expression RESULT = null;
2553 int eeleft = (parser_stack.get(parser_top-2)).left;
2554 int eeright = (parser_stack.get(parser_top-2)).right;
2555 Expression ee = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2556 int releft = (parser_stack.get(parser_top-0)).left;
2557 int reright = (parser_stack.get(parser_top-0)).right;
2558 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2559 RESULT = new EqualityExpr(Operators.NE, ee, re);
2560 parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2561 }
2562 return parser_result;
2563
2564 /*. . . . . . . . . . . . . . . . . . . .*/
2565 case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
2566 {
2567 Expression RESULT = null;
2568 int eeleft = (parser_stack.get(parser_top-2)).left;
2569 int eeright = (parser_stack.get(parser_top-2)).right;
2570 Expression ee = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2571 int releft = (parser_stack.get(parser_top-0)).left;
2572 int reright = (parser_stack.get(parser_top-0)).right;
2573 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2574 RESULT = new EqualityExpr(Operators.EQ, ee, re);
2575 parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2576 }
2577 return parser_result;
2578
2579 /*. . . . . . . . . . . . . . . . . . . .*/
2580 case 44: // EqualityExpr ::= RelationalExpr
2581 {
2582 Expression RESULT = null;
2583 int releft = (parser_stack.get(parser_top-0)).left;
2584 int reright = (parser_stack.get(parser_top-0)).right;
2585 Expression re = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2586 RESULT = re;
2587 parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2588 }
2589 return parser_result;
2590
2591 /*. . . . . . . . . . . . . . . . . . . .*/
2592 case 43: // AndExpr ::= AndExpr AND EqualityExpr
2593 {
2594 Expression RESULT = null;
2595 int aeleft = (parser_stack.get(parser_top-2)).left;
2596 int aeright = (parser_stack.get(parser_top-2)).right;
2597 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2598 int eeleft = (parser_stack.get(parser_top-0)).left;
2599 int eeright = (parser_stack.get(parser_top-0)).right;
2600 Expression ee = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2601 RESULT = new LogicalExpr(LogicalExpr.AND, ae, ee);
2602 parser_result = new Symbol(9/*AndExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2603 }
2604 return parser_result;
2605
2606 /*. . . . . . . . . . . . . . . . . . . .*/
2607 case 42: // AndExpr ::= EqualityExpr
2608 {
2609 Expression RESULT = null;
2610 int eleft = (parser_stack.get(parser_top-0)).left;
2611 int eright = (parser_stack.get(parser_top-0)).right;
2612 Expression e = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2613 RESULT = e;
2614 parser_result = new Symbol(9/*AndExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2615 }
2616 return parser_result;
2617
2618 /*. . . . . . . . . . . . . . . . . . . .*/
2619 case 41: // OrExpr ::= OrExpr OR AndExpr
2620 {
2621 Expression RESULT = null;
2622 int oeleft = (parser_stack.get(parser_top-2)).left;
2623 int oeright = (parser_stack.get(parser_top-2)).right;
2624 Expression oe = (Expression)((Symbol) parser_stack.get(parser_top-2)).value;
2625 int aeleft = (parser_stack.get(parser_top-0)).left;
2626 int aeright = (parser_stack.get(parser_top-0)).right;
2627 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2628 RESULT = new LogicalExpr(LogicalExpr.OR, oe, ae);
2629 parser_result = new Symbol(8/*OrExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2630 }
2631 return parser_result;
2632
2633 /*. . . . . . . . . . . . . . . . . . . .*/
2634 case 40: // OrExpr ::= AndExpr
2635 {
2636 Expression RESULT = null;
2637 int aeleft = (parser_stack.get(parser_top-0)).left;
2638 int aeright = (parser_stack.get(parser_top-0)).right;
2639 Expression ae = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2640 RESULT = ae;
2641 parser_result = new Symbol(8/*OrExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2642 }
2643 return parser_result;
2644
2645 /*. . . . . . . . . . . . . . . . . . . .*/
2646 case 39: // Expr ::= OrExpr
2647 {
2648 Expression RESULT = null;
2649 int exleft = (parser_stack.get(parser_top-0)).left;
2650 int exright = (parser_stack.get(parser_top-0)).right;
2651 Expression ex = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2652 RESULT = ex;
2653 parser_result = new Symbol(2/*Expr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2654 }
2655 return parser_result;
2656
2657 /*. . . . . . . . . . . . . . . . . . . .*/
2658 case 38: // Predicate ::= LBRACK Expr RBRACK
2659 {
2660 Expression RESULT = null;
2661 int eleft = (parser_stack.get(parser_top-1)).left;
2662 int eright = (parser_stack.get(parser_top-1)).right;
2663 Expression e = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
2664
2665 RESULT = new Predicate(e);
2666
2667 parser_result = new Symbol(5/*Predicate*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2668 }
2669 return parser_result;
2670
2671 /*. . . . . . . . . . . . . . . . . . . .*/
2672 case 37: // Predicates ::= Predicate Predicates
2673 {
2674 List<Expression> RESULT = null;
2675 int pleft = (parser_stack.get(parser_top-1)).left;
2676 int pright = (parser_stack.get(parser_top-1)).right;
2677 Expression p = (Expression)((Symbol) parser_stack.get(parser_top-1)).value;
2678 int ppleft = (parser_stack.get(parser_top-0)).left;
2679 int ppright = (parser_stack.get(parser_top-0)).right;
2680 @SuppressWarnings("unchecked")
2681 List<Expression> pp = (ArrayList<Expression>)((Symbol) parser_stack.get(parser_top-0)).value;
2682 pp.add(0, p); RESULT = pp;
2683 parser_result = new Symbol(35/*Predicates*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2684 }
2685 return parser_result;
2686
2687 /*. . . . . . . . . . . . . . . . . . . .*/
2688 case 36: // Predicates ::= Predicate
2689 {
2690 List<Expression> RESULT = null;
2691 int pleft = (parser_stack.get(parser_top-0)).left;
2692 int pright = (parser_stack.get(parser_top-0)).right;
2693 Expression p = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
2694
2695 List<Expression> temp = new ArrayList<>();
2696 temp.add(p);
2697 RESULT = temp;
2698
2699 parser_result = new Symbol(35/*Predicates*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2700 }
2701 return parser_result;
2702
2703 /*. . . . . . . . . . . . . . . . . . . .*/
2704 case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON
2705 {
2706 Integer RESULT = null;
2707 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2708 parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2709 }
2710 return parser_result;
2711
2712 /*. . . . . . . . . . . . . . . . . . . .*/
2713 case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON
2716 RESULT = Integer.valueOf(Axis.CHILD);
2717 parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2718 }
2719 return parser_result;
2720
2721 /*. . . . . . . . . . . . . . . . . . . .*/
2722 case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN
2723 {
2724 Integer RESULT = null;
2725 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2726 parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2727 }
2728 return parser_result;
2729
2730 /*. . . . . . . . . . . . . . . . . . . .*/
2731 case 32: // NameTestPattern ::= QName
2732 {
2733 Object RESULT = null;
2734 int qnleft = (parser_stack.get(parser_top-0)).left;
2735 int qnright = (parser_stack.get(parser_top-0)).right;
2736 QName qn = (QName)((Symbol) parser_stack.get(parser_top-0)).value;
2737 RESULT = qn;
2738 parser_result = new Symbol(34/*NameTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2739 }
2740 return parser_result;
2741
2742 /*. . . . . . . . . . . . . . . . . . . .*/
2743 case 31: // NameTestPattern ::= STAR
2744 {
2745 Object RESULT = null;
2746 RESULT = null;
2747 parser_result = new Symbol(34/*NameTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2748 }
2749 return parser_result;
2750
2751 /*. . . . . . . . . . . . . . . . . . . .*/
2752 case 30: // NodeTestPattern ::= PI
2753 {
2754 Object RESULT = null;
2755 RESULT = Integer.valueOf(NodeTest.PI);
2756 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2773 RESULT = Integer.valueOf(NodeTest.TEXT);
2774 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2775 }
2776 return parser_result;
2777
2778 /*. . . . . . . . . . . . . . . . . . . .*/
2779 case 27: // NodeTestPattern ::= NODE
2780 {
2781 Object RESULT = null;
2782 RESULT = Integer.valueOf(NodeTest.ANODE);
2783 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2784 }
2785 return parser_result;
2786
2787 /*. . . . . . . . . . . . . . . . . . . .*/
2788 case 26: // NodeTestPattern ::= NameTestPattern
2789 {
2790 Object RESULT = null;
2791 int ntleft = (parser_stack.get(parser_top-0)).left;
2792 int ntright = (parser_stack.get(parser_top-0)).right;
2793 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2794 RESULT = nt;
2795 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2796 }
2797 return parser_result;
2798
2799 /*. . . . . . . . . . . . . . . . . . . .*/
2800 case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates
2801 {
2802 StepPattern RESULT = null;
2803 int axisleft = (parser_stack.get(parser_top-2)).left;
2804 int axisright = (parser_stack.get(parser_top-2)).right;
2805 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-2)).value;
2806 int pipleft = (parser_stack.get(parser_top-1)).left;
2807 int pipright = (parser_stack.get(parser_top-1)).right;
2808 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-1)).value;
2809 int ppleft = (parser_stack.get(parser_top-0)).left;
2810 int ppright = (parser_stack.get(parser_top-0)).right;
2811 @SuppressWarnings("unchecked")
2812 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2813
2814 // TODO: report error if axis is attribute
2815 RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2816
2817 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2818 }
2819 return parser_result;
2820
2821 /*. . . . . . . . . . . . . . . . . . . .*/
2822 case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern
2823 {
2824 StepPattern RESULT = null;
2825 int axisleft = (parser_stack.get(parser_top-1)).left;
2826 int axisright = (parser_stack.get(parser_top-1)).right;
2827 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
2828 int pipleft = (parser_stack.get(parser_top-0)).left;
2829 int pipright = (parser_stack.get(parser_top-0)).right;
2830 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2831
2832 RESULT = pip; // TODO: report error if axis is attribute
2833
2834 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2835 }
2836 return parser_result;
2837
2838 /*. . . . . . . . . . . . . . . . . . . .*/
2839 case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates
2840 {
2841 StepPattern RESULT = null;
2842 int axisleft = (parser_stack.get(parser_top-2)).left;
2843 int axisright = (parser_stack.get(parser_top-2)).right;
2844 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-2)).value;
2845 int ntleft = (parser_stack.get(parser_top-1)).left;
2846 int ntright = (parser_stack.get(parser_top-1)).right;
2847 Object nt = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
2848 int ppleft = (parser_stack.get(parser_top-0)).left;
2849 int ppright = (parser_stack.get(parser_top-0)).right;
2850 @SuppressWarnings("unchecked")
2851 List<Predicate>pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2852
2853 RESULT = parser.createStepPattern(axis.intValue(), nt, pp);
2854
2855 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2856 }
2857 return parser_result;
2858
2859 /*. . . . . . . . . . . . . . . . . . . .*/
2860 case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern
2861 {
2862 StepPattern RESULT = null;
2863 int axisleft = (parser_stack.get(parser_top-1)).left;
2864 int axisright = (parser_stack.get(parser_top-1)).right;
2865 Integer axis = (Integer)((Symbol) parser_stack.get(parser_top-1)).value;
2866 int ntleft = (parser_stack.get(parser_top-0)).left;
2867 int ntright = (parser_stack.get(parser_top-0)).right;
2868 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2869
2870 RESULT = parser.createStepPattern(axis.intValue(), nt, null);
2871
2872 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2873 }
2874 return parser_result;
2875
2876 /*. . . . . . . . . . . . . . . . . . . .*/
2877 case 21: // StepPattern ::= ProcessingInstructionPattern Predicates
2878 {
2879 StepPattern RESULT = null;
2880 int pipleft = (parser_stack.get(parser_top-1)).left;
2881 int pipright = (parser_stack.get(parser_top-1)).right;
2882 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-1)).value;
2883 int ppleft = (parser_stack.get(parser_top-0)).left;
2884 int ppright = (parser_stack.get(parser_top-0)).right;
2885 @SuppressWarnings("unchecked")
2886 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2887 RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2888 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2889 }
2890 return parser_result;
2891
2892 /*. . . . . . . . . . . . . . . . . . . .*/
2893 case 20: // StepPattern ::= ProcessingInstructionPattern
2894 {
2895 StepPattern RESULT = null;
2896 int pipleft = (parser_stack.get(parser_top-0)).left;
2897 int pipright = (parser_stack.get(parser_top-0)).right;
2898 StepPattern pip = (StepPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2899 RESULT = pip;
2900 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2901 }
2902 return parser_result;
2903
2904 /*. . . . . . . . . . . . . . . . . . . .*/
2905 case 19: // StepPattern ::= NodeTestPattern Predicates
2906 {
2907 StepPattern RESULT = null;
2908 int ntleft = (parser_stack.get(parser_top-1)).left;
2909 int ntright = (parser_stack.get(parser_top-1)).right;
2910 Object nt = (Object)((Symbol) parser_stack.get(parser_top-1)).value;
2911 int ppleft = (parser_stack.get(parser_top-0)).left;
2912 int ppright = (parser_stack.get(parser_top-0)).right;
2913 @SuppressWarnings("unchecked")
2914 List<Predicate> pp = (ArrayList<Predicate>)((Symbol) parser_stack.get(parser_top-0)).value;
2915
2916 RESULT = parser.createStepPattern(Axis.CHILD, nt, pp);
2917
2918 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2919 }
2920 return parser_result;
2921
2922 /*. . . . . . . . . . . . . . . . . . . .*/
2923 case 18: // StepPattern ::= NodeTestPattern
2924 {
2925 StepPattern RESULT = null;
2926 int ntleft = (parser_stack.get(parser_top-0)).left;
2927 int ntright = (parser_stack.get(parser_top-0)).right;
2928 Object nt = (Object)((Symbol) parser_stack.get(parser_top-0)).value;
2929
2930 RESULT = parser.createStepPattern(Axis.CHILD, nt, null);
2931
2932 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2933 }
2934 return parser_result;
2935
2936 /*. . . . . . . . . . . . . . . . . . . .*/
2937 case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern
2938 {
2939 RelativePathPattern RESULT = null;
2940 int spleft = (parser_stack.get(parser_top-2)).left;
2941 int spright = (parser_stack.get(parser_top-2)).right;
2942 StepPattern sp = (StepPattern)((Symbol) parser_stack.get(parser_top-2)).value;
2943 int rppleft = (parser_stack.get(parser_top-0)).left;
2944 int rppright = (parser_stack.get(parser_top-0)).right;
2945 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2946 RESULT = new AncestorPattern(sp, rpp);
2947 parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2948 }
2949 return parser_result;
2950
2951 /*. . . . . . . . . . . . . . . . . . . .*/
2952 case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern
2953 {
2954 RelativePathPattern RESULT = null;
2955 int spleft = (parser_stack.get(parser_top-2)).left;
2956 int spright = (parser_stack.get(parser_top-2)).right;
2957 StepPattern sp = (StepPattern)((Symbol) parser_stack.get(parser_top-2)).value;
2958 int rppleft = (parser_stack.get(parser_top-0)).left;
2959 int rppright = (parser_stack.get(parser_top-0)).right;
2960 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2961 RESULT = new ParentPattern(sp, rpp);
2962 parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2963 }
2964 return parser_result;
2965
2966 /*. . . . . . . . . . . . . . . . . . . .*/
2967 case 15: // RelativePathPattern ::= StepPattern
2968 {
2969 RelativePathPattern RESULT = null;
2970 int spleft = (parser_stack.get(parser_top-0)).left;
2971 int spright = (parser_stack.get(parser_top-0)).right;
2972 StepPattern sp = (StepPattern)((Symbol) parser_stack.get(parser_top-0)).value;
2973 RESULT = sp;
2974 parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2975 }
2976 return parser_result;
2977
2978 /*. . . . . . . . . . . . . . . . . . . .*/
2979 case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN
2980 {
2981 StepPattern RESULT = null;
2982 int lleft = (parser_stack.get(parser_top-1)).left;
2983 int lright = (parser_stack.get(parser_top-1)).right;
2984 String l = (String)((Symbol) parser_stack.get(parser_top-1)).value;
2985 RESULT = new ProcessingInstructionPattern(l);
2986 parser_result = new Symbol(30/*ProcessingInstructionPattern*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2987 }
2988 return parser_result;
2989
2990 /*. . . . . . . . . . . . . . . . . . . .*/
2991 case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN
2992 {
2993 IdKeyPattern RESULT = null;
2994 int l1left = (parser_stack.get(parser_top-3)).left;
2995 int l1right = (parser_stack.get(parser_top-3)).right;
2996 String l1 = (String)((Symbol) parser_stack.get(parser_top-3)).value;
2997 int l2left = (parser_stack.get(parser_top-1)).left;
2998 int l2right = (parser_stack.get(parser_top-1)).right;
2999 String l2 = (String)((Symbol) parser_stack.get(parser_top-1)).value;
3000 RESULT = new KeyPattern(l1, l2);
3001 parser_result = new Symbol(27/*IdKeyPattern*/, (parser_stack.get(parser_top-5)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3002 }
3003 return parser_result;
3004
3005 /*. . . . . . . . . . . . . . . . . . . .*/
3006 case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN
3007 {
3008 IdKeyPattern RESULT = null;
3009 int lleft = (parser_stack.get(parser_top-1)).left;
3010 int lright = (parser_stack.get(parser_top-1)).right;
3011 String l = (String)((Symbol) parser_stack.get(parser_top-1)).value;
3012 RESULT = new IdPattern(l);
3013 parser.setHasIdCall(true);
3014
3015 parser_result = new Symbol(27/*IdKeyPattern*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3016 }
3017 return parser_result;
3018
3019 /*. . . . . . . . . . . . . . . . . . . .*/
3020 case 11: // LocationPathPattern ::= RelativePathPattern
3021 {
3022 Pattern RESULT = null;
3023 int rppleft = (parser_stack.get(parser_top-0)).left;
3024 int rppright = (parser_stack.get(parser_top-0)).right;
3025 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3026 RESULT = rpp;
3027 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3028 }
3029 return parser_result;
3030
3031 /*. . . . . . . . . . . . . . . . . . . .*/
3032 case 10: // LocationPathPattern ::= DSLASH RelativePathPattern
3033 {
3034 Pattern RESULT = null;
3035 int rppleft = (parser_stack.get(parser_top-0)).left;
3036 int rppright = (parser_stack.get(parser_top-0)).right;
3037 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3038 RESULT = new AncestorPattern(rpp);
3039 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3040 }
3041 return parser_result;
3042
3043 /*. . . . . . . . . . . . . . . . . . . .*/
3044 case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern
3045 {
3046 Pattern RESULT = null;
3047 int ikpleft = (parser_stack.get(parser_top-2)).left;
3048 int ikpright = (parser_stack.get(parser_top-2)).right;
3049 IdKeyPattern ikp = (IdKeyPattern)((Symbol) parser_stack.get(parser_top-2)).value;
3050 int rppleft = (parser_stack.get(parser_top-0)).left;
3051 int rppright = (parser_stack.get(parser_top-0)).right;
3052 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3053 RESULT = new AncestorPattern(ikp, rpp);
3054 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3055 }
3056 return parser_result;
3057
3058 /*. . . . . . . . . . . . . . . . . . . .*/
3059 case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern
3060 {
3061 Pattern RESULT = null;
3062 int ikpleft = (parser_stack.get(parser_top-2)).left;
3063 int ikpright = (parser_stack.get(parser_top-2)).right;
3064 IdKeyPattern ikp = (IdKeyPattern)((Symbol) parser_stack.get(parser_top-2)).value;
3065 int rppleft = (parser_stack.get(parser_top-0)).left;
3066 int rppright = (parser_stack.get(parser_top-0)).right;
3067 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3068 RESULT = new ParentPattern(ikp, rpp);
3069 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3070 }
3071 return parser_result;
3072
3073 /*. . . . . . . . . . . . . . . . . . . .*/
3074 case 7: // LocationPathPattern ::= IdKeyPattern
3075 {
3076 Pattern RESULT = null;
3077 int ikpleft = (parser_stack.get(parser_top-0)).left;
3078 int ikpright = (parser_stack.get(parser_top-0)).right;
3079 IdKeyPattern ikp = (IdKeyPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3080 RESULT = ikp;
3081 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3082 }
3083 return parser_result;
3084
3085 /*. . . . . . . . . . . . . . . . . . . .*/
3086 case 6: // LocationPathPattern ::= SLASH RelativePathPattern
3087 {
3088 Pattern RESULT = null;
3089 int rppleft = (parser_stack.get(parser_top-0)).left;
3090 int rppright = (parser_stack.get(parser_top-0)).right;
3091 RelativePathPattern rpp = (RelativePathPattern)((Symbol) parser_stack.get(parser_top-0)).value;
3092 RESULT = new AbsolutePathPattern(rpp);
3093 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3094 }
3095 return parser_result;
3096
3097 /*. . . . . . . . . . . . . . . . . . . .*/
3098 case 5: // LocationPathPattern ::= SLASH
3099 {
3100 Pattern RESULT = null;
3101 RESULT = new AbsolutePathPattern(null);
3102 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3103 }
3104 return parser_result;
3105
3106 /*. . . . . . . . . . . . . . . . . . . .*/
3107 case 4: // Pattern ::= LocationPathPattern VBAR Pattern
3108 {
3109 Pattern RESULT = null;
3110 int lppleft = (parser_stack.get(parser_top-2)).left;
3111 int lppright = (parser_stack.get(parser_top-2)).right;
3112 Pattern lpp = (Pattern)((Symbol) parser_stack.get(parser_top-2)).value;
3113 int pleft = (parser_stack.get(parser_top-0)).left;
3114 int pright = (parser_stack.get(parser_top-0)).right;
3115 Pattern p = (Pattern)((Symbol) parser_stack.get(parser_top-0)).value;
3116 RESULT = new AlternativePattern(lpp, p);
3117 parser_result = new Symbol(28/*Pattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3118 }
3119 return parser_result;
3120
3121 /*. . . . . . . . . . . . . . . . . . . .*/
3122 case 3: // Pattern ::= LocationPathPattern
3123 {
3124 Pattern RESULT = null;
3125 int lppleft = (parser_stack.get(parser_top-0)).left;
3126 int lppright = (parser_stack.get(parser_top-0)).right;
3127 Pattern lpp = (Pattern)((Symbol) parser_stack.get(parser_top-0)).value;
3128 RESULT = lpp;
3129 parser_result = new Symbol(28/*Pattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3130 }
3131 return parser_result;
3132
3133 /*. . . . . . . . . . . . . . . . . . . .*/
3134 case 2: // TopLevel ::= EXPRESSION Expr
3135 {
3136 SyntaxTreeNode RESULT = null;
3137 int exprleft = (parser_stack.get(parser_top-0)).left;
3138 int exprright = (parser_stack.get(parser_top-0)).right;
3139 Expression expr = (Expression)((Symbol) parser_stack.get(parser_top-0)).value;
3140 RESULT = expr;
3141 parser_result = new Symbol(1/*TopLevel*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3142 }
3143 return parser_result;
3144
3145 /*. . . . . . . . . . . . . . . . . . . .*/
3146 case 1: // TopLevel ::= PATTERN Pattern
3147 {
3148 SyntaxTreeNode RESULT = null;
3149 int patternleft = (parser_stack.get(parser_top-0)).left;
3150 int patternright = (parser_stack.get(parser_top-0)).right;
3151 Pattern pattern = (Pattern)((Symbol) parser_stack.get(parser_top-0)).value;
3152 RESULT = pattern;
3153 parser_result = new Symbol(1/*TopLevel*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3154 }
3155 return parser_result;
3156
3157 /*. . . . . . . . . . . . . . . . . . . .*/
3158 case 0: // $START ::= TopLevel EOF
3159 {
3160 Object RESULT = null;
3161 int start_valleft = (parser_stack.get(parser_top-1)).left;
3162 int start_valright = (parser_stack.get(parser_top-1)).right;
3163 SyntaxTreeNode start_val = (SyntaxTreeNode)((Symbol) parser_stack.get(parser_top-1)).value;
3164 RESULT = start_val;
3165 parser_result = new Symbol(0/*$START*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3166 }
3167 /* ACCEPT */
3168 parser_parser.done_parsing();
3169 return parser_result;
3170
3171 /* . . . . . .*/
3172 default:
3173 throw new Exception(
3174 "Invalid action number found in internal parse table");
3175
3176 }
3177 }
3178 }
|
1294 RESULT = parser.getQNameIgnoreDefaultNs("mod");
1295 parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1296 }
1297 return parser_result;
1298
1299 /*. . . . . . . . . . . . . . . . . . . .*/
1300 case 124: // QName ::= DIV
1301 {
1302 QName RESULT = null;
1303 RESULT = parser.getQNameIgnoreDefaultNs("div");
1304 parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1305 }
1306 return parser_result;
1307
1308 /*. . . . . . . . . . . . . . . . . . . .*/
1309 case 123: // QName ::= QNAME
1310 {
1311 QName RESULT = null;
1312 int qnameleft = (parser_stack.get(parser_top-0)).left;
1313 int qnameright = (parser_stack.get(parser_top-0)).right;
1314 String qname = (String)(parser_stack.get(parser_top-0)).value;
1315 RESULT = parser.getQNameIgnoreDefaultNs(qname);
1316 parser_result = new Symbol(37/*QName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1317 }
1318 return parser_result;
1319
1320 /*. . . . . . . . . . . . . . . . . . . .*/
1321 case 122: // NameTest ::= QName
1322 {
1323 Object RESULT = null;
1324 int qnleft = (parser_stack.get(parser_top-0)).left;
1325 int qnright = (parser_stack.get(parser_top-0)).right;
1326 QName qn = (QName)(parser_stack.get(parser_top-0)).value;
1327 RESULT = qn;
1328 parser_result = new Symbol(26/*NameTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1329 }
1330 return parser_result;
1331
1332 /*. . . . . . . . . . . . . . . . . . . .*/
1333 case 121: // NameTest ::= STAR
1334 {
1335 Object RESULT = null;
1336 RESULT = null;
1337 parser_result = new Symbol(26/*NameTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1338 }
1339 return parser_result;
1340
1341 /*. . . . . . . . . . . . . . . . . . . .*/
1342 case 120: // NodeTest ::= PI
1343 {
1344 Object RESULT = null;
1345 RESULT = Integer.valueOf(NodeTest.PI);
1346 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1347 }
1348 return parser_result;
1349
1350 /*. . . . . . . . . . . . . . . . . . . .*/
1351 case 119: // NodeTest ::= PIPARAM LPAREN Literal RPAREN
1352 {
1353 Object RESULT = null;
1354 int lleft = (parser_stack.get(parser_top-1)).left;
1355 int lright = (parser_stack.get(parser_top-1)).right;
1356 String l = (String)(parser_stack.get(parser_top-1)).value;
1357
1358 QName name = parser.getQNameIgnoreDefaultNs("name");
1359 Expression exp = new EqualityExpr(Operators.EQ,
1360 new NameCall(name),
1361 new LiteralExpr(l));
1362 List<Predicate> predicates = new ArrayList<>();
1363 predicates.add(new Predicate(exp));
1364 RESULT = new Step(Axis.CHILD, NodeTest.PI, predicates);
1365
1366 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1367 }
1368 return parser_result;
1369
1370 /*. . . . . . . . . . . . . . . . . . . .*/
1371 case 118: // NodeTest ::= COMMENT
1372 {
1373 Object RESULT = null;
1374 RESULT = Integer.valueOf(NodeTest.COMMENT);
1375 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1376 }
1383 RESULT = Integer.valueOf(NodeTest.TEXT);
1384 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1385 }
1386 return parser_result;
1387
1388 /*. . . . . . . . . . . . . . . . . . . .*/
1389 case 116: // NodeTest ::= NODE
1390 {
1391 Object RESULT = null;
1392 RESULT = Integer.valueOf(NodeTest.ANODE);
1393 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1394 }
1395 return parser_result;
1396
1397 /*. . . . . . . . . . . . . . . . . . . .*/
1398 case 115: // NodeTest ::= NameTest
1399 {
1400 Object RESULT = null;
1401 int ntleft = (parser_stack.get(parser_top-0)).left;
1402 int ntright = (parser_stack.get(parser_top-0)).right;
1403 Object nt = parser_stack.get(parser_top-0).value;
1404 RESULT = nt;
1405 parser_result = new Symbol(25/*NodeTest*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1406 }
1407 return parser_result;
1408
1409 /*. . . . . . . . . . . . . . . . . . . .*/
1410 case 114: // Argument ::= Expr
1411 {
1412 Expression RESULT = null;
1413 int exleft = (parser_stack.get(parser_top-0)).left;
1414 int exright = (parser_stack.get(parser_top-0)).right;
1415 Expression ex = (Expression)(parser_stack.get(parser_top-0)).value;
1416 RESULT = ex;
1417 parser_result = new Symbol(3/*Argument*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1418 }
1419 return parser_result;
1420
1421 /*. . . . . . . . . . . . . . . . . . . .*/
1422 case 113: // VariableName ::= QName
1423 {
1424 QName RESULT = null;
1425 int vnameleft = (parser_stack.get(parser_top-0)).left;
1426 int vnameright = (parser_stack.get(parser_top-0)).right;
1427 QName vname = (QName)(parser_stack.get(parser_top-0)).value;
1428
1429 RESULT = vname;
1430
1431 parser_result = new Symbol(39/*VariableName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1432 }
1433 return parser_result;
1434
1435 /*. . . . . . . . . . . . . . . . . . . .*/
1436 case 112: // FunctionName ::= QName
1437 {
1438 QName RESULT = null;
1439 int fnameleft = (parser_stack.get(parser_top-0)).left;
1440 int fnameright = (parser_stack.get(parser_top-0)).right;
1441 QName fname = (QName)(parser_stack.get(parser_top-0)).value;
1442
1443 RESULT = fname;
1444
1445 parser_result = new Symbol(38/*FunctionName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1446 }
1447 return parser_result;
1448
1449 /*. . . . . . . . . . . . . . . . . . . .*/
1450 case 111: // NonemptyArgumentList ::= Argument COMMA NonemptyArgumentList
1451 {
1452 List<Expression> RESULT = null;
1453 int argleft = (parser_stack.get(parser_top-2)).left;
1454 int argright = (parser_stack.get(parser_top-2)).right;
1455 Expression arg = (Expression)(parser_stack.get(parser_top-2)).value;
1456 int arglleft = (parser_stack.get(parser_top-0)).left;
1457 int arglright = (parser_stack.get(parser_top-0)).right;
1458 @SuppressWarnings("unchecked")
1459 List<Expression> argl = (ArrayList<Expression>)(parser_stack.get(parser_top-0)).value;
1460 argl.add(0, arg);
1461 RESULT = argl;
1462 parser_result = new Symbol(36/*NonemptyArgumentList*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1463 }
1464 return parser_result;
1465
1466 /*. . . . . . . . . . . . . . . . . . . .*/
1467 case 110: // NonemptyArgumentList ::= Argument
1468 {
1469 List<Expression> RESULT = null;
1470 int argleft = (parser_stack.get(parser_top-0)).left;
1471 int argright = (parser_stack.get(parser_top-0)).right;
1472 Expression arg = (Expression)(parser_stack.get(parser_top-0)).value;
1473
1474 List<Expression> temp = new ArrayList<>();
1475 temp.add(arg);
1476 RESULT = temp;
1477
1478 parser_result = new Symbol(36/*NonemptyArgumentList*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1479 }
1480 return parser_result;
1481
1482 /*. . . . . . . . . . . . . . . . . . . .*/
1483 case 109: // FunctionCall ::= FunctionName LPAREN NonemptyArgumentList RPAREN
1484 {
1485 Expression RESULT = null;
1486 int fnameleft = (parser_stack.get(parser_top-3)).left;
1487 int fnameright = (parser_stack.get(parser_top-3)).right;
1488 QName fname = (QName)(parser_stack.get(parser_top-3)).value;
1489 int arglleft = (parser_stack.get(parser_top-1)).left;
1490 int arglright = (parser_stack.get(parser_top-1)).right;
1491 @SuppressWarnings("unchecked")
1492 List<Expression> argl = (ArrayList<Expression>)(parser_stack.get(parser_top-1)).value;
1493
1494 if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1495 RESULT = new ConcatCall(fname, argl);
1496 }
1497 else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1498 RESULT = new NumberCall(fname, argl);
1499 }
1500 else if (fname == parser.getQNameIgnoreDefaultNs("document")) {
1501 parser.setMultiDocument(true);
1502 RESULT = new DocumentCall(fname, argl);
1503 }
1504 else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1505 RESULT = new StringCall(fname, argl);
1506 }
1507 else if (fname == parser.getQNameIgnoreDefaultNs("boolean")) {
1508 RESULT = new BooleanCall(fname, argl);
1509 }
1510 else if (fname == parser.getQNameIgnoreDefaultNs("name")) {
1511 RESULT = new NameCall(fname, argl);
1512 }
1567 }
1568 // Special case for extension function nodeset()
1569 else if (fname.getLocalPart().equals("nodeset") || fname.getLocalPart().equals("node-set")) {
1570 parser.setCallsNodeset(true); // implies MultiDOM
1571 RESULT = new FunctionCall(fname, argl);
1572 }
1573 else {
1574 RESULT = new FunctionCall(fname, argl);
1575 }
1576
1577 parser_result = new Symbol(16/*FunctionCall*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1578 }
1579 return parser_result;
1580
1581 /*. . . . . . . . . . . . . . . . . . . .*/
1582 case 108: // FunctionCall ::= FunctionName LPAREN RPAREN
1583 {
1584 Expression RESULT = null;
1585 int fnameleft = (parser_stack.get(parser_top-2)).left;
1586 int fnameright = (parser_stack.get(parser_top-2)).right;
1587 QName fname = (QName)(parser_stack.get(parser_top-2)).value;
1588
1589
1590 if (fname == parser.getQNameIgnoreDefaultNs("current")) {
1591 RESULT = new CurrentCall(fname);
1592 }
1593 else if (fname == parser.getQNameIgnoreDefaultNs("number")) {
1594 RESULT = new NumberCall(fname, XPathParser.EmptyArgs);
1595 }
1596 else if (fname == parser.getQNameIgnoreDefaultNs("string")) {
1597 RESULT = new StringCall(fname, XPathParser.EmptyArgs);
1598 }
1599 else if (fname == parser.getQNameIgnoreDefaultNs("concat")) {
1600 RESULT = new ConcatCall(fname, XPathParser.EmptyArgs);
1601 }
1602 else if (fname == parser.getQNameIgnoreDefaultNs("true")) {
1603 RESULT = new BooleanExpr(true);
1604 }
1605 else if (fname == parser.getQNameIgnoreDefaultNs("false")) {
1606 RESULT = new BooleanExpr(false);
1607 }
1623 else if (fname == parser.getQNameIgnoreDefaultNs("local-name")) {
1624 RESULT = new LocalNameCall(fname);
1625 }
1626 else if (fname == parser.getQNameIgnoreDefaultNs("namespace-uri")) {
1627 RESULT = new NamespaceUriCall(fname);
1628 }
1629 else {
1630 RESULT = new FunctionCall(fname, XPathParser.EmptyArgs);
1631 }
1632
1633 parser_result = new Symbol(16/*FunctionCall*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1634 }
1635 return parser_result;
1636
1637 /*. . . . . . . . . . . . . . . . . . . .*/
1638 case 107: // VariableReference ::= DOLLAR VariableName
1639 {
1640 Expression RESULT = null;
1641 int varNameleft = (parser_stack.get(parser_top-0)).left;
1642 int varNameright = (parser_stack.get(parser_top-0)).right;
1643 QName varName = (QName)(parser_stack.get(parser_top-0)).value;
1644
1645 // An empty qname prefix for a variable or parameter reference
1646 // should map to the null namespace and not the default URI.
1647 SyntaxTreeNode node = parser.lookupName(varName);
1648
1649 if (node != null) {
1650 if (node instanceof Variable) {
1651 RESULT = new VariableRef((Variable)node);
1652 }
1653 else if (node instanceof Param) {
1654 RESULT = new ParameterRef((Param)node);
1655 }
1656 else {
1657 RESULT = new UnresolvedRef(varName);
1658 }
1659 }
1660
1661 if (node == null) {
1662 RESULT = new UnresolvedRef(varName);
1663 }
1664
1665 parser_result = new Symbol(15/*VariableReference*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1666 }
1667 return parser_result;
1668
1669 /*. . . . . . . . . . . . . . . . . . . .*/
1670 case 106: // PrimaryExpr ::= FunctionCall
1671 {
1672 Expression RESULT = null;
1673 int fcleft = (parser_stack.get(parser_top-0)).left;
1674 int fcright = (parser_stack.get(parser_top-0)).right;
1675 Expression fc = (Expression)(parser_stack.get(parser_top-0)).value;
1676 RESULT = fc;
1677 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1678 }
1679 return parser_result;
1680
1681 /*. . . . . . . . . . . . . . . . . . . .*/
1682 case 105: // PrimaryExpr ::= REAL
1683 {
1684 Expression RESULT = null;
1685 int numleft = (parser_stack.get(parser_top-0)).left;
1686 int numright = (parser_stack.get(parser_top-0)).right;
1687 Double num = (Double)(parser_stack.get(parser_top-0)).value;
1688 RESULT = new RealExpr(num.doubleValue());
1689 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1690 }
1691 return parser_result;
1692
1693 /*. . . . . . . . . . . . . . . . . . . .*/
1694 case 104: // PrimaryExpr ::= INT
1695 {
1696 Expression RESULT = null;
1697 int numleft = (parser_stack.get(parser_top-0)).left;
1698 int numright = (parser_stack.get(parser_top-0)).right;
1699 Long num = (Long)(parser_stack.get(parser_top-0)).value;
1700
1701 long value = num.longValue();
1702 if (value < Integer.MIN_VALUE || value > Integer.MAX_VALUE) {
1703 RESULT = new RealExpr(value);
1704 }
1705 else {
1706 if (num.doubleValue() == -0)
1707 RESULT = new RealExpr(num.doubleValue());
1708 else if (num.intValue() == 0)
1709 RESULT = new IntExpr(num.intValue());
1710 else if (num.doubleValue() == 0.0)
1711 RESULT = new RealExpr(num.doubleValue());
1712 else
1713 RESULT = new IntExpr(num.intValue());
1714 }
1715
1716 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1717 }
1718 return parser_result;
1719
1720 /*. . . . . . . . . . . . . . . . . . . .*/
1721 case 103: // PrimaryExpr ::= Literal
1722 {
1723 Expression RESULT = null;
1724 int stringleft = (parser_stack.get(parser_top-0)).left;
1725 int stringright = (parser_stack.get(parser_top-0)).right;
1726 String string = (String)(parser_stack.get(parser_top-0)).value;
1727
1728 /*
1729 * If the string appears to have the syntax of a QName, store
1730 * namespace info in the literal expression. This is used for
1731 * element-available and function-available functions, among
1732 * others. Also, the default namespace must be ignored.
1733 */
1734 String namespace = null;
1735 final int index = string.lastIndexOf(':');
1736
1737 if (index > 0) {
1738 final String prefix = string.substring(0, index);
1739 namespace = parser._symbolTable.lookupNamespace(prefix);
1740 }
1741 RESULT = (namespace == null) ? new LiteralExpr(string)
1742 : new LiteralExpr(string, namespace);
1743
1744 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1745 }
1746 return parser_result;
1747
1748 /*. . . . . . . . . . . . . . . . . . . .*/
1749 case 102: // PrimaryExpr ::= LPAREN Expr RPAREN
1750 {
1751 Expression RESULT = null;
1752 int exleft = (parser_stack.get(parser_top-1)).left;
1753 int exright = (parser_stack.get(parser_top-1)).right;
1754 Expression ex = (Expression)(parser_stack.get(parser_top-1)).value;
1755 RESULT = ex;
1756 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1757 }
1758 return parser_result;
1759
1760 /*. . . . . . . . . . . . . . . . . . . .*/
1761 case 101: // PrimaryExpr ::= VariableReference
1762 {
1763 Expression RESULT = null;
1764 int vrleft = (parser_stack.get(parser_top-0)).left;
1765 int vrright = (parser_stack.get(parser_top-0)).right;
1766 Expression vr = (Expression)(parser_stack.get(parser_top-0)).value;
1767 RESULT = vr;
1768 parser_result = new Symbol(17/*PrimaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1769 }
1770 return parser_result;
1771
1772 /*. . . . . . . . . . . . . . . . . . . .*/
1773 case 100: // FilterExpr ::= PrimaryExpr Predicates
1774 {
1775 Expression RESULT = null;
1776 int primaryleft = (parser_stack.get(parser_top-1)).left;
1777 int primaryright = (parser_stack.get(parser_top-1)).right;
1778 Expression primary = (Expression)(parser_stack.get(parser_top-1)).value;
1779 int ppleft = (parser_stack.get(parser_top-0)).left;
1780 int ppright = (parser_stack.get(parser_top-0)).right;
1781 @SuppressWarnings("unchecked")
1782 List<Expression> pp = (ArrayList<Expression>)(parser_stack.get(parser_top-0)).value;
1783 RESULT = new FilterExpr(primary, pp);
1784 parser_result = new Symbol(6/*FilterExpr*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1785 }
1786 return parser_result;
1787
1788 /*. . . . . . . . . . . . . . . . . . . .*/
1789 case 99: // FilterExpr ::= PrimaryExpr
1790 {
1791 Expression RESULT = null;
1792 int primaryleft = (parser_stack.get(parser_top-0)).left;
1793 int primaryright = (parser_stack.get(parser_top-0)).right;
1794 Expression primary = (Expression)(parser_stack.get(parser_top-0)).value;
1795 RESULT = primary;
1796 parser_result = new Symbol(6/*FilterExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1797 }
1798 return parser_result;
1799
1800 /*. . . . . . . . . . . . . . . . . . . .*/
1801 case 98: // AbbreviatedStep ::= DDOT
1802 {
1803 Expression RESULT = null;
1804 RESULT = new Step(Axis.PARENT, NodeTest.ANODE, null);
1805 parser_result = new Symbol(20/*AbbreviatedStep*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1806 }
1807 return parser_result;
1808
1809 /*. . . . . . . . . . . . . . . . . . . .*/
1810 case 97: // AbbreviatedStep ::= DOT
1811 {
1812 Expression RESULT = null;
1813 RESULT = new Step(Axis.SELF, NodeTest.ANODE, null);
1814 parser_result = new Symbol(20/*AbbreviatedStep*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1930 RESULT = Integer.valueOf(Axis.ANCESTOR);
1931 parser_result = new Symbol(40/*AxisName*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1932 }
1933 return parser_result;
1934
1935 /*. . . . . . . . . . . . . . . . . . . .*/
1936 case 83: // AxisSpecifier ::= ATSIGN
1937 {
1938 Integer RESULT = null;
1939 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
1940 parser_result = new Symbol(41/*AxisSpecifier*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1941 }
1942 return parser_result;
1943
1944 /*. . . . . . . . . . . . . . . . . . . .*/
1945 case 82: // AxisSpecifier ::= AxisName DCOLON
1946 {
1947 Integer RESULT = null;
1948 int anleft = (parser_stack.get(parser_top-1)).left;
1949 int anright = (parser_stack.get(parser_top-1)).right;
1950 Integer an = (Integer)(parser_stack.get(parser_top-1)).value;
1951 RESULT = an;
1952 parser_result = new Symbol(41/*AxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1953 }
1954 return parser_result;
1955
1956 /*. . . . . . . . . . . . . . . . . . . .*/
1957 case 81: // Step ::= AbbreviatedStep
1958 {
1959 Expression RESULT = null;
1960 int abbrevleft = (parser_stack.get(parser_top-0)).left;
1961 int abbrevright = (parser_stack.get(parser_top-0)).right;
1962 Expression abbrev = (Expression)(parser_stack.get(parser_top-0)).value;
1963 RESULT = abbrev;
1964 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1965 }
1966 return parser_result;
1967
1968 /*. . . . . . . . . . . . . . . . . . . .*/
1969 case 80: // Step ::= AxisSpecifier NodeTest
1970 {
1971 Expression RESULT = null;
1972 int axisleft = (parser_stack.get(parser_top-1)).left;
1973 int axisright = (parser_stack.get(parser_top-1)).right;
1974 Integer axis = (Integer)(parser_stack.get(parser_top-1)).value;
1975 int ntestleft = (parser_stack.get(parser_top-0)).left;
1976 int ntestright = (parser_stack.get(parser_top-0)).right;
1977 Object ntest = parser_stack.get(parser_top-0).value;
1978 RESULT = new Step(axis.intValue(),
1979 parser.findNodeType(axis.intValue(), ntest),
1980 null);
1981
1982 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
1983 }
1984 return parser_result;
1985
1986 /*. . . . . . . . . . . . . . . . . . . .*/
1987 case 79: // Step ::= AxisSpecifier NodeTest Predicates
1988 {
1989 Expression RESULT = null;
1990 int axisleft = (parser_stack.get(parser_top-2)).left;
1991 int axisright = (parser_stack.get(parser_top-2)).right;
1992 Integer axis = (Integer)(parser_stack.get(parser_top-2)).value;
1993 int ntestleft = (parser_stack.get(parser_top-1)).left;
1994 int ntestright = (parser_stack.get(parser_top-1)).right;
1995 Object ntest = parser_stack.get(parser_top-1).value;
1996 int ppleft = (parser_stack.get(parser_top-0)).left;
1997 int ppright = (parser_stack.get(parser_top-0)).right;
1998 @SuppressWarnings("unchecked")
1999 List<Predicate> pp = (ArrayList<Predicate>)(parser_stack.get(parser_top-0)).value;
2000 RESULT = new Step(axis.intValue(),
2001 parser.findNodeType(axis.intValue(), ntest),
2002 pp);
2003
2004 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2005 }
2006 return parser_result;
2007
2008 /*. . . . . . . . . . . . . . . . . . . .*/
2009 case 78: // Step ::= NodeTest Predicates
2010 {
2011 Expression RESULT = null;
2012 int ntestleft = (parser_stack.get(parser_top-1)).left;
2013 int ntestright = (parser_stack.get(parser_top-1)).right;
2014 Object ntest = parser_stack.get(parser_top-1).value;
2015 int ppleft = (parser_stack.get(parser_top-0)).left;
2016 int ppright = (parser_stack.get(parser_top-0)).right;
2017 @SuppressWarnings("unchecked")
2018 List<Predicate> pp = (ArrayList<Predicate>)(parser_stack.get(parser_top-0)).value;
2019
2020 if (ntest instanceof Step) {
2021 Step step = (Step)ntest;
2022 step.addPredicates(pp);
2023 RESULT = (Step)ntest;
2024 }
2025 else {
2026 RESULT = new Step(Axis.CHILD,
2027 parser.findNodeType(Axis.CHILD, ntest), pp);
2028 }
2029
2030 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2031 }
2032 return parser_result;
2033
2034 /*. . . . . . . . . . . . . . . . . . . .*/
2035 case 77: // Step ::= NodeTest
2036 {
2037 Expression RESULT = null;
2038 int ntestleft = (parser_stack.get(parser_top-0)).left;
2039 int ntestright = (parser_stack.get(parser_top-0)).right;
2040 Object ntest = parser_stack.get(parser_top-0).value;
2041
2042 if (ntest instanceof Step) {
2043 RESULT = (Step)ntest;
2044 }
2045 else {
2046 RESULT = new Step(Axis.CHILD,
2047 parser.findNodeType(Axis.CHILD, ntest),
2048 null);
2049 }
2050
2051 parser_result = new Symbol(7/*Step*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2052 }
2053 return parser_result;
2054
2055 /*. . . . . . . . . . . . . . . . . . . .*/
2056 case 76: // AbbreviatedAbsoluteLocationPath ::= DSLASH RelativeLocationPath
2057 {
2058 Expression RESULT = null;
2059 int rlpleft = (parser_stack.get(parser_top-0)).left;
2060 int rlpright = (parser_stack.get(parser_top-0)).right;
2061 Expression rlp = (Expression)(parser_stack.get(parser_top-0)).value;
2062
2063 //
2064 // Expand '//' into '/descendant-or-self::node()/' or
2065 // into /descendant-or-self::*/
2066 //
2067 int nodeType = DOM.NO_TYPE;
2068 if (rlp instanceof Step &&
2069 parser.isElementAxis(((Step) rlp).getAxis()))
2070 {
2071 nodeType = DTM.ELEMENT_NODE;
2072 }
2073 final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2074 RESULT = new AbsoluteLocationPath(parser.insertStep(step,
2075 (RelativeLocationPath) rlp));
2076
2077 parser_result = new Symbol(24/*AbbreviatedAbsoluteLocationPath*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2078 }
2079 return parser_result;
2080
2081 /*. . . . . . . . . . . . . . . . . . . .*/
2082 case 75: // AbbreviatedRelativeLocationPath ::= RelativeLocationPath DSLASH Step
2083 {
2084 Expression RESULT = null;
2085 int rlpleft = (parser_stack.get(parser_top-2)).left;
2086 int rlpright = (parser_stack.get(parser_top-2)).right;
2087 Expression rlp = (Expression)(parser_stack.get(parser_top-2)).value;
2088 int stepleft = (parser_stack.get(parser_top-0)).left;
2089 int stepright = (parser_stack.get(parser_top-0)).right;
2090 Expression step = (Expression)(parser_stack.get(parser_top-0)).value;
2091
2092 final Step right = (Step)step;
2093 final int axis = right.getAxis();
2094 final int type = right.getNodeType();
2095 final List<Predicate> predicates = right.getPredicates();
2096
2097 if ((axis == Axis.CHILD) && (type != NodeTest.ATTRIBUTE)) {
2098 // Compress './/child:E' into 'descendant::E' - if possible
2099 if (predicates == null) {
2100 right.setAxis(Axis.DESCENDANT);
2101 if (rlp instanceof Step && ((Step)rlp).isAbbreviatedDot()) {
2102 RESULT = right;
2103 }
2104 else {
2105 // Expand 'rlp//child::E' into 'rlp/descendant::E'
2106 RelativeLocationPath left = (RelativeLocationPath)rlp;
2107 RESULT = new ParentLocationPath(left, right);
2108 }
2109 }
2110 else {
2134 }
2135 else {
2136 // Expand 'rlp//step' -> 'rlp/descendant-or-self::node()/step'
2137 RelativeLocationPath left = (RelativeLocationPath)rlp;
2138 Step middle = new Step(Axis.DESCENDANTORSELF,
2139 DOM.NO_TYPE, null);
2140 ParentLocationPath ppl = new ParentLocationPath(middle, right);
2141 RESULT = new ParentLocationPath(left, ppl);
2142 }
2143
2144 parser_result = new Symbol(22/*AbbreviatedRelativeLocationPath*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2145 }
2146 return parser_result;
2147
2148 /*. . . . . . . . . . . . . . . . . . . .*/
2149 case 74: // AbsoluteLocationPath ::= AbbreviatedAbsoluteLocationPath
2150 {
2151 Expression RESULT = null;
2152 int aalpleft = (parser_stack.get(parser_top-0)).left;
2153 int aalpright = (parser_stack.get(parser_top-0)).right;
2154 Expression aalp = (Expression)(parser_stack.get(parser_top-0)).value;
2155 RESULT = aalp;
2156 parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2157 }
2158 return parser_result;
2159
2160 /*. . . . . . . . . . . . . . . . . . . .*/
2161 case 73: // AbsoluteLocationPath ::= SLASH RelativeLocationPath
2162 {
2163 Expression RESULT = null;
2164 int rlpleft = (parser_stack.get(parser_top-0)).left;
2165 int rlpright = (parser_stack.get(parser_top-0)).right;
2166 Expression rlp = (Expression)(parser_stack.get(parser_top-0)).value;
2167 RESULT = new AbsoluteLocationPath(rlp);
2168 parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2169 }
2170 return parser_result;
2171
2172 /*. . . . . . . . . . . . . . . . . . . .*/
2173 case 72: // AbsoluteLocationPath ::= SLASH
2174 {
2175 Expression RESULT = null;
2176 RESULT = new AbsoluteLocationPath();
2177 parser_result = new Symbol(23/*AbsoluteLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2178 }
2179 return parser_result;
2180
2181 /*. . . . . . . . . . . . . . . . . . . .*/
2182 case 71: // RelativeLocationPath ::= AbbreviatedRelativeLocationPath
2183 {
2184 Expression RESULT = null;
2185 int arlpleft = (parser_stack.get(parser_top-0)).left;
2186 int arlpright = (parser_stack.get(parser_top-0)).right;
2187 Expression arlp = (Expression)(parser_stack.get(parser_top-0)).value;
2188 RESULT = arlp;
2189 parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2190 }
2191 return parser_result;
2192
2193 /*. . . . . . . . . . . . . . . . . . . .*/
2194 case 70: // RelativeLocationPath ::= RelativeLocationPath SLASH Step
2195 {
2196 Expression RESULT = null;
2197 int rlpleft = (parser_stack.get(parser_top-2)).left;
2198 int rlpright = (parser_stack.get(parser_top-2)).right;
2199 Expression rlp = (Expression)(parser_stack.get(parser_top-2)).value;
2200 int stepleft = (parser_stack.get(parser_top-0)).left;
2201 int stepright = (parser_stack.get(parser_top-0)).right;
2202 Expression step = (Expression)(parser_stack.get(parser_top-0)).value;
2203
2204 if (rlp instanceof Step && ((Step) rlp).isAbbreviatedDot()) {
2205 RESULT = step; // Remove './' from the middle
2206 }
2207 else if (((Step) step).isAbbreviatedDot()) {
2208 RESULT = rlp; // Remove '/.' from the end
2209 }
2210 else {
2211 RESULT =
2212 new ParentLocationPath((RelativeLocationPath) rlp, step);
2213 }
2214
2215 parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2216 }
2217 return parser_result;
2218
2219 /*. . . . . . . . . . . . . . . . . . . .*/
2220 case 69: // RelativeLocationPath ::= Step
2221 {
2222 Expression RESULT = null;
2223 int stepleft = (parser_stack.get(parser_top-0)).left;
2224 int stepright = (parser_stack.get(parser_top-0)).right;
2225 Expression step = (Expression)(parser_stack.get(parser_top-0)).value;
2226 RESULT = step;
2227 parser_result = new Symbol(21/*RelativeLocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2228 }
2229 return parser_result;
2230
2231 /*. . . . . . . . . . . . . . . . . . . .*/
2232 case 68: // LocationPath ::= AbsoluteLocationPath
2233 {
2234 Expression RESULT = null;
2235 int alpleft = (parser_stack.get(parser_top-0)).left;
2236 int alpright = (parser_stack.get(parser_top-0)).right;
2237 Expression alp = (Expression)(parser_stack.get(parser_top-0)).value;
2238 RESULT = alp;
2239 parser_result = new Symbol(4/*LocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2240 }
2241 return parser_result;
2242
2243 /*. . . . . . . . . . . . . . . . . . . .*/
2244 case 67: // LocationPath ::= RelativeLocationPath
2245 {
2246 Expression RESULT = null;
2247 int rlpleft = (parser_stack.get(parser_top-0)).left;
2248 int rlpright = (parser_stack.get(parser_top-0)).right;
2249 Expression rlp = (Expression)(parser_stack.get(parser_top-0)).value;
2250 RESULT = rlp;
2251 parser_result = new Symbol(4/*LocationPath*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2252 }
2253 return parser_result;
2254
2255 /*. . . . . . . . . . . . . . . . . . . .*/
2256 case 66: // PathExpr ::= FilterExpr DSLASH RelativeLocationPath
2257 {
2258 Expression RESULT = null;
2259 int fexpleft = (parser_stack.get(parser_top-2)).left;
2260 int fexpright = (parser_stack.get(parser_top-2)).right;
2261 Expression fexp = (Expression)(parser_stack.get(parser_top-2)).value;
2262 int rlpleft = (parser_stack.get(parser_top-0)).left;
2263 int rlpright = (parser_stack.get(parser_top-0)).right;
2264 Expression rlp = (Expression)(parser_stack.get(parser_top-0)).value;
2265
2266 //
2267 // Expand '//' into '/descendant-or-self::node()/' or
2268 // into /descendant-or-self::*/
2269 //
2270 int nodeType = DOM.NO_TYPE;
2271 if (rlp instanceof Step &&
2272 parser.isElementAxis(((Step) rlp).getAxis()))
2273 {
2274 nodeType = DTM.ELEMENT_NODE;
2275 }
2276 final Step step = new Step(Axis.DESCENDANTORSELF, nodeType, null);
2277 FilterParentPath fpp = new FilterParentPath(fexp, step);
2278 fpp = new FilterParentPath(fpp, rlp);
2279 if (fexp instanceof KeyCall == false) {
2280 fpp.setDescendantAxis();
2281 }
2282 RESULT = fpp;
2283
2284 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2285 }
2286 return parser_result;
2287
2288 /*. . . . . . . . . . . . . . . . . . . .*/
2289 case 65: // PathExpr ::= FilterExpr SLASH RelativeLocationPath
2290 {
2291 Expression RESULT = null;
2292 int fexpleft = (parser_stack.get(parser_top-2)).left;
2293 int fexpright = (parser_stack.get(parser_top-2)).right;
2294 Expression fexp = (Expression)(parser_stack.get(parser_top-2)).value;
2295 int rlpleft = (parser_stack.get(parser_top-0)).left;
2296 int rlpright = (parser_stack.get(parser_top-0)).right;
2297 Expression rlp = (Expression)(parser_stack.get(parser_top-0)).value;
2298 RESULT = new FilterParentPath(fexp, rlp);
2299 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2300 }
2301 return parser_result;
2302
2303 /*. . . . . . . . . . . . . . . . . . . .*/
2304 case 64: // PathExpr ::= FilterExpr
2305 {
2306 Expression RESULT = null;
2307 int fexpleft = (parser_stack.get(parser_top-0)).left;
2308 int fexpright = (parser_stack.get(parser_top-0)).right;
2309 Expression fexp = (Expression)(parser_stack.get(parser_top-0)).value;
2310 RESULT = fexp;
2311 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2312 }
2313 return parser_result;
2314
2315 /*. . . . . . . . . . . . . . . . . . . .*/
2316 case 63: // PathExpr ::= LocationPath
2317 {
2318 Expression RESULT = null;
2319 int lpleft = (parser_stack.get(parser_top-0)).left;
2320 int lpright = (parser_stack.get(parser_top-0)).right;
2321 Expression lp = (Expression)(parser_stack.get(parser_top-0)).value;
2322 RESULT = lp;
2323 parser_result = new Symbol(19/*PathExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2324 }
2325 return parser_result;
2326
2327 /*. . . . . . . . . . . . . . . . . . . .*/
2328 case 62: // UnionExpr ::= PathExpr VBAR UnionExpr
2329 {
2330 Expression RESULT = null;
2331 int peleft = (parser_stack.get(parser_top-2)).left;
2332 int peright = (parser_stack.get(parser_top-2)).right;
2333 Expression pe = (Expression)(parser_stack.get(parser_top-2)).value;
2334 int restleft = (parser_stack.get(parser_top-0)).left;
2335 int restright = (parser_stack.get(parser_top-0)).right;
2336 Expression rest = (Expression)(parser_stack.get(parser_top-0)).value;
2337 RESULT = new UnionPathExpr(pe, rest);
2338 parser_result = new Symbol(18/*UnionExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2339 }
2340 return parser_result;
2341
2342 /*. . . . . . . . . . . . . . . . . . . .*/
2343 case 61: // UnionExpr ::= PathExpr
2344 {
2345 Expression RESULT = null;
2346 int peleft = (parser_stack.get(parser_top-0)).left;
2347 int peright = (parser_stack.get(parser_top-0)).right;
2348 Expression pe = (Expression)(parser_stack.get(parser_top-0)).value;
2349 RESULT = pe;
2350 parser_result = new Symbol(18/*UnionExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2351 }
2352 return parser_result;
2353
2354 /*. . . . . . . . . . . . . . . . . . . .*/
2355 case 60: // UnaryExpr ::= MINUS UnaryExpr
2356 {
2357 Expression RESULT = null;
2358 int ueleft = (parser_stack.get(parser_top-0)).left;
2359 int ueright = (parser_stack.get(parser_top-0)).right;
2360 Expression ue = (Expression)(parser_stack.get(parser_top-0)).value;
2361 RESULT = new UnaryOpExpr(ue);
2362 parser_result = new Symbol(14/*UnaryExpr*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2363 }
2364 return parser_result;
2365
2366 /*. . . . . . . . . . . . . . . . . . . .*/
2367 case 59: // UnaryExpr ::= UnionExpr
2368 {
2369 Expression RESULT = null;
2370 int ueleft = (parser_stack.get(parser_top-0)).left;
2371 int ueright = (parser_stack.get(parser_top-0)).right;
2372 Expression ue = (Expression)(parser_stack.get(parser_top-0)).value;
2373 RESULT = ue;
2374 parser_result = new Symbol(14/*UnaryExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2375 }
2376 return parser_result;
2377
2378 /*. . . . . . . . . . . . . . . . . . . .*/
2379 case 58: // MultiplicativeExpr ::= MultiplicativeExpr MOD UnaryExpr
2380 {
2381 Expression RESULT = null;
2382 int meleft = (parser_stack.get(parser_top-2)).left;
2383 int meright = (parser_stack.get(parser_top-2)).right;
2384 Expression me = (Expression)(parser_stack.get(parser_top-2)).value;
2385 int ueleft = (parser_stack.get(parser_top-0)).left;
2386 int ueright = (parser_stack.get(parser_top-0)).right;
2387 Expression ue = (Expression)(parser_stack.get(parser_top-0)).value;
2388 RESULT = new BinOpExpr(BinOpExpr.MOD, me, ue);
2389 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2390 }
2391 return parser_result;
2392
2393 /*. . . . . . . . . . . . . . . . . . . .*/
2394 case 57: // MultiplicativeExpr ::= MultiplicativeExpr DIV UnaryExpr
2395 {
2396 Expression RESULT = null;
2397 int meleft = (parser_stack.get(parser_top-2)).left;
2398 int meright = (parser_stack.get(parser_top-2)).right;
2399 Expression me = (Expression)(parser_stack.get(parser_top-2)).value;
2400 int ueleft = (parser_stack.get(parser_top-0)).left;
2401 int ueright = (parser_stack.get(parser_top-0)).right;
2402 Expression ue = (Expression)(parser_stack.get(parser_top-0)).value;
2403 RESULT = new BinOpExpr(BinOpExpr.DIV, me, ue);
2404 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2405 }
2406 return parser_result;
2407
2408 /*. . . . . . . . . . . . . . . . . . . .*/
2409 case 56: // MultiplicativeExpr ::= MultiplicativeExpr STAR UnaryExpr
2410 {
2411 Expression RESULT = null;
2412 int meleft = (parser_stack.get(parser_top-2)).left;
2413 int meright = (parser_stack.get(parser_top-2)).right;
2414 Expression me = (Expression)(parser_stack.get(parser_top-2)).value;
2415 int ueleft = (parser_stack.get(parser_top-0)).left;
2416 int ueright = (parser_stack.get(parser_top-0)).right;
2417 Expression ue = (Expression)(parser_stack.get(parser_top-0)).value;
2418 RESULT = new BinOpExpr(BinOpExpr.TIMES, me, ue);
2419 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2420 }
2421 return parser_result;
2422
2423 /*. . . . . . . . . . . . . . . . . . . .*/
2424 case 55: // MultiplicativeExpr ::= UnaryExpr
2425 {
2426 Expression RESULT = null;
2427 int ueleft = (parser_stack.get(parser_top-0)).left;
2428 int ueright = (parser_stack.get(parser_top-0)).right;
2429 Expression ue = (Expression)(parser_stack.get(parser_top-0)).value;
2430 RESULT = ue;
2431 parser_result = new Symbol(13/*MultiplicativeExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2432 }
2433 return parser_result;
2434
2435 /*. . . . . . . . . . . . . . . . . . . .*/
2436 case 54: // AdditiveExpr ::= AdditiveExpr MINUS MultiplicativeExpr
2437 {
2438 Expression RESULT = null;
2439 int aeleft = (parser_stack.get(parser_top-2)).left;
2440 int aeright = (parser_stack.get(parser_top-2)).right;
2441 Expression ae = (Expression)(parser_stack.get(parser_top-2)).value;
2442 int meleft = (parser_stack.get(parser_top-0)).left;
2443 int meright = (parser_stack.get(parser_top-0)).right;
2444 Expression me = (Expression)(parser_stack.get(parser_top-0)).value;
2445 RESULT = new BinOpExpr(BinOpExpr.MINUS, ae, me);
2446 parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2447 }
2448 return parser_result;
2449
2450 /*. . . . . . . . . . . . . . . . . . . .*/
2451 case 53: // AdditiveExpr ::= AdditiveExpr PLUS MultiplicativeExpr
2452 {
2453 Expression RESULT = null;
2454 int aeleft = (parser_stack.get(parser_top-2)).left;
2455 int aeright = (parser_stack.get(parser_top-2)).right;
2456 Expression ae = (Expression)(parser_stack.get(parser_top-2)).value;
2457 int meleft = (parser_stack.get(parser_top-0)).left;
2458 int meright = (parser_stack.get(parser_top-0)).right;
2459 Expression me = (Expression)(parser_stack.get(parser_top-0)).value;
2460 RESULT = new BinOpExpr(BinOpExpr.PLUS, ae, me);
2461 parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2462 }
2463 return parser_result;
2464
2465 /*. . . . . . . . . . . . . . . . . . . .*/
2466 case 52: // AdditiveExpr ::= MultiplicativeExpr
2467 {
2468 Expression RESULT = null;
2469 int meleft = (parser_stack.get(parser_top-0)).left;
2470 int meright = (parser_stack.get(parser_top-0)).right;
2471 Expression me = (Expression)(parser_stack.get(parser_top-0)).value;
2472 RESULT = me;
2473 parser_result = new Symbol(12/*AdditiveExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2474 }
2475 return parser_result;
2476
2477 /*. . . . . . . . . . . . . . . . . . . .*/
2478 case 51: // RelationalExpr ::= RelationalExpr GE AdditiveExpr
2479 {
2480 Expression RESULT = null;
2481 int releft = (parser_stack.get(parser_top-2)).left;
2482 int reright = (parser_stack.get(parser_top-2)).right;
2483 Expression re = (Expression)(parser_stack.get(parser_top-2)).value;
2484 int aeleft = (parser_stack.get(parser_top-0)).left;
2485 int aeright = (parser_stack.get(parser_top-0)).right;
2486 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2487 RESULT = new RelationalExpr(Operators.GE, re, ae);
2488 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2489 }
2490 return parser_result;
2491
2492 /*. . . . . . . . . . . . . . . . . . . .*/
2493 case 50: // RelationalExpr ::= RelationalExpr LE AdditiveExpr
2494 {
2495 Expression RESULT = null;
2496 int releft = (parser_stack.get(parser_top-2)).left;
2497 int reright = (parser_stack.get(parser_top-2)).right;
2498 Expression re = (Expression)(parser_stack.get(parser_top-2)).value;
2499 int aeleft = (parser_stack.get(parser_top-0)).left;
2500 int aeright = (parser_stack.get(parser_top-0)).right;
2501 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2502 RESULT = new RelationalExpr(Operators.LE, re, ae);
2503 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2504 }
2505 return parser_result;
2506
2507 /*. . . . . . . . . . . . . . . . . . . .*/
2508 case 49: // RelationalExpr ::= RelationalExpr GT AdditiveExpr
2509 {
2510 Expression RESULT = null;
2511 int releft = (parser_stack.get(parser_top-2)).left;
2512 int reright = (parser_stack.get(parser_top-2)).right;
2513 Expression re = (Expression)(parser_stack.get(parser_top-2)).value;
2514 int aeleft = (parser_stack.get(parser_top-0)).left;
2515 int aeright = (parser_stack.get(parser_top-0)).right;
2516 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2517 RESULT = new RelationalExpr(Operators.GT, re, ae);
2518 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2519 }
2520 return parser_result;
2521
2522 /*. . . . . . . . . . . . . . . . . . . .*/
2523 case 48: // RelationalExpr ::= RelationalExpr LT AdditiveExpr
2524 {
2525 Expression RESULT = null;
2526 int releft = (parser_stack.get(parser_top-2)).left;
2527 int reright = (parser_stack.get(parser_top-2)).right;
2528 Expression re = (Expression)(parser_stack.get(parser_top-2)).value;
2529 int aeleft = (parser_stack.get(parser_top-0)).left;
2530 int aeright = (parser_stack.get(parser_top-0)).right;
2531 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2532 RESULT = new RelationalExpr(Operators.LT, re, ae);
2533 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2534 }
2535 return parser_result;
2536
2537 /*. . . . . . . . . . . . . . . . . . . .*/
2538 case 47: // RelationalExpr ::= AdditiveExpr
2539 {
2540 Expression RESULT = null;
2541 int aeleft = (parser_stack.get(parser_top-0)).left;
2542 int aeright = (parser_stack.get(parser_top-0)).right;
2543 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2544 RESULT = ae;
2545 parser_result = new Symbol(11/*RelationalExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2546 }
2547 return parser_result;
2548
2549 /*. . . . . . . . . . . . . . . . . . . .*/
2550 case 46: // EqualityExpr ::= EqualityExpr NE RelationalExpr
2551 {
2552 Expression RESULT = null;
2553 int eeleft = (parser_stack.get(parser_top-2)).left;
2554 int eeright = (parser_stack.get(parser_top-2)).right;
2555 Expression ee = (Expression)(parser_stack.get(parser_top-2)).value;
2556 int releft = (parser_stack.get(parser_top-0)).left;
2557 int reright = (parser_stack.get(parser_top-0)).right;
2558 Expression re = (Expression)(parser_stack.get(parser_top-0)).value;
2559 RESULT = new EqualityExpr(Operators.NE, ee, re);
2560 parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2561 }
2562 return parser_result;
2563
2564 /*. . . . . . . . . . . . . . . . . . . .*/
2565 case 45: // EqualityExpr ::= EqualityExpr EQ RelationalExpr
2566 {
2567 Expression RESULT = null;
2568 int eeleft = (parser_stack.get(parser_top-2)).left;
2569 int eeright = (parser_stack.get(parser_top-2)).right;
2570 Expression ee = (Expression)(parser_stack.get(parser_top-2)).value;
2571 int releft = (parser_stack.get(parser_top-0)).left;
2572 int reright = (parser_stack.get(parser_top-0)).right;
2573 Expression re = (Expression)(parser_stack.get(parser_top-0)).value;
2574 RESULT = new EqualityExpr(Operators.EQ, ee, re);
2575 parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2576 }
2577 return parser_result;
2578
2579 /*. . . . . . . . . . . . . . . . . . . .*/
2580 case 44: // EqualityExpr ::= RelationalExpr
2581 {
2582 Expression RESULT = null;
2583 int releft = (parser_stack.get(parser_top-0)).left;
2584 int reright = (parser_stack.get(parser_top-0)).right;
2585 Expression re = (Expression)(parser_stack.get(parser_top-0)).value;
2586 RESULT = re;
2587 parser_result = new Symbol(10/*EqualityExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2588 }
2589 return parser_result;
2590
2591 /*. . . . . . . . . . . . . . . . . . . .*/
2592 case 43: // AndExpr ::= AndExpr AND EqualityExpr
2593 {
2594 Expression RESULT = null;
2595 int aeleft = (parser_stack.get(parser_top-2)).left;
2596 int aeright = (parser_stack.get(parser_top-2)).right;
2597 Expression ae = (Expression)(parser_stack.get(parser_top-2)).value;
2598 int eeleft = (parser_stack.get(parser_top-0)).left;
2599 int eeright = (parser_stack.get(parser_top-0)).right;
2600 Expression ee = (Expression)(parser_stack.get(parser_top-0)).value;
2601 RESULT = new LogicalExpr(LogicalExpr.AND, ae, ee);
2602 parser_result = new Symbol(9/*AndExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2603 }
2604 return parser_result;
2605
2606 /*. . . . . . . . . . . . . . . . . . . .*/
2607 case 42: // AndExpr ::= EqualityExpr
2608 {
2609 Expression RESULT = null;
2610 int eleft = (parser_stack.get(parser_top-0)).left;
2611 int eright = (parser_stack.get(parser_top-0)).right;
2612 Expression e = (Expression)(parser_stack.get(parser_top-0)).value;
2613 RESULT = e;
2614 parser_result = new Symbol(9/*AndExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2615 }
2616 return parser_result;
2617
2618 /*. . . . . . . . . . . . . . . . . . . .*/
2619 case 41: // OrExpr ::= OrExpr OR AndExpr
2620 {
2621 Expression RESULT = null;
2622 int oeleft = (parser_stack.get(parser_top-2)).left;
2623 int oeright = (parser_stack.get(parser_top-2)).right;
2624 Expression oe = (Expression)(parser_stack.get(parser_top-2)).value;
2625 int aeleft = (parser_stack.get(parser_top-0)).left;
2626 int aeright = (parser_stack.get(parser_top-0)).right;
2627 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2628 RESULT = new LogicalExpr(LogicalExpr.OR, oe, ae);
2629 parser_result = new Symbol(8/*OrExpr*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2630 }
2631 return parser_result;
2632
2633 /*. . . . . . . . . . . . . . . . . . . .*/
2634 case 40: // OrExpr ::= AndExpr
2635 {
2636 Expression RESULT = null;
2637 int aeleft = (parser_stack.get(parser_top-0)).left;
2638 int aeright = (parser_stack.get(parser_top-0)).right;
2639 Expression ae = (Expression)(parser_stack.get(parser_top-0)).value;
2640 RESULT = ae;
2641 parser_result = new Symbol(8/*OrExpr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2642 }
2643 return parser_result;
2644
2645 /*. . . . . . . . . . . . . . . . . . . .*/
2646 case 39: // Expr ::= OrExpr
2647 {
2648 Expression RESULT = null;
2649 int exleft = (parser_stack.get(parser_top-0)).left;
2650 int exright = (parser_stack.get(parser_top-0)).right;
2651 Expression ex = (Expression)(parser_stack.get(parser_top-0)).value;
2652 RESULT = ex;
2653 parser_result = new Symbol(2/*Expr*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2654 }
2655 return parser_result;
2656
2657 /*. . . . . . . . . . . . . . . . . . . .*/
2658 case 38: // Predicate ::= LBRACK Expr RBRACK
2659 {
2660 Expression RESULT = null;
2661 int eleft = (parser_stack.get(parser_top-1)).left;
2662 int eright = (parser_stack.get(parser_top-1)).right;
2663 Expression e = (Expression)(parser_stack.get(parser_top-1)).value;
2664
2665 RESULT = new Predicate(e);
2666
2667 parser_result = new Symbol(5/*Predicate*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2668 }
2669 return parser_result;
2670
2671 /*. . . . . . . . . . . . . . . . . . . .*/
2672 case 37: // Predicates ::= Predicate Predicates
2673 {
2674 List<Expression> RESULT = null;
2675 int pleft = (parser_stack.get(parser_top-1)).left;
2676 int pright = (parser_stack.get(parser_top-1)).right;
2677 Expression p = (Expression)(parser_stack.get(parser_top-1)).value;
2678 int ppleft = (parser_stack.get(parser_top-0)).left;
2679 int ppright = (parser_stack.get(parser_top-0)).right;
2680 @SuppressWarnings("unchecked")
2681 List<Expression> pp = (ArrayList<Expression>)(parser_stack.get(parser_top-0)).value;
2682 pp.add(0, p); RESULT = pp;
2683 parser_result = new Symbol(35/*Predicates*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2684 }
2685 return parser_result;
2686
2687 /*. . . . . . . . . . . . . . . . . . . .*/
2688 case 36: // Predicates ::= Predicate
2689 {
2690 List<Expression> RESULT = null;
2691 int pleft = (parser_stack.get(parser_top-0)).left;
2692 int pright = (parser_stack.get(parser_top-0)).right;
2693 Expression p = (Expression)(parser_stack.get(parser_top-0)).value;
2694
2695 List<Expression> temp = new ArrayList<>();
2696 temp.add(p);
2697 RESULT = temp;
2698
2699 parser_result = new Symbol(35/*Predicates*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2700 }
2701 return parser_result;
2702
2703 /*. . . . . . . . . . . . . . . . . . . .*/
2704 case 35: // ChildOrAttributeAxisSpecifier ::= ATTRIBUTE DCOLON
2705 {
2706 Integer RESULT = null;
2707 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2708 parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2709 }
2710 return parser_result;
2711
2712 /*. . . . . . . . . . . . . . . . . . . .*/
2713 case 34: // ChildOrAttributeAxisSpecifier ::= CHILD DCOLON
2716 RESULT = Integer.valueOf(Axis.CHILD);
2717 parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2718 }
2719 return parser_result;
2720
2721 /*. . . . . . . . . . . . . . . . . . . .*/
2722 case 33: // ChildOrAttributeAxisSpecifier ::= ATSIGN
2723 {
2724 Integer RESULT = null;
2725 RESULT = Integer.valueOf(Axis.ATTRIBUTE);
2726 parser_result = new Symbol(42/*ChildOrAttributeAxisSpecifier*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2727 }
2728 return parser_result;
2729
2730 /*. . . . . . . . . . . . . . . . . . . .*/
2731 case 32: // NameTestPattern ::= QName
2732 {
2733 Object RESULT = null;
2734 int qnleft = (parser_stack.get(parser_top-0)).left;
2735 int qnright = (parser_stack.get(parser_top-0)).right;
2736 QName qn = (QName)(parser_stack.get(parser_top-0)).value;
2737 RESULT = qn;
2738 parser_result = new Symbol(34/*NameTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2739 }
2740 return parser_result;
2741
2742 /*. . . . . . . . . . . . . . . . . . . .*/
2743 case 31: // NameTestPattern ::= STAR
2744 {
2745 Object RESULT = null;
2746 RESULT = null;
2747 parser_result = new Symbol(34/*NameTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2748 }
2749 return parser_result;
2750
2751 /*. . . . . . . . . . . . . . . . . . . .*/
2752 case 30: // NodeTestPattern ::= PI
2753 {
2754 Object RESULT = null;
2755 RESULT = Integer.valueOf(NodeTest.PI);
2756 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2773 RESULT = Integer.valueOf(NodeTest.TEXT);
2774 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2775 }
2776 return parser_result;
2777
2778 /*. . . . . . . . . . . . . . . . . . . .*/
2779 case 27: // NodeTestPattern ::= NODE
2780 {
2781 Object RESULT = null;
2782 RESULT = Integer.valueOf(NodeTest.ANODE);
2783 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2784 }
2785 return parser_result;
2786
2787 /*. . . . . . . . . . . . . . . . . . . .*/
2788 case 26: // NodeTestPattern ::= NameTestPattern
2789 {
2790 Object RESULT = null;
2791 int ntleft = (parser_stack.get(parser_top-0)).left;
2792 int ntright = (parser_stack.get(parser_top-0)).right;
2793 Object nt = parser_stack.get(parser_top-0).value;
2794 RESULT = nt;
2795 parser_result = new Symbol(33/*NodeTestPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2796 }
2797 return parser_result;
2798
2799 /*. . . . . . . . . . . . . . . . . . . .*/
2800 case 25: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern Predicates
2801 {
2802 StepPattern RESULT = null;
2803 int axisleft = (parser_stack.get(parser_top-2)).left;
2804 int axisright = (parser_stack.get(parser_top-2)).right;
2805 Integer axis = (Integer)(parser_stack.get(parser_top-2)).value;
2806 int pipleft = (parser_stack.get(parser_top-1)).left;
2807 int pipright = (parser_stack.get(parser_top-1)).right;
2808 StepPattern pip = (StepPattern)(parser_stack.get(parser_top-1)).value;
2809 int ppleft = (parser_stack.get(parser_top-0)).left;
2810 int ppright = (parser_stack.get(parser_top-0)).right;
2811 @SuppressWarnings("unchecked")
2812 List<Predicate> pp = (ArrayList<Predicate>)(parser_stack.get(parser_top-0)).value;
2813
2814 // TODO: report error if axis is attribute
2815 RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2816
2817 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2818 }
2819 return parser_result;
2820
2821 /*. . . . . . . . . . . . . . . . . . . .*/
2822 case 24: // StepPattern ::= ChildOrAttributeAxisSpecifier ProcessingInstructionPattern
2823 {
2824 StepPattern RESULT = null;
2825 int axisleft = (parser_stack.get(parser_top-1)).left;
2826 int axisright = (parser_stack.get(parser_top-1)).right;
2827 Integer axis = (Integer)(parser_stack.get(parser_top-1)).value;
2828 int pipleft = (parser_stack.get(parser_top-0)).left;
2829 int pipright = (parser_stack.get(parser_top-0)).right;
2830 StepPattern pip = (StepPattern)(parser_stack.get(parser_top-0)).value;
2831
2832 RESULT = pip; // TODO: report error if axis is attribute
2833
2834 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2835 }
2836 return parser_result;
2837
2838 /*. . . . . . . . . . . . . . . . . . . .*/
2839 case 23: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern Predicates
2840 {
2841 StepPattern RESULT = null;
2842 int axisleft = (parser_stack.get(parser_top-2)).left;
2843 int axisright = (parser_stack.get(parser_top-2)).right;
2844 Integer axis = (Integer)(parser_stack.get(parser_top-2)).value;
2845 int ntleft = (parser_stack.get(parser_top-1)).left;
2846 int ntright = (parser_stack.get(parser_top-1)).right;
2847 Object nt = parser_stack.get(parser_top-1).value;
2848 int ppleft = (parser_stack.get(parser_top-0)).left;
2849 int ppright = (parser_stack.get(parser_top-0)).right;
2850 @SuppressWarnings("unchecked")
2851 List<Predicate>pp = (ArrayList<Predicate>)(parser_stack.get(parser_top-0)).value;
2852
2853 RESULT = parser.createStepPattern(axis.intValue(), nt, pp);
2854
2855 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2856 }
2857 return parser_result;
2858
2859 /*. . . . . . . . . . . . . . . . . . . .*/
2860 case 22: // StepPattern ::= ChildOrAttributeAxisSpecifier NodeTestPattern
2861 {
2862 StepPattern RESULT = null;
2863 int axisleft = (parser_stack.get(parser_top-1)).left;
2864 int axisright = (parser_stack.get(parser_top-1)).right;
2865 Integer axis = (Integer)(parser_stack.get(parser_top-1)).value;
2866 int ntleft = (parser_stack.get(parser_top-0)).left;
2867 int ntright = (parser_stack.get(parser_top-0)).right;
2868 Object nt = parser_stack.get(parser_top-0).value;
2869
2870 RESULT = parser.createStepPattern(axis.intValue(), nt, null);
2871
2872 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2873 }
2874 return parser_result;
2875
2876 /*. . . . . . . . . . . . . . . . . . . .*/
2877 case 21: // StepPattern ::= ProcessingInstructionPattern Predicates
2878 {
2879 StepPattern RESULT = null;
2880 int pipleft = (parser_stack.get(parser_top-1)).left;
2881 int pipright = (parser_stack.get(parser_top-1)).right;
2882 StepPattern pip = (StepPattern)(parser_stack.get(parser_top-1)).value;
2883 int ppleft = (parser_stack.get(parser_top-0)).left;
2884 int ppright = (parser_stack.get(parser_top-0)).right;
2885 @SuppressWarnings("unchecked")
2886 List<Predicate> pp = (ArrayList<Predicate>)(parser_stack.get(parser_top-0)).value;
2887 RESULT = (ProcessingInstructionPattern)pip.setPredicates(pp);
2888 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2889 }
2890 return parser_result;
2891
2892 /*. . . . . . . . . . . . . . . . . . . .*/
2893 case 20: // StepPattern ::= ProcessingInstructionPattern
2894 {
2895 StepPattern RESULT = null;
2896 int pipleft = (parser_stack.get(parser_top-0)).left;
2897 int pipright = (parser_stack.get(parser_top-0)).right;
2898 StepPattern pip = (StepPattern)(parser_stack.get(parser_top-0)).value;
2899 RESULT = pip;
2900 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2901 }
2902 return parser_result;
2903
2904 /*. . . . . . . . . . . . . . . . . . . .*/
2905 case 19: // StepPattern ::= NodeTestPattern Predicates
2906 {
2907 StepPattern RESULT = null;
2908 int ntleft = (parser_stack.get(parser_top-1)).left;
2909 int ntright = (parser_stack.get(parser_top-1)).right;
2910 Object nt = parser_stack.get(parser_top-1).value;
2911 int ppleft = (parser_stack.get(parser_top-0)).left;
2912 int ppright = (parser_stack.get(parser_top-0)).right;
2913 @SuppressWarnings("unchecked")
2914 List<Predicate> pp = (ArrayList<Predicate>)(parser_stack.get(parser_top-0)).value;
2915
2916 RESULT = parser.createStepPattern(Axis.CHILD, nt, pp);
2917
2918 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2919 }
2920 return parser_result;
2921
2922 /*. . . . . . . . . . . . . . . . . . . .*/
2923 case 18: // StepPattern ::= NodeTestPattern
2924 {
2925 StepPattern RESULT = null;
2926 int ntleft = (parser_stack.get(parser_top-0)).left;
2927 int ntright = (parser_stack.get(parser_top-0)).right;
2928 Object nt = parser_stack.get(parser_top-0).value;
2929
2930 RESULT = parser.createStepPattern(Axis.CHILD, nt, null);
2931
2932 parser_result = new Symbol(32/*StepPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2933 }
2934 return parser_result;
2935
2936 /*. . . . . . . . . . . . . . . . . . . .*/
2937 case 17: // RelativePathPattern ::= StepPattern DSLASH RelativePathPattern
2938 {
2939 RelativePathPattern RESULT = null;
2940 int spleft = (parser_stack.get(parser_top-2)).left;
2941 int spright = (parser_stack.get(parser_top-2)).right;
2942 StepPattern sp = (StepPattern)(parser_stack.get(parser_top-2)).value;
2943 int rppleft = (parser_stack.get(parser_top-0)).left;
2944 int rppright = (parser_stack.get(parser_top-0)).right;
2945 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
2946 RESULT = new AncestorPattern(sp, rpp);
2947 parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2948 }
2949 return parser_result;
2950
2951 /*. . . . . . . . . . . . . . . . . . . .*/
2952 case 16: // RelativePathPattern ::= StepPattern SLASH RelativePathPattern
2953 {
2954 RelativePathPattern RESULT = null;
2955 int spleft = (parser_stack.get(parser_top-2)).left;
2956 int spright = (parser_stack.get(parser_top-2)).right;
2957 StepPattern sp = (StepPattern)(parser_stack.get(parser_top-2)).value;
2958 int rppleft = (parser_stack.get(parser_top-0)).left;
2959 int rppright = (parser_stack.get(parser_top-0)).right;
2960 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
2961 RESULT = new ParentPattern(sp, rpp);
2962 parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2963 }
2964 return parser_result;
2965
2966 /*. . . . . . . . . . . . . . . . . . . .*/
2967 case 15: // RelativePathPattern ::= StepPattern
2968 {
2969 RelativePathPattern RESULT = null;
2970 int spleft = (parser_stack.get(parser_top-0)).left;
2971 int spright = (parser_stack.get(parser_top-0)).right;
2972 StepPattern sp = (StepPattern)(parser_stack.get(parser_top-0)).value;
2973 RESULT = sp;
2974 parser_result = new Symbol(31/*RelativePathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2975 }
2976 return parser_result;
2977
2978 /*. . . . . . . . . . . . . . . . . . . .*/
2979 case 14: // ProcessingInstructionPattern ::= PIPARAM LPAREN Literal RPAREN
2980 {
2981 StepPattern RESULT = null;
2982 int lleft = (parser_stack.get(parser_top-1)).left;
2983 int lright = (parser_stack.get(parser_top-1)).right;
2984 String l = (String)(parser_stack.get(parser_top-1)).value;
2985 RESULT = new ProcessingInstructionPattern(l);
2986 parser_result = new Symbol(30/*ProcessingInstructionPattern*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
2987 }
2988 return parser_result;
2989
2990 /*. . . . . . . . . . . . . . . . . . . .*/
2991 case 13: // IdKeyPattern ::= KEY LPAREN Literal COMMA Literal RPAREN
2992 {
2993 IdKeyPattern RESULT = null;
2994 int l1left = (parser_stack.get(parser_top-3)).left;
2995 int l1right = (parser_stack.get(parser_top-3)).right;
2996 String l1 = (String)(parser_stack.get(parser_top-3)).value;
2997 int l2left = (parser_stack.get(parser_top-1)).left;
2998 int l2right = (parser_stack.get(parser_top-1)).right;
2999 String l2 = (String)(parser_stack.get(parser_top-1)).value;
3000 RESULT = new KeyPattern(l1, l2);
3001 parser_result = new Symbol(27/*IdKeyPattern*/, (parser_stack.get(parser_top-5)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3002 }
3003 return parser_result;
3004
3005 /*. . . . . . . . . . . . . . . . . . . .*/
3006 case 12: // IdKeyPattern ::= ID LPAREN Literal RPAREN
3007 {
3008 IdKeyPattern RESULT = null;
3009 int lleft = (parser_stack.get(parser_top-1)).left;
3010 int lright = (parser_stack.get(parser_top-1)).right;
3011 String l = (String)(parser_stack.get(parser_top-1)).value;
3012 RESULT = new IdPattern(l);
3013 parser.setHasIdCall(true);
3014
3015 parser_result = new Symbol(27/*IdKeyPattern*/, (parser_stack.get(parser_top-3)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3016 }
3017 return parser_result;
3018
3019 /*. . . . . . . . . . . . . . . . . . . .*/
3020 case 11: // LocationPathPattern ::= RelativePathPattern
3021 {
3022 Pattern RESULT = null;
3023 int rppleft = (parser_stack.get(parser_top-0)).left;
3024 int rppright = (parser_stack.get(parser_top-0)).right;
3025 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
3026 RESULT = rpp;
3027 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3028 }
3029 return parser_result;
3030
3031 /*. . . . . . . . . . . . . . . . . . . .*/
3032 case 10: // LocationPathPattern ::= DSLASH RelativePathPattern
3033 {
3034 Pattern RESULT = null;
3035 int rppleft = (parser_stack.get(parser_top-0)).left;
3036 int rppright = (parser_stack.get(parser_top-0)).right;
3037 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
3038 RESULT = new AncestorPattern(rpp);
3039 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3040 }
3041 return parser_result;
3042
3043 /*. . . . . . . . . . . . . . . . . . . .*/
3044 case 9: // LocationPathPattern ::= IdKeyPattern DSLASH RelativePathPattern
3045 {
3046 Pattern RESULT = null;
3047 int ikpleft = (parser_stack.get(parser_top-2)).left;
3048 int ikpright = (parser_stack.get(parser_top-2)).right;
3049 IdKeyPattern ikp = (IdKeyPattern)(parser_stack.get(parser_top-2)).value;
3050 int rppleft = (parser_stack.get(parser_top-0)).left;
3051 int rppright = (parser_stack.get(parser_top-0)).right;
3052 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
3053 RESULT = new AncestorPattern(ikp, rpp);
3054 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3055 }
3056 return parser_result;
3057
3058 /*. . . . . . . . . . . . . . . . . . . .*/
3059 case 8: // LocationPathPattern ::= IdKeyPattern SLASH RelativePathPattern
3060 {
3061 Pattern RESULT = null;
3062 int ikpleft = (parser_stack.get(parser_top-2)).left;
3063 int ikpright = (parser_stack.get(parser_top-2)).right;
3064 IdKeyPattern ikp = (IdKeyPattern)(parser_stack.get(parser_top-2)).value;
3065 int rppleft = (parser_stack.get(parser_top-0)).left;
3066 int rppright = (parser_stack.get(parser_top-0)).right;
3067 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
3068 RESULT = new ParentPattern(ikp, rpp);
3069 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3070 }
3071 return parser_result;
3072
3073 /*. . . . . . . . . . . . . . . . . . . .*/
3074 case 7: // LocationPathPattern ::= IdKeyPattern
3075 {
3076 Pattern RESULT = null;
3077 int ikpleft = (parser_stack.get(parser_top-0)).left;
3078 int ikpright = (parser_stack.get(parser_top-0)).right;
3079 IdKeyPattern ikp = (IdKeyPattern)(parser_stack.get(parser_top-0)).value;
3080 RESULT = ikp;
3081 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3082 }
3083 return parser_result;
3084
3085 /*. . . . . . . . . . . . . . . . . . . .*/
3086 case 6: // LocationPathPattern ::= SLASH RelativePathPattern
3087 {
3088 Pattern RESULT = null;
3089 int rppleft = (parser_stack.get(parser_top-0)).left;
3090 int rppright = (parser_stack.get(parser_top-0)).right;
3091 RelativePathPattern rpp = (RelativePathPattern)(parser_stack.get(parser_top-0)).value;
3092 RESULT = new AbsolutePathPattern(rpp);
3093 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3094 }
3095 return parser_result;
3096
3097 /*. . . . . . . . . . . . . . . . . . . .*/
3098 case 5: // LocationPathPattern ::= SLASH
3099 {
3100 Pattern RESULT = null;
3101 RESULT = new AbsolutePathPattern(null);
3102 parser_result = new Symbol(29/*LocationPathPattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3103 }
3104 return parser_result;
3105
3106 /*. . . . . . . . . . . . . . . . . . . .*/
3107 case 4: // Pattern ::= LocationPathPattern VBAR Pattern
3108 {
3109 Pattern RESULT = null;
3110 int lppleft = (parser_stack.get(parser_top-2)).left;
3111 int lppright = (parser_stack.get(parser_top-2)).right;
3112 Pattern lpp = (Pattern)(parser_stack.get(parser_top-2)).value;
3113 int pleft = (parser_stack.get(parser_top-0)).left;
3114 int pright = (parser_stack.get(parser_top-0)).right;
3115 Pattern p = (Pattern)(parser_stack.get(parser_top-0)).value;
3116 RESULT = new AlternativePattern(lpp, p);
3117 parser_result = new Symbol(28/*Pattern*/, (parser_stack.get(parser_top-2)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3118 }
3119 return parser_result;
3120
3121 /*. . . . . . . . . . . . . . . . . . . .*/
3122 case 3: // Pattern ::= LocationPathPattern
3123 {
3124 Pattern RESULT = null;
3125 int lppleft = (parser_stack.get(parser_top-0)).left;
3126 int lppright = (parser_stack.get(parser_top-0)).right;
3127 Pattern lpp = (Pattern)(parser_stack.get(parser_top-0)).value;
3128 RESULT = lpp;
3129 parser_result = new Symbol(28/*Pattern*/, (parser_stack.get(parser_top-0)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3130 }
3131 return parser_result;
3132
3133 /*. . . . . . . . . . . . . . . . . . . .*/
3134 case 2: // TopLevel ::= EXPRESSION Expr
3135 {
3136 SyntaxTreeNode RESULT = null;
3137 int exprleft = (parser_stack.get(parser_top-0)).left;
3138 int exprright = (parser_stack.get(parser_top-0)).right;
3139 Expression expr = (Expression)(parser_stack.get(parser_top-0)).value;
3140 RESULT = expr;
3141 parser_result = new Symbol(1/*TopLevel*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3142 }
3143 return parser_result;
3144
3145 /*. . . . . . . . . . . . . . . . . . . .*/
3146 case 1: // TopLevel ::= PATTERN Pattern
3147 {
3148 SyntaxTreeNode RESULT = null;
3149 int patternleft = (parser_stack.get(parser_top-0)).left;
3150 int patternright = (parser_stack.get(parser_top-0)).right;
3151 Pattern pattern = (Pattern)(parser_stack.get(parser_top-0)).value;
3152 RESULT = pattern;
3153 parser_result = new Symbol(1/*TopLevel*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3154 }
3155 return parser_result;
3156
3157 /*. . . . . . . . . . . . . . . . . . . .*/
3158 case 0: // $START ::= TopLevel EOF
3159 {
3160 Object RESULT = null;
3161 int start_valleft = (parser_stack.get(parser_top-1)).left;
3162 int start_valright = (parser_stack.get(parser_top-1)).right;
3163 SyntaxTreeNode start_val = (SyntaxTreeNode)(parser_stack.get(parser_top-1)).value;
3164 RESULT = start_val;
3165 parser_result = new Symbol(0/*$START*/, (parser_stack.get(parser_top-1)).left, (parser_stack.get(parser_top-0)).right, RESULT);
3166 }
3167 /* ACCEPT */
3168 parser_parser.done_parsing();
3169 return parser_result;
3170
3171 /* . . . . . .*/
3172 default:
3173 throw new Exception(
3174 "Invalid action number found in internal parse table");
3175
3176 }
3177 }
3178 }
|