PyParsing: Разбор класса 'pyparsing.ParseResults'

Пишу анализатор логических выражений с помощью PyParsing, получил класс pyparsing.ParseResults который выглядит следующим образом:
[[[[['A1'], 'and', ['not', ['B2']], 'and', [[['C3'], 'or', [['D3'], 'and', ['F2']]]]], 'or', [['F2'], 'and', ['G2']]]]]
Вопрос в том, как разобрать получившийся экземпляр класса до ответа.
В моём случае A1, B2 - переменные содержащие float
not - вернёт отрицательное значение операнда(not 0.5 = -0.5)
and - должен выбрать минимум из операндов(0.2 and 0.3 and 0.4 = 0.2)
or - должен выбрать максимум из операндов(0.2 or 0.3 or 0.4 = 0.4)

Код:

import pyparsing as pp

def parsing(parse_string):   
    complex_expr = pp.Forward()
    vars = pp.Word(pp.alphas, pp.alphanums)
    clause = pp.Group(vars ^ (pp.Suppress("(") + complex_expr + pp.Suppress(")") ))

    expr = pp.infixNotation(clause,[
                                ('not', 1, pp.opAssoc.RIGHT,),
                                ("and", 2, pp.opAssoc.LEFT, ),
                                ("or", 2, pp.opAssoc.LEFT, ),])
    complex_expr << expr
    parse_result=complex_expr.parseString(parse_string)
    return parse_result

parse_result = parsing('( A1 and not B2 and ( C3 or D3 and F2 ) or F2 and G2 )')```

Ответы (0 шт):