on master help sign in
Added function calls
commit907ae4d2501ec5b5ee3e23a574eabd1ec945eaf9 authoriko <mail@iko.soy> dateSat 18 May 2024, 00:14 (2 years ago) parent996ab8b
2 files changed+92
zod/luau/lib/lua.hoon+86 zod/luau/tests/foo.lua+6
zod/luau/lib/lua.hoon+86
@@ -465,6 +465,7 @@
465465 [%blok blok]
466466 [%asmnt varlist exprlist]
467467 [%label label]
468+ [%func-call functioncall]
468469 [%empty ~]
469470 ==
470471++ parse-stat
@@ -492,6 +493,10 @@
492493 (just '=')
493494 parse-exprlist
494495 ==
496+ ::
497+ %+ cook
498+ |= =functioncall [%func-call functioncall]
499+ parse-functioncall
495500 ==
496501++ print-stat
497502 |= [=stat]
@@ -507,7 +512,88 @@
507512 (commaed (turn +>.stat print-expr))
508513 ==
509514 %label (print-label +.stat)
515+ %func-call (print-functioncall +.stat)
516+ ==
517+:: functioncall
518+::
519++$ functioncall
520+ $%
521+ [%call func=prefix-expr =args]
522+ [%method obj=prefix-expr method=name =args]
523+ ==
524+++ print-functioncall
525+ |= call=functioncall
526+ ^- tape
527+ ?- -.call
528+ %call
529+ %- zing
530+ :~
531+ (print-prefix-expr func.call)
532+ (print-args args.call)
533+ ==
534+ %method
535+ %- zing
536+ :~
537+ (print-prefix-expr obj.call)
538+ ":"
539+ (trip method.call)
540+ (print-args args.call)
541+ ==
510542 ==
543+++ parse-functioncall
544+ %+ knee *functioncall
545+ |.
546+ ;~ pose
547+ %+ cook
548+ |= [func=prefix-expr =args] [%call func args]
549+ ;~ (glue ws)
550+ parse-prefix-expr
551+ parse-args
552+ ==
553+ ::
554+ %+ cook
555+ |= [obj=prefix-expr * method=name =args]
556+ [%method obj method args]
557+ ;~ (glue ws)
558+ parse-prefix-expr
559+ (just ':')
560+ parse-name
561+ parse-args
562+ ==
563+ ==
564+:: args
565+::
566++$ args exprlist
567+++ print-args
568+ |= =args
569+ ^- tape
570+ %- zing
571+ :~
572+ "("
573+ (print-exprlist args)
574+ ")"
575+ ==
576+++ parse-args
577+ %+ knee *args
578+ |.
579+ ;~ pose
580+ %+ cook
581+ |= [* =exprlist *] exprlist
582+ ;~ (glue ws)
583+ (just '(')
584+ parse-exprlist
585+ (just ')')
586+ ==
587+ ::
588+ %+ cook
589+ |= =table ~[[%table table]]
590+ parse-table
591+ ::
592+ %+ cook
593+ |= =string ~[[%string string]]
594+ parse-string
595+ ==
596+::
511597:: label
512598::
513599+$ label name
zod/luau/tests/foo.lua+6
@@ -49,3 +49,9 @@ do
4949 foo = 1
5050 return 8, foo;
5151end
52+
53+print('the way of the future')
54+
55+print 'hello'
56+
57+h{key1 = 'Sonmi~451'}