aboutsummaryrefslogtreecommitdiff
path: root/src/parser/Statement.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-03 15:41:17 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-03 15:41:17 +0200
commit5e7d3a5ff586ac75b768a9a1c1f2d5b80960e821 (patch)
treea7f7c50ded23536dd45cbaa7ae7987472bc06932 /src/parser/Statement.hs
parent99e5658feb48f15f85eaf9680affea2f490459bb (diff)
downloadcomputorv2-5e7d3a5ff586ac75b768a9a1c1f2d5b80960e821.tar.gz
computorv2-5e7d3a5ff586ac75b768a9a1c1f2d5b80960e821.tar.bz2
computorv2-5e7d3a5ff586ac75b768a9a1c1f2d5b80960e821.zip
Back to where I was but without the mess
Diffstat (limited to 'src/parser/Statement.hs')
-rw-r--r--src/parser/Statement.hs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/parser/Statement.hs b/src/parser/Statement.hs
new file mode 100644
index 0000000..ca16eca
--- /dev/null
+++ b/src/parser/Statement.hs
@@ -0,0 +1,27 @@
+module Parser.Statement where
+
+import Control.Applicative
+
+import Expr
+import Parser.Core
+import Parser.Expr
+
+
+data Statement
+ = Evaluation Expr
+ | VariableDeclaration String Expr
+ | FunctionDeclaration String String Expr
+
+statementP :: Parser Statement
+statementP = functionDeclarationP <|> variableDeclarationP <|> evaluationP
+ where
+ functionDeclarationP = FunctionDeclaration
+ <$> alphaStringP
+ <*> parenthesis alphaStringP
+ <*> (char '=' *> exprP)
+
+ variableDeclarationP = VariableDeclaration
+ <$> alphaStringP
+ <*> (char '=' *> exprP)
+
+ evaluationP = Evaluation <$> exprP <* char '=' <* char '?'