blob: f549c4fa06c9ebe367ff5fddc8572f36d5c9f831 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
implementation module ABC.CStack
import StdEnv
import ABC.Def
cs_init :: CStack
cs_init = []
cs_get :: CSrc CStack -> InstrId
cs_get _ [] = abortn "cs_get: index too large"
cs_get 0 [i:_] = i
cs_get i [_:s] = cs_get (i-1) s
cs_popn :: CSrc CStack -> CStack
cs_popn 0 s = s
cs_popn _ [] = abortn "cs_popn: popping too many elements"
cs_popn i [_:s] = cs_popn (i-1) s
cs_push :: InstrId CStack -> CStack
cs_push i s = [i:s]
|