diff --git a/Grammar.cf b/Grammar.cf index b7b4af3..a9ef462 100644 --- a/Grammar.cf +++ b/Grammar.cf @@ -65,8 +65,8 @@ internal EVar. Exp4 ::= LIdent; EApp. Exp3 ::= Exp3 Exp4; EAdd. Exp2 ::= Exp2 "+" Exp3; ELet. Exp1 ::= "let" Bind "in" Exp1; - EAbsS. Exp1 ::= "\\" Pattern "." Exp1; -internal EAbs. Exp1 ::= "\\" LIdent "." Exp1; +-- EAbsS. Exp1 ::= "\\" Pattern "." Exp1; + EAbs. Exp1 ::= "\\" LIdent "." Exp1; ECase. Exp1 ::= "case" Exp "of" "{" [Branch] "}"; EAnn. Exp ::= Exp1 ":" Type; diff --git a/src/Desugar/Desugar.hs b/src/Desugar/Desugar.hs index ef4b66c..601f7da 100644 --- a/src/Desugar/Desugar.hs +++ b/src/Desugar/Desugar.hs @@ -62,18 +62,18 @@ desugarInj (Inj ident typ) = Inj ident (desugarType typ) desugarExp :: Exp -> Exp desugarExp = \case - EApp e1 e2 -> EApp (desugarExp e1) (desugarExp e2) - EAdd e1 e2 -> EAdd (desugarExp e1) (desugarExp e2) - EAbs i e -> EAbs i (desugarExp e) - EAbsS pat e -> EAbs (LIdent "$zz$") (ECase (EVar "$zz$") [Branch (desugarPattern pat) (desugarExp e)]) - ELet b e -> ELet (desugarBind b) (desugarExp e) - ECase e br -> ECase (desugarExp e) (map desugarBranch br) - EAnn e t -> EAnn (desugarExp e) t + EApp e1 e2 -> EApp (desugarExp e1) (desugarExp e2) + EAdd e1 e2 -> EAdd (desugarExp e1) (desugarExp e2) + EAbs i e -> EAbs i (desugarExp e) + -- EAbsS pat e -> EAbs (LIdent "$zz$") (ECase (EVar "$zz$") [Branch (desugarPattern pat) (desugarExp e)]) + ELet b e -> ELet (desugarBind b) (desugarExp e) + ECase e br -> ECase (desugarExp e) (map desugarBranch br) + EAnn e t -> EAnn (desugarExp e) t EVarS (VSymbol (Symbol symb)) -> EVar (LIdent $ fixName symb) EVarS (VIdent (LIdent ident)) -> EVar $ LIdent $ fixName ident - EVar i -> EVar i - ELit l -> ELit l - EInj i -> EInj i + EVar i -> EVar i + ELit l -> ELit l + EInj i -> EInj i desugarBranch :: Branch -> Branch desugarBranch (Branch p e) = Branch (desugarPattern p) (desugarExp e)