-
Notifications
You must be signed in to change notification settings - Fork 0
/
InlineGrammer.txt
191 lines (189 loc) · 15.7 KB
/
InlineGrammer.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
[1] Module ::= VersionDecl? (PrologExpr | ( ModuleDecl Prolog ))
[2] VersionDecl ::= <"xquery" "version"> StringLiteral ("encoding" StringLiteral)? Separator
[5] ModuleDecl ::= <"module" "namespace"> NCName "=" URILiteral Separator
[6] Prolog ::= ((Setter | SchemaImport | ModuleImport | NamespaceDecl | DefaultNamespaceDecl) Separator)* ((VarDecl | FunctionDecl | OptionDecl) Separator)*
[7] Setter ::= BoundarySpaceDecl
| DefaultCollationDecl
| BaseURIDecl
| ConstructionDecl
| OrderingModeDecl
| EmptyOrderDecl
| CopyNamespacesDecl
[9] Separator ::= ";"
[10] NamespaceDecl ::= <"declare" "namespace"> NCName "=" URILiteral
[11] BoundarySpaceDecl ::= <"declare" "boundary-space"> ("preserve" | "strip")
[12] DefaultNamespaceDecl ::= (<"declare" "default" "element"> | <"declare" "default" "function">) "namespace" URILiteral
[13] OptionDecl ::= <"declare" "option"> QName StringLiteral
[14] OrderingModeDecl ::= <"declare" "ordering"> ("ordered" | "unordered")
[15] EmptyOrderDecl ::= <"declare" "default" "order"> (<"empty" "greatest"> | <"empty" "least">)
[16] CopyNamespacesDecl ::= <"declare " "copy-namespaces"> ("preserve" | "no-preserve") "," ("inherit" | "no-inherit")
[19] DefaultCollationDecl ::= <"declare" "default" "collation"> URILiteral
[20] BaseURIDecl ::= <"declare" "base-uri"> URILiteral
[21] SchemaImport ::= <"import" "schema"> SchemaPrefix? URILiteral (<"at" URILiteral> ("," URILiteral)*)?
[22] SchemaPrefix ::= ("namespace" NCName "=")
| (<"default" "element"> "namespace")
[23] ModuleImport ::= <"import" "module" > ("namespace" NCName "=")? URILiteral (<"at" URILiteral> ("," URILiteral)*)?
[24] VarDecl ::= <"declare" "variable" "$"> QName TypeDeclaration? ((":=" ExprSingle) | "external")
[25] ConstructionDecl ::= <"declare" "construction"> ("preserve" | "strip")
[26] FunctionDecl ::= <"declare" "function"> <QName "("> ParamList? (")" | (<")" "as"> SequenceType)) (EnclosedExpr | "external")
[27] ParamList ::= Param ("," Param)*
[28] Param ::= "$" QName TypeDeclaration?
[29] EnclosedExpr ::= "{" Expr "}"
[31] Expr ::= ExprSingle ("," ExprSingle)*
[32] ExprSingle ::= FLWORExpr
| QuantifiedExpr
| TypeswitchExpr
| IfExpr
| OrExpr
[33] FLWORExpr ::= ( (<"for" "$"> QName TypeDeclaration? PositionalVar? "in" ExprSingle
("," Param PositionalVar? "in" ExprSingle)*)
| (<"let" "$"> QName TypeDeclaration? ":=" ExprSingle
("," Param ":=" ExprSingle)*)+ )
( "where" ExprSingle )?
( (<"order" "by">
| <"stable" "order" "by">) OrderSpecList )?
"return" ExprSingle
[35] PositionalVar ::= "at" "$" QName
[39] OrderSpecList ::= OrderSpec ("," OrderSpec)*
[40] OrderSpec ::= ExprSingle OrderModifier
[41] OrderModifier ::= ("ascending" | "descending")? (<"empty" "greatest"> | <"empty" "least">)? ("collation" URILiteral)?
[42] QuantifiedExpr ::= (<"some" "$"> | <"every" "$">) QName TypeDeclaration? "in" ExprSingle ("," "$" QName TypeDeclaration? "in" ExprSingle)* "satisfies" ExprSingle
[43] TypeswitchExpr ::= <"typeswitch" "("> Expr ")" CaseClause+ "default" ("$" QName)? "return" ExprSingle
[44] CaseClause ::= "case" ("$" QName "as")? SequenceType "return" ExprSingle
[45] IfExpr ::= <"if" "("> Expr ")" "then" ExprSingle "else" ExprSingle
[46] OrExpr ::= AndExpr ( "or" AndExpr )*
[47] AndExpr ::= ComparisonExpr ( "and" ComparisonExpr )*
[48] ComparisonExpr ::= RangeExpr ( ComparisonComp RangeExpr )?
[49] RangeExpr ::= AdditiveExpr ( "to" AdditiveExpr )?
[50] AdditiveExpr ::= MultiplicativeExpr ( ("+" | "-") MultiplicativeExpr )*
[51] MultiplicativeExpr ::= UnionExpr ( ("*" | "div" | "idiv" | "mod") UnionExpr )*
[52] UnionExpr ::= IntersectExceptExpr ( ("union" | "|") IntersectExceptExpr )*
[53] IntersectExceptExpr ::= UnaryExpr ( ("intersect" | "except") UnaryExpr )*
[58] UnaryExpr ::= ("-" | "+")* (
<"validate" "{"> Expr "}"
| <"validate" ("lax" | "strict")> "{" Expr "}"
| ("/" RelativePathExpr?)
| ("//" RelativePathExpr)
| RelativePathExpr
| Pragma+ "{" Expr? "}"
)
( <"cast" "as"> QName "?"? )?
( <"castable" "as"> QName "?"? )?
( <"treat" "as"> SequenceType )?
( <"instance" "of"> SequenceType )?
[59] ValueExpr ::=
[x60] ComparisonComp ::= "=" | "!=" | "<" | "<=" | ">" | ">=" | "eq" | "ne" | "lt" | "le" | "gt" | "ge" | "is" | "<<" | ">>"
[65] Pragma ::= "(#" S? QName PragmaContents "#)" /* ws: explicitXQ */
[66] PragmaContents ::= (Char* - (Char* '#)' Char*))
[68] RelativePathExpr ::= StepExpr (("/" | "//") StepExpr)*
[69] StepExpr ::= StepExprImpl PredicateList
[x69] StepExprImpl ::= AxisStep NodeTest
| IntegerLiteral
| DecimalLiteral
| DoubleLiteral
| StringLiteral
| "$" QName
| "(" Expr? ")"
| "."
| <QName "("> (ExprSingle ("," ExprSingle)*)? ")" /* gn: parensXQ */
| "<" QName DirAttributeList ("/>" | (">" DirElemContent* "</" QName S? ">"))
| "<!--" DirCommentContents "-->"
| "<?" PITarget (S DirPIContents)? "?>" /* ws: explicitXQ */
| <"document" "{"> Expr "}"
| (<"element" QName "{"> | (<"element" "{"> Expr "}" "{")) Expr? "}"
| (<"attribute" QName "{"> | (<"attribute" "{"> Expr "}" "{")) Expr? "}"
| <"text" "{"> Expr "}"
| <"comment" "{"> Expr "}"
| (<"processing-instruction" NCName "{"> | (<"processing-instruction" "{"> Expr "}" "{")) Expr? "}"
| <"ordered" "{"> Expr "}"
| <"unordered" "{"> Expr "}"
| "@"? NoteTest
| ".."
[70] AxisStep ::= <"child" "::">
| <"descendant" "::">
| <"attribute" "::">
| <"self" "::">
| <"descendant-or-self" "::">
| <"following-sibling" "::">
| <"following" "::">
| <"parent" "::">
| <"ancestor" "::">
| <"preceding-sibling" "::">
| <"preceding" "::">
| <"ancestor-or-self" "::">
[77] NodeTest ::= <"document-node" "("> (ElementTest | SchemaElementTest)? ")"
| ElementTest
| <"attribute" "("> ((QName | "*") ("," QName)?)? ")"
| SchemaElementTest
| <"schema-attribute" "("> QName ")"
| <"processing-instruction" "("> (NCName | StringLiteral)? ")"
| <"comment" "("> ")"
| <"text" "("> ")"
| <"node" "("> ")"
| QName
| "*"
| <NCName ":" "*">
| <"*" ":" NCName> /* ws: explicitXQ */
[81] PredicateList ::= ( "[" Expr "]" )*
[95] DirAttributeList ::= (S (QName S? "=" S? DirAttributeValue)?)* /* ws: explicitXQ */
[96] DirAttributeValue ::= ('"' (EscapeQuot | QuotAttrValueContent)* '"')
| ("'" (EscapeApos | AposAttrValueContent)* "'") /* ws: explicitXQ */
[97] QuotAttrValueContent ::= QuotAttrContentChar
| CommonContent
[98] AposAttrValueContent ::= AposAttrContentChar
| CommonContent
[99] DirElemContent ::= "<" QName DirAttributeList ("/>" | (">" DirElemContent* "</" QName S? ">"))
| "<!--" DirCommentContents "-->" /* ws: explicitXQ */
| "<?" PITarget (S DirPIContents)? "?>" /* ws: explicitXQ */
| ElementContentChar
| "<![CDATA[" CDataSectionContents "]]>"
| CommonContent
[100] CommonContent ::= PredefinedEntityRef | CharRef | "{{" | "}}" | EnclosedExpr
[102] DirCommentContents ::= ((Char - '-') | <'-' (Char - '-')>)* /* ws: explicitXQ */
[104] DirPIContents ::= (Char* - (Char* '?>' Char*)) /* ws: explicitXQ */
[105] CDataSection ::= "<![CDATA[" CDataSectionContents "]]>" /* ws: explicitXQ */
[106] CDataSectionContents ::= (Char* - (Char* ']]>' Char*)) /* ws: explicitXQ */
[107] ComputedConstructor ::= <"document" "{"> Expr "}"
| (<"element" Q Name "{"> | (<"element" "{"> Expr "}" "{")) Expr? "}"
| (<"attribute" QName "{"> | (<"attribute" "{"> Expr "}" "{")) Expr? "}"
| <"text" "{"> Expr "}"
| <"comment" "{"> Expr "}"
| (<"processing-instruction" NCName "{"> | (<"processing-instruction" "{"> Expr "} " "{")) Expr? "}"
[116] TypeDeclaration ::= "as" SequenceType
[117] SequenceType ::= (ItemType ("?" | "*" | "+")?)
| <"void" "(" ")">
[119] ItemType ::= QName
| <"document-node" "("> (ElementTest | SchemaElementTest)? ")"
| ElementTest
| <"attribute" "("> ((QName | "*") ("," QName)?)? ")"
| SchemaElementTest
| <"schema-attribute" "("> QName ")"
| <"processing-instruction" "("> (NCName | StringLiteral)? ")"
| <"comment" "("> ")"
| <"text" "("> ")"
| <"node" "("> ")"
| <"item" "(" ")">
[131] ElementTest ::= <"element" "("> ((QName | "*") ("," QName "?"?)?)? ")"
[133] SchemaElementTest ::= <"schema-element" "("> QName ")"
[138] IntegerLiteral ::= Digits
[139] DecimalLiteral ::= ("." Digits) | (Digits "." [0-9]*) /* ws: explicitXQ */
[140] DoubleLiteral ::= (("." Digits) | (Digits ("." [0-9]*)?)) [eE] [+-]? Digits /* ws: explicitXQ */
[141] URILiteral ::= StringLiteral
[142] StringLiteral ::= ('"' (PredefinedEntityRef | CharRef | ('"' '"') | [^"&])* '"')
| ("'" (PredefinedEntityRef | CharRef | ("'" "'") | [^'&])* "'") /* ws: explicitXQ */
[143] PITarget ::= [http://www.w3.org/TR/REC-xml#NT-PITarget]XML /* gn: xml-versionXQ */
[146] Digits ::= [0-9]+
[147] PredefinedEntityRef ::= "&" ("lt" | "gt" | "amp" | "quot" | "apos") ";" /* ws: explicitXQ */
[148] CharRef ::= [http://www.w3.org/TR/REC-xml#NT-CharRef]XML /* gn: xml-versionXQ */
[149] EscapeQuot ::= '""'
[150] EscapeApos ::= "''"
[151] ElementContentChar ::= Char - [{}<&]
[152] QuotAttrContentChar ::= Char - ["{}<&]
[153] AposAttrContentChar ::= Char - ['{}<&]
[154] Comment ::= "(:" (CommentContents | Comment)* ":)" /* ws: explicitXQ */
/* gn: commentsXQ */
[155] CommentContents ::= (Char+ - (Char* ':)' Char*))
[156] QName ::= [http://www.w3.org/TR/REC-xml-names/#NT-QName]Names /* gn: xml-versionXQ */
[157] NCName ::= [http://www.w3.org/TR/REC-xml-names/#NT-NCName]Names /* gn: xml-versionXQ */
[158] S ::= [http://www.w3.org/TR/REC-xml#NT-S]XML /* gn: xml-versionXQ */
[159] Char ::= [http://www.w3.org/TR/REC-xml#NT-Char]XML /* gn: xml-versionXQ */