From 194ebea0b6af3c55d32d94fd80e993286e9007f5 Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Thu, 20 Jan 2022 17:00:00 +0100 Subject: [PATCH] Add custom error setter --- src/parser/parser.nim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/parser/parser.nim b/src/parser/parser.nim index 2298eea..a236499 100644 --- a/src/parser/parser.nim +++ b/src/parser/parser.nim @@ -320,12 +320,22 @@ proc `+`*(parserFnA: Parser -> ParserResult, parserFnB: Parser -> ParserResult): return proc(parser: Parser): ParserResult = parserFnA(parser).flatMap(parserFnB) +proc setErrorExpectedField(err: ParserError, expected: string): ParserError = + ParserError( + kind: err.kind, + unexpected: err.unexpected, + expected: expected, + index: err.index, + parser: err.parser, + ) let newlineParser = choice(@[ ch(NewLines), endOfStream, ]) -proc newline*(parser: Parser): ParserResult = newlineParser(parser) +proc newline*(parser: Parser): ParserResult = + newlineParser(parser) + .mapErr((x: ParserError) => x.setErrorExpectedField("Newline")) proc parseSeq*(parser: ParserResult, xs: seq[Parser -> ParserResult]): ParserResult = xs.foldl(a.flatMap(b), parser)