Grammar EQLStatementParser ANTLR-generated HTML file from esper/grammar/eql.g
Terence Parr, MageLang Institute
|
Definition of parser EQLStatementParser, which is a subclass of LLkParser. startPatternExpressionRule : patternExpression EOF ; patternExpression : followedByExpression ; startEQLExpressionRule : eqlExpression EOF ; eqlExpression : ( INSERT insertIntoExpr | ) SELECT selectClause FROM streamExpression ( regularJoin | outerJoinList ) ( WHERE whereClause | ) ( GROUP BY groupByListExpr | ) ( HAVING havingClause | ) ( OUTPUT outputLimit | ) ( ORDER BY orderByListExpr | ) ; startEventPropertyRule : eventProperty EOF ; eventProperty : eventPropertyAtomic ( DOT eventPropertyAtomic )* ; number : NUM_INT | NUM_LONG | NUM_FLOAT | NUM_DOUBLE ; substitution : QUESTION ; constant : ( MINUS | PLUS | ) number | stringconstant | "true" | "false" | "null" ; stringconstant : STRING_LITERAL | QUOTED_STRING_LITERAL ; insertIntoExpr : ( ISTREAM | RSTREAM | ) INTO IDENT ( insertIntoColumnList | ) ; selectClause : ( RSTREAM | ISTREAM | ) selectionList ; streamExpression : ( eventFilterExpression | patternInclusionExpression | databaseJoinExpression ) ( DOT viewExpression ( DOT viewExpression )* | ) ( AS IDENT | IDENT | ) ; regularJoin : ( COMMA streamExpression )* ; outerJoinList : outerJoin ( outerJoin )* ; whereClause : evalOrExpression ; groupByListExpr : expression ( COMMA expression )* ; havingClause : evalOrExpression ; outputLimit : ( ALL | FIRST | LAST | ) EVERY_EXPR number ( EVENTS | SECONDS | MINUTES ) ; orderByListExpr : orderByListElement ( COMMA orderByListElement )* ; insertIntoColumnList : LPAREN IDENT ( COMMA IDENT )* RPAREN ; outerJoin : ( LEFT | RIGHT | FULL ) OUTER JOIN streamExpression outerJoinIdent ; outerJoinIdent : ON eventProperty EQUALS eventProperty ; evalOrExpression : evalAndExpression ( OR_EXPR evalAndExpression )* ; selectionList : selectionListElement ( COMMA selectionListElement )* ; selectionListElement : STAR | expression ( AS IDENT | ) ; expression : caseExpression ; eventFilterExpression : ( IDENT EQUALS | ) ( classIdentifier ) ( LPAREN ( filterParamSet | ) RPAREN | ) ; patternInclusionExpression : PATTERN LBRACK patternExpression RBRACK ; databaseJoinExpression : SQL COLON IDENT LBRACK ( STRING_LITERAL | QUOTED_STRING_LITERAL ) ( METADATASQL ( STRING_LITERAL | QUOTED_STRING_LITERAL ) | ) RBRACK ; viewExpression : IDENT COLON IDENT LPAREN ( parameterSet | ) RPAREN ; parameterSet : parameter ( COMMA parameter )* ; orderByListElement : expression ( ASC | DESC | ) ; caseExpression : CASE ( whenClause )+ ( elseClause | ) END | CASE expression ( whenClause )+ ( elseClause | ) END | evalOrExpression ; whenClause : ( WHEN expression THEN expression ) ; elseClause : ( ELSE expression ) ; evalAndExpression : bitWiseExpression ( AND_EXPR bitWiseExpression )* ; bitWiseExpression : negatedExpression ( ( BAND | BOR | BXOR ) negatedExpression )* ; negatedExpression : evalEqualsExpression | NOT_EXPR evalEqualsExpression ; evalEqualsExpression : evalRelationalExpression ( ( EQUALS | IS | IS NOT_EXPR | SQL_NE | NOT_EQUAL ) evalRelationalExpression )* ; evalRelationalExpression : concatenationExpr ( ( ( ( LT | GT | LE | GE ) concatenationExpr )* ) | ( NOT_EXPR | ) ( ( IN_SET ( LPAREN | LBRACK ) expression ( ( COLON ( expression ) ) | ( ( COMMA expression )* ) ) ( RPAREN | RBRACK ) ) | IN_SET inSubSelectQuery | ( BETWEEN betweenList ) | ( LIKE concatenationExpr ( ESCAPE stringconstant | ) ) | ( REGEXP concatenationExpr ) ) ) ; concatenationExpr : additiveExpression ( LOR additiveExpression ( LOR additiveExpression )* | ) ; inSubSelectQuery : subQueryExpr ; betweenList : concatenationExpr AND_EXPR concatenationExpr ; subQueryExpr : LPAREN SELECT selectionListElement FROM subSelectFilterExpr ( WHERE whereClause | ) RPAREN ; additiveExpression : multiplyExpression ( ( PLUS | MINUS ) multiplyExpression )* ; multiplyExpression : unaryExpression ( ( STAR | DIV | MOD ) unaryExpression )* ; unaryExpression : MINUS eventProperty | constant | substitution | LPAREN expression RPAREN | eventPropertyOrLibFunction | builtinFunc | arrayExpression | subSelectExpression | existsSubSelectExpression ; eventPropertyOrLibFunction : eventProperty | libFunction ; builtinFunc : SUM LPAREN ( ALL | DISTINCT | ) expression RPAREN | AVG LPAREN ( ALL | DISTINCT | ) expression RPAREN | COUNT LPAREN ( ( ( ALL | DISTINCT | ) expression ) | ( STAR ) ) RPAREN | MEDIAN LPAREN ( ALL | DISTINCT | ) expression RPAREN | STDDEV LPAREN ( ALL | DISTINCT | ) expression RPAREN | AVEDEV LPAREN ( ALL | DISTINCT | ) expression RPAREN | COALESCE LPAREN expression COMMA expression ( COMMA expression )* RPAREN | PREVIOUS LPAREN expression COMMA eventProperty RPAREN | PRIOR LPAREN NUM_INT COMMA eventProperty RPAREN | INSTANCEOF LPAREN expression COMMA classIdentifier ( COMMA classIdentifier )* RPAREN | CAST LPAREN expression ( COMMA | AS ) classIdentifier RPAREN | EXISTS LPAREN eventProperty RPAREN | CURRENT_TIMESTAMP ( LPAREN RPAREN | ) ; arrayExpression : LCURLY ( expression ( COMMA expression )* | ) RCURLY ; subSelectExpression : subQueryExpr ; existsSubSelectExpression : EXISTS subQueryExpr ; subSelectFilterExpr : eventFilterExpression ( DOT viewExpression ( DOT viewExpression )* | ) ( AS IDENT | IDENT | ) ; classIdentifier : IDENT ( DOT IDENT )* ; maxFunc : ( MAX | MIN ) LPAREN expression ( COMMA expression ( COMMA expression )* | ) RPAREN ; libFunction : ( classIdentifierNonGreedy DOT | ) funcIdent LPAREN ( libFunctionArgs | ) RPAREN ; classIdentifierNonGreedy : IDENT ( DOT IDENT )* ; funcIdent : IDENT | MAX | MIN ; libFunctionArgs : ( ALL | DISTINCT | ) expression ( COMMA expression )* ; followedByExpression : orExpression ( FOLLOWED_BY orExpression )* ; orExpression : andExpression ( OR_EXPR andExpression )* ; andExpression : qualifyExpression ( AND_EXPR qualifyExpression )* ; qualifyExpression : ( EVERY_EXPR | NOT_EXPR | ) guardPostFix ; guardPostFix : ( atomicExpression | LPAREN patternExpression RPAREN ) ( WHERE guardExpression | ) ; atomicExpression : observerExpression | eventFilterExpression ; guardExpression : IDENT COLON IDENT LPAREN ( parameterSet | ) RPAREN ; observerExpression : IDENT COLON IDENT LPAREN ( parameterSet | ) RPAREN ; parameter : singleParameter | numericParameterList | arrayParameterList ; singleParameter : rangeOperand | frequencyOperand | lastOperator | weekDayOperator | LAST | LW | STAR | constant | time_period ; numericParameterList : LBRACK numericListParameter ( COMMA numericListParameter )* RBRACK ; arrayParameterList : LCURLY ( constant ( COMMA constant )* | ) RCURLY ; rangeOperand : NUM_INT COLON NUM_INT ; frequencyOperand : STAR DIV NUM_INT ; lastOperator : NUM_INT LAST ; weekDayOperator : NUM_INT WEEKDAY ; time_period : ( dayPart ( hourPart | ) ( minutePart | ) ( secondPart | ) ( millisecondPart | ) | hourPart ( minutePart | ) ( secondPart | ) ( millisecondPart | ) | minutePart ( secondPart | ) ( millisecondPart | ) | secondPart ( millisecondPart | ) | millisecondPart ) ; numericListParameter : rangeOperand | frequencyOperand | NUM_INT ; filterParamSet : expression ( COMMA expression )* ; eventPropertyAtomic : IDENT | IDENT LBRACK NUM_INT RBRACK ( QUESTION | ) | IDENT LPAREN ( STRING_LITERAL | QUOTED_STRING_LITERAL ) RPAREN ( QUESTION | ) | IDENT QUESTION ; dayPart : number ( "days" | "day" ) ; hourPart : number ( "hours" | "hour" ) ; minutePart : number ( "minutes" | "minute" | "min" ) ; secondPart : number ( "seconds" | "second" | "sec" ) ; millisecondPart : number ( "milliseconds" | "millisecond" | "msec" ) ;