repositories
/
cc1516.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added commit stats
[cc1516.git]
/
gen.icl
diff --git
a/gen.icl
b/gen.icl
index
0fc8bc0
..
819da19
100644
(file)
--- a/
gen.icl
+++ b/
gen.icl
@@
-1,6
+1,5
@@
implementation module gen
implementation module gen
-
import StdMisc
import StdList
import StdOverloaded
import StdMisc
import StdList
import StdOverloaded
@@
-44,12
+43,12
@@
FALSE :== 0
:: Gen a :== RWST Label SSMProgram (GenMap, [Label]) (Either GenError) a
labelStream :: [Label]
:: Gen a :== RWST Label SSMProgram (GenMap, [Label]) (Either GenError) a
labelStream :: [Label]
-labelStream =
map (\i-> concat ["lbl_", toString i]) [1..
]
+labelStream =
["lbl_" +++ toString i\\i<-[1..]
]
-gen :: AST -> String
+gen :: AST ->
Either String
String
gen (AST fds) = case evalRWST prog "" ('Map'.newMap, labelStream) of
gen (AST fds) = case evalRWST prog "" ('Map'.newMap, labelStream) of
- Left (Error e) = e
- Right (_, p) = toString p
+ Left (Error e) =
Left
e
+ Right (_, p) =
Right $
toString p
where
prog = tell [Instr "bra" [L "main"] ""] >>| mapM_ g fds
//gen _ = prog
where
prog = tell [Instr "bra" [L "main"] ""] >>| mapM_ g fds
//gen _ = prog
@@
-76,6
+75,7
@@
gen (AST fds) = case evalRWST prog "" ('Map'.newMap, labelStream) of
//helper functions for the gen monad
genMap :: Gen GenMap
genMap = gets fst
//helper functions for the gen monad
genMap :: Gen GenMap
genMap = gets fst
+
changeGenMap :: (GenMap -> GenMap) -> Gen GenMap
changeGenMap f = modify (appFst f) >>| genMap
changeGenMap :: (GenMap -> GenMap) -> Gen GenMap
changeGenMap f = modify (appFst f) >>| genMap
@@
-218,4
+218,4
@@
instance toString Arg where
toString (Raw s) = s
instance toString SSMProgram where
toString (Raw s) = s
instance toString SSMProgram where
- toString p = concat $ intersperse " " $ map (\i-> concat $ intersperse " " $ print i) p
\ No newline at end of file
+ toString p = concat $ intersperse " " $ map (\i-> concat $ intersperse " " $ print i) p