JavaScript 模式下 MySQL Shell 的 X DevAPI 用户指南  /  第 12 章表达式 EBNF 定义

第 12 章表达式 EBNF 定义

本节提供 X DevAPI 中使用的表达式语言语法的可视化参考指南。

身份

ident 
   ::= ID | QUOTED_ID

图 12.1 标识

图像显示了 EBNF 形式的语法,如前文所述。

schemaQualifiedIdent

schemaQualifiedIdent 
                  ::= ( ident_schema '.' )? ident

图 12.2 schemaQualifiedIdent

图像显示了 EBNF 形式的语法,如前文所述。

列标识

图 12.3 columnIdent

columnIdent
         ::= ( ident '.' ( ident '.' )? )? ident ( ( '->' | '->>' ) "'" '$' documentPath "'" )?
图像显示了 EBNF 形式的语法,如前文所述。

文件路径最后一项

documentPathLastItem
         ::= '[*]'
           | '[' INT ']'
           | '.*'
           | '.' documentPathMember

图 12.4 documentPathLastItem

图像显示了 EBNF 形式的语法,如前文所述。

文档路径项

documentPathItem
         ::= documentPathLastItem
           | '**'

图 12.5 documentPathItem

图像显示了 EBNF 形式的语法,如前文所述。

文档路径

documentPath        
          ::= documentPathItem* documentPathLastItem

图 12.6 文档路径

图像显示了 EBNF 形式的语法,如前文所述。

文档字段

图 12.7 文档字段

documentField
         ::= fieldId documentPath*
           | '$' documentPath
图像显示了 EBNF 形式的语法,如前文所述。

参数列表

argsList ::= expr ( ',' expr )*

图 12.8 参数列表

图像显示了 EBNF 形式的语法,如前文所述。

长度规格

lengthSpec ::= '(' INT ')'

图 12.9 lengthSpec

图像显示了 EBNF 形式的语法,如前文所述。

演员类型

castType ::= 'SIGNED' 'INTEGER'*
           | 'UNSIGNED' 'INTEGER'*
           | 'CHAR' lengthSpec*
           | 'BINARY' lengthSpec*
           | 'DECIMAL' ( lengthSpec | '(' INT ',' INT ')' )?
           | 'TIME'
           | 'DATE'
           | 'DATETIME'
           | 'JSON'

图 12.10 castType

图像显示了 EBNF 形式的语法,如前文所述。

函数调用

functionCall
         ::= schemaQualifiedIdent '(' argsList? ')'

图 12.11 函数调用

图像显示了 EBNF 形式的语法,如前文所述。

占位符

placeholder ::= ':' ID

图 12.12 占位符

图像显示了 EBNF 形式的语法,如前文所述。

groupedExpr

groupedExpr ::= '(' expr ')'

图 12.13 groupedExpr

图像显示了 EBNF 形式的语法,如前文所述。

一元运算

unaryOp  ::= ( '!' | '~' | '+' | '-' ) atomicExpr

图 12.14 一元运算

图像显示了 EBNF 形式的语法,如前文所述。

文字

literal  ::= INT
           | FLOAT
           | STRING_SQ
           | STRING_DQ
           | 'NULL'
           | 'FALSE'
           | 'TRUE'

图 12.15 文字

图像显示了 EBNF 形式的语法,如前文所述。

json键值

jsonKeyValue ::= STRING_DQ ':' expr

图 12.16 jsonKeyValue

图像显示了 EBNF 形式的语法,如前文所述。

json文档

jsonDoc  ::= '{' ( jsonKeyValue ( ',' jsonKeyValue )* )* '}'

图 12.17 jsonDoc

图像显示了 EBNF 形式的语法,如前文所述。

json数组

jsonArray ::= '[' ( expr ( ',' expr )* )* ']'

图 12.18 jsonarray

图像显示了 EBNF 形式的语法,如前文所述。

原子表达式

atomicExpr
         ::= placeholder
           | columnOrPath
           | functionCall
           | groupedExpr
           | unaryOp
           | castOp

图 12.19 atomicExpr

图像显示了 EBNF 形式的语法,如前文所述。

间隔单位

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

图像显示了 EBNF 形式的语法,如前文所述。

间隔

interval ::= 'INTERVAL' expr INTERVAL_UNIT

图 12.21 区间

图像显示了 EBNF 形式的语法,如前文所述。

区间表达式

intervalExpr
         ::= atomicExpr ( ( '+' | '-' ) interval )*

图 12.22 intervalExpr

图像显示了 EBNF 形式的语法,如前文所述。

mulDivExpr

mulDivExpr
         ::= intervalExpr ( ( '*' | '/' | '%' ) intervalExpr )*

图 12.23 mulDivExpr

图像显示了 EBNF 形式的语法,如前文所述。

添加子表达式

addSubExpr
         ::= mulDivExpr ( ( '+' | '-' ) mulDivExpr )*

图 12.24 addSubExpr

图像显示了 EBNF 形式的语法,如前文所述。

移位表达式

shiftExpr
         ::= addSubExpr ( ( '<<' | '>>' ) addSubExpr )*

图 12.25 shiftExpr

图像显示了 EBNF 形式的语法,如前文所述。

位表达式

bitExpr  ::= shiftExpr ( ( '&' | '|' | '^' ) shiftExpr )*

图 12.26 bitExpr

图像显示了 EBNF 形式的语法,如前文所述。

compExpr

compExpr ::= bitExpr ( ( '>=' | '>' | '<=' | '<' | '=' | '<>' | '!=' ) bitExpr )*

图 12.27 compExpr

图像显示了 EBNF 形式的语法,如前文所述。

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

图像显示了 EBNF 形式的语法,如前文所述。

和表达式

andExpr  ::= ilriExpr ( ( '&&' | 'AND' ) ilriExpr )*

图 12.29 andExpr

图像显示了 EBNF 形式的语法,如前文所述。

或表达式

orExpr   ::= andExpr ( ( '||' | 'OR' ) andExpr )*

图 12.30 orExpr

图像显示了 EBNF 形式的语法,如前文所述。

表达式

expr     ::= orExpr

图 12.31 表达式

图像显示了 EBNF 形式的语法,如前文所述。

数字

DIGIT    ::= '0' - '9'

图 12.32 数字

图像显示了 EBNF 形式的语法,如前文所述。

漂浮

FLOAT    ::= DIGIT* '.' DIGIT+ ( 'E' ( '+' | '-' )* DIGIT+ )*
           | DIGIT+ 'E' ( '+' | '-' )* DIGIT+

图 12.33 浮动

图像显示了 EBNF 形式的语法,如前文所述。

情报局

INT      ::= DIGIT+

图 12.34 INT

图像显示了 EBNF 形式的语法,如前文所述。

QUOTED_ID

QUOTED_ID
         ::= '`' ID '`'
           | '`' ( '~' '`'* | '``' )* '`'

图 12.35 QUOTED_ID

图像显示了 EBNF 形式的语法,如前文所述。

ID

ID       ::= ( 'a' - 'z' | 'A' - 'Z' | '_' ) ( 'a' - 'z' | 'A' - 'Z' | '0' - '9' | '_' )*

图 12.36 ID

图像显示了 EBNF 形式的语法,如前文所述。

WS

WS       ::= [ \t\r\n]+

图 12.37 WS

图像显示了 EBNF 形式的语法,如前文所述。

夏尔

SCHAR    ::= [\u0020\u0021\u0023\u0024\u0025\u0026\u0028-\u005B\u005D-\u007E]

图 12.38 SCHAR

图像显示了 EBNF 形式的语法,如前文所述。

STRING_DQ

STRING_DQ
         ::= '"' ( SCHAR | "'" | ESCAPED_DQ )* '"'

图 12.39 STRING_DQ

图像显示了 EBNF 形式的语法,如前文所述。

STRING_SQ

STRING_SQ
         ::= "'" ( SCHAR | '"' | ESCAPED_SQ )* "'"

图 12.40 STRING_SQ

图像显示了 EBNF 形式的语法,如前文所述。