diff --git a/parse.py b/parse.py index d7e9322..111508a 100644 --- a/parse.py +++ b/parse.py @@ -75,22 +75,24 @@ log.log(log.LEXER, log.TRACE, "Read token '%s' at line %i column %i" % (token, line, column)) return (token, line, column) - def skip_note(self): + def skip_note(self, line, column): log.log(log.LEXER, log.TRACE, "Skipping tokens until EndNote") + context = ParseContext(None, "reading note", line, column) (token, _, _) = self.read_token() while token and token != "EndNote": (token, _, _) = self.read_token() if not token: - raise ParseError(None, "Hit end of file when reading note") + raise ParseError(context, "Hit end of file before EndNote") - def read_text(self): + def read_text(self, line, column): log.log(log.LEXER, log.TRACE, "Reading characters until EndText") + context = ParseContext(None, "reading text", line, column) start = self.pos (token, _, _) = self.read_token() while token and token != "EndText": (token, _, _) = self.read_token() if not token: - raise ParseError(None, "Hit end of file when reading text") + raise ParseError(context, "Hit end of file before EndText") else: return self.code[start:self.pos - len(" EndText") - 1] @@ -109,12 +111,12 @@ (token, line, column) = self.read_token() while token: if token == "BeginNote": - self.skip_note() + self.skip_note(line, column) (token, line, column) = self.read_token() continue elif token == "BeginText": type = "text" - value = self.read_text() + value = self.read_text(line, column) elif token in keywords: type = "keyword" value = token