def input(self, data, name='<string>'):
        '''
        Parse *data* directly from a string. The *name* is used when reporting
        positional information if the parser encounter syntax errors.
        '''
        lexer = lex.lex(debuglog=logger,
                        errorlog=logger,
                        optimize=1,
                        module=self,
                        outputdir=os.path.dirname(__file__),
                        lextab="xtuml.__xtuml_lextab")
        lexer.filename = name
        logger.debug('parsing %s' % name)
        s = self.parser.parse(lexer=lexer, input=data, tracking=1)
        self.statements.extend(s)
Parse *data* directly from a string. The *name* is used when reporting
        positional information if the parser encounter syntax errors.