| 
<DEFAULT> TOKEN : {
<IntegerLiteral: <Digits>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<DecimalLiteral: "." <Digits> | <Digits> "." (["0"-"9"])*>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<DoubleLiteral: ("." <Digits> | <Digits> ("." (["0"-"9"])*)?) ["e","E"] (["+","-"])? <Digits>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<StringLiteral: "\"" (<PredefinedEntityRef> | <CharRef> | <EscapeQuot> | ~["\"","&"])* "\"" | "\'" (<PredefinedEntityRef> | <CharRef> | <EscapeApos> | ~["\'","&"])* "\'">
}
    | 
 
 
  | 
<FTPOSFILTER,FTMATCHOPTION,PROLOG_SPECIAL,PROLOG_NCNAME,DECLAREORDERING,DEFAULT,PROLOG,OPERAND,OPERATOR,KINDTEST,NAMESPACEDECL,SINGLETYPE,ITEMTYPE,NAMESPACEKEYWORD,VARNAME,OCCURRENCEINDICATOR,CLOSEKINDTEST,XQUERYVERSION,PRAGMA,OPTION,URITOOPERATOR> SKIP : {
<DUMMYLABEL: <skip_>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#skip_: (<WhitespaceChar>)+>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Minus: "-">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Plus: "+">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<External: "external">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Ascending: "ascending">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Descending: "descending">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Greatest: "greatest">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Least: "least">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Prefix: <NCNameTok>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#LocalPart: <NCNameTok>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Nmstart: <Letter> | "_">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Nmchar: <Letter> | <CombiningChar> | <Extender> | <Digit> | "." | "-" | "_">
}
    | 
 
 
  | 
<DEFAULT,ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<PredefinedEntityRef: "&" ("lt" | "gt" | "amp" | "quot" | "apos") ";">
}
    | 
 
 
  | 
<QUOT_ATTRIBUTE_CONTENT> TOKEN : {
<EscapeQuot: "\"\""> : QUOT_ATTRIBUTE_CONTENT
}
    | 
 
 
  | 
<APOS_ATTRIBUTE_CONTENT> TOKEN : {
<EscapeApos: "\'\'"> : APOS_ATTRIBUTE_CONTENT
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#HexDigits: (["0"-"9","a"-"f","A"-"F"])+>
}
    | 
 
 
  | 
<ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<Lbrace: "{"> : DEFAULT
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<LbraceExprEnclosure: "{"> : DEFAULT
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Rbrace: "}"> : {
}
    | 
 
 
  | 
<ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<RbraceErrorInContent: "}"> : DEFAULT
}
    | 
 
 
  | 
<ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<LCurlyBraceEscape: "{{">
}
    | 
 
 
  | 
<ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<RCurlyBraceEscape: "}}">
}
    | 
 
 
  | 
<ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<Amp: "&">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<LessThanOpOrTagO: "<"> : START_TAG
}
    | 
 
 
  | 
<ELEMENT_CONTENT> TOKEN : {
<StartTagOpen: "<"> : START_TAG
}
    | 
 
 
  | 
<QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<AttrLTCharError: "<"> : DEFAULT
}
    | 
 
 
  | 
<START_TAG> TOKEN : {
<StartTagClose: ">"> : ELEMENT_CONTENT
}
    | 
 
 
  | 
<START_TAG> TOKEN : {
<OpenQuot: "\""> : QUOT_ATTRIBUTE_CONTENT
}
    | 
 
 
  | 
<QUOT_ATTRIBUTE_CONTENT> TOKEN : {
<CloseQuot: "\""> : START_TAG
}
    | 
 
 
  | 
<START_TAG> TOKEN : {
<OpenApos: "\'"> : APOS_ATTRIBUTE_CONTENT
}
    | 
 
 
  | 
<APOS_ATTRIBUTE_CONTENT> TOKEN : {
<CloseApos: "\'"> : START_TAG
}
    | 
 
 
  | 
<PRAGMACONTENTS> TOKEN : {
<ExtensionContentChar: <Char>>
}
    | 
 
 
  | 
<ELEMENT_CONTENT> TOKEN : {
<ElementContentChar: <Char>> : ELEMENT_CONTENT
}
    | 
 
 
  | 
<QUOT_ATTRIBUTE_CONTENT> TOKEN : {
<QuotAttrContentChar: <Char>> : QUOT_ATTRIBUTE_CONTENT
}
    | 
 
 
  | 
<APOS_ATTRIBUTE_CONTENT> TOKEN : {
<AposAttrContentChar: <Char>> : APOS_ATTRIBUTE_CONTENT
}
    | 
 
 
  | 
<XML_COMMENT> TOKEN : {
<CommentContentChar: <Char>> : XML_COMMENT
}
    | 
 
 
  | 
<START_TAG> TOKEN : {
<EmptyTagClose: "/>"> : {
}
    | 
 
 
  | 
<ELEMENT_CONTENT> TOKEN : {
<EndTagOpen: "</"> : END_TAG
}
    | 
 
 
  | 
<END_TAG> TOKEN : {
<EndTagClose: ">"> : {
}
    | 
 
 
  | 
<START_TAG> TOKEN : {
<ValueIndicator: "="> : START_TAG
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<PragmaOpen: "(#"> : PRAGMA
}
    | 
 
 
  | 
<PRAGMACONTENTS,PRAGMACONTENTSSPACEDIVIDER> TOKEN : {
<PragmaClose: "#)"> : DEFAULT
}
    | 
 
 
  | 
<XML_COMMENT> TOKEN : {
<XMLCommentDoubleDashError: "-" "-"> : XML_COMMENT
}
    | 
 
 
  | 
<XML_COMMENT> TOKEN : {
<CommentContentCharDash: "-" <Char>> : XML_COMMENT
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<ProcessingInstructionStart: "<?"> : PROCESSING_INSTRUCTION
}
    | 
 
 
  | 
<ELEMENT_CONTENT> TOKEN : {
<ProcessingInstructionStartForElementContent: "<?"> : PROCESSING_INSTRUCTION
}
    | 
 
 
  | 
<PROCESSING_INSTRUCTION,PROCESSING_INSTRUCTION_CONTENT> TOKEN : {
<ProcessingInstructionEnd: "?>"> : {
}
    | 
 
 
  | 
<PROCESSING_INSTRUCTION_CONTENT> TOKEN : {
<PIContentChar: ["\t","\r","\n"," "-"\ufffd"]> : PROCESSING_INSTRUCTION_CONTENT
}
    | 
 
 
  | 
<CDATA_SECTION> TOKEN : {
<CDataSectionChar: ["\t","\r","\n"," "-"\ufffd"]> : CDATA_SECTION
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<CdataSectionStart: "<![CDATA["> : CDATA_SECTION
}
    | 
 
 
  | 
<ELEMENT_CONTENT> TOKEN : {
<CdataSectionStartForElementContent: "<![CDATA["> : CDATA_SECTION
}
    | 
 
 
  | 
<CDATA_SECTION> TOKEN : {
<CdataSectionEnd: "]" "]" ">"> : {
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<XmlCommentStart: "<!--"> : XML_COMMENT
}
    | 
 
 
  | 
<ELEMENT_CONTENT> TOKEN : {
<XmlCommentStartForElementContent: "<!--"> : XML_COMMENT
}
    | 
 
 
  | 
<XML_COMMENT> TOKEN : {
<XmlCommentEnd: "-->"> : {
}
    | 
 
 
  | 
<DEFAULT> SPECIAL : {
<#Comment: <CommentStart> (<CommentContents>)* <CommentEnd>>
}
    | 
 
 
  | 
<DEFAULT,EXPR_COMMENT> SPECIAL : {
<CommentStart: "(:"> : EXPR_COMMENT
}
    | 
 
 
  | 
<EXPR_COMMENT> SPECIAL : {
<CommentContent: <Char>>
}
    | 
 
 
  | 
<EXPR_COMMENT> SPECIAL : {
<CommentEnd: ":)"> : {
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Slash: "/">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<SlashSlash: "//">
}
    | 
 
 
  | 
<PROCESSING_INSTRUCTION> TOKEN : {
<PITargetError: "xml" | "Xml" | "xMl" | "xmL" | "XMl" | "xML" | "xMl" | "XML" | "XmL"> : PROCESSING_INSTRUCTION
}
    | 
 
 
  | 
<PROCESSING_INSTRUCTION> TOKEN : {
<PITarget: <NCNameTok>> : PROCESSING_INSTRUCTION
}
    | 
 
 
  | 
<DEFAULT,ELEMENT_CONTENT,QUOT_ATTRIBUTE_CONTENT,APOS_ATTRIBUTE_CONTENT> TOKEN : {
<CharRef: "&#" (<Digits> | "x" <HexDigits>) ";">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<QNameToken: (<Prefix> ":")? <LocalPart>>
}
    | 
 
 
  | 
<PRAGMA> TOKEN : {
<QNameForPragma: <QNameToken>> : PRAGMACONTENTSSPACEDIVIDER
}
    | 
 
 
  | 
<START_TAG> TOKEN : {
<TagQName: <QNameToken>>
}
    | 
 
 
  | 
<END_TAG> TOKEN : {
<EndTagQName: <QNameToken>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#NCNameTok: <Nmstart> (<Nmchar>)*>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<NCNameColonStar: <NCNameTok> ":" "*">
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<StarColonNCName: "*" ":" <NCNameTok>>
}
    | 
 
 
  | 
<DEFAULT,START_TAG,END_TAG> TOKEN : {
<S: (<WhitespaceChar>)+>
}
    | 
 
 
  | 
<PRAGMACONTENTSSPACEDIVIDER> TOKEN : {
<SForPragma: (<WhitespaceChar>)+> : PRAGMACONTENTS
}
    | 
 
 
  | 
<PROCESSING_INSTRUCTION> TOKEN : {
<SForPI: (<WhitespaceChar>)+> : PROCESSING_INSTRUCTION_CONTENT
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<Char: ["\t","\r","\n"," "-"\ufffd"]>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Digits: (["0"-"9"])+>
}
    | 
 
 
  | 
<DEFAULT> SPECIAL : {
<#CommentContents: (<CommentContent>)+>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#WhitespaceChar: ["\t","\r","\n"," "]>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Letter: <BaseChar> | <Ideographic>>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#BaseChar: ["A"-"Z","a"-"z","\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"]>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Ideographic: ["\u4e00"-"\u9fa5","\u3007","\u3021"-"\u3029"]>
}
    | 
 
 
  | 
<DEFAULT> 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"]>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Digit: ["0"-"9","\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"]>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<#Extender: ["\u00b7","\u02d0","\u02d1","\u0387","\u0640","\u0e46","\u0ec6","\u3005","\u3031"-"\u3035","\u309d"-"\u309e","\u30fc"-"\u30fe"]>
}
    | 
 
 
  | 
<DEFAULT> TOKEN : {
<NotNumber: ("." <Digits> | <Digits> ("." (["0"-"9"])*)?) (["e","E"] (["+","-"])? <Digits>)? ["a"-"z","A"-"Z"] (["0"-"9","a"-"z","A"-"Z"])*>
}
    | 
| CUnit | ::= | Module <EOF> | 
| Module | ::= | ( VersionDecl )? ( LibraryModule | MainModule ) | 
| VersionDecl | ::= | "xquery" "version" <StringLiteral> ( "encoding" <StringLiteral> )? Separator | 
| MainModule | ::= | Prolog QueryBody | 
| LibraryModule | ::= | ModuleDecl Prolog | 
| ModuleDecl | ::= | "module" "namespace" NCName "=" URILiteral Separator | 
| Prolog | ::= | ( ( DefaultNamespaceDecl | Setter | NamespaceDecl | Import ) Separator )* ( ( VarDecl | FunctionDecl | OptionDecl | FTOptionDecl ) Separator )* | 
| Setter | ::= | ( BoundarySpaceDecl | DefaultCollationDecl | BaseURIDecl | ConstructionDecl | OrderingModeDecl | EmptyOrderDecl | CopyNamespacesDecl ) | 
| Import | ::= | ( SchemaImport | ModuleImport ) | 
| Separator | ::= | ";" | 
| NamespaceDecl | ::= | "declare" "namespace" NCName "=" URILiteral | 
| BoundarySpaceDecl | ::= | "declare" "boundary-space" ( "preserve" | "strip" ) | 
| DefaultNamespaceDecl | ::= | "declare" "default" ( "element" | "function" ) "namespace" URILiteral | 
| OptionDecl | ::= | "declare" "option" QName <StringLiteral> | 
| FTOptionDecl | ::= | "declare" "ft-option" FTMatchOptions | 
| OrderingModeDecl | ::= | "declare" "ordering" ( "ordered" | "unordered" ) | 
| EmptyOrderDecl | ::= | "declare" "default" "order" "empty" ( <Greatest> | <Least> ) | 
| CopyNamespacesDecl | ::= | "declare" "copy-namespaces" PreserveMode "," InheritMode | 
| PreserveMode | ::= | "preserve" | 
|  | | | "no-preserve" | 
| InheritMode | ::= | "inherit" | 
|  | | | "no-inherit" | 
| DefaultCollationDecl | ::= | "declare" "default" "collation" URILiteral | 
| BaseURIDecl | ::= | "declare" "base-uri" URILiteral | 
| SchemaImport | ::= | "import" "schema" ( SchemaPrefix )? URILiteral ( "at" URILiteral ( "," URILiteral )* )? | 
| SchemaPrefix | ::= | ( ( "namespace" NCName "=" ) | ( "default" "element" "namespace" ) ) | 
| ModuleImport | ::= | "import" "module" ( "namespace" NCName "=" )? URILiteral ( "at" URILiteral ( "," URILiteral )* )? | 
| VarDecl | ::= | "declare" "variable" "$" QName ( TypeDeclaration )? ( ( ":=" ExprSingle ) | <External> ) | 
| ConstructionDecl | ::= | "declare" "construction" ( "strip" | "preserve" ) | 
| FunctionDecl | ::= | "declare" "function" QName "(" ( ParamList )? ")" ( "as" SequenceType )? ( EnclosedExpr | <External> ) | 
| ParamList | ::= | Param ( "," Param )* | 
| Param | ::= | "$" QName ( TypeDeclaration )? | 
| EnclosedExpr | ::= | ( <Lbrace> | <LbraceExprEnclosure> ) Expr <Rbrace> | 
| QueryBody | ::= | Expr | 
| Expr | ::= | ExprSingle ( "," ExprSingle )* | 
| ExprSingle | ::= | ( FLWORExpr | QuantifiedExpr | TypeswitchExpr | IfExpr | OrExpr ) | 
| FLWORExpr | ::= | ( ( ForClause | LetClause ) )+ ( WhereClause )? ( OrderByClause )? "return" ExprSingle | 
| ForClause | ::= | "for" "$" VarName ( TypeDeclaration )? ( PositionalVar )? ( FTScoreVar )? "in" ExprSingle ( "," "$" VarName ( TypeDeclaration )? ( PositionalVar )? ( FTScoreVar )? "in" ExprSingle )* | 
| PositionalVar | ::= | "at" "$" VarName | 
| FTScoreVar | ::= | "score" "$" VarName | 
| LetClause | ::= | ( ( "let" "$" VarName ( TypeDeclaration )? ) | ( "let" "score" "$" VarName ) ) ":=" ExprSingle ( "," ( ( "$" VarName ( TypeDeclaration )? ) | FTScoreVar ) ":=" ExprSingle )* | 
| WhereClause | ::= | "where" ExprSingle | 
| OrderByClause | ::= | ( ( "order" "by" ) | ( "stable" "order" "by" ) ) OrderSpecList | 
| OrderSpecList | ::= | OrderSpec ( "," OrderSpec )* | 
| OrderSpec | ::= | ExprSingle OrderModifier | 
| OrderModifier | ::= | ( ( <Ascending> | <Descending> ) )? ( "empty" ( <Greatest> | <Least> ) )? ( "collation" URILiteral )? | 
| QuantifiedExpr | ::= | ( "some" | "every" ) "$" VarName ( TypeDeclaration )? "in" ExprSingle ( "," "$" VarName ( TypeDeclaration )? "in" ExprSingle )* "satisfies" ExprSingle | 
| TypeswitchExpr | ::= | "typeswitch" "(" Expr ")" ( CaseClause )+ "default" ( "$" VarName )? "return" ExprSingle | 
| CaseClause | ::= | "case" ( "$" VarName "as" )? SequenceType "return" ExprSingle | 
| IfExpr | ::= | "if" "(" Expr ")" "then" ExprSingle "else" ExprSingle | 
| OrExpr | ::= | AndExpr ( "or" AndExpr )* | 
| AndExpr | ::= | ComparisonExpr ( "and" ComparisonExpr )* | 
| ComparisonExpr | ::= | FTContainsExpr ( ( ValueComp | GeneralComp | NodeComp ) FTContainsExpr )? | 
 
 
  | 
// TODO - Not yet implemented.
 | 
| FTContainsExpr | ::= | RangeExpr ( "ftcontains" FTSelection ( FTIgnoreOption )? )? | 
| RangeExpr | ::= | AdditiveExpr ( "to" AdditiveExpr )? | 
| AdditiveExpr | ::= | MultiplicativeExpr ( ( <Plus> | <Minus> ) MultiplicativeExpr )* | 
| MultiplicativeExpr | ::= | UnionExpr ( ( "*" | "div" | "idiv" | "mod" ) UnionExpr )* | 
| UnionExpr | ::= | IntersectExceptExpr ( ( "union" | "|" ) IntersectExceptExpr )* | 
| IntersectExceptExpr | ::= | InstanceofExpr ( ( "intersect" | "except" ) InstanceofExpr )* | 
| InstanceofExpr | ::= | TreatExpr ( "instance" "of" SequenceType )? | 
| TreatExpr | ::= | CastableExpr ( "treat" "as" SequenceType )? | 
| CastableExpr | ::= | CastExpr ( "castable" "as" SingleType )? | 
| CastExpr | ::= | UnaryExpr ( "cast" "as" SingleType )? | 
| UnaryExpr | ::= | ( <Minus> | <Plus> )* ValueExpr | 
| ValueExpr | ::= | ( ValidateExpr | PathExpr | ExtensionExpr ) | 
| GeneralComp | ::= | ( "=" | "!=" | <LessThanOpOrTagO> | "<=" | ">" | ">=" ) | 
| ValueComp | ::= | ( "eq" | "ne" | "lt" | "le" | "gt" | "ge" ) | 
| NodeComp | ::= | ( "is" | "<<" | ">>" ) | 
| ValidateExpr | ::= | "validate" ( ValidationMode )? <LbraceExprEnclosure> Expr <Rbrace> | 
| ValidationMode | ::= | ( "lax" | "strict" ) | 
| ExtensionExpr | ::= | ( Pragma )+ <LbraceExprEnclosure> ( Expr )? <Rbrace> | 
| Pragma | ::= | <PragmaOpen> ( <S> )? <QNameForPragma> ( <SForPragma> PragmaContents )? <PragmaClose> | 
| PragmaContents | ::= | ( <ExtensionContentChar> )* | 
| PathExpr | ::= | ( <Slash> ( RelativePathExpr )? | <SlashSlash> RelativePathExpr | RelativePathExpr ) | 
| RelativePathExpr | ::= | StepExpr ( ( <Slash> | <SlashSlash> ) StepExpr )* | 
| StepExpr | ::= | FilterExpr | 
|  | | | AxisStep | 
| AxisStep | ::= | ( ReverseStep | ForwardStep ) PredicateList | 
| ForwardStep | ::= | ForwardAxis NodeTest | 
|  | | | AbbrevForwardStep | 
| ForwardAxis | ::= | ( "child" "::" | "descendant" "::" | "attribute" "::" | "self" "::" | "descendant-or-self" "::" | "following-sibling" "::" | "following" "::" ) | 
| AbbrevForwardStep | ::= | ( "@" )? NodeTest | 
| ReverseStep | ::= | ReverseAxis NodeTest | 
|  | | | AbbrevReverseStep | 
| ReverseAxis | ::= | ( "parent" "::" | "ancestor" "::" | "preceding-sibling" "::" | "preceding" "::" | "ancestor-or-self" "::" ) | 
| AbbrevReverseStep | ::= | ".." | 
| NodeTest | ::= | ( KindTest | NameTest ) | 
| NameTest | ::= | ( QName | Wildcard ) | 
| Wildcard | ::= | ( "*" | <NCNameColonStar> | <StarColonNCName> ) | 
| FilterExpr | ::= | PrimaryExpr PredicateList | 
| PredicateList | ::= | ( Predicate )* | 
| Predicate | ::= | "[" Expr "]" | 
| PrimaryExpr | ::= | ( Literal | VarRef | ParenthesizedExpr | ContextItemExpr | FunctionCall | OrderedExpr | UnorderedExpr | Constructor ) | 
| Literal | ::= | NumericLiteral | 
|  | | | <StringLiteral> | 
| NumericLiteral | ::= | ( <IntegerLiteral> | <DecimalLiteral> | <DoubleLiteral> ) | 
| VarRef | ::= | "$" VarName | 
| VarName | ::= | QName | 
| ParenthesizedExpr | ::= | "(" ( Expr )? ")" | 
| ContextItemExpr | ::= | "." | 
| OrderedExpr | ::= | "ordered" <LbraceExprEnclosure> Expr <Rbrace> | 
| UnorderedExpr | ::= | "unordered" <LbraceExprEnclosure> Expr <Rbrace> | 
| FunctionCall | ::= | FunctionQName "(" ( ExprSingle ( "," ExprSingle )* )? ")" | 
| Constructor | ::= | ( DirectConstructor | ComputedConstructor ) | 
| DirectConstructor | ::= | ( DirElemConstructor | DirCommentConstructor | DirPIConstructor ) | 
| DirElemConstructor | ::= | ( <LessThanOpOrTagO> | <StartTagOpen> ) <TagQName> DirAttributeList ( <EmptyTagClose> | ( <StartTagClose> ( ( EnclosedExpr | DirectConstructor | CDataSection ) | <PredefinedEntityRef> | <CharRef> | <LCurlyBraceEscape> | <RCurlyBraceEscape> | <ElementContentChar> )* <EndTagOpen> <EndTagQName> ( <S> )? <EndTagClose> ) ) | 
| DirAttributeList | ::= | ( <S> ( <TagQName> ( <S> )? <ValueIndicator> ( <S> )? DirAttributeValue )? )* | 
| DirAttributeValue | ::= | ( ( <OpenQuot> ( <EscapeQuot> | <QuotAttrContentChar> | EnclosedExpr | <PredefinedEntityRef> | <CharRef> | <LCurlyBraceEscape> | <RCurlyBraceEscape> )* <CloseQuot> ) | ( <OpenApos> ( <EscapeApos> | <AposAttrContentChar> | EnclosedExpr | <PredefinedEntityRef> | <CharRef> | <LCurlyBraceEscape> | <RCurlyBraceEscape> )* <CloseApos> ) ) | 
| DirCommentConstructor | ::= | ( <XmlCommentStartForElementContent> | <XmlCommentStart> ) DirCommentContents <XmlCommentEnd> | 
| DirCommentContents | ::= | ( ( <CommentContentChar> | <CommentContentCharDash> ) )* | 
| DirPIConstructor | ::= | ( <ProcessingInstructionStartForElementContent> | <ProcessingInstructionStart> ) <PITarget> ( <SForPI> DirPIContents )? <ProcessingInstructionEnd> | 
| DirPIContents | ::= | ( <PIContentChar> )* | 
| CDataSection | ::= | ( <CdataSectionStartForElementContent> | <CdataSectionStart> ) CDataSectionContents <CdataSectionEnd> | 
| CDataSectionContents | ::= | ( <CDataSectionChar> )* | 
| ComputedConstructor | ::= | ( CompDocConstructor | CompElemConstructor | CompAttrConstructor | CompTextConstructor | CompCommentConstructor | CompPIConstructor ) | 
| CompDocConstructor | ::= | "document" <LbraceExprEnclosure> Expr <Rbrace> | 
| CompElemConstructor | ::= | "element" ( QName | ( <LbraceExprEnclosure> Expr <Rbrace> ) ) <LbraceExprEnclosure> ( ContentExpr )? <Rbrace> | 
| ContentExpr | ::= | Expr | 
| CompAttrConstructor | ::= | "attribute" ( QName | ( <LbraceExprEnclosure> Expr <Rbrace> ) ) <LbraceExprEnclosure> ( Expr )? <Rbrace> | 
| CompTextConstructor | ::= | "text" <LbraceExprEnclosure> Expr <Rbrace> | 
| CompCommentConstructor | ::= | "comment" <LbraceExprEnclosure> Expr <Rbrace> | 
| CompPIConstructor | ::= | "processing-instruction" ( NCName | ( <LbraceExprEnclosure> Expr <Rbrace> ) ) <LbraceExprEnclosure> ( Expr )? <Rbrace> | 
| SingleType | ::= | AtomicType ( "?" )? | 
| TypeDeclaration | ::= | "as" SequenceType | 
| SequenceType | ::= | ( ( "empty-sequence" "(" ")" ) | ( ItemType ( OccurrenceIndicator )? ) ) | 
| OccurrenceIndicator | ::= | ( "?" | "*" | <Plus> ) | 
| ItemType | ::= | ( KindTest | ( "item" "(" ")" ) | AtomicType ) | 
| AtomicType | ::= | QName | 
| KindTest | ::= | ( DocumentTest | ElementTest | AttributeTest | SchemaElementTest | SchemaAttributeTest | PITest | CommentTest | TextTest | AnyKindTest ) | 
| AnyKindTest | ::= | "node" "(" ")" | 
| DocumentTest | ::= | "document-node" "(" ( ( ElementTest | SchemaElementTest ) )? ")" | 
| TextTest | ::= | "text" "(" ")" | 
| CommentTest | ::= | "comment" "(" ")" | 
| PITest | ::= | "processing-instruction" "(" ( ( NCName | <StringLiteral> ) )? ")" | 
| AttributeTest | ::= | "attribute" "(" ( ( AttribNameOrWildcard ( "," TypeName )? ) )? ")" | 
| AttribNameOrWildcard | ::= | ( AttributeName | "*" ) | 
| SchemaAttributeTest | ::= | "schema-attribute" "(" AttributeDeclaration ")" | 
| AttributeDeclaration | ::= | AttributeName | 
| ElementTest | ::= | "element" "(" ( ( ElementNameOrWildcard ( "," TypeName ( "?" )? )? ) )? ")" | 
| ElementNameOrWildcard | ::= | ( ElementName | "*" ) | 
| SchemaElementTest | ::= | "schema-element" "(" ElementDeclaration ")" | 
| ElementDeclaration | ::= | ElementName | 
| AttributeName | ::= | QName | 
| ElementName | ::= | QName | 
| TypeName | ::= | QName | 
| URILiteral | ::= | <StringLiteral> | 
| FTSelection | ::= | FTOr ( FTPosFilter )* ( "weight" RangeExpr )? | 
| FTOrExpr | ::= | FTOr | 
| FTOr | ::= | FTAnd ( "ftor" FTAnd )* | 
| FTAnd | ::= | FTMildNot ( "ftand" FTMildNot )* | 
| FTMildNot | ::= | FTUnaryNot ( ( "not" "in" ) FTUnaryNot )* | 
| FTUnaryNot | ::= | ( "ftnot" )? FTPrimaryWithOptions | 
| FTPrimaryWithOptions | ::= | ( FTPrimary ( FTMatchOptions )? ) | 
| FTPrimary | ::= | ( ( FTWords ( FTTimes )? ) | ( "(" FTSelection ")" ) | FTExtensionSelection ) | 
| FTWords | ::= | FTWordsValue ( FTAnyallOption )? | 
| FTWordsValue | ::= | ( Literal | ( <LbraceExprEnclosure> Expr <Rbrace> ) ) | 
| FTExtensionSelection | ::= | ( Pragma )+ <LbraceExprEnclosure> ( FTSelection )? <Rbrace> | 
| FTAnyallOption | ::= | ( ( "any" ( "word" )? ) | ( "all" ( "words" )? ) | "phrase" ) | 
| FTTimes | ::= | "occurs" FTRange "times" | 
| FTRange | ::= | ( ( "exactly" AdditiveExpr ) | ( "at" <Least> AdditiveExpr ) | ( "at" "most" AdditiveExpr ) | ( "from" AdditiveExpr "to" AdditiveExpr ) ) | 
| FTPosFilter | ::= | ( FTOrder | FTWindow | FTDistance | FTScope | FTContent ) | 
| FTOrder | ::= | "ordered" | 
| FTWindow | ::= | "window" AdditiveExpr FTUnit | 
| FTDistance | ::= | "distance" FTRange FTUnit | 
| FTUnit | ::= | ( "words" | "sentences" | "paragraphs" ) | 
| FTScope | ::= | ( "same" | "different" ) FTBigUnit | 
| FTBigUnit | ::= | ( "sentence" | "paragraph" ) | 
| FTContent | ::= | ( ( "at" "start" ) | ( "at" "end" ) | ( "entire" "content" ) ) | 
| FTMatchOptions | ::= | ( FTMatchOption )+ | 
| FTMatchOption | ::= | FTLanguageOption | 
|  | | | FTWildCardOption | 
|  | | | FTThesaurusOption | 
|  | | | FTStemOption | 
|  | | | FTCaseOption | 
|  | | | FTDiacriticsOption | 
|  | | | FTStopwordOption | 
|  | | | FTExtensionOption | 
| FTCaseOption | ::= | ( ( "case" "insensitive" ) | ( "case" "sensitive" ) | "lowercase" | "uppercase" ) | 
| FTDiacriticsOption | ::= | ( ( "diacritics" "insensitive" ) | ( "diacritics" "sensitive" ) ) | 
| FTStemOption | ::= | ( ( "with" "stemming" ) | ( "without" "stemming" ) ) | 
| FTThesaurusOption | ::= | ( ( "with" "thesaurus" ( FTThesaurusID | "default" ) ) | ( "with" "thesaurus" "(" ( FTThesaurusID | "default" ) ( "," FTThesaurusID )* ")" ) | ( "without" "thesaurus" ) ) | 
| FTThesaurusID | ::= | "at" URILiteral ( "relationship" <StringLiteral> )? ( FTRange "levels" )? | 
| FTStopwordOption | ::= | ( ( "with" "stop" "words" FTRefOrList ( FTInclExclStringLiteral )* ) | ( "without" "stop" "words" ) | ( "with" "default" "stop" "words" ( FTInclExclStringLiteral )* ) ) | 
| FTRefOrList | ::= | ( ( "at" URILiteral ) | ( "(" <StringLiteral> ( "," <StringLiteral> )* ")" ) ) | 
| FTInclExclStringLiteral | ::= | ( "union" | "except" ) FTRefOrList | 
| FTLanguageOption | ::= | "language" <StringLiteral> | 
| FTWildCardOption | ::= | ( ( "with" "wildcards" ) | ( "without" "wildcards" ) ) | 
| FTExtensionOption | ::= | "option" QName <StringLiteral> | 
| FTIgnoreOption | ::= | "without" "content" UnionExpr | 
| NCName | ::= | QName | 
| QName | ::= | FunctionQName | 
|  | | | "attribute" | 
|  | | | "comment" | 
|  | | | "document-node" | 
|  | | | "element" | 
|  | | | "if" | 
|  | | | "item" | 
|  | | | "node" | 
|  | | | "processing-instruction" | 
|  | | | "schema-attribute" | 
|  | | | "schema-element" | 
|  | | | "text" | 
|  | | | "typeswitch" | 
|  | | | "empty-sequence" | 
| FunctionQName | ::= | <QNameToken> | 
|  | | | <External> | 
|  | | | "xquery" | 
|  | | | "version" | 
|  | | | "encoding" | 
|  | | | "module" | 
|  | | | "namespace" | 
|  | | | "declare" | 
|  | | | "boundary-space" | 
|  | | | "preserve" | 
|  | | | "strip" | 
|  | | | "default" | 
|  | | | "function" | 
|  | | | "option" | 
|  | | | "ft-option" | 
|  | | | "ordering" | 
|  | | | "ordered" | 
|  | | | "unordered" | 
|  | | | "order" | 
|  | | | "empty" | 
|  | | | <Greatest> | 
|  | | | <Least> | 
|  | | | "copy-namespaces" | 
|  | | | "no-preserve" | 
|  | | | "inherit" | 
|  | | | "no-inherit" | 
|  | | | "collation" | 
|  | | | "base-uri" | 
|  | | | "import" | 
|  | | | "schema" | 
|  | | | "at" | 
|  | | | "variable" | 
|  | | | "construction" | 
|  | | | "as" | 
|  | | | "lax" | 
|  | | | "strict" | 
|  | | | "return" | 
|  | | | "for" | 
|  | | | "in" | 
|  | | | "score" | 
|  | | | "let" | 
|  | | | "where" | 
|  | | | "by" | 
|  | | | "stable" | 
|  | | | <Ascending> | 
|  | | | <Descending> | 
|  | | | "some" | 
|  | | | "every" | 
|  | | | "satisfies" | 
|  | | | "case" | 
|  | | | "then" | 
|  | | | "else" | 
|  | | | "or" | 
|  | | | "and" | 
|  | | | "ftcontains" | 
|  | | | "to" | 
|  | | | "div" | 
|  | | | "idiv" | 
|  | | | "mod" | 
|  | | | "union" | 
|  | | | "intersect" | 
|  | | | "except" | 
|  | | | "instance" | 
|  | | | "of" | 
|  | | | "treat" | 
|  | | | "castable" | 
|  | | | "cast" | 
|  | | | "eq" | 
|  | | | "ne" | 
|  | | | "lt" | 
|  | | | "le" | 
|  | | | "gt" | 
|  | | | "ge" | 
|  | | | "is" | 
|  | | | "validate" | 
|  | | | "child" | 
|  | | | "descendant" | 
|  | | | "self" | 
|  | | | "descendant-or-self" | 
|  | | | "following-sibling" | 
|  | | | "following" | 
|  | | | "parent" | 
|  | | | "ancestor" | 
|  | | | "preceding-sibling" | 
|  | | | "preceding" | 
|  | | | "ancestor-or-self" | 
|  | | | "document" | 
|  | | | "weight" | 
|  | | | "not" | 
|  | | | "lowercase" | 
|  | | | "uppercase" | 
|  | | | "sensitive" | 
|  | | | "insensitive" | 
|  | | | "with" | 
|  | | | "diacritics" | 
|  | | | "without" | 
|  | | | "stemming" | 
|  | | | "thesaurus" | 
|  | | | "relationship" | 
|  | | | "levels" | 
|  | | | "stop" | 
|  | | | "words" | 
|  | | | "language" | 
|  | | | "wildcards" | 
|  | | | "start" | 
|  | | | "end" | 
|  | | | "entire" | 
|  | | | "content" | 
|  | | | "any" | 
|  | | | "all" | 
|  | | | "phrase" | 
|  | | | "word" | 
|  | | | "exactly" | 
|  | | | "most" | 
|  | | | "from" | 
|  | | | "distance" | 
|  | | | "window" | 
|  | | | "occurs" | 
|  | | | "times" | 
|  | | | "same" | 
|  | | | "different" | 
|  | | | "sentences" | 
|  | | | "paragraphs" | 
|  | | | "sentence" | 
|  | | | "paragraph" | 
|  | | | "type" |