summaryrefslogtreecommitdiff
path: root/devel/compiler/PrEnv.hs
blob: 910626a4240babe9dd28aa6238ef28385c31d0cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
module PrEnv where

import Env

import AbsSrc
import AbsTgt

import qualified PrintSrc as S
import qualified PrintTgt as T

import qualified Data.Map as M

prEnv :: Env -> IO ()
prEnv env = do
  putStrLn "--# types"
  mapM_ putStrLn 
    [prs c ++ " : " ++ prs val | (c,val) <- M.toList $ types env]
  putStrLn "--# typedefs"
  mapM_ putStrLn 
    [prs c ++ " = " ++ prs val | (c,val) <- M.toList $ typedefs env]
  putStrLn "--# partypes"
  mapM_ putStrLn 
    [prs c ++ " = " ++ unwords (map prs val) | (c,val) <- M.toList $ partypes env]
  putStrLn "--# parvals"
  mapM_ putStrLn 
    [prs c ++ " = " ++ prt val | (c,val) <- M.toList $ parvals env]
  putStrLn "--# values"
  mapM_ putStrLn 
    [prs c ++ " = " ++ prt val | (c,val) <- M.toList $ values env]


prs :: (S.Print a) => a -> String
prs = S.printTree

prt :: (T.Print a) => a -> String
prt = T.printTree

{-
data Env = Env {
  values   :: M.Map Ident Val,
  types    :: M.Map Ident Type,
  opers    :: M.Map Ident Exp,
  typedefs :: M.Map Ident Type,
  partypes :: M.Map Type  [Exp],
  parvals  :: M.Map Exp   Val,
  vars     :: M.Map Ident Val
  }
-}