on master help sign in
Got prefix var working
commitd5a166f745668d6eb39557b7c7779c86bb96abe3 authoriko <mail@iko.soy> dateMon 13 May 2024, 19:54 (2 years ago) parentab04c6c
3 files changed+46−13
zod/luau/TODO.md+3 zod/luau/lib/lua.hoon+40−10 zod/luau/tests/foo.lua+3−3
zod/luau/TODO.mdnew file+3
@@ -0,0 +1,3 @@
1+# Parser
2+
3+- [ ] functioncall
zod/luau/lib/lua.hoon+40−10
@@ -69,6 +69,10 @@
6969 %+ knee *expr
7070 |.
7171 %+ cook process-expr-list parse-expr-list
72+++ parse-parened-expr
73+ %+ cook
74+ |=([=expr] [%expr expr])
75+ (ifix [(just '(') (just ')')] (knee *expr |.(parse-expr)))
7276++ print-expr
7377 |= [=expr]
7478 ^- tape
@@ -205,6 +209,7 @@
205209::
206210+$ var
207211 $%
212+ [%dot prefix-expr name]
208213 [%indexed prefix-expr expr]
209214 [%name name]
210215 ==
@@ -221,21 +226,50 @@
221226 (print-expr +>.var)
222227 "]"
223228 ==
229+ %dot
230+ %- zing
231+ :~
232+ (print-prefix-expr +<.var)
233+ "."
234+ (trip +>.var)
235+ ==
224236 ==
225237++ parse-var
226238 %+ knee *var
227239 |.
228− ;~ pose
240+ =>
241+ |%
242+ ++ parse-access
243+ |= =prefix-expr
229244 %+ cook
230− |=([=name * =expr *] [%indexed [%var [%name name]] expr])
245+ |=([* =expr *] [%indexed prefix-expr expr])
231246 ;~ (glue gaw)
232− parse-name
233247 (just '[')
234248 parse-expr
235249 (just ']')
236250 ==
251+ ++ parse-dot
252+ |= =prefix-expr
253+ %+ cook
254+ |=([* =name] [%dot prefix-expr name])
255+ ;~ plug
256+ dot
257+ parse-name
258+ ==
259+ --
260+ ;~ pose
261+ ;< prefix=name bind parse-name
262+ ;~ pose
263+ (parse-access [%var %name prefix])
264+ (parse-dot [%var %name prefix])
265+ (easy [%name prefix])
266+ ==
237267 ::
238− (cook |=(=name [%name name]) parse-name)
268+ ;< prefix=prefix-expr bind parse-parened-expr
269+ ;~ pose
270+ (parse-access prefix)
271+ (parse-dot prefix)
272+ ==
239273 ==
240274:: varlist
241275::
@@ -259,13 +293,9 @@
259293 %+ knee *prefix-expr
260294 |.
261295 ;~ pose
262− %+ cook
263− |=([=expr] [%expr expr])
264− (ifix [(just '(') (just ')')] (knee *expr |.(parse-expr)))
296+ %+ cook |=([=var] [%var var]) parse-var
265297 ::
266− %+ cook
267− |=([=var] [%var var])
268− (knee *var |.(parse-var))
298+ parse-parened-expr
269299 ==
270300++ print-prefix-expr
271301 |= [=prefix-expr]
zod/luau/tests/foo.lua+3−3
@@ -1,10 +1,10 @@
1−foo = nil
1+foosjis = nil
22
33baz = bar[nil]
44baz = bar
55
66i = 3
7−i, a[i] = i+1, 20
8−
7+i, a[i] = i+1, 20 >> 9
98
9+;
1010