Enable parser error handler displays tokens instead of line numbers
This commit is contained in:
@@ -288,8 +288,8 @@ parse :: [Token] -> Either String AST
|
|||||||
parse tokens = do
|
parse tokens = do
|
||||||
let lines = U.explode (==NewLine) tokens
|
let lines = U.explode (==NewLine) tokens
|
||||||
let results = map (assertConsumed parseLine) lines
|
let results = map (assertConsumed parseLine) lines
|
||||||
let errors = filter ((==Nothing) . snd) (zipWith (,) [1..] $ results)
|
let errors = filter ((==Nothing) . snd) $ zipWith (,) lines $ results
|
||||||
let errorMsg = "Parse error in line(s): " ++ (List.intercalate ", " $ map (show. fst) errors)
|
let errorMsg = "Parse error(s):\n" ++ (List.intercalate "\n" $ map (show . fst) errors)
|
||||||
case sequenceA results of
|
case sequenceA results of
|
||||||
(Just r) -> return $ ProgramNode $ map (\(ParseResult ast _) -> ast) r
|
(Just r) -> return $ ProgramNode $ map (\(ParseResult ast _) -> ast) r
|
||||||
Nothing -> Left errorMsg
|
Nothing -> Left errorMsg
|
||||||
|
|||||||
Reference in New Issue
Block a user