summaryrefslogtreecommitdiffstats
path: root/src/Components/CaseExpression.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Components/CaseExpression.php')
-rw-r--r--src/Components/CaseExpression.php117
1 files changed, 56 insertions, 61 deletions
diff --git a/src/Components/CaseExpression.php b/src/Components/CaseExpression.php
index 820947b..eb91f5f 100644
--- a/src/Components/CaseExpression.php
+++ b/src/Components/CaseExpression.php
@@ -112,29 +112,28 @@ class CaseExpression extends Component
}
if ($state === 0) {
- if ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'WHEN'
- ) {
- ++$list->idx; // Skip 'WHEN'
- $new_condition = Condition::parse($parser, $list);
- $type = 1;
- $state = 1;
- $ret->conditions[] = $new_condition;
- } elseif ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'ELSE'
- ) {
- ++$list->idx; // Skip 'ELSE'
- $ret->else_result = Expression::parse($parser, $list);
- $state = 0; // last clause of CASE expression
- } elseif ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'END'
- ) {
- $state = 3; // end of CASE expression
- ++$list->idx;
- break;
- } elseif ($token->type === Token::TYPE_KEYWORD) {
- $parser->error('Unexpected keyword.', $token);
- break;
+ if ($token->type === Token::TYPE_KEYWORD) {
+ switch($token->keyword) {
+ case 'WHEN':
+ ++$list->idx; // Skip 'WHEN'
+ $new_condition = Condition::parse($parser, $list);
+ $type = 1;
+ $state = 1;
+ $ret->conditions[] = $new_condition;
+ break;
+ case 'ELSE':
+ ++$list->idx; // Skip 'ELSE'
+ $ret->else_result = Expression::parse($parser, $list);
+ $state = 0; // last clause of CASE expression
+ break;
+ case 'END':
+ $state = 3; // end of CASE expression
+ ++$list->idx;
+ break;
+ default:
+ $parser->error('Unexpected keyword.', $token);
+ break;
+ }
} else {
$ret->value = Expression::parse($parser, $list);
$type = 0;
@@ -142,54 +141,50 @@ class CaseExpression extends Component
}
} elseif ($state === 1) {
if ($type === 0) {
- if ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'WHEN'
- ) {
- ++$list->idx; // Skip 'WHEN'
- $new_value = Expression::parse($parser, $list);
- $state = 2;
- $ret->compare_values[] = $new_value;
- } elseif ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'ELSE'
- ) {
- ++$list->idx; // Skip 'ELSE'
- $ret->else_result = Expression::parse($parser, $list);
- $state = 0; // last clause of CASE expression
- } elseif ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'END'
- ) {
- $state = 3; // end of CASE expression
- ++$list->idx;
- break;
- } elseif ($token->type === Token::TYPE_KEYWORD) {
- $parser->error('Unexpected keyword.', $token);
- break;
+ if ($token->type === Token::TYPE_KEYWORD) {
+ switch($token->keyword) {
+ case 'WHEN':
+ ++$list->idx; // Skip 'WHEN'
+ $new_value = Expression::parse($parser, $list);
+ $state = 2;
+ $ret->compare_values[] = $new_value;
+ break;
+ case 'ELSE':
+ ++$list->idx; // Skip 'ELSE'
+ $ret->else_result = Expression::parse($parser, $list);
+ $state = 0; // last clause of CASE expression
+ break;
+ case 'END':
+ $state = 3; // end of CASE expression
+ ++$list->idx;
+ break;
+ default:
+ $parser->error('Unexpected keyword.', $token);
+ break;
+ }
}
- } else {
- if ($token->type === Token::TYPE_KEYWORD
- && $token->keyword === 'THEN'
- ) {
+ } else if ($token->type === Token::TYPE_KEYWORD) {
+ if ($token->keyword === 'THEN') {
++$list->idx; // Skip 'THEN'
$new_result = Expression::parse($parser, $list);
$state = 0;
$ret->results[] = $new_result;
- } elseif ($token->type === Token::TYPE_KEYWORD) {
+ } else {
$parser->error('Unexpected keyword.', $token);
- break;
}
+ break;
}
} elseif ($state === 2) {
if ($type === 0) {
- 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;
+ 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);
+ }
}
}
}