def parse_definition(self, class_):
start = self.line<EOL>self.consume(tk.NAME)<EOL>name = self.current.value<EOL>self.log.debug("<STR_LIT>", class_.__name__, name)<EOL>self.stream.move()<EOL>if self.current.kind == tk.OP and self.current.value == '<STR_LIT:(>':<EOL><INDENT>parenthesis_level = <NUM_LIT:0><EOL>while True:<EOL><INDENT>if self.current.kind == tk.OP:<EOL><INDENT>if self.current.value == '<STR_LIT:(>':<EOL><INDENT>parenthesis_level += <NUM_LIT:1><EOL><DEDENT>elif self.current.value == '<STR_LIT:)>':<EOL><INDENT>parenthesis_level -= <NUM_LIT:1><EOL>if parenthesis_level == <NUM_LIT:0>:<EOL><INDENT>break<EOL><DEDENT><DEDENT><DEDENT>self.stream.move()<EOL><DEDENT><DEDENT>if self.current.kind != tk.OP or self.current.value != '<STR_LIT::>':<EOL><INDENT>self.leapfrog(tk.OP, value="<STR_LIT::>")<EOL><DEDENT>else:<EOL><INDENT>self.consume(tk.OP)<EOL><DEDENT>if self.current.kind in (tk.NEWLINE, tk.COMMENT):<EOL><INDENT>skipped_error_codes = self.parse_skip_comment()<EOL>self.leapfrog(tk.INDENT)<EOL>assert self.current.kind != tk.INDENT<EOL>docstring = self.parse_docstring()<EOL>decorators = self._accumulated_decorators<EOL>self.log.debug("<STR_LIT>", decorators)<EOL>self._accumulated_decorators = []<EOL>self.log.debug("<STR_LIT>")<EOL>children = list(self.parse_definitions(class_))<EOL>self.log.debug("<STR_LIT>",<EOL>name)<EOL>end = self.line - <NUM_LIT:1><EOL><DEDENT>else:  <EOL><INDENT>skipped_error_codes = '<STR_LIT>'<EOL>docstring = self.parse_docstring()<EOL>decorators = []  <EOL>children = []<EOL>end = self.line<EOL>self.leapfrog(tk.NEWLINE)<EOL><DEDENT>definition = class_(name, self.source, start, end,<EOL>decorators, docstring, children, None,<EOL>skipped_error_codes)<EOL>for child in definition.children:<EOL><INDENT>child.parent = definition<EOL><DEDENT>self.log.debug("<STR_LIT>",<EOL>class_.__name__, name, self.current)<EOL>return definition<EOL>
Parse a definition and return its value in a `class_` object.