Rule space() { return ZeroOrMore(AnyOf(" \t\f")); }
Rule EscapeSimple() { return Sequence('\\', FirstOf(AnyOf("#btnfr\'\\"+LITERAL_CLOSE_SIMPLE), OctalEscape(), UnicodeEscape())); }
Rule Escape() { return Sequence('\\', FirstOf(AnyOf("#btnfr\'\\" +LITERAL_OPEN_SIMPLE+LITERAL_CLOSE_SIMPLE+LITERAL_OPEN_DOUBLE+LITERAL_CLOSE_DOUBLE), OctalEscape(), UnicodeEscape())); }
Rule EscapeDouble() { return Sequence('\\', FirstOf(AnyOf("#btnfr\'\\"+LITERAL_CLOSE_DOUBLE), OctalEscape(), UnicodeEscape())); }
Rule field() { return OneOrMore(FirstOf(CharRange('0', '9'), CharRange('a', 'z'), CharRange('A', 'Z'), AnyOf("_.*"))); }
/** * Une chaine simple sans espace, parenthese, retour chariot, tabulation, * accolade, crochet, ", '. * @return */ Rule SimpleString() { return OneOrMore(FirstOf( Escape(), Sequence(TestNot(AnyOf(" #\t\r\n\\" +COMMA +LITERAL_OPEN_SIMPLE+LITERAL_OPEN_DOUBLE +BRACKET_OPEN+BRACKET_CLOSE +CURLY_BRACKET_OPEN+CURLY_BRACKET_CLOSE +SQUARE_BRACKET_OPEN+SQUARE_BRACKET_CLOSE)), ANY) )).suppressSubnodes(); }
Rule StringLiteralSimple() { return Sequence( LITERAL_OPEN_SIMPLE, ZeroOrMore( FirstOf( EscapeSimple(), Sequence(TestNot(AnyOf("\r\n\\"+LITERAL_CLOSE_SIMPLE)), ANY) ) ).suppressSubnodes(), LITERAL_CLOSE_SIMPLE ); }
Rule StringLiteralDouble() { return Sequence( LITERAL_OPEN_DOUBLE, ZeroOrMore( FirstOf( EscapeDouble(), Sequence(TestNot(AnyOf("\r\n\\"+LITERAL_CLOSE_DOUBLE)), ANY) ) ).suppressSubnodes(), LITERAL_CLOSE_DOUBLE ); }
Rule limit() { return Optional(space(), icLIMIT, FirstOf(EQUALS, space()), OneOrMore(AnyOf("1234567890")), push(((WikittyQuery)pop()).setLimit(toInt(match()))) ); }
Rule depth() { return Optional(space(), icDEPTH, FirstOf(EQUALS, space()), OneOrMore(AnyOf("1234567890")), push(((WikittyQuery)pop()).setWikittyFieldSearchDepth(toInt(match()))) ); }
Rule function() { Var<String> alias = new Var<String>(); return Sequence(OneOrMore(FirstOf(field(), AnyOf("#"))), push(match()), BRACKET_OPEN, push(new LinkedList()), Optional(functionOrFieldOrString(), ZeroOrMore(COMMA, functionOrFieldOrString())), BRACKET_CLOSE, Optional(alias(alias)), push(WikittyQueryFunction.create(pop(1).toString(), alias.get(), (List)pop()))); }
Rule offset() { return Optional(space(), icOFFSET, FirstOf(EQUALS, space()), OneOrMore(AnyOf("1234567890")), push(((WikittyQuery)pop()).setOffset(toInt(match()))) ); }