Cap error on error line
This commit is contained in:
@@ -7,6 +7,7 @@ import std/collections/tables
|
|||||||
import results
|
import results
|
||||||
import fusion/matching
|
import fusion/matching
|
||||||
import fp/maybe
|
import fp/maybe
|
||||||
|
import ../utils/str
|
||||||
|
|
||||||
{.experimental: "caseStmtMacros".}
|
{.experimental: "caseStmtMacros".}
|
||||||
|
|
||||||
@@ -106,23 +107,30 @@ proc `$`*(x: ParserError): string =
|
|||||||
of charMismatchErr(expected: @expected, parser: @parser, index: @index, unexpected: @unexpected):
|
of charMismatchErr(expected: @expected, parser: @parser, index: @index, unexpected: @unexpected):
|
||||||
# TODO: Only works for single line right now
|
# TODO: Only works for single line right now
|
||||||
let original = parser.state.stream
|
let original = parser.state.stream
|
||||||
|
.deleteAfterNewline(parser.state.position)
|
||||||
let errSpace = " ".repeat(max(0, index))
|
let errSpace = " ".repeat(max(0, index))
|
||||||
|
|
||||||
|
|
||||||
|
$index & $parser &
|
||||||
&"""Parsing Error (Character Mismatch Error):
|
&"""Parsing Error (Character Mismatch Error):
|
||||||
{original}
|
{original}
|
||||||
{errSpace}^ Expected '{expected}' but got '{unexpected}'"""
|
{errSpace}^ Expected '{expected}' but got '{unexpected}'"""
|
||||||
of choiceMismatchErr(expected: @expected, parser: @parser, index: @index, unexpected: @unexpected):
|
of choiceMismatchErr(expected: @expected, parser: @parser, index: @index, unexpected: @unexpected):
|
||||||
let original = parser.state.stream
|
let original = parser.state.stream
|
||||||
|
.deleteAfterNewline(parser.state.position)
|
||||||
let errSpace = " ".repeat(max(0, index))
|
let errSpace = " ".repeat(max(0, index))
|
||||||
|
|
||||||
|
$index & $parser &
|
||||||
&"""Parsing Error (Character Mismatch Error):
|
&"""Parsing Error (Character Mismatch Error):
|
||||||
{original}
|
{original}
|
||||||
{errSpace}^ Expected '{expected}' but got '{unexpected}'"""
|
{errSpace}^ Expected '{expected}' but got '{unexpected}'"""
|
||||||
|
|
||||||
of endOfStringErr(parser: @parser, index: @index):
|
of endOfStringErr(parser: @parser, index: @index):
|
||||||
let original = parser.state.stream
|
let original = parser.state.stream
|
||||||
|
.deleteAfterNewline(parser.state.position)
|
||||||
let errSpace = " ".repeat(max(0, index))
|
let errSpace = " ".repeat(max(0, index))
|
||||||
|
|
||||||
|
$index & $parser &
|
||||||
&"""Parsing Error (EndOfString Expected):
|
&"""Parsing Error (EndOfString Expected):
|
||||||
{original}
|
{original}
|
||||||
{errSpace}^ Expected 'EndOfString' at {index} but got {original.len - 1}"""
|
{errSpace}^ Expected 'EndOfString' at {index} but got {original.len - 1}"""
|
||||||
|
|||||||
Reference in New Issue
Block a user