From 751ac9df3e9991dde2c9060cc4f53b6f4556c23f Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 1 Dec 2018 17:53:25 +0000 Subject: Fix the code generation --- src/Test/VeriFuzz/CodeGen.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/Test') diff --git a/src/Test/VeriFuzz/CodeGen.hs b/src/Test/VeriFuzz/CodeGen.hs index 3cc6063..71dff48 100644 --- a/src/Test/VeriFuzz/CodeGen.hs +++ b/src/Test/VeriFuzz/CodeGen.hs @@ -20,9 +20,12 @@ genDescription desc = genModuleDecl :: ModuleDecl -> Text genModuleDecl mod = "module " <> mod ^. moduleId . getIdentifier - <> "(\n" <> ports <> "\n);\nendomodule" + <> "(\n" <> ports <> "\n);" + <> modItems + <> "endomodule\n" where ports = sep ",\n" $ genPort <$> mod ^. modPorts + modItems = fromList $ genModuleItem <$> mod ^. moduleItems genPort :: Port -> Text genPort port = @@ -49,8 +52,17 @@ genContAssign assign = genExpr :: Expression -> Text genExpr (OpExpr exprRhs bin exprLhs) = genExpr exprRhs <> genBinaryOperator bin <> genExpr exprLhs +genExpr (PrimExpr prim) = + genPrimary prim genExpr _ = "TODO" +genPrimary :: Primary -> Text +genPrimary (PrimNum num) = + sh (num ^. numSize) <> "'d" <> sh (num ^. numVal) + where + sh = T.pack . show +genPrimary (PrimId ident) = ident ^. getIdentifier + genBinaryOperator :: BinaryOperator -> Text genBinaryOperator BinAnd = " & " genBinaryOperator BinOr = " | " -- cgit