aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamil Staps2017-07-17 21:47:36 +0000
committerCamil Staps2017-07-17 21:47:36 +0000
commit7d71454cac74cc6dab8c3b70d8bd3b5420d658cd (patch)
treec0263d5435b2e7d69aa9a67aca68d5b3e5e14705
parentFix toString for fillI and similar instructions (diff)
Add <<< for Assembler and Statement
-rw-r--r--ABC/Assembler.dcl4
-rw-r--r--ABC/Assembler.icl13
2 files changed, 15 insertions, 2 deletions
diff --git a/ABC/Assembler.dcl b/ABC/Assembler.dcl
index 281190d..6ba9db7 100644
--- a/ABC/Assembler.dcl
+++ b/ABC/Assembler.dcl
@@ -1,5 +1,6 @@
definition module ABC.Assembler
+from StdFile import class <<<
from StdOverloaded import class toString
from ABC.Machine.Def import ::Arity, ::Name, ::NrArgs, ::ArgNr, ::Instruction, ::State
from ABC.Machine.AStack import ::ASrc, ::ADst
@@ -79,4 +80,7 @@ from ABC.Machine.GraphStore import ::Desc
instance toString Assembler
instance toString Statement
+instance <<< Assembler
+instance <<< Statement
+
assemble :: Assembler -> ([Instruction], [Desc])
diff --git a/ABC/Assembler.icl b/ABC/Assembler.icl
index d8e616a..29e2d5b 100644
--- a/ABC/Assembler.icl
+++ b/ABC/Assembler.icl
@@ -9,9 +9,18 @@ import ABC.Misc
instance toString Assembler
where
toString [] = ""
- toString [stm=:(Label l):r] = stm <+ "\n" <+ r
+ toString [stm=:(Label l):r] = stm <+ "\r\n" <+ r
toString [stm=:(Descriptor _ _ _ _):r] = toString r
- toString [stm :r] = "\t" <+ stm <+ "\n" <+ r
+ toString [stm :r] = "\t" <+ stm <+ "\r\n" <+ r
+
+instance <<< Assembler
+where
+ <<< f [] = f
+ <<< f [stm=:(Label l):r] = f <<< stm <<< "\r\n" <<< r
+ <<< f [stm=:(Descriptor _ _ _ _):r] = f <<< r
+ <<< f [stm :r] = f <<< "\t" <<< stm <<< "\r\n" <<< r
+
+instance <<< Statement where <<< f st = f <<< toString st
generic gPrint a :: !a -> [Char]
gPrint{|Int|} x = fromString (toString x)