diff options
author | Einhard Leichtfuß <alguien@respiranto.de> | 2025-05-19 01:57:15 +0200 |
---|---|---|
committer | Einhard Leichtfuß <alguien@respiranto.de> | 2025-05-19 01:57:15 +0200 |
commit | 96b767d7cab6c8ca41f656e41dd57196cb45e233 (patch) | |
tree | 4d551007ae81f52a9430298867664649b66f59fc /src/Language/SimpleShell/AST.hs | |
parent | 3b8dda1e8dc86cd584ee8cba0435abb6bca4301d (diff) |
Expression AST and parser
Deleted old AST.hs; old code shall re-appear.
Diffstat (limited to 'src/Language/SimpleShell/AST.hs')
-rw-r--r-- | src/Language/SimpleShell/AST.hs | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/src/Language/SimpleShell/AST.hs b/src/Language/SimpleShell/AST.hs deleted file mode 100644 index 5a222c3..0000000 --- a/src/Language/SimpleShell/AST.hs +++ /dev/null @@ -1,104 +0,0 @@ -{-# LANGUAGE GADTs #-} - -module Language.SimpleShell.AST -where - -data SimpleType a where - IntType :: SimpleType Integer - StringType :: SimpleType String - BoolType :: SimpleType Bool - -data SimpleTypeList a where - NilTs :: SimpleTypeList () - ConsTs :: SimpleType a -> SimpleTypeList as -> SimpleTypeList (a, as) - --- | Pure expression (no side effects). -data Expr a where - Literal :: SimpleType a -> a -> Expr a - VarE :: Var a -> Expr a - FunctionCall :: FunctionRef a args -> ExprList args -> Expr a - And :: Expr Bool -> Expr Bool -> Expr Bool - Or :: Expr Bool -> Expr Bool -> Expr Bool - Not :: Expr Bool -> Expr Bool - Eq :: Expr a -> Expr a -> Expr Bool - Neq :: Expr a -> Expr a -> Expr Bool - Gt :: Expr Integer -> Expr Integer -> Expr Bool - Ge :: Expr Integer -> Expr Integer -> Expr Bool - Lt :: Expr Integer -> Expr Integer -> Expr Bool - Le :: Expr Integer -> Expr Integer -> Expr Bool - Ternary :: Expr Bool -> Expr a -> Expr a -> Expr a - Length :: Expr String -> Expr Integer - StrToInt :: Expr String -> Expr Integer - IntToStr :: Expr Integer -> Expr String - -data FunctionRef a args = FunctionRef String - -data Function a args - = Function - (Args args) - (Expr a) - -data Function' where - Function' - :: SimpleType a - -> SimpleTypeList as - -> Function a as - -> Function' - -data ExprList a where - NilE :: ExprList () - ConsE :: Expr a -> ExprList as -> ExprList (a, as) - -data Var a = Var (SimpleType a) String - -data Var' where - Var' :: Var a -> Var' - -data Args args where - NilArgs :: Args () - ConsArgs :: Var a -> Args as -> Args (a, as) - -data Statement ret - = AssignExpr ExprAssignment' - | Print (Expr String) - | PrintErr (Expr String) - | If (Expr Bool) [Statement ret] [Statement ret] - | While (Expr Bool) [Statement ret] - | RunCommand - (Maybe (Var Integer)) -- shell return value - (Maybe (Var String)) -- stdout - (Maybe (Var String)) -- stderr - (Command ret) - | RunProcedure ProcAssignment' - | Return (Expr ret) - -data ExprAssignment' where - ExprAssignment' :: Var a -> Expr a -> ExprAssignment' - -data ProcAssignment' where - ProcAssignment' - :: Maybe (Var a) -- procedure return value - -> Maybe (Var String) -- stdout - -> Maybe (Var String) -- stderr - -> ProcRef a args - -> Args args - -> ProcAssignment' - -data Command ret - = ExtCmd (Expr String) [Expr String] - | CompoundCmd [Statement ret] - -data Procedure ret args - = Procedure - (Args args) - [Var'] -- ^ variable declarations - (Command ret) - -data ProcRef ret args = ProcRef String - -data Procedure' where - Procedure' - :: SimpleType ret - -> SimpleTypeList args - -> Procedure ret args - -> Procedure' |