aboutsummaryrefslogtreecommitdiff
path: root/src/Language/SimpleShell/AST/Expr.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/SimpleShell/AST/Expr.hs')
-rw-r--r--src/Language/SimpleShell/AST/Expr.hs47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Language/SimpleShell/AST/Expr.hs b/src/Language/SimpleShell/AST/Expr.hs
new file mode 100644
index 0000000..0aaf16d
--- /dev/null
+++ b/src/Language/SimpleShell/AST/Expr.hs
@@ -0,0 +1,47 @@
+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
+
+
+-- | Pure expression (no side effects).
+data Expr
+ = IntLiteral Integer
+ | StrLiteral String
+ | BoolLiteral Bool
+ | Var VarName
+ | FunCall FunName [Expr]
+ | And Expr Expr
+ | Or Expr Expr
+ | Not Expr
+ | Eq Expr Expr
+ | Neq Expr Expr
+ | Gt Expr Expr
+ | Ge Expr Expr
+ | Lt Expr Expr
+ | Le Expr Expr
+ | Add Expr Expr
+ | Sub Expr Expr
+ | Mul Expr Expr
+ | Div Expr Expr
+ | UMinus Expr
+ | Concat Expr Expr
+ | Ternary Expr Expr Expr
+ | Length Expr
+ | IntCast Expr
+ | StrCast Expr
+ deriving (Show)
+
+type TypedExpr = (SimpleType, Expr)