definition module uFPL.C from Data.Maybe import :: Maybe from uFPL.Util import class print :: Signedness = Sig | Unsig :: CType = CTChar Signedness | CTBool | CTInt Signedness | CTLong Signedness | CTVoid | CTStruct String :: CExpr = CEGlobal String | CEInfix String CExpr CExpr | CEApp String [CExpr] | CEBool Bool | CEInt Int | CEChar Char | CEString String | CEIf CExpr CExpr CExpr | CERef CExpr | CEStruct [(String, CExpr)] :: CBody = CBReturn (Maybe CExpr) | CBIf CExpr CBody [(CExpr, CBody)] (Maybe CBody) | CBAssign String CExpr | CBSeq CBody CBody | CBEmpty | CBExpr CExpr (`seq`) infixr 0 :: CBody CBody -> CBody :: CVar = { name :: String , type :: CType , value :: CExpr } :: CFun = { body :: CBody , type :: CType , name :: String } :: CProg = { bootstrap :: String , globals :: [CVar] , funs :: [CFun] } instance print Signedness instance print CType instance print CExpr instance print CBody instance print CVar instance print CFun instance print CProg combinePrograms :: CProg CProg -> CProg