diff options
| -rw-r--r-- | lambda-calcul/haskell/minilang.cabal | 2 | ||||
| -rw-r--r-- | lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs | 12 | ||||
| -rw-r--r-- | lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs | 9 |
3 files changed, 23 insertions, 0 deletions
diff --git a/lambda-calcul/haskell/minilang.cabal b/lambda-calcul/haskell/minilang.cabal index 7c9c266..716951c 100644 --- a/lambda-calcul/haskell/minilang.cabal +++ b/lambda-calcul/haskell/minilang.cabal @@ -29,6 +29,7 @@ library Minilang.Lambda.Unify Minilang.Lambda.Eval Minilang.Lambda.Infer + Minilang.Lambda.Parser hs-source-dirs: src default-extensions: @@ -64,6 +65,7 @@ test-suite minilang-test Minilang.IOSpec Minilang.Lambda.InferSpec Minilang.Lambda.EvalSpec + Minilang.Lambda.ParserSpec hs-source-dirs: test default-extensions: diff --git a/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs new file mode 100644 index 0000000..719fac2 --- /dev/null +++ b/lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs @@ -0,0 +1,12 @@ +module Minilang.Lambda.Parser where + +import Data.Text (Text) + +data ParseError = ParseError + deriving (Eq, Show) + +data AST = Sym Text + deriving (Eq, Show) + +parse :: Text -> Either ParseError AST +parse = undefined diff --git a/lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs b/lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs new file mode 100644 index 0000000..284c1af --- /dev/null +++ b/lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs @@ -0,0 +1,9 @@ +module Minilang.Lambda.ParserSpec where + +import Minilang.Lambda.Parser (AST (..), parse) +import Test.Hspec (Spec, it, parallel, shouldBe) + +spec :: Spec +spec = parallel $ do + it "parses a variable" $ do + parse "x" `shouldBe` Right (Sym "x") |
