X-Git-Url: https://ruin.nu/git/?p=proglang.git;a=blobdiff_plain;f=Compiler.hs;h=d971b2f19954bccca195f9d33419e9c9f6d48e0d;hp=2f1f31bbd0e16e2e8f00237907e464f875ed2528;hb=3cee522d1f54b39a1efa654da364c6c939cbcf1f;hpb=98e238b8dd8c07705ab9681ff07c85e10eda9397 diff --git a/Compiler.hs b/Compiler.hs index 2f1f31b..d971b2f 100644 --- a/Compiler.hs +++ b/Compiler.hs @@ -24,6 +24,10 @@ myLLexer = myLexer type Verbosity = Int +cHeader = "#include \nint read(){\nint n;\nscanf(\"%d\",&n);\nreturn n;\n}\nint main(void){\n" + +cFooter = "return 0;}" + putStrV :: Verbosity -> String -> IO () putStrV v s = if v > 1 then putStrLn s else return () @@ -39,7 +43,7 @@ run v p s = let ts = myLLexer s in case p ts of putStrLn s Ok (Program s) -> do runStateT (mapM typeCheckStm s) [empty] - putStr $ concat (map compileStm s) + putStr $ cHeader++concat (map compileStm s)++cFooter return () showTree :: (Show a, Print a) => Int -> a -> IO ()