aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEinhard Leichtfuß <alguien@respiranto.de>2025-05-19 14:05:36 +0200
committerEinhard Leichtfuß <alguien@respiranto.de>2025-05-19 14:05:36 +0200
commit1eef63739d9da401bdd4c89da2cfd8d3d9b7acb6 (patch)
tree81bcf26963a99d2c23e0535cd2b53f5416996236
parent1e9e4db59aa48e28ed14fe2498fe5ae940f21e96 (diff)
Add Function AST
-rw-r--r--src/Language/SimpleShell/AST/Expr.hs13
-rw-r--r--src/Language/SimpleShell/AST/Function.hs12
-rw-r--r--src/Language/SimpleShell/AST/Name.hs13
-rw-r--r--src/Language/SimpleShell/AST/SimpleType.hs3
-rw-r--r--src/Language/SimpleShell/Parser.hs2
-rw-r--r--src/Language/SimpleShell/Parser/Expr.hs3
6 files changed, 34 insertions, 12 deletions
diff --git a/src/Language/SimpleShell/AST/Expr.hs b/src/Language/SimpleShell/AST/Expr.hs
index 0aaf16d..53b33f4 100644
--- a/src/Language/SimpleShell/AST/Expr.hs
+++ b/src/Language/SimpleShell/AST/Expr.hs
@@ -1,19 +1,12 @@
module Language.SimpleShell.AST.Expr
( Expr(..)
, TypedExpr
- , VarName
- , FunName
)
where
-import Language.SimpleShell.AST.SimpleType (SimpleType)
-
-import Data.Text (Text)
-
-
-type VarName = Text
-type FunName = Text
+import Language.SimpleShell.AST.Name (FunName, VarName)
+import Language.SimpleShell.AST.SimpleType (Typed)
-- | Pure expression (no side effects).
@@ -44,4 +37,4 @@ data Expr
| StrCast Expr
deriving (Show)
-type TypedExpr = (SimpleType, Expr)
+type TypedExpr = Typed Expr
diff --git a/src/Language/SimpleShell/AST/Function.hs b/src/Language/SimpleShell/AST/Function.hs
new file mode 100644
index 0000000..7594c0d
--- /dev/null
+++ b/src/Language/SimpleShell/AST/Function.hs
@@ -0,0 +1,12 @@
+module Language.SimpleShell.AST.Function
+ ( Function(..)
+ )
+where
+
+
+import Language.SimpleShell.AST.Expr (Expr)
+import Language.SimpleShell.AST.Name (VarName)
+
+
+data Function = Function [VarName] Expr
+ deriving (Show)
diff --git a/src/Language/SimpleShell/AST/Name.hs b/src/Language/SimpleShell/AST/Name.hs
new file mode 100644
index 0000000..7b1c115
--- /dev/null
+++ b/src/Language/SimpleShell/AST/Name.hs
@@ -0,0 +1,13 @@
+module Language.SimpleShell.AST.Name
+ ( VarName
+ , FunName
+ )
+where
+
+
+import Data.Text (Text)
+
+
+type VarName = Text
+
+type FunName = Text
diff --git a/src/Language/SimpleShell/AST/SimpleType.hs b/src/Language/SimpleShell/AST/SimpleType.hs
index 733f19a..a919529 100644
--- a/src/Language/SimpleShell/AST/SimpleType.hs
+++ b/src/Language/SimpleShell/AST/SimpleType.hs
@@ -1,5 +1,6 @@
module Language.SimpleShell.AST.SimpleType
( SimpleType(..)
+ , Typed
, FunSig
)
where
@@ -11,4 +12,6 @@ data SimpleType
| BoolType
deriving (Show, Eq)
+type Typed a = (SimpleType, a)
+
type FunSig = (SimpleType, [SimpleType])
diff --git a/src/Language/SimpleShell/Parser.hs b/src/Language/SimpleShell/Parser.hs
index 0fb3ad3..dd65ffe 100644
--- a/src/Language/SimpleShell/Parser.hs
+++ b/src/Language/SimpleShell/Parser.hs
@@ -11,7 +11,7 @@ module Language.SimpleShell.Parser
where
-import Language.SimpleShell.AST.Expr (FunName, VarName)
+import Language.SimpleShell.AST.Name (FunName, VarName)
import Language.SimpleShell.AST.SimpleType (SimpleType, FunSig)
import Control.Monad.Reader (ask, ReaderT, runReaderT)
diff --git a/src/Language/SimpleShell/Parser/Expr.hs b/src/Language/SimpleShell/Parser/Expr.hs
index 57b1d22..ac6c340 100644
--- a/src/Language/SimpleShell/Parser/Expr.hs
+++ b/src/Language/SimpleShell/Parser/Expr.hs
@@ -8,7 +8,8 @@ where
import Language.SimpleShell.Parser (Parser, lexeme, lookupVar, lookupFun)
-import Language.SimpleShell.AST.Expr (Expr(..), TypedExpr, VarName, FunName)
+import Language.SimpleShell.AST.Expr (Expr(..), TypedExpr)
+import Language.SimpleShell.AST.Name (FunName, VarName)
import Language.SimpleShell.AST.SimpleType (SimpleType(..))
import Control.Monad.Combinators.FailExpr
( Associativity(..)