From 57e5bbbbab0d5315c6bba497447ff9bf2487e995 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sat, 25 Sep 2021 21:45:43 +0200 Subject: Lots of stuff; can compile simple single-generate program --- Language/C.hs | 3 +++ Language/C/Print.hs | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'Language') diff --git a/Language/C.hs b/Language/C.hs index 35cf432..6a3256f 100644 --- a/Language/C.hs +++ b/Language/C.hs @@ -9,6 +9,7 @@ data FunDef | ProcDef Name [(Type, Name)] [Stmt] deriving (Show, Eq) +-- | Some C types. data Type = TInt Bits | TUInt Bits @@ -17,9 +18,11 @@ data Type | TPtr Type deriving (Show, Eq) +-- | The number of bits in a C integral type. data Bits = B8 | B16 | B32 | B64 deriving (Show, Eq) +-- | A C variable or function name. newtype Name = Name String deriving (Show, Eq, Ord) diff --git a/Language/C/Print.hs b/Language/C/Print.hs index e075b0e..cc511b2 100644 --- a/Language/C/Print.hs +++ b/Language/C/Print.hs @@ -20,12 +20,12 @@ printFunDef (FunDef rt n as (StExpr ss rete)) = % intercalates ", " [printType t % printString " " % printName an | (t, an) <- as] % printString ") {\n " % addIndent 2 (intercalates "\n" (map printStmt ss)) - % printString "\n return (" % printExpr rete % printString ");\n}" + % printString "\n return (" % printExpr rete % printString ");\n}\n" printFunDef (ProcDef n as ss) = printString "void " % printName n % printString "(" % intercalates ", " [printType t % printString " " % printName an | (t, an) <- as] - % printString ") " % printBlock ss + % printString ") " % printBlock ss % printString "\n" printName :: Name -> PrintS printName (Name s) = printString s -- cgit v1.2.3-70-g09d2