summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Bailly <arnaud@pankzsoft.com>2025-10-17 10:14:43 +0200
committerArnaud Bailly <arnaud@pankzsoft.com>2025-10-17 10:14:43 +0200
commit7744ba2b397b808a5a82169f3f771f53f5eeaf7d (patch)
tree246f08388fb52a6dedebc87577570af0f5f80b96
parentc3a175e808b279eb415bcb5dbcb9db5f34035f98 (diff)
downloadlambda-nantes-7744ba2b397b808a5a82169f3f771f53f5eeaf7d.tar.gz
feat: introduce parser and AST
-rw-r--r--lambda-calcul/haskell/minilang.cabal2
-rw-r--r--lambda-calcul/haskell/src/Minilang/Lambda/Parser.hs12
-rw-r--r--lambda-calcul/haskell/test/Minilang/Lambda/ParserSpec.hs9
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")