Skip to content

Commit 102346d

Browse files
committed
fix: more expression parsing improvements
1 parent e38b29e commit 102346d

File tree

9 files changed

+1223
-62
lines changed

9 files changed

+1223
-62
lines changed
Lines changed: 319 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,319 @@
1+
1╭─ a=x! y
2+
│ ││╰─ attrValue.value "x! y"
3+
│ │├─ attrValue "=x! y"
4+
│ │╰─ attrName
5+
╰─ ╰─ tagName
6+
2╭─ a=x* y
7+
│ ││╰─ attrValue.value "x* y"
8+
│ │├─ attrValue "=x* y"
9+
│ │╰─ attrName
10+
│ ├─ closeTag(a)
11+
│ ├─ openTagEnd(a)
12+
╰─ ╰─ tagName
13+
3╭─ a=x** y
14+
│ ││╰─ attrValue.value "x** y"
15+
│ │├─ attrValue "=x** y"
16+
│ │╰─ attrName
17+
│ ├─ closeTag(a)
18+
│ ├─ openTagEnd(a)
19+
╰─ ╰─ tagName
20+
4╭─ a=x% y
21+
│ ││╰─ attrValue.value "x% y"
22+
│ │├─ attrValue "=x% y"
23+
│ │╰─ attrName
24+
│ ├─ closeTag(a)
25+
│ ├─ openTagEnd(a)
26+
╰─ ╰─ tagName
27+
5╭─ a=x& y
28+
│ ││╰─ attrValue.value "x& y"
29+
│ │├─ attrValue "=x& y"
30+
│ │╰─ attrName
31+
│ ├─ closeTag(a)
32+
│ ├─ openTagEnd(a)
33+
╰─ ╰─ tagName
34+
6╭─ a=x&& y
35+
│ ││╰─ attrValue.value "x&& y"
36+
│ │├─ attrValue "=x&& y"
37+
│ │╰─ attrName
38+
│ ├─ closeTag(a)
39+
│ ├─ openTagEnd(a)
40+
╰─ ╰─ tagName
41+
7╭─ a=x^ y
42+
│ ││╰─ attrValue.value "x^ y"
43+
│ │├─ attrValue "=x^ y"
44+
│ │╰─ attrName
45+
│ ├─ closeTag(a)
46+
│ ├─ openTagEnd(a)
47+
╰─ ╰─ tagName
48+
8╭─ a=x~ y
49+
│ ││╰─ attrValue.value "x~ y"
50+
│ │├─ attrValue "=x~ y"
51+
│ │╰─ attrName
52+
│ ├─ closeTag(a)
53+
│ ├─ openTagEnd(a)
54+
╰─ ╰─ tagName
55+
9╭─ a=x| y
56+
│ ││╰─ attrValue.value "x| y"
57+
│ │├─ attrValue "=x| y"
58+
│ │╰─ attrName
59+
│ ├─ closeTag(a)
60+
│ ├─ openTagEnd(a)
61+
╰─ ╰─ tagName
62+
10╭─ a=x|| y
63+
│ ││╰─ attrValue.value "x|| y"
64+
│ │├─ attrValue "=x|| y"
65+
│ │╰─ attrName
66+
│ ├─ closeTag(a)
67+
│ ├─ openTagEnd(a)
68+
╰─ ╰─ tagName
69+
11╭─ a=x?? y
70+
│ ││╰─ attrValue.value "x?? y"
71+
│ │├─ attrValue "=x?? y"
72+
│ │╰─ attrName
73+
│ ├─ closeTag(a)
74+
│ ├─ openTagEnd(a)
75+
╰─ ╰─ tagName
76+
12╭─ a=x? y : z
77+
│ ││╰─ attrValue.value "x? y : z"
78+
│ │├─ attrValue "=x? y : z"
79+
│ │╰─ attrName
80+
│ ├─ closeTag(a)
81+
│ ├─ openTagEnd(a)
82+
╰─ ╰─ tagName
83+
13╭─ a=x== y
84+
│ ││╰─ attrValue.value "x== y"
85+
│ │├─ attrValue "=x== y"
86+
│ │╰─ attrName
87+
│ ├─ closeTag(a)
88+
│ ├─ openTagEnd(a)
89+
╰─ ╰─ tagName
90+
14╭─ a=x=== y
91+
│ ││╰─ attrValue.value "x=== y"
92+
│ │├─ attrValue "=x=== y"
93+
│ │╰─ attrName
94+
│ ├─ closeTag(a)
95+
│ ├─ openTagEnd(a)
96+
╰─ ╰─ tagName
97+
15╭─ a=x!= y
98+
│ ││╰─ attrValue.value "x!= y"
99+
│ │├─ attrValue "=x!= y"
100+
│ │╰─ attrName
101+
│ ├─ closeTag(a)
102+
│ ├─ openTagEnd(a)
103+
╰─ ╰─ tagName
104+
16╭─ a=x!== y
105+
│ ││╰─ attrValue.value "x!== y"
106+
│ │├─ attrValue "=x!== y"
107+
│ │╰─ attrName
108+
│ ├─ closeTag(a)
109+
│ ├─ openTagEnd(a)
110+
╰─ ╰─ tagName
111+
17╭─ a=x<= y
112+
│ ││╰─ attrValue.value "x<= y"
113+
│ │├─ attrValue "=x<= y"
114+
│ │╰─ attrName
115+
│ ├─ closeTag(a)
116+
│ ├─ openTagEnd(a)
117+
╰─ ╰─ tagName
118+
18╭─ a=x>= y
119+
│ ││╰─ attrValue.value "x>= y"
120+
│ │├─ attrValue "=x>= y"
121+
│ │╰─ attrName
122+
│ ├─ closeTag(a)
123+
│ ├─ openTagEnd(a)
124+
╰─ ╰─ tagName
125+
19╭─ a=x&= y
126+
│ ││╰─ attrValue.value "x&= y"
127+
│ │├─ attrValue "=x&= y"
128+
│ │╰─ attrName
129+
│ ├─ closeTag(a)
130+
│ ├─ openTagEnd(a)
131+
╰─ ╰─ tagName
132+
20╭─ a=x&&= y
133+
│ ││╰─ attrValue.value "x&&= y"
134+
│ │├─ attrValue "=x&&= y"
135+
│ │╰─ attrName
136+
│ ├─ closeTag(a)
137+
│ ├─ openTagEnd(a)
138+
╰─ ╰─ tagName
139+
21╭─ a=x|= y
140+
│ ││╰─ attrValue.value "x|= y"
141+
│ │├─ attrValue "=x|= y"
142+
│ │╰─ attrName
143+
│ ├─ closeTag(a)
144+
│ ├─ openTagEnd(a)
145+
╰─ ╰─ tagName
146+
22╭─ a=x||= y
147+
│ ││╰─ attrValue.value "x||= y"
148+
│ │├─ attrValue "=x||= y"
149+
│ │╰─ attrName
150+
│ ├─ closeTag(a)
151+
│ ├─ openTagEnd(a)
152+
╰─ ╰─ tagName
153+
23╭─ a=x^= y
154+
│ ││╰─ attrValue.value "x^= y"
155+
│ │├─ attrValue "=x^= y"
156+
│ │╰─ attrName
157+
│ ├─ closeTag(a)
158+
│ ├─ openTagEnd(a)
159+
╰─ ╰─ tagName
160+
24╭─ a=x~= y
161+
│ ││╰─ attrValue.value "x~= y"
162+
│ │├─ attrValue "=x~= y"
163+
│ │╰─ attrName
164+
│ ├─ closeTag(a)
165+
│ ├─ openTagEnd(a)
166+
╰─ ╰─ tagName
167+
25╭─ a=x>>= y
168+
│ ││╰─ attrValue.value "x>>= y"
169+
│ │├─ attrValue "=x>>= y"
170+
│ │╰─ attrName
171+
│ ├─ closeTag(a)
172+
│ ├─ openTagEnd(a)
173+
╰─ ╰─ tagName
174+
26╭─ a=x>>>= y
175+
│ ││╰─ attrValue.value "x>>>= y"
176+
│ │├─ attrValue "=x>>>= y"
177+
│ │╰─ attrName
178+
│ ├─ closeTag(a)
179+
│ ├─ openTagEnd(a)
180+
╰─ ╰─ tagName
181+
27╭─ a=x-= y
182+
│ ││╰─ attrValue.value "x-= y"
183+
│ │├─ attrValue "=x-= y"
184+
│ │╰─ attrName
185+
│ ├─ closeTag(a)
186+
│ ├─ openTagEnd(a)
187+
╰─ ╰─ tagName
188+
28╭─ a=x/= y
189+
│ ││╰─ attrValue.value "x/= y"
190+
│ │├─ attrValue "=x/= y"
191+
│ │╰─ attrName
192+
│ ├─ closeTag(a)
193+
│ ├─ openTagEnd(a)
194+
╰─ ╰─ tagName
195+
29╭─ a=x*= y
196+
│ ││╰─ attrValue.value "x*= y"
197+
│ │├─ attrValue "=x*= y"
198+
│ │╰─ attrName
199+
│ ├─ closeTag(a)
200+
│ ├─ openTagEnd(a)
201+
╰─ ╰─ tagName
202+
30╭─ a=x**= y
203+
│ ││╰─ attrValue.value "x**= y"
204+
│ │├─ attrValue "=x**= y"
205+
│ │╰─ attrName
206+
│ ├─ closeTag(a)
207+
│ ├─ openTagEnd(a)
208+
╰─ ╰─ tagName
209+
31╭─ a=x%= y
210+
│ ││╰─ attrValue.value "x%= y"
211+
│ │├─ attrValue "=x%= y"
212+
│ │╰─ attrName
213+
│ ├─ closeTag(a)
214+
│ ├─ openTagEnd(a)
215+
╰─ ╰─ tagName
216+
32╭─ a=x+= y
217+
│ ││╰─ attrValue.value "x+= y"
218+
│ │├─ attrValue "=x+= y"
219+
│ │╰─ attrName
220+
│ ├─ closeTag(a)
221+
│ ├─ openTagEnd(a)
222+
╰─ ╰─ tagName
223+
33╭─ a=x. y
224+
│ ││╰─ attrValue.value "x. y"
225+
│ │├─ attrValue "=x. y"
226+
│ │╰─ attrName
227+
│ ├─ closeTag(a)
228+
│ ├─ openTagEnd(a)
229+
╰─ ╰─ tagName
230+
34╭─ a=x++ +y
231+
│ ││╰─ attrValue.value "x++ +y"
232+
│ │├─ attrValue "=x++ +y"
233+
│ │╰─ attrName
234+
│ ├─ closeTag(a)
235+
│ ├─ openTagEnd(a)
236+
╰─ ╰─ tagName
237+
35╭─ a=x+ ++y
238+
│ ││╰─ attrValue.value "x+ ++y"
239+
│ │├─ attrValue "=x+ ++y"
240+
│ │╰─ attrName
241+
│ ├─ closeTag(a)
242+
│ ├─ openTagEnd(a)
243+
╰─ ╰─ tagName
244+
36╭─ a=x> y
245+
│ ││╰─ attrValue.value "x> y"
246+
│ │├─ attrValue "=x> y"
247+
│ │╰─ attrName
248+
│ ├─ closeTag(a)
249+
│ ├─ openTagEnd(a)
250+
╰─ ╰─ tagName
251+
37╭─ a=x>> y
252+
│ ││╰─ attrValue.value "x>> y"
253+
│ │├─ attrValue "=x>> y"
254+
│ │╰─ attrName
255+
│ ├─ closeTag(a)
256+
│ ├─ openTagEnd(a)
257+
╰─ ╰─ tagName
258+
38╭─ a=x>>> y
259+
│ ││╰─ attrValue.value "x>>> y"
260+
│ │├─ attrValue "=x>>> y"
261+
│ │╰─ attrName
262+
│ ├─ closeTag(a)
263+
│ ├─ openTagEnd(a)
264+
╰─ ╰─ tagName
265+
39╭─ a=x( y )
266+
│ ││╰─ attrValue.value "x( y )"
267+
│ │├─ attrValue "=x( y )"
268+
│ │╰─ attrName
269+
│ ├─ closeTag(a)
270+
│ ├─ openTagEnd(a)
271+
╰─ ╰─ tagName
272+
40╭─ a=z { y }
273+
│ ││╰─ attrValue.value "z { y }"
274+
│ │├─ attrValue "=z { y }"
275+
│ │╰─ attrName
276+
│ ├─ closeTag(a)
277+
│ ├─ openTagEnd(a)
278+
╰─ ╰─ tagName
279+
41╭─ <a=x[ y ]/>
280+
│ ││││ ╰─ openTagEnd(a) "/>"
281+
│ │││╰─ attrValue.value "x[ y ]"
282+
│ ││├─ attrValue "=x[ y ]"
283+
│ ││╰─ attrName
284+
│ │╰─ tagName
285+
│ ├─ closeTag(a)
286+
╰─ ╰─ openTagEnd(a)
287+
42╭─ a=x=> y z
288+
│ │││ ╰─ attrName
289+
│ ││╰─ attrValue.value "x=> y"
290+
│ │├─ attrValue "=x=> y"
291+
│ │╰─ attrName
292+
│ ├─ closeTag(a)
293+
╰─ ╰─ tagName
294+
43╭─ a=x=> ( y ) z
295+
│ │││ ╰─ attrName
296+
│ ││╰─ attrValue.value "x=> ( y )"
297+
│ │├─ attrValue "=x=> ( y )"
298+
│ │╰─ attrName
299+
│ ├─ closeTag(a)
300+
│ ├─ openTagEnd(a)
301+
╰─ ╰─ tagName
302+
44╭─ a=x=> { y } z
303+
│ │││ ╰─ attrName
304+
│ ││╰─ attrValue.value "x=> { y }"
305+
│ │├─ attrValue "=x=> { y }"
306+
│ │╰─ attrName
307+
│ ├─ closeTag(a)
308+
│ ├─ openTagEnd(a)
309+
╰─ ╰─ tagName
310+
45╭─ a=( x ){ y } z
311+
│ │││ │├─ closeTag(a)
312+
│ │││ │╰─ openTagEnd(a)
313+
│ │││ ╰─ attrName
314+
│ ││╰─ attrValue.value "( x ){ y }"
315+
│ │├─ attrValue "=( x ){ y }"
316+
│ │╰─ attrName
317+
│ ├─ closeTag(a)
318+
│ ├─ openTagEnd(a)
319+
╰─ ╰─ tagName
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
a=x! y
2+
a=x* y
3+
a=x** y
4+
a=x% y
5+
a=x& y
6+
a=x&& y
7+
a=x^ y
8+
a=x~ y
9+
a=x| y
10+
a=x|| y
11+
a=x?? y
12+
a=x? y : z
13+
a=x== y
14+
a=x=== y
15+
a=x!= y
16+
a=x!== y
17+
a=x<= y
18+
a=x>= y
19+
a=x&= y
20+
a=x&&= y
21+
a=x|= y
22+
a=x||= y
23+
a=x^= y
24+
a=x~= y
25+
a=x>>= y
26+
a=x>>>= y
27+
a=x-= y
28+
a=x/= y
29+
a=x*= y
30+
a=x**= y
31+
a=x%= y
32+
a=x+= y
33+
a=x. y
34+
a=x++ +y
35+
a=x+ ++y
36+
a=x> y
37+
a=x>> y
38+
a=x>>> y
39+
a=x( y )
40+
a=z { y }
41+
<a=x[ y ]/>
42+
a=x=> y z
43+
a=x=> ( y ) z
44+
a=x=> { y } z
45+
a=( x ){ y } z

0 commit comments

Comments
 (0)