
This module provides an object that matches a data source against a query expression.
query expressions are compiled into an internal form when a new object is created or the `prepare' method is called; they are not recompiled on each match.
the class provided by this module uses four packages to process the query. the query parser parses the question and calls a query expression builder (internal form of the question). the optimizer is then called to reduce the complexity of the expression. the solver applies the expression on a data source.