Limit scope of 'try' for lambda

This improves error messages, because we don't backtrack anymore after
we succeeded parsing a lambda arglist.
This commit is contained in:
Benno Fünfstück 2014-08-16 10:07:03 +02:00
parent 77f8d98713
commit ba83f13342

View file

@ -72,7 +72,7 @@ nixTerm = choice
, nixBool
, nixNull
, nixPath -- can be expensive due to back-tracking
, try nixLambda <|> nixSet
, nixLambda <|> nixSet
, nixStringExpr
, nixSym
] <* whiteSpace
@ -118,7 +118,7 @@ nixIf = fmap Fix $ NIf
<*> (whiteSpace *> reserved "else" *> nixApp)
nixLambda :: Parser NExpr
nixLambda = Fix <$> (NAbs <$> (argExpr <?> "arguments") <*> nixApp)
nixLambda = Fix <$> (NAbs <$> (try argExpr <?> "arguments") <*> nixApp)
nixStringExpr :: Parser NExpr
nixStringExpr = Fix . NStr <$> nixString