final public void NodeTest()

in src/main/java/org/apache/commons/jxpath/ri/parser/XPathParser.java [3093:3255]


    final public void NodeTest(final ArrayList steps) throws ParseException {
        int axis;
        int type = -1;
        String instruction = null;
        Object name = null;
        Object s;
        Object p;
        final ArrayList ps = new ArrayList();
        switch (jj_nt.kind) {
        case OR:
        case AND:
        case MOD:
        case DIV:
        case NODE:
        case TEXT:
        case COMMENT:
        case PI:
        case AXIS_SELF:
        case AXIS_CHILD:
        case AXIS_PARENT:
        case AXIS_ANCESTOR:
        case AXIS_ATTRIBUTE:
        case AXIS_NAMESPACE:
        case AXIS_PRECEDING:
        case AXIS_FOLLOWING:
        case AXIS_DESCENDANT:
        case AXIS_ANCESTOR_OR_SELF:
        case AXIS_FOLLOWING_SIBLING:
        case AXIS_PRECEDING_SIBLING:
        case AXIS_DESCENDANT_OR_SELF:
        case FUNCTION_LAST:
        case FUNCTION_POSITION:
        case FUNCTION_COUNT:
        case FUNCTION_ID:
        case FUNCTION_KEY:
        case FUNCTION_LOCAL_NAME:
        case FUNCTION_NAMESPACE_URI:
        case FUNCTION_NAME:
        case FUNCTION_STRING:
        case FUNCTION_CONCAT:
        case FUNCTION_STARTS_WITH:
        case FUNCTION_ENDS_WITH:
        case FUNCTION_CONTAINS:
        case FUNCTION_SUBSTRING_BEFORE:
        case FUNCTION_SUBSTRING_AFTER:
        case FUNCTION_SUBSTRING:
        case FUNCTION_STRING_LENGTH:
        case FUNCTION_NORMALIZE_SPACE:
        case FUNCTION_TRANSLATE:
        case FUNCTION_BOOLEAN:
        case FUNCTION_NOT:
        case FUNCTION_TRUE:
        case FUNCTION_FALSE:
        case FUNCTION_NULL:
        case FUNCTION_LANG:
        case FUNCTION_NUMBER:
        case FUNCTION_SUM:
        case FUNCTION_FLOOR:
        case FUNCTION_CEILING:
        case FUNCTION_ROUND:
        case FUNCTION_FORMAT_NUMBER:
        case NCName:
        case 87:
        case 89:
            axis = AxisSpecifier();
            if (jj_2_3(2147483647)) {
                type = NodeType();
                jj_consume_token(81);
                jj_consume_token(82);
            } else if (jj_2_4(2147483647)) {
                jj_consume_token(PI);
                jj_consume_token(81);
                jj_consume_token(Literal);
                instruction = unescape(token.image.substring(1, token.image.length() - 1));
                jj_consume_token(82);
            } else {
                switch (jj_nt.kind) {
                case OR:
                case AND:
                case MOD:
                case DIV:
                case NODE:
                case TEXT:
                case COMMENT:
                case PI:
                case FUNCTION_LAST:
                case FUNCTION_POSITION:
                case FUNCTION_COUNT:
                case FUNCTION_ID:
                case FUNCTION_KEY:
                case FUNCTION_LOCAL_NAME:
                case FUNCTION_NAMESPACE_URI:
                case FUNCTION_NAME:
                case FUNCTION_STRING:
                case FUNCTION_CONCAT:
                case FUNCTION_STARTS_WITH:
                case FUNCTION_ENDS_WITH:
                case FUNCTION_CONTAINS:
                case FUNCTION_SUBSTRING_BEFORE:
                case FUNCTION_SUBSTRING_AFTER:
                case FUNCTION_SUBSTRING:
                case FUNCTION_STRING_LENGTH:
                case FUNCTION_NORMALIZE_SPACE:
                case FUNCTION_TRANSLATE:
                case FUNCTION_BOOLEAN:
                case FUNCTION_NOT:
                case FUNCTION_TRUE:
                case FUNCTION_FALSE:
                case FUNCTION_NULL:
                case FUNCTION_LANG:
                case FUNCTION_NUMBER:
                case FUNCTION_SUM:
                case FUNCTION_FLOOR:
                case FUNCTION_CEILING:
                case FUNCTION_ROUND:
                case FUNCTION_FORMAT_NUMBER:
                case NCName:
                case 89:
                    name = WildcardName();
                    break;
                default:
                    jj_la1[10] = jj_gen;
                    jj_consume_token(-1);
                    throw new ParseException();
                }
            }
            break;
        case 83:
            jj_consume_token(83);
            axis = Compiler.AXIS_SELF;
            type = Compiler.NODE_TYPE_NODE;
            break;
        case 84:
            jj_consume_token(84);
            axis = Compiler.AXIS_PARENT;
            type = Compiler.NODE_TYPE_NODE;
            break;
        default:
            jj_la1[11] = jj_gen;
            jj_consume_token(-1);
            throw new ParseException();
        }
        label_3: while (true) {
            switch (jj_nt.kind) {
            case 85:
                ;
                break;
            default:
                jj_la1[12] = jj_gen;
                break label_3;
            }
            p = Predicate();
            ps.add(p);
        }
        if (name != null) {
            s = compiler.nodeNameTest(name);
        } else if (instruction != null) {
            s = compiler.processingInstructionTest(instruction);
        } else {
            s = compiler.nodeTypeTest(type);
        }
        steps.add(compiler.step(axis, s, ps.toArray()));
    }