Gets the lexer used by the parser.
public getLexer ( ) : Doctrine\ORM\Query\Lexer | ||
리턴 | Doctrine\ORM\Query\Lexer |
/** * (non-PHPdoc) * @see \Doctrine\ORM\Query\AST\Functions\FunctionNode::parse() */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); do { $this->_aColumns[] = $parser->StateFieldPathExpression(); $parser->match(Lexer::T_COMMA); } while ($parser->getLexer()->isNextToken(Lexer::T_IDENTIFIER)); $this->_oNeedle = $parser->InParameter(); while ($parser->getLexer()->isNextToken(Lexer::T_STRING)) { $this->_oMode = $parser->Literal(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); // Add the concat separator to the values array. $this->values[] = $parser->ArithmeticExpression(); // Add the rest of the strings to the values array. CONCAT_WS must // be used with at least 2 strings not including the separator. $lexer = $parser->getLexer(); while (count($this->values) < 3 || $lexer->lookahead['type'] == Lexer::T_COMMA) { $parser->match(Lexer::T_COMMA); $peek = $lexer->glimpse(); $this->values[] = $peek['value'] == '(' ? $parser->FunctionDeclaration() : $parser->ArithmeticExpression(); } while ($lexer->lookahead['type'] == Lexer::T_IDENTIFIER) { switch (strtolower($lexer->lookahead['value'])) { case 'notempty': $parser->match(Lexer::T_IDENTIFIER); $this->notEmpty = true; break; default: // Identifier not recognized (causes exception). $parser->match(Lexer::T_CLOSE_PARENTHESIS); break; } } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); if (strcasecmp('leading', $lexer->lookahead['value']) === 0) { $parser->match(Lexer::T_LEADING); $this->leading = true; } else { if (strcasecmp('trailing', $lexer->lookahead['value']) === 0) { $parser->match(Lexer::T_TRAILING); $this->trailing = true; } else { if (strcasecmp('both', $lexer->lookahead['value']) === 0) { $parser->match(Lexer::T_BOTH); $this->both = true; } } } if ($lexer->isNextToken(Lexer::T_STRING)) { $parser->match(Lexer::T_STRING); $this->trimChar = $lexer->token['value']; } if ($this->leading || $this->trailing || $this->both || $this->trimChar) { $parser->match(Lexer::T_FROM); } $this->stringPrimary = $parser->StringPrimary(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @param Parser $parser */ public function parse(Parser $parser) { // match $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); // first Path Expression is mandatory $this->pathExp = array(); $this->pathExp[] = $parser->StateFieldPathExpression(); // Subsequent Path Expressions are optional $lexer = $parser->getLexer(); while ($lexer->isNextToken(Lexer::T_COMMA)) { $parser->match(Lexer::T_COMMA); $this->pathExp[] = $parser->StateFieldPathExpression(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); // against if (strtolower($lexer->lookahead['value']) !== 'against') { $parser->syntaxError('against'); } $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->against = $parser->StringPrimary(); if (strtolower($lexer->lookahead['value']) === 'boolean') { $parser->match(Lexer::T_IDENTIFIER); $this->booleanMode = true; } if (strtolower($lexer->lookahead['value']) === 'expand') { $parser->match(Lexer::T_IDENTIFIER); $this->queryExpansion = true; } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->expressions[] = $parser->ArithmeticFactor(); $lexer = $parser->getLexer(); if ($lexer->lookahead['type'] === Lexer::T_COMMA) { $parser->match(Lexer::T_COMMA); $this->expressions[] = $parser->ArithmeticFactor(); } if ($lexer->lookahead['type'] === Lexer::T_COMMA) { $parser->match(Lexer::T_COMMA); $this->expressions[] = $parser->ArithmeticFactor(); } if ($lexer->lookahead['type'] === Lexer::T_COMMA) { $parser->match(Lexer::T_COMMA); $this->expressions[] = $parser->ArithmeticFactor(); } if ($lexer->lookahead['type'] === Lexer::T_COMMA) { $parser->match(Lexer::T_COMMA); $this->expressions[] = $parser->ArithmeticFactor(); } if ($lexer->lookahead['type'] === Lexer::T_COMMA) { $parser->match(Lexer::T_COMMA); $this->expressions[] = $parser->ArithmeticFactor(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * {@inheritdoc} */ public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->parameters[self::PARAMETER_KEY] = $parser->ArithmeticPrimary(); $parser->match(Lexer::T_AS); $parser->match(Lexer::T_IDENTIFIER); $lexer = $parser->getLexer(); $type = $lexer->token['value']; if ($lexer->isNextToken(Lexer::T_OPEN_PARENTHESIS)) { $parser->match(Lexer::T_OPEN_PARENTHESIS); /** @var Literal $parameter */ $parameter = $parser->Literal(); $parameters = array($parameter->value); if ($lexer->isNextToken(Lexer::T_COMMA)) { while ($lexer->isNextToken(Lexer::T_COMMA)) { $parser->match(Lexer::T_COMMA); $parameter = $parser->Literal(); $parameters[] = $parameter->value; } } $parser->match(Lexer::T_CLOSE_PARENTHESIS); $type .= '(' . implode(', ', $parameters) . ')'; } if (!$this->checkType($type)) { $parser->syntaxError(sprintf('Type unsupported. Supported types are: "%s"', implode(', ', $this->supportedTypes)), $lexer->token); } $this->parameters[self::TYPE_KEY] = $type; $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @inheritdoc */ public function parse(Parser $parser) { $this->match = []; $this->mode = null; $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $lexer = $parser->getLexer(); for (;;) { $this->match[] = $parser->StateFieldPathExpression(); if (!$lexer->isNextToken(Lexer::T_COMMA)) { break; } $parser->match(Lexer::T_COMMA); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); if (strtoupper($lexer->lookahead['value']) !== 'AGAINST') { $parser->syntaxError('AGAINST'); } $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->against = $parser->StringPrimary(); if ($lexer->isNextToken(Lexer::T_STRING)) { $parser->match(Lexer::T_STRING); $this->mode = $lexer->token['value']; } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @url http://sysmagazine.com/posts/181666/ * * {@inheritdoc} */ public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $lexer = $parser->getLexer(); if ($lexer->isNextToken(Lexer::T_DISTINCT)) { $parser->match(Lexer::T_DISTINCT); $this->parameters[self::DISTINCT_KEY] = true; } // first Path Expression is mandatory $this->parameters[self::PARAMETER_KEY] = array(); $this->parameters[self::PARAMETER_KEY][] = $parser->SingleValuedPathExpression(); while ($lexer->isNextToken(Lexer::T_COMMA)) { $parser->match(Lexer::T_COMMA); $this->parameters[self::PARAMETER_KEY][] = $parser->StringPrimary(); } if ($lexer->isNextToken(Lexer::T_ORDER)) { $this->parameters[self::ORDER_KEY] = $parser->OrderByClause(); } if ($lexer->isNextToken(Lexer::T_IDENTIFIER)) { if (strtolower($lexer->lookahead['value']) !== 'separator') { $parser->syntaxError('separator'); } $parser->match(Lexer::T_IDENTIFIER); $this->parameters[self::SEPARATOR_KEY] = $parser->StringPrimary(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $lexer = $parser->getLexer(); if ($lexer->isNextToken(Lexer::T_DISTINCT)) { $parser->match(Lexer::T_DISTINCT); $this->isDistinct = true; } // first Path Expression is mandatory $this->pathExp = array(); $this->pathExp[] = $parser->SingleValuedPathExpression(); while ($lexer->isNextToken(Lexer::T_COMMA)) { $parser->match(Lexer::T_COMMA); $this->pathExp[] = $parser->StringPrimary(); } if ($lexer->isNextToken(Lexer::T_ORDER)) { $this->orderBy = $parser->OrderByClause(); } if ($lexer->isNextToken(Lexer::T_IDENTIFIER)) { if (strtolower($lexer->lookahead['value']) !== 'separator') { $parser->syntaxError('separator'); } $parser->match(Lexer::T_IDENTIFIER); $this->separator = $parser->StringPrimary(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @param Parser $parser * @throws QueryException */ public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $lexer = $parser->getLexer(); if ($lexer->isNextToken(Lexer::T_DISTINCT)) { $parser->match(Lexer::T_DISTINCT); $this->isDistinct = true; } $this->pathExpressions[] = $parser->SingleValuedPathExpression(); while ($lexer->isNextToken(Lexer::T_COMMA)) { $parser->match(Lexer::T_COMMA); $this->pathExpressions[] = $parser->StringPrimary(); } if ($lexer->isNextToken(Lexer::T_ORDER)) { $this->orderBy = $parser->OrderByClause(); } if ($lexer->isNextToken(Lexer::T_IDENTIFIER)) { if (strtolower($lexer->lookahead['value']) !== self::T_SEPARATOR) { $parser->syntaxError(self::T_SEPARATOR); } $parser->match(Lexer::T_IDENTIFIER); $this->separator = $parser->StringPrimary(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->stringPrimary = $parser->StringPrimary(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match($lexer->lookahead['value']); $parser->match('('); $this->_collectionPathExpression = $parser->_CollectionValuedPathExpression(); $parser->match(')'); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_SIZE); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->collectionPathExpression = $parser->CollectionValuedPathExpression(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match($lexer->lookahead['value']); $parser->match('('); $this->_stringPrimary = $parser->_StringPrimary(); $parser->match(')'); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->date = $parser->ArithmeticPrimary(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match($lexer->lookahead['value']); $parser->match('('); $this->_simpleArithmeticExpression = $parser->_SimpleArithmeticExpression(); $parser->match(')'); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->arithmeticExpression = $parser->SimpleArithmeticExpression(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->firstStringPrimary = $parser->StringPrimary(); $parser->match(Lexer::T_COMMA); $this->secondStringPrimary = $parser->StringPrimary(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_MOD); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->firstSimpleArithmeticExpression = $parser->SimpleArithmeticExpression(); $parser->match(Lexer::T_COMMA); $this->secondSimpleArithmeticExpression = $parser->SimpleArithmeticExpression(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->field = $parser->ArithmeticExpression(); $parser->match(Lexer::T_AS); $this->type = $parser->getLexer()->lookahead['value']; $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $lexer = $parser->getLexer(); $parser->match(\Doctrine\ORM\Query\Lexer::T_IDENTIFIER); $parser->match(\Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS); $this->expression = $parser->ArithmeticPrimary(); $parser->match(\Doctrine\ORM\Query\Lexer::T_COMMA); $this->format = $parser->StringPrimary(); $parser->match(\Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->expressionToCollate = $parser->StringPrimary(); $parser->match(Lexer::T_COMMA); $parser->match(Lexer::T_IDENTIFIER); $lexer = $parser->getLexer(); $this->collation = $lexer->token['value']; $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @override */ public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->date = $parser->ArithmeticPrimary(); if (Lexer::T_COMMA === $parser->getLexer()->lookahead['type']) { $parser->match(Lexer::T_COMMA); $this->mode = $parser->Literal(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->firstDateExpression = $parser->StringPrimary(); $parser->match(Lexer::T_AS); $parser->match(Lexer::T_IDENTIFIER); $lexer = $parser->getLexer(); $this->unit = $lexer->token['value']; $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->propertyName = $parser->StringPrimary(); $parser->match(Lexer::T_AS); $parser->match(Lexer::T_IDENTIFIER); $lexer = $parser->getLexer(); $this->type = $lexer->token['value']; $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
/** * @param Parser $parser */ public function parse(Parser $parser) { $lexer = $parser->getLexer(); $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->geomExpr[] = $parser->ArithmeticPrimary(); while (count($this->geomExpr) < $this->minGeomExpr || ($this->maxGeomExpr === null || count($this->geomExpr) < $this->maxGeomExpr) && $lexer->lookahead['type'] != Lexer::T_CLOSE_PARENTHESIS) { $parser->match(Lexer::T_COMMA); $this->geomExpr[] = $parser->ArithmeticPrimary(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $lexer = $parser->getLexer(); if ($lexer->isNextToken(Lexer::T_DISTINCT)) { $parser->match(Lexer::T_DISTINCT); $this->isDistinct = true; } $this->expression = $parser->SingleValuedPathExpression(); $parser->match(Lexer::T_CLOSE_PARENTHESIS); }
public function parse(\Doctrine\ORM\Query\Parser $parser) { $parser->match(\Doctrine\ORM\Query\Lexer::T_IDENTIFIER); $parser->match(\Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS); $this->field = $parser->ArithmeticPrimary(); $lexer = $parser->getLexer(); while (count($this->values) < 1 || $lexer->lookahead['type'] != \Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS) { $parser->match(\Doctrine\ORM\Query\Lexer::T_COMMA); $this->values[] = $parser->ArithmeticPrimary(); } $parser->match(\Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS); }
public function parse(Parser $parser) { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); $this->values[] = $parser->ArithmeticExpression(); $lexer = $parser->getLexer(); while (count($this->values) < 2 || $lexer->lookahead['type'] != Lexer::T_CLOSE_PARENTHESIS) { $parser->match(Lexer::T_COMMA); $this->values[] = $parser->ArithmeticExpression(); } $parser->match(Lexer::T_CLOSE_PARENTHESIS); }