def _compile_error_catcher(self, node): if node.etype == 'missing': self._compile_missing_catcher_header(node) elif node.etype == 'failed': self._compile_failed_catcher_header(node) elif node.etype == 'generated': self._compile_generated_catcher_header(node) self._write("def _error_{}_(self, e):".format(self.errors)) self._indent() if node.etype == 'generated': self._write( "return RaisedError('{}'.replace('%!', e.e_trigger), e.pos, e.ctx)" .format( replaces(escape_quotes(node.msg), '{', '<LCB>', '}', '<RCB>'))) else: self._write("return RaisedError('{}', e.pos, e.ctx)".format( replaces(escape_quotes(node.msg), '{', '<LCB>', '}', '<RCB>'))) self._dedent() self._skip_line(1) self.errors += 1
def _compile_warning_catcher(self, node): self._write("@warning('{}', {})".format(node.ctx_rule, node.nb)) self._write("def _warning_{}_(self, w):".format(self.warnings)) self._indent() self._write( "return 'Warning : At <LCB><RCB> : {}'.format(w.pos)".format( replaces(escape_quotes(node.msg), '{', '<LCB>', '}', '<RCB>'))) self._dedent() self._skip_line(1) self.warnings += 1
def _next(self, expected=None, failmsg="Expected {expected}, got {got}."): failmsg = "Line {line} : '{gotvalue}' : " + failmsg if len(self.tokenlist) > self.i + 1: pcur = self.tokenlist[self.i + 1] if not expected or pcur.name == expected: return pcur else: raise KombuError( replaces(failmsg, '{line}', self._pos(), '{gotvalue}', self.tokenlist[self.i].value, '{expected}', expected, '{gottype}', pcur.name)) else: if expected: raise KombuError("{} : Expected {}, got end of file.".format( self._pos(formatted=True), expected))
def __repr__(self): return '< ' + self._gettokentype() + ' ' + replaces( str(self._getattrs()), '[', '', ']', '') + ' >'
def _compile_failed_catcher_header(self, node): self._write("@error('failed', '{}', '{}')".format( node.ctx_rule, replaces(node.arg(0).value, '{', '<LCB>', '}', '<RCB>')))
def _compile_generated_catcher_header(self, node): self._write("@error('generated', '{}', {})".format( node.ctx_rule, replaces(node.arg(0).value)))