Files
lci/bin/main.ml

38 lines
968 B
OCaml
Raw Normal View History

2024-11-20 00:13:05 +01:00
open MiniImp
2024-12-03 17:18:42 +01:00
let colorred s =
"\027[31m" ^ s ^ "\027[0m"
2024-11-20 00:13:05 +01:00
let () =
2024-12-03 17:18:42 +01:00
let program = "
def main with input a output b as
b := 1;
for (i := 1, i <= a, i := i + 1) do
b := b * i;
"
in
Printf.printf "%s\n%s\n" (colorred "Program is") program;
2024-11-20 00:13:05 +01:00
let get_result x = Lexing.from_string x |> Parser.prg Lexer.lex in
let p = get_result program in
2024-12-03 17:18:42 +01:00
Format.printf "%s\n%a\n@?" (colorred "AST is") Types.pp_p_exp p;
let convertedcfg = CfgImp.convert_io 10 p in
2024-11-27 20:18:30 +01:00
2024-12-03 17:18:42 +01:00
Printf.printf "%s\n%a" (colorred "Converted CFG is") CfgImp.SSCfg.pp convertedcfg;
2024-11-27 20:18:30 +01:00
let convertedrisccfg = CfgRISC.convert convertedcfg in
2024-11-20 00:13:05 +01:00
2024-12-03 17:18:42 +01:00
Printf.printf "%s\n%a" (colorred "Converted RISC CFG is") CfgRISC.RISCCfg.pp convertedrisccfg;
let risc = RISC.convert convertedrisccfg in
2024-12-03 17:18:42 +01:00
Printf.printf "%s\n%a" (colorred "RISC code is") RISC.RISCAssembly.pp risc;
let computerisc = RISCSemantics.reduce risc in
Printf.printf "%s\n%d\n" (colorred "Output of RISC code is") computerisc;