diff --git a/.gitignore b/.gitignore
index 17faeeba..e3f31117 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,11 +24,14 @@ cabal.project.local~
.idea
*.iml
-build/
.gradle
+build/
gradle/
Gemfile.lock
_site
.hlint-*/
+out/
+
+/stan.html
diff --git a/.output/actual/examples/wsa/il/linkAppFile/from-eas/bottles.il b/.output/actual/examples/wsa/il/linkAppFile/from-eas/bottles.il
index dfb92646..5ae5c8f1 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/from-eas/bottles.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/from-eas/bottles.il
@@ -1 +1,45 @@
-[Push (Literal 3),Mark "LOOP",Dup,OutputNum,PushS (Literal " bottles of beer on the wall, "),Call "prints",Dup,OutputNum,PushS (Literal " bottles of beer"),Call "printsln",PushS (Literal "Take one down, pass it around"),Call "printsln",Push (Literal 1),Sub Nothing,Dup,OutputNum,PushS (Literal " bottles of beer on the wall"),Call "printsln",PushS (Literal ""),Call "printsln",Dup,BranchNZ "LOOP",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Push
+ ( Literal 3 )
+, Mark "LOOP"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall, " )
+, Call "prints"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer" )
+, Call "printsln"
+, PushS
+ ( Literal "Take one down, pass it around" )
+, Call "printsln"
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall" )
+, Call "printsln"
+, PushS
+ ( Literal "" )
+, Call "printsln"
+, Dup
+, BranchNZ "LOOP"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello.il b/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello.il
index 7a907ca8..04717598 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello.il
@@ -1 +1,44 @@
-[Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,End]
\ No newline at end of file
+[ Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, End
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello2.il b/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello2.il
index d82da1bb..e353881e 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello2.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello2.il
@@ -1 +1,47 @@
-[Push (Literal 0),Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),Call "prints",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Push
+ ( Literal 0 )
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, Call "prints"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello4.il b/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello4.il
index 46e34b94..6545f652 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello4.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/from-eas/hello4.il
@@ -1 +1,19 @@
-[PushS (Literal "Hello, world!"),Call "printsln",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ PushS
+ ( Literal "Hello, world!" )
+, Call "printsln"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkAppFile/from-eas/pip.il b/.output/actual/examples/wsa/il/linkAppFile/from-eas/pip.il
index de1a133f..829f55f1 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/from-eas/pip.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/from-eas/pip.il
@@ -1 +1,14 @@
-[Mark "LOOP",Dup,Push (Literal 0),Push (Literal 1),Sub Nothing,Sub Nothing,BranchNZ "WRITE",End,Mark "WRITE",OutputChar,Branch "LOOP"]
\ No newline at end of file
+[ Mark "LOOP"
+, Dup
+, Push
+ ( Literal 0 )
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Sub Nothing
+, BranchNZ "WRITE"
+, End
+, Mark "WRITE"
+, OutputChar
+, Branch "LOOP"
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkAppFile/from-eas/true.il b/.output/actual/examples/wsa/il/linkAppFile/from-eas/true.il
index f93ec408..7f93ef7d 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/from-eas/true.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/from-eas/true.il
@@ -1 +1 @@
-[End]
\ No newline at end of file
+[ End ]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkAppFile/original/prim.il b/.output/actual/examples/wsa/il/linkAppFile/original/prim.il
index 270eecdf..6ff9a1fc 100644
--- a/.output/actual/examples/wsa/il/linkAppFile/original/prim.il
+++ b/.output/actual/examples/wsa/il/linkAppFile/original/prim.il
@@ -1 +1,120 @@
-[Mark "st",PushS (Literal "prim numbers [2-100]"),Call "printsln",Push (Literal 0),Mark "f_start_1",Test 100,BranchZ "f_finished_1",Dup,Add (Just (Literal 100)),Push (Literal 1),Store Nothing,Add (Just (Literal 1)),Branch "f_start_1",Mark "f_finished_1",Pop,Push (Literal 2),Mark "f_start_2",Test 11,BranchZ "f_finished_2",Push (Literal 2),Mark "f_start_3",Test 100,BranchZ "f_finished_3",Dup,Push (Literal 1),Swap,Store Nothing,Swap,Dup,Push (Literal 2),Swap,Store Nothing,Swap,Load (Just (Literal 1)),Load (Just (Literal 2)),Mul Nothing,Add (Just (Literal 100)),Push (Literal 0),Store Nothing,Add (Just (Literal 1)),Branch "f_start_3",Mark "f_finished_3",Pop,Add (Just (Literal 1)),Branch "f_start_2",Mark "f_finished_2",Pop,Push (Literal 2),Mark "f_start_4",Test 100,BranchZ "f_finished_4",Dup,Add (Just (Literal 100)),Load Nothing,BranchZ "nodraw",Dup,OutputNum,PushS (Literal " "),Call "prints",Mark "nodraw",Add (Just (Literal 1)),Branch "f_start_4",Mark "f_finished_4",Pop,Push (Literal 0),Call "printsln",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Mark "st"
+, PushS
+ ( Literal "prim numbers [2-100]" )
+, Call "printsln"
+, Push
+ ( Literal 0 )
+, Mark "f_start_1"
+, Test 100
+, BranchZ "f_finished_1"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 1 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_1"
+, Mark "f_finished_1"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_2"
+, Test 11
+, BranchZ "f_finished_2"
+, Push
+ ( Literal 2 )
+, Mark "f_start_3"
+, Test 100
+, BranchZ "f_finished_3"
+, Dup
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Swap
+, Dup
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Swap
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Mul Nothing
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_3"
+, Mark "f_finished_3"
+, Pop
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_2"
+, Mark "f_finished_2"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_4"
+, Test 100
+, BranchZ "f_finished_4"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Load Nothing
+, BranchZ "nodraw"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " " )
+, Call "prints"
+, Mark "nodraw"
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_4"
+, Mark "f_finished_4"
+, Pop
+, Push
+ ( Literal 0 )
+, Call "printsln"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkLibFile/io.il b/.output/actual/examples/wsa/il/linkLibFile/io.il
index d0e7bba1..a4542d9e 100644
--- a/.output/actual/examples/wsa/il/linkLibFile/io.il
+++ b/.output/actual/examples/wsa/il/linkLibFile/io.il
@@ -1 +1,15 @@
-[Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/linkLibFile/memory.il b/.output/actual/examples/wsa/il/linkLibFile/memory.il
index 74ede482..ebc82bf6 100644
--- a/.output/actual/examples/wsa/il/linkLibFile/memory.il
+++ b/.output/actual/examples/wsa/il/linkLibFile/memory.il
@@ -1 +1,205 @@
-[Mark "memcopy",Mark "mem_copy",Mark "mem_move",Push (Literal 3),Swap,Store Nothing,Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Load (Just (Literal 3)),BranchNP "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchZ "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchM "memcopy_loop_dest_greater_source_begin",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_source_greater_dest",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_dest_greater_source_begin",Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Mark "memcopy_loop_dest_greater_source",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_dest_greater_source",Mark "memcopy_end",Return,Mark "mem_zero",Mark "mem_zero_start",Dup,BranchZ "mem_zero_end",Swap,Dup,Push (Literal 0),Store Nothing,Push (Literal 1),Add Nothing,Swap,Push (Literal 1),Sub Nothing,Branch "mem_zero_start",Mark "mem_zero_end",Pop,Pop,Return,Mark "numeriere",Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Push (Literal 1),Load Nothing,Mark "numeriere_start",Dup,Dup,Store Nothing,Push (Literal 1),Add Nothing,Dup,Push (Literal 2),Load Nothing,Sub Nothing,BranchZ "numeriere_end",Branch "numeriere_start",Mark "numeriere_end",Pop,Return]
\ No newline at end of file
+[ Mark "memcopy"
+, Mark "mem_copy"
+, Mark "mem_move"
+, Push
+ ( Literal 3 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchNP "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchZ "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchM "memcopy_loop_dest_greater_source_begin"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_source_greater_dest"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_dest_greater_source_begin"
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Mark "memcopy_loop_dest_greater_source"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_dest_greater_source"
+, Mark "memcopy_end"
+, Return
+, Mark "mem_zero"
+, Mark "mem_zero_start"
+, Dup
+, BranchZ "mem_zero_end"
+, Swap
+, Dup
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Swap
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Branch "mem_zero_start"
+, Mark "mem_zero_end"
+, Pop
+, Pop
+, Return
+, Mark "numeriere"
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Mark "numeriere_start"
+, Dup
+, Dup
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Dup
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Sub Nothing
+, BranchZ "numeriere_end"
+, Branch "numeriere_start"
+, Mark "numeriere_end"
+, Pop
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il
index c254e8f4..c8a36072 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il
@@ -1 +1,32 @@
-[Include "io",Push (Literal 3),Mark "LOOP",Dup,OutputNum,PushS (Literal " bottles of beer on the wall, "),Call "prints",Dup,OutputNum,PushS (Literal " bottles of beer"),Call "printsln",PushS (Literal "Take one down, pass it around"),Call "printsln",Push (Literal 1),Sub Nothing,Dup,OutputNum,PushS (Literal " bottles of beer on the wall"),Call "printsln",PushS (Literal ""),Call "printsln",Dup,BranchNZ "LOOP",End]
\ No newline at end of file
+[ Include "io"
+, Push
+ ( Literal 3 )
+, Mark "LOOP"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall, " )
+, Call "prints"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer" )
+, Call "printsln"
+, PushS
+ ( Literal "Take one down, pass it around" )
+, Call "printsln"
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall" )
+, Call "printsln"
+, PushS
+ ( Literal "" )
+, Call "printsln"
+, Dup
+, BranchNZ "LOOP"
+, End
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello.il b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello.il
index 7a907ca8..04717598 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello.il
@@ -1 +1,44 @@
-[Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,End]
\ No newline at end of file
+[ Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, End
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il
index 00e91327..1cd343c3 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il
@@ -1 +1,34 @@
-[Include "io",Push (Literal 0),Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),Call "prints",End]
\ No newline at end of file
+[ Include "io"
+, Push
+ ( Literal 0 )
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, Call "prints"
+, End
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il
index a1afdd2e..81db1569 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il
@@ -1 +1,6 @@
-[Include "io",PushS (Literal "Hello, world!"),Call "printsln",End]
\ No newline at end of file
+[ Include "io"
+, PushS
+ ( Literal "Hello, world!" )
+, Call "printsln"
+, End
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/pip.il b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/pip.il
index de1a133f..829f55f1 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/pip.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/pip.il
@@ -1 +1,14 @@
-[Mark "LOOP",Dup,Push (Literal 0),Push (Literal 1),Sub Nothing,Sub Nothing,BranchNZ "WRITE",End,Mark "WRITE",OutputChar,Branch "LOOP"]
\ No newline at end of file
+[ Mark "LOOP"
+, Dup
+, Push
+ ( Literal 0 )
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Sub Nothing
+, BranchNZ "WRITE"
+, End
+, Mark "WRITE"
+, OutputChar
+, Branch "LOOP"
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/true.il b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/true.il
index f93ec408..7f93ef7d 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/true.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/from-eas/true.il
@@ -1 +1 @@
-[End]
\ No newline at end of file
+[ End ]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyApp/original/prim.il b/.output/actual/examples/wsa/il/parseAssemblyApp/original/prim.il
index 06495869..2a8c9ace 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyApp/original/prim.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyApp/original/prim.il
@@ -1 +1,107 @@
-[Include "io",Mark "st",PushS (Literal "prim numbers [2-100]"),Call "printsln",Push (Literal 0),Mark "f_start_1",Test 100,BranchZ "f_finished_1",Dup,Add (Just (Literal 100)),Push (Literal 1),Store Nothing,Add (Just (Literal 1)),Branch "f_start_1",Mark "f_finished_1",Pop,Push (Literal 2),Mark "f_start_2",Test 11,BranchZ "f_finished_2",Push (Literal 2),Mark "f_start_3",Test 100,BranchZ "f_finished_3",Dup,Push (Literal 1),Swap,Store Nothing,Swap,Dup,Push (Literal 2),Swap,Store Nothing,Swap,Load (Just (Literal 1)),Load (Just (Literal 2)),Mul Nothing,Add (Just (Literal 100)),Push (Literal 0),Store Nothing,Add (Just (Literal 1)),Branch "f_start_3",Mark "f_finished_3",Pop,Add (Just (Literal 1)),Branch "f_start_2",Mark "f_finished_2",Pop,Push (Literal 2),Mark "f_start_4",Test 100,BranchZ "f_finished_4",Dup,Add (Just (Literal 100)),Load Nothing,BranchZ "nodraw",Dup,OutputNum,PushS (Literal " "),Call "prints",Mark "nodraw",Add (Just (Literal 1)),Branch "f_start_4",Mark "f_finished_4",Pop,Push (Literal 0),Call "printsln",End]
\ No newline at end of file
+[ Include "io"
+, Mark "st"
+, PushS
+ ( Literal "prim numbers [2-100]" )
+, Call "printsln"
+, Push
+ ( Literal 0 )
+, Mark "f_start_1"
+, Test 100
+, BranchZ "f_finished_1"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 1 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_1"
+, Mark "f_finished_1"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_2"
+, Test 11
+, BranchZ "f_finished_2"
+, Push
+ ( Literal 2 )
+, Mark "f_start_3"
+, Test 100
+, BranchZ "f_finished_3"
+, Dup
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Swap
+, Dup
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Swap
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Mul Nothing
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_3"
+, Mark "f_finished_3"
+, Pop
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_2"
+, Mark "f_finished_2"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_4"
+, Test 100
+, BranchZ "f_finished_4"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Load Nothing
+, BranchZ "nodraw"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " " )
+, Call "prints"
+, Mark "nodraw"
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_4"
+, Mark "f_finished_4"
+, Pop
+, Push
+ ( Literal 0 )
+, Call "printsln"
+, End
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyLib/io.il b/.output/actual/examples/wsa/il/parseAssemblyLib/io.il
index d0e7bba1..a4542d9e 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyLib/io.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyLib/io.il
@@ -1 +1,15 @@
-[Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/actual/examples/wsa/il/parseAssemblyLib/memory.il b/.output/actual/examples/wsa/il/parseAssemblyLib/memory.il
index 74ede482..ebc82bf6 100644
--- a/.output/actual/examples/wsa/il/parseAssemblyLib/memory.il
+++ b/.output/actual/examples/wsa/il/parseAssemblyLib/memory.il
@@ -1 +1,205 @@
-[Mark "memcopy",Mark "mem_copy",Mark "mem_move",Push (Literal 3),Swap,Store Nothing,Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Load (Just (Literal 3)),BranchNP "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchZ "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchM "memcopy_loop_dest_greater_source_begin",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_source_greater_dest",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_dest_greater_source_begin",Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Mark "memcopy_loop_dest_greater_source",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_dest_greater_source",Mark "memcopy_end",Return,Mark "mem_zero",Mark "mem_zero_start",Dup,BranchZ "mem_zero_end",Swap,Dup,Push (Literal 0),Store Nothing,Push (Literal 1),Add Nothing,Swap,Push (Literal 1),Sub Nothing,Branch "mem_zero_start",Mark "mem_zero_end",Pop,Pop,Return,Mark "numeriere",Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Push (Literal 1),Load Nothing,Mark "numeriere_start",Dup,Dup,Store Nothing,Push (Literal 1),Add Nothing,Dup,Push (Literal 2),Load Nothing,Sub Nothing,BranchZ "numeriere_end",Branch "numeriere_start",Mark "numeriere_end",Pop,Return]
\ No newline at end of file
+[ Mark "memcopy"
+, Mark "mem_copy"
+, Mark "mem_move"
+, Push
+ ( Literal 3 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchNP "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchZ "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchM "memcopy_loop_dest_greater_source_begin"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_source_greater_dest"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_dest_greater_source_begin"
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Mark "memcopy_loop_dest_greater_source"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_dest_greater_source"
+, Mark "memcopy_end"
+, Return
+, Mark "mem_zero"
+, Mark "mem_zero_start"
+, Dup
+, BranchZ "mem_zero_end"
+, Swap
+, Dup
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Swap
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Branch "mem_zero_start"
+, Mark "mem_zero_end"
+, Pop
+, Pop
+, Return
+, Mark "numeriere"
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Mark "numeriere_start"
+, Dup
+, Dup
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Dup
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Sub Nothing
+, BranchZ "numeriere_end"
+, Branch "numeriere_start"
+, Mark "numeriere_end"
+, Pop
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/from-eas/bottles.il b/.output/golden/examples/wsa/il/linkAppFile/from-eas/bottles.il
index dfb92646..5ae5c8f1 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/from-eas/bottles.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/from-eas/bottles.il
@@ -1 +1,45 @@
-[Push (Literal 3),Mark "LOOP",Dup,OutputNum,PushS (Literal " bottles of beer on the wall, "),Call "prints",Dup,OutputNum,PushS (Literal " bottles of beer"),Call "printsln",PushS (Literal "Take one down, pass it around"),Call "printsln",Push (Literal 1),Sub Nothing,Dup,OutputNum,PushS (Literal " bottles of beer on the wall"),Call "printsln",PushS (Literal ""),Call "printsln",Dup,BranchNZ "LOOP",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Push
+ ( Literal 3 )
+, Mark "LOOP"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall, " )
+, Call "prints"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer" )
+, Call "printsln"
+, PushS
+ ( Literal "Take one down, pass it around" )
+, Call "printsln"
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall" )
+, Call "printsln"
+, PushS
+ ( Literal "" )
+, Call "printsln"
+, Dup
+, BranchNZ "LOOP"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello.il b/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello.il
index 7a907ca8..04717598 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello.il
@@ -1 +1,44 @@
-[Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,End]
\ No newline at end of file
+[ Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, End
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello2.il b/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello2.il
index d82da1bb..e353881e 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello2.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello2.il
@@ -1 +1,47 @@
-[Push (Literal 0),Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),Call "prints",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Push
+ ( Literal 0 )
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, Call "prints"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello4.il b/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello4.il
index 46e34b94..6545f652 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello4.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/from-eas/hello4.il
@@ -1 +1,19 @@
-[PushS (Literal "Hello, world!"),Call "printsln",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ PushS
+ ( Literal "Hello, world!" )
+, Call "printsln"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/from-eas/pip.il b/.output/golden/examples/wsa/il/linkAppFile/from-eas/pip.il
index de1a133f..829f55f1 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/from-eas/pip.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/from-eas/pip.il
@@ -1 +1,14 @@
-[Mark "LOOP",Dup,Push (Literal 0),Push (Literal 1),Sub Nothing,Sub Nothing,BranchNZ "WRITE",End,Mark "WRITE",OutputChar,Branch "LOOP"]
\ No newline at end of file
+[ Mark "LOOP"
+, Dup
+, Push
+ ( Literal 0 )
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Sub Nothing
+, BranchNZ "WRITE"
+, End
+, Mark "WRITE"
+, OutputChar
+, Branch "LOOP"
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/from-eas/true.il b/.output/golden/examples/wsa/il/linkAppFile/from-eas/true.il
index f93ec408..7f93ef7d 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/from-eas/true.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/from-eas/true.il
@@ -1 +1 @@
-[End]
\ No newline at end of file
+[ End ]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkAppFile/original/prim.il b/.output/golden/examples/wsa/il/linkAppFile/original/prim.il
index 270eecdf..6ff9a1fc 100644
--- a/.output/golden/examples/wsa/il/linkAppFile/original/prim.il
+++ b/.output/golden/examples/wsa/il/linkAppFile/original/prim.il
@@ -1 +1,120 @@
-[Mark "st",PushS (Literal "prim numbers [2-100]"),Call "printsln",Push (Literal 0),Mark "f_start_1",Test 100,BranchZ "f_finished_1",Dup,Add (Just (Literal 100)),Push (Literal 1),Store Nothing,Add (Just (Literal 1)),Branch "f_start_1",Mark "f_finished_1",Pop,Push (Literal 2),Mark "f_start_2",Test 11,BranchZ "f_finished_2",Push (Literal 2),Mark "f_start_3",Test 100,BranchZ "f_finished_3",Dup,Push (Literal 1),Swap,Store Nothing,Swap,Dup,Push (Literal 2),Swap,Store Nothing,Swap,Load (Just (Literal 1)),Load (Just (Literal 2)),Mul Nothing,Add (Just (Literal 100)),Push (Literal 0),Store Nothing,Add (Just (Literal 1)),Branch "f_start_3",Mark "f_finished_3",Pop,Add (Just (Literal 1)),Branch "f_start_2",Mark "f_finished_2",Pop,Push (Literal 2),Mark "f_start_4",Test 100,BranchZ "f_finished_4",Dup,Add (Just (Literal 100)),Load Nothing,BranchZ "nodraw",Dup,OutputNum,PushS (Literal " "),Call "prints",Mark "nodraw",Add (Just (Literal 1)),Branch "f_start_4",Mark "f_finished_4",Pop,Push (Literal 0),Call "printsln",End,Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Mark "st"
+, PushS
+ ( Literal "prim numbers [2-100]" )
+, Call "printsln"
+, Push
+ ( Literal 0 )
+, Mark "f_start_1"
+, Test 100
+, BranchZ "f_finished_1"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 1 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_1"
+, Mark "f_finished_1"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_2"
+, Test 11
+, BranchZ "f_finished_2"
+, Push
+ ( Literal 2 )
+, Mark "f_start_3"
+, Test 100
+, BranchZ "f_finished_3"
+, Dup
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Swap
+, Dup
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Swap
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Mul Nothing
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_3"
+, Mark "f_finished_3"
+, Pop
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_2"
+, Mark "f_finished_2"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_4"
+, Test 100
+, BranchZ "f_finished_4"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Load Nothing
+, BranchZ "nodraw"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " " )
+, Call "prints"
+, Mark "nodraw"
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_4"
+, Mark "f_finished_4"
+, Pop
+, Push
+ ( Literal 0 )
+, Call "printsln"
+, End
+, Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkLibFile/io.il b/.output/golden/examples/wsa/il/linkLibFile/io.il
index d0e7bba1..a4542d9e 100644
--- a/.output/golden/examples/wsa/il/linkLibFile/io.il
+++ b/.output/golden/examples/wsa/il/linkLibFile/io.il
@@ -1 +1,15 @@
-[Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/linkLibFile/memory.il b/.output/golden/examples/wsa/il/linkLibFile/memory.il
index 74ede482..ebc82bf6 100644
--- a/.output/golden/examples/wsa/il/linkLibFile/memory.il
+++ b/.output/golden/examples/wsa/il/linkLibFile/memory.il
@@ -1 +1,205 @@
-[Mark "memcopy",Mark "mem_copy",Mark "mem_move",Push (Literal 3),Swap,Store Nothing,Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Load (Just (Literal 3)),BranchNP "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchZ "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchM "memcopy_loop_dest_greater_source_begin",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_source_greater_dest",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_dest_greater_source_begin",Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Mark "memcopy_loop_dest_greater_source",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_dest_greater_source",Mark "memcopy_end",Return,Mark "mem_zero",Mark "mem_zero_start",Dup,BranchZ "mem_zero_end",Swap,Dup,Push (Literal 0),Store Nothing,Push (Literal 1),Add Nothing,Swap,Push (Literal 1),Sub Nothing,Branch "mem_zero_start",Mark "mem_zero_end",Pop,Pop,Return,Mark "numeriere",Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Push (Literal 1),Load Nothing,Mark "numeriere_start",Dup,Dup,Store Nothing,Push (Literal 1),Add Nothing,Dup,Push (Literal 2),Load Nothing,Sub Nothing,BranchZ "numeriere_end",Branch "numeriere_start",Mark "numeriere_end",Pop,Return]
\ No newline at end of file
+[ Mark "memcopy"
+, Mark "mem_copy"
+, Mark "mem_move"
+, Push
+ ( Literal 3 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchNP "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchZ "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchM "memcopy_loop_dest_greater_source_begin"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_source_greater_dest"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_dest_greater_source_begin"
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Mark "memcopy_loop_dest_greater_source"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_dest_greater_source"
+, Mark "memcopy_end"
+, Return
+, Mark "mem_zero"
+, Mark "mem_zero_start"
+, Dup
+, BranchZ "mem_zero_end"
+, Swap
+, Dup
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Swap
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Branch "mem_zero_start"
+, Mark "mem_zero_end"
+, Pop
+, Pop
+, Return
+, Mark "numeriere"
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Mark "numeriere_start"
+, Dup
+, Dup
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Dup
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Sub Nothing
+, BranchZ "numeriere_end"
+, Branch "numeriere_start"
+, Mark "numeriere_end"
+, Pop
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il
index c254e8f4..c8a36072 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/bottles.il
@@ -1 +1,32 @@
-[Include "io",Push (Literal 3),Mark "LOOP",Dup,OutputNum,PushS (Literal " bottles of beer on the wall, "),Call "prints",Dup,OutputNum,PushS (Literal " bottles of beer"),Call "printsln",PushS (Literal "Take one down, pass it around"),Call "printsln",Push (Literal 1),Sub Nothing,Dup,OutputNum,PushS (Literal " bottles of beer on the wall"),Call "printsln",PushS (Literal ""),Call "printsln",Dup,BranchNZ "LOOP",End]
\ No newline at end of file
+[ Include "io"
+, Push
+ ( Literal 3 )
+, Mark "LOOP"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall, " )
+, Call "prints"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer" )
+, Call "printsln"
+, PushS
+ ( Literal "Take one down, pass it around" )
+, Call "printsln"
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Dup
+, OutputNum
+, PushS
+ ( Literal " bottles of beer on the wall" )
+, Call "printsln"
+, PushS
+ ( Literal "" )
+, Call "printsln"
+, Dup
+, BranchNZ "LOOP"
+, End
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello.il b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello.il
index 7a907ca8..04717598 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello.il
@@ -1 +1,44 @@
-[Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,OutputChar,End]
\ No newline at end of file
+[ Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, OutputChar
+, End
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il
index 00e91327..1cd343c3 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello2.il
@@ -1 +1,34 @@
-[Include "io",Push (Literal 0),Push (Literal 10),Push (Literal 33),Push (Literal 100),Push (Literal 108),Push (Literal 114),Push (Literal 111),Push (Literal 119),Push (Literal 32),Push (Literal 44),Push (Literal 111),Push (Literal 108),Push (Literal 108),Push (Literal 101),Push (Literal 72),Call "prints",End]
\ No newline at end of file
+[ Include "io"
+, Push
+ ( Literal 0 )
+, Push
+ ( Literal 10 )
+, Push
+ ( Literal 33 )
+, Push
+ ( Literal 100 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 114 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 119 )
+, Push
+ ( Literal 32 )
+, Push
+ ( Literal 44 )
+, Push
+ ( Literal 111 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 108 )
+, Push
+ ( Literal 101 )
+, Push
+ ( Literal 72 )
+, Call "prints"
+, End
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il
index a1afdd2e..81db1569 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/hello4.il
@@ -1 +1,6 @@
-[Include "io",PushS (Literal "Hello, world!"),Call "printsln",End]
\ No newline at end of file
+[ Include "io"
+, PushS
+ ( Literal "Hello, world!" )
+, Call "printsln"
+, End
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/pip.il b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/pip.il
index de1a133f..829f55f1 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/pip.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/pip.il
@@ -1 +1,14 @@
-[Mark "LOOP",Dup,Push (Literal 0),Push (Literal 1),Sub Nothing,Sub Nothing,BranchNZ "WRITE",End,Mark "WRITE",OutputChar,Branch "LOOP"]
\ No newline at end of file
+[ Mark "LOOP"
+, Dup
+, Push
+ ( Literal 0 )
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Sub Nothing
+, BranchNZ "WRITE"
+, End
+, Mark "WRITE"
+, OutputChar
+, Branch "LOOP"
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/true.il b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/true.il
index f93ec408..7f93ef7d 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/true.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/from-eas/true.il
@@ -1 +1 @@
-[End]
\ No newline at end of file
+[ End ]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyApp/original/prim.il b/.output/golden/examples/wsa/il/parseAssemblyApp/original/prim.il
index 06495869..2a8c9ace 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyApp/original/prim.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyApp/original/prim.il
@@ -1 +1,107 @@
-[Include "io",Mark "st",PushS (Literal "prim numbers [2-100]"),Call "printsln",Push (Literal 0),Mark "f_start_1",Test 100,BranchZ "f_finished_1",Dup,Add (Just (Literal 100)),Push (Literal 1),Store Nothing,Add (Just (Literal 1)),Branch "f_start_1",Mark "f_finished_1",Pop,Push (Literal 2),Mark "f_start_2",Test 11,BranchZ "f_finished_2",Push (Literal 2),Mark "f_start_3",Test 100,BranchZ "f_finished_3",Dup,Push (Literal 1),Swap,Store Nothing,Swap,Dup,Push (Literal 2),Swap,Store Nothing,Swap,Load (Just (Literal 1)),Load (Just (Literal 2)),Mul Nothing,Add (Just (Literal 100)),Push (Literal 0),Store Nothing,Add (Just (Literal 1)),Branch "f_start_3",Mark "f_finished_3",Pop,Add (Just (Literal 1)),Branch "f_start_2",Mark "f_finished_2",Pop,Push (Literal 2),Mark "f_start_4",Test 100,BranchZ "f_finished_4",Dup,Add (Just (Literal 100)),Load Nothing,BranchZ "nodraw",Dup,OutputNum,PushS (Literal " "),Call "prints",Mark "nodraw",Add (Just (Literal 1)),Branch "f_start_4",Mark "f_finished_4",Pop,Push (Literal 0),Call "printsln",End]
\ No newline at end of file
+[ Include "io"
+, Mark "st"
+, PushS
+ ( Literal "prim numbers [2-100]" )
+, Call "printsln"
+, Push
+ ( Literal 0 )
+, Mark "f_start_1"
+, Test 100
+, BranchZ "f_finished_1"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 1 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_1"
+, Mark "f_finished_1"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_2"
+, Test 11
+, BranchZ "f_finished_2"
+, Push
+ ( Literal 2 )
+, Mark "f_start_3"
+, Test 100
+, BranchZ "f_finished_3"
+, Dup
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Swap
+, Dup
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Swap
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Mul Nothing
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_3"
+, Mark "f_finished_3"
+, Pop
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_2"
+, Mark "f_finished_2"
+, Pop
+, Push
+ ( Literal 2 )
+, Mark "f_start_4"
+, Test 100
+, BranchZ "f_finished_4"
+, Dup
+, Add
+ ( Just
+ ( Literal 100 )
+ )
+, Load Nothing
+, BranchZ "nodraw"
+, Dup
+, OutputNum
+, PushS
+ ( Literal " " )
+, Call "prints"
+, Mark "nodraw"
+, Add
+ ( Just
+ ( Literal 1 )
+ )
+, Branch "f_start_4"
+, Mark "f_finished_4"
+, Pop
+, Push
+ ( Literal 0 )
+, Call "printsln"
+, End
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyLib/io.il b/.output/golden/examples/wsa/il/parseAssemblyLib/io.il
index d0e7bba1..a4542d9e 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyLib/io.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyLib/io.il
@@ -1 +1,15 @@
-[Mark "prints",Dup,BranchZ "prints_end",OutputChar,Branch "prints",Mark "prints_end",Pop,Return,Mark "printsln",Call "prints",Push (Literal 10),OutputChar,Return]
\ No newline at end of file
+[ Mark "prints"
+, Dup
+, BranchZ "prints_end"
+, OutputChar
+, Branch "prints"
+, Mark "prints_end"
+, Pop
+, Return
+, Mark "printsln"
+, Call "prints"
+, Push
+ ( Literal 10 )
+, OutputChar
+, Return
+]
\ No newline at end of file
diff --git a/.output/golden/examples/wsa/il/parseAssemblyLib/memory.il b/.output/golden/examples/wsa/il/parseAssemblyLib/memory.il
index 74ede482..ebc82bf6 100644
--- a/.output/golden/examples/wsa/il/parseAssemblyLib/memory.il
+++ b/.output/golden/examples/wsa/il/parseAssemblyLib/memory.il
@@ -1 +1,205 @@
-[Mark "memcopy",Mark "mem_copy",Mark "mem_move",Push (Literal 3),Swap,Store Nothing,Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Load (Just (Literal 3)),BranchNP "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchZ "memcopy_end",Load (Just (Literal 1)),Load (Just (Literal 2)),Sub Nothing,BranchM "memcopy_loop_dest_greater_source_begin",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_source_greater_dest",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Add Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_source_greater_dest",Mark "memcopy_loop_dest_greater_source_begin",Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 3),Load Nothing,Add Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Mark "memcopy_loop_dest_greater_source",Push (Literal 2),Load Nothing,Push (Literal 1),Load Nothing,Load Nothing,Store Nothing,Push (Literal 2),Push (Literal 2),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 1),Push (Literal 1),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Push (Literal 3),Push (Literal 3),Load Nothing,Push (Literal 1),Sub Nothing,Store Nothing,Load (Just (Literal 3)),BranchZ "memcopy_end",Branch "memcopy_loop_dest_greater_source",Mark "memcopy_end",Return,Mark "mem_zero",Mark "mem_zero_start",Dup,BranchZ "mem_zero_end",Swap,Dup,Push (Literal 0),Store Nothing,Push (Literal 1),Add Nothing,Swap,Push (Literal 1),Sub Nothing,Branch "mem_zero_start",Mark "mem_zero_end",Pop,Pop,Return,Mark "numeriere",Push (Literal 2),Swap,Store Nothing,Push (Literal 1),Swap,Store Nothing,Push (Literal 1),Load Nothing,Mark "numeriere_start",Dup,Dup,Store Nothing,Push (Literal 1),Add Nothing,Dup,Push (Literal 2),Load Nothing,Sub Nothing,BranchZ "numeriere_end",Branch "numeriere_start",Mark "numeriere_end",Pop,Return]
\ No newline at end of file
+[ Mark "memcopy"
+, Mark "mem_copy"
+, Mark "mem_move"
+, Push
+ ( Literal 3 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchNP "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchZ "memcopy_end"
+, Load
+ ( Just
+ ( Literal 1 )
+ )
+, Load
+ ( Just
+ ( Literal 2 )
+ )
+, Sub Nothing
+, BranchM "memcopy_loop_dest_greater_source_begin"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_source_greater_dest"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_source_greater_dest"
+, Mark "memcopy_loop_dest_greater_source_begin"
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Add Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Mark "memcopy_loop_dest_greater_source"
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Load Nothing
+, Store Nothing
+, Push
+ ( Literal 2 )
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Push
+ ( Literal 3 )
+, Push
+ ( Literal 3 )
+, Load Nothing
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Store Nothing
+, Load
+ ( Just
+ ( Literal 3 )
+ )
+, BranchZ "memcopy_end"
+, Branch "memcopy_loop_dest_greater_source"
+, Mark "memcopy_end"
+, Return
+, Mark "mem_zero"
+, Mark "mem_zero_start"
+, Dup
+, BranchZ "mem_zero_end"
+, Swap
+, Dup
+, Push
+ ( Literal 0 )
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Swap
+, Push
+ ( Literal 1 )
+, Sub Nothing
+, Branch "mem_zero_start"
+, Mark "mem_zero_end"
+, Pop
+, Pop
+, Return
+, Mark "numeriere"
+, Push
+ ( Literal 2 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Swap
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Load Nothing
+, Mark "numeriere_start"
+, Dup
+, Dup
+, Store Nothing
+, Push
+ ( Literal 1 )
+, Add Nothing
+, Dup
+, Push
+ ( Literal 2 )
+, Load Nothing
+, Sub Nothing
+, BranchZ "numeriere_end"
+, Branch "numeriere_start"
+, Mark "numeriere_end"
+, Pop
+, Return
+]
\ No newline at end of file
diff --git a/compile-streaming.sh b/compile-streaming.sh
index 219f20a6..3074afc9 100755
--- a/compile-streaming.sh
+++ b/compile-streaming.sh
@@ -1,3 +1,12 @@
#!/usr/bin/env bash
-cabal new-clean && cabal new-build && cabal new-test --test-show-details=streaming
\ No newline at end of file
+rm -rf cabal.project.local
+rm -rf .hie
+
+cabal new-clean &&
+cabal new-build &&
+cabal configure --enable-tests --enable-coverage &&
+cabal new-test --test-show-details=streaming &&
+./stan.sh
+
+cp stan.html docs/reports
diff --git a/compile.sh b/compile.sh
index 4b6a20e2..f3bfc26d 100755
--- a/compile.sh
+++ b/compile.sh
@@ -1,3 +1,12 @@
#!/usr/bin/env bash
-cabal new-clean && cabal new-build && cabal new-test
+rm -rf cabal.project.local
+rm -rf .hie
+
+cabal new-clean &&
+cabal new-build &&
+cabal configure --enable-tests --enable-coverage &&
+cabal new-test &&
+./stan.sh
+
+cp stan.html docs/reports
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 5e2929ba..9a2bba2a 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -1,3 +1,40 @@
# 📐 ARCHITECTURE
-We do not have ARCHITECTURE
+We have Spaghetti ARCHITECTURE inspired by Flying Spaghetti Monster
+
+Tools and libraries:
+* For start:
+ * [x] [Summoner](https://kowainik.github.io/projects/summoner) for scaffolding fully configured batteries-included production-level Haskell projects
+ * [ ] [cake-slayer](https://github.com/kowainik/cake-slayer) - Architecture of Haskell backend applications
+ * [ ] [three-layer](https://github.com/Holmusk/three-layer) - Architecture of Haskell backend applications
+* For static code analysis:
+ * [x] [hlint](https://github.com/ndmitchell/hlint) for source code suggestions
+ * [x] [stan](https://kowainik.github.io/projects/stan) for STatic ANalysis
+ * [ ] [weeder](https://github.com/ocharles/weeder) for detect dead code
+* For dynamic code analysis:
+ * [x] [hspec](https://hspec.github.io/) for unit and integration tests
+ * [x] [hspec-expectations-pretty-diff](https://github.com/unrelentingtech/hspec-expectations-pretty-diff#readme) for catchy combinators for HUnit
+ * [x] [hspec-golden](https://github.com/stackbuilders/hspec-golden#readme) for golden tests
+ * [x] [hspec-slow](https://github.com/SupercedeTech/hspec-slow) for find slow test cases
+ * [ ] [gauge](https://github.com/vincenthz/hs-gauge) for performance measurement and analysis
+ * [ ] [weigh](https://github.com/fpco/weigh#readme) for measure allocations of a Haskell functions/values
+ * [ ] [hedgehog](https://hedgehog.qa/) for property tests
+* For Configuration:
+ * [x] [optparse-applicative](https://github.com/pcapriotti/optparse-applicative) for parse options
+ * [ ] [tomland](https://kowainik.github.io/posts/2019-01-14-tomland) for configuration from file
+ * [ ] [dhall-haskell](https://github.com/dhall-lang/dhall-haskell) for configuration from file
+* For patching List:
+ * [x] [ilist](https://hackage.haskell.org/package/ilist) for doing index-related things
+ * [x] [list-singleton](https://hackage.haskell.org/package/list-singleton) for easily and clearly create lists with only one element in them
+ * [ ] [slist](https://kowainik.github.io/projects/slist) for sized list
+ * [x] [split](https://hackage.haskell.org/package/split) for splitting lists
+* For production code:
+ * [x] [mtl](https://github.com/haskell/mtl) for IoC
+ * [x] [relude](https://kowainik.github.io/projects/relude) as standard library
+ * [ ] [co-log](https://github.com/kowainik/co-log) for logging
+ * [ ] [mono-traversable](https://github.com/snoyberg/mono-traversable#readme) as container standard library
+ * [x] [data-default](https://hackage.haskell.org/package/data-default) for default values
+ * [ ] [validation-selective](https://github.com/kowainik/validation-selective) is lighweight pure data validation based on Applicative and Selective functors
+ * [x] [filepath](https://github.com/haskell/filepath#readme) for manipulating FilePaths in a cross platform way.
+ * [ ] [pretty-simple](https://github.com/cdepillabout/pretty-simple) for data types with a 'Show' instance
+ * [x] [attoparsec](https://github.com/bgamari/attoparsec) for parsing assembly languages
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 10158371..98c7d732 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -1,5 +1,14 @@
# 📅 Revision history for Helpa
+## 0.3.4.0 -- 2021-07-22
+
+* Use MonadError
+* Use Stan
+* Use pretty-simple for golden tests
+* Fill up ARCHITECTURE.md
+* Replace WrapperIO by BusinessIO
+* Remove gradle
+
## 0.3.3.0 -- 2021-07-6
* Use `Safe`, remove `error` calls
diff --git a/docs/reports/stan.html b/docs/reports/stan.html
new file mode 100644
index 00000000..707f3580
--- /dev/null
+++ b/docs/reports/stan.html
@@ -0,0 +1,58 @@
+
+
Stan Report
Stan Report
This is the Haskell Static Analysis report generated by Stan
Stan Info
In this section, you can find the general information about the used Stan tool, compile-time and run-time environment variables and settings, including build information, system data and execution configurations.
Stan Version
Version
0.0.1.0
Git Revision
UNKNOWN
Release Date
UNKNOWN
System Info
Operating System
linux
Architecture
x86_64
Compiler
ghc
Compiler Version
8.10
Environment
Environment Variables
TOML configuration files
CLI arguments
-s --hide-solution report
Project Info
Information about the analysed project
Project name
helpa
Cabal Files
helpa.cabal
HIE Files Directory
.hie
Files Number
54
Analysis Info
Summary stats from the static analysis
Modules
54
LoC
2952
Extensions
3
SafeHaskell Extensions
0
Available inspections
44
Checked inspections
44
Found Observations
14
Ignored Observations
0
Static Analysis Summary
Here you can find the overall conclusion based on the various metadata and gathered information during the work of Stan on this project.
Project health: 95.45%
This number was calculated based on the total number of used inspections and the number of triggered inspections in the project. The calculated number also defines the overall project health status.
The project has medium health
Stan discovered several potential issues in the project. Nice job, the overall project quality is good. And you can easily make it even better!
Watch out for STAN-0302
By the result of Stan analysis, the most common inspection for this project is STAN-0302
Vulnerable module: HelVM.CartesianProduct
The HelVM.CartesianProduct module is the most vulnerable one in the project, as it got the most number of observations
Popular category: Syntax
Syntax
The project has the most problems with inspections from this category
Severity: PotentialBug
The highest severity of found vulnerabilities is PotentialBug
Observations
Based on the analysis results, Stan found different vulnerabilities distributed among the analysed files. In Stan terminology, we call such vulnerability as Observation. Below you can see the more detailed information about each observation, and find the possible ways to fix them for your project.
📄 hs/src/HelVM/Common/Containers/Reverse.hs
Module
HelVM.Common.Containers.Reverse
Lines of Code
15
Observations
ID
OBS-STAN-0101-NL6FaO-12:13
Severity
PotentialBug
Description
Usage of the 'reverse' function that hangs on infinite lists
Consider defining and using a custom data type to improve code comprehension
Configurations
This section describes the final Stan configuration that was used on the project and explains how this result was assembled. Stan runtime settings have many parts, and each of them can come from different configuration sources. Stan is using Environment variables, TOML configuration file and CLI arguments to get the final results. If some option is specified through the multiple sources, the most prioritized one is used.
Action
Filter
Scope
Configuration Process Information
Information and warnings that were gathered during the configuration assemble process. This helps to understand how different parts of the configurations were retrieved.