diff options
author | Camil Staps | 2017-07-17 21:47:36 +0000 |
---|---|---|
committer | Camil Staps | 2017-07-17 21:47:36 +0000 |
commit | 7d71454cac74cc6dab8c3b70d8bd3b5420d658cd (patch) | |
tree | c0263d5435b2e7d69aa9a67aca68d5b3e5e14705 | |
parent | Fix toString for fillI and similar instructions (diff) |
Add <<< for Assembler and Statement
-rw-r--r-- | ABC/Assembler.dcl | 4 | ||||
-rw-r--r-- | ABC/Assembler.icl | 13 |
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) |