Simplify the automaton encoding a bit (remove redundant predicates in formulae).
* Seal the representation of states * Compile with -principal -warning-error @3
Remove useless cycles in the generated automaton. A state now only has at most one trivial cycle with itself.
Fix a bug in the compilation of * tests.
Implement the multiple-starters feature: - implement automata merging and concatenation - change the command line parsing to allow multiple queries - update the output format to denote which query a result set belongs to - implement full evaluation of automata (associate each selecting state with its result set) Given queries Q1 ... QN on the command line, we can now: - compute Q1, then Q2, ... , then QN on the same document, sequentially - build one automaton that computes Q1, ..., QN in parallel - compute QN(... Q2(Q1(root))) sequentially (materializing intermediate results) - build one automaton that computes QN(...(Q2(Q1(root)))) in one run.
Preliminary work for multiple starters evaluation.
Refactor the Ata module: - add a builder class to ensure we only manipulate well-formed automata - move all the caching infrastructure to the computation of the run - rename the Eval module to Run
Sanitize the representation of formula - rename the toplevel Formula module to Boolean - rename Ata.SFormula to Formula - move the flag saying whether an atom is positive or negative to Boolean - distinguish predicates that are moves from generic predicates.
Remove the timestamp header in source files. This information is better kept in git.
Flatten the sources, only leave the XPath module packed.
Code refactoring: - move the caching tables inside the automaton object - add an interface for the ata module - make the automaton record type private
Add a kind element to the node tree. Improve support for XPath by allowing processing-instruction and comment tests. Fix the handling of attribute nodes.
Fix descendant-or-self (which wrongly looked for elements in the right sibling of self)
Fix the handling of attributes: - make use of the Is_attribute predicate in formulæ - Change the encoding of attributes in the tree structure (attributes are now proper children with a particular marker in the tag name).
Rework the formula predicates: - adds testing for first child, next sibling etc and their converse - make the predicate complete w.r.t negation - move the evaluation of formula to the Eval module (where the type of context is known)
Working for element only document (with arbitrary paths & negation). - Need to fix attributes handling - Need to add preceding/following
Add a first runtime function. Positive fragment seems to work. Negation of backward axes is buggy.
First implementation of compilation from XPath to automata using the reverse axes technique.
Add the compilation from existential XPath to automata. This patches misses the book-keeping stuff to keep to build the automaton object and the compilation of the top-level part of the query.
Compilation of the axis part of an XPath expression.