aboutsummaryrefslogtreecommitdiff
path: root/spec/inputs/unicode/destructure.yue
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2023-08-17 10:36:15 +0800
committerLi Jin <dragon-fly@qq.com>2023-08-17 10:36:15 +0800
commite61cce21ef7def2c2e52dd6cb6a5b540ebcac29d (patch)
tree6e7c5e7e6f13157e9f8db26c38f6d8cba75683e5 /spec/inputs/unicode/destructure.yue
parent289faf45ac26f7e0ac1a1e4305e5c42fc1e5b866 (diff)
downloadyuescript-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.yue228
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
2do
3 {元素a, 元素b} = 你好
4
5 {{元素a}, 元素b, {元素c}} = 你好
6
7 { :你好, :世界 } = 值
8
9do
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
33do
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
56do
57 字段a:
58 字段b: 变量c
59 字段d: 变量e = 对象tb
60
61do
62 字段a:
63 * 字段b: 变量c
64 * 字段d: 变量e
65 * 元素f = 对象tb
66
67--
68
69do
70 { @世界 } = 变量x
71 { 对象a.字段b, 对象c.字段y, 函数!.字段z } = 变量x
72
73 { 世界: @世界 } = 变量x
74
75--
76
77do
78 东西 = {{1,2}, {3,4}}
79
80 for {元素x,元素y} in *东西
81 打印 元素x,元素y
82
83
84--
85
86do
87 with {元素a,元素b} = 东西
88 打印 元素a, 元素b
89
90
91--
92
93do
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
113do
114 变量z = "好"
115 {元素a,元素b,元素c} = 变量z
116
117do
118 {元素a,元素b,元素c} = 变量z
119
120_ = (参数z) ->
121 {元素a,元素b,元素c} = 参数z
122
123do
124 变量z = "〇〇"
125 _ = (参数k) ->
126 {元素a,元素b,元素c} = 参数z
127
128do
129 {函数:{结束:结束变量}} = 东西
130
131do
132 {如果:{元素a,元素b,元素c}} = 东西
133
134do
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
145do
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
169do
170 {<>: 元表 = {}, <sub>: 减函数} = 对象tb.字段x
171
172do
173 {x字段: {<>: 元表 = {}, <sub>: 减函数}} = 对象tb
174
175do
176 {元素a = 1, 元素b = 2, 字段c: {对像d.字段e = 3}} = 对象tb
177
178 for {左 = "null", 右 = false} in *元组列表
179 打印 左, 右
180
181do
182 {_, a元素, _, b元素} = 对象tb -- list placeholder
183
184do
185 {字段x: 对象a.字段b = 1, y字段: a对象.c字段 = 2} = 对象x.字段x.字段x
186
187do
188 const :宽, :高 = 视区.尺寸
189 const {:x坐标 = 0.0, :y坐标 = 0.0} = 点
190
191do
192 变量1, 变量2, 变量3, 数组a[], 变量d, {元素b}, 变量e, 对象c.<> = 1, 2, 3, 函数!
193 变量y1, :字段y2, :字段y3, 变量y4 = 函数1!, 函数2!
194
195do
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
203do
204 <[名称]>: 元值, [名称]: 值 = 对象tb
205
206do
207 {:<tostring> = (-> "名称"), :<add>} = 对象tb
208
209 switch 对象tb
210 when {:<name> = "项目", <"123">: 元字段}
211 打印 name, 元字段
212
213do
214 对象tb = {}
215 <[变量a + 变量b]>: 变量v1, [函数c!]: 变量v2 = 对象tb
216
217do
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, 有默认值
227nil
228