Add EndOFString parsing error
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user