def abstract_brackets(formula, variables_re=''):
lwt = split_formula(formula)
new_variables = {}
while lwt:
substitute = no_re_matches(combine_re_expressions(
itertools.chain((variables_re,), new_variables.keys())
))
formula = lwt['leading'] + substitute + lwt['trailing']
new_variables[substitute] = lwt['within']
lwt = split_formula(formula)
if formula in new_variables.keys():
# incase of extranous brackets
return abstract_brackets(new_variables[formula], variables_re)
# return [formula, new_variables]
return namedtuple('abstract_brackets', ('formula', 'new_variables'))(formula, new_variables)
# splits formula into 2 parts (leading and trailing) where the operator (from settings.order_of_operations) with the lowest priority is
# if there are no operators in formula returns None
评论列表
文章目录