on master help sign in
Simple floats
commit1bea1efb8fc880ade4f43f9bda530395a9d18ab1 authoriko <mail@iko.soy> dateThu 16 May 2024, 23:07 (2 years ago) parentc0191b6
2 files changed+69−21
zod/luau/lib/lua.hoon+47−4 zod/luau/tests/foo.lua+22−17
zod/luau/lib/lua.hoon+47−4
@@ -64,7 +64,7 @@
6464++ parse-expr-list
6565 %+ knee *(interlist binop expr)
6666 |.
67− %+ parse-interlist parse-binop parse-atomic-expr
67+ %+ parse-interlist (ifix [ws ws] parse-binop) parse-atomic-expr
6868:: TODO: This is mock and should take operator priority into account.
6969::
7070++ process-expr-list
@@ -311,12 +311,16 @@
311311+$ numeral
312312 $%
313313 [%int @u]
314− :: [%float @rd]
314+ [%float @rd]
315315 ==
316316++ parse-numeral
317317 %+ knee *numeral
318318 |.
319319 ;~ pose
320+ %+ cook
321+ |= x=@rd [%float x]
322+ parse-float
323+ ::
320324 %+ cook
321325 |= x=@u [%int x]
322326 ;~ pose
@@ -334,6 +338,7 @@
334338 ^- tape
335339 ?- -.num
336340 %int (show-u +.num)
341+ %float (show-float +.num)
337342 ==
338343:: exprlist
339344::
@@ -514,7 +519,6 @@
514519 ^- tape
515520 %- zing
516521 %+ join "," l
517−:: ++ gawn (cold ~ (plus ;~(pose vul gah)))
518522++ parse-name
519523 %+ knee *name
520524 |.
@@ -548,4 +552,43 @@
548552++ wss
549553 %+ cold ~
550554 %- plus w
551−--
555+++ parse-float
556+ %+ knee *@rd
557+ |.
558+ %+ cook ryld
559+ %+ cook royl-cell:so
560+ %+ sear
561+ |= [int=@ frac=(unit [@ @]) exp=(unit [exp-sign=? exp=@])]
562+ ?: ?=([~ ~] [frac exp]) ~
563+ %- some
564+ :*
565+ %d
566+ &
567+ int
568+ (fall frac [0 0])
569+ (fall exp [& 0])
570+ ==
571+ =/ moo
572+ |= a=tape
573+ :- (lent a)
574+ (scan a (bass 10 (plus sid:ab)))
575+ ;~ plug
576+ ;~ plug
577+ dim:ag
578+ ::
579+ (punt ;~(pfix dot (cook moo (plus (shim '0' '9')))))
580+ ::
581+ %- punt
582+ ;~ pfix
583+ (mask "eE")
584+ ;~(plug ;~(pose (cold | hep) (easy &)) dim:ag)
585+ ==
586+ ==
587+ ==
588+++ show-float
589+ |= x=@rd
590+ ^- tape
591+ %- r-co:co
592+ %- rlyd
593+ x
594+ --
zod/luau/tests/foo.lua+22−17
@@ -4,36 +4,41 @@ baz = bar[nil]
44baz = bar
55
66i = 3
7−i, a[i] = i+1, 20>>9
7+i, a[i] = i + 1, 20 >> 9
88
99hello = "hellodkndjвговшов"
1010
11−x = {[hello] = 8, hello = 12}
11+x = { [hello] = 8, hello = 12 }
1212
1313;
1414
1515test_cases = {
16− { 0x7fffffff, "2147483647" },
17− { 2147483647, "2147483647" },
16+ { 0x7fffffff, "2147483647" },
17+ { 2147483647, "2147483647" },
1818
19− { 0xffffffff, "4294967295" },
20− { 4294967295, "4294967295" },
19+ { 0xffffffff, "4294967295" },
20+ { 4294967295, "4294967295" },
2121
22− { 0x7fffffffffffffff, "9.2233720368548e+18" },
23− { 9223372036854775807, "9.2233720368548e+18" },
22+ { 0x7fffffffffffffff, "9.2233720368548e+18" },
23+ { 9223372036854775807, "9.2233720368548e+18" },
2424
25− { 0xffffffffffffffff, "1.844674407371e+19" },
25+ { 0xffffffffffffffff, "1.844674407371e+19" },
2626 { 18446744073709551615, "1.844674407371e+19" },
2727
28− { 0x100000000, "4294967296" },
29− { 4294967296, "4294967296" },
28+ { 0x100000000, "4294967296" },
29+ { 4294967296, "4294967296" },
3030
31− { 0x100000000000, "17592186044416" },
32− { 17592186044416, "17592186044416" },
31+ { 0x100000000000, "17592186044416" },
32+ { 17592186044416, "17592186044416" },
3333
34− { 0x80000000, "2147483648" },
35− { 2147483648, "2147483648" },
34+ { 0x80000000, "2147483648" },
35+ { 2147483648, "2147483648" },
3636
37− { 0x800000000000, "1.4073748835533e+14" },
38− { 140737488355328, "1.4073748835533e+14" },
37+ { 0x800000000000, "1.4073748835533e+14" },
38+ { 140737488355328, "1.4073748835533e+14" },
39+}
40+
41+foo = {
42+ 3.0, 3.1416, 314.16e-2, 0.31416E1, 34e1,
43+ 0x0.1E, 0xA23p-4, 0X1.921FB54442D18P+1
3944}