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