module Util0 where { import Util0Type; import Util0Parser; {---------------------------------------------------------------------- インタプリタその0 * 基本形 Expr -> Expr * Expr | Expr + Expr | Const | ( Expr ) ----------------------------------------------------------------------} interp :: Expr -> Value; interp (Const c) = c; interp (Add m n) = let { Num c = interp m; Num d = interp n } in Num (c+d); interp (Mult m n) = let { Num c = interp m; Num d = interp n } in Num (c*d); run :: String -> String; run str = showValue (interp (myParse str)); main :: IO (); main = interact run; load :: String -> IO (); load path = readFile path >>= \ prog -> putStrLn (run prog); }