coli-saar / alto

Alto, the Algebraic Language Toolkit
Other
17 stars 2 forks source link

GraphSiblingFinderTest runs makeAllRulesExplicit but does not support top-down queries #73

Open akoehn opened 3 years ago

akoehn commented 3 years ago

I am currently merging some changes from a different branch (6126183) and the warning in makeAllRulesExplicit when called on a TA that does support top-down queries is now a runtime error. It seems like GraphSiblingFinderTest called makeAllRulesExplicit anyway.

Without the call to makeAllRulesExplicit, the test runs fine. Can I just delete that line or was it there for a specific purpose?

(@jgroschwitz wrote that code some years ago)

jgroschwitz commented 3 years ago

I think that call is indeed not necessary.

However, that leaves the bigger problem of what to do when one wants to make all rules explicit in a tree automaton that does not support top-down rules (and, whether the way this works if the automaton does support top-down rules is consistent or bug-prone). Essentially, I think we don't have a proper "good practice" for how tree automata should cache rules, but maybe that's a too conceptual problem at the moment.

There are currently two ways of getting an explicit automaton with bottom-up queries only. Either calling processAllRulesBottomUp with a null argument, and ensuring in the automaton itself that it caches all rules that it sees. The other is to call asConcreteTreeAutomatonBottomUp, but that makes a copy. Should the error message refer to one (or both) of these solutions?