Fix first character always getting parser applied before stop

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent 81dbdd8d69
commit acbb5387cd

View File

@@ -279,7 +279,7 @@ func optional*(parserFn: Parser -> ParserResult): (Parser -> ParserResult) {.inl
func manyUntil*(acceptFn: Parser -> ParserResult, stopFn: Parser -> ParserResult): (Parser -> ParserResult) {.inline.} =
## Parse characters but throw success tokens away
return proc(parser: Parser): ParserResult =
var res: ParserResult = acceptFn(parser)
var res: ParserResult = parser.ok()
while res.isOk() and res.flatMap(stopFn).isErr():
res = res.flatMap(acceptFn)
return res