X-Git-Url: https://ruin.nu/git/?p=proglang.git;a=blobdiff_plain;f=Compile.hs;h=69edecd879be433bab4f32259f8f0f79d2af0d41;hp=c3e93f94850a720839196f010a8b6fe6294b60ce;hb=565fbd61dca527c23888e08783d0d91cee458524;hpb=3cee522d1f54b39a1efa654da364c6c939cbcf1f diff --git a/Compile.hs b/Compile.hs index c3e93f9..69edecd 100644 --- a/Compile.hs +++ b/Compile.hs @@ -9,7 +9,6 @@ compileExp (EBool False) = "0"; compileExp (EInt n) = show n compileExp (EVar (Ident i)) = i compileExp (EAss (Ident i) e) = i++"="++compileExp e -compileExp EDefault = error "EDefault called from an illegal place" compileExp (BiOpExp e o e') = "("++compileExp e++")"++op o++"("++compileExp e'++")" compileExp (ENeg e) = "-("++compileExp e++")" compileExp (ENot e) ="!("++compileExp e++")" @@ -37,5 +36,4 @@ compileStm (SIf b s s') = "if("++compileExp b++")"++compileStm s++" \nelse "++co compileStm (SPrint e) = "printf(\"%d\\n\","++compileExp e++");\n" compileStm (SBlock ss) = "{\n"++concat (map (("\t"++).compileStm) ss)++"\n}\n" compileStm (SWhile e s) = "while("++compileExp e++")"++compileStm s -compileStm (SDecl t (Ident i) EDefault) = "int "++i++"=0;\n" compileStm (SDecl t (Ident i) e) = "int "++i++"="++compileExp e++";\n"