optimize_all can return parse tree

This is nice, to avoid re-parsing it.
This commit is contained in:
Salvo 'LtWorf' Tomaselli 2016-05-25 15:08:30 +02:00
parent e47bf59320
commit 93fbd848dc

View File

@ -39,6 +39,7 @@ tokenize = parser.tokenize
tree = parser.tree
# End of the stuff
def optimize_program(code, rels):
'''
Optimize an entire program, composed by multiple expressions
@ -56,9 +57,11 @@ def optimize_program(code, rels):
parsed = parser.tree(query)
optimizations.replace_leaves(parsed, context)
context[res] = parsed
return optimize_all(context[last_res], rels)
result = optimize_all(context[last_res], rels, tostr=False)
return result
def optimize_all(expression, rels, specific=True, general=True, debug=None):
def optimize_all(expression, rels, specific=True, general=True, debug=None,tostr=True):
'''This function performs all the available optimizations.
expression : see documentation of this module
@ -97,7 +100,10 @@ def optimize_all(expression, rels, specific=True, general=True, debug=None):
if res != 0 and dbg:
debug.append(str(n))
total += res
return n.__str__()
if tostr:
return str(n)
else:
return n
def specific_optimize(expression, rels):