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> )
SQLCustom
::=
<CUSTOM> <ID> <TABLES>
SQLTableList
<VALUES>
SQLFunctionArgs
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
|
SQLCustom
) ";"
SQLSumExpr
::=
SQLProductExpr
( ( "+" | "-" | "||" )
SQLProductExpr
)*
SQLTableList
::=
SQLTableRef
( ","
SQLTableRef
)*
SQLTableRef
::=
( <ID> | <STRING_LITERAL> ) ( <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