aboutsummaryrefslogtreecommitdiff
path: root/src/parser/assignment.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-03-16 12:09:27 +0100
committerCharles <sircharlesaze@gmail.com>2020-03-16 12:09:27 +0100
commitd17423cba7c15a26f835a6fa578ecb48b80d8aab (patch)
tree55b6ee4447ac61dcbc949acc5aa2436e014d2392 /src/parser/assignment.hs
parentd8751f2cced8f14366533ff0dbbc62fa73ec8665 (diff)
downloadcomputorv2-d17423cba7c15a26f835a6fa578ecb48b80d8aab.tar.gz
computorv2-d17423cba7c15a26f835a6fa578ecb48b80d8aab.tar.bz2
computorv2-d17423cba7c15a26f835a6fa578ecb48b80d8aab.zip
split parser in multiple modules, parsing of assignment and statement
Diffstat (limited to 'src/parser/assignment.hs')
-rw-r--r--src/parser/assignment.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/parser/assignment.hs b/src/parser/assignment.hs
new file mode 100644
index 0000000..bb782f5
--- /dev/null
+++ b/src/parser/assignment.hs
@@ -0,0 +1,15 @@
+module Parser.Assignment where
+
+import Control.Applicative
+import Parser.Core
+import qualified Parser.Expr as E
+import Assignment
+
+variableP :: Parser Assignment
+variableP = Variable <$> alphaStringP <* char '=' <*> E.exprP
+
+functionP :: Parser Assignment
+functionP = Function <$> alphaStringP <*> parenthesize alphaStringP <* char '=' <*> E.exprP
+
+assignmentP :: Parser Assignment
+assignmentP = variableP <|> functionP