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