BNF for sql.jj
NON-TERMINALS
QueryStatement
::=
"SELECT"
SelectList
FromClause
( "WHERE"
WhereClause
)? (
GroupByClause
)? ( ";" )?
SelectList
::=
( "*" |
SelectItem
( ","
SelectItem
)* )
SelectItem
::=
(
SelectStar
|
ColumnName
(
SelectAlias
)? )
SelectStar
::=
OracleObjectName
".*"
ColumnName
::=
(
TableReference
"."
OracleObjectName
|
OracleObjectName
( "."
OracleObjectName
)? )
SelectAlias
::=
( "AS" )? <S_IDENTIFIER>
CatalogName
::=
OracleObjectName
SchemaName
::=
OracleObjectName
TableName
::=
OracleObjectName
OracleObjectName
::=
( <S_IDENTIFIER> | <S_QUOTED_IDENTIFIER> )
FromClause
::=
"FROM"
FromItem
( ","
FromItem
)*
TableReference
::=
CatalogName
"."
SchemaName
"."
TableName
FromItem
::=
TableReference
(
TableAlias
)?
TableAlias
::=
<S_IDENTIFIER>
WhereClause
::=
(
AndClause
|
UnaryClause
)
AndClause
::=
(
UnaryClause
"AND"
UnaryClause
| "("
AndClause
")" )
UnaryClause
::=
( "("
SQLRelationalExpression
")" |
SQLRelationalExpression
)
SQLRelationalExpression
::=
SQLSimpleExpression
(
SQLRelationalOperatorExpression
| (
SQLInClause
) )
SQLRelationalOperatorExpression
::=
Relop
SQLSimpleExpression
SQLSimpleExpression
::=
(
ColumnName
| <S_NUMBER> | <S_CHAR_LITERAL> | "?" )
Relop
::=
"="
SQLExpressionList
::=
SQLSimpleExpression
( ","
SQLSimpleExpression
)*
SQLInClause
::=
"IN" "("
SQLExpressionList
")"
GroupByClause
::=
"GROUP" "BY"
SQLExpressionList