BNF for sql.jj

NON-TERMINALS

SQLAndExpr ::= SQLNotExpr ( <AND> SQLNotExpr )*
SQLBetweenClause ::= ( <NOT> )? <BETWEEN> SQLSumExpr <AND> SQLSumExpr
SQLColRef ::= SQLLvalue
SQLCompareExpr ::= ( SQLSelect | SQLIsClause | SQLExistsClause | SQLSumExpr ( SQLCompareExprRight )? )
SQLCompareExprRight ::= ( SQLLikeClause | SQLInClause | SQLLeftJoinClause | SQLRightJoinClause | SQLBetweenClause | SQLCompareOp SQLSumExpr )
SQLCompareOp ::= ( <EQUAL> | <NOTEQUAL> | <NOTEQUAL2> | <GREATER> | <GREATEREQUAL> | <LESS> | <LESSEQUAL> )
SQLDelete ::= <DELETE> <FROM> SQLTableList ( SQLWhere )?
SQLExistsClause ::= <EXISTS> "(" SQLSelect ")"
SQLFunction ::= <ID> SQLFunctionArgs
SQLFunctionArgs ::= "(" ( SQLSumExpr ( "," SQLSumExpr )* )? ")"
SQLGroupBy ::= <GROUP> <BY> SQLOrderByList
SQLInClause ::= ( <NOT> )? <IN> "(" SQLLValueList ")"
SQLInsert ::= <INSERT> <INTO> SQLTableList ( "(" SQLSelectCols ")" <VALUES> )? "(" SQLSelectCols ")"
SQLIsClause ::= SQLColRef <IS> ( <NOT> )? <NULL>
SQLLeftJoinClause ::= "(+)" SQLCompareOp SQLSumExpr
SQLLikeClause ::= ( <NOT> )? <LIKE> SQLPattern
SQLLiteral ::= ( <STRING_LITERAL> | <INTEGER_LITERAL> | <FLOATING_POINT_LITERAL> | <SPACES> | <ASTERISK> )
SQLLvalue ::= ( SQLLvalueTerm )
SQLLvalueTerm ::= <ID> ( <DOT> <ID> )*
SQLNotExpr ::= ( <NOT> )? SQLCompareExpr
SQLOrderBy ::= <ORDER> <BY> SQLOrderByList
SQLOrderByElem ::= SQLColRef ( SQLOrderDirection )?
SQLOrderByList ::= SQLOrderByElem ( "," SQLOrderByElem )*
SQLOrderDirection ::= ( <ASC> | <DESC> )
SQLOrExpr ::= SQLAndExpr ( <OR> SQLAndExpr )*
SQLPattern ::= ( <STRING_LITERAL> | "?" | SQLLvalue )
SQLProductExpr ::= SQLUnaryExpr ( ( "*" | "/" ) SQLUnaryExpr )*
SQLRightJoinClause ::= SQLCompareOp SQLSumExpr "(+)"
SQLUnion ::= ( SQLTableRef | <OPENPAREN> SQLSelect <CLOSEPAREN> ) <UNION> ( SQLTableRef | <OPENPAREN> SQLSelect <CLOSEPAREN> )
SQLSelect ::= <SELECT> SQLSelectCols ( <INTO> SQLSelectCols )? <FROM> SQLTableList ( SQLWhere )? ( SQLGroupBy )? ( SQLOrderBy )?
SQLSelectCols ::= ( <ALL> | <DISTINCT> )? ( "*" | SQLSelectList )?
SQLSelectList ::= SQLSumExpr ( <AS> <ID> )? ( "," SQLSumExpr ( <AS> <ID> )? )*
SQLStatement ::= ( SQLSelect | SQLInsert | SQLUpdate | SQLDelete | SQLUnion ) ";"
SQLSumExpr ::= SQLProductExpr ( ( "+" | "-" | "||" ) SQLProductExpr )*
SQLTableList ::= SQLTableRef ( "," SQLTableRef )*
SQLTableRef ::= <ID> ( <ID> )?
SQLTerm ::= ( "(" SQLOrExpr ")" | SQLFunction | SQLColRef | SQLLiteral )
SQLUnaryExpr ::= ( ( "+" | "-" ) )? SQLTerm
SQLUpdate ::= <UPDATE> SQLTableList <SET> ( SQLUpdateAssignment ( "," )? )+ ( SQLWhere )?
SQLUpdateAssignment ::= SQLLvalue "=" ( SQLTerm ( <CONCAT> SQLTerm )+ | SQLSumExpr )
SQLLValueElement ::= ( <NULL> | SQLSumExpr | SQLSelect )
SQLLValueList ::= SQLLValueElement ( "," SQLLValueElement )*
SQLWhere ::= <WHERE> SQLOrExpr