diff --git a/src/Components/CaseExpression.php b/src/Components/CaseExpression.php index eb91f5f8f..19061db67 100644 --- a/src/Components/CaseExpression.php +++ b/src/Components/CaseExpression.php @@ -129,10 +129,10 @@ public static function parse(Parser $parser, TokensList $list, array $options = case 'END': $state = 3; // end of CASE expression ++$list->idx; - break; + break 2; default: $parser->error('Unexpected keyword.', $token); - break; + break 2; } } else { $ret->value = Expression::parse($parser, $list); @@ -148,43 +148,46 @@ public static function parse(Parser $parser, TokensList $list, array $options = $new_value = Expression::parse($parser, $list); $state = 2; $ret->compare_values[] = $new_value; - break; + break; case 'ELSE': ++$list->idx; // Skip 'ELSE' $ret->else_result = Expression::parse($parser, $list); $state = 0; // last clause of CASE expression - break; + break; case 'END': $state = 3; // end of CASE expression ++$list->idx; - break; + break 2; default: $parser->error('Unexpected keyword.', $token); - break; + break 2; } } - } else if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'THEN') { + } else { + if ($token->type === Token::TYPE_KEYWORD + && $token->keyword === 'THEN' + ) { ++$list->idx; // Skip 'THEN' $new_result = Expression::parse($parser, $list); $state = 0; $ret->results[] = $new_result; - } else { + } elseif ($token->type === Token::TYPE_KEYWORD) { $parser->error('Unexpected keyword.', $token); + break; } - break; } } elseif ($state === 2) { if ($type === 0) { - if ($token->type === Token::TYPE_KEYWORD) { - if ($token->keyword === 'THEN') { - ++$list->idx; // Skip 'THEN' - $new_result = Expression::parse($parser, $list); - $ret->results[] = $new_result; - $state = 1; - } else { - $parser->error('Unexpected keyword.', $token); - } + if ($token->type === Token::TYPE_KEYWORD + && $token->keyword === 'THEN' + ) { + ++$list->idx; // Skip 'THEN' + $new_result = Expression::parse($parser, $list); + $ret->results[] = $new_result; + $state = 1; + } elseif ($token->type === Token::TYPE_KEYWORD) { + $parser->error('Unexpected keyword.', $token); + break; } } } diff --git a/src/Components/JoinKeyword.php b/src/Components/JoinKeyword.php index 0b5aae961..786092dd9 100644 --- a/src/Components/JoinKeyword.php +++ b/src/Components/JoinKeyword.php @@ -179,7 +179,7 @@ public static function parse(Parser $parser, TokensList $list, array $options = $state = 1; } else { /* Next clause is starting */ - break; + break 2; } break; } diff --git a/src/Statements/CreateStatement.php b/src/Statements/CreateStatement.php index 3b705c3ec..808109ecc 100644 --- a/src/Statements/CreateStatement.php +++ b/src/Statements/CreateStatement.php @@ -507,7 +507,7 @@ public function parse(Parser $parser, TokensList $list) // This is used instead of `++$brackets` because, // initially, `$brackets` is `false` cannot be // incremented. - ++$brackets; + $brackets = $brackets + 1; } elseif ($token->value === ')') { --$brackets; }