egison 1.0.2 → 1.0.3
raw patch · 2 files changed
+22/−3 lines, 2 files
Files
- Egison.hs +20/−1
- egison.cabal +2/−2
Egison.hs view
@@ -8,6 +8,7 @@ import qualified Text.Parsec.Token as P import Text.Parsec.Language (haskellDef) import IO hiding (try)+import Paths_egison welcomeMsg :: String welcomeMsg = "Egison, version 1.0.2 : http://hagi.is.s.u-tokyo.ac.jp/~egi/egison/\nWelcome to Egison Interpreter!\n"@@ -122,7 +123,8 @@ val <- eval [topFrame] expr ret <- liftIO (showValue val) return (ret ++ "\n")-executeTopExpression defs (Load filename) = do+executeTopExpression defs (Load libname) = do+ filename <- liftIO (getDataFileName libname) mStr <- liftIO (readEgisonFile filename) case mStr of Nothing -> throwError (Default "load error")@@ -132,6 +134,16 @@ topExpr:rest -> do executeTopExpression defs topExpr loop rest in loop topExprs+executeTopExpression defs (LoadFile filename) = do+ mStr <- liftIO (readEgisonFile filename)+ case mStr of+ Nothing -> throwError (Default "load-file error")+ Just str -> do topExprs <- readTopExpressionList str+ let loop topExprs2 = case topExprs2 of+ [] -> return (filename ++ " loaded\n")+ topExpr:rest -> do executeTopExpression defs topExpr+ loop rest+ in loop topExprs executeTopExpression defs Execute = do topFrame <- makeTopFrame defs mainFn <- eval [topFrame] (VariableExp "main" [])@@ -173,6 +185,7 @@ data TopExpression = Define String Expression | Test Expression | Load String+ | LoadFile String | Execute data Expression = CharacterExp Char@@ -551,6 +564,11 @@ filename <- stringLiteral spaces return (Load filename)+ <|> do try (string "load-file")+ spaces+ filename <- stringLiteral+ spaces+ return (LoadFile filename) ) <?> "top expression" parseExpression :: Parser Expression@@ -786,6 +804,7 @@ showTopExpression (Define name expr) = "(define $" ++ name ++ " " ++ show expr ++ ")" showTopExpression (Test expr) = "(test " ++ show expr ++ ")" showTopExpression (Load expr) = "(load " ++ show expr ++ ")"+showTopExpression (LoadFile expr) = "(load-file " ++ show expr ++ ")" showTopExpression Execute = "(execute)" instance Show TopExpression where show = showTopExpression
egison.cabal view
@@ -7,7 +7,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 1.0.2+Version: 1.0.3 -- A short (one-line) description of the package. Synopsis: An Interpreter for the Programming Language Egison@@ -63,7 +63,7 @@ Build-depends: base >= 4.0 && < 5, haskell98, mtl, parsec >= 3.0 -- Modules not exported by this package.- -- Other-modules: + Other-modules: Paths_egison -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source. -- Build-tools: