У меня есть AST, представляющий такие выражения:
(<=10 && >=3) || ==0
==1 || ==2 || ==3
==1 && !=1
Существуют числовые, а также логические (||
, &&
) и числовые (<
, <=
, ==
, !=
, >=
, >
) операторы. При необходимости в AST можно добавить логический оператор not
. Эти выражения используются для ограничения возможных числовых входных значений (обратите внимание, что последнее ничего не разрешает).
Я ищу способ сравнения двух выражений. Мне нужно знать, допускают ли они один и тот же набор чисел (эквивалентны) или допускает ли одно выражение подмножество другого.