summaryrefslogtreecommitdiff
path: root/testsuite/tests/programs/joao-circular/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/programs/joao-circular/Main.hs')
-rw-r--r--testsuite/tests/programs/joao-circular/Main.hs77
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