feat(flink): add grammar rules that pass the test
This commit is contained in:
parent
da9660c6fe
commit
afef8e6d72
@ -157,19 +157,27 @@ valuesRowDefinition
|
||||
// Select statements
|
||||
|
||||
queryStatement
|
||||
:
|
||||
: (
|
||||
selectClause | selectStatement
|
||||
) orderByCaluse? limitClause
|
||||
;
|
||||
|
||||
selectStatement
|
||||
: SELECT setQuantifier?
|
||||
(ASTERISK_SIGN | projectItemDefinition (COMMA projectItemDefinition)*)
|
||||
FROM tableExpression
|
||||
: selectClause fromClause whereClause? groupByClause? havingClause?
|
||||
;
|
||||
|
||||
selectClause
|
||||
: SELECT setQuantifier? (ASTERISK_SIGN | projectItemDefinition (COMMA projectItemDefinition)*)
|
||||
;
|
||||
|
||||
projectItemDefinition
|
||||
: expression (AS? uid)? | uid '.' '*'
|
||||
;
|
||||
|
||||
fromClause
|
||||
: FROM tableExpression
|
||||
;
|
||||
|
||||
tableExpression
|
||||
: tableReference (COMMA tableReference)*
|
||||
;
|
||||
@ -182,6 +190,39 @@ tablePrimary
|
||||
: TABLE? uid
|
||||
;
|
||||
|
||||
whereClause
|
||||
: WHERE booleanExpression
|
||||
;
|
||||
|
||||
groupByClause
|
||||
: GROUP BY groupItemDefinition (COMMA groupItemDefinition)*
|
||||
;
|
||||
|
||||
groupItemDefinition
|
||||
: expression
|
||||
| LR_BRACKET RR_BRACKET
|
||||
| LR_BRACKET expression (COMMA expression)* RR_BRACKET
|
||||
| CUBE LR_BRACKET expression (COMMA expression)* RR_BRACKET
|
||||
| ROLLUP LR_BRACKET expression (COMMA expression)* RR_BRACKET
|
||||
| GROUPING SETS LR_BRACKET groupItemDefinition (COMMA groupItemDefinition)* RR_BRACKET
|
||||
;
|
||||
|
||||
havingClause
|
||||
: HAVING booleanExpression
|
||||
;
|
||||
|
||||
orderByCaluse
|
||||
: ORDER BY orderItemDefition (COMMA orderItemDefition)*
|
||||
;
|
||||
|
||||
orderItemDefition
|
||||
: expression (ASC | DESC)
|
||||
;
|
||||
|
||||
limitClause
|
||||
: LIMIT (ALL | limit=expression)
|
||||
;
|
||||
|
||||
// expression
|
||||
|
||||
expression
|
||||
@ -227,7 +268,7 @@ primaryExpression
|
||||
| FIRST '(' expression (IGNORE NULLS)? ')' #first
|
||||
| LAST '(' expression (IGNORE NULLS)? ')' #last
|
||||
| POSITION '(' substr=valueExpression IN str=valueExpression ')' #position
|
||||
| constant #constantDefault
|
||||
// | constant #constantDefault
|
||||
| ASTERISK #star
|
||||
// | qualifiedName '.' ASTERISK #star
|
||||
// | '(' namedExpression (',' namedExpression)+ ')' #rowConstructor
|
||||
@ -236,8 +277,8 @@ primaryExpression
|
||||
// (FILTER '(' WHERE where=booleanExpression ')')? (OVER windowSpec)? #functionCall
|
||||
// | identifier '->' expression #lambda
|
||||
// | '(' identifier (',' identifier)+ ')' '->' expression #lambda
|
||||
| value=primaryExpression LS_BRACKET index=valueExpression RS_BRACKET #subscript
|
||||
// | identifier #columnReference
|
||||
// | value=primaryExpression LS_BRACKET index=valueExpression RS_BRACKET #subscript
|
||||
| identifier #columnReference
|
||||
// | base=primaryExpression '.' fieldName=identifier #dereference
|
||||
| '(' expression ')' #parenthesizedExpression
|
||||
// | EXTRACT '(' field=identifier FROM source=valueExpression ')' #extract
|
||||
@ -685,9 +726,6 @@ RR_BRACKET: ')';
|
||||
COMMA: ',';
|
||||
SEMICOLON: ';';
|
||||
AT_SIGN: '@';
|
||||
ZERO_DECIMAL: '0';
|
||||
ONE_DECIMAL: '1';
|
||||
TWO_DECIMAL: '2';
|
||||
SINGLE_QUOTE_SYMB: '\'';
|
||||
DOUBLE_QUOTE_SYMB: '"';
|
||||
REVERSE_QUOTE_SYMB: '`';
|
||||
|
Loading…
Reference in New Issue
Block a user