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 | |||