diff options
Diffstat (limited to 'testsuite/tests/programs/joao-circular/Main.hs')
-rw-r--r-- | testsuite/tests/programs/joao-circular/Main.hs | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/testsuite/tests/programs/joao-circular/Main.hs b/testsuite/tests/programs/joao-circular/Main.hs new file mode 100644 index 0000000000..2202554816 --- /dev/null +++ b/testsuite/tests/programs/joao-circular/Main.hs @@ -0,0 +1,77 @@ +module Main (main) where + +import System.Environment + +import LrcPrelude +import Funcs_Parser_Lazy + +import Data_Lazy +import Visfun_Lazy + + +-- runSemantics :: String -> [BibEntry] +runSemantics inp pw = lrcEval (runParser inp) pw + + +runEval fn pw + = do s <- readFile fn + let (code,errors,te,pp) = runSemantics s pw + + putStrLn "Pretty Printed Input:" + putStrLn pp + putStrLn "MSP Generated Code:" + putStrLn (showCode code) + + putStrLn "Detected Semantic Errors:" + putStrLn (show errors) + putStrLn (show te) + +-- putStrLn pp_code + return () + +main :: IO () +main = do args <- getArgs + putStrLn (show args) + let fn = head args + let pw = mytoint (head . tail $ args) + runEval fn pw + +mytoint :: String -> Integer +mytoint s = read s + + +showCode [] = "\n" +showCode (x:xs) = (showInstr x) ++ "\n" ++ (showCode xs) + +showInstr (C_ALabel_1 n) = (show n) ++ ":" +showInstr C_Add_1 = "ADD" +showInstr C_And_1 = "AND" +showInstr (C_Call_1 n) = "CALL " ++ (showName n) +showInstr C_Cod_1 = "CODIGO" +showInstr C_Data_1 = "MEMORIA DE DADOS" +showInstr C_Div_1 = "DIV" +showInstr C_Eq_1 = "EQ" +showInstr C_Gt_1 = "GT" +showInstr C_Halt_1 = "HALT" +showInstr C_IIn_1 = "IN" +showInstr C_IOut_1 = "OUT" +showInstr (C_Jump_1 n) = "JMP " ++ (showName n) +showInstr (C_Jumpf_1 n) = "JMPF " ++ (showName n) +showInstr C_Load_1 = "LOAD" +showInstr C_Lt_1 = "LT" +showInstr C_Minus_1 = "MIN" +showInstr C_Mul_1 = "MUL" +showInstr C_Neq_1 = "NEQ" +showInstr C_Not_1 = "NOT" +showInstr C_Or_1 = "OR" +showInstr (C_Pusha_1 n i) = "PUSHa " ++ (showName n) ++ " " ++ (show i) +showInstr (C_Pushb_1 b) = "PUSHb " ++ (show b) +showInstr (C_Pushi_1 i) = "PUSHi " ++ (show i) +showInstr (C_Pushr_1 r) = "PUSHr " ++ (show r) +showInstr C_Ret_1 = "RET" +showInstr C_Store_1 = "STORE" +showInstr C_Sub_1 = "SUB" +showInstr (C_Var_1 n i t) = (showName n) ++ " TAM " ++ (show i) + + +showName (C_Ident_1 n) = show n |