From 10b58252784585d102006355fa16111867d55ce6 Mon Sep 17 00:00:00 2001 From: darkf Date: Fri, 1 Nov 2013 21:17:36 -0700 Subject: [PATCH] parser2: add lambda and definitions --- parser2.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/parser2.hs b/parser2.hs index fc57a96..e6bb30c 100644 --- a/parser2.hs +++ b/parser2.hs @@ -63,11 +63,19 @@ tuple :: AST doblock :: AST = "do" semistatements "end" { Block $1 } +lambda :: AST + = "\\" funpattern "->" expr { Lambda [($1, $2)] } + +def :: AST + = pattern "=" expr { Def $1 $2 } + expr :: AST = expr "(" args ")" { Call $1 $2 } / expr "::" expr { Cons $1 $2 } / expr "+" fact { Add $1 $2 } / expr "-" fact { Sub $1 $2 } + / def + / lambda / identifier "(" funpattern ")" "->" expr { Defun $1 (Lambda [($2, $3)]) } / fact