You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This patch fixes the wrong assertion in the regex evaluator that made it
impossible to have repeated subexpressions. Assume `(a|b)/(a|b)` regex
as an example. This RE have two repeated subexpressions `(a|b)`. The
e-graph logic would take into account the fact that these expressions
are the same and the resulting tree of the regular expression would have
the same node for the `(a|b)` expression.
Let's get into the problem. Before this patch the LAGraph solver
evaluated lhs, rhs first and then combined their results w.r.t. node
type. If there were repeated subexpressions the solver failed due to
the assertion that every subexpression had not been evaluated yet. This
happened to the example: we evaluated LHS `(a|b)` at first and then we
try to calculate RHS `(a|b)`. But the corresponding subtree is already
calculated and the assertion is fired. Let's remove the wrong assertion
and fix the problem.
Apart from these fixes, this patch improves error messages. It has been
done in terms of determining what is wrong. There is no reason to avoid
these improvements.
0 commit comments