41 lines
1.1 KiB
Plaintext
41 lines
1.1 KiB
Plaintext
%if false
|
|
Copyright (c) 2009, ETH Zurich.
|
|
All rights reserved.
|
|
|
|
This file is distributed under the terms in the attached LICENSE file.
|
|
If you do not find this file, copies can be found by writing to:
|
|
ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
|
|
%endif
|
|
|
|
%include polycode.fmt
|
|
|
|
|
|
> module Expressions where
|
|
|
|
> import Semantics
|
|
> import Constructs
|
|
> import PureExpressions
|
|
|
|
> import IL.FoF.FoF
|
|
|
|
|
|
|
|
> data Heap = Hp { freshLoc :: Int ,
|
|
> refMap :: [(VarName, Data)],
|
|
> freshSLoc :: Int,
|
|
> strMap :: [(VarName, [(String, Data)])],
|
|
> freshALoc :: Int,
|
|
> arrayMap :: [(VarName, [Data])]}
|
|
|
|
> runAlgebra :: FoFConst (Heap -> (PureExpr, Heap)) ->
|
|
> (Heap -> (PureExpr, Heap))
|
|
|
|
|
|
|
|
> data Binding = Binding { freshVar :: Int ,
|
|
> defStructs :: [(String,TypeExpr)],
|
|
> defUnions :: [(String,TypeExpr)],
|
|
> defEnums :: [(String, [(String, Int)])] }
|
|
|
|
> compileAlgebra :: FoFConst (Binding -> (ILFoF, Binding)) ->
|
|
> (Binding -> (ILFoF, Binding)) |