on master help sign in
unop
9c48841iko
zod/luau/lib/lua/parser.hoon+19
@@ -45,6 +45,25 @@ apex
45 wss
45 wss
46 parse-funcbody
46 parse-funcbody
47 ==
47 ==
48+ ::
49+ %+ cook |= [=unop =expr] [%unop unop expr]
50+ ;~ plug
51+ ;~ pose
52+ ;~ sfix
53+ ;~ pose
54+ (cold %minus (just '-'))
55+ (cold %sig (just '~'))
56+ (cold %hax (just '#'))
57+ ==
58+ ws
59+ ==
60+ ;~ sfix
61+ (cold %not (jest 'not'))
62+ wss
63+ ==
64+ ==
65+ %+ knee *expr |.(parse-expr)
66+ ==
48 ==
67 ==
49:: Parse expressions separated by binary operators
68:: Parse expressions separated by binary operators
50::
69::
zod/luau/lib/lua/printer.hoon+18
@@ -34,6 +34,24 @@ print
34 %string (print-string +.expr)
34 %string (print-string +.expr)
35 %wildcard "..."
35 %wildcard "..."
36 %functiondef (print-funcbody +.expr)
36 %functiondef (print-funcbody +.expr)
37+ %unop
38+ %- zing
39+ :~
40+ (print-unop +<.expr)
41+ " "
42+ (print-expr +>.expr)
43+ ==
44+ ==
45+:: unop
46+::
47+++ print-unop
48+ |= =unop
49+ ^- tape
50+ ?- unop
51+ %minus "-"
52+ %not "not"
53+ %hax "#"
54+ %sig "~"
37 ==
55 ==
38:: string
56:: string
39::
57::
zod/luau/sur/lua.hoon+8
@@ -12,6 +12,7 @@
12 [%string string]
12 [%string string]
13 [%binop expr binop expr]
13 [%binop expr binop expr]
14 [%prefix-expr prefix-expr]
14 [%prefix-expr prefix-expr]
15+ [%unop op=unop =expr]
15 [%num numeral]
16 [%num numeral]
16 [%table table]
17 [%table table]
17 [%true ~]
18 [%true ~]
@@ -26,6 +27,13 @@
26 [%keyed expr expr]
27 [%keyed expr expr]
27 [%unkeyed expr]
28 [%unkeyed expr]
28 ==
29 ==
30++$ unop
31+ $?
32+ %minus
33+ %not
34+ %hax
35+ %sig
36+ ==
29+$ binop
37+$ binop
30 $?
38 $?
31 %add
39 %add
zod/luau/tests/foo.lua+3
@@ -107,3 +107,6 @@ local b = require('mod2')
107function adder(x)
107function adder(x)
108 return function (y) return x + y end
108 return function (y) return x + y end
109end
109end
110+
111+
112+x = -1 + 8