add basic pattern to parser and fix some symbol stuff
This commit is contained in:
parent
5b4118ef8c
commit
ded743f2b1
20
parser.hs
20
parser.hs
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue