From ded743f2b1a3d6ae8895b986e13c586120aae35e Mon Sep 17 00:00:00 2001 From: darkf Date: Sat, 19 Oct 2013 01:36:59 -0700 Subject: [PATCH] add basic pattern to parser and fix some symbol stuff --- parser.hs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/parser.hs b/parser.hs index 1548063..b888efa 100644 --- a/parser.hs +++ b/parser.hs @@ -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