diff options
| author | Li Jin <dragon-fly@qq.com> | 2023-08-17 10:36:15 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2023-08-17 10:36:15 +0800 |
| commit | e61cce21ef7def2c2e52dd6cb6a5b540ebcac29d (patch) | |
| tree | 6e7c5e7e6f13157e9f8db26c38f6d8cba75683e5 /spec/inputs/unicode/destructure.yue | |
| parent | 289faf45ac26f7e0ac1a1e4305e5c42fc1e5b866 (diff) | |
| download | yuescript-e61cce21ef7def2c2e52dd6cb6a5b540ebcac29d.tar.gz yuescript-e61cce21ef7def2c2e52dd6cb6a5b540ebcac29d.tar.bz2 yuescript-e61cce21ef7def2c2e52dd6cb6a5b540ebcac29d.zip | |
add unicode identifier support, fix more issue from #144
Diffstat (limited to 'spec/inputs/unicode/destructure.yue')
| -rw-r--r-- | spec/inputs/unicode/destructure.yue | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/spec/inputs/unicode/destructure.yue b/spec/inputs/unicode/destructure.yue new file mode 100644 index 0000000..5efdf82 --- /dev/null +++ b/spec/inputs/unicode/destructure.yue | |||
| @@ -0,0 +1,228 @@ | |||
| 1 | |||
| 2 | do | ||
| 3 | {元素a, 元素b} = 你好 | ||
| 4 | |||
| 5 | {{元素a}, 元素b, {元素c}} = 你好 | ||
| 6 | |||
| 7 | { :你好, :世界 } = 值 | ||
| 8 | |||
| 9 | do | ||
| 10 | { 是: 否, 东西 } = 世界 | ||
| 11 | |||
| 12 | {:字段a,:字段b,:字段c,:d字段} = 好 | ||
| 13 | |||
| 14 | {a元素}, 变量b = 一, 二 | ||
| 15 | {b元素}, 变量c = 一, nil | ||
| 16 | {d元素}, 变量e = 一, 二 | ||
| 17 | |||
| 18 | 变量x, {元素y} = 一, 二 | ||
| 19 | |||
| 20 | 变量xx, 变量yy = 1, 2 | ||
| 21 | {元素yy, 元素xx} = {变量xx, 变量yy} | ||
| 22 | |||
| 23 | {元素a, :字段b, 元素c, :字段d, 元素e, :字段f, 元素g} = 表 | ||
| 24 | |||
| 25 | do :字段a, :字段b, 变量c = 表, nil | ||
| 26 | |||
| 27 | do 变量a, :字段b, :字段c = 表, _无效变量 | ||
| 28 | |||
| 29 | do :字段a, 变量b, :字段c = 表, _无效变量, _无效变量 | ||
| 30 | |||
| 31 | --- | ||
| 32 | |||
| 33 | do | ||
| 34 | 未来人们 = | ||
| 35 | 雕刻家: "翁贝托·博乔尼" | ||
| 36 | 画家: "弗拉基米尔·伯留克" | ||
| 37 | 诗人: | ||
| 38 | 姓名: "F.T.马里内蒂" | ||
| 39 | 地址: { | ||
| 40 | "罗马42R大街" | ||
| 41 | "贝拉焦,意大利 22021" | ||
| 42 | } | ||
| 43 | |||
| 44 | do {诗人: {:姓名, 地址: {街道, 城市}}} = 未来人们 | ||
| 45 | |||
| 46 | do { | ||
| 47 | :雕刻家 | ||
| 48 | :画家 | ||
| 49 | 诗人: | ||
| 50 | :姓名 | ||
| 51 | 地址: | ||
| 52 | * 街道 | ||
| 53 | * 城市 | ||
| 54 | } = 未来人们 | ||
| 55 | |||
| 56 | do | ||
| 57 | 字段a: | ||
| 58 | 字段b: 变量c | ||
| 59 | 字段d: 变量e = 对象tb | ||
| 60 | |||
| 61 | do | ||
| 62 | 字段a: | ||
| 63 | * 字段b: 变量c | ||
| 64 | * 字段d: 变量e | ||
| 65 | * 元素f = 对象tb | ||
| 66 | |||
| 67 | -- | ||
| 68 | |||
| 69 | do | ||
| 70 | { @世界 } = 变量x | ||
| 71 | { 对象a.字段b, 对象c.字段y, 函数!.字段z } = 变量x | ||
| 72 | |||
| 73 | { 世界: @世界 } = 变量x | ||
| 74 | |||
| 75 | -- | ||
| 76 | |||
| 77 | do | ||
| 78 | 东西 = {{1,2}, {3,4}} | ||
| 79 | |||
| 80 | for {元素x,元素y} in *东西 | ||
| 81 | 打印 元素x,元素y | ||
| 82 | |||
| 83 | |||
| 84 | -- | ||
| 85 | |||
| 86 | do | ||
| 87 | with {元素a,元素b} = 东西 | ||
| 88 | 打印 元素a, 元素b | ||
| 89 | |||
| 90 | |||
| 91 | -- | ||
| 92 | |||
| 93 | do | ||
| 94 | 东西 = nil | ||
| 95 | if {元素a} = 东西 | ||
| 96 | 打印 元素a | ||
| 97 | else | ||
| 98 | 打印 "没东西" | ||
| 99 | |||
| 100 | 东东 = {1,2} | ||
| 101 | if {元素a,元素b} = 东东 | ||
| 102 | 打印 元素a,元素b | ||
| 103 | |||
| 104 | if {元素a,元素b} = 东西 | ||
| 105 | 打印 元素a,元素b | ||
| 106 | elseif {元素c,元素d} = 东东 | ||
| 107 | 打印 元素c,元素d | ||
| 108 | else | ||
| 109 | 打印 "不" | ||
| 110 | |||
| 111 | -- | ||
| 112 | |||
| 113 | do | ||
| 114 | 变量z = "好" | ||
| 115 | {元素a,元素b,元素c} = 变量z | ||
| 116 | |||
| 117 | do | ||
| 118 | {元素a,元素b,元素c} = 变量z | ||
| 119 | |||
| 120 | _ = (参数z) -> | ||
| 121 | {元素a,元素b,元素c} = 参数z | ||
| 122 | |||
| 123 | do | ||
| 124 | 变量z = "〇〇" | ||
| 125 | _ = (参数k) -> | ||
| 126 | {元素a,元素b,元素c} = 参数z | ||
| 127 | |||
| 128 | do | ||
| 129 | {函数:{结束:结束变量}} = 东西 | ||
| 130 | |||
| 131 | do | ||
| 132 | {如果:{元素a,元素b,元素c}} = 东西 | ||
| 133 | |||
| 134 | do | ||
| 135 | {:字段a, :字段b} = {字段a: "你好", 字段b: "世界"} if true | ||
| 136 | |||
| 137 | {天, 小时, 分钟, 秒} = [tonumber 元素 for 元素 in *{ | ||
| 138 | string.match "1 2 3 4", "(.+)%s(.+)%s(.+)%s(.+)" | ||
| 139 | }] | ||
| 140 | |||
| 141 | {:一, :二, :三} = {匹配结果, true for 匹配结果 in 随机对象\全局匹配("%S+")} | ||
| 142 | |||
| 143 | {:字段a},变量b = 对象a\如果(123) + 变量t, 123 | ||
| 144 | |||
| 145 | do | ||
| 146 | {:名称 = "没名字", :工作 = "没工作"} = 个人 | ||
| 147 | |||
| 148 | 请求 = (地址, 选项 = {}) -> | ||
| 149 | { | ||
| 150 | :方式 = "GET" | ||
| 151 | :请求头 = {} | ||
| 152 | :参数 = {} | ||
| 153 | :负载 = "" | ||
| 154 | :确认 | ||
| 155 | :错误 | ||
| 156 | :最终处理 | ||
| 157 | } = 选项 | ||
| 158 | 结果 = 发起请求(地址, 方式, 参数, 负载, 确认, 错误, 最终处理) | ||
| 159 | return 结果 | ||
| 160 | |||
| 161 | {键1: {键2: 值1 = 123}, :键3 = "abc"} = 对象tb | ||
| 162 | |||
| 163 | {<>: 元表 = {__index: {字段abc: 123}}, <>: {:<call> = (-> {}), :<add>}} = 对象tb | ||
| 164 | |||
| 165 | {字段x: {<>: 元表x = {}}, :y字段, z字段: z变量, :<index> = -> nil} = 对象tb | ||
| 166 | |||
| 167 | {<>: {函数: a对象.b字段(-> 123).字段c = 项目?.默认值}} = 对象tb | ||
| 168 | |||
| 169 | do | ||
| 170 | {<>: 元表 = {}, <sub>: 减函数} = 对象tb.字段x | ||
| 171 | |||
| 172 | do | ||
| 173 | {x字段: {<>: 元表 = {}, <sub>: 减函数}} = 对象tb | ||
| 174 | |||
| 175 | do | ||
| 176 | {元素a = 1, 元素b = 2, 字段c: {对像d.字段e = 3}} = 对象tb | ||
| 177 | |||
| 178 | for {左 = "null", 右 = false} in *元组列表 | ||
| 179 | 打印 左, 右 | ||
| 180 | |||
| 181 | do | ||
| 182 | {_, a元素, _, b元素} = 对象tb -- list placeholder | ||
| 183 | |||
| 184 | do | ||
| 185 | {字段x: 对象a.字段b = 1, y字段: a对象.c字段 = 2} = 对象x.字段x.字段x | ||
| 186 | |||
| 187 | do | ||
| 188 | const :宽, :高 = 视区.尺寸 | ||
| 189 | const {:x坐标 = 0.0, :y坐标 = 0.0} = 点 | ||
| 190 | |||
| 191 | do | ||
| 192 | 变量1, 变量2, 变量3, 数组a[], 变量d, {元素b}, 变量e, 对象c.<> = 1, 2, 3, 函数! | ||
| 193 | 变量y1, :字段y2, :字段y3, 变量y4 = 函数1!, 函数2! | ||
| 194 | |||
| 195 | do | ||
| 196 | { | ||
| 197 | [["abc"]]: 变量v1 = 111, | ||
| 198 | [1 + 1]: {变量v2 = 222, 变量v3 = 333}, | ||
| 199 | @x: 变量v4 = 444 | ||
| 200 | }, \ | ||
| 201 | 'x-y-z': 变量v5, [函数!]: {[函数2!]: 变量v6, 变量v7} = 对象tb, 对象tb2 | ||
| 202 | |||
| 203 | do | ||
| 204 | <[名称]>: 元值, [名称]: 值 = 对象tb | ||
| 205 | |||
| 206 | do | ||
| 207 | {:<tostring> = (-> "名称"), :<add>} = 对象tb | ||
| 208 | |||
| 209 | switch 对象tb | ||
| 210 | when {:<name> = "项目", <"123">: 元字段} | ||
| 211 | 打印 name, 元字段 | ||
| 212 | |||
| 213 | do | ||
| 214 | 对象tb = {} | ||
| 215 | <[变量a + 变量b]>: 变量v1, [函数c!]: 变量v2 = 对象tb | ||
| 216 | |||
| 217 | do | ||
| 218 | {a: {:<add> = 加函数}, b: {<[字段名]>: 字段 = 123}} = 对象tb | ||
| 219 | {<"字段abc">: 元字段 = "默认值", <[[任意 字符串]]>: 变量abc = 123, <'字符串'>: 有默认值 = {}} = 对象tb | ||
| 220 | |||
| 221 | switch 对象tb | ||
| 222 | when {字段a: {:<add> = 加函数}, b: {<[字段名]>: 字段 = 123}} | ||
| 223 | 打印 add, 字段 | ||
| 224 | switch tb | ||
| 225 | when {字段c: {<"字段abc">: 元字段 = "默认值"}, <[[any string]]>: {字段d: 变量abc = 123}, <'字符串'>: {字段e: 有默认值 = {}}} | ||
| 226 | 打印 元字段, 变量abc, 有默认值 | ||
| 227 | nil | ||
| 228 | |||
