def METHOD_NAME(self, token_iterator, start_symbol='jsonpath'):
    # Since PLY has some crufty aspects and dumps files, we try to keep them local
    # However, we need to derive the name of the output Python file :-/
    output_directory = os.path.dirname(__file__)
    try:
        module_name = os.path.splitext(os.path.split(__file__)[1])[0]
    except:
        module_name = __name__
    parsing_table_module = '_'.join([module_name, start_symbol, 'parsetab'])
    # And we regenerate the parse table every time; it doesn't actually take that long!
    new_parser = ply.yacc.yacc(module=self,
                               debug=self.debug,
                               tabmodule = parsing_table_module,
                               outputdir = output_directory,
                               write_tables=0,
                               start = start_symbol,
                               errorlog = logger)
    return new_parser.parse(lexer = IteratorToTokenStream(token_iterator))