SelectExpression ::= OrExpression? // Note 0
// Lexical Elements
Alpha ::= [a-zA-Z]
Digit ::= [0-9]
IdentifierInitial ::= Alpha | "_" | "$"
IdentifierPart ::= IdentifierInitial | Digit | "."
Identifier ::= IdentifierInitial IdentifierPart*
Constraint : Identifier NOT IN ("NULL", "TRUE", "FALSE", "NOT", "AND", "OR", "BETWEEN", "LIKE", "IN", "IS", "ESCAPE")  // Note 1
LiteralString ::= ("'" [^']* "'")+  // Note 2
LiteralExactNumeric ::= Digit+
Exponent ::= ("+"|"-")? LiteralExactNumeric
LiteralApproxNumeric ::=  Digit "." Digit* ( "E" Exponent )?  |
                           "." Digit+ ( "E" Exponent )?  |
                           Digit+ "E" Exponent   // Note 1
LiteralBool ::= "TRUE" | "FALSE"   // Note 1
Literal ::= LiteralBool | LiteralString | LiteralApproxNumeric | LiteralExactNumeric
EqOps ::= "=" | "<>"
ComparisonOps ::= EqOps | ">" | ">=" | "<" | "<="
AddOps ::= "+" | "-"
MultiplyOps ::= "*" | "/"
// Expression syntax
OrExpression ::= AndExpression  ( "OR" AndExpression )*
AndExpression ::= ComparisonExpression ( "AND" ComparisonExpression )*
ComparisonExpression ::= AddExpression "IS" "NOT"? "NULL" |
                         AddExpression "NOT"? "LIKE" LiteralString ( "ESCAPE" LiteralString )? | 
                         AddExpression "NOT"? "BETWEEN" AddExpression "AND" AddExpression |
                         AddExpression "NOT"? "IN" "(" PrimaryExpression ("," PrimaryExpression)* ")" |
                         AddExpression ComparisonOps AddExpression |
                         "NOT" ComparisonExpression |
                         AddExpression   // Note 3
AddExpression ::= MultiplyExpression (  AddOps MultiplyExpression )*
MultiplyExpression ::= UnaryArithExpression ( MultiplyOps UnaryArithExpression )*
UnaryArithExpression ::= AddOps AddExpression |
                         "(" OrExpression ")" |
                         PrimaryExpression
PrimaryExpression ::= Identifier |
                      Literal 
SelectExpression ::= OrExpression? // Note 0
// Lexical Elements
Alpha ::= [a-zA-Z]
Digit ::= [0-9]
IdentifierInitial ::= Alpha | "_" | "$"
IdentifierPart ::= IdentifierInitial | Digit | "."
Identifier ::= IdentifierInitial IdentifierPart*
Constraint : Identifier NOT IN ("NULL", "TRUE", "FALSE", "NOT", "AND", "OR", "BETWEEN", "LIKE", "IN", "IS", "ESCAPE")  // Note 1
LiteralString ::= ("'" [^']* "'")+  // Note 2
LiteralExactNumeric ::= Digit+
Exponent ::= ("+"|"-")? LiteralExactNumeric
LiteralApproxNumeric ::=  Digit "." Digit* ( "E" Exponent )?  |
                           "." Digit+ ( "E" Exponent )?  |
                           Digit+ "E" Exponent   // Note 1
LiteralBool ::= "TRUE" | "FALSE"   // Note 1
Literal ::= LiteralBool | LiteralString | LiteralApproxNumeric | LiteralExactNumeric
EqOps ::= "=" | "<>"
ComparisonOps ::= EqOps | ">" | ">=" | "<" | "<="
AddOps ::= "+" | "-"
MultiplyOps ::= "*" | "/"
// Expression syntax
OrExpression ::= AndExpression  ( "OR" AndExpression )*
AndExpression ::= ComparisonExpression ( "AND" ComparisonExpression )*
ComparisonExpression ::= AddExpression "IS" "NOT"? "NULL" |
                         AddExpression "NOT"? "LIKE" LiteralString ( "ESCAPE" LiteralString )? | 
                         AddExpression "NOT"? "BETWEEN" AddExpression "AND" AddExpression |
                         AddExpression "NOT"? "IN" "(" PrimaryExpression ("," PrimaryExpression)* ")" |
                         AddExpression ComparisonOps AddExpression |
                         "NOT" ComparisonExpression |
                         AddExpression   // Note 3
AddExpression ::= MultiplyExpression (  AddOps MultiplyExpression )*
MultiplyExpression ::= UnaryArithExpression ( MultiplyOps UnaryArithExpression )*
UnaryArithExpression ::= AddOps AddExpression |
                         "(" OrExpression ")" |
                         PrimaryExpression
PrimaryExpression ::= Identifier |
                      Literal 
 
Copy to Clipboard 
Copied! 
 
   
   
 
 
 
Toggle word wrap 
Toggle overflow