Ostatnio aktywny 1733109526

main.lua Surowy Playground
1pp = require "pprint"
2package.path = package.path .. ";./src/?.lua"
3local Lvera = require "src.lvera"
4local lua_generator = require "src.generators.lua"
5
6local lvera = Lvera.new()
7
8lvera:load("samples/hailstone.nv")
9
10lvera:add_pass(require "passes.ports" (lua_generator.ports))
11lvera:add_pass(require "passes.constants")
12lvera:add_pass(require "passes.eliminate-dead-code")
13
14lvera:compile(lua_generator)
15
zz.generated.lua Surowy Playground
1local min, max, huge = math.min, math.max, math.huge
2machine.counters = {
3 ["hailstone"] = 1,
4 ["x:27"] = 1,
5}
6function match(counters)
7 if counters["x:6"] > 0 then
8 acc = counters["x:6"]
9 counters["x:6"] = max(counters["x:6"] - acc, 0)
10 counters["x"] = counters["x"] + acc * 6
11 return true
12 end
13 if counters["x:3"] > 0 then
14 acc = counters["x:3"]
15 counters["x:3"] = max(counters["x:3"] - acc, 0)
16 counters["x"] = counters["x"] + acc * 3
17 return true
18 end
19 if counters["move"] > 0 and counters["2"] > 0 then
20 local acc = huge
21 acc = min(acc, counters["2"])
22 acc = min(acc, counters["move"])
23 counters["move"] = max(counters["move"] - acc, 0)
24 counters["2"] = max(counters["2"] - acc, 0)
25 counters["x"] = counters["x"] + acc * 1
26 counters["move"] = counters["move"] + acc * 1
27 return true
28 end
29 if counters["move"] > 0 and counters["1"] > 0 then
30 local acc = huge
31 acc = min(acc, counters["1"])
32 acc = min(acc, counters["move"])
33 counters["move"] = max(counters["move"] - acc, 0)
34 counters["1"] = max(counters["1"] - acc, 0)
35 counters["x"] = counters["x"] + acc * 1
36 return true
37 end
38 if counters["move"] > 0 then
39 acc = counters["move"]
40 counters["move"] = max(counters["move"] - acc, 0)
41 counters["hailstone"] = counters["hailstone"] + acc * 1
42 return true
43 end
44 if counters["odd"] > 0 and counters["2"] > 0 then
45 local acc = huge
46 acc = min(acc, counters["2"])
47 acc = min(acc, counters["odd"])
48 counters["odd"] = max(counters["odd"] - acc, 0)
49 counters["2"] = max(counters["2"] - acc, 0)
50 counters["x:6"] = counters["x:6"] + acc * 1
51 counters["odd"] = counters["odd"] + acc * 1
52 return true
53 end
54 if counters["odd"] > 0 then
55 acc = counters["odd"]
56 counters["odd"] = max(counters["odd"] - acc, 0)
57 counters["hailstone"] = counters["hailstone"] + acc * 1
58 counters["x"] = counters["x"] + acc * 1
59 return true
60 end
61 if counters["eval"] > 0 and counters["x"] > 0 and counters["1"] > 0 then
62 local acc = huge
63 acc = min(acc, counters["1"])
64 acc = min(acc, counters["eval"])
65 acc = min(acc, counters["x"])
66 counters["eval"] = max(counters["eval"] - acc, 0)
67 counters["x"] = max(counters["x"] - acc, 0)
68 counters["1"] = max(counters["1"] - acc, 0)
69 counters["2"] = counters["2"] + acc * 1
70 counters["eval"] = counters["eval"] + acc * 1
71 return true
72 end
73 if counters["eval"] > 0 and counters["x"] > 0 then
74 local acc = huge
75 acc = min(acc, counters["x"])
76 acc = min(acc, counters["eval"])
77 counters["eval"] = max(counters["eval"] - acc, 0)
78 counters["x"] = max(counters["x"] - acc, 0)
79 counters["1"] = counters["1"] + acc * 1
80 counters["eval"] = counters["eval"] + acc * 1
81 return true
82 end
83 if counters["eval"] > 0 and counters["2"] > 0 and counters["1"] > 0 then
84 local acc = huge
85 acc = min(acc, counters["1"])
86 acc = min(acc, counters["2"])
87 acc = min(acc, counters["eval"])
88 counters["eval"] = max(counters["eval"] - acc, 0)
89 counters["2"] = max(counters["2"] - acc, 0)
90 counters["1"] = max(counters["1"] - acc, 0)
91 counters["x:3"] = counters["x:3"] + acc * 1
92 counters["2"] = counters["2"] + acc * 1
93 counters["odd"] = counters["odd"] + acc * 1
94 return true
95 end
96 if counters["eval"] > 0 then
97 acc = counters["eval"]
98 counters["eval"] = max(counters["eval"] - acc, 0)
99 counters["move"] = counters["move"] + acc * 1
100 return true
101 end
102 if counters["hailstone"] > 0 then
103 acc = counters["hailstone"]
104 counters["hailstone"] = max(counters["hailstone"] - acc, 0)
105 counters["eval"] = counters["eval"] + acc * 1
106 counters["@show counters"] = counters["@show counters"] + acc * 1
107 return true
108 end
109 return false
110end
111return machine