+++ /dev/null
-
-options {
- STATIC = false;
-}
-
-PARSER_BEGIN(FiqlParser)
-package org.opendaylight.controller.northbound.commons.query;
-
-import java.util.regex.*;
-
-/*package*/ class FiqlParser {
- public static Expression parse(String query) throws ParseException {
- FiqlParser parser = new FiqlParser(new java.io.StringReader(query));
- return parser.START();
- }
-}
-
-PARSER_END(FiqlParser)
-
-/* whitespace */
-SKIP :
-{
- " " | "\t"
-}
-
-TOKEN : {
- <#ALPHA : ( ["a"-"z", "A"-"Z", "0"-"9"] )+ >
-}
-
-TOKEN : {
- <NUM : ("+"|"-")?(["0"-"9"])+"."(["0"-"9"])* >
- |
- <LPAREN : "(" >
- |
- <RPAREN : ")" >
-}
-
-/* comparision ops */
-TOKEN : {
- <RE : ("=") >
- |
- <EQ : ("==" | "=eq=") >
- |
- <NE : ("!=" | "=ne=") >
- |
- <LT : ("=lt=" | "<") >
- |
- <LE : ("=le=" | "<=") >
- |
- <GT : ("=gt=" | ">") >
- |
- <GE : ("=ge=" | ">=") >
-}
-
-/* ops */
-TOKEN : {
- <AND : (";" | "and") >
- |
- <OR : ("," | "or") >
-}
-
-/* strings */
-TOKEN : {
- <STRING : ( ~["\"", "'", "(", ")", ";", ",", "=", "<", ">", "!", "~", " "] )+ >
- |
- <DQ_STRING : ( "\"" ( ~["\""] )* "\"" ) >
- |
- <SQ_STRING : ( "'" ( ~["'"] )* "'" ) >
-}
-
-/* Root production */
-Expression START() :
-{
- Expression e;
-}
-{
- e = EXPR()
- <EOF>
- {
- return e;
- }
-}
-
-Expression EXPR():
-{
- ExpressionBuilder builder = new ExpressionBuilder();
- Expression t;
-}
-{
- t = TERM() { builder.withTerm(t); }
- (
- (<AND> t = TERM()) { builder.withAnd().withTerm(t); }
- |
- (<OR> t = TERM() ) { builder.withOr().withTerm(t); }
- )*
- {
- return builder.build();
- }
-}
-
-Expression TERM() :
-{
- Token selector, arg;
- Expression exp;
- CompareExpression.OP op;
-}
-{
- selector = <STRING>
- (
- ( <EQ> {op=CompareExpression.OP.EQ;} |
- <RE> {op=CompareExpression.OP.RE;} |
- <NE> {op=CompareExpression.OP.NE;} |
- <LT> {op=CompareExpression.OP.LT;} |
- <LE> {op=CompareExpression.OP.LE;} |
- <GT> {op=CompareExpression.OP.GT;} |
- <GE> {op=CompareExpression.OP.GE;}
- )
- ( arg = <STRING> | arg = <DQ_STRING> | arg = <SQ_STRING> | arg = <NUM>)
- ) { return new CompareExpression(op, selector.image, arg.image); }
- |
- (
- <LPAREN> exp = EXPR() <RPAREN>
- ) { return exp; }
-}