add basic pattern to parser and fix some symbol stuff

This commit is contained in:
darkf 2013-10-19 01:36:59 -07:00
parent 5b4118ef8c
commit ded743f2b1
1 changed files with 12 additions and 8 deletions

View File

@ -43,13 +43,18 @@ block = do
reserved "end"
return $ Block lst
pattern = option UnitP $
fmap VarP identifier
<|> fmap IntP integer
funDef = do
name <- identifier
reserved "("
reserved ")"
reserved "->"
symbol "("
pat <- pattern
symbol ")"
symbol "->"
lst <- exprparser
return $ rewriteFun (FunDef name (UnitP, lst))
return $ rewriteFun (FunDef name (pat, lst))
-- curry FunDef to a definition of lambdas
rewriteFun (FunDef name (pattern, body)) =
@ -58,12 +63,11 @@ rewriteFun (FunDef name (pattern, body)) =
call = do
name <- identifier
whiteSpace
char '('
char ')'
whiteSpace
symbol "("
symbol ")"
return $ Call name [UnitConst]
term = block
term = try block
<|> try funDef
<|> try call
<|> parens exprparser