summaryrefslogtreecommitdiff
path: root/khb/test.ml
diff options
context:
space:
mode:
Diffstat (limited to 'khb/test.ml')
-rw-r--r--khb/test.ml101
1 files changed, 0 insertions, 101 deletions
diff --git a/khb/test.ml b/khb/test.ml
deleted file mode 100644
index edc155e..0000000
--- a/khb/test.ml
+++ /dev/null
@@ -1,101 +0,0 @@
-open Khs_ast
-open Khs_exec
-
-let primes_khs = [|
- SGoto (EStr "proc_main");
-
- (* integers *)
- SLabel "proc_integers";
- SGoto (
- ETernary(
- EBinary(ELoad(ELocal "n"), GT, ELoad(ELocal "nmax")),
- EStr "_then1", EStr "_else1"));
-
- SLabel "_then1";
- SSend(EInt (-1), ELocal "qo");
- SGoto(EStr "_end1");
-
- SLabel "_else1";
- SSend(ELoad(ELocal "n"), ELocal "qo");
- SSet(ELocal "n",
- EBinary(ELoad(ELocal "n"), PLUS, EInt 1));
- SGoto (EStr "proc_integers");
-
- SLabel "_end1";
- SSet(ELocal "retval", EEmpty);
- SUnset [ELocal "qo"; ELocal "nmax"; ELocal "n"];
- SGoto(ELoad(ELocal "retpos"));
-
- (* filter *)
- SLabel "proc_filter";
- SRecv(ELocal "val", ELocal "qi");
- SGoto(ETernary(
- EBinary(ELoad(ELocal "val"), NEQUAL, EInt (-1)),
- EStr "_then2", EStr "_else2"));
-
- SLabel "_then2";
- SGoto(ETernary(
- EBinary(EBinary(ELoad(ELocal "val"), MOD, ELoad(ELocal "n")), NEQUAL, EInt 0),
- EStr "_then3", EStr "_end3"));
-
- SLabel "_then3";
- SSend(ELoad(ELocal "val"), ELocal "qo");
-
- SLabel "_end3";
- SGoto(EStr "proc_filter");
-
- SLabel "_else2";
- SSend(EInt (-1), ELocal "qo");
-
- SSet(ELocal "retval", EEmpty);
- SUnset[ELocal "qo"; ELocal "qi"; ELocal "val"; ELocal "n"];
- SGoto(ELoad(ELocal "retpos"));
-
- (* primes *)
- SLabel "proc_primes";
- SRecv(ELocal "val", ELocal "qi");
- SGoto(ETernary(
- EBinary(ELoad(ELocal "val"), NEQUAL, EInt(-1)),
- EStr "_then4", EStr "_end4"));
-
- SLabel "_then4";
- SSend(ELoad(ELocal "val"), EStr "stdout");
- SSet(ELocal "c", ENewChan);
- SPar(EStr "_par_1");
- SSet(ELocal "qi", ELoad(ECat(ELocal "c", EStr "in")));
- SGoto(EStr "proc_primes");
-
- SLabel "_end4";
- SSet(ELocal "retval", EEmpty);
- SUnset[ELocal "qi"; ELocal "val"; ELocal "c"];
- SGoto(ELoad(ELocal "retpos"));
-
- SLabel "_par_1";
- SSet(ELocal "n", ELoad(ELocal "val"));
- SSet(ELocal "qo", ELoad(ECat(ELocal "c", EStr "out")));
- SGoto(EStr "proc_filter");
-
-
- (* main *)
- SLabel "proc_main";
- SSet(ELocal "c", ENewChan);
- SPar(EStr "_par_2");
-
- SSet(ELocal "qi", ELoad(ECat(ELocal "c", EStr "in")));
- SSet(ELocal "retpos", EStr "_ret1");
- SGoto(EStr "proc_primes");
-
- SLabel "_par_2";
- SSet(ELocal "n", EInt 2);
- SSet(ELocal "nmax", EInt 3000);
- SSet(ELocal "qo", ELoad(ECat(ELocal "c", EStr "out")));
- SSet(ELocal "retpos", EStr "_ret1");
- SGoto(EStr "proc_integers");
-
- SLabel "_ret1";
- SExit;
-|]
-
-let () =
- Array.iter Ksh_print.print_stmt primes_khs;
- Khs_exec_local.exec_program (load_program primes_khs)