diff options
author | Einhard Leichtfuß <alguien@respiranto.de> | 2025-05-19 14:05:36 +0200 |
---|---|---|
committer | Einhard Leichtfuß <alguien@respiranto.de> | 2025-05-19 14:05:36 +0200 |
commit | 1eef63739d9da401bdd4c89da2cfd8d3d9b7acb6 (patch) | |
tree | 81bcf26963a99d2c23e0535cd2b53f5416996236 | |
parent | 1e9e4db59aa48e28ed14fe2498fe5ae940f21e96 (diff) |
Add Function AST
-rw-r--r-- | src/Language/SimpleShell/AST/Expr.hs | 13 | ||||
-rw-r--r-- | src/Language/SimpleShell/AST/Function.hs | 12 | ||||
-rw-r--r-- | src/Language/SimpleShell/AST/Name.hs | 13 | ||||
-rw-r--r-- | src/Language/SimpleShell/AST/SimpleType.hs | 3 | ||||
-rw-r--r-- | src/Language/SimpleShell/Parser.hs | 2 | ||||
-rw-r--r-- | src/Language/SimpleShell/Parser/Expr.hs | 3 |
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(..) |