/* * Generated using "maven jackrabbit:generage-xpath-parser-jjt" from the * the following files with the following copyright and license notices: * * javacc.xsl, jjtree.xsl, and strip.xsl: * -------------------------------------- * Copyright (c) 2002 World Wide Web Consortium, * (Massachusetts Institute of Technology, Institut National de * Recherche en Informatique et en Automatique, Keio University). All * Rights Reserved. This program is distributed under the W3C's Software * Intellectual Property License. This program is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. * See W3C License http://www.w3.org/Consortium/Legal/ for more details. * * jjtree-jackrabbit.xsl: * ---------------------- * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * xpath-grammar.xml: * ------------------ * Copyright (c) 2002 W3C(r) (http://www.w3.org/) (MIT (http://www.lcs.mit.edu/), * INRIA (http://www.inria.fr/), Keio (http://www.keio.ac.jp/)), * All Rights Reserved. * See http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Copyright. * W3C liability * (http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Legal_Disclaimer), * trademark * (http://www.w3.org/Consortium/Legal/ipr-notice-20000612#W3C_Trademarks), * document use * (http://www.w3.org/Consortium/Legal/copyright-documents-19990405), * and software licensing rules * (http://www.w3.org/Consortium/Legal/copyright-software-19980720) * apply. */ options { STATIC = false; MULTI=false; VISITOR=true ; // invokes the JJTree Visitor support NODE_SCOPE_HOOK=false; NODE_USES_PARSER=true; } PARSER_BEGIN(XPath) package org.apache.jackrabbit.spi.commons.query.xpath; import java.io.*; import java.util.Stack; import java.util.Vector; public class XPath { boolean m_isMatchPattern = false; boolean isStep = false; Stack binaryTokenStack = new Stack(); public Node createNode(int id) { return null; } public static void main(String args[]) throws Exception { int numberArgsLeft = args.length; int argsStart = 0; boolean isMatchParser = false; if(numberArgsLeft > 0) { if(args[argsStart].equals("-match")) { isMatchParser = true; System.out.println("Match Pattern Parser"); argsStart++; numberArgsLeft--; } } if(numberArgsLeft > 0) { try { final boolean dumpTree = true; if(args[0].endsWith(".xquery")) { System.out.println("Running test for: "+args[0]); File file = new File(args[0]); FileInputStream fis = new FileInputStream(file); XPath parser = new XPath(fis); SimpleNode tree = parser.XPath2(); if(dumpTree) tree.dump("|") ; } else { for(int i = argsStart; i < args.length; i++) { System.out.println(); System.out.println("Test["+i+"]: "+args[i]); XPath parser = new XPath(new java.io.StringBufferInputStream(args[i])); SimpleNode tree; if(isMatchParser) { tree = parser.XPath2(); } else { tree = parser.XPath2(); } ((SimpleNode)tree.jjtGetChild(0)).dump("|") ; } System.out.println("Success!!!!"); } } catch(ParseException pe) { System.err.println(pe.getMessage()); } return; } java.io.DataInputStream dinput = new java.io.DataInputStream(System.in); while(true) { try { System.err.println("Type Expression: "); String input = dinput.readLine(); if(null == input || input.trim().length() == 0) break; XPath parser = new XPath(new java.io.StringBufferInputStream(input)); SimpleNode tree; if(isMatchParser) { tree = parser.XPath2(); } else { tree = parser.XPath2(); } ((SimpleNode)tree.jjtGetChild(0)).dump("|") ; } catch(ParseException pe) { System.err.println(pe.getMessage()); } catch(Exception e) { System.err.println(e.getMessage()); } } } } PARSER_END(XPath) TOKEN_MGR_DECLS : { private Stack stateStack = new Stack(); // private Vector persistentLexStates = new Vector(); static final int PARENMARKER = 2000; /** * Push the current state onto the state stack. */ private void pushState() { // System.err.println("pushing: "+curLexState); printLinePos(); stateStack.addElement(new Integer(curLexState)); } /** * Push the given state onto the state stack. * @param state Must be a valid state. */ private void pushState(int state) { stateStack.push(new Integer(state)); } /** * Pop the state on the state stack, and switch to that state. */ private void popState() { if (stateStack.size() == 0) { printLinePos(); } int nextState = ((Integer) stateStack.pop()).intValue(); // System.err.println("pop "+nextState); printLinePos(); if(nextState == PARENMARKER) printLinePos(); SwitchTo(nextState); } /** * Push the given state onto the state stack. * @param state Must be a valid state. */ private boolean isState(int state) { for (int i = 0; i < stateStack.size(); i++) { if(((Integer) stateStack.elementAt(i)).intValue() == state) { return true; } } return false; } /** * Push a parenthesis state. This pushes, in addition to the * lexical state value, a special marker that lets * resetParenStateOrSwitch(int state) * know if it should pop and switch. Used for the comma operator. */ private void pushParenState(int commaState, int rparState) { stateStack.push(new Integer(rparState)); stateStack.push(new Integer(commaState)); stateStack.push(new Integer(PARENMARKER)); SwitchTo(commaState); } /** * Print the current line position. */ public void printLinePos() { System.err.println("Line: " + input_stream.getEndLine()); } } SimpleNode XPath2() : {} { QueryList() { return jjtThis ; } } TOKEN : { < IntegerLiteral : > : OPERATOR } TOKEN : { < DecimalLiteral : (("." ) | ( "." (["0" - "9"])*)) > : OPERATOR } TOKEN : { < DoubleLiteral : (("." ) | ( ("." (["0" - "9"])*)?)) ["e", "E"] (["+", "-"])? > : OPERATOR } TOKEN : { < StringLiteral : (("\"" ((("\"" "\"") | ~["\""]))* "\"") | ("'" ((("'" "'") | ~["'"]))* "'")) > : OPERATOR } TOKEN : { < StringLiteralForKindTest : (("\"" ((("\"" "\"") | ~["\""]))* "\"") | ("'" ((("'" "'") | ~["'"]))* "'")) > : KINDTESTFORPI } TOKEN : { < XQueryVersion : "xquery" ()* "version" > : XQUERYVERSION } TOKEN : { < StringLiteralForVersion : (("\"" ((("\"" "\"") | ~["\""]))* "\"") | ("'" ((("'" "'") | ~["'"]))* "'")) > : XQUERYVERSION } TOKEN : { < XQueryEncoding : "encoding" > : XQUERYVERSION } TOKEN : { < AtStringLiteral : "at" ()* > : DEFAULT } TOKEN : { < URLLiteral : (("\"" ((("\"" "\"") | ~["\""]))* "\"") | ("'" ((("'" "'") | ~["'"]))* "'")) > : DEFAULT } TOKEN : { < ModuleNamespace : "module" ()* "namespace" > : NAMESPACEDECL } SKIP: { < > } TOKEN : { < #skip_ : ((()+ )) > } SKIP : { < NotOccurrenceIndicator : ~["*", "?", "+"] > { input_stream.backup(1); } : OPERATOR } TOKEN : { < ProcessingInstructionStart : " { pushState(OPERATOR); } : PROCESSING_INSTRUCTION } TOKEN : { < ProcessingInstructionStartForElementContent : " { pushState(); } : PROCESSING_INSTRUCTION } TOKEN : { < ProcessingInstructionEnd : "?>" > { popState(); } } TOKEN : { < AxisChild : "child" ()* "::" > : DEFAULT } TOKEN : { < AxisDescendant : "descendant" ()* "::" > : DEFAULT } TOKEN : { < AxisParent : "parent" ()* "::" > : DEFAULT } TOKEN : { < AxisAttribute : "attribute" ()* "::" > : DEFAULT } TOKEN : { < AxisSelf : "self" ()* "::" > : DEFAULT } TOKEN : { < AxisDescendantOrSelf : "descendant-or-self" ()* "::" > : DEFAULT } TOKEN : { < AxisAncestor : "ancestor" ()* "::" > : DEFAULT } TOKEN : { < AxisFollowingSibling : "following-sibling" ()* "::" > : DEFAULT } TOKEN : { < AxisPrecedingSibling : "preceding-sibling" ()* "::" > : DEFAULT } TOKEN : { < AxisFollowing : "following" ()* "::" > : DEFAULT } TOKEN : { < AxisPreceding : "preceding" ()* "::" > : DEFAULT } TOKEN : { < AxisAncestorOrSelf : "ancestor-or-self" ()* "::" > : DEFAULT } TOKEN : { < DefineFunction : "declare" ()+ "function" > : DEFAULT } TOKEN : { < DeclareOrdering : "declare" ()+ "ordering" > : OPERATOR } TOKEN : { < Ordered : "ordered" > : DEFAULT } TOKEN : { < Unordered : "unordered" > : DEFAULT } TOKEN : { < DeclareDefaultOrderingEmpty : "declare" ()+ "default" ()+ "order" > : OPERATOR } TOKEN : { < DeclareInheritNamespaces : "declare" ()+ "inherit-namespaces" > : OPERATOR } TOKEN : { < Yes : "yes" > : DEFAULT } TOKEN : { < No : "no" > : DEFAULT } TOKEN : { < External : "external" > : DEFAULT } TOKEN : { < Or : "or" > : DEFAULT } TOKEN : { < And : "and" > : DEFAULT } TOKEN : { < Div : "div" > : DEFAULT } TOKEN : { < Idiv : "idiv" > : DEFAULT } TOKEN : { < Mod : "mod" > : DEFAULT } TOKEN : { < Multiply : "*" > : DEFAULT } TOKEN : { < In : "in" > : DEFAULT } TOKEN : { < PITarget : > : PROCESSING_INSTRUCTION } TOKEN : { < #Prefix : > } TOKEN : { < #LocalPart : > } TOKEN : { < VariableIndicator : "$" > : VARNAME } TOKEN : { < VarName : > : OPERATOR } TOKEN : { < #ValidationMode : ("lax" | "strict") > } TOKEN : { < SchemaModeForDeclareConstruction : ("preserve" | "strip") > : DEFAULT } TOKEN : { < Nillable : "?" > : CLOSEKINDTEST } TOKEN : { < DeclareConstruction : "declare" ()+ "construction" > : OPERATOR } TOKEN : { < Satisfies : "satisfies" > : DEFAULT } TOKEN : { < Return : "return" > : DEFAULT } TOKEN : { < Then : "then" > : DEFAULT } TOKEN : { < Else : "else" > : DEFAULT } TOKEN : { < Default : "default" > : OPERATOR } TOKEN : { < DeclareXMLSpace : "declare" ()+ "xmlspace" > : XMLSPACE_DECL } TOKEN : { < DeclareBaseURI : "declare" ()+ "base-uri" > : NAMESPACEDECL } TOKEN : { < XMLSpacePreserve : "preserve" > : DEFAULT } TOKEN : { < XMLSpaceStrip : "strip" > : DEFAULT } TOKEN : { < Namespace : "namespace" > : NAMESPACEDECL } TOKEN : { < DeclareNamespace : "declare" ()+ "namespace" > : NAMESPACEDECL } TOKEN : { < To : "to" > : DEFAULT } TOKEN : { < Where : "where" > : DEFAULT } TOKEN : { < Collation : "collation" > : OPERATOR } TOKEN : { < Intersect : "intersect" > : DEFAULT } TOKEN : { < Union : "union" > : DEFAULT } TOKEN : { < Except : "except" > : DEFAULT } TOKEN : { < As : "as" > : ITEMTYPE } TOKEN : { < AtWord : "at" > : DEFAULT } TOKEN : { < Case : "case" > : ITEMTYPE } TOKEN : { < Instanceof : "instance" ()+ "of" > : ITEMTYPE } TOKEN : { < Castable : "castable" ()+ "as" > : SINGLETYPE } TOKEN : { < Item : "item" ()* "(" ()* ")" > : OCCURRENCEINDICATOR } TOKEN : { < ElementType : "element" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < AttributeType : "attribute" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < SchemaElementType : "schema-element" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < SchemaAttributeType : "schema-attribute" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < OrderedOpen : "ordered" ()* "{" > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < UnorderedOpen : "unordered" ()* "{" > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < ElementQNameLbrace : "element" ()+ ()* "{" > { pushState(OPERATOR); } } TOKEN : { < AttributeQNameLbrace : "attribute" ()+ ()* "{" > { pushState(OPERATOR); } } TOKEN : { < PINCNameLbrace : "processing-instruction" ()+ ()* "{" > { pushState(OPERATOR); } } TOKEN : { < PILbrace : "processing-instruction" ()* "{" > { pushState(OPERATOR); } } TOKEN : { < CommentLbrace : "comment" ()* "{" > { pushState(OPERATOR); } } TOKEN : { < ElementLbrace : "element" ()* "{" > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < AttributeLbrace : "attribute" ()* "{" > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < TextLbrace : "text" ()* "{" > { pushState(OPERATOR); } } TOKEN : { < DeclareCollation : "declare" ()+ "default" ()+ "collation" > : NAMESPACEDECL } TOKEN : { < DefaultElement : "default" ()+ "element" > : NAMESPACEKEYWORD } TOKEN : { < DeclareDefaultElement : "declare" ()+ "default" ()+ "element" > : NAMESPACEKEYWORD } TOKEN : { < DeclareDefaultFunction : "declare" ()+ "default" ()+ "function" > : NAMESPACEKEYWORD } TOKEN : { < EmptyTok : "empty" ()* "(" ()* ")" > : OPERATOR } TOKEN : { < ImportSchemaToken : "import" ()+ "schema" > : NAMESPACEKEYWORD } TOKEN : { < ImportModuleToken : "import" ()+ "module" > : NAMESPACEKEYWORD } TOKEN : { < #Nmstart : ( | "_") > } TOKEN : { < #Nmchar : ( | | | | "." | "-" | "_") > } TOKEN : { < Star : "*" > : OPERATOR } TOKEN : { < AnyName : "*" > : CLOSEKINDTEST } TOKEN : { < NCNameColonStar : ":" "*" > : OPERATOR } TOKEN : { < StarColonNCName : "*" ":" > : OPERATOR } TOKEN : { < Root : "/" > : DEFAULT } TOKEN : { < RootDescendants : "//" > : DEFAULT } TOKEN : { < Slash : "/" > : DEFAULT } TOKEN : { < SlashSlash : "//" > : DEFAULT } TOKEN : { < Equals : "=" > : DEFAULT } TOKEN : { < AssignEquals : "=" > : NAMESPACEDECL } TOKEN : { < Is : "is" > : DEFAULT } TOKEN : { < NotEquals : "!=" > : DEFAULT } TOKEN : { < LtEquals : "<=" > : DEFAULT } TOKEN : { < LtLt : "<<" > : DEFAULT } TOKEN : { < GtEquals : ">=" > : DEFAULT } TOKEN : { < GtGt : ">>" > : DEFAULT } TOKEN : { < FortranEq : "eq" > : DEFAULT } TOKEN : { < FortranNe : "ne" > : DEFAULT } TOKEN : { < FortranGt : "gt" > : DEFAULT } TOKEN : { < FortranGe : "ge" > : DEFAULT } TOKEN : { < FortranLt : "lt" > : DEFAULT } TOKEN : { < FortranLe : "le" > : DEFAULT } TOKEN : { < ColonEquals : ":=" > : DEFAULT } TOKEN : { < Lt : "<" > : DEFAULT } TOKEN : { < Gt : ">" > : DEFAULT } TOKEN : { < Minus : "-" > : DEFAULT } TOKEN : { < Plus : "+" > : DEFAULT } TOKEN : { < UnaryMinus : "-" > : DEFAULT } TOKEN : { < UnaryPlus : "+" > : DEFAULT } TOKEN : { < OccurrenceZeroOrOne : "?" > : OPERATOR } TOKEN : { < OccurrenceZeroOrMore : "*" > : OPERATOR } TOKEN : { < OccurrenceOneOrMore : "+" > : OPERATOR } TOKEN : { < Vbar : "|" > : DEFAULT } TOKEN : { < Lpar : "(" > : DEFAULT } TOKEN : { < At : "@" > : DEFAULT } TOKEN : { < Lbrack : "[" > : DEFAULT } TOKEN : { < Rbrack : "]" > : OPERATOR } TOKEN : { < Rpar : ")" > : OPERATOR } TOKEN : { < RparForKindTest : ")" > { popState(); } } TOKEN : { < Some : "some" ()* > : VARNAME } TOKEN : { < Every : "every" ()* > : VARNAME } TOKEN : { < ForVariable : "for" ()* > : VARNAME } TOKEN : { < LetVariable : "let" ()* > : VARNAME } TOKEN : { < CastAs : "cast" ()+ "as" > : SINGLETYPE } TOKEN : { < TreatAs : "treat" ()+ "as" > : ITEMTYPE } TOKEN : { < ValidateLbrace : "validate" ()* "{" > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < ValidateSchemaMode : "validate" ()+ > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < #Digits : (["0" - "9"])+ > } TOKEN : { < DocumentLpar : "document-node" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < DocumentLparForKindTest : "document-node" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < DocumentLbrace : "document" ()* "{" > { pushState(OPERATOR); } } TOKEN : { < NodeLpar : "node" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < CommentLpar : "comment" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < TextLpar : "text" ()* "(" > { pushState(OPERATOR); } : KINDTEST } TOKEN : { < ProcessingInstructionLpar : "processing-instruction" ()* "(" > { pushState(OPERATOR); } : KINDTESTFORPI } TOKEN : { < ElementTypeForKindTest : "element" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < ElementTypeForDocumentTest : "element" ()* "(" > { pushState(KINDTEST); } : KINDTEST } TOKEN : { < AttributeTypeForKindTest : "attribute" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < SchemaElementTypeForKindTest : "schema-element" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < SchemaElementTypeForDocumentTest : "schema-element" ()* "(" > { pushState(KINDTEST); } : KINDTEST } TOKEN : { < SchemaAttributeTypeForKindTest : "schema-attribute" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < ProcessingInstructionLparForKindTest : "processing-instruction" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTESTFORPI } TOKEN : { < TextLparForKindTest : "text" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < CommentLparForKindTest : "comment" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < NodeLparForKindTest : "node" ()* "(" > { pushState(OCCURRENCEINDICATOR); } : KINDTEST } TOKEN : { < IfLpar : "if" ()* "(" > : DEFAULT } TOKEN : { < TypeswitchLpar : "typeswitch" ()* "(" > : DEFAULT } TOKEN : { < Comma : "," > : DEFAULT } TOKEN : { < CommaForKindTest : "," > : KINDTEST } TOKEN : { < SemiColon : ";" > : DEFAULT } TOKEN : { < QuerySeparator : "%%%" > : DEFAULT } TOKEN : { < OpenQuot : "\"" > : QUOT_ATTRIBUTE_CONTENT } TOKEN : { < CloseQuot : "\"" > : START_TAG } TOKEN : { < Dot : "." > : OPERATOR } TOKEN : { < DotDot : ".." > : OPERATOR } TOKEN : { < OrderBy : "order" ()+ "by" > : DEFAULT } TOKEN : { < OrderByStable : "stable" ()+ "order" ()+ "by" > : DEFAULT } TOKEN : { < Ascending : "ascending" > : OPERATOR } TOKEN : { < Descending : "descending" > : OPERATOR } TOKEN : { < EmptyGreatest : "empty" ()+ "greatest" > : OPERATOR } TOKEN : { < EmptyLeast : "empty" ()+ "least" > : OPERATOR } TOKEN : { < DefineVariable : "declare" ()+ "variable" ()* > : VARNAME } TOKEN : { < QNameForSequenceType : ( ":")? > : OCCURRENCEINDICATOR } TOKEN : { < QNameForAtomicType : ( ":")? > : OPERATOR } TOKEN : { < QNameForItemType : ( ":")? > : CLOSEKINDTEST } SPECIAL_TOKEN : { < ExtensionQName : ( ":")? > : EXT_CONTENT } TOKEN : { < QNameLpar : ()* "(" > : DEFAULT } TOKEN : { < NCNameForPrefix : ()* > : NAMESPACEDECL } TOKEN : { < NCNameForPI : ()* > : KINDTESTFORPI } TOKEN : { < CdataSectionStart : " { pushState(OPERATOR); } : CDATA_SECTION } TOKEN : { < CdataSectionStartForElementContent : " { pushState(); } : CDATA_SECTION } TOKEN : { < CdataSectionEnd : ("]" "]" ">") > { popState(); } } TOKEN : { < PredefinedEntityRef : "&" ("lt" | "gt" | "amp" | "quot" | "apos") ";" > } TOKEN : { < CharRef : "&#" ( | ("x" )) ";" > } TOKEN : { < #HexDigits : (["0" - "9", "a" - "f", "A" - "F"])+ > } TOKEN : { < StartTagOpen : "<" > { pushState(); } : START_TAG } TOKEN : { < StartTagOpenRoot : "<" > { pushState(OPERATOR); } : START_TAG } TOKEN : { < StartTagClose : ">" > : ELEMENT_CONTENT } TOKEN : { < EmptyTagClose : "/>" > { popState(); } } TOKEN : { < EndTagOpen : " : END_TAG } TOKEN : { < EndTagClose : ">" > { popState(); } } TOKEN : { < ValueIndicator : "=" > : START_TAG } TOKEN : { < TagQName : > } TOKEN : { < Lbrace : "{" > { pushState(); } : DEFAULT } TOKEN : { < LbraceExprEnclosure : "{" > { pushState(OPERATOR); } : DEFAULT } TOKEN : { < LCurlyBraceEscape : "{{" > } TOKEN : { < RCurlyBraceEscape : "}}" > } TOKEN : { < EscapeQuot : "\"\"" > : QUOT_ATTRIBUTE_CONTENT } TOKEN : { < EscapeApos : "''" > : APOS_ATTRIBUTE_CONTENT } TOKEN : { < ElementContentChar : > : ELEMENT_CONTENT } TOKEN : { < QuotAttrContentChar : > : QUOT_ATTRIBUTE_CONTENT } TOKEN : { < AposAttrContentChar : > : APOS_ATTRIBUTE_CONTENT } TOKEN : { < CommentContentChar : > : XML_COMMENT } TOKEN : { < CommentContentCharDash : "-" > : XML_COMMENT } TOKEN : { < PIContentChar : ["\t", "\r", "\n", "\u0020" - "\uFFFD"] > : PROCESSING_INSTRUCTION_CONTENT } TOKEN : { < CDataSectionChar : ["\t", "\r", "\n", "\u0020" - "\uFFFD"] > : CDATA_SECTION } TOKEN : { < OpenApos : "'" > : APOS_ATTRIBUTE_CONTENT } TOKEN : { < CloseApos : "'" > : START_TAG } SPECIAL_TOKEN : { < #Pragma : ()? ( )? > } SPECIAL_TOKEN : { < #MUExtension : ()? ( )? > } SPECIAL_TOKEN : { < #ExtensionContents : ()* > } SPECIAL_TOKEN : { < ExtensionStart : "(::" > { pushState(); } : EXT_KEY } SPECIAL_TOKEN : { < ExtensionContentChar : > } SPECIAL_TOKEN : { < ExtensionEnd : "::)" > { popState(); } } SKIP : { < #Comment : (())* > } SPECIAL_TOKEN : { < #CommentContents : ()+ > } SPECIAL_TOKEN : { < CommentStart : "(:" > { pushState(); } : EXPR_COMMENT } SPECIAL_TOKEN : { < CommentContent : > } SPECIAL_TOKEN : { < CommentEnd : ":)" > { popState(); } } SPECIAL_TOKEN : { < PragmaKeyword : "pragma" > : EXT_NAME } SPECIAL_TOKEN : { < Extension : "extension" > : EXT_NAME } TOKEN : { < XmlCommentStart : "" > { popState(); } } TOKEN : { < QName : ( ":")? > : OPERATOR } TOKEN : { < #NCName : ()* > } TOKEN : { < S : ()+ > } TOKEN : { < SForPI : ()+ > : PROCESSING_INSTRUCTION_CONTENT } SPECIAL_TOKEN : { < SForExt : ()+ > } TOKEN : { < #Char : ["\t", "\r", "\n", "\u0020" - "\uFFFD"] > } TOKEN : { < Rbrace : "}" > { popState(); } } TOKEN : { < #WhitespaceChar : ["\t", "\r", "\n", " "] > } TOKEN : { < #Letter : ( | ) > } TOKEN : { < #BaseChar : ["\u0041" - "\u005a", "\u0061" - "\u007a", "\u00c0" - "\u00d6", "\u00d8" - "\u00f6", "\u00f8" - "\u00ff", "\u0100" - "\u0131", "\u0134" - "\u013e", "\u0141" - "\u0148", "\u014a" - "\u017e", "\u0180" - "\u01c3", "\u01cd" - "\u01f0", "\u01f4" - "\u01f5", "\u01fa" - "\u0217", "\u0250" - "\u02a8", "\u02bb" - "\u02c1", "\u0386", "\u0388" - "\u038a", "\u038c", "\u038e" - "\u03a1", "\u03a3" - "\u03ce", "\u03d0" - "\u03d6", "\u03da", "\u03dc", "\u03de", "\u03e0", "\u03e2" - "\u03f3", "\u0401" - "\u040c", "\u040e" - "\u044f", "\u0451" - "\u045c", "\u045e" - "\u0481", "\u0490" - "\u04c4", "\u04c7" - "\u04c8", "\u04cb" - "\u04cc", "\u04d0" - "\u04eb", "\u04ee" - "\u04f5", "\u04f8" - "\u04f9", "\u0531" - "\u0556", "\u0559", "\u0561" - "\u0586", "\u05d0" - "\u05ea", "\u05f0" - "\u05f2", "\u0621" - "\u063a", "\u0641" - "\u064a", "\u0671" - "\u06b7", "\u06ba" - "\u06be", "\u06c0" - "\u06ce", "\u06d0" - "\u06d3", "\u06d5", "\u06e5" - "\u06e6", "\u0905" - "\u0939", "\u093d", "\u0958" - "\u0961", "\u0985" - "\u098c", "\u098f" - "\u0990", "\u0993" - "\u09a8", "\u09aa" - "\u09b0", "\u09b2", "\u09b6" - "\u09b9", "\u09dc" - "\u09dd", "\u09df" - "\u09e1", "\u09f0" - "\u09f1", "\u0a05" - "\u0a0a", "\u0a0f" - "\u0a10", "\u0a13" - "\u0a28", "\u0a2a" - "\u0a30", "\u0a32" - "\u0a33", "\u0a35" - "\u0a36", "\u0a38" - "\u0a39", "\u0a59" - "\u0a5c", "\u0a5e", "\u0a72" - "\u0a74", "\u0a85" - "\u0a8b", "\u0a8d", "\u0a8f" - "\u0a91", "\u0a93" - "\u0aa8", "\u0aaa" - "\u0ab0", "\u0ab2" - "\u0ab3", "\u0ab5" - "\u0ab9", "\u0abd", "\u0ae0", "\u0b05" - "\u0b0c", "\u0b0f" - "\u0b10", "\u0b13" - "\u0b28", "\u0b2a" - "\u0b30", "\u0b32" - "\u0b33", "\u0b36" - "\u0b39", "\u0b3d", "\u0b5c" - "\u0b5d", "\u0b5f" - "\u0b61", "\u0b85" - "\u0b8a", "\u0b8e" - "\u0b90", "\u0b92" - "\u0b95", "\u0b99" - "\u0b9a", "\u0b9c", "\u0b9e" - "\u0b9f", "\u0ba3" - "\u0ba4", "\u0ba8" - "\u0baa", "\u0bae" - "\u0bb5", "\u0bb7" - "\u0bb9", "\u0c05" - "\u0c0c", "\u0c0e" - "\u0c10", "\u0c12" - "\u0c28", "\u0c2a" - "\u0c33", "\u0c35" - "\u0c39", "\u0c60" - "\u0c61", "\u0c85" - "\u0c8c", "\u0c8e" - "\u0c90", "\u0c92" - "\u0ca8", "\u0caa" - "\u0cb3", "\u0cb5" - "\u0cb9", "\u0cde", "\u0ce0" - "\u0ce1", "\u0d05" - "\u0d0c", "\u0d0e" - "\u0d10", "\u0d12" - "\u0d28", "\u0d2a" - "\u0d39", "\u0d60" - "\u0d61", "\u0e01" - "\u0e2e", "\u0e30", "\u0e32" - "\u0e33", "\u0e40" - "\u0e45", "\u0e81" - "\u0e82", "\u0e84", "\u0e87" - "\u0e88", "\u0e8a", "\u0e8d", "\u0e94" - "\u0e97", "\u0e99" - "\u0e9f", "\u0ea1" - "\u0ea3", "\u0ea5", "\u0ea7", "\u0eaa" - "\u0eab", "\u0ead" - "\u0eae", "\u0eb0", "\u0eb2" - "\u0eb3", "\u0ebd", "\u0ec0" - "\u0ec4", "\u0f40" - "\u0f47", "\u0f49" - "\u0f69", "\u10a0" - "\u10c5", "\u10d0" - "\u10f6", "\u1100", "\u1102" - "\u1103", "\u1105" - "\u1107", "\u1109", "\u110b" - "\u110c", "\u110e" - "\u1112", "\u113c", "\u113e", "\u1140", "\u114c", "\u114e", "\u1150", "\u1154" - "\u1155", "\u1159", "\u115f" - "\u1161", "\u1163", "\u1165", "\u1167", "\u1169", "\u116d" - "\u116e", "\u1172" - "\u1173", "\u1175", "\u119e", "\u11a8", "\u11ab", "\u11ae" - "\u11af", "\u11b7" - "\u11b8", "\u11ba", "\u11bc" - "\u11c2", "\u11eb", "\u11f0", "\u11f9", "\u1e00" - "\u1e9b", "\u1ea0" - "\u1ef9", "\u1f00" - "\u1f15", "\u1f18" - "\u1f1d", "\u1f20" - "\u1f45", "\u1f48" - "\u1f4d", "\u1f50" - "\u1f57", "\u1f59", "\u1f5b", "\u1f5d", "\u1f5f" - "\u1f7d", "\u1f80" - "\u1fb4", "\u1fb6" - "\u1fbc", "\u1fbe", "\u1fc2" - "\u1fc4", "\u1fc6" - "\u1fcc", "\u1fd0" - "\u1fd3", "\u1fd6" - "\u1fdb", "\u1fe0" - "\u1fec", "\u1ff2" - "\u1ff4", "\u1ff6" - "\u1ffc", "\u2126", "\u212a" - "\u212b", "\u212e", "\u2180" - "\u2182", "\u3041" - "\u3094", "\u30a1" - "\u30fa", "\u3105" - "\u312c", "\uac00" - "\ud7a3"] > } TOKEN : { < #Ideographic : ["\u4e00" - "\u9fa5", "\u3007", "\u3021" - "\u3029"] > } TOKEN : { < #CombiningChar : ["\u0300" - "\u0345", "\u0360" - "\u0361", "\u0483" - "\u0486", "\u0591" - "\u05a1", "\u05a3" - "\u05b9", "\u05bb" - "\u05bd", "\u05bf", "\u05c1" - "\u05c2", "\u05c4", "\u064b" - "\u0652", "\u0670", "\u06d6" - "\u06dc", "\u06dd" - "\u06df", "\u06e0" - "\u06e4", "\u06e7" - "\u06e8", "\u06ea" - "\u06ed", "\u0901" - "\u0903", "\u093c", "\u093e" - "\u094c", "\u094d", "\u0951" - "\u0954", "\u0962" - "\u0963", "\u0981" - "\u0983", "\u09bc", "\u09be", "\u09bf", "\u09c0" - "\u09c4", "\u09c7" - "\u09c8", "\u09cb" - "\u09cd", "\u09d7", "\u09e2" - "\u09e3", "\u0a02", "\u0a3c", "\u0a3e", "\u0a3f", "\u0a40" - "\u0a42", "\u0a47" - "\u0a48", "\u0a4b" - "\u0a4d", "\u0a70" - "\u0a71", "\u0a81" - "\u0a83", "\u0abc", "\u0abe" - "\u0ac5", "\u0ac7" - "\u0ac9", "\u0acb" - "\u0acd", "\u0b01" - "\u0b03", "\u0b3c", "\u0b3e" - "\u0b43", "\u0b47" - "\u0b48", "\u0b4b" - "\u0b4d", "\u0b56" - "\u0b57", "\u0b82" - "\u0b83", "\u0bbe" - "\u0bc2", "\u0bc6" - "\u0bc8", "\u0bca" - "\u0bcd", "\u0bd7", "\u0c01" - "\u0c03", "\u0c3e" - "\u0c44", "\u0c46" - "\u0c48", "\u0c4a" - "\u0c4d", "\u0c55" - "\u0c56", "\u0c82" - "\u0c83", "\u0cbe" - "\u0cc4", "\u0cc6" - "\u0cc8", "\u0cca" - "\u0ccd", "\u0cd5" - "\u0cd6", "\u0d02" - "\u0d03", "\u0d3e" - "\u0d43", "\u0d46" - "\u0d48", "\u0d4a" - "\u0d4d", "\u0d57", "\u0e31", "\u0e34" - "\u0e3a", "\u0e47" - "\u0e4e", "\u0eb1", "\u0eb4" - "\u0eb9", "\u0ebb" - "\u0ebc", "\u0ec8" - "\u0ecd", "\u0f18" - "\u0f19", "\u0f35", "\u0f37", "\u0f39", "\u0f3e", "\u0f3f", "\u0f71" - "\u0f84", "\u0f86" - "\u0f8b", "\u0f90" - "\u0f95", "\u0f97", "\u0f99" - "\u0fad", "\u0fb1" - "\u0fb7", "\u0fb9", "\u20d0" - "\u20dc", "\u20e1", "\u302a" - "\u302f", "\u3099", "\u309a"] > } TOKEN : { < #Digit : ["\u0030" - "\u0039", "\u0660" - "\u0669", "\u06f0" - "\u06f9", "\u0966" - "\u096f", "\u09e6" - "\u09ef", "\u0a66" - "\u0a6f", "\u0ae6" - "\u0aef", "\u0b66" - "\u0b6f", "\u0be7" - "\u0bef", "\u0c66" - "\u0c6f", "\u0ce6" - "\u0cef", "\u0d66" - "\u0d6f", "\u0e50" - "\u0e59", "\u0ed0" - "\u0ed9", "\u0f20" - "\u0f29"] > } TOKEN : { < #Extender : ["\u00b7", "\u02d0", "\u02d1", "\u0387", "\u0640", "\u0e46", "\u0ec6", "\u3005", "\u3031" - "\u3035", "\u309d" - "\u309e", "\u30fc" - "\u30fe"] > } SKIP : { < NotOperatorKeyword : (["0" - "9", "a" - "z", "A" - "Z"])+ > } SKIP : { < NotNumber : (("." ) | ( ("." (["0" - "9"])*)?)) (["e", "E"] (["+", "-"])? )? ["a" - "z", "A" - "Z"] (["0" - "9", "a" - "z", "A" - "Z"])* > : OPERATOR } void QueryList() : {} { Module() ( [Module()])* } void Module() : {} { [VersionDecl()] (MainModule() | LibraryModule()) } void VersionDecl() : {} { {jjtThis.processToken(token);} #XQueryVersion(true) {jjtThis.processToken(token);} #StringLiteralForVersion(true) [{jjtThis.processToken(token);} #XQueryEncoding(true) {jjtThis.processToken(token);} #StringLiteralForVersion(true)] Separator() } void MainModule() : {} { Prolog() QueryBody() } void LibraryModule() : {} { ModuleDecl() Prolog() } void ModuleDecl() : {} { {jjtThis.processToken(token);} #ModuleNamespace(true) {jjtThis.processToken(token);} #NCNameForPrefix(true) {jjtThis.processToken(token);} #AssignEquals(true) {jjtThis.processToken(token);} #URLLiteral(true) Separator() } void Prolog() : {} { (Setter() Separator())* ((Import() | NamespaceDecl() | DefaultNamespaceDecl()) Separator())* ((VarDecl() | FunctionDecl()) Separator())* } void Setter() : {} { (XMLSpaceDecl() | DefaultCollationDecl() | BaseURIDecl() | ConstructionDecl() | OrderingModeDecl() | EmptyOrderingDecl() | InheritNamespacesDecl()) } void Import() : {} { (SchemaImport() | ModuleImport()) } void Separator() : {} { } void NamespaceDecl() : {} { {jjtThis.processToken(token);} #DeclareNamespace(true) {jjtThis.processToken(token);} #NCNameForPrefix(true) {jjtThis.processToken(token);} #AssignEquals(true) {jjtThis.processToken(token);} #URLLiteral(true) } void XMLSpaceDecl() : {} { {jjtThis.processToken(token);} #DeclareXMLSpace(true) ({jjtThis.processToken(token);} #XMLSpacePreserve(true) | {jjtThis.processToken(token);} #XMLSpaceStrip(true)) } void DefaultNamespaceDecl() : {} { ({jjtThis.processToken(token);} #DeclareDefaultElement(true) | {jjtThis.processToken(token);} #DeclareDefaultFunction(true)) {jjtThis.processToken(token);} #Namespace(true) {jjtThis.processToken(token);} #URLLiteral(true) } void OrderingModeDecl() : {} { {jjtThis.processToken(token);} #DeclareOrdering(true) ({jjtThis.processToken(token);} #Ordered(true) | {jjtThis.processToken(token);} #Unordered(true)) } void EmptyOrderingDecl() : {} { {jjtThis.processToken(token);} #DeclareDefaultOrderingEmpty(true) ({jjtThis.processToken(token);} #EmptyGreatest(true) | {jjtThis.processToken(token);} #EmptyLeast(true)) } void InheritNamespacesDecl() : {} { {jjtThis.processToken(token);} #DeclareInheritNamespaces(true) ({jjtThis.processToken(token);} #Yes(true) | {jjtThis.processToken(token);} #No(true)) } void DefaultCollationDecl() : {} { {jjtThis.processToken(token);} #DeclareCollation(true) {jjtThis.processToken(token);} #URLLiteral(true) } void BaseURIDecl() : {} { {jjtThis.processToken(token);} #DeclareBaseURI(true) {jjtThis.processToken(token);} #URLLiteral(true) } void SchemaImport() : {} { {jjtThis.processToken(token);} #ImportSchemaToken(true) [SchemaPrefix()] {jjtThis.processToken(token);} #URLLiteral(true) [{jjtThis.processToken(token);} #AtStringLiteral(true) ( {jjtThis.processToken(token);} #StringLiteral(true))*] } void SchemaPrefix() : {} { (({jjtThis.processToken(token);} #Namespace(true) {jjtThis.processToken(token);} #NCNameForPrefix(true) {jjtThis.processToken(token);} #AssignEquals(true)) | ({jjtThis.processToken(token);} #DefaultElement(true) {jjtThis.processToken(token);} #Namespace(true))) } void ModuleImport() : {} { {jjtThis.processToken(token);} #ImportModuleToken(true) [{jjtThis.processToken(token);} #Namespace(true) {jjtThis.processToken(token);} #NCNameForPrefix(true) {jjtThis.processToken(token);} #AssignEquals(true)] {jjtThis.processToken(token);} #URLLiteral(true) [{jjtThis.processToken(token);} #AtStringLiteral(true) ( {jjtThis.processToken(token);} #StringLiteral(true))*] } void VarDecl() : {} { {jjtThis.processToken(token);} #DefineVariable(true) {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] (({jjtThis.processToken(token);} #ColonEquals(true) ExprSingle()) | {jjtThis.processToken(token);} #External(true)) } void ConstructionDecl() : {} { {jjtThis.processToken(token);} #DeclareConstruction(true) {jjtThis.processToken(token);} #SchemaModeForDeclareConstruction(true) } void FunctionDecl() : {} { {jjtThis.processToken(token);} #DefineFunction(true) {jjtThis.processToken(token);} #QNameLpar(true) [ParamList()] ( ( {jjtThis.processToken(token);} #As(true) SequenceType())?) (EnclosedExpr() | {jjtThis.processToken(token);} #External(true)) } void ParamList() : {} { Param() ( Param())* } void Param() : {} { {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] } void EnclosedExpr() : {} { ({jjtThis.processToken(token);} #Lbrace(true) | {jjtThis.processToken(token);} #LbraceExprEnclosure(true)) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void QueryBody() : {} { (Expr()) } void Expr() : {} { ExprSingle() ( ExprSingle())* } void ExprSingle() #void : {} { (FLWORExpr() | QuantifiedExpr() | TypeswitchExpr() | IfExpr() | OrExpr()) } void FLWORExpr() : {} { ((ForClause() | LetClause()))+ [WhereClause()] [OrderByClause()] ExprSingle() } void ForClause() #void : {} { {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] [PositionalVar()] {jjtThis.processToken(token);} #In(true) ExprSingle() ( {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] [PositionalVar()] {jjtThis.processToken(token);} #In(true) ExprSingle())* } void PositionalVar() : {} { {jjtThis.processToken(token);} #AtWord(true) {jjtThis.processToken(token);} #VarName(true) } void LetClause() : {} { {jjtThis.processToken(token);} #LetVariable(true) {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] {jjtThis.processToken(token);} #ColonEquals(true) ExprSingle() ( {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] {jjtThis.processToken(token);} #ColonEquals(true) ExprSingle())* } void WhereClause() : {} { {jjtThis.processToken(token);} #Where(true) ExprSingle() } void OrderByClause() : {} { ({jjtThis.processToken(token);} #OrderBy(true) | {jjtThis.processToken(token);} #OrderByStable(true)) OrderSpecList() } void OrderSpecList() : {} { OrderSpec() ( OrderSpec())* } void OrderSpec() : {} { ExprSingle() OrderModifier() } void OrderModifier() : {} { [({jjtThis.processToken(token);} #Ascending(true) | {jjtThis.processToken(token);} #Descending(true))] [({jjtThis.processToken(token);} #EmptyGreatest(true) | {jjtThis.processToken(token);} #EmptyLeast(true))] [{jjtThis.processToken(token);} #Collation(true) {jjtThis.processToken(token);} #StringLiteral(true)] } void QuantifiedExpr() : {} { ({jjtThis.processToken(token);} #Some(true) | {jjtThis.processToken(token);} #Every(true)) {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] {jjtThis.processToken(token);} #In(true) ExprSingle() ( {jjtThis.processToken(token);} #VarName(true) [TypeDeclaration()] {jjtThis.processToken(token);} #In(true) ExprSingle())* {jjtThis.processToken(token);} #Satisfies(true) ExprSingle() } void TypeswitchExpr() : {} { Expr() (CaseClause())+ {jjtThis.processToken(token);} #Default(true) [ {jjtThis.processToken(token);} #VarName(true)] ExprSingle() } void CaseClause() : {} { {jjtThis.processToken(token);} #Case(true) [ {jjtThis.processToken(token);} #VarName(true) {jjtThis.processToken(token);} #As(true)] SequenceType() ExprSingle() } void IfExpr() : {} { Expr() ExprSingle() ExprSingle() } void OperatorExpr() #void : {} { OrExpr() } void OrExpr() #OrExpr(> 1) : {} { AndExpr() ( {binaryTokenStack.push(token);} AndExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #OrExpr(2))* } void AndExpr() #AndExpr(> 1) : {} { ComparisonExpr() ( {binaryTokenStack.push(token);} ComparisonExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #AndExpr(2))* } void ComparisonExpr() #ComparisonExpr(> 1) : {} { RangeExpr() ((ValueComp() | GeneralComp() | NodeComp()) RangeExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #ComparisonExpr(2))? } void RangeExpr() #RangeExpr(> 1) : {} { AdditiveExpr() ( {binaryTokenStack.push(token);} AdditiveExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #RangeExpr(2))? } void AdditiveExpr() #AdditiveExpr(> 1) : {} { MultiplicativeExpr() (( {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) MultiplicativeExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #AdditiveExpr(2))* } void MultiplicativeExpr() #MultiplicativeExpr(> 1) : {} { UnionExpr() (( {binaryTokenStack.push(token);} |
{binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) UnionExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #MultiplicativeExpr(2))* } void UnionExpr() #UnionExpr(> 1) : {} { IntersectExceptExpr() (( {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) IntersectExceptExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #UnionExpr(2))* } void IntersectExceptExpr() #IntersectExceptExpr(> 1) : {} { InstanceofExpr() (( {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) InstanceofExpr() { try { jjtThis.processToken((Token)binaryTokenStack.pop()); } catch(java.util.EmptyStackException e) { token_source.printLinePos(); e.printStackTrace(); throw e; } } #IntersectExceptExpr(2))* } void InstanceofExpr() #InstanceofExpr(> 1) : {} { TreatExpr() ( SequenceType())? } void TreatExpr() #TreatExpr(> 1) : {} { CastableExpr() ( SequenceType())? } void CastableExpr() #CastableExpr(> 1) : {} { CastExpr() ( SingleType())? } void CastExpr() #CastExpr(> 1) : {} { UnaryExpr() ({jjtThis.processToken(token);} #CastAs(true) SingleType())? } void UnaryExpr() #UnaryExpr(keepUnary) : {boolean keepUnary=false;} { ({keepUnary=true;jjtThis.processToken(token);} #UnaryMinus(true) | {keepUnary=true;jjtThis.processToken(token);} #UnaryPlus(true))* ValueExpr() } void ValueExpr() #void : {} { (ValidateExpr() | PathExpr()) } void GeneralComp() #void : {} { ( {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) } void ValueComp() #void : {} { ( {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) } void NodeComp() #void : {} { ( {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} | {binaryTokenStack.push(token);} ) } void ValidateExpr() : {} { ({jjtThis.processToken(token);} #ValidateLbrace(true) | ({jjtThis.processToken(token);} #ValidateSchemaMode(true) {jjtThis.processToken(token);} #LbraceExprEnclosure(true))) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void PathExpr() #PathExpr(>0) : {} { (({jjtThis.processToken(token);} #Root(true) [RelativePathExpr()]) | ({jjtThis.processToken(token);} #RootDescendants(true) RelativePathExpr()) | RelativePathExpr()) } void RelativePathExpr() #void : {} { StepExpr() (( | {jjtThis.processToken(token);} #SlashSlash(true)) StepExpr())* } void StepExpr() #StepExpr(>1 || isStep) : {boolean savedIsStep = isStep; isStep=false;} { ({isStep=true;}AxisStep(){isStep = savedIsStep;} | FilterExpr(){isStep = savedIsStep;}) } void AxisStep() #void : {} { (ForwardStep() | ReverseStep()) PredicateList() } void ForwardStep() #void : {} { ((ForwardAxis() NodeTest()) | AbbrevForwardStep()) } void ForwardAxis() #void : {} { ({jjtThis.processToken(token);} #AxisChild(true) | {jjtThis.processToken(token);} #AxisDescendant(true) | {jjtThis.processToken(token);} #AxisAttribute(true) | {jjtThis.processToken(token);} #AxisSelf(true) | {jjtThis.processToken(token);} #AxisDescendantOrSelf(true) | {jjtThis.processToken(token);} #AxisFollowingSibling(true) | {jjtThis.processToken(token);} #AxisFollowing(true)) } void AbbrevForwardStep() #void : {} { [{jjtThis.processToken(token);} #At(true)] NodeTest() } void ReverseStep() #void : {} { ((ReverseAxis() NodeTest()) | AbbrevReverseStep()) } void ReverseAxis() #void : {} { ({jjtThis.processToken(token);} #AxisParent(true) | {jjtThis.processToken(token);} #AxisAncestor(true) | {jjtThis.processToken(token);} #AxisPrecedingSibling(true) | {jjtThis.processToken(token);} #AxisPreceding(true) | {jjtThis.processToken(token);} #AxisAncestorOrSelf(true)) } void AbbrevReverseStep() #void : {} { {jjtThis.processToken(token);} #DotDot(true) } void NodeTest() : {} { (KindTest() | NameTest()) } void NameTest() : {} { ({jjtThis.processToken(token);} #QName(true) | Wildcard()) } void Wildcard() #void : {} { ({jjtThis.processToken(token);} #Star(true) | {jjtThis.processToken(token);} #NCNameColonStar(true) | {jjtThis.processToken(token);} #StarColonNCName(true)) } void FilterExpr() #void : {} { PrimaryExpr() PredicateList() } void PredicateList() #PredicateList(> 0) : {} { (Predicate())* } void Predicate() #Predicate(> 0) : {} { Expr() } void PrimaryExpr() #void : {} { (Literal() | VarRef() | ParenthesizedExpr() | {isStep=true;}ContextItemExpr() | FunctionCall() | Constructor() | OrderedExpr() | UnorderedExpr()) } void Literal() #void : {} { (NumericLiteral() | {jjtThis.processToken(token);} #StringLiteral(true)) } void NumericLiteral() #void : {} { ({jjtThis.processToken(token);} #IntegerLiteral(true) | {jjtThis.processToken(token);} #DecimalLiteral(true) | {jjtThis.processToken(token);} #DoubleLiteral(true)) } void VarRef() #void : {} { {jjtThis.processToken(token);} #VarName(true) } void ParenthesizedExpr() #void : {} { [Expr()] } void ContextItemExpr() #void : {} { {jjtThis.processToken(token);} #Dot(true) } void OrderedExpr() #void : {} { {jjtThis.processToken(token);} #OrderedOpen(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void UnorderedExpr() #void : {} { {jjtThis.processToken(token);} #UnorderedOpen(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void FunctionCall() : {} { ({jjtThis.processToken(token);} #QNameLpar(true)) [ExprSingle() ( ExprSingle())*] } void Constructor() : {} { (DirectConstructor() | ComputedConstructor()) } void DirectConstructor() : {} { (DirElemConstructor() | DirCommentConstructor() | DirPIConstructor()) } void DirElemConstructor() : {} { ({jjtThis.processToken(token);} #StartTagOpenRoot(true) | {jjtThis.processToken(token);} #StartTagOpen(true)) {jjtThis.processToken(token);} #TagQName(true) DirAttributeList() ({jjtThis.processToken(token);} #EmptyTagClose(true) | ({jjtThis.processToken(token);} #StartTagClose(true) (DirElemContent())* {jjtThis.processToken(token);} #EndTagOpen(true) {jjtThis.processToken(token);} #TagQName(true) [{jjtThis.processToken(token);} #S(true)] {jjtThis.processToken(token);} #EndTagClose(true))) } void DirAttributeList() : {} { ({jjtThis.processToken(token);} #S(true) [{jjtThis.processToken(token);} #TagQName(true) [{jjtThis.processToken(token);} #S(true)] {jjtThis.processToken(token);} #ValueIndicator(true) [{jjtThis.processToken(token);} #S(true)] DirAttributeValue()])* } void DirAttributeValue() : {} { (({jjtThis.processToken(token);} #OpenQuot(true) (({jjtThis.processToken(token);} #EscapeQuot(true) | QuotAttrValueContent()))* {jjtThis.processToken(token);} #CloseQuot(true)) | ({jjtThis.processToken(token);} #OpenApos(true) (({jjtThis.processToken(token);} #EscapeApos(true) | AposAttrValueContent()))* {jjtThis.processToken(token);} #CloseApos(true))) } void QuotAttrValueContent() : {} { ({jjtThis.processToken(token);} #QuotAttrContentChar(true) | CommonContent()) } void AposAttrValueContent() : {} { ({jjtThis.processToken(token);} #AposAttrContentChar(true) | CommonContent()) } void DirElemContent() : {} { (DirectConstructor() | {jjtThis.processToken(token);} #ElementContentChar(true) | CDataSection() | CommonContent()) } void CommonContent() : {} { ({jjtThis.processToken(token);} #PredefinedEntityRef(true) | {jjtThis.processToken(token);} #CharRef(true) | {jjtThis.processToken(token);} #LCurlyBraceEscape(true) | {jjtThis.processToken(token);} #RCurlyBraceEscape(true) | EnclosedExpr()) } void DirCommentConstructor() : {} { ({jjtThis.processToken(token);} #XmlCommentStartForElementContent(true) | {jjtThis.processToken(token);} #XmlCommentStart(true)) DirCommentContents() {jjtThis.processToken(token);} #XmlCommentEnd(true) } void DirCommentContents() : {} { (({jjtThis.processToken(token);} #CommentContentChar(true) | {jjtThis.processToken(token);} #CommentContentCharDash(true)))* } void DirPIConstructor() : {} { ({jjtThis.processToken(token);} #ProcessingInstructionStartForElementContent(true) | {jjtThis.processToken(token);} #ProcessingInstructionStart(true)) {jjtThis.processToken(token);} #PITarget(true) [{jjtThis.processToken(token);} #SForPI(true) DirPIContents()] {jjtThis.processToken(token);} #ProcessingInstructionEnd(true) } void DirPIContents() : {} { ({jjtThis.processToken(token);} #PIContentChar(true))* } void CDataSection() : {} { ({jjtThis.processToken(token);} #CdataSectionStartForElementContent(true) | {jjtThis.processToken(token);} #CdataSectionStart(true)) CDataSectionContents() {jjtThis.processToken(token);} #CdataSectionEnd(true) } void CDataSectionContents() : {} { ({jjtThis.processToken(token);} #CDataSectionChar(true))* } void ComputedConstructor() : {} { (CompDocConstructor() | CompElemConstructor() | CompAttrConstructor() | CompTextConstructor() | CompCommentConstructor() | CompPIConstructor()) } void CompDocConstructor() : {} { {jjtThis.processToken(token);} #DocumentLbrace(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void CompElemConstructor() : {} { ({jjtThis.processToken(token);} #ElementQNameLbrace(true) | ({jjtThis.processToken(token);} #ElementLbrace(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) {jjtThis.processToken(token);} #LbraceExprEnclosure(true))) [ContentExpr()] {jjtThis.processToken(token);} #Rbrace(true) } void ContentExpr() : {} { Expr() } void CompAttrConstructor() : {} { ({jjtThis.processToken(token);} #AttributeQNameLbrace(true) | ({jjtThis.processToken(token);} #AttributeLbrace(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) {jjtThis.processToken(token);} #LbraceExprEnclosure(true))) [Expr()] {jjtThis.processToken(token);} #Rbrace(true) } void CompTextConstructor() : {} { {jjtThis.processToken(token);} #TextLbrace(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void CompCommentConstructor() : {} { {jjtThis.processToken(token);} #CommentLbrace(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) } void CompPIConstructor() : {} { ({jjtThis.processToken(token);} #PINCNameLbrace(true) | ({jjtThis.processToken(token);} #PILbrace(true) Expr() {jjtThis.processToken(token);} #Rbrace(true) {jjtThis.processToken(token);} #LbraceExprEnclosure(true))) [Expr()] {jjtThis.processToken(token);} #Rbrace(true) } void SingleType() : {} { AtomicType() [{jjtThis.processToken(token);} #OccurrenceZeroOrOne(true)] } void TypeDeclaration() : {} { {jjtThis.processToken(token);} #As(true) SequenceType() } void SequenceType() : {} { ((ItemType() [OccurrenceIndicator()]) | {jjtThis.processToken(token);} #EmptyTok(true)) } void OccurrenceIndicator() #void : {} { ({jjtThis.processToken(token);} #OccurrenceZeroOrOne(true) | {jjtThis.processToken(token);} #OccurrenceZeroOrMore(true) | {jjtThis.processToken(token);} #OccurrenceOneOrMore(true)) } void ItemType() #void : {} { (AtomicType() | KindTest() | {jjtThis.processToken(token);} #Item(true)) } void AtomicType() : {} { ({jjtThis.processToken(token);} #QNameForAtomicType(true) | {jjtThis.processToken(token);} #QNameForSequenceType(true)) } void KindTest() #void : {} { (DocumentTest() | ElementTest() | AttributeTest() | SchemaElementTest() | SchemaAttributeTest() | PITest() | CommentTest() | TextTest() | AnyKindTest()) } void AnyKindTest() : {} { ( | {jjtThis.processToken(token);} #NodeLparForKindTest(true)) } void DocumentTest() : {} { ({jjtThis.processToken(token);} #DocumentLpar(true) | {jjtThis.processToken(token);} #DocumentLparForKindTest(true)) [(ElementTest() | SchemaElementTest())] } void TextTest() : {} { ( | {jjtThis.processToken(token);} #TextLparForKindTest(true)) } void CommentTest() : {} { ( | {jjtThis.processToken(token);} #CommentLparForKindTest(true)) } void PITest() : {} { ( | {jjtThis.processToken(token);} #ProcessingInstructionLparForKindTest(true)) [({jjtThis.processToken(token);} #NCNameForPI(true) | {jjtThis.processToken(token);} #StringLiteralForKindTest(true))] } void AttributeTest() : {} { ({jjtThis.processToken(token);} #AttributeType(true) | {jjtThis.processToken(token);} #AttributeTypeForKindTest(true)) [(AttribNameOrWildcard() [{jjtThis.processToken(token);} #CommaForKindTest(true) TypeName()])] } void AttribNameOrWildcard() : {} { (AttributeName() | {jjtThis.processToken(token);} #AnyName(true)) } void SchemaAttributeTest() : {} { ({jjtThis.processToken(token);} #SchemaAttributeType(true) | {jjtThis.processToken(token);} #SchemaAttributeTypeForKindTest(true)) AttributeDeclaration() } void AttributeDeclaration() : {} { AttributeName() } void ElementTest() : {} { ({jjtThis.processToken(token);} #ElementType(true) | {jjtThis.processToken(token);} #ElementTypeForKindTest(true) | {jjtThis.processToken(token);} #ElementTypeForDocumentTest(true)) [(ElementNameOrWildcard() [{jjtThis.processToken(token);} #CommaForKindTest(true) TypeName() [{jjtThis.processToken(token);} #Nillable(true)]])] } void ElementNameOrWildcard() : {} { (ElementName() | {jjtThis.processToken(token);} #AnyName(true)) } void SchemaElementTest() : {} { ({jjtThis.processToken(token);} #SchemaElementType(true) | {jjtThis.processToken(token);} #SchemaElementTypeForKindTest(true) | {jjtThis.processToken(token);} #SchemaElementTypeForDocumentTest(true)) ElementDeclaration() } void ElementDeclaration() : {} { ElementName() } void AttributeName() : {} { {jjtThis.processToken(token);} #QNameForItemType(true) } void ElementName() : {} { {jjtThis.processToken(token);} #QNameForItemType(true) } void TypeName() : {} { {jjtThis.processToken(token);} #QNameForItemType(true) }