Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data Type = Int | Bool deriving (Show)
- emptyMap = Map.empty
- vars :: Cmd -> Map String Type -> Map String Type
- vars (Seq a b) m = Map.union (vars a m) (vars b m)
- vars (DeclareIntVar v) m = (Map.insert (v) (Int) m)
- vars (DeclareBoolVar v) m = (Map.insert (v) (Bool) m)
- vars _ m = emptyMap
- symToData :: Map String Type -> String
- symToData x = computeList (Map.toList (x))
- computeList :: [(String, Type)] -> String
- computeList [] = ".data\n"
- computeList ((a,Int):xs) = computeList xs ++ (stringEscape a ++ ":" ++ " .space 4\n")
- computeList ((a,Bool):xs) = computeList xs ++ (stringEscape a ++ ":" ++ " .space 1\n")
- -- no main:
- putStr $ symToData (vars (removeMain $ parse $ scanTokens s) emptyMap)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement