on master help sign in
unop
commit9c4884174fca07bcb56c4e74f6c380d4b8bd4c69 authoriko <mail@iko.soy> dateTue 23 Jul 2024, 22:29 (2 years ago) parent81ab969
4 files changed+48
zod/luau/lib/lua/parser.hoon+19 zod/luau/lib/lua/printer.hoon+18 zod/luau/sur/lua.hoon+8 zod/luau/tests/foo.lua+3
zod/luau/lib/lua/parser.hoon+19
@@ -45,6 +45,25 @@ apex
4545 wss
4646 parse-funcbody
4747 ==
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+ ==
4867 ==
4968:: Parse expressions separated by binary operators
5069::
zod/luau/lib/lua/printer.hoon+18
@@ -34,6 +34,24 @@ print
3434 %string (print-string +.expr)
3535 %wildcard "..."
3636 %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 "~"
3755 ==
3856:: string
3957::
zod/luau/sur/lua.hoon+8
@@ -12,6 +12,7 @@
1212 [%string string]
1313 [%binop expr binop expr]
1414 [%prefix-expr prefix-expr]
15+ [%unop op=unop =expr]
1516 [%num numeral]
1617 [%table table]
1718 [%true ~]
@@ -26,6 +27,13 @@
2627 [%keyed expr expr]
2728 [%unkeyed expr]
2829 ==
30++$ unop
31+ $?
32+ %minus
33+ %not
34+ %hax
35+ %sig
36+ ==
2937+$ binop
3038 $?
3139 %add
zod/luau/tests/foo.lua+3
@@ -107,3 +107,6 @@ local b = require('mod2')
107107function adder(x)
108108 return function (y) return x + y end
109109end
110+
111+
112+x = -1 + 8