aboutsummaryrefslogtreecommitdiff
path: root/ABC/Machine/IO.icl
blob: aac5ba748b7e3ceef6adaa09d7da1bd3b80cf9f1 (plain) (blame)
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
implementation module ABC.Machine.IO

import StdEnv

import ABC.Machine
import ABC.Misc

:: IO :== [Char]

instance toString IO where toString io = {c \\ c <- io}

io_init  :: IO
io_init = []

io_print :: a IO -> IO | toString a
io_print x io = io ++ fromString (toString x)

show_node :: Node Desc -> String
show_node (Basic _ _ b) _           = toString b
show_node (Node _ _ _) (Desc _ _ n) = n

instance toString State
where
	toString {astack,bstack,cstack,graphstore,descstore,pc,program,io}
		= "pc      : " <+ pc <+ "\n" <+
		  "A-stack : " <+ astack <+ "\n" <+
		  "B-stack : " <+ bstack <+ "\n" <+
		  "C-stack : " <+ cstack <+ "\n" <+
		  "Graph   :\n" <+ show_graphstore graphstore descstore