Skip to content
Snippets Groups Projects
Commit 14d63f3c authored by ik1g19's avatar ik1g19
Browse files

how tf do u parse macros

parent 0c4c72c5
Branches
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment