'the parser may leave a remainder at the end of the string if it doesn\'t
match any of the rules, mark them as unknowns'

def _markunparsedunknown(self):

    parsed = ([False] * len(self.s))
    for (start, end, _, _) in self.allmatches:
        for i in range(start, end):
            parsed[i] = True
    for i in range(len(parsed)):
        c = self.s[i]
        if c.isspace():
            parsed[i] = True
        if (((not self.ast) or (i > self.ast.pos[1])) and (c == '#')):
            comment = matchresult(i, len(parsed), helpconstants.COMMENT, None)
            self.groups[0].results.append(comment)
            break
        if (not parsed[i]):
            self.groups[0].results.append(self.unknown(c, i, (i + 1)))
    self.groups[0].results.sort(key=(lambda mr: mr.start))
