def parse(self, command): my_lexer = lex.lex(optimize=1, debug=self.debug) my_yacc = yacc.yacc(module=self, debug=self.debug, debugfile=self.debugfile, tabmodule=self.tabmodule) my_lexer.input(command) ast = my_yacc.parse(lexer=my_lexer) return ast
def parse(self, command): if command in QUERY_CACHE: return QUERY_CACHE[command] else: my_lexer = lex.lex(optimize=1, debug=self.debug) my_yacc = yacc.yacc(module=self, debug=self.debug, debugfile=self.debugfile, tabmodule=self.tabmodule) my_lexer.input(command) ast = my_yacc.parse(lexer=my_lexer) QUERY_CACHE[command] = ast return ast