后一修订版 | 前一修订版 |
manual:reference:grammar:expression:main_page [2021/06/28 14:19] – 创建 jola | manual:reference:grammar:expression:main_page [2023/03/23 17:16] (当前版本) – mikecovlee |
---|
====== Covariant Script 表达式 ====== | ====== Covariant Script 表达式 ====== |
----- | |
\\ | |
| |
===== 3.1 定义 ===== | ===== 3.1 定义 ===== |
| |
==== 3.3.1 右结合运算符 ==== | ==== 3.3.1 右结合运算符 ==== |
| |
^ **运算符** ^ **优先级** ^ **结合律** ^ **功能** ^ | ^ 运算符 ^ 优先级 ^ 结合律 ^ 功能 ^ |
| //表达式// **+** //表达式// | 10 | 右 | 对数值进行数学加法运算或拼接字符串 | | | //表达式// ''+'' //表达式// | 10 | 右 | 对数值进行数学加法运算或拼接字符串 | |
| //表达式// **-** //表达式// | 10 | 右 | 对数值进行数学减法运算 | | | //表达式// ''-'' //表达式// | 10 | 右 | 对数值进行数学减法运算 | |
| //表达式// ***** //表达式// | 11 | 右 | 对数值进行数学乘法运算 | | | //表达式// ''*'' //表达式// | 11 | 右 | 对数值进行数学乘法运算 | |
| //表达式// **/** //表达式// | 11 | 右 | 对数值进行数学除法运算 | | | //表达式// ''/'' //表达式// | 11 | 右 | 对数值进行数学除法运算 | |
| //表达式// **%** //表达式// | 12 | 右 | 对数值进行数学取余运算 | | | //表达式// ''%'' //表达式// | 12 | 右 | 对数值进行数学取余运算 | |
| //表达式// **^** //表达式// | 12 | 右 | 对数值进行数学幂运算 | | | //表达式// ''^'' //表达式// | 12 | 右 | 对数值进行数学幂运算 | |
| //表达式// **.** //表达式// | 15 | 右 | 对各种对象进行访问 | | | //表达式// ''.'' //表达式// | 15 | 右 | 对各种对象进行访问 | |
| //表达式// **->** //表达式// | 15 | 右 | 对指针指向的各种对象进行访问 | | | //表达式// ''->'' //表达式// | 15 | 右 | 对指针指向的各种对象进行访问 | |
| //表达式// **<** //表达式// | 9 | 右 | 比较左侧数值是否小于右侧 | | | //表达式// ''<'' //表达式// | 9 | 右 | 比较左侧数值是否小于右侧 | |
| //表达式// **>** //表达式// | 9 | 右 | 比较左侧数值是否大于右侧 | | | //表达式// ''>'' //表达式// | 9 | 右 | 比较左侧数值是否大于右侧 | |
| //表达式// **<=** //表达式// | 9 | 右 | 比较左侧数值是否小于或等于右侧 | | | //表达式// ''<='' //表达式// | 9 | 右 | 比较左侧数值是否小于或等于右侧 | |
| //表达式// **>=** //表达式// | 9 | 右 | 比较左侧数值是否大于或等于右侧 | | | //表达式// ''>='' //表达式// | 9 | 右 | 比较左侧数值是否大于或等于右侧 | |
| //表达式// **==** //表达式// | 9 | 右 | 比较两侧表达式的值是否相等 | | | //表达式// ''=='' //表达式// | 9 | 右 | 比较两侧表达式的值是否相等 | |
| //表达式// **!=** //表达式// | 9 | 右 | 比较两侧表达式的值是否不相等 | | | //表达式// ''!='' //表达式// | 9 | 右 | 比较两侧表达式的值是否不相等 | |
| //表达式// **&&** //表达式// | 7 | 右 | 对两侧表达式进行与运算,若左侧为假则停止求值 | | | //表达式// ''&&'' //表达式// | 7 | 右 | 对两侧表达式进行与运算,若左侧为假则停止求值 | |
| //表达式// **and** //表达式// | ::: | ::: | ::: | | | //表达式// ''and'' //表达式// | ::: | ::: | ::: | |
| //表达式// **||** //表达式// | 6 | 右 | 对两侧表达式进行或运算,若左侧为真则停止求值 | | | //表达式// ''||'' //表达式// | 6 | 右 | 对两侧表达式进行或运算,若左侧为真则停止求值 | |
| //表达式// **or** //表达式// | ::: | ::: | ::: | | | //表达式// ''or'' //表达式// | ::: | ::: | ::: | |
==== 3.3.2 左结合运算符 ==== | ==== 3.3.2 左结合运算符 ==== |
| |
^ **运算符** ^ **优先级** ^ **结合律** ^ **功能** ^ | ^ 运算符 ^ 优先级 ^ 结合律 ^ 功能 ^ |
| //表达式// **=** //表达式// | 1 | 左 | 将右侧表达式的值赋予左边 | | | //表达式// ''='' //表达式// | 1 | 左 | 将右侧表达式的值赋予左边 | |
| //表达式// **+=** //表达式// | 1 | 左 | 对数值进行数学加法运算或对字符串进行拼接后再将其值赋予左边 | | | //表达式// ''+='' //表达式// | 1 | 左 | 对数值进行数学加法运算或对字符串进行拼接后再将其值赋予左边 | |
| //表达式// **-=** //表达式// | 1 | 左 | 对数值进行数学减法运算后再赋予左边 | | | //表达式// ''-='' //表达式// | 1 | 左 | 对数值进行数学减法运算后再赋予左边 | |
| //表达式// ***=** //表达式// | 1 | 左 | 对数值进行数学乘法运算后再赋予左边 | | | //表达式// ''*='' //表达式// | 1 | 左 | 对数值进行数学乘法运算后再赋予左边 | |
| //表达式// **/=** //表达式// | 1 | 左 | 对数值进行数学除法运算后再赋予左边 | | | //表达式// ''/='' //表达式// | 1 | 左 | 对数值进行数学除法运算后再赋予左边 | |
| //表达式// **%=** //表达式// | 1 | 左 | 对数值进行数学取余运算后再赋予左边 | | | //表达式// ''%='' //表达式// | 1 | 左 | 对数值进行数学取余运算后再赋予左边 | |
| //表达式// **^=** //表达式// | 1 | 左 | 对数值进行数学幂运算后再赋予左边 | | | //表达式// ''^='' //表达式// | 1 | 左 | 对数值进行数学幂运算后再赋予左边 | |
=== 3.3.2.1 绑定 === | === 3.3.2.1 绑定 === |
| |
==== 3.3.3 特殊运算符 ==== | ==== 3.3.3 特殊运算符 ==== |
| |
^ **运算符** ^ **优先级** ^ **结合律** ^ **功能** ^ | ^ 运算符 ^ 优先级 ^ 结合律 ^ 功能 ^ |
| //表达式//**,**//表达式// | 0 | 右 | 联接多个表达式并依次运算 | | | //表达式//'',''//表达式// | 0 | 右 | 联接多个表达式并依次运算 | |
| //表达式//**:**//表达式// | 4 | 右 | 建立左侧表达式的值到右侧的映射 | | | //表达式//'':''//表达式// | 4 | 右 | 建立左侧表达式的值到右侧的映射 | |
| //表达式//**(**//参数列表//**)** | 15 | 右 | 调用表达式表示的函数 | | | //表达式//''(''//参数列表//'')'' | 15 | 右 | 调用表达式表示的函数 | |
| //表达式//**[**//表达式//**]** | 15 | 右 | 访问数组、哈希表或是字符串中的元素 | | | //表达式//''[''//表达式//'']'' | 15 | 右 | 访问数组元素、映射类型元素值或是字符串中的元素 | |
| //表达式//**...** | 20 | 无 | 若表达式的值为数组,则将其展开 | | | //表达式//''...'' | 20 | 无 | 若表达式的值为数组,则将其展开 | |
| **(**//表达式//**)** | 无 | 无 | 创建子表达式 | | | ''(''//表达式//'')'' | 无 | 无 | 创建子表达式 | |
| |
逗号表达式将遵循从左到右的规则,其值为最后一个表达式的值 | 逗号表达式将遵循从左到右的规则,其值为最后一个表达式的值 |
| |
数组在访问时,若下标越界会自动增长,增长的部分填''0'';若下标为负则访问下标为长度-下标绝对值的元素,哈希表在访问时若映射不存在则将自动建立到''0''的映射 | ''array''(数组)在访问时,若下标越界会自动增长,增长的部分填''0''(''number''类型);若下标为负则访问下标为长度-下标绝对值的元素,''hash_map''(映射类型)在访问时若映射不存在则将自动建立到''0''的映射 |
| |
展开表达式的使用范围**仅限**函数调用时的参数列表和数组字面量的声明中 | 展开表达式的使用范围**仅限**函数调用时的参数列表和数组字面量的声明中 |