Grammar EQLStatementParser
ANTLR-generated HTML file from esper/grammar/eql.g

Terence Parr, MageLang Institute
ANTLR Version 2.7.5 (20050128); 1989-2005


Definition of parser EQLStatementParser, which is a subclass of LLkParser.


startPatternExpressionRule
	:	patternExpression EOF 
	;


patternExpression
	:	followedByExpression 
	;


startEQLExpressionRule
	:	eqlExpression EOF 
	;


eqlExpression
	:	selectExpr 
	|	createWindowExpr 
	|	createVariableExpr 
	|	onExpr 
	;


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 
	;


selectExpr
	:	(	INSERT insertIntoExpr 
		|	
		) 
		SELECT selectClause FROM streamExpression 
		(	regularJoin 
		|	outerJoinList 
		) 
		(	WHERE whereClause 
		|	
		) 
		(	GROUP BY groupByListExpr 
		|	
		) 
		(	HAVING havingClause 
		|	
		) 
		(	OUTPUT outputLimit 
		|	
		) 
		(	ORDER BY orderByListExpr 
		|	
		) 
	;


createWindowExpr
	:	CREATE WINDOW IDENT 
		(	DOT viewExpression ( DOT viewExpression )* 
		|	
		) 
		AS 
		(	SELECT createSelectionList FROM 
		|	
		) 
		classIdentifier 
	;


createVariableExpr
	:	CREATE VARIABLE IDENT IDENT 
		(	EQUALS expression 
		|	
		) 
		
	;


onExpr
	:	ON 
		(	eventFilterExpression 
		|	patternInclusionExpression 
		) 
		(	AS IDENT 
		|	IDENT 
		|	
		) 
		(	onDeleteExpr 
		|	onSelectExpr 
		|	onSetExpr 
		) 
		
	;


insertIntoExpr
	:	(	ISTREAM 
		|	RSTREAM 
		|	
		) 
		INTO IDENT 
		(	insertIntoColumnList 
		|	
		) 
		
	;


selectClause
	:	(	RSTREAM 
		|	ISTREAM 
		|	
		) 
		selectionList 
	;


streamExpression
	:	(	eventFilterExpression 
		|	patternInclusionExpression 
		|	databaseJoinExpression 
		|	methodJoinExpression 
		) 
		(	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 
		|	SNAPSHOT 
		|	
		) 
		EVERY_EXPR 
		(	number 
		|	IDENT 
		) 
		(	EVENTS 
		|	SECONDS 
		|	MINUTES 
		) 
		
	;


orderByListExpr
	:	orderByListElement ( COMMA orderByListElement )* 
	;


eventFilterExpression
	:	(	IDENT EQUALS 
		|	
		) 
		( classIdentifier ) 
		(	LPAREN 
			(	expressionList 
			|	
			) 
			RPAREN 
		|	
		) 
		
	;


patternInclusionExpression
	:	PATTERN LBRACK patternExpression RBRACK 
	;


onDeleteExpr
	:	DELETE onExprFrom 
		(	WHERE whereClause 
		|	
		) 
		
	;


onSelectExpr
	:	(	INSERT insertIntoExpr 
		|	
		) 
		SELECT selectionList onExprFrom 
		(	WHERE whereClause 
		|	
		) 
		(	GROUP BY groupByListExpr 
		|	
		) 
		(	HAVING havingClause 
		|	
		) 
		(	ORDER BY orderByListExpr 
		|	
		) 
		
	;


onSetExpr
	:	SET onSetAssignment ( COMMA onSetAssignment )* 
	;


selectionList
	:	selectionListElement ( COMMA selectionListElement )* 
	;


onExprFrom
	:	FROM IDENT 
		(	AS IDENT 
		|	IDENT 
		|	
		) 
		
	;


onSetAssignment
	:	IDENT EQUALS expression 
	;


expression
	:	caseExpression 
	;


viewExpression
	:	IDENT COLON IDENT LPAREN 
		(	parameterSet 
		|	
		) 
		RPAREN 
	;


createSelectionList
	:	createSelectionListElement ( COMMA createSelectionListElement )* 
	;


classIdentifier
	:	IDENT ( DOT IDENT )* 
	;


createSelectionListElement
	:	STAR 
	|	eventProperty 
		(	AS IDENT 
		|	
		) 
		
	;


insertIntoColumnList
	:	LPAREN IDENT ( COMMA IDENT )* RPAREN 
	;


outerJoin
	:	(	LEFT 
		|	RIGHT 
		|	FULL 
		) 
		OUTER JOIN streamExpression outerJoinIdent 
	;


outerJoinIdent
	:	ON outerJoinIdentPair ( AND_EXPR outerJoinIdentPair )* 
	;


outerJoinIdentPair
	:	eventProperty EQUALS eventProperty 
	;


evalOrExpression
	:	evalAndExpression ( OR_EXPR evalAndExpression )* 
	;


selectionListElement
	:	STAR 
	|	streamSelector 
	|	expression 
		(	AS IDENT 
		|	
		) 
		
	;


streamSelector
	:	IDENT DOT STAR 
		(	AS IDENT 
		|	
		) 
		
	;


databaseJoinExpression
	:	SQL COLON IDENT LBRACK 
		(	STRING_LITERAL 
		|	QUOTED_STRING_LITERAL 
		) 
		(	METADATASQL 
			(	STRING_LITERAL 
			|	QUOTED_STRING_LITERAL 
			) 
		|	
		) 
		RBRACK 
	;


methodJoinExpression
	:	IDENT COLON ( classIdentifier ) 
		(	LPAREN 
			(	expressionList 
			|	
			) 
			RPAREN 
		|	
		) 
		
	;


expressionList
	:	expression ( COMMA expression )* 
	;


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 
		|	
		) 
		
	;


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 
	;


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" 
		) 
		
	;