Library: OSP
Package: Util
Header: Poco/OSP/QLParser.h
QLParser implements a parser for property query expressions, such as used by the ServiceRegistry.
Member Functions: isRelOp, parse, parseAndExpr, parseExpr, parseRelExpr, token2value
QLParser(
const std::string & expr
);
Creates the QLParser for parsing the given expression.
~QLParser();
Destroys the QLParser.
QLExpr::Ptr parse();
Parses the expression.
Throws a SyntaxExpression if the expression is not valid.
The language syntax is as follows:
expr ::= andExpr [|| andExpr] andExpr ::= relExpr [&& relExpr] relExpr ::= [!] (id [relOp value | =~ matchExpr]) | subExpr subExpr ::= ( expr ) relOp ::= == | != | < | <= | > | >= value ::= numLiteral | boolLiteral | stringLiteral numLiteral ::= [sign] digit*.digit*[E[+ | -]digit*] boolLiteral ::= true | false stringLiteral ::= char* matchExpr ::= stringLiteral | regExpr regExpr ::= delim char+ delim /* valid Perl regular expression, enclosed in delim */ delim ::= / | #
bool isRelOp(
const Poco::Token * token
);
const Poco::Token * parseAndExpr(
const Poco::Token * next,
QLExpr::Ptr & pExpr
);
const Poco::Token * parseExpr(
const Poco::Token * next,
QLExpr::Ptr & pExpr
);
const Poco::Token * parseRelExpr(
const Poco::Token * next,
QLExpr::Ptr & pExpr
);
Poco::Any token2value(
const Poco::Token * token
);