From c854a69bc985759d3238a0ef1b9aaa75db8da979 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sat, 5 Oct 2024 15:06:40 -0700 Subject: Fix constructors in parser.sml. --- elab.sml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) (limited to 'elab.sml') diff --git a/elab.sml b/elab.sml index 33f1a10..84b99a9 100644 --- a/elab.sml +++ b/elab.sml @@ -186,18 +186,6 @@ struct in (patterns, occurrences, actions) end - (* There's ambiguity between pattern variables and constructors that can only - * be resolved by looking up each pattern variable in the constructors map *) - fun fixConstructors (env : env) (expr : Syntax.pat) = - case expr of - Syntax.PTuple t => Syntax.PTuple (map (fixConstructors env) t) - | Syntax.PVar v => - if isSome (lookupCon [v] env) - then Syntax.PCon ([v], Syntax.PTuple []) - else Syntax.PVar v - | Syntax.PCon (s, p) => Syntax.PCon (s, fixConstructors env p) - | _ => expr - fun compilePatternMatching (env : env) ([] : Syntax.pat list list, _ : Syntax.lexp list, _ : Syntax.lexp list) : Syntax.lexp = raise Fail "nonexhaustive match" | compilePatternMatching env (patterns as firstRow :: rows, occurrences, actions) = @@ -297,7 +285,6 @@ struct and elabCase (env : env) (expr : Syntax.lexp) (arms : (Syntax.pat * Syntax.expr) list) = let - val arms = map (fn (p, e) => (fixConstructors env p, e)) arms val patterns = transpose (patternMatrix (map (fn (x, _) => x) arms)) val occurrences = occurrenceVector expr (map (fn (x, _) => x) arms) val actions = actionVector env expr arms @@ -331,6 +318,7 @@ struct | go _ [] _ = raise Fail "go empty" in go env accessors s end + | Syntax.EIdent [] => raise Fail "invalid syntax" | Syntax.EBuiltin builtin => Syntax.LPrim (primop builtin) | Syntax.EInt i => Syntax.LInt i | Syntax.EStr s => Syntax.LString s -- cgit v1.3.1