aboutsummaryrefslogtreecommitdiff
path: root/frontend/parse.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/parse.icl')
-rw-r--r--frontend/parse.icl14
1 files changed, 8 insertions, 6 deletions
diff --git a/frontend/parse.icl b/frontend/parse.icl
index 82a88e3..d5b15ef 100644
--- a/frontend/parse.icl
+++ b/frontend/parse.icl
@@ -3676,10 +3676,12 @@ trySimpleNonLhsExpressionT :: !Token *ParseState -> *(!Bool,!ParsedExpr,!*ParseS
trySimpleNonLhsExpressionT BackSlashToken pState
# (token, pState) = nextToken FunctionContext pState
| token == CaseToken
+ # (token, pState) = nextToken FunctionContext pState
+ # pState = if (token == OfToken) id tokenBack pState
# (lam_ident, pState) = internalIdent "_lcl" pState
(case_ident, pState) = internalIdent "_lcc" pState
(arg_ident, pState) = internalIdent "_lca" pState
- (alts, pState) = wantCaseOfExp pState
+ (alts, pState) = wantCaseAlts pState
(file_name, line_nr, pState)
= getFileAndLineNr pState
position = FunPos file_name line_nr lam_ident.id_name
@@ -4177,13 +4179,13 @@ wantCaseExp :: !ParseState -> (ParsedExpr, !ParseState)
wantCaseExp pState
# (case_ident, pState) = internalIdent "_c" pState
# (case_exp, pState) = wantExpression pState
- # (alts, pState) = wantCaseOfExp pState
+ # pState = wantToken FunctionContext "case expression" OfToken pState
+ # (alts, pState) = wantCaseAlts pState
= (PE_Case case_ident case_exp alts, pState)
-wantCaseOfExp :: !ParseState -> ([CaseAlt], !ParseState)
-wantCaseOfExp pState
- # pState = wantToken FunctionContext "case expression" OfToken pState
- pState = wantBeginGroup "case" pState
+wantCaseAlts :: !ParseState -> ([CaseAlt], !ParseState)
+wantCaseAlts pState
+ # pState = wantBeginGroup "case" pState
(case_alts, (definingSymbol,pState))
= parseList tryCaseAlt (RhsDefiningSymbolCase, pState)
(found, alt, pState) = tryLastCaseAlt definingSymbol pState