У меня есть сложное логическое выражение, которое выглядит следующим образом:
((((!((cond1) || (cond2) || (cond3)) && (cond4))) && (cond5)) <= (((cond6) || (cond7) || (cond8)) || (cond9)))
Каждая строка содержит несколько десятков выражений. Допустимые логические знаки: ||
, &&
, !
и <=
. <=
означает ведет, как в a <= b
означает, что b ведет к a.
Мне нужно просмотреть эти утверждения и проверить условия, так как некоторые из них Более не действителен. Я хочу иметь возможность преобразовать его в дерево, затем проверить каждый из его листьев (где каждый лист является условием), удалить ненужные листья и построить обратно полные и правильные выражения.
Я знаю, что каждый узел Дерево определяется парой из первой скобки и закрывающей его скобки, но я не знаю, как идентифицировать такие пары и как определить логический знак между ними.
Все знаки, кроме !
, находятся между двумя выражениями.