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
);