on master help sign in
Got function call working
commit824add2e718419893a11b6f59738c657e7c1ecf2 authoriko <mail@iko.soy> dateTue 9 Jul 2024, 22:05 (2 years ago) parente47b21d
2 files changed+76−63
zod/luau/lib/lua.hoon+75−62 zod/luau/tests/foo.lua+1−1
zod/luau/lib/lua.hoon+75−62
@@ -16,8 +16,7 @@
1616 %blok (print-blok +.ast)
1717 ==
1818++ apex
19− %+ knee *ast
20− |.
19+ %^ tnee %apex ast
2120 %+ ifix [ws ws]
2221 ;~ pose
2322 (cook |=(=blok [%blok blok]) parse-blok)
@@ -36,8 +35,7 @@
3635 [%nil ~]
3736 ==
3837++ parse-atomic-expr
39− %+ knee *expr
40− |.
38+ %^ tnee %parse-atomic-expr expr
4139 ;~ pose
4240 (cold [%nil ~] (jest 'nil'))
4341 ::
@@ -56,14 +54,12 @@
5654 %+ cook
5755 |=(=table [%table table])
5856 parse-table
59− ::
6057 %+ cook
6158 |=(=string [%string string])
6259 parse-string
6360 ==
6461++ parse-expr-list
65− %+ knee *(interlist binop expr)
66− |.
62+ %^ tnee %parse-expr-list (interlist binop expr)
6763 %+ parse-interlist (ifix [ws ws] parse-binop) parse-atomic-expr
6864:: TODO: This is mock and should take operator priority into account.
6965::
@@ -75,9 +71,7 @@
7571 %double [%binop val.l sep.l (process-expr-list tail.l)]
7672 ==
7773++ parse-expr
78− ~& "parse-exp"
79− %+ knee *expr
80− |.
74+ %^ tnee %parse-expr expr
8175 %+ cook process-expr-list parse-expr-list
8276++ parse-parened-expr
8377 %+ cook
@@ -116,8 +110,7 @@
116110 "\""
117111 ==
118112++ parse-string
119− %+ knee *string
120− |.
113+ %^ tnee %parse-string string
121114 =>
122115 |%
123116 ++ parse-string
@@ -148,8 +141,7 @@
148141 "}"
149142 ==
150143++ parse-table
151− %+ knee *table
152− |.
144+ %^ tnee %parse-table table
153145 %+ cook
154146 |=([* =table *] table)
155147 ;~ (glue ws)
@@ -166,8 +158,7 @@
166158 %- commaed
167159 %+ turn field-list print-field
168160++ parse-field-list
169− %+ knee *field-list
170− |.
161+ %^ tnee %parse-field-list field-list
171162 =>
172163 |%
173164 ++ field-sep
@@ -207,6 +198,7 @@
207198++ parse-field
208199 %+ knee *field
209200 |.
201+ %^ tnee %parse-field field
210202 ;~ pose
211203 %+ cook
212204 |=([* key=expr * * val=expr] [%keyed key val])
@@ -282,8 +274,7 @@
282274 %concat ".."
283275 ==
284276++ parse-binop
285− %+ knee *binop
286− |.
277+ %^ tnee %parse-binop binop
287278 ;~ pose
288279 (cold %add (jest '+'))
289280 (cold %sub (jest '-'))
@@ -315,8 +306,7 @@
315306 [%float @rd]
316307 ==
317308++ parse-numeral
318− %+ knee *numeral
319− |.
309+ %^ tnee %parse-numeral numeral
320310 ;~ pose
321311 %+ cook
322312 |= x=@rd [%float x]
@@ -352,9 +342,7 @@
352342 %- commaed
353343 %+ turn exprlist print-expr
354344++ parse-exprlist
355− ~& "parse-exprlist"
356− %+ knee *exprlist
357− |.
345+ %^ tnee %parse-exprlist exprlist
358346 %+ most (ifix [ws ws] com) parse-expr
359347:: Var
360348::
@@ -386,8 +374,7 @@
386374 ==
387375 ==
388376++ parse-var
389− %+ knee *var
390− |.
377+ %^ tnee %parse-var var
391378 =>
392379 |%
393380 ++ parse-access
@@ -430,8 +417,7 @@
430417 %- commaed
431418 %+ turn varlist print-var
432419++ parse-varlist
433− %+ knee *varlist
434− |.
420+ %^ tnee %parse-varlist varlist
435421 %+ most (ifix [ws ws] com) parse-var
436422:: Prefix Expr
437423::
@@ -442,18 +428,14 @@
442428 [%var var]
443429 ==
444430++ parse-simple-prefix-expr
445− ~& "parse-simple-prefix-expr"
446− %+ knee *$%([%expr expr] [%var var])
447− |.
431+ %^ tnee %parse-simple-prefix-expr $%([%expr expr] [%var var])
448432 ;~ pose
449433 parse-parened-expr
450434 ::
451435 %+ cook |=([=var] [%var var]) parse-var
452436 ==
453437++ parse-prefix-expr
454− ~& "parse-prefix-expr"
455− %+ knee *prefix-expr
456− |.
438+ %^ tnee %parse-prefix-expr prefix-expr
457439 ;< prefix=$%([%expr expr] [%var var]) bind parse-simple-prefix-expr
458440 ;~ pose
459441 %+ cook |=(=functioncall [%call functioncall])
@@ -492,6 +474,7 @@
492474++ parse-stat
493475 %+ knee *stat
494476 |.
477+ %^ tnee %parse-stat stat
495478 ;~ pose
496479 (cold [%empty ~] (just ';'))
497480 ::
@@ -629,6 +612,7 @@
629612++ parse-if
630613 %+ knee *if
631614 |.
615+ %^ tnee %parse-if if
632616 %+ cook
633617 |= [* cond=expr * body=blok elsa=(list [cond=expr body=blok]) else=(unit blok) *]
634618 [cond body elsa else]
@@ -684,16 +668,17 @@
684668 ==
685669 ==
686670++ parse-functioncall
687− %+ knee *functioncall
688− |.
671+ %^ tnee %parse-functioncall functioncall
689672 ;< prefix=prefix-expr bind parse-prefix-expr
690− ~& > prefix
691− (parse-functioncall-args prefix)
673+ ;~ pose
674+ (parse-functioncall-args prefix)
675+ ::
676+ ?: ?=(%call -.prefix) (easy +.prefix) fail
677+ ==
692678++ parse-functioncall-args
693− ~& "parse-functioncall-args"
694679 |= =prefix-expr
695− %+ knee *functioncall
696− |.
680+ ~& prefix-expr
681+ %^ tnee %parse-functioncall-args functioncall
697682 ;~ pfix
698683 ws
699684 ;~ pose
@@ -724,9 +709,7 @@
724709 ")"
725710 ==
726711++ parse-args
727− ~& "parse-args"
728− %+ knee *args
729− |.
712+ %^ tnee %parse-args args
730713 ;~ pose
731714 %+ cook
732715 |= [* =exprlist *] exprlist
@@ -758,8 +741,7 @@
758741 "::"
759742 ==
760743++ parse-label
761− %+ knee *label
762− |.
744+ %^ tnee %parse-label label
763745 %+ cook
764746 |= [* =label *] label
765747 ;~ (glue ws)
@@ -780,10 +762,9 @@
780762 ?~ ret.blok ~
781763 ~[(print-ret u.ret.blok)]
782764++ parse-blok
783− %+ knee *blok
784− |.
765+ %^ tnee %parse-blok blok
785766 ;~ plug
786− (most wss parse-stat)
767+ (most ws parse-stat)
787768 ::
788769 %- punt
789770 ;~ pfix
@@ -803,8 +784,7 @@
803784 (print-exprlist ret)
804785 ==
805786++ parse-ret
806− %+ knee *ret
807− |.
787+ %^ tnee %parse-ret ret
808788 %+ cook
809789 |= [[* =exprlist] *] exprlist
810790 ;~ plug
@@ -822,16 +802,15 @@
822802 %- zing
823803 %+ join "," l
824804++ parse-name
825− %+ knee *name
826− |.
805+ :: %^ tnee %parse-name name
806+ :: |.
827807 =>
828808 |%
829809 ++ name-char ;~(pose name-fst-char dit:ab)
830810 ++ name-fst-char ;~(pose alf:ab (just '_'))
831811 --
832− %+ cook
833− |= =tape (crip tape)
834− ;~(plug name-fst-char (star name-char))
812+ %+ cook |= =tape (crip tape)
813+ ;~(less keyword ;~(plug name-fst-char (star name-char)))
835814++ show-s
836815 |=(s=@s `tape`[?:((syn:si s) %$ '-') (slag 2 (scow %ui (abs:si s)))])
837816++ show-u
@@ -855,8 +834,7 @@
855834 %+ cold ~
856835 %- plus w
857836++ parse-float
858− %+ knee *@rd
859− |.
837+ %^ tnee %parse-float @rd
860838 %+ cook ryld
861839 %+ cook royl-cell:so
862840 %+ sear
@@ -888,8 +866,7 @@
888866 ==
889867 ==
890868++ parse-hex-float
891− %+ knee *@rd
892− |.
869+ %^ tnee %parse-hex-float @rd
893870 =<
894871 %+ sear
895872 |= [* * int=tape frac=(unit tape) exp=(unit [exp-sign=? exp=@])]
@@ -925,9 +902,8 @@
925902 ==
926903 |%
927904 ++ hex-digit
928− %+ knee *char
929− |.
930− ;~ pose
905+ %^ tnee %hex-digit char
906+ ;~ pose
931907 (shim '0' '9')
932908 (shim 'a' 'f')
933909 (shim 'A' 'F')
@@ -939,4 +915,41 @@
939915 %- r-co:co
940916 %- rlyd
941917 x
918+++ keyword
919+ %+ cold ~
920+ ;~ pose
921+ (jest 'and')
922+ (jest 'break')
923+ (jest 'do')
924+ (jest 'else')
925+ (jest 'elseif')
926+ (jest 'end')
927+ (jest 'false')
928+ (jest 'for')
929+ (jest 'function')
930+ (jest 'goto')
931+ (jest 'if')
932+ (jest 'in')
933+ (jest 'local')
934+ (jest 'nil')
935+ (jest 'not')
936+ (jest 'or')
937+ (jest 'repeat')
938+ (jest 'return')
939+ (jest 'then')
940+ (jest 'true')
941+ (jest 'until')
942+ (jest 'while')
943+ ==
944+++ tnee
945+ |* [=term gar=mold sef=rule]
946+ |* tub=nail
947+ ^- (like gar)
948+ =/ trace &
949+ =/ foo ?: trace ~&([term q.tub] ~) ~
950+ =/ res (sef tub)
951+ ?. trace res
952+ ?~ q.res
953+ ~& [term %nope] res
954+ ~& > [term %ok] res
942955 --
zod/luau/tests/foo.lua+1−1
@@ -74,5 +74,5 @@ until true
7474
7575if l == 3 then a = a + 1 ; assert(getlocal(2, 1) == "(temporary)")
7676elseif l == 4 then a = a + 1; assert(getlocal(2, 1) == "A")
77+else ;
7778end
78−