Beispiel #1
0
 public function decode($rqlQueryString)
 {
     $rqlQueryString = RqlParser::prepare_rql_string($rqlQueryString);
     $queryTokenParser = new TokenParserGroup();
     $queryTokenParser->addTokenParser(new TokenParser\Query\GroupTokenParser($queryTokenParser))->addTokenParser(new TokenParser\Query\Basic\LogicOperator\AndTokenParser($queryTokenParser))->addTokenParser(new TokenParser\Query\Basic\LogicOperator\OrTokenParser($queryTokenParser))->addTokenParser(new TokenParser\Query\Basic\LogicOperator\NotTokenParser($queryTokenParser))->addTokenParser(new TokenParser\Query\Basic\ArrayOperator\InTokenParser())->addTokenParser(new TokenParser\Query\Basic\ArrayOperator\OutTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\EqTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\NeTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\LtTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\GtTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\LeTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\GeTokenParser())->addTokenParser(new TokenParser\Query\Basic\ScalarOperator\LikeTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ArrayOperator\InTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ArrayOperator\OutTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\EqTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\NeTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\LtTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\GtTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\LeTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\GeTokenParser())->addTokenParser(new TokenParser\Query\Fiql\ScalarOperator\LikeTokenParser())->addTokenParser(new Fiql\ScalarOperator\MatchTokenParser())->addTokenParser(new Basic\ScalarOperator\MatchTokenParser());
     $parser = (new Parser((new ExpressionParser())->registerTypeCaster('string', new TypeCaster\StringTypeCaster())->registerTypeCaster('integer', new TypeCaster\IntegerTypeCaster())->registerTypeCaster('float', new TypeCaster\FloatTypeCaster())->registerTypeCaster('boolean', new TypeCaster\BooleanTypeCaster())))->addTokenParser(new SelectTokenParser($this->allowedAggregateFunction))->addTokenParser($queryTokenParser)->addTokenParser(new TokenParser\SortTokenParser())->addTokenParser(new TokenParser\LimitTokenParser());
     $rqlQueryObject = $parser->parse((new Lexer())->tokenize($rqlQueryString));
     return $rqlQueryObject;
 }