CQL::Parser is a Perl module that compiles CQL strings into parse trees of Node subtypes.
my $parser = CQL::Parser->new();
my $root = $parser->parse( $cql );
CQL::Parser provides a mechanism to parse Common Query Language (CQL) statements. The best description of CQL comes from the CQL homepage at the Library of Congress http://www.loc.gov/z3950/agency/zing/cql/
CQL is a formal language for representing queries to information retrieval systems such as web indexes, bibliographic catalogs and museum collection information. The CQL design objective is that queries be human readable and human writable, and that the language be intuitive while maintaining the expressiveness of more complex languages.
A CQL statement can be as simple as a single keyword, or as complicated as a set of compoenents indicating search indexes, relations, relational modifiers, proximity clauses and boolean logic. CQL::Parser will parse CQL statements and return the root node for a tree of nodes which describes the CQL statement. This data structure can then be used by a client application to analyze the statement, and possibly turn it into a query for a local repository.
Each CQL component in the tree inherits from CQL::Node and can be one of the following: CQL::AndNode, CQL::NotNode, CQL::OrNode, CQL::ProxNode, CQL::TermNode, CQL::PrefixNode. See the documentation for those modules for their respective APIs.
Here are some examples of CQL statements:
clinton and funk
clinton and parliament and funk
(clinton or bootsy) and funk
dc.creator="clinton" and dc.date="1976"