From d940187fd8720e0ab3c00e5a6a7ae8f181c7752d Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sun, 12 Feb 2023 15:37:25 -0800 Subject: Add lambda functions. --- parser.sml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'parser.sml') diff --git a/parser.sml b/parser.sml index cfc6563..7d4d9c2 100644 --- a/parser.sml +++ b/parser.sml @@ -428,7 +428,10 @@ struct bind orelseExpr (fn e2 => const (Syntax.EOrElse (e1, e2)))) <|> const e1) st - and expr : Syntax.expr parser = fn st => typedExp st + and handleExpr : Syntax.expr parser = fn st => orelseExpr st + and raiseExpr : Syntax.expr parser = fn st => handleExpr st + and fnExpr : Syntax.expr parser = fn st => ((reserved "fn" >> reserved "_" >> reserved "=>" >> Syntax.ELambda <$> expr) <|> raiseExpr) st + and expr : Syntax.expr parser = fn st => fnExpr st and dec : Syntax.dec parser = fn st => (reserved "val" >> reserved "_" >> reserved "=" >> Syntax.DVal <$> expr) st val program : Syntax.expr parser = (fn decs => Syntax.ELet (decs, Syntax.EInt 0)) <$> many dec -- cgit v1.3.1