use "Env.sig"; use "Env.sml"; use "Scanner.sig"; use "Scanner.sml"; use "Parser.sig"; use "Parser.sml"; use "Interpreter.sig"; use "Interpreter.sml"; use "Compiler.sig"; use "Compiler.sml"; use "VirtualMachine.sig"; use "VirtualMachine.sml"; open Scanner; open Parser; open Interpreter; open Compiler; open VirtualMachine; val p1 = "x := 1; i := 1; while i < 10 || i = 10 do x := i * x; i := i + 1; od"; val p2 = "x := 12903; y := 7735; while x != y do if x < y then y := y - x; else x := x - y; fi od"; val p3 = "n := 200000000; a := 1; while 4*a*a < n do a := 2 * a; od b := 2 * a; while a+1 != b do d := (b-a)/2; if (a+d)*(a+d) > n then b := b - d; else a := a + d; fi od"; parser (scanner p1); parser (scanner p2); parser (scanner p3); interpreter (parser (scanner p1)); interpreter (parser (scanner p2)); interpreter (parser (scanner p3)); compiler (parser (scanner p1)); compiler (parser (scanner p2)); compiler (parser (scanner p3)); vm (compiler (parser (scanner p1))); vm (compiler (parser (scanner p2))); vm (compiler (parser (scanner p3)));