From 4847ee60fbf90c1a4fd07c21de97538da10c3ba8 Mon Sep 17 00:00:00 2001 From: Dmitry Boulytchev Date: Sun, 25 Feb 2018 14:59:59 +0300 Subject: [PATCH] Intermediate --- src/Driver.ml | 4 ++-- src/Language.ml | 2 +- src/SM.ml | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Driver.ml b/src/Driver.ml index 604223660..4082ccbab 100644 --- a/src/Driver.ml +++ b/src/Driver.ml @@ -21,7 +21,7 @@ let main = let stack = Sys.argv.(1) = "-s" in let infile = Sys.argv.(2) in match parse infile with - | `Ok ((_, stmt) as prog) -> + | `Ok prog -> let rec read acc = try let r = read_int () in @@ -33,7 +33,7 @@ let main = let output = if interpret then Language.eval prog input - else SM.eval (SM.compile prog) input + else SM.run (SM.compile prog) input in List.iter (fun i -> Printf.printf "%d\n" i) output | `Fail er -> Printf.eprintf "Syntax error: %s\n" er diff --git a/src/Language.ml b/src/Language.ml index fa86e046a..35ffeeb06 100644 --- a/src/Language.ml +++ b/src/Language.ml @@ -94,7 +94,7 @@ module Stmt = (* Statement evaluator - val eval : config -> t -> config + val eval : config -> t -> config Takes a configuration and a statement, and returns another configuration *) diff --git a/src/SM.ml b/src/SM.ml index 7b4dde9e3..bb6bfe275 100644 --- a/src/SM.ml +++ b/src/SM.ml @@ -1,5 +1,5 @@ open GT -open Syntax +open Language (* The type for the stack machine instructions *) @type insn = @@ -39,11 +39,11 @@ let rec eval ((stack, ((st, i, o) as c)) as conf) = function (* Top-level evaluation - val run : int list -> prg -> int list + val run : prg -> int list -> int list Takes an input stream, a program, and returns an output stream this program calculates - *) -let run i p = let (_, (_, _, o)) = eval ([], (Expr.empty, i, [])) p in o +*) +let run p i = let (_, (_, _, o)) = eval ([], (Expr.empty, i, [])) p in o (* Stack machine compiler @@ -52,7 +52,7 @@ let run i p = let (_, (_, _, o)) = eval ([], (Expr.empty, i, [])) p in o Takes a program in the source language and returns an equivalent program for the stack machine - *) +*) let rec compile = let rec expr = function