@@ -129,10 +129,10 @@ public static function parse(Parser $parser, TokensList $list, array $options =
129129 case 'END ' :
130130 $ state = 3 ; // end of CASE expression
131131 ++$ list ->idx ;
132- break ;
132+ break 2 ;
133133 default :
134134 $ parser ->error ('Unexpected keyword. ' , $ token );
135- break ;
135+ break 2 ;
136136 }
137137 } else {
138138 $ ret ->value = Expression::parse ($ parser , $ list );
@@ -148,43 +148,46 @@ public static function parse(Parser $parser, TokensList $list, array $options =
148148 $ new_value = Expression::parse ($ parser , $ list );
149149 $ state = 2 ;
150150 $ ret ->compare_values [] = $ new_value ;
151- break ;
151+ break ;
152152 case 'ELSE ' :
153153 ++$ list ->idx ; // Skip 'ELSE'
154154 $ ret ->else_result = Expression::parse ($ parser , $ list );
155155 $ state = 0 ; // last clause of CASE expression
156- break ;
156+ break ;
157157 case 'END ' :
158158 $ state = 3 ; // end of CASE expression
159159 ++$ list ->idx ;
160- break ;
160+ break 2 ;
161161 default :
162162 $ parser ->error ('Unexpected keyword. ' , $ token );
163- break ;
163+ break 2 ;
164164 }
165165 }
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+ ) {
168170 ++$ list ->idx ; // Skip 'THEN'
169171 $ new_result = Expression::parse ($ parser , $ list );
170172 $ state = 0 ;
171173 $ ret ->results [] = $ new_result ;
172- } else {
174+ } elseif ( $ token -> type === Token:: TYPE_KEYWORD ) {
173175 $ parser ->error ('Unexpected keyword. ' , $ token );
176+ break ;
174177 }
175- break ;
176178 }
177179 } elseif ($ state === 2 ) {
178180 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 ;
188191 }
189192 }
190193 }
0 commit comments