module Language.SimpleShell.AST.Statement ( Statement(..) ) where import Data.Text (Text) import Language.SimpleShell.AST.Expr (Expr) import Language.SimpleShell.AST.Name (VarName, ProcedureName) data Statement = Assign VarName Expr | Print Expr | PrintErr Expr | Read (Maybe Char) -- ^ delimiter VarName | If Expr [Statement] [Statement] | While Expr [Statement] | RunCommand (Maybe VarName) -- ^ return code (Maybe VarName) -- ^ return value (Maybe VarName) -- ^ stdout (Maybe VarName) -- ^ stderr Command (Maybe VarName) -- ^ stdin | Return Expr -- ^ return code Expr -- ^ return value deriving (Show) data Command = ExtCommand Text | ProcedureCall ProcedureName [Expr] deriving (Show)