-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtmp_md_productions.txt
More file actions
260 lines (260 loc) · 15.4 KB
/
tmp_md_productions.txt
File metadata and controls
260 lines (260 loc) · 15.4 KB
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
6:SqlStmtList [ SqlStmt { ";" [ SqlStmt ] } ] <EOF>
7:SqlStmtEof SqlStmt <EOF>
8:SqlExpressionEof Expression <EOF>
10:SqlStmt SqlSetOption | SqlAlter | OrderedQueryOrExpr | SqlExplain
14:SqlSetOption "SET" CompoundIdentifier "=" ( Literal | SimpleIdentifier | "ON" )
16:SqlAlter "ALTER" ( "SYSTEM" | "SESSION" ) SqlSetOption
18:SqlExplain "EXPLAIN" "PLAN"
23:ExplainDetailLevel ( "EXCLUDING" | "INCLUDING" [ "ALL" ] ) "ATTRIBUTES"
24:ExplainDepth "WITH" "TYPE" | "WITH" "IMPLEMENTATION" | "WITHOUT" "IMPLEMENTATION"
26:SqlQueryOrDml OrderedQueryOrExpr | SqlInsert | SqlDelete | SqlUpdate | SqlMerge
28:SqlDescribe "DESCRIBE"
34:SqlProcedureCall "CALL" NamedRoutineCall
41:SqlInsert ( "INSERT" | "UPSERT" ) SqlInsertKeywords
47:SqlInsertKeywords /* empty (dialect-specific) */
49:SqlDelete "DELETE" "FROM" CompoundTableIdentifier
54:SqlUpdate "UPDATE" CompoundTableIdentifier
61:SqlMerge "MERGE" "INTO" CompoundTableIdentifier
70:WhenMatchedClause "WHEN" "MATCHED" "THEN"
74:WhenNotMatchedClause "WHEN" "NOT" "MATCHED" "THEN" "INSERT"
80:Where "WHERE" Expression
86:OrderedQueryOrExpr QueryOrExpr OrderByLimitOpt
87:QueryOrExpr [ WithList ] LeafQueryOrExpr { AddSetOpQuery }
88:OrderByLimitOpt [ OrderBy ]
93:LeafQueryOrExpr LeafQuery | Expression
94:LeafQuery SqlSelect | TableConstructor | ExplicitTable
95:ExplicitTable "TABLE" CompoundIdentifier
96:TableConstructor ( "VALUES" | "VALUE" ) RowConstructor { "," RowConstructor }
97:RowConstructor "(" "ROW" ParenthesizedQueryOrCommaListWithDefault ")"
100:WithList "WITH" [ "RECURSIVE" ] AddWithItem { "," AddWithItem }
102:SqlSelect "SELECT"
117:SelectExpression "*" | Expression
118:GroupingElementList AddGroupingElement { "," AddGroupingElement }
120:WindowSpecification "(" [ SimpleIdentifier ]
129:WindowRange "CURRENT" "ROW"
132:WindowExclusion "EXCLUDE" ( "CURRENT" "ROW" | "NO" "OTHERS" | "GROUP" | "TIES" )
135:OrderBy "ORDER" "BY" OrderItemList
136:OrderItemList AddOrderItem { "," AddOrderItem }
138:LimitClause "LIMIT" (
143:OffsetClause "OFFSET" UnsignedNumericLiteralOrParam [ "ROW" | "ROWS" ]
144:FetchClause "FETCH" ( "FIRST" | "NEXT" ) UnsignedNumericLiteralOrParam ( "ROW" | "ROWS" ) "ONLY"
151:FromClause TableRef { JoinOrCommaTable }
152:JoinOrCommaTable "," TableRef
157:JoinType "JOIN" | "INNER" "JOIN"
164:JoinTable [ "NATURAL" ] JoinType TableRef
170:TableRef TableRef3
171:TableRef1 TableRef3
172:TableRef2 TableRef3
173:TableRef3 CompoundTableIdentifier
188:Snapshot "FOR" "SYSTEM_TIME" "AS" "OF" Expression
189:ExtendTable [ "EXTEND" ] ExtendList
190:ExtendList "(" AddColumnType { "," AddColumnType } ")"
192:Tablesample "TABLESAMPLE"
198:Pivot "PIVOT" "(" AddPivotAgg { "," AddPivotAgg } "FOR"
201:Unpivot "UNPIVOT" [ ( "INCLUDE" | "EXCLUDE" ) "NULLS" ]
205:MatchRecognize "MATCH_RECOGNIZE" "("
228:Expression Expression2
229:Expression2 AddExpression2b
245:RowExpressionExtension SimpleIdentifier
249:BinaryRowOperator "=" | "<<" | ">" | "<" | "<=" | ">=" | "<>" | "!="
260:BinaryMultisetOperator "UNION" [ "ALL" | "DISTINCT" ]
264:PrefixRowOperator "+" | "-" | "NOT" | "EXISTS" | "UNIQUE"
265:PostfixRowOperator "IS" [ "NOT" ]
272:Expression3 AtomicRowExpression
278:AtomicRowExpression LiteralOrIntervalExpression | DynamicParam | BuiltinFunctionCall | JdbcFunctionCall
288:BuiltinFunctionCall ( "CAST" | "SAFE_CAST" | "TRY_CAST" )
323:JsonApiCommonSyntax Expression "," Expression
327:JsonReturningClause "RETURNING" DataType
328:JsonExistsFunctionCall "JSON_EXISTS" "(" JsonApiCommonSyntax [ JsonExistsErrorBehavior "ON" "ERROR" ] ")"
329:JsonExistsErrorBehavior "TRUE" | "FALSE" | "UNKNOWN" | "ERROR"
331:JsonValueFunctionCall "JSON_VALUE" "(" JsonApiCommonSyntax
334:JsonValueEmptyOrErrorBehavior "ERROR" | "NULL" | ( "DEFAULT" Expression )
336:JsonQueryFunctionCall "JSON_QUERY" "(" JsonApiCommonSyntax
340:JsonQueryWrapperBehavior "WITHOUT" [ "ARRAY" ]
343:JsonQueryEmptyOrErrorBehavior "ERROR" | "NULL" | "EMPTY" "ARRAY" | "EMPTY" "OBJECT"
345:JsonObjectFunctionCall "JSON_OBJECT" "(" [ JsonNameAndValue { "," JsonNameAndValue } ] [ JsonConstructorNullClause ] ")"
346:JsonObjectAggFunctionCall "JSON_OBJECTAGG" "(" JsonNameAndValue [ JsonConstructorNullClause ] ")"
347:JsonArrayFunctionCall "JSON_ARRAY" "(" [ Expression { "," Expression } ] [ JsonConstructorNullClause ] ")"
348:JsonArrayAggFunctionCall "JSON_ARRAYAGG"
352:CaseExpression "CASE" [ Expression ] { "WHEN" ExpressionCommaList "THEN" Expression } [ "ELSE" Expression ] "END"
353:MultisetConstructor "MULTISET" ( "(" LeafQueryOrExpr ")" | "[" ExpressionCommaList "]" )
354:ArrayConstructor "ARRAY" ( "(" ")" | "(" ( OrderedQueryOrExpr | ExpressionCommaList ) ")" | "[" [ ExpressionCommaList ] "]" )
355:MapConstructor "MAP" ( "(" ")" | "(" ( OrderedQueryOrExpr | ExpressionCommaList ) ")" | "[" [ ExpressionCommaList ] "]" )
362:DataType TypeName { ( "MULTISET" | "ARRAY" ) }
363:TypeName SqlTypeName | RowTypeName | MapTypeName | CompoundIdentifier
364:SqlTypeName SqlTypeName1 | SqlTypeName2 | SqlTypeName3 | CharacterTypeName | DateTimeTypeName
365:SqlTypeName1 "GEOMETRY" | "BOOLEAN"
370:SqlTypeName2 ( "BINARY" [ "VARYING" ] | "VARBINARY" ) [ Precision ]
371:SqlTypeName3 ( "DECIMAL" | "DEC" | "NUMERIC" | "ANY" ) [ "(" UnsignedIntLiteral [ "," IntLiteral ] ")" ]
372:CharacterTypeName ( ( "CHARACTER" | "CHAR" ) [ "VARYING" ] | "VARCHAR" )
374:DateTimeTypeName "DATE"
377:TimeZoneOpt "WITH" [ "LOCAL" ] "TIME" "ZONE"
381:RowTypeName "ROW" "("
385:MapTypeName "MAP" "<" DataType "," DataType ">"
387:Literal NonIntervalLiteral | IntervalLiteral
388:LiteralOrIntervalExpression IntervalLiteralOrExpression | NonIntervalLiteral
389:IntervalLiteralOrExpression "INTERVAL" [ "+" | "-" ]
394:NonIntervalLiteral NumericLiteral | StringLiteral | SpecialLiteral | DateTimeLiteral
395:NumericLiteral [ "+" | "-" ] UnsignedNumericLiteral
396:UnsignedNumericLiteral UNSIGNED_INTEGER_LITERAL
400:SpecialLiteral "TRUE" | "FALSE" | "UNKNOWN" | "NULL"
401:DateTimeLiteral "{d" StringLiteral "}" | "{t" StringLiteral "}" | "{ts" StringLiteral "}"
409:IntervalLiteral "INTERVAL" [ "+" | "-" ] SimpleStringLiteral IntervalQualifier
410:IntervalQualifier ( "YEAR" | "QUARTER" | "MONTH" | "WEEK" | "DAY" | "HOUR" | "MINUTE" )
414:IntervalQualifierStart ( "YEAR" | "QUARTER" | "MONTH" | "WEEK" | "DAY" | "HOUR" | "MINUTE" )
422:AddSetOpQuery BinaryQueryOperator LeafQueryOrExpr
423:BinaryQueryOperator ( "UNION" | "INTERSECT" | "EXCEPT" ) [ "ALL" | "DISTINCT" ]
424:AddSetOpQueryOrExpr BinaryQueryOperator LeafQueryOrExpr
426:Query [ WithList ] LeafQuery { AddSetOpQuery }
427:SqlQueryEof OrderedQueryOrExpr <EOF>
428:ExprOrJoinOrOrderedQuery Query OrderByLimitOpt
431:ParenthesizedExpression "(" ( OrderedQueryOrExpr | Expression ) ")"
432:ParenthesizedQueryOrCommaList "(" ( OrderedQueryOrExpr | ExpressionCommaList ) ")"
433:ParenthesizedQueryOrCommaListWithDefault "(" [ ( Expression | "DEFAULT" )
435:ExpressionCommaList Expression { "," Expression }
437:SimpleIdentifier Identifier
438:SimpleIdentifierOrListOrEmpty SimpleIdentifier | ParenthesizedSimpleIdentifierList | "(" ")"
439:ParenthesizedSimpleIdentifierList "(" SimpleIdentifier { "," SimpleIdentifier } ")"
440:CompoundIdentifier Identifier { "." Identifier } [ "." "*" ]
441:CompoundTableIdentifier Identifier { "." Identifier }
442:Identifier IDENTIFIER | HYPHENATED_IDENTIFIER | QUOTED_IDENTIFIER
445:SimpleIdentifierFromStringLiteral StringLiteral
446:ParenthesizedCompoundIdentifierList "(" AddCompoundIdentifierType { "," AddCompoundIdentifierType } ")"
447:NotNullOpt "NOT" "NULL" | /* empty (nullable) */
449:TableHints "/*+" AddHint { "," AddHint } "*/"
450:SqlSelectKeywords /* empty (dialect-specific) */
451:ParenthesizedLiteralOptionCommaList "(" [ Literal { "," Literal } ] ")"
452:ParenthesizedKeyValueOptionCommaList "(" ( SimpleIdentifier | StringLiteral ) "=" StringLiteral
455:Where "WHERE" Expression
456:GroupBy "GROUP" "BY" [ "DISTINCT" | "ALL" ] GroupingElementList
457:Having "HAVING" Expression
458:Window "WINDOW" AddWindowSpec { "," AddWindowSpec }
459:Qualify "QUALIFY" Expression
461:TableOverOpt /* empty (extension point) */
462:Over TableOverOpt
463:ExtendedTableRef /* empty (parser extension point) */
465:TableFunctionCall "TABLE" "(" [ "SPECIFIC" ] NamedRoutineCall ")"
466:ImplicitTableFunctionCallArgs CompoundIdentifier "(" [ AddArg0 { "," AddArg } ] ")"
467:NamedRoutineCall CompoundIdentifier "(" [ AddArg0 { "," AddArg } ] ")"
468:FunctionParameterList "(" [ AllOrDistinct ] AddArg0 { "," AddArg } ")"
469:AllOrDistinct "ALL" | "DISTINCT"
470:UnquantifiedFunctionParameterList FunctionParameterList
472:AddArg0 [ SimpleIdentifier ":=" ]
474:AddArg [ SimpleIdentifier ":=" ]
476:AddExpression Expression
477:AddExpression2b { PrefixRowOperator } Expression3 { "." RowExpressionExtension }
478:AddExpressions ExpressionCommaList
479:AddGroupingElement "GROUPING" "SETS" "(" GroupingElementList ")"
484:AddWindowSpec SimpleIdentifier "AS" WindowSpecification
485:AddWithItem SimpleIdentifier [ ParenthesizedSimpleIdentifierList ] "AS" ParenthesizedExpression
486:AddSelectItem SelectExpression
490:AddRowConstructor RowConstructor
491:AddSimpleIdentifiers SimpleIdentifier { "," SimpleIdentifier }
492:AddIdentifierSegment Identifier
493:AddTableIdentifierSegment Identifier
494:AddOrderItem Expression [ "AS" ( SimpleIdentifier | SimpleIdentifierFromStringLiteral ) ]
496:AddMeasureColumn Expression "AS" SimpleIdentifier
497:AddSubsetDefinition SimpleIdentifier "=" "(" ExpressionCommaList ")"
498:AddPivotAgg NamedFunctionCall [ [ "AS" ] SimpleIdentifier ]
499:AddPivotValue RowConstructor [ [ "AS" ] SimpleIdentifier ]
500:AddUnpivotValue SimpleIdentifierOrList [ "AS" RowConstructor ]
501:AddKeyValueOption ( SimpleIdentifier | StringLiteral ) "=" StringLiteral
502:AddOptionValue NumericLiteral | StringLiteral
503:AddColumnType CompoundIdentifier DataType [ NotNullOpt ]
504:AddCompoundIdentifierType CompoundIdentifier [ DataType [ NotNullOpt ] ]
505:AddCompoundIdentifierTypes AddCompoundIdentifierType { "," AddCompoundIdentifierType }
506:AddHint SimpleIdentifier [ "(" [ Literal { "," Literal } ] ")" ]
507:Default "DEFAULT"
508:TableParam ExplicitTable
511:PartitionedQueryOrQueryOrExpr OrderedQueryOrExpr
514:PartitionedByAndOrderBy [ "PARTITION" "BY" SimpleIdentifierOrList ]
516:OrderByOfSetSemanticsTable "ORDER" "BY"
522:NamedFunctionCall ( StringAggFunctionCall | PercentileFunctionCall | NamedCall )
526:NamedCall [ "SPECIFIC" ] FunctionName
528:FunctionName CompoundIdentifier | ReservedFunctionName
529:ReservedFunctionName NonReservedJdbcFunctionName | /* reserved keywords usable as function names */
530:NonReservedJdbcFunctionName "SUBSTRING"
531:NonReservedKeyWord /* non-reserved keyword set (lexer-defined) */
532:NonReservedKeyWord0of3 NonReservedKeyWord
533:NonReservedKeyWord1of3 NonReservedKeyWord
534:NonReservedKeyWord2of3 NonReservedKeyWord
536:StringAggFunctionCall ( "ARRAY_AGG" | "ARRAY_CONCAT_AGG" | "GROUP_CONCAT" | "STRING_AGG" )
540:PercentileFunctionCall ( "PERCENTILE_CONT" | "PERCENTILE_DISC" )
544:GroupByWindowingCall ( "TUMBLE" | "HOP" | "SESSION" ) FunctionParameterList
546:MatchRecognizeFunctionCall "CLASSIFIER" "(" ")" | "MATCH_NUMBER" "(" ")"
550:MatchRecognizeCallWithModifier ( "RUNNING" | "FINAL" ) NamedFunctionCall
551:MatchRecognizeNavigationLogical [ "RUNNING" | "FINAL" ] ( "FIRST" | "LAST" )
553:MatchRecognizeNavigationPhysical ( "PREV" | "NEXT" )
556:withinDistinct "WITHIN" "DISTINCT" "(" ExpressionCommaList ")"
557:withinGroup "WITHIN" "GROUP" "(" OrderBy ")"
558:NullTreatment ( "IGNORE" | "RESPECT" ) "NULLS"
559:nullTreatment NullTreatment
560:JdbcFunctionCall "{fn" CompoundIdentifier "(" [ Expression { "," Expression } ] ")" "}"
562:DynamicParam "?" | ":" UnsignedIntLiteral
563:CursorExpression "CURSOR" "(" OrderedQueryOrExpr ")"
564:ContextVariable "CURRENT_USER" | "CURRENT_DATE" | "CURRENT_TIME"
566:NewSpecification "NEW" SimpleIdentifier
567:SequenceExpression ( "NEXT" | "CURRENT" ) "VALUE" "FOR" CompoundIdentifier
569:SimpleIdentifierOrList SimpleIdentifier | ParenthesizedSimpleIdentifierList
570:PatternExpression PatternTerm { "|" PatternTerm }
571:PatternTerm PatternFactor { PatternFactor }
572:PatternFactor PatternPrimary
578:PatternPrimary SimpleIdentifier
582:PatternDefinition SimpleIdentifier "AS" Expression
584:StringLiteral BINARY_STRING_LITERAL { QUOTED_STRING }
590:SimpleStringLiteral QUOTED_STRING | BIG_QUERY_QUOTED_STRING | BIG_QUERY_DOUBLE_QUOTED_STRING
592:UnsignedIntLiteral UNSIGNED_INTEGER_LITERAL
593:IntLiteral [ "+" | "-" ] UNSIGNED_INTEGER_LITERAL
594:UnsignedNumericLiteralOrParam UnsignedNumericLiteral | DynamicParam
596:TimeUnitOrName TimeUnit | SimpleIdentifier
597:TimeUnit "NANOSECOND" | "MICROSECOND" | "MILLISECOND" | "SECOND"
604:weekdayName "SUNDAY" | "MONDAY" | "TUESDAY" | "WEDNESDAY"
606:Year "YEAR" | "YEARS"
607:Quarter "QUARTER" | "QUARTERS"
608:Month "MONTH" | "MONTHS"
609:Week "WEEK" | "WEEKS"
610:Day "DAY" | "DAYS"
611:Hour "HOUR" | "HOURS"
612:Minute "MINUTE" | "MINUTES"
613:Second "SECOND" | "SECONDS"
614:IntervalWithoutQualifier "INTERVAL" /* default SECOND */
616:JsonRepresentation "JSON" [ "ENCODING" ( "UTF8" | "UTF16" | "UTF32" ) ]
617:JsonInputClause "FORMAT" JsonRepresentation
618:JsonPathSpec StringLiteral
619:JsonName Expression
620:JsonNameAndValue [ "KEY" ] JsonName ( "VALUE" | "," | ":" ) Expression
621:JsonConstructorNullClause "NULL" "ON" "NULL" | "ABSENT" "ON" "NULL"
622:JsonOutputClause JsonReturningClause [ "FORMAT" JsonRepresentation ]
624:LambdaExpression SimpleIdentifierOrListOrEmpty "->" Expression
626:PeriodConstructor "PERIOD" "(" Expression "," Expression ")"
627:ArrayLiteral "{" ( Literal { "," Literal }
632:PrecisionOpt "(" UnsignedIntLiteral ")" | /* empty */
633:NullableOptDefaultTrue "NULL" | "NOT" "NULL" | /* empty (default true) */
634:NullableOptDefaultFalse "NULL" | "NOT" "NULL" | /* empty (default false) */
636:JsonArrayAggOrderByClause OrderBy
638:ContainsSubstrFunctionCall "CONTAINS_SUBSTR" "(" Expression "," Expression
641:DateDiffFunctionCall "DATE_DIFF" "(" Expression "," Expression "," TimeUnitOrName ")"
642:TimestampAddFunctionCall "TIMESTAMPADD" "(" TimeUnitOrName "," Expression "," Expression ")"
643:TimestampDiffFunctionCall "TIMESTAMPDIFF" "(" TimeUnitOrName "," Expression "," Expression ")"
644:TimestampDiff3FunctionCall "TIMESTAMP_DIFF" "(" Expression "," Expression "," TimeUnitOrName ")"
645:DatetimeDiffFunctionCall "DATETIME_DIFF" "(" Expression "," Expression "," TimeUnitOrName ")"
646:DateTruncFunctionCall "DATE_TRUNC" "(" Expression "," TimeUnitOrName ")"
647:DatetimeTruncFunctionCall "DATETIME_TRUNC" "(" Expression "," TimeUnitOrName ")"
648:TimestampTruncFunctionCall "TIMESTAMP_TRUNC" "(" Expression "," TimeUnitOrName ")"
649:TimeDiffFunctionCall "TIME_DIFF" "(" Expression "," Expression "," TimeUnitOrName ")"
650:TimeTruncFunctionCall "TIME_TRUNC" "(" Expression "," TimeUnitOrName ")"
652:DateTimeConstructorCall ( "DATE" | "TIME" | "DATETIME" | "TIMESTAMP" )
655:FloorCeilOptions StandardFloorCeilOptions
656:StandardFloorCeilOptions "(" Expression [ "TO" TimeUnitOrName ] ")"
659:JdbcOdbcDataTypeName "SQL_CHAR" | "CHAR" | "SQL_VARCHAR" | "VARCHAR"
676:JdbcOdbcDataType JdbcOdbcDataTypeName
678:CollectionsTypeName DataType ( "MULTISET" | "ARRAY" )
679:CollateClause "COLLATE" SimpleIdentifier
680:UnusedExtension /* empty (extension point) */
682:MeasureColumnCommaList AddMeasureColumn { "," AddMeasureColumn }
683:SubsetDefinitionCommaList AddSubsetDefinition { "," AddSubsetDefinition }
684:PatternDefinitionCommaList PatternDefinition { "," PatternDefinition }
686:Natural "NATURAL" | /* empty */
687:Scope "SYSTEM" | "SESSION"
688:comp "<" | "<=" | ">" | ">=" | "=" | "<>" | "!="
689:periodOperator /* TODO: period operator (overlaps) */