Глава 12 Определения EBNF выражений
В этом разделе представлено справочное руководство по грамматике языка выражений, используемого в X DevAPI.
ident
ident
::= ID | QUOTED_ID
Рисунок 12.1 ident
schemaQualifiedIdent
schemaQualifiedIdent
::= ( ident_schema '.' )? ident
Рисунок 12.2 schemaQualifiedIdent
columnIdent
Рисунок 12.3 columnIdent
columnIdent
::= ( ident '.' ( ident '.' )? )? ident ( ( '->' | '->>' ) "'" '$' documentPath "'" )?
documentPathLastItem
documentPathLastItem
::= '[*]'
| '[' INT ']'
| '.*'
| '.' documentPathMember
Рисунок 12.4 documentPathLastItem
documentPathItem
documentPathItem
::= documentPathLastItem
| '**'
Рисунок 12.5 documentPathItem
documentPath
documentPath
::= documentPathItem* documentPathLastItem
Рисунок 12.6 documentPath
documentField
Рисунок 12.7 documentField
documentField
::= fieldId documentPath*
| '$' documentPath
argsList
argsList ::= expr ( ',' expr )*
Рисунок 12.8 argsList
lengthSpec
lengthSpec ::= '(' INT ')'
Рисунок 12.9 lengthSpec
castType
castType ::= 'SIGNED' 'INTEGER'*
| 'UNSIGNED' 'INTEGER'*
| 'CHAR' lengthSpec*
| 'BINARY' lengthSpec*
| 'DECIMAL' ( lengthSpec | '(' INT ',' INT ')' )?
| 'TIME'
| 'DATE'
| 'DATETIME'
| 'JSON'
Рисунок 12.10 castType
functionCall
functionCall
::= schemaQualifiedIdent '(' argsList? ')'
Рисунок 12.11 functionCall
placeholder
placeholder ::= ':' ID
Рисунок 12.12 placeholder
groupedExpr
groupedExpr ::= '(' expr ')'
Рисунок 12.13 groupedExpr
unaryOp
unaryOp ::= ( '!' | '~' | '+' | '-' ) atomicExpr
Рисунок 12.14 unaryOp
literal
literal ::= INT
| FLOAT
| STRING_SQ
| STRING_DQ
| 'NULL'
| 'FALSE'
| 'TRUE'
Рисунок 12.15 literal
jsonKeyValue
jsonKeyValue ::= STRING_DQ ':' expr
Рисунок 12.16 jsonKeyValue
jsonDoc
jsonDoc ::= '{' ( jsonKeyValue ( ',' jsonKeyValue )* )* '}'
Рисунок 12.17 jsonDoc
jsonarray
jsonArray ::= '[' ( expr ( ',' expr )* )* ']'
Рисунок 12.18 jsonarray
atomicExpr
atomicExpr
::= placeholder
| columnOrPath
| functionCall
| groupedExpr
| unaryOp
| castOp
Рисунок 12.19 atomicExpr
intervalUnit
INTERVAL_UNIT
::= 'MICROSECOND'
| 'SECOND'
| 'MINUTE'
| 'HOUR'
| 'DAY'
| 'WEEK'
| 'MONTH'
| 'QUARTER'
| 'YEAR'
| 'SECOND_MICROSECOND'
| 'MINUTE_MICROSECOND'
| 'MINUTE_SECOND'
| 'HOUR_MICROSECOND'
| 'HOUR_SECOND'
| 'HOUR_MINUTE'
| 'DAY_MICROSECOND'
| 'DAY_SECOND'
| 'DAY_MINUTE'
| 'DAY_HOUR'
| 'YEAR_MONTH'
Рисунок 12.20 INTERVAL_UNIT
interval
interval ::= 'INTERVAL' expr INTERVAL_UNIT
Рисунок 12.21 interval
intervalExpr
intervalExpr
::= atomicExpr ( ( '+' | '-' ) interval )*
Рисунок 12.22 intervalExpr
mulDivExpr
mulDivExpr
::= intervalExpr ( ( '*' | '/' | '%' ) intervalExpr )*
Рисунок 12.23 mulDivExpr
addSubExpr
addSubExpr
::= mulDivExpr ( ( '+' | '-' ) mulDivExpr )*
Рисунок 12.24 addSubExpr
shiftExpr
shiftExpr
::= addSubExpr ( ( '<<' | '>>' ) addSubExpr )*
Рисунок 12.25 shiftExpr
bitExpr
bitExpr ::= shiftExpr ( ( '&' | '|' | '^' ) shiftExpr )*
Рисунок 12.26 bitExpr
compExpr
compExpr ::= bitExpr ( ( '>=' | '>' | '<=' | '<' | '=' | '<>' | '!=' ) bitExpr )*
Рисунок 12.27 compExpr
ilriExpr
ilriExpr ::= compExpr 'IS' 'NOT'* ( 'NULL' | 'TRUE' | 'FALSE' )
| compExpr 'NOT'* 'IN' '(' argsList* ')'
| compExpr 'NOT'* 'IN' compExpr
| compExpr 'NOT'* 'LIKE' compExpr ( 'ESCAPE' compExpr )*
| compExpr 'NOT'* 'BETWEEN' compExpr 'AND' compExpr
| compExpr 'NOT'* 'REGEXP' compExpr
| compExpr
Рисунок 12.28 ilriExpr
andExpr
andExpr ::= ilriExpr ( ( '&&' | 'AND' ) ilriExpr )*
Рисунок 12.29 andExpr
orExpr
orExpr ::= andExpr ( ( '||' | 'OR' ) andExpr )*
Рисунок 12.30 orExpr
expr
expr ::= orExpr
Рисунок 12.31 expr
DIGIT
DIGIT ::= '0' - '9'
Рисунок 12.32 DIGIT
FLOAT
FLOAT ::= DIGIT* '.' DIGIT+ ( 'E' ( '+' | '-' )* DIGIT+ )*
| DIGIT+ 'E' ( '+' | '-' )* DIGIT+
Рисунок 12.33 FLOAT
INT
INT ::= DIGIT+
Рисунок 12.34 INT
QUOTED_ID
QUOTED_ID
::= '`' ID '`'
| '`' ( '~' '`'* | '``' )* '`'
Рисунок 12.35 QUOTED_ID
ID
ID ::= ( 'a' - 'z' | 'A' - 'Z' | '_' ) ( 'a' - 'z' | 'A' - 'Z' | '0' - '9' | '_' )*
Рисунок 12.36 ID
WS
WS ::= [ \t\r\n]+
Рисунок 12.37 WS
SCHAR
SCHAR ::= [\u0020\u0021\u0023\u0024\u0025\u0026\u0028-\u005B\u005D-\u007E]
Рисунок 12.38 SCHAR
STRING_DQ
STRING_DQ
::= '"' ( SCHAR | "'" | ESCAPED_DQ )* '"'
Рисунок 12.39 STRING_DQ
STRING_SQ
STRING_SQ
::= "'" ( SCHAR | '"' | ESCAPED_SQ )* "'"
Рисунок 12.40 STRING_SQ
© 2025 Oracle
Licensed under the GPLv2 License.