@@ -129,10 +129,10 @@ public static function parse(Parser $parser, TokensList $list, array $options =
129
129
case 'END ' :
130
130
$ state = 3 ; // end of CASE expression
131
131
++$ list ->idx ;
132
- break ;
132
+ break 2 ;
133
133
default :
134
134
$ parser ->error ('Unexpected keyword. ' , $ token );
135
- break ;
135
+ break 2 ;
136
136
}
137
137
} else {
138
138
$ ret ->value = Expression::parse ($ parser , $ list );
@@ -148,43 +148,46 @@ public static function parse(Parser $parser, TokensList $list, array $options =
148
148
$ new_value = Expression::parse ($ parser , $ list );
149
149
$ state = 2 ;
150
150
$ ret ->compare_values [] = $ new_value ;
151
- break ;
151
+ break ;
152
152
case 'ELSE ' :
153
153
++$ list ->idx ; // Skip 'ELSE'
154
154
$ ret ->else_result = Expression::parse ($ parser , $ list );
155
155
$ state = 0 ; // last clause of CASE expression
156
- break ;
156
+ break ;
157
157
case 'END ' :
158
158
$ state = 3 ; // end of CASE expression
159
159
++$ list ->idx ;
160
- break ;
160
+ break 2 ;
161
161
default :
162
162
$ parser ->error ('Unexpected keyword. ' , $ token );
163
- break ;
163
+ break 2 ;
164
164
}
165
165
}
166
- } else if ($ token ->type === Token::TYPE_KEYWORD ) {
167
- if ($ token ->keyword === 'THEN ' ) {
166
+ } else {
167
+ if ($ token ->type === Token::TYPE_KEYWORD
168
+ && $ token ->keyword === 'THEN '
169
+ ) {
168
170
++$ list ->idx ; // Skip 'THEN'
169
171
$ new_result = Expression::parse ($ parser , $ list );
170
172
$ state = 0 ;
171
173
$ ret ->results [] = $ new_result ;
172
- } else {
174
+ } elseif ( $ token -> type === Token:: TYPE_KEYWORD ) {
173
175
$ parser ->error ('Unexpected keyword. ' , $ token );
176
+ break ;
174
177
}
175
- break ;
176
178
}
177
179
} elseif ($ state === 2 ) {
178
180
if ($ type === 0 ) {
179
- if ($ token ->type === Token::TYPE_KEYWORD ) {
180
- if ($ token ->keyword === 'THEN ' ) {
181
- ++$ list ->idx ; // Skip 'THEN'
182
- $ new_result = Expression::parse ($ parser , $ list );
183
- $ ret ->results [] = $ new_result ;
184
- $ state = 1 ;
185
- } else {
186
- $ parser ->error ('Unexpected keyword. ' , $ token );
187
- }
181
+ if ($ token ->type === Token::TYPE_KEYWORD
182
+ && $ token ->keyword === 'THEN '
183
+ ) {
184
+ ++$ list ->idx ; // Skip 'THEN'
185
+ $ new_result = Expression::parse ($ parser , $ list );
186
+ $ ret ->results [] = $ new_result ;
187
+ $ state = 1 ;
188
+ } elseif ($ token ->type === Token::TYPE_KEYWORD ) {
189
+ $ parser ->error ('Unexpected keyword. ' , $ token );
190
+ break ;
188
191
}
189
192
}
190
193
}
0 commit comments