diff --git a/src/parser/parser.nim b/src/parser/parser.nim index 8de9272..a0199a7 100644 --- a/src/parser/parser.nim +++ b/src/parser/parser.nim @@ -97,6 +97,15 @@ proc `$`*(x: ParserError): string = &"""Parsing Error (Character Mismatch Error): {original} {errSpace}^ Expected '{expected}' but got '{unexpected}'""" + + of endOfStringErr(parser: @parser, index: @index): + let original = parser.state.stream + let errSpace = " ".repeat(max(0, index)) + + &"""Parsing Error (EndOfString Expected): +{original} +{errSpace}^ Expected 'EndOfString'""" + else: "ParseError" proc initParser*(str: string): Parser = @@ -330,7 +339,9 @@ proc foldBuilder*[T, T2]( when isMainModule: proc getTokens(x: ParserResult): seq[char] = x.foldTokens( - proc(err: ParserError): seq[char] = @[], + proc(err: ParserError): seq[char] = + echo err + @[], proc(xs: seq[Token]): seq[char] = xs.map((x: Token) => x.value), ) @@ -350,8 +361,8 @@ when isMainModule: ] assert: "ABC".testParser(andParser) == @['A', 'B', 'C'] - # let newlineParser = @[ - # str("ABC"), - # newline - # ] - # echo initParserResult("ABC").parseSeq(newLineParser) + let newlineParser = @[ + str("ABC"), + newline + ] + echo "ABC".testParser(newlineParser)