on master help sign in
Added function calls
907ae4diko
zod/luau/lib/lua.hoon+86
@@ -465,6 +465,7 @@
465 [%blok blok]
465 [%blok blok]
466 [%asmnt varlist exprlist]
466 [%asmnt varlist exprlist]
467 [%label label]
467 [%label label]
468+ [%func-call functioncall]
468 [%empty ~]
469 [%empty ~]
469 ==
470 ==
470++ parse-stat
471++ parse-stat
@@ -492,6 +493,10 @@
492 (just '=')
493 (just '=')
493 parse-exprlist
494 parse-exprlist
494 ==
495 ==
496+ ::
497+ %+ cook
498+ |= =functioncall [%func-call functioncall]
499+ parse-functioncall
495 ==
500 ==
496++ print-stat
501++ print-stat
497 |= [=stat]
502 |= [=stat]
@@ -507,7 +512,88 @@
507 (commaed (turn +>.stat print-expr))
512 (commaed (turn +>.stat print-expr))
508 ==
513 ==
509 %label (print-label +.stat)
514 %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+ ==
510 ==
542 ==
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+::
511:: label
597:: label
512::
598::
513+$ label name
599+$ label name
zod/luau/tests/foo.lua+6
@@ -49,3 +49,9 @@ do
49 foo = 1
49 foo = 1
50 return 8, foo;
50 return 8, foo;
51end
51end
52+
53+print('the way of the future')
54+
55+print 'hello'
56+
57+h{key1 = 'Sonmi~451'}