1
0
mirror of synced 2025-02-09 00:39:25 +03:00

Use early-returns to improve readability of the Parser

This commit is contained in:
Luís Cobucci 2018-02-18 23:26:18 +01:00
parent f36470941c
commit fc943b70f6
No known key found for this signature in database
GPG Key ID: EC61C5F01750ED3C

View File

@ -304,21 +304,24 @@ class Parser
$lookaheadType = $this->lexer->lookahead['type']; $lookaheadType = $this->lexer->lookahead['type'];
// Short-circuit on first condition, usually types match // Short-circuit on first condition, usually types match
if ($lookaheadType !== $token) { if ($lookaheadType === $token) {
// If parameter is not identifier (1-99) must be exact match $this->lexer->moveNext();
if ($token < Lexer::T_IDENTIFIER) { return;
$this->syntaxError($this->lexer->getLiteral($token)); }
}
// If parameter is keyword (200+) must be exact match // If parameter is not identifier (1-99) must be exact match
if ($token > Lexer::T_IDENTIFIER) { if ($token < Lexer::T_IDENTIFIER) {
$this->syntaxError($this->lexer->getLiteral($token)); $this->syntaxError($this->lexer->getLiteral($token));
} }
// If parameter is T_IDENTIFIER, then matches T_IDENTIFIER (100) and keywords (200+) // If parameter is keyword (200+) must be exact match
if ($token === Lexer::T_IDENTIFIER && $lookaheadType < Lexer::T_IDENTIFIER) { if ($token > Lexer::T_IDENTIFIER) {
$this->syntaxError($this->lexer->getLiteral($token)); $this->syntaxError($this->lexer->getLiteral($token));
} }
// If parameter is T_IDENTIFIER, then matches T_IDENTIFIER (100) and keywords (200+)
if ($token === Lexer::T_IDENTIFIER && $lookaheadType < Lexer::T_IDENTIFIER) {
$this->syntaxError($this->lexer->getLiteral($token));
} }
$this->lexer->moveNext(); $this->lexer->moveNext();
@ -959,20 +962,20 @@ class Parser
if ($this->lexer->isNextToken(Lexer::T_FULLY_QUALIFIED_NAME)) { if ($this->lexer->isNextToken(Lexer::T_FULLY_QUALIFIED_NAME)) {
$this->match(Lexer::T_FULLY_QUALIFIED_NAME); $this->match(Lexer::T_FULLY_QUALIFIED_NAME);
$schemaName = $this->lexer->token['value']; return $this->lexer->token['value'];
} else if ($this->lexer->isNextToken(Lexer::T_IDENTIFIER)) {
$this->match(Lexer::T_IDENTIFIER);
$schemaName = $this->lexer->token['value'];
} else {
$this->match(Lexer::T_ALIASED_NAME);
list($namespaceAlias, $simpleClassName) = explode(':', $this->lexer->token['value']);
$schemaName = $this->em->getConfiguration()->getEntityNamespace($namespaceAlias) . '\\' . $simpleClassName;
} }
return $schemaName; if ($this->lexer->isNextToken(Lexer::T_IDENTIFIER)) {
$this->match(Lexer::T_IDENTIFIER);
return $this->lexer->token['value'];
}
$this->match(Lexer::T_ALIASED_NAME);
[$namespaceAlias, $simpleClassName] = explode(':', $this->lexer->token['value']);
return $this->em->getConfiguration()->getEntityNamespace($namespaceAlias) . '\\' . $simpleClassName;
} }
/** /**