ParseResult comes in three flavors:
- Success, with a marker as to the start of the match and the next character to be matched.
- Failure, with a marker as to the start of where the match was attempted. In this case the parser backtracks to that position, where it will be when parsing continues.
- Error, which stops the parsing. No backtracking or further parsing occurs.