From 14d63f3c2f435a6f4afa25f206e62a51f2c20e83 Mon Sep 17 00:00:00 2001
From: ik1g19 <ik1g19@soton.ac.uk>
Date: Sat, 2 Jan 2021 21:43:21 +0000
Subject: [PATCH] how tf do u parse macros

---
 cw/src/Challenges.hs | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/cw/src/Challenges.hs b/cw/src/Challenges.hs
index 1264c19..cca5fb0 100644
--- a/cw/src/Challenges.hs
+++ b/cw/src/Challenges.hs
@@ -323,39 +323,45 @@ parseLamMacro _ = Nothing
 
 macroExpr :: Parse LamMacroExpr
 macroExpr = do string "def"
-               space
-               name <- macroName
-               space
-
+               name  <- token macroName
+               symbol "="
+               e     <- token expr
+               string "in"
+               macro <- many macroExpr
+               return $ LamDef [(name,e)]
 
 
 expr :: Parser LamExpr
 expr = do {x    <- var;      return $ LamVar x}      <|>
+
        do {name <- macroName;return $ LamMacro name} <|>
+
        do e1    <- expr
           space
           e2    <- expr
           return $ LamApp e1 e2                      <|>
+
        do char '\'
           x     <- var
           symbol "->"
           e     <- expr
           return $ LamAbs x e                        <|>
+
        do char '('
-          e     <- identifier
+          e     <- token expr
           char ')'
           return e
 
 
 macroName :: Parser String
 macroName = do name <- some upper
-               return $ name
+               return name
 
 
 var :: Parser Int
 var = do char 'x'
-         x <- some digit
-         return $ read x
+         x <- nat
+         return x
 
 
 
-- 
GitLab