aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Language/SimpleShell/AST/Name.hs3
-rw-r--r--src/Language/SimpleShell/AST/Statement.hs38
2 files changed, 41 insertions, 0 deletions
diff --git a/src/Language/SimpleShell/AST/Name.hs b/src/Language/SimpleShell/AST/Name.hs
index 7b1c115..69162db 100644
--- a/src/Language/SimpleShell/AST/Name.hs
+++ b/src/Language/SimpleShell/AST/Name.hs
@@ -1,6 +1,7 @@
module Language.SimpleShell.AST.Name
( VarName
, FunName
+ , ProcedureName
)
where
@@ -11,3 +12,5 @@ import Data.Text (Text)
type VarName = Text
type FunName = Text
+
+type ProcedureName = Text
diff --git a/src/Language/SimpleShell/AST/Statement.hs b/src/Language/SimpleShell/AST/Statement.hs
new file mode 100644
index 0000000..eb6f8b2
--- /dev/null
+++ b/src/Language/SimpleShell/AST/Statement.hs
@@ -0,0 +1,38 @@
+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)