on master help sign in
Got prefix var working
d5a166fiko
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 @@
69 %+ knee *expr
69 %+ knee *expr
70 |.
70 |.
71 %+ cook process-expr-list parse-expr-list
71 %+ 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)))
72++ print-expr
76++ print-expr
73 |= [=expr]
77 |= [=expr]
74 ^- tape
78 ^- tape
@@ -205,6 +209,7 @@
205::
209::
206+$ var
210+$ var
207 $%
211 $%
212+ [%dot prefix-expr name]
208 [%indexed prefix-expr expr]
213 [%indexed prefix-expr expr]
209 [%name name]
214 [%name name]
210 ==
215 ==
@@ -221,21 +226,50 @@
221 (print-expr +>.var)
226 (print-expr +>.var)
222 "]"
227 "]"
223 ==
228 ==
229+ %dot
230+ %- zing
231+ :~
232+ (print-prefix-expr +<.var)
233+ "."
234+ (trip +>.var)
235+ ==
224 ==
236 ==
225++ parse-var
237++ parse-var
226 %+ knee *var
238 %+ knee *var
227 |.
239 |.
228− ;~ pose
240+ =>
241+ |%
242+ ++ parse-access
243+ |= =prefix-expr
229 %+ cook
244 %+ cook
230− |=([=name * =expr *] [%indexed [%var [%name name]] expr])
245+ |=([* =expr *] [%indexed prefix-expr expr])
231 ;~ (glue gaw)
246 ;~ (glue gaw)
232− parse-name
233 (just '[')
247 (just '[')
234 parse-expr
248 parse-expr
235 (just ']')
249 (just ']')
236 ==
250 ==
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+ ==
237 ::
267 ::
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+ ==
239 ==
273 ==
240:: varlist
274:: varlist
241::
275::
@@ -259,13 +293,9 @@
259 %+ knee *prefix-expr
293 %+ knee *prefix-expr
260 |.
294 |.
261 ;~ pose
295 ;~ pose
262− %+ cook
296+ %+ cook |=([=var] [%var var]) parse-var
263− |=([=expr] [%expr expr])
264− (ifix [(just '(') (just ')')] (knee *expr |.(parse-expr)))
265 ::
297 ::
266− %+ cook
298+ parse-parened-expr
267− |=([=var] [%var var])
268− (knee *var |.(parse-var))
269 ==
299 ==
270++ print-prefix-expr
300++ print-prefix-expr
271 |= [=prefix-expr]
301 |= [=prefix-expr]
zod/luau/tests/foo.lua+3−3
@@ -1,10 +1,10 @@
1−foo = nil
1+foosjis = nil
2
2
3baz = bar[nil]
3baz = bar[nil]
4baz = bar
4baz = bar
5
5
6i = 3
6i = 3
7−i, a[i] = i+1, 20
7+i, a[i] = i+1, 20 >> 9
8−
9
8
9+;
10
10