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>", 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_(<EOL>name,<EOL>self.source,<EOL>start,<EOL>end,<EOL>decorators,<EOL>docstring,<EOL>children,<EOL>None,<EOL>skipped_error_codes,<EOL>)<EOL>for child in definition.children:<EOL><INDENT>child.parent = definition<EOL><DEDENT>self.log.debug(<EOL>"<STR_LIT>",<EOL>class_.__name__,<EOL>name,<EOL>self.current.kind,<EOL>self.current.value,<EOL>)<EOL>return definition<EOL>
Parse a definition and return its value in a `class_` object.