xref: /PHP-7.2/Zend/zend_language_scanner.c (revision b6b15fc6)
1 /* Generated by re2c 1.0.1 */
2 #line 1 "Zend/zend_language_scanner.l"
3 /*
4    +----------------------------------------------------------------------+
5    | Zend Engine                                                          |
6    +----------------------------------------------------------------------+
7    | Copyright (c) 1998-2018 Zend Technologies Ltd. (http://www.zend.com) |
8    +----------------------------------------------------------------------+
9    | This source file is subject to version 2.00 of the Zend license,     |
10    | that is bundled with this package in the file LICENSE, and is        |
11    | available through the world-wide-web at the following url:           |
12    | http://www.zend.com/license/2_00.txt.                                |
13    | If you did not receive a copy of the Zend license and are unable to  |
14    | obtain it through the world-wide-web, please send a note to          |
15    | license@zend.com so we can mail you a copy immediately.              |
16    +----------------------------------------------------------------------+
17    | Authors: Marcus Boerger <helly@php.net>                              |
18    |          Nuno Lopes <nlopess@php.net>                                |
19    |          Scott MacVicar <scottmac@php.net>                           |
20    | Flex version authors:                                                |
21    |          Andi Gutmans <andi@zend.com>                                |
22    |          Zeev Suraski <zeev@zend.com>                                |
23    +----------------------------------------------------------------------+
24 */
25 
26 /* $Id$ */
27 
28 #if 0
29 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
30 #else
31 # define YYDEBUG(s, c)
32 #endif
33 
34 #include "zend_language_scanner_defs.h"
35 
36 #include <errno.h>
37 #include "zend.h"
38 #ifdef ZEND_WIN32
39 # include <Winuser.h>
40 #endif
41 #include "zend_alloc.h"
42 #include <zend_language_parser.h>
43 #include "zend_compile.h"
44 #include "zend_language_scanner.h"
45 #include "zend_highlight.h"
46 #include "zend_constants.h"
47 #include "zend_variables.h"
48 #include "zend_operators.h"
49 #include "zend_API.h"
50 #include "zend_strtod.h"
51 #include "zend_exceptions.h"
52 #include "zend_virtual_cwd.h"
53 #include "tsrm_config_common.h"
54 
55 #define YYCTYPE   unsigned char
56 #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
57 #define YYCURSOR  SCNG(yy_cursor)
58 #define YYLIMIT   SCNG(yy_limit)
59 #define YYMARKER  SCNG(yy_marker)
60 
61 #define YYGETCONDITION()  SCNG(yy_state)
62 #define YYSETCONDITION(s) SCNG(yy_state) = s
63 
64 #define STATE(name)  yyc##name
65 
66 /* emulate flex constructs */
67 #define BEGIN(state) YYSETCONDITION(STATE(state))
68 #define YYSTATE      YYGETCONDITION()
69 #define yytext       ((char*)SCNG(yy_text))
70 #define yyleng       SCNG(yy_leng)
71 #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
72                           yyleng   = (unsigned int)x; } while(0)
73 #define yymore()     goto yymore_restart
74 
75 /* perform sanity check. If this message is triggered you should
76    increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
77 #define YYMAXFILL 16
78 
79 #if ZEND_MMAP_AHEAD < YYMAXFILL
80 # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL
81 #endif
82 
83 #ifdef HAVE_STDARG_H
84 # include <stdarg.h>
85 #endif
86 
87 #ifdef HAVE_UNISTD_H
88 # include <unistd.h>
89 #endif
90 
91 /* Globals Macros */
92 #define SCNG	LANG_SCNG
93 #ifdef ZTS
94 ZEND_API ts_rsrc_id language_scanner_globals_id;
95 #else
96 ZEND_API zend_php_scanner_globals language_scanner_globals;
97 #endif
98 
99 #define HANDLE_NEWLINES(s, l)													\
100 do {																			\
101 	char *p = (s), *boundary = p+(l);											\
102 																				\
103 	while (p<boundary) {														\
104 		if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {					\
105 			CG(zend_lineno)++;													\
106 		}																		\
107 		p++;																	\
108 	}																			\
109 } while (0)
110 
111 #define HANDLE_NEWLINE(c) \
112 { \
113 	if (c == '\n' || c == '\r') { \
114 		CG(zend_lineno)++; \
115 	} \
116 }
117 
118 /* To save initial string length after scanning to first variable */
119 #define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) SCNG(scanned_string_len) = (len)
120 #define GET_DOUBLE_QUOTES_SCANNED_LENGTH()    SCNG(scanned_string_len)
121 
122 #define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80)
123 
124 #define ZEND_IS_OCT(c)  ((c)>='0' && (c)<='7')
125 #define ZEND_IS_HEX(c)  (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F'))
126 
BEGIN_EXTERN_C()127 BEGIN_EXTERN_C()
128 
129 static size_t encoding_filter_script_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length)
130 {
131 	const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding();
132 	ZEND_ASSERT(internal_encoding);
133 	return zend_multibyte_encoding_converter(to, to_length, from, from_length, internal_encoding, LANG_SCNG(script_encoding));
134 }
135 
encoding_filter_script_to_intermediate(unsigned char ** to,size_t * to_length,const unsigned char * from,size_t from_length)136 static size_t encoding_filter_script_to_intermediate(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length)
137 {
138 	return zend_multibyte_encoding_converter(to, to_length, from, from_length, zend_multibyte_encoding_utf8, LANG_SCNG(script_encoding));
139 }
140 
encoding_filter_intermediate_to_script(unsigned char ** to,size_t * to_length,const unsigned char * from,size_t from_length)141 static size_t encoding_filter_intermediate_to_script(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length)
142 {
143 	return zend_multibyte_encoding_converter(to, to_length, from, from_length,
144 LANG_SCNG(script_encoding), zend_multibyte_encoding_utf8);
145 }
146 
encoding_filter_intermediate_to_internal(unsigned char ** to,size_t * to_length,const unsigned char * from,size_t from_length)147 static size_t encoding_filter_intermediate_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length)
148 {
149 	const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding();
150 	ZEND_ASSERT(internal_encoding);
151 	return zend_multibyte_encoding_converter(to, to_length, from, from_length,
152 internal_encoding, zend_multibyte_encoding_utf8);
153 }
154 
155 
_yy_push_state(int new_state)156 static void _yy_push_state(int new_state)
157 {
158 	zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION());
159 	YYSETCONDITION(new_state);
160 }
161 
162 #define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
163 
yy_pop_state(void)164 static void yy_pop_state(void)
165 {
166 	int *stack_state = zend_stack_top(&SCNG(state_stack));
167 	YYSETCONDITION(*stack_state);
168 	zend_stack_del_top(&SCNG(state_stack));
169 }
170 
yy_scan_buffer(char * str,unsigned int len)171 static void yy_scan_buffer(char *str, unsigned int len)
172 {
173 	YYCURSOR       = (YYCTYPE*)str;
174 	YYLIMIT        = YYCURSOR + len;
175 	if (!SCNG(yy_start)) {
176 		SCNG(yy_start) = YYCURSOR;
177 	}
178 }
179 
startup_scanner(void)180 void startup_scanner(void)
181 {
182 	CG(parse_error) = 0;
183 	CG(doc_comment) = NULL;
184 	CG(extra_fn_flags) = 0;
185 	zend_stack_init(&SCNG(state_stack), sizeof(int));
186 	zend_ptr_stack_init(&SCNG(heredoc_label_stack));
187 }
188 
heredoc_label_dtor(zend_heredoc_label * heredoc_label)189 static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) {
190     efree(heredoc_label->label);
191 }
192 
shutdown_scanner(void)193 void shutdown_scanner(void)
194 {
195 	CG(parse_error) = 0;
196 	RESET_DOC_COMMENT();
197 	zend_stack_destroy(&SCNG(state_stack));
198 	zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1);
199 	zend_ptr_stack_destroy(&SCNG(heredoc_label_stack));
200 	SCNG(on_event) = NULL;
201 }
202 
zend_save_lexical_state(zend_lex_state * lex_state)203 ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state)
204 {
205 	lex_state->yy_leng   = SCNG(yy_leng);
206 	lex_state->yy_start  = SCNG(yy_start);
207 	lex_state->yy_text   = SCNG(yy_text);
208 	lex_state->yy_cursor = SCNG(yy_cursor);
209 	lex_state->yy_marker = SCNG(yy_marker);
210 	lex_state->yy_limit  = SCNG(yy_limit);
211 
212 	lex_state->state_stack = SCNG(state_stack);
213 	zend_stack_init(&SCNG(state_stack), sizeof(int));
214 
215 	lex_state->heredoc_label_stack = SCNG(heredoc_label_stack);
216 	zend_ptr_stack_init(&SCNG(heredoc_label_stack));
217 
218 	lex_state->in = SCNG(yy_in);
219 	lex_state->yy_state = YYSTATE;
220 	lex_state->filename = zend_get_compiled_filename();
221 	lex_state->lineno = CG(zend_lineno);
222 
223 	lex_state->script_org = SCNG(script_org);
224 	lex_state->script_org_size = SCNG(script_org_size);
225 	lex_state->script_filtered = SCNG(script_filtered);
226 	lex_state->script_filtered_size = SCNG(script_filtered_size);
227 	lex_state->input_filter = SCNG(input_filter);
228 	lex_state->output_filter = SCNG(output_filter);
229 	lex_state->script_encoding = SCNG(script_encoding);
230 
231 	lex_state->on_event = SCNG(on_event);
232 	lex_state->on_event_context = SCNG(on_event_context);
233 
234 	lex_state->ast = CG(ast);
235 	lex_state->ast_arena = CG(ast_arena);
236 }
237 
zend_restore_lexical_state(zend_lex_state * lex_state)238 ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state)
239 {
240 	SCNG(yy_leng)   = lex_state->yy_leng;
241 	SCNG(yy_start)  = lex_state->yy_start;
242 	SCNG(yy_text)   = lex_state->yy_text;
243 	SCNG(yy_cursor) = lex_state->yy_cursor;
244 	SCNG(yy_marker) = lex_state->yy_marker;
245 	SCNG(yy_limit)  = lex_state->yy_limit;
246 
247 	zend_stack_destroy(&SCNG(state_stack));
248 	SCNG(state_stack) = lex_state->state_stack;
249 
250 	zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1);
251 	zend_ptr_stack_destroy(&SCNG(heredoc_label_stack));
252 	SCNG(heredoc_label_stack) = lex_state->heredoc_label_stack;
253 
254 	SCNG(yy_in) = lex_state->in;
255 	YYSETCONDITION(lex_state->yy_state);
256 	CG(zend_lineno) = lex_state->lineno;
257 	zend_restore_compiled_filename(lex_state->filename);
258 
259 	if (SCNG(script_filtered)) {
260 		efree(SCNG(script_filtered));
261 		SCNG(script_filtered) = NULL;
262 	}
263 	SCNG(script_org) = lex_state->script_org;
264 	SCNG(script_org_size) = lex_state->script_org_size;
265 	SCNG(script_filtered) = lex_state->script_filtered;
266 	SCNG(script_filtered_size) = lex_state->script_filtered_size;
267 	SCNG(input_filter) = lex_state->input_filter;
268 	SCNG(output_filter) = lex_state->output_filter;
269 	SCNG(script_encoding) = lex_state->script_encoding;
270 
271 	SCNG(on_event) = lex_state->on_event;
272 	SCNG(on_event_context) = lex_state->on_event_context;
273 
274 	CG(ast) = lex_state->ast;
275 	CG(ast_arena) = lex_state->ast_arena;
276 
277 	RESET_DOC_COMMENT();
278 }
279 
zend_destroy_file_handle(zend_file_handle * file_handle)280 ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle)
281 {
282 	zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles);
283 	/* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */
284 	file_handle->opened_path = NULL;
285 	if (file_handle->free_filename) {
286 		file_handle->filename = NULL;
287 	}
288 }
289 
zend_lex_tstring(zval * zv)290 ZEND_API void zend_lex_tstring(zval *zv)
291 {
292 	if (SCNG(on_event)) {
293 		SCNG(on_event)(ON_FEEDBACK, T_STRING, 0, SCNG(on_event_context));
294 	}
295 
296 	ZVAL_STRINGL(zv, (char*)SCNG(yy_text), SCNG(yy_leng));
297 }
298 
299 #define BOM_UTF32_BE	"\x00\x00\xfe\xff"
300 #define	BOM_UTF32_LE	"\xff\xfe\x00\x00"
301 #define	BOM_UTF16_BE	"\xfe\xff"
302 #define	BOM_UTF16_LE	"\xff\xfe"
303 #define	BOM_UTF8		"\xef\xbb\xbf"
304 
zend_multibyte_detect_utf_encoding(const unsigned char * script,size_t script_size)305 static const zend_encoding *zend_multibyte_detect_utf_encoding(const unsigned char *script, size_t script_size)
306 {
307 	const unsigned char *p;
308 	int wchar_size = 2;
309 	int le = 0;
310 
311 	/* utf-16 or utf-32? */
312 	p = script;
313 	assert(p >= script);
314 	while ((size_t)(p-script) < script_size) {
315 		p = memchr(p, 0, script_size-(p-script)-2);
316 		if (!p) {
317 			break;
318 		}
319 		if (*(p+1) == '\0' && *(p+2) == '\0') {
320 			wchar_size = 4;
321 			break;
322 		}
323 
324 		/* searching for UTF-32 specific byte orders, so this will do */
325 		p += 4;
326 	}
327 
328 	/* BE or LE? */
329 	p = script;
330 	assert(p >= script);
331 	while ((size_t)(p-script) < script_size) {
332 		if (*p == '\0' && *(p+wchar_size-1) != '\0') {
333 			/* BE */
334 			le = 0;
335 			break;
336 		} else if (*p != '\0' && *(p+wchar_size-1) == '\0') {
337 			/* LE* */
338 			le = 1;
339 			break;
340 		}
341 		p += wchar_size;
342 	}
343 
344 	if (wchar_size == 2) {
345 		return le ? zend_multibyte_encoding_utf16le : zend_multibyte_encoding_utf16be;
346 	} else {
347 		return le ? zend_multibyte_encoding_utf32le : zend_multibyte_encoding_utf32be;
348 	}
349 
350 	return NULL;
351 }
352 
zend_multibyte_detect_unicode(void)353 static const zend_encoding* zend_multibyte_detect_unicode(void)
354 {
355 	const zend_encoding *script_encoding = NULL;
356 	int bom_size;
357 	unsigned char *pos1, *pos2;
358 
359 	if (LANG_SCNG(script_org_size) < sizeof(BOM_UTF32_LE)-1) {
360 		return NULL;
361 	}
362 
363 	/* check out BOM */
364 	if (!memcmp(LANG_SCNG(script_org), BOM_UTF32_BE, sizeof(BOM_UTF32_BE)-1)) {
365 		script_encoding = zend_multibyte_encoding_utf32be;
366 		bom_size = sizeof(BOM_UTF32_BE)-1;
367 	} else if (!memcmp(LANG_SCNG(script_org), BOM_UTF32_LE, sizeof(BOM_UTF32_LE)-1)) {
368 		script_encoding = zend_multibyte_encoding_utf32le;
369 		bom_size = sizeof(BOM_UTF32_LE)-1;
370 	} else if (!memcmp(LANG_SCNG(script_org), BOM_UTF16_BE, sizeof(BOM_UTF16_BE)-1)) {
371 		script_encoding = zend_multibyte_encoding_utf16be;
372 		bom_size = sizeof(BOM_UTF16_BE)-1;
373 	} else if (!memcmp(LANG_SCNG(script_org), BOM_UTF16_LE, sizeof(BOM_UTF16_LE)-1)) {
374 		script_encoding = zend_multibyte_encoding_utf16le;
375 		bom_size = sizeof(BOM_UTF16_LE)-1;
376 	} else if (!memcmp(LANG_SCNG(script_org), BOM_UTF8, sizeof(BOM_UTF8)-1)) {
377 		script_encoding = zend_multibyte_encoding_utf8;
378 		bom_size = sizeof(BOM_UTF8)-1;
379 	}
380 
381 	if (script_encoding) {
382 		/* remove BOM */
383 		LANG_SCNG(script_org) += bom_size;
384 		LANG_SCNG(script_org_size) -= bom_size;
385 
386 		return script_encoding;
387 	}
388 
389 	/* script contains NULL bytes -> auto-detection */
390 	if ((pos1 = memchr(LANG_SCNG(script_org), 0, LANG_SCNG(script_org_size)))) {
391 		/* check if the NULL byte is after the __HALT_COMPILER(); */
392 		pos2 = LANG_SCNG(script_org);
393 
394 		while ((size_t)(pos1 - pos2) >= sizeof("__HALT_COMPILER();")-1) {
395 			pos2 = memchr(pos2, '_', pos1 - pos2);
396 			if (!pos2) break;
397 			pos2++;
398 			if (strncasecmp((char*)pos2, "_HALT_COMPILER", sizeof("_HALT_COMPILER")-1) == 0) {
399 				pos2 += sizeof("_HALT_COMPILER")-1;
400 				while (*pos2 == ' '  ||
401 					   *pos2 == '\t' ||
402 					   *pos2 == '\r' ||
403 					   *pos2 == '\n') {
404 					pos2++;
405 				}
406 				if (*pos2 == '(') {
407 					pos2++;
408 					while (*pos2 == ' '  ||
409 						   *pos2 == '\t' ||
410 						   *pos2 == '\r' ||
411 						   *pos2 == '\n') {
412 						pos2++;
413 					}
414 					if (*pos2 == ')') {
415 						pos2++;
416 						while (*pos2 == ' '  ||
417 							   *pos2 == '\t' ||
418 							   *pos2 == '\r' ||
419 							   *pos2 == '\n') {
420 							pos2++;
421 						}
422 						if (*pos2 == ';') {
423 							return NULL;
424 						}
425 					}
426 				}
427 			}
428 		}
429 		/* make best effort if BOM is missing */
430 		return zend_multibyte_detect_utf_encoding(LANG_SCNG(script_org), LANG_SCNG(script_org_size));
431 	}
432 
433 	return NULL;
434 }
435 
zend_multibyte_find_script_encoding(void)436 static const zend_encoding* zend_multibyte_find_script_encoding(void)
437 {
438 	const zend_encoding *script_encoding;
439 
440 	if (CG(detect_unicode)) {
441 		/* check out bom(byte order mark) and see if containing wchars */
442 		script_encoding = zend_multibyte_detect_unicode();
443 		if (script_encoding != NULL) {
444 			/* bom or wchar detection is prior to 'script_encoding' option */
445 			return script_encoding;
446 		}
447 	}
448 
449 	/* if no script_encoding specified, just leave alone */
450 	if (!CG(script_encoding_list) || !CG(script_encoding_list_size)) {
451 		return NULL;
452 	}
453 
454 	/* if multiple encodings specified, detect automagically */
455 	if (CG(script_encoding_list_size) > 1) {
456 		return zend_multibyte_encoding_detector(LANG_SCNG(script_org), LANG_SCNG(script_org_size), CG(script_encoding_list), CG(script_encoding_list_size));
457 	}
458 
459 	return CG(script_encoding_list)[0];
460 }
461 
zend_multibyte_set_filter(const zend_encoding * onetime_encoding)462 ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding)
463 {
464 	const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding();
465 	const zend_encoding *script_encoding = onetime_encoding ? onetime_encoding: zend_multibyte_find_script_encoding();
466 
467 	if (!script_encoding) {
468 		return FAILURE;
469 	}
470 
471 	/* judge input/output filter */
472 	LANG_SCNG(script_encoding) = script_encoding;
473 	LANG_SCNG(input_filter) = NULL;
474 	LANG_SCNG(output_filter) = NULL;
475 
476 	if (!internal_encoding || LANG_SCNG(script_encoding) == internal_encoding) {
477 		if (!zend_multibyte_check_lexer_compatibility(LANG_SCNG(script_encoding))) {
478 			/* and if not, work around w/ script_encoding -> utf-8 -> script_encoding conversion */
479 			LANG_SCNG(input_filter) = encoding_filter_script_to_intermediate;
480 			LANG_SCNG(output_filter) = encoding_filter_intermediate_to_script;
481 		} else {
482 			LANG_SCNG(input_filter) = NULL;
483 			LANG_SCNG(output_filter) = NULL;
484 		}
485 		return SUCCESS;
486 	}
487 
488 	if (zend_multibyte_check_lexer_compatibility(internal_encoding)) {
489 		LANG_SCNG(input_filter) = encoding_filter_script_to_internal;
490 		LANG_SCNG(output_filter) = NULL;
491 	} else if (zend_multibyte_check_lexer_compatibility(LANG_SCNG(script_encoding))) {
492 		LANG_SCNG(input_filter) = NULL;
493 		LANG_SCNG(output_filter) = encoding_filter_script_to_internal;
494 	} else {
495 		/* both script and internal encodings are incompatible w/ flex */
496 		LANG_SCNG(input_filter) = encoding_filter_script_to_intermediate;
497 		LANG_SCNG(output_filter) = encoding_filter_intermediate_to_internal;
498 	}
499 
500 	return 0;
501 }
502 
open_file_for_scanning(zend_file_handle * file_handle)503 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle)
504 {
505 	char *buf;
506 	size_t size, offset = 0;
507 	zend_string *compiled_filename;
508 
509 	/* The shebang line was read, get the current position to obtain the buffer start */
510 	if (CG(start_lineno) == 2 && file_handle->type == ZEND_HANDLE_FP && file_handle->handle.fp) {
511 		if ((offset = ftell(file_handle->handle.fp)) == (size_t)-1) {
512 			offset = 0;
513 		}
514 	}
515 
516 	if (zend_stream_fixup(file_handle, &buf, &size) == FAILURE) {
517 		return FAILURE;
518 	}
519 
520 	zend_llist_add_element(&CG(open_files), file_handle);
521 	if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) {
522 		zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files));
523 		size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle;
524 		fh->handle.stream.handle = (void*)(((char*)fh) + diff);
525 		file_handle->handle.stream.handle = fh->handle.stream.handle;
526 	}
527 
528 	/* Reset the scanner for scanning the new file */
529 	SCNG(yy_in) = file_handle;
530 	SCNG(yy_start) = NULL;
531 
532 	if (size != (size_t)-1) {
533 		if (CG(multibyte)) {
534 			SCNG(script_org) = (unsigned char*)buf;
535 			SCNG(script_org_size) = size;
536 			SCNG(script_filtered) = NULL;
537 
538 			zend_multibyte_set_filter(NULL);
539 
540 			if (SCNG(input_filter)) {
541 				if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
542 					zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected "
543 							"encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding)));
544 				}
545 				buf = (char*)SCNG(script_filtered);
546 				size = SCNG(script_filtered_size);
547 			}
548 		}
549 		SCNG(yy_start) = (unsigned char *)buf - offset;
550 		yy_scan_buffer(buf, (unsigned int)size);
551 	} else {
552 		zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed");
553 	}
554 
555 	BEGIN(INITIAL);
556 
557 	if (file_handle->opened_path) {
558 		compiled_filename = zend_string_copy(file_handle->opened_path);
559 	} else {
560 		compiled_filename = zend_string_init(file_handle->filename, strlen(file_handle->filename), 0);
561 	}
562 
563 	zend_set_compiled_filename(compiled_filename);
564 	zend_string_release(compiled_filename);
565 
566 	if (CG(start_lineno)) {
567 		CG(zend_lineno) = CG(start_lineno);
568 		CG(start_lineno) = 0;
569 	} else {
570 		CG(zend_lineno) = 1;
571 	}
572 
573 	RESET_DOC_COMMENT();
574 	CG(increment_lineno) = 0;
575 	return SUCCESS;
576 }
END_EXTERN_C()577 END_EXTERN_C()
578 
579 static zend_op_array *zend_compile(int type)
580 {
581 	zend_op_array *op_array = NULL;
582 	zend_bool original_in_compilation = CG(in_compilation);
583 
584 	CG(in_compilation) = 1;
585 	CG(ast) = NULL;
586 	CG(ast_arena) = zend_arena_create(1024 * 32);
587 
588 	if (!zendparse()) {
589 		int last_lineno = CG(zend_lineno);
590 		zend_file_context original_file_context;
591 		zend_oparray_context original_oparray_context;
592 		zend_op_array *original_active_op_array = CG(active_op_array);
593 
594 		op_array = emalloc(sizeof(zend_op_array));
595 		init_op_array(op_array, type, INITIAL_OP_ARRAY_SIZE);
596 		CG(active_op_array) = op_array;
597 
598 		if (zend_ast_process) {
599 			zend_ast_process(CG(ast));
600 		}
601 
602 		zend_file_context_begin(&original_file_context);
603 		zend_oparray_context_begin(&original_oparray_context);
604 		zend_compile_top_stmt(CG(ast));
605 		CG(zend_lineno) = last_lineno;
606 		zend_emit_final_return(type == ZEND_USER_FUNCTION);
607 		op_array->line_start = 1;
608 		op_array->line_end = last_lineno;
609 		pass_two(op_array);
610 		zend_oparray_context_end(&original_oparray_context);
611 		zend_file_context_end(&original_file_context);
612 
613 		CG(active_op_array) = original_active_op_array;
614 	}
615 
616 	zend_ast_destroy(CG(ast));
617 	zend_arena_destroy(CG(ast_arena));
618 
619 	CG(in_compilation) = original_in_compilation;
620 
621 	return op_array;
622 }
623 
compile_file(zend_file_handle * file_handle,int type)624 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type)
625 {
626 	zend_lex_state original_lex_state;
627 	zend_op_array *op_array = NULL;
628 	zend_save_lexical_state(&original_lex_state);
629 
630 	if (open_file_for_scanning(file_handle)==FAILURE) {
631 		if (type==ZEND_REQUIRE) {
632 			zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
633 			zend_bailout();
634 		} else {
635 			zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
636 		}
637 	} else {
638 		op_array = zend_compile(ZEND_USER_FUNCTION);
639 	}
640 
641 	zend_restore_lexical_state(&original_lex_state);
642 	return op_array;
643 }
644 
645 
compile_filename(int type,zval * filename)646 zend_op_array *compile_filename(int type, zval *filename)
647 {
648 	zend_file_handle file_handle;
649 	zval tmp;
650 	zend_op_array *retval;
651 	zend_string *opened_path = NULL;
652 
653 	if (Z_TYPE_P(filename) != IS_STRING) {
654 		tmp = *filename;
655 		zval_copy_ctor(&tmp);
656 		convert_to_string(&tmp);
657 		filename = &tmp;
658 	}
659 	file_handle.filename = Z_STRVAL_P(filename);
660 	file_handle.free_filename = 0;
661 	file_handle.type = ZEND_HANDLE_FILENAME;
662 	file_handle.opened_path = NULL;
663 	file_handle.handle.fp = NULL;
664 
665 	retval = zend_compile_file(&file_handle, type);
666 	if (retval && file_handle.handle.stream.handle) {
667 		if (!file_handle.opened_path) {
668 			file_handle.opened_path = opened_path = zend_string_copy(Z_STR_P(filename));
669 		}
670 
671 		zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path);
672 
673 		if (opened_path) {
674 			zend_string_release(opened_path);
675 		}
676 	}
677 	zend_destroy_file_handle(&file_handle);
678 
679 	if (filename==&tmp) {
680 		zval_dtor(&tmp);
681 	}
682 	return retval;
683 }
684 
zend_prepare_string_for_scanning(zval * str,char * filename)685 ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename)
686 {
687 	char *buf;
688 	size_t size, old_len;
689 	zend_string *new_compiled_filename;
690 
691 	/* enforce ZEND_MMAP_AHEAD trailing NULLs for flex... */
692 	old_len = Z_STRLEN_P(str);
693 	Z_STR_P(str) = zend_string_extend(Z_STR_P(str), old_len + ZEND_MMAP_AHEAD, 0);
694 	Z_TYPE_INFO_P(str) = IS_STRING_EX;
695 	memset(Z_STRVAL_P(str) + old_len, 0, ZEND_MMAP_AHEAD + 1);
696 
697 	SCNG(yy_in) = NULL;
698 	SCNG(yy_start) = NULL;
699 
700 	buf = Z_STRVAL_P(str);
701 	size = old_len;
702 
703 	if (CG(multibyte)) {
704 		SCNG(script_org) = (unsigned char*)buf;
705 		SCNG(script_org_size) = size;
706 		SCNG(script_filtered) = NULL;
707 
708 		zend_multibyte_set_filter(zend_multibyte_get_internal_encoding());
709 
710 		if (SCNG(input_filter)) {
711 			if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) {
712 				zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected "
713 						"encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding)));
714 			}
715 			buf = (char*)SCNG(script_filtered);
716 			size = SCNG(script_filtered_size);
717 		}
718 	}
719 
720 	yy_scan_buffer(buf, (unsigned int)size);
721 
722 	new_compiled_filename = zend_string_init(filename, strlen(filename), 0);
723 	zend_set_compiled_filename(new_compiled_filename);
724 	zend_string_release(new_compiled_filename);
725 	CG(zend_lineno) = 1;
726 	CG(increment_lineno) = 0;
727 	RESET_DOC_COMMENT();
728 	return SUCCESS;
729 }
730 
731 
zend_get_scanned_file_offset(void)732 ZEND_API size_t zend_get_scanned_file_offset(void)
733 {
734 	size_t offset = SCNG(yy_cursor) - SCNG(yy_start);
735 	if (SCNG(input_filter)) {
736 		size_t original_offset = offset, length = 0;
737 		do {
738 			unsigned char *p = NULL;
739 			if ((size_t)-1 == SCNG(input_filter)(&p, &length, SCNG(script_org), offset)) {
740 				return (size_t)-1;
741 			}
742 			efree(p);
743 			if (length > original_offset) {
744 				offset--;
745 			} else if (length < original_offset) {
746 				offset++;
747 			}
748 		} while (original_offset != length);
749 	}
750 	return offset;
751 }
752 
compile_string(zval * source_string,char * filename)753 zend_op_array *compile_string(zval *source_string, char *filename)
754 {
755 	zend_lex_state original_lex_state;
756 	zend_op_array *op_array = NULL;
757 	zval tmp;
758 
759 	if (Z_STRLEN_P(source_string)==0) {
760 		return NULL;
761 	}
762 
763 	ZVAL_DUP(&tmp, source_string);
764 	convert_to_string(&tmp);
765 	source_string = &tmp;
766 
767 	zend_save_lexical_state(&original_lex_state);
768 	if (zend_prepare_string_for_scanning(source_string, filename) == SUCCESS) {
769 		BEGIN(ST_IN_SCRIPTING);
770 		op_array = zend_compile(ZEND_EVAL_CODE);
771 	}
772 
773 	zend_restore_lexical_state(&original_lex_state);
774 	zval_dtor(&tmp);
775 
776 	return op_array;
777 }
778 
779 
BEGIN_EXTERN_C()780 BEGIN_EXTERN_C()
781 int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini)
782 {
783 	zend_lex_state original_lex_state;
784 	zend_file_handle file_handle;
785 
786 	file_handle.type = ZEND_HANDLE_FILENAME;
787 	file_handle.filename = filename;
788 	file_handle.free_filename = 0;
789 	file_handle.opened_path = NULL;
790 	zend_save_lexical_state(&original_lex_state);
791 	if (open_file_for_scanning(&file_handle)==FAILURE) {
792 		zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename);
793 		zend_restore_lexical_state(&original_lex_state);
794 		return FAILURE;
795 	}
796 	zend_highlight(syntax_highlighter_ini);
797 	if (SCNG(script_filtered)) {
798 		efree(SCNG(script_filtered));
799 		SCNG(script_filtered) = NULL;
800 	}
801 	zend_destroy_file_handle(&file_handle);
802 	zend_restore_lexical_state(&original_lex_state);
803 	return SUCCESS;
804 }
805 
highlight_string(zval * str,zend_syntax_highlighter_ini * syntax_highlighter_ini,char * str_name)806 int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name)
807 {
808 	zend_lex_state original_lex_state;
809 	zval tmp = *str;
810 
811 	str = &tmp;
812 	zval_copy_ctor(str);
813 	zend_save_lexical_state(&original_lex_state);
814 	if (zend_prepare_string_for_scanning(str, str_name)==FAILURE) {
815 		zend_restore_lexical_state(&original_lex_state);
816 		return FAILURE;
817 	}
818 	BEGIN(INITIAL);
819 	zend_highlight(syntax_highlighter_ini);
820 	if (SCNG(script_filtered)) {
821 		efree(SCNG(script_filtered));
822 		SCNG(script_filtered) = NULL;
823 	}
824 	zend_restore_lexical_state(&original_lex_state);
825 	zval_dtor(str);
826 	return SUCCESS;
827 }
828 
zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter,const zend_encoding * old_encoding)829 ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, const zend_encoding *old_encoding)
830 {
831 	size_t length;
832 	unsigned char *new_yy_start;
833 
834 	/* convert and set */
835 	if (!SCNG(input_filter)) {
836 		if (SCNG(script_filtered)) {
837 			efree(SCNG(script_filtered));
838 			SCNG(script_filtered) = NULL;
839 		}
840 		SCNG(script_filtered_size) = 0;
841 		length = SCNG(script_org_size);
842 		new_yy_start = SCNG(script_org);
843 	} else {
844 		if ((size_t)-1 == SCNG(input_filter)(&new_yy_start, &length, SCNG(script_org), SCNG(script_org_size))) {
845 			zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected "
846 					"encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding)));
847 		}
848 		if (SCNG(script_filtered)) {
849 			efree(SCNG(script_filtered));
850 		}
851 		SCNG(script_filtered) = new_yy_start;
852 		SCNG(script_filtered_size) = length;
853 	}
854 
855 	SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start));
856 	SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start));
857 	SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start));
858 	SCNG(yy_limit) = new_yy_start + length;
859 
860 	SCNG(yy_start) = new_yy_start;
861 }
862 
863 
864 // TODO: avoid reallocation ???
865 # define zend_copy_value(zendlval, yytext, yyleng) \
866 	if (SCNG(output_filter)) { \
867 		size_t sz = 0; \
868 		char *s = NULL; \
869 		SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); \
870 		ZVAL_STRINGL(zendlval, s, sz); \
871 		efree(s); \
872 	} else { \
873 		ZVAL_STRINGL(zendlval, yytext, yyleng); \
874 	}
875 
zend_scan_escape_string(zval * zendlval,char * str,int len,char quote_type)876 static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type)
877 {
878 	register char *s, *t;
879 	char *end;
880 
881 	ZVAL_STRINGL(zendlval, str, len);
882 
883 	/* convert escape sequences */
884 	s = t = Z_STRVAL_P(zendlval);
885 	end = s+Z_STRLEN_P(zendlval);
886 	while (s<end) {
887 		if (*s=='\\') {
888 			s++;
889 			if (s >= end) {
890 				*t++ = '\\';
891 				break;
892 			}
893 
894 			switch(*s) {
895 				case 'n':
896 					*t++ = '\n';
897 					Z_STRLEN_P(zendlval)--;
898 					break;
899 				case 'r':
900 					*t++ = '\r';
901 					Z_STRLEN_P(zendlval)--;
902 					break;
903 				case 't':
904 					*t++ = '\t';
905 					Z_STRLEN_P(zendlval)--;
906 					break;
907 				case 'f':
908 					*t++ = '\f';
909 					Z_STRLEN_P(zendlval)--;
910 					break;
911 				case 'v':
912 					*t++ = '\v';
913 					Z_STRLEN_P(zendlval)--;
914 					break;
915 				case 'e':
916 #ifdef ZEND_WIN32
917 					*t++ = VK_ESCAPE;
918 #else
919 					*t++ = '\e';
920 #endif
921 					Z_STRLEN_P(zendlval)--;
922 					break;
923 				case '"':
924 				case '`':
925 					if (*s != quote_type) {
926 						*t++ = '\\';
927 						*t++ = *s;
928 						break;
929 					}
930 				case '\\':
931 				case '$':
932 					*t++ = *s;
933 					Z_STRLEN_P(zendlval)--;
934 					break;
935 				case 'x':
936 				case 'X':
937 					if (ZEND_IS_HEX(*(s+1))) {
938 						char hex_buf[3] = { 0, 0, 0 };
939 
940 						Z_STRLEN_P(zendlval)--; /* for the 'x' */
941 
942 						hex_buf[0] = *(++s);
943 						Z_STRLEN_P(zendlval)--;
944 						if (ZEND_IS_HEX(*(s+1))) {
945 							hex_buf[1] = *(++s);
946 							Z_STRLEN_P(zendlval)--;
947 						}
948 						*t++ = (char) ZEND_STRTOL(hex_buf, NULL, 16);
949 					} else {
950 						*t++ = '\\';
951 						*t++ = *s;
952 					}
953 					break;
954 				/* UTF-8 codepoint escape, format: /\\u\{\x+\}/ */
955 				case 'u':
956 					{
957 						/* cache where we started so we can parse after validating */
958 						char *start = s + 1;
959 						size_t len = 0;
960 						zend_bool valid = 1;
961 						unsigned long codepoint;
962 						size_t byte_len = 0;
963 
964 						if (*start != '{') {
965 							/* we silently let this pass to avoid breaking code
966 							 * with JSON in string literals (e.g. "\"\u202e\""
967 							 */
968 							*t++ = '\\';
969 							*t++ = 'u';
970 							break;
971 						} else {
972 							/* on the other hand, invalid \u{blah} errors */
973 							s++;
974 							len++;
975 							s++;
976 							while (*s != '}') {
977 								if (!ZEND_IS_HEX(*s)) {
978 									valid = 0;
979 									break;
980 								} else {
981 									len++;
982 								}
983 								s++;
984 							}
985 							if (*s == '}') {
986 								valid = 1;
987 								len++;
988 							}
989 						}
990 
991 						/* \u{} is invalid */
992 						if (len <= 2) {
993 							valid = 0;
994 						}
995 
996 						if (!valid) {
997 							zend_throw_exception(zend_ce_parse_error,
998 								"Invalid UTF-8 codepoint escape sequence", 0);
999 							zval_ptr_dtor(zendlval);
1000 							ZVAL_UNDEF(zendlval);
1001 							return FAILURE;
1002 						}
1003 
1004 						errno = 0;
1005 						codepoint = strtoul(start + 1, NULL, 16);
1006 
1007 						/* per RFC 3629, UTF-8 can only represent 21 bits */
1008 						if (codepoint > 0x10FFFF || errno) {
1009 							zend_throw_exception(zend_ce_parse_error,
1010 								"Invalid UTF-8 codepoint escape sequence: Codepoint too large", 0);
1011 							zval_ptr_dtor(zendlval);
1012 							ZVAL_UNDEF(zendlval);
1013 							return FAILURE;
1014 						}
1015 
1016 						/* based on https://en.wikipedia.org/wiki/UTF-8#Sample_code */
1017 						if (codepoint < 0x80) {
1018 							byte_len = 1;
1019 							*t++ = codepoint;
1020 						} else if (codepoint <= 0x7FF) {
1021 							byte_len = 2;
1022 							*t++ = (codepoint >> 6) + 0xC0;
1023 							*t++ = (codepoint & 0x3F) + 0x80;
1024 						} else if (codepoint <= 0xFFFF) {
1025 							byte_len = 3;
1026 							*t++ = (codepoint >> 12) + 0xE0;
1027 							*t++ = ((codepoint >> 6) & 0x3F) + 0x80;
1028 							*t++ = (codepoint & 0x3F) + 0x80;
1029 						} else if (codepoint <= 0x10FFFF) {
1030 							byte_len = 4;
1031 							*t++ = (codepoint >> 18) + 0xF0;
1032 							*t++ = ((codepoint >> 12) & 0x3F) + 0x80;
1033 							*t++ = ((codepoint >> 6) & 0x3F) + 0x80;
1034 							*t++ = (codepoint & 0x3F) + 0x80;
1035 						}
1036 
1037 						Z_STRLEN_P(zendlval) -= 2; /* \u */
1038 						Z_STRLEN_P(zendlval) -= (len - byte_len);
1039 					}
1040 					break;
1041 				default:
1042 					/* check for an octal */
1043 					if (ZEND_IS_OCT(*s)) {
1044 						char octal_buf[4] = { 0, 0, 0, 0 };
1045 
1046 						octal_buf[0] = *s;
1047 						Z_STRLEN_P(zendlval)--;
1048 						if (ZEND_IS_OCT(*(s+1))) {
1049 							octal_buf[1] = *(++s);
1050 							Z_STRLEN_P(zendlval)--;
1051 							if (ZEND_IS_OCT(*(s+1))) {
1052 								octal_buf[2] = *(++s);
1053 								Z_STRLEN_P(zendlval)--;
1054 							}
1055 						}
1056 						if (octal_buf[2] &&
1057 						    (octal_buf[0] > '3')) {
1058 							/* 3 octit values must not overflow 0xFF (\377) */
1059 							zend_error(E_COMPILE_WARNING, "Octal escape sequence overflow \\%s is greater than \\377", octal_buf);
1060 						}
1061 
1062 						*t++ = (char) ZEND_STRTOL(octal_buf, NULL, 8);
1063 					} else {
1064 						*t++ = '\\';
1065 						*t++ = *s;
1066 					}
1067 					break;
1068 			}
1069 		} else {
1070 			*t++ = *s;
1071 		}
1072 
1073 		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
1074 			CG(zend_lineno)++;
1075 		}
1076 		s++;
1077 	}
1078 	*t = 0;
1079 	if (SCNG(output_filter)) {
1080 		size_t sz = 0;
1081 		unsigned char *str;
1082 		// TODO: avoid realocation ???
1083 		s = Z_STRVAL_P(zendlval);
1084 		SCNG(output_filter)(&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval));
1085 		zval_ptr_dtor(zendlval);
1086 		ZVAL_STRINGL(zendlval, (char *) str, sz);
1087 		efree(str);
1088 	}
1089 	return SUCCESS;
1090 }
1091 
emit_token(int token,int token_line)1092 static zend_always_inline int emit_token(int token, int token_line)
1093 {
1094 	if (SCNG(on_event)) {
1095 		SCNG(on_event)(ON_TOKEN, token, token_line, SCNG(on_event_context));
1096 	}
1097 
1098 	return token;
1099 }
1100 
1101 #define RETURN_TOKEN(token) return emit_token(token, start_line);
1102 
lex_scan(zval * zendlval)1103 int lex_scan(zval *zendlval)
1104 {
1105 
1106 int start_line = CG(zend_lineno);
1107 
1108 restart:
1109 	SCNG(yy_text) = YYCURSOR;
1110 
1111 
1112 #line 1113 "Zend/zend_language_scanner.c"
1113 {
1114 	YYCTYPE yych;
1115 	unsigned int yyaccept = 0;
1116 	if (YYGETCONDITION() < 5) {
1117 		if (YYGETCONDITION() < 2) {
1118 			if (YYGETCONDITION() < 1) {
1119 				goto yyc_ST_IN_SCRIPTING;
1120 			} else {
1121 				goto yyc_ST_LOOKING_FOR_PROPERTY;
1122 			}
1123 		} else {
1124 			if (YYGETCONDITION() < 3) {
1125 				goto yyc_ST_BACKQUOTE;
1126 			} else {
1127 				if (YYGETCONDITION() < 4) {
1128 					goto yyc_ST_DOUBLE_QUOTES;
1129 				} else {
1130 					goto yyc_ST_HEREDOC;
1131 				}
1132 			}
1133 		}
1134 	} else {
1135 		if (YYGETCONDITION() < 7) {
1136 			if (YYGETCONDITION() < 6) {
1137 				goto yyc_ST_LOOKING_FOR_VARNAME;
1138 			} else {
1139 				goto yyc_ST_VAR_OFFSET;
1140 			}
1141 		} else {
1142 			if (YYGETCONDITION() < 8) {
1143 				goto yyc_INITIAL;
1144 			} else {
1145 				if (YYGETCONDITION() < 9) {
1146 					goto yyc_ST_END_HEREDOC;
1147 				} else {
1148 					goto yyc_ST_NOWDOC;
1149 				}
1150 			}
1151 		}
1152 	}
1153 /* *********************************** */
1154 yyc_ST_IN_SCRIPTING:
1155 	{
1156 		static const unsigned char yybm[] = {
1157 			  0,   0,   0,   0,   0,   0,   0,   0,
1158 			  0,  36,   4,   0,   0,   4,   0,   0,
1159 			  0,   0,   0,   0,   0,   0,   0,   0,
1160 			  0,   0,   0,   0,   0,   0,   0,   0,
1161 			 36,   0,   0,   0,   0,   0,   0,   0,
1162 			  0,   0,   0,   0,   0,   0,   0,   0,
1163 			216, 216, 152, 152, 152, 152, 152, 152,
1164 			152, 152,   0,   0,   0,   0,   0,   0,
1165 			  0, 144, 144, 144, 144, 144, 144,  16,
1166 			 16,  16,  16,  16,  16,  16,  16,  16,
1167 			 16,  16,  16,  16,  16,  16,  16,  16,
1168 			 16,  16,  16,   0,   0,   0,   0,  16,
1169 			  0, 144, 144, 144, 144, 144, 144,  16,
1170 			 16,  16,  16,  16,  16,  16,  16,  16,
1171 			 16,  16,  16,  16,  16,  16,  16,  16,
1172 			 16,  16,  16,   0,   0,   0,   0,   0,
1173 			 16,  16,  16,  16,  16,  16,  16,  16,
1174 			 16,  16,  16,  16,  16,  16,  16,  16,
1175 			 16,  16,  16,  16,  16,  16,  16,  16,
1176 			 16,  16,  16,  16,  16,  16,  16,  16,
1177 			 16,  16,  16,  16,  16,  16,  16,  16,
1178 			 16,  16,  16,  16,  16,  16,  16,  16,
1179 			 16,  16,  16,  16,  16,  16,  16,  16,
1180 			 16,  16,  16,  16,  16,  16,  16,  16,
1181 			 16,  16,  16,  16,  16,  16,  16,  16,
1182 			 16,  16,  16,  16,  16,  16,  16,  16,
1183 			 16,  16,  16,  16,  16,  16,  16,  16,
1184 			 16,  16,  16,  16,  16,  16,  16,  16,
1185 			 16,  16,  16,  16,  16,  16,  16,  16,
1186 			 16,  16,  16,  16,  16,  16,  16,  16,
1187 			 16,  16,  16,  16,  16,  16,  16,  16,
1188 			 16,  16,  16,  16,  16,  16,  16,  16,
1189 		};
1190 		YYDEBUG(1, *YYCURSOR);
1191 		YYFILL(16);
1192 		yych = *YYCURSOR;
1193 		if (yybm[0+yych] & 4) {
1194 			goto yy5;
1195 		}
1196 		switch (yych) {
1197 		case 0x00:
1198 		case 0x01:
1199 		case 0x02:
1200 		case 0x03:
1201 		case 0x04:
1202 		case 0x05:
1203 		case 0x06:
1204 		case 0x07:
1205 		case 0x08:
1206 		case '\t':
1207 		case '\n':
1208 		case '\v':
1209 		case '\f':
1210 		case '\r':
1211 		case 0x0E:
1212 		case 0x0F:
1213 		case 0x10:
1214 		case 0x11:
1215 		case 0x12:
1216 		case 0x13:
1217 		case 0x14:
1218 		case 0x15:
1219 		case 0x16:
1220 		case 0x17:
1221 		case 0x18:
1222 		case 0x19:
1223 		case 0x1A:
1224 		case 0x1B:
1225 		case 0x1C:
1226 		case 0x1D:
1227 		case 0x1E:
1228 		case 0x1F:
1229 		case 0x7F:	goto yy3;
1230 		case ' ':
1231 		case '!':	goto yy8;
1232 		case '"':	goto yy10;
1233 		case '#':	goto yy12;
1234 		case '$':	goto yy14;
1235 		case '%':	goto yy15;
1236 		case '&':	goto yy16;
1237 		case '\'':	goto yy17;
1238 		case '(':	goto yy19;
1239 		case ')':
1240 		case ',':
1241 		case ';':
1242 		case '@':
1243 		case '[':
1244 		case ']':
1245 		case '~':	goto yy20;
1246 		case '*':	goto yy21;
1247 		case '+':	goto yy22;
1248 		case '-':	goto yy23;
1249 		case '.':	goto yy24;
1250 		case '/':	goto yy25;
1251 		case '0':	goto yy26;
1252 		case '1':
1253 		case '2':
1254 		case '3':
1255 		case '4':
1256 		case '5':
1257 		case '6':
1258 		case '7':
1259 		case '8':
1260 		case '9':	goto yy28;
1261 		case ':':	goto yy30;
1262 		case '<':	goto yy31;
1263 		case '=':	goto yy32;
1264 		case '>':	goto yy33;
1265 		case '?':	goto yy34;
1266 		case 'A':
1267 		case 'a':	goto yy35;
1268 		case 'B':
1269 		case 'b':	goto yy37;
1270 		case 'C':
1271 		case 'c':	goto yy38;
1272 		case 'D':
1273 		case 'd':	goto yy39;
1274 		case 'E':
1275 		case 'e':	goto yy40;
1276 		case 'F':
1277 		case 'f':	goto yy41;
1278 		case 'G':
1279 		case 'g':	goto yy42;
1280 		case 'I':
1281 		case 'i':	goto yy45;
1282 		case 'L':
1283 		case 'l':	goto yy46;
1284 		case 'N':
1285 		case 'n':	goto yy47;
1286 		case 'O':
1287 		case 'o':	goto yy48;
1288 		case 'P':
1289 		case 'p':	goto yy49;
1290 		case 'R':
1291 		case 'r':	goto yy50;
1292 		case 'S':
1293 		case 's':	goto yy51;
1294 		case 'T':
1295 		case 't':	goto yy52;
1296 		case 'U':
1297 		case 'u':	goto yy53;
1298 		case 'V':
1299 		case 'v':	goto yy54;
1300 		case 'W':
1301 		case 'w':	goto yy55;
1302 		case 'X':
1303 		case 'x':	goto yy56;
1304 		case 'Y':
1305 		case 'y':	goto yy57;
1306 		case '\\':	goto yy58;
1307 		case '^':	goto yy60;
1308 		case '_':	goto yy61;
1309 		case '`':	goto yy62;
1310 		case '{':	goto yy64;
1311 		case '|':	goto yy66;
1312 		case '}':	goto yy67;
1313 		default:	goto yy43;
1314 		}
1315 yy3:
1316 		YYDEBUG(3, *YYCURSOR);
1317 		++YYCURSOR;
1318 		YYDEBUG(4, *YYCURSOR);
1319 		yyleng = YYCURSOR - SCNG(yy_text);
1320 #line 2390 "Zend/zend_language_scanner.l"
1321 		{
1322 	if (YYCURSOR > YYLIMIT) {
1323 		RETURN_TOKEN(END);
1324 	}
1325 
1326 	zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
1327 	goto restart;
1328 }
1329 #line 1330 "Zend/zend_language_scanner.c"
1330 yy5:
1331 		YYDEBUG(5, *YYCURSOR);
1332 		++YYCURSOR;
1333 		YYFILL(1);
1334 		yych = *YYCURSOR;
1335 		YYDEBUG(6, *YYCURSOR);
1336 		if (yybm[0+yych] & 4) {
1337 			goto yy5;
1338 		}
1339 		YYDEBUG(7, *YYCURSOR);
1340 		yyleng = YYCURSOR - SCNG(yy_text);
1341 #line 1292 "Zend/zend_language_scanner.l"
1342 		{
1343 	HANDLE_NEWLINES(yytext, yyleng);
1344 	RETURN_TOKEN(T_WHITESPACE);
1345 }
1346 #line 1347 "Zend/zend_language_scanner.c"
1347 yy8:
1348 		YYDEBUG(8, *YYCURSOR);
1349 		yych = *++YYCURSOR;
1350 		if (yych == '=') goto yy69;
1351 yy9:
1352 		YYDEBUG(9, *YYCURSOR);
1353 		yyleng = YYCURSOR - SCNG(yy_text);
1354 #line 1577 "Zend/zend_language_scanner.l"
1355 		{
1356 	RETURN_TOKEN(yytext[0]);
1357 }
1358 #line 1359 "Zend/zend_language_scanner.c"
1359 yy10:
1360 		YYDEBUG(10, *YYCURSOR);
1361 		++YYCURSOR;
1362 		YYDEBUG(11, *YYCURSOR);
1363 		yyleng = YYCURSOR - SCNG(yy_text);
1364 #line 2038 "Zend/zend_language_scanner.l"
1365 		{
1366 	int bprefix = (yytext[0] != '"') ? 1 : 0;
1367 
1368 	while (YYCURSOR < YYLIMIT) {
1369 		switch (*YYCURSOR++) {
1370 			case '"':
1371 				yyleng = YYCURSOR - SCNG(yy_text);
1372 				zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"');
1373 				RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
1374 			case '$':
1375 				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
1376 					break;
1377 				}
1378 				continue;
1379 			case '{':
1380 				if (*YYCURSOR == '$') {
1381 					break;
1382 				}
1383 				continue;
1384 			case '\\':
1385 				if (YYCURSOR < YYLIMIT) {
1386 					YYCURSOR++;
1387 				}
1388 				/* fall through */
1389 			default:
1390 				continue;
1391 		}
1392 
1393 		YYCURSOR--;
1394 		break;
1395 	}
1396 
1397 	/* Remember how much was scanned to save rescanning */
1398 	SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng);
1399 
1400 	YYCURSOR = SCNG(yy_text) + yyleng;
1401 
1402 	BEGIN(ST_DOUBLE_QUOTES);
1403 	RETURN_TOKEN('"');
1404 }
1405 #line 1406 "Zend/zend_language_scanner.c"
1406 yy12:
1407 		YYDEBUG(12, *YYCURSOR);
1408 		++YYCURSOR;
1409 		YYDEBUG(13, *YYCURSOR);
1410 		yyleng = YYCURSOR - SCNG(yy_text);
1411 #line 1898 "Zend/zend_language_scanner.l"
1412 		{
1413 	while (YYCURSOR < YYLIMIT) {
1414 		switch (*YYCURSOR++) {
1415 			case '\r':
1416 				if (*YYCURSOR == '\n') {
1417 					YYCURSOR++;
1418 				}
1419 				/* fall through */
1420 			case '\n':
1421 				CG(zend_lineno)++;
1422 				break;
1423 			case '?':
1424 				if (*YYCURSOR == '>') {
1425 					YYCURSOR--;
1426 					break;
1427 				}
1428 				/* fall through */
1429 			default:
1430 				continue;
1431 		}
1432 
1433 		break;
1434 	}
1435 
1436 	yyleng = YYCURSOR - SCNG(yy_text);
1437 
1438 	RETURN_TOKEN(T_COMMENT);
1439 }
1440 #line 1441 "Zend/zend_language_scanner.c"
1441 yy14:
1442 		YYDEBUG(14, *YYCURSOR);
1443 		yych = *++YYCURSOR;
1444 		if (yych <= '_') {
1445 			if (yych <= '@') goto yy9;
1446 			if (yych <= 'Z') goto yy71;
1447 			if (yych <= '^') goto yy9;
1448 			goto yy71;
1449 		} else {
1450 			if (yych <= '`') goto yy9;
1451 			if (yych <= 'z') goto yy71;
1452 			if (yych <= 0x7F) goto yy9;
1453 			goto yy71;
1454 		}
1455 yy15:
1456 		YYDEBUG(15, *YYCURSOR);
1457 		yych = *++YYCURSOR;
1458 		if (yych == '=') goto yy74;
1459 		goto yy9;
1460 yy16:
1461 		YYDEBUG(16, *YYCURSOR);
1462 		yych = *++YYCURSOR;
1463 		if (yych == '&') goto yy76;
1464 		if (yych == '=') goto yy78;
1465 		goto yy9;
1466 yy17:
1467 		YYDEBUG(17, *YYCURSOR);
1468 		++YYCURSOR;
1469 		YYDEBUG(18, *YYCURSOR);
1470 		yyleng = YYCURSOR - SCNG(yy_text);
1471 #line 1969 "Zend/zend_language_scanner.l"
1472 		{
1473 	register char *s, *t;
1474 	char *end;
1475 	int bprefix = (yytext[0] != '\'') ? 1 : 0;
1476 
1477 	while (1) {
1478 		if (YYCURSOR < YYLIMIT) {
1479 			if (*YYCURSOR == '\'') {
1480 				YYCURSOR++;
1481 				yyleng = YYCURSOR - SCNG(yy_text);
1482 
1483 				break;
1484 			} else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
1485 				YYCURSOR++;
1486 			}
1487 		} else {
1488 			yyleng = YYLIMIT - SCNG(yy_text);
1489 
1490 			/* Unclosed single quotes; treat similar to double quotes, but without a separate token
1491 			 * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..."
1492 			 * rule, which continued in ST_IN_SCRIPTING state after the quote */
1493 			ZVAL_NULL(zendlval);
1494 			RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
1495 		}
1496 	}
1497 
1498 	ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2);
1499 
1500 	/* convert escape sequences */
1501 	s = t = Z_STRVAL_P(zendlval);
1502 	end = s+Z_STRLEN_P(zendlval);
1503 	while (s<end) {
1504 		if (*s=='\\') {
1505 			s++;
1506 
1507 			switch(*s) {
1508 				case '\\':
1509 				case '\'':
1510 					*t++ = *s;
1511 					Z_STRLEN_P(zendlval)--;
1512 					break;
1513 				default:
1514 					*t++ = '\\';
1515 					*t++ = *s;
1516 					break;
1517 			}
1518 		} else {
1519 			*t++ = *s;
1520 		}
1521 
1522 		if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
1523 			CG(zend_lineno)++;
1524 		}
1525 		s++;
1526 	}
1527 	*t = 0;
1528 
1529 	if (SCNG(output_filter)) {
1530 		size_t sz = 0;
1531 		char *str = NULL;
1532 		s = Z_STRVAL_P(zendlval);
1533 		// TODO: avoid reallocation ???
1534 		SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval));
1535 		ZVAL_STRINGL(zendlval, str, sz);
1536 	}
1537 	RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
1538 }
1539 #line 1540 "Zend/zend_language_scanner.c"
1540 yy19:
1541 		YYDEBUG(19, *YYCURSOR);
1542 		yyaccept = 0;
1543 		yych = *(YYMARKER = ++YYCURSOR);
1544 		if (yych <= 'S') {
1545 			if (yych <= 'D') {
1546 				if (yych <= ' ') {
1547 					if (yych == '\t') goto yy81;
1548 					if (yych <= 0x1F) goto yy9;
1549 					goto yy81;
1550 				} else {
1551 					if (yych <= '@') goto yy9;
1552 					if (yych == 'C') goto yy9;
1553 					goto yy81;
1554 				}
1555 			} else {
1556 				if (yych <= 'I') {
1557 					if (yych == 'F') goto yy81;
1558 					if (yych <= 'H') goto yy9;
1559 					goto yy81;
1560 				} else {
1561 					if (yych == 'O') goto yy81;
1562 					if (yych <= 'Q') goto yy9;
1563 					goto yy81;
1564 				}
1565 			}
1566 		} else {
1567 			if (yych <= 'f') {
1568 				if (yych <= 'b') {
1569 					if (yych == 'U') goto yy81;
1570 					if (yych <= '`') goto yy9;
1571 					goto yy81;
1572 				} else {
1573 					if (yych == 'd') goto yy81;
1574 					if (yych <= 'e') goto yy9;
1575 					goto yy81;
1576 				}
1577 			} else {
1578 				if (yych <= 'o') {
1579 					if (yych == 'i') goto yy81;
1580 					if (yych <= 'n') goto yy9;
1581 					goto yy81;
1582 				} else {
1583 					if (yych <= 's') {
1584 						if (yych <= 'q') goto yy9;
1585 						goto yy81;
1586 					} else {
1587 						if (yych == 'u') goto yy81;
1588 						goto yy9;
1589 					}
1590 				}
1591 			}
1592 		}
1593 yy20:
1594 		YYDEBUG(20, *YYCURSOR);
1595 		++YYCURSOR;
1596 		goto yy9;
1597 yy21:
1598 		YYDEBUG(21, *YYCURSOR);
1599 		yych = *++YYCURSOR;
1600 		if (yych == '*') goto yy92;
1601 		if (yych == '=') goto yy94;
1602 		goto yy9;
1603 yy22:
1604 		YYDEBUG(22, *YYCURSOR);
1605 		yych = *++YYCURSOR;
1606 		if (yych == '+') goto yy96;
1607 		if (yych == '=') goto yy98;
1608 		goto yy9;
1609 yy23:
1610 		YYDEBUG(23, *YYCURSOR);
1611 		yych = *++YYCURSOR;
1612 		if (yych <= '<') {
1613 			if (yych == '-') goto yy100;
1614 			goto yy9;
1615 		} else {
1616 			if (yych <= '=') goto yy102;
1617 			if (yych <= '>') goto yy104;
1618 			goto yy9;
1619 		}
1620 yy24:
1621 		YYDEBUG(24, *YYCURSOR);
1622 		yyaccept = 0;
1623 		yych = *(YYMARKER = ++YYCURSOR);
1624 		if (yych <= '/') {
1625 			if (yych == '.') goto yy106;
1626 			goto yy9;
1627 		} else {
1628 			if (yych <= '9') goto yy107;
1629 			if (yych == '=') goto yy110;
1630 			goto yy9;
1631 		}
1632 yy25:
1633 		YYDEBUG(25, *YYCURSOR);
1634 		yych = *++YYCURSOR;
1635 		if (yych <= '.') {
1636 			if (yych == '*') goto yy112;
1637 			goto yy9;
1638 		} else {
1639 			if (yych <= '/') goto yy12;
1640 			if (yych == '=') goto yy114;
1641 			goto yy9;
1642 		}
1643 yy26:
1644 		YYDEBUG(26, *YYCURSOR);
1645 		yyaccept = 1;
1646 		yych = *(YYMARKER = ++YYCURSOR);
1647 		if (yych <= 'X') {
1648 			if (yych == 'B') goto yy116;
1649 			if (yych <= 'W') goto yy29;
1650 			goto yy118;
1651 		} else {
1652 			if (yych <= 'b') {
1653 				if (yych <= 'a') goto yy29;
1654 				goto yy116;
1655 			} else {
1656 				if (yych == 'x') goto yy118;
1657 				goto yy29;
1658 			}
1659 		}
1660 yy27:
1661 		YYDEBUG(27, *YYCURSOR);
1662 		yyleng = YYCURSOR - SCNG(yy_text);
1663 #line 1647 "Zend/zend_language_scanner.l"
1664 		{
1665 	char *end;
1666 	if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
1667 		errno = 0;
1668 		/* base must be passed explicitly for correct parse error on Windows */
1669 		ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, yytext[0] == '0' ? 8 : 10));
1670 		/* This isn't an assert, we need to ensure 019 isn't valid octal
1671 		 * Because the lexing itself doesn't do that for us
1672 		 */
1673 		if (end != yytext + yyleng) {
1674 			zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
1675 			ZVAL_UNDEF(zendlval);
1676 			RETURN_TOKEN(T_LNUMBER);
1677 		}
1678 	} else {
1679 		errno = 0;
1680 		ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0));
1681 		if (errno == ERANGE) { /* Overflow */
1682 			errno = 0;
1683 			if (yytext[0] == '0') { /* octal overflow */
1684 				ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end));
1685 			} else {
1686 				ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end));
1687 			}
1688 			/* Also not an assert for the same reason */
1689 			if (end != yytext + yyleng) {
1690 				zend_throw_exception(zend_ce_parse_error,
1691 					"Invalid numeric literal", 0);
1692 				ZVAL_UNDEF(zendlval);
1693 				RETURN_TOKEN(T_DNUMBER);
1694 			}
1695 			RETURN_TOKEN(T_DNUMBER);
1696 		}
1697 		/* Also not an assert for the same reason */
1698 		if (end != yytext + yyleng) {
1699 			zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0);
1700 			ZVAL_UNDEF(zendlval);
1701 			RETURN_TOKEN(T_DNUMBER);
1702 		}
1703 	}
1704 	ZEND_ASSERT(!errno);
1705 	RETURN_TOKEN(T_LNUMBER);
1706 }
1707 #line 1708 "Zend/zend_language_scanner.c"
1708 yy28:
1709 		YYDEBUG(28, *YYCURSOR);
1710 		yyaccept = 1;
1711 		YYMARKER = ++YYCURSOR;
1712 		YYFILL(3);
1713 		yych = *YYCURSOR;
1714 yy29:
1715 		YYDEBUG(29, *YYCURSOR);
1716 		if (yybm[0+yych] & 8) {
1717 			goto yy28;
1718 		}
1719 		if (yych <= 'D') {
1720 			if (yych == '.') goto yy107;
1721 			goto yy27;
1722 		} else {
1723 			if (yych <= 'E') goto yy117;
1724 			if (yych == 'e') goto yy117;
1725 			goto yy27;
1726 		}
1727 yy30:
1728 		YYDEBUG(30, *YYCURSOR);
1729 		yych = *++YYCURSOR;
1730 		if (yych == ':') goto yy119;
1731 		goto yy9;
1732 yy31:
1733 		YYDEBUG(31, *YYCURSOR);
1734 		yych = *++YYCURSOR;
1735 		if (yych <= ';') goto yy9;
1736 		if (yych <= '<') goto yy121;
1737 		if (yych <= '=') goto yy123;
1738 		if (yych <= '>') goto yy125;
1739 		goto yy9;
1740 yy32:
1741 		YYDEBUG(32, *YYCURSOR);
1742 		yych = *++YYCURSOR;
1743 		if (yych <= '<') goto yy9;
1744 		if (yych <= '=') goto yy126;
1745 		if (yych <= '>') goto yy128;
1746 		goto yy9;
1747 yy33:
1748 		YYDEBUG(33, *YYCURSOR);
1749 		yych = *++YYCURSOR;
1750 		if (yych <= '<') goto yy9;
1751 		if (yych <= '=') goto yy130;
1752 		if (yych <= '>') goto yy132;
1753 		goto yy9;
1754 yy34:
1755 		YYDEBUG(34, *YYCURSOR);
1756 		yych = *++YYCURSOR;
1757 		if (yych <= '=') goto yy9;
1758 		if (yych <= '>') goto yy134;
1759 		if (yych <= '?') goto yy136;
1760 		goto yy9;
1761 yy35:
1762 		YYDEBUG(35, *YYCURSOR);
1763 		yych = *++YYCURSOR;
1764 		if (yych <= 'S') {
1765 			if (yych <= 'M') {
1766 				if (yych == 'B') goto yy138;
1767 				goto yy44;
1768 			} else {
1769 				if (yych <= 'N') goto yy139;
1770 				if (yych <= 'Q') goto yy44;
1771 				if (yych <= 'R') goto yy140;
1772 				goto yy141;
1773 			}
1774 		} else {
1775 			if (yych <= 'n') {
1776 				if (yych == 'b') goto yy138;
1777 				if (yych <= 'm') goto yy44;
1778 				goto yy139;
1779 			} else {
1780 				if (yych <= 'q') goto yy44;
1781 				if (yych <= 'r') goto yy140;
1782 				if (yych <= 's') goto yy141;
1783 				goto yy44;
1784 			}
1785 		}
1786 yy36:
1787 		YYDEBUG(36, *YYCURSOR);
1788 		yyleng = YYCURSOR - SCNG(yy_text);
1789 #line 1892 "Zend/zend_language_scanner.l"
1790 		{
1791 	zend_copy_value(zendlval, yytext, yyleng);
1792 	RETURN_TOKEN(T_STRING);
1793 }
1794 #line 1795 "Zend/zend_language_scanner.c"
1795 yy37:
1796 		YYDEBUG(37, *YYCURSOR);
1797 		yyaccept = 2;
1798 		yych = *(YYMARKER = ++YYCURSOR);
1799 		if (yych <= ';') {
1800 			if (yych <= '"') {
1801 				if (yych <= '!') goto yy44;
1802 				goto yy10;
1803 			} else {
1804 				if (yych == '\'') goto yy17;
1805 				goto yy44;
1806 			}
1807 		} else {
1808 			if (yych <= 'R') {
1809 				if (yych <= '<') goto yy143;
1810 				if (yych <= 'Q') goto yy44;
1811 				goto yy144;
1812 			} else {
1813 				if (yych == 'r') goto yy144;
1814 				goto yy44;
1815 			}
1816 		}
1817 yy38:
1818 		YYDEBUG(38, *YYCURSOR);
1819 		yych = *++YYCURSOR;
1820 		if (yych <= 'O') {
1821 			if (yych <= 'K') {
1822 				if (yych == 'A') goto yy145;
1823 				goto yy44;
1824 			} else {
1825 				if (yych <= 'L') goto yy146;
1826 				if (yych <= 'N') goto yy44;
1827 				goto yy147;
1828 			}
1829 		} else {
1830 			if (yych <= 'k') {
1831 				if (yych == 'a') goto yy145;
1832 				goto yy44;
1833 			} else {
1834 				if (yych <= 'l') goto yy146;
1835 				if (yych == 'o') goto yy147;
1836 				goto yy44;
1837 			}
1838 		}
1839 yy39:
1840 		YYDEBUG(39, *YYCURSOR);
1841 		yych = *++YYCURSOR;
1842 		if (yych <= 'O') {
1843 			if (yych <= 'H') {
1844 				if (yych == 'E') goto yy148;
1845 				goto yy44;
1846 			} else {
1847 				if (yych <= 'I') goto yy149;
1848 				if (yych <= 'N') goto yy44;
1849 				goto yy150;
1850 			}
1851 		} else {
1852 			if (yych <= 'h') {
1853 				if (yych == 'e') goto yy148;
1854 				goto yy44;
1855 			} else {
1856 				if (yych <= 'i') goto yy149;
1857 				if (yych == 'o') goto yy150;
1858 				goto yy44;
1859 			}
1860 		}
1861 yy40:
1862 		YYDEBUG(40, *YYCURSOR);
1863 		yych = *++YYCURSOR;
1864 		switch (yych) {
1865 		case 'C':
1866 		case 'c':	goto yy152;
1867 		case 'L':
1868 		case 'l':	goto yy153;
1869 		case 'M':
1870 		case 'm':	goto yy154;
1871 		case 'N':
1872 		case 'n':	goto yy155;
1873 		case 'V':
1874 		case 'v':	goto yy156;
1875 		case 'X':
1876 		case 'x':	goto yy157;
1877 		default:	goto yy44;
1878 		}
1879 yy41:
1880 		YYDEBUG(41, *YYCURSOR);
1881 		yych = *++YYCURSOR;
1882 		if (yych <= 'U') {
1883 			if (yych <= 'N') {
1884 				if (yych == 'I') goto yy158;
1885 				goto yy44;
1886 			} else {
1887 				if (yych <= 'O') goto yy159;
1888 				if (yych <= 'T') goto yy44;
1889 				goto yy160;
1890 			}
1891 		} else {
1892 			if (yych <= 'n') {
1893 				if (yych == 'i') goto yy158;
1894 				goto yy44;
1895 			} else {
1896 				if (yych <= 'o') goto yy159;
1897 				if (yych == 'u') goto yy160;
1898 				goto yy44;
1899 			}
1900 		}
1901 yy42:
1902 		YYDEBUG(42, *YYCURSOR);
1903 		yych = *++YYCURSOR;
1904 		if (yych <= 'O') {
1905 			if (yych == 'L') goto yy161;
1906 			if (yych <= 'N') goto yy44;
1907 			goto yy162;
1908 		} else {
1909 			if (yych <= 'l') {
1910 				if (yych <= 'k') goto yy44;
1911 				goto yy161;
1912 			} else {
1913 				if (yych == 'o') goto yy162;
1914 				goto yy44;
1915 			}
1916 		}
1917 yy43:
1918 		YYDEBUG(43, *YYCURSOR);
1919 		++YYCURSOR;
1920 		YYFILL(1);
1921 		yych = *YYCURSOR;
1922 yy44:
1923 		YYDEBUG(44, *YYCURSOR);
1924 		if (yybm[0+yych] & 16) {
1925 			goto yy43;
1926 		}
1927 		goto yy36;
1928 yy45:
1929 		YYDEBUG(45, *YYCURSOR);
1930 		yych = *++YYCURSOR;
1931 		if (yych <= 'S') {
1932 			if (yych <= 'L') {
1933 				if (yych == 'F') goto yy163;
1934 				goto yy44;
1935 			} else {
1936 				if (yych <= 'M') goto yy165;
1937 				if (yych <= 'N') goto yy166;
1938 				if (yych <= 'R') goto yy44;
1939 				goto yy167;
1940 			}
1941 		} else {
1942 			if (yych <= 'm') {
1943 				if (yych == 'f') goto yy163;
1944 				if (yych <= 'l') goto yy44;
1945 				goto yy165;
1946 			} else {
1947 				if (yych <= 'n') goto yy166;
1948 				if (yych == 's') goto yy167;
1949 				goto yy44;
1950 			}
1951 		}
1952 yy46:
1953 		YYDEBUG(46, *YYCURSOR);
1954 		yych = *++YYCURSOR;
1955 		if (yych == 'I') goto yy168;
1956 		if (yych == 'i') goto yy168;
1957 		goto yy44;
1958 yy47:
1959 		YYDEBUG(47, *YYCURSOR);
1960 		yych = *++YYCURSOR;
1961 		if (yych <= 'E') {
1962 			if (yych == 'A') goto yy169;
1963 			if (yych <= 'D') goto yy44;
1964 			goto yy170;
1965 		} else {
1966 			if (yych <= 'a') {
1967 				if (yych <= '`') goto yy44;
1968 				goto yy169;
1969 			} else {
1970 				if (yych == 'e') goto yy170;
1971 				goto yy44;
1972 			}
1973 		}
1974 yy48:
1975 		YYDEBUG(48, *YYCURSOR);
1976 		yych = *++YYCURSOR;
1977 		if (yych == 'R') goto yy171;
1978 		if (yych == 'r') goto yy171;
1979 		goto yy44;
1980 yy49:
1981 		YYDEBUG(49, *YYCURSOR);
1982 		yych = *++YYCURSOR;
1983 		if (yych <= 'U') {
1984 			if (yych == 'R') goto yy173;
1985 			if (yych <= 'T') goto yy44;
1986 			goto yy174;
1987 		} else {
1988 			if (yych <= 'r') {
1989 				if (yych <= 'q') goto yy44;
1990 				goto yy173;
1991 			} else {
1992 				if (yych == 'u') goto yy174;
1993 				goto yy44;
1994 			}
1995 		}
1996 yy50:
1997 		YYDEBUG(50, *YYCURSOR);
1998 		yych = *++YYCURSOR;
1999 		if (yych == 'E') goto yy175;
2000 		if (yych == 'e') goto yy175;
2001 		goto yy44;
2002 yy51:
2003 		YYDEBUG(51, *YYCURSOR);
2004 		yych = *++YYCURSOR;
2005 		if (yych <= 'W') {
2006 			if (yych == 'T') goto yy176;
2007 			if (yych <= 'V') goto yy44;
2008 			goto yy177;
2009 		} else {
2010 			if (yych <= 't') {
2011 				if (yych <= 's') goto yy44;
2012 				goto yy176;
2013 			} else {
2014 				if (yych == 'w') goto yy177;
2015 				goto yy44;
2016 			}
2017 		}
2018 yy52:
2019 		YYDEBUG(52, *YYCURSOR);
2020 		yych = *++YYCURSOR;
2021 		if (yych <= 'R') {
2022 			if (yych == 'H') goto yy178;
2023 			if (yych <= 'Q') goto yy44;
2024 			goto yy179;
2025 		} else {
2026 			if (yych <= 'h') {
2027 				if (yych <= 'g') goto yy44;
2028 				goto yy178;
2029 			} else {
2030 				if (yych == 'r') goto yy179;
2031 				goto yy44;
2032 			}
2033 		}
2034 yy53:
2035 		YYDEBUG(53, *YYCURSOR);
2036 		yych = *++YYCURSOR;
2037 		if (yych <= 'S') {
2038 			if (yych == 'N') goto yy180;
2039 			if (yych <= 'R') goto yy44;
2040 			goto yy181;
2041 		} else {
2042 			if (yych <= 'n') {
2043 				if (yych <= 'm') goto yy44;
2044 				goto yy180;
2045 			} else {
2046 				if (yych == 's') goto yy181;
2047 				goto yy44;
2048 			}
2049 		}
2050 yy54:
2051 		YYDEBUG(54, *YYCURSOR);
2052 		yych = *++YYCURSOR;
2053 		if (yych == 'A') goto yy182;
2054 		if (yych == 'a') goto yy182;
2055 		goto yy44;
2056 yy55:
2057 		YYDEBUG(55, *YYCURSOR);
2058 		yych = *++YYCURSOR;
2059 		if (yych == 'H') goto yy183;
2060 		if (yych == 'h') goto yy183;
2061 		goto yy44;
2062 yy56:
2063 		YYDEBUG(56, *YYCURSOR);
2064 		yych = *++YYCURSOR;
2065 		if (yych == 'O') goto yy184;
2066 		if (yych == 'o') goto yy184;
2067 		goto yy44;
2068 yy57:
2069 		YYDEBUG(57, *YYCURSOR);
2070 		yych = *++YYCURSOR;
2071 		if (yych == 'I') goto yy185;
2072 		if (yych == 'i') goto yy185;
2073 		goto yy44;
2074 yy58:
2075 		YYDEBUG(58, *YYCURSOR);
2076 		++YYCURSOR;
2077 		YYDEBUG(59, *YYCURSOR);
2078 		yyleng = YYCURSOR - SCNG(yy_text);
2079 #line 1317 "Zend/zend_language_scanner.l"
2080 		{
2081 	RETURN_TOKEN(T_NS_SEPARATOR);
2082 }
2083 #line 2084 "Zend/zend_language_scanner.c"
2084 yy60:
2085 		YYDEBUG(60, *YYCURSOR);
2086 		yych = *++YYCURSOR;
2087 		if (yych == '=') goto yy186;
2088 		goto yy9;
2089 yy61:
2090 		YYDEBUG(61, *YYCURSOR);
2091 		yych = *++YYCURSOR;
2092 		if (yych == '_') goto yy188;
2093 		goto yy44;
2094 yy62:
2095 		YYDEBUG(62, *YYCURSOR);
2096 		++YYCURSOR;
2097 		YYDEBUG(63, *YYCURSOR);
2098 		yyleng = YYCURSOR - SCNG(yy_text);
2099 #line 2128 "Zend/zend_language_scanner.l"
2100 		{
2101 	BEGIN(ST_BACKQUOTE);
2102 	RETURN_TOKEN('`');
2103 }
2104 #line 2105 "Zend/zend_language_scanner.c"
2105 yy64:
2106 		YYDEBUG(64, *YYCURSOR);
2107 		++YYCURSOR;
2108 		YYDEBUG(65, *YYCURSOR);
2109 		yyleng = YYCURSOR - SCNG(yy_text);
2110 #line 1582 "Zend/zend_language_scanner.l"
2111 		{
2112 	yy_push_state(ST_IN_SCRIPTING);
2113 	RETURN_TOKEN('{');
2114 }
2115 #line 2116 "Zend/zend_language_scanner.c"
2116 yy66:
2117 		YYDEBUG(66, *YYCURSOR);
2118 		yych = *++YYCURSOR;
2119 		if (yych == '=') goto yy189;
2120 		if (yych == '|') goto yy191;
2121 		goto yy9;
2122 yy67:
2123 		YYDEBUG(67, *YYCURSOR);
2124 		++YYCURSOR;
2125 		YYDEBUG(68, *YYCURSOR);
2126 		yyleng = YYCURSOR - SCNG(yy_text);
2127 #line 1594 "Zend/zend_language_scanner.l"
2128 		{
2129 	RESET_DOC_COMMENT();
2130 	if (!zend_stack_is_empty(&SCNG(state_stack))) {
2131 		yy_pop_state();
2132 	}
2133 	RETURN_TOKEN('}');
2134 }
2135 #line 2136 "Zend/zend_language_scanner.c"
2136 yy69:
2137 		YYDEBUG(69, *YYCURSOR);
2138 		yych = *++YYCURSOR;
2139 		if (yych == '=') goto yy193;
2140 yy70:
2141 		YYDEBUG(70, *YYCURSOR);
2142 		yyleng = YYCURSOR - SCNG(yy_text);
2143 #line 1481 "Zend/zend_language_scanner.l"
2144 		{
2145 	RETURN_TOKEN(T_IS_NOT_EQUAL);
2146 }
2147 #line 2148 "Zend/zend_language_scanner.c"
2148 yy71:
2149 		YYDEBUG(71, *YYCURSOR);
2150 		++YYCURSOR;
2151 		YYFILL(1);
2152 		yych = *YYCURSOR;
2153 		YYDEBUG(72, *YYCURSOR);
2154 		if (yych <= '^') {
2155 			if (yych <= '9') {
2156 				if (yych >= '0') goto yy71;
2157 			} else {
2158 				if (yych <= '@') goto yy73;
2159 				if (yych <= 'Z') goto yy71;
2160 			}
2161 		} else {
2162 			if (yych <= '`') {
2163 				if (yych <= '_') goto yy71;
2164 			} else {
2165 				if (yych <= 'z') goto yy71;
2166 				if (yych >= 0x80) goto yy71;
2167 			}
2168 		}
2169 yy73:
2170 		YYDEBUG(73, *YYCURSOR);
2171 		yyleng = YYCURSOR - SCNG(yy_text);
2172 #line 1869 "Zend/zend_language_scanner.l"
2173 		{
2174 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
2175 	RETURN_TOKEN(T_VARIABLE);
2176 }
2177 #line 2178 "Zend/zend_language_scanner.c"
2178 yy74:
2179 		YYDEBUG(74, *YYCURSOR);
2180 		++YYCURSOR;
2181 		YYDEBUG(75, *YYCURSOR);
2182 		yyleng = YYCURSOR - SCNG(yy_text);
2183 #line 1525 "Zend/zend_language_scanner.l"
2184 		{
2185 	RETURN_TOKEN(T_MOD_EQUAL);
2186 }
2187 #line 2188 "Zend/zend_language_scanner.c"
2188 yy76:
2189 		YYDEBUG(76, *YYCURSOR);
2190 		++YYCURSOR;
2191 		YYDEBUG(77, *YYCURSOR);
2192 		yyleng = YYCURSOR - SCNG(yy_text);
2193 #line 1553 "Zend/zend_language_scanner.l"
2194 		{
2195 	RETURN_TOKEN(T_BOOLEAN_AND);
2196 }
2197 #line 2198 "Zend/zend_language_scanner.c"
2198 yy78:
2199 		YYDEBUG(78, *YYCURSOR);
2200 		++YYCURSOR;
2201 		YYDEBUG(79, *YYCURSOR);
2202 		yyleng = YYCURSOR - SCNG(yy_text);
2203 #line 1537 "Zend/zend_language_scanner.l"
2204 		{
2205 	RETURN_TOKEN(T_AND_EQUAL);
2206 }
2207 #line 2208 "Zend/zend_language_scanner.c"
2208 yy80:
2209 		YYDEBUG(80, *YYCURSOR);
2210 		++YYCURSOR;
2211 		YYFILL(7);
2212 		yych = *YYCURSOR;
2213 yy81:
2214 		YYDEBUG(81, *YYCURSOR);
2215 		if (yybm[0+yych] & 32) {
2216 			goto yy80;
2217 		}
2218 		switch (yych) {
2219 		case 'A':
2220 		case 'a':	goto yy83;
2221 		case 'B':
2222 		case 'b':	goto yy84;
2223 		case 'D':
2224 		case 'd':	goto yy85;
2225 		case 'F':
2226 		case 'f':	goto yy86;
2227 		case 'I':
2228 		case 'i':	goto yy87;
2229 		case 'O':
2230 		case 'o':	goto yy88;
2231 		case 'R':
2232 		case 'r':	goto yy89;
2233 		case 'S':
2234 		case 's':	goto yy90;
2235 		case 'U':
2236 		case 'u':	goto yy91;
2237 		default:	goto yy82;
2238 		}
2239 yy82:
2240 		YYDEBUG(82, *YYCURSOR);
2241 		YYCURSOR = YYMARKER;
2242 		if (yyaccept <= 3) {
2243 			if (yyaccept <= 1) {
2244 				if (yyaccept == 0) {
2245 					goto yy9;
2246 				} else {
2247 					goto yy27;
2248 				}
2249 			} else {
2250 				if (yyaccept == 2) {
2251 					goto yy36;
2252 				} else {
2253 					goto yy109;
2254 				}
2255 			}
2256 		} else {
2257 			if (yyaccept <= 5) {
2258 				if (yyaccept == 4) {
2259 					goto yy113;
2260 				} else {
2261 					goto yy122;
2262 				}
2263 			} else {
2264 				goto yy457;
2265 			}
2266 		}
2267 yy83:
2268 		YYDEBUG(83, *YYCURSOR);
2269 		yych = *++YYCURSOR;
2270 		if (yych == 'R') goto yy195;
2271 		if (yych == 'r') goto yy195;
2272 		goto yy82;
2273 yy84:
2274 		YYDEBUG(84, *YYCURSOR);
2275 		yych = *++YYCURSOR;
2276 		if (yych <= 'O') {
2277 			if (yych == 'I') goto yy196;
2278 			if (yych <= 'N') goto yy82;
2279 			goto yy197;
2280 		} else {
2281 			if (yych <= 'i') {
2282 				if (yych <= 'h') goto yy82;
2283 				goto yy196;
2284 			} else {
2285 				if (yych == 'o') goto yy197;
2286 				goto yy82;
2287 			}
2288 		}
2289 yy85:
2290 		YYDEBUG(85, *YYCURSOR);
2291 		yych = *++YYCURSOR;
2292 		if (yych == 'O') goto yy198;
2293 		if (yych == 'o') goto yy198;
2294 		goto yy82;
2295 yy86:
2296 		YYDEBUG(86, *YYCURSOR);
2297 		yych = *++YYCURSOR;
2298 		if (yych == 'L') goto yy199;
2299 		if (yych == 'l') goto yy199;
2300 		goto yy82;
2301 yy87:
2302 		YYDEBUG(87, *YYCURSOR);
2303 		yych = *++YYCURSOR;
2304 		if (yych == 'N') goto yy200;
2305 		if (yych == 'n') goto yy200;
2306 		goto yy82;
2307 yy88:
2308 		YYDEBUG(88, *YYCURSOR);
2309 		yych = *++YYCURSOR;
2310 		if (yych == 'B') goto yy201;
2311 		if (yych == 'b') goto yy201;
2312 		goto yy82;
2313 yy89:
2314 		YYDEBUG(89, *YYCURSOR);
2315 		yych = *++YYCURSOR;
2316 		if (yych == 'E') goto yy202;
2317 		if (yych == 'e') goto yy202;
2318 		goto yy82;
2319 yy90:
2320 		YYDEBUG(90, *YYCURSOR);
2321 		yych = *++YYCURSOR;
2322 		if (yych == 'T') goto yy203;
2323 		if (yych == 't') goto yy203;
2324 		goto yy82;
2325 yy91:
2326 		YYDEBUG(91, *YYCURSOR);
2327 		yych = *++YYCURSOR;
2328 		if (yych == 'N') goto yy204;
2329 		if (yych == 'n') goto yy204;
2330 		goto yy82;
2331 yy92:
2332 		YYDEBUG(92, *YYCURSOR);
2333 		yych = *++YYCURSOR;
2334 		if (yych == '=') goto yy205;
2335 		YYDEBUG(93, *YYCURSOR);
2336 		yyleng = YYCURSOR - SCNG(yy_text);
2337 #line 1509 "Zend/zend_language_scanner.l"
2338 		{
2339 	RETURN_TOKEN(T_POW);
2340 }
2341 #line 2342 "Zend/zend_language_scanner.c"
2342 yy94:
2343 		YYDEBUG(94, *YYCURSOR);
2344 		++YYCURSOR;
2345 		YYDEBUG(95, *YYCURSOR);
2346 		yyleng = YYCURSOR - SCNG(yy_text);
2347 #line 1505 "Zend/zend_language_scanner.l"
2348 		{
2349 	RETURN_TOKEN(T_MUL_EQUAL);
2350 }
2351 #line 2352 "Zend/zend_language_scanner.c"
2352 yy96:
2353 		YYDEBUG(96, *YYCURSOR);
2354 		++YYCURSOR;
2355 		YYDEBUG(97, *YYCURSOR);
2356 		yyleng = YYCURSOR - SCNG(yy_text);
2357 #line 1461 "Zend/zend_language_scanner.l"
2358 		{
2359 	RETURN_TOKEN(T_INC);
2360 }
2361 #line 2362 "Zend/zend_language_scanner.c"
2362 yy98:
2363 		YYDEBUG(98, *YYCURSOR);
2364 		++YYCURSOR;
2365 		YYDEBUG(99, *YYCURSOR);
2366 		yyleng = YYCURSOR - SCNG(yy_text);
2367 #line 1497 "Zend/zend_language_scanner.l"
2368 		{
2369 	RETURN_TOKEN(T_PLUS_EQUAL);
2370 }
2371 #line 2372 "Zend/zend_language_scanner.c"
2372 yy100:
2373 		YYDEBUG(100, *YYCURSOR);
2374 		++YYCURSOR;
2375 		YYDEBUG(101, *YYCURSOR);
2376 		yyleng = YYCURSOR - SCNG(yy_text);
2377 #line 1465 "Zend/zend_language_scanner.l"
2378 		{
2379 	RETURN_TOKEN(T_DEC);
2380 }
2381 #line 2382 "Zend/zend_language_scanner.c"
2382 yy102:
2383 		YYDEBUG(102, *YYCURSOR);
2384 		++YYCURSOR;
2385 		YYDEBUG(103, *YYCURSOR);
2386 		yyleng = YYCURSOR - SCNG(yy_text);
2387 #line 1501 "Zend/zend_language_scanner.l"
2388 		{
2389 	RETURN_TOKEN(T_MINUS_EQUAL);
2390 }
2391 #line 2392 "Zend/zend_language_scanner.c"
2392 yy104:
2393 		YYDEBUG(104, *YYCURSOR);
2394 		++YYCURSOR;
2395 		YYDEBUG(105, *YYCURSOR);
2396 		yyleng = YYCURSOR - SCNG(yy_text);
2397 #line 1287 "Zend/zend_language_scanner.l"
2398 		{
2399 	yy_push_state(ST_LOOKING_FOR_PROPERTY);
2400 	RETURN_TOKEN(T_OBJECT_OPERATOR);
2401 }
2402 #line 2403 "Zend/zend_language_scanner.c"
2403 yy106:
2404 		YYDEBUG(106, *YYCURSOR);
2405 		yych = *++YYCURSOR;
2406 		if (yych == '.') goto yy207;
2407 		goto yy82;
2408 yy107:
2409 		YYDEBUG(107, *YYCURSOR);
2410 		yyaccept = 3;
2411 		YYMARKER = ++YYCURSOR;
2412 		YYFILL(3);
2413 		yych = *YYCURSOR;
2414 		YYDEBUG(108, *YYCURSOR);
2415 		if (yych <= 'D') {
2416 			if (yych <= '/') goto yy109;
2417 			if (yych <= '9') goto yy107;
2418 		} else {
2419 			if (yych <= 'E') goto yy117;
2420 			if (yych == 'e') goto yy117;
2421 		}
2422 yy109:
2423 		YYDEBUG(109, *YYCURSOR);
2424 		yyleng = YYCURSOR - SCNG(yy_text);
2425 #line 1740 "Zend/zend_language_scanner.l"
2426 		{
2427 	const char *end;
2428 
2429 	ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
2430 	/* errno isn't checked since we allow HUGE_VAL/INF overflow */
2431 	ZEND_ASSERT(end == yytext + yyleng);
2432 	RETURN_TOKEN(T_DNUMBER);
2433 }
2434 #line 2435 "Zend/zend_language_scanner.c"
2435 yy110:
2436 		YYDEBUG(110, *YYCURSOR);
2437 		++YYCURSOR;
2438 		YYDEBUG(111, *YYCURSOR);
2439 		yyleng = YYCURSOR - SCNG(yy_text);
2440 #line 1521 "Zend/zend_language_scanner.l"
2441 		{
2442 	RETURN_TOKEN(T_CONCAT_EQUAL);
2443 }
2444 #line 2445 "Zend/zend_language_scanner.c"
2445 yy112:
2446 		YYDEBUG(112, *YYCURSOR);
2447 		yyaccept = 4;
2448 		yych = *(YYMARKER = ++YYCURSOR);
2449 		if (yych == '*') goto yy209;
2450 yy113:
2451 		YYDEBUG(113, *YYCURSOR);
2452 		yyleng = YYCURSOR - SCNG(yy_text);
2453 #line 1927 "Zend/zend_language_scanner.l"
2454 		{
2455 	int doc_com;
2456 
2457 	if (yyleng > 2) {
2458 		doc_com = 1;
2459 		RESET_DOC_COMMENT();
2460 	} else {
2461 		doc_com = 0;
2462 	}
2463 
2464 	while (YYCURSOR < YYLIMIT) {
2465 		if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
2466 			break;
2467 		}
2468 	}
2469 
2470 	if (YYCURSOR < YYLIMIT) {
2471 		YYCURSOR++;
2472 	} else {
2473 		zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno));
2474 	}
2475 
2476 	yyleng = YYCURSOR - SCNG(yy_text);
2477 	HANDLE_NEWLINES(yytext, yyleng);
2478 
2479 	if (doc_com) {
2480 		CG(doc_comment) = zend_string_init(yytext, yyleng, 0);
2481 		RETURN_TOKEN(T_DOC_COMMENT);
2482 	}
2483 
2484 	RETURN_TOKEN(T_COMMENT);
2485 }
2486 #line 2487 "Zend/zend_language_scanner.c"
2487 yy114:
2488 		YYDEBUG(114, *YYCURSOR);
2489 		++YYCURSOR;
2490 		YYDEBUG(115, *YYCURSOR);
2491 		yyleng = YYCURSOR - SCNG(yy_text);
2492 #line 1517 "Zend/zend_language_scanner.l"
2493 		{
2494 	RETURN_TOKEN(T_DIV_EQUAL);
2495 }
2496 #line 2497 "Zend/zend_language_scanner.c"
2497 yy116:
2498 		YYDEBUG(116, *YYCURSOR);
2499 		yych = *++YYCURSOR;
2500 		if (yybm[0+yych] & 64) {
2501 			goto yy210;
2502 		}
2503 		goto yy82;
2504 yy117:
2505 		YYDEBUG(117, *YYCURSOR);
2506 		yych = *++YYCURSOR;
2507 		if (yych <= ',') {
2508 			if (yych == '+') goto yy213;
2509 			goto yy82;
2510 		} else {
2511 			if (yych <= '-') goto yy213;
2512 			if (yych <= '/') goto yy82;
2513 			if (yych <= '9') goto yy214;
2514 			goto yy82;
2515 		}
2516 yy118:
2517 		YYDEBUG(118, *YYCURSOR);
2518 		yych = *++YYCURSOR;
2519 		if (yybm[0+yych] & 128) {
2520 			goto yy216;
2521 		}
2522 		goto yy82;
2523 yy119:
2524 		YYDEBUG(119, *YYCURSOR);
2525 		++YYCURSOR;
2526 		YYDEBUG(120, *YYCURSOR);
2527 		yyleng = YYCURSOR - SCNG(yy_text);
2528 #line 1313 "Zend/zend_language_scanner.l"
2529 		{
2530 	RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM);
2531 }
2532 #line 2533 "Zend/zend_language_scanner.c"
2533 yy121:
2534 		YYDEBUG(121, *YYCURSOR);
2535 		yyaccept = 5;
2536 		yych = *(YYMARKER = ++YYCURSOR);
2537 		if (yych <= ';') goto yy122;
2538 		if (yych <= '<') goto yy219;
2539 		if (yych <= '=') goto yy221;
2540 yy122:
2541 		YYDEBUG(122, *YYCURSOR);
2542 		yyleng = YYCURSOR - SCNG(yy_text);
2543 #line 1569 "Zend/zend_language_scanner.l"
2544 		{
2545 	RETURN_TOKEN(T_SL);
2546 }
2547 #line 2548 "Zend/zend_language_scanner.c"
2548 yy123:
2549 		YYDEBUG(123, *YYCURSOR);
2550 		yych = *++YYCURSOR;
2551 		if (yych == '>') goto yy223;
2552 		YYDEBUG(124, *YYCURSOR);
2553 		yyleng = YYCURSOR - SCNG(yy_text);
2554 #line 1489 "Zend/zend_language_scanner.l"
2555 		{
2556 	RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL);
2557 }
2558 #line 2559 "Zend/zend_language_scanner.c"
2559 yy125:
2560 		YYDEBUG(125, *YYCURSOR);
2561 		++YYCURSOR;
2562 		goto yy70;
2563 yy126:
2564 		YYDEBUG(126, *YYCURSOR);
2565 		yych = *++YYCURSOR;
2566 		if (yych == '=') goto yy225;
2567 		YYDEBUG(127, *YYCURSOR);
2568 		yyleng = YYCURSOR - SCNG(yy_text);
2569 #line 1477 "Zend/zend_language_scanner.l"
2570 		{
2571 	RETURN_TOKEN(T_IS_EQUAL);
2572 }
2573 #line 2574 "Zend/zend_language_scanner.c"
2574 yy128:
2575 		YYDEBUG(128, *YYCURSOR);
2576 		++YYCURSOR;
2577 		YYDEBUG(129, *YYCURSOR);
2578 		yyleng = YYCURSOR - SCNG(yy_text);
2579 #line 1445 "Zend/zend_language_scanner.l"
2580 		{
2581 	RETURN_TOKEN(T_DOUBLE_ARROW);
2582 }
2583 #line 2584 "Zend/zend_language_scanner.c"
2584 yy130:
2585 		YYDEBUG(130, *YYCURSOR);
2586 		++YYCURSOR;
2587 		YYDEBUG(131, *YYCURSOR);
2588 		yyleng = YYCURSOR - SCNG(yy_text);
2589 #line 1493 "Zend/zend_language_scanner.l"
2590 		{
2591 	RETURN_TOKEN(T_IS_GREATER_OR_EQUAL);
2592 }
2593 #line 2594 "Zend/zend_language_scanner.c"
2594 yy132:
2595 		YYDEBUG(132, *YYCURSOR);
2596 		yych = *++YYCURSOR;
2597 		if (yych == '=') goto yy227;
2598 		YYDEBUG(133, *YYCURSOR);
2599 		yyleng = YYCURSOR - SCNG(yy_text);
2600 #line 1573 "Zend/zend_language_scanner.l"
2601 		{
2602 	RETURN_TOKEN(T_SR);
2603 }
2604 #line 2605 "Zend/zend_language_scanner.c"
2605 yy134:
2606 		YYDEBUG(134, *YYCURSOR);
2607 		yych = *++YYCURSOR;
2608 		if (yych == '\n') goto yy229;
2609 		if (yych == '\r') goto yy230;
2610 yy135:
2611 		YYDEBUG(135, *YYCURSOR);
2612 		yyleng = YYCURSOR - SCNG(yy_text);
2613 #line 1960 "Zend/zend_language_scanner.l"
2614 		{
2615 	BEGIN(INITIAL);
2616 	if (yytext[yyleng-1] != '>') {
2617 		CG(increment_lineno) = 1;
2618 	}
2619 	RETURN_TOKEN(T_CLOSE_TAG);  /* implicit ';' at php-end tag */
2620 }
2621 #line 2622 "Zend/zend_language_scanner.c"
2622 yy136:
2623 		YYDEBUG(136, *YYCURSOR);
2624 		++YYCURSOR;
2625 		YYDEBUG(137, *YYCURSOR);
2626 		yyleng = YYCURSOR - SCNG(yy_text);
2627 #line 1325 "Zend/zend_language_scanner.l"
2628 		{
2629 	RETURN_TOKEN(T_COALESCE);
2630 }
2631 #line 2632 "Zend/zend_language_scanner.c"
2632 yy138:
2633 		YYDEBUG(138, *YYCURSOR);
2634 		yych = *++YYCURSOR;
2635 		if (yych == 'S') goto yy231;
2636 		if (yych == 's') goto yy231;
2637 		goto yy44;
2638 yy139:
2639 		YYDEBUG(139, *YYCURSOR);
2640 		yych = *++YYCURSOR;
2641 		if (yych == 'D') goto yy232;
2642 		if (yych == 'd') goto yy232;
2643 		goto yy44;
2644 yy140:
2645 		YYDEBUG(140, *YYCURSOR);
2646 		yych = *++YYCURSOR;
2647 		if (yych == 'R') goto yy234;
2648 		if (yych == 'r') goto yy234;
2649 		goto yy44;
2650 yy141:
2651 		YYDEBUG(141, *YYCURSOR);
2652 		yych = *++YYCURSOR;
2653 		if (yybm[0+yych] & 16) {
2654 			goto yy43;
2655 		}
2656 		YYDEBUG(142, *YYCURSOR);
2657 		yyleng = YYCURSOR - SCNG(yy_text);
2658 #line 1227 "Zend/zend_language_scanner.l"
2659 		{
2660 	RETURN_TOKEN(T_AS);
2661 }
2662 #line 2663 "Zend/zend_language_scanner.c"
2663 yy143:
2664 		YYDEBUG(143, *YYCURSOR);
2665 		yych = *++YYCURSOR;
2666 		if (yych == '<') goto yy235;
2667 		goto yy82;
2668 yy144:
2669 		YYDEBUG(144, *YYCURSOR);
2670 		yych = *++YYCURSOR;
2671 		if (yych == 'E') goto yy236;
2672 		if (yych == 'e') goto yy236;
2673 		goto yy44;
2674 yy145:
2675 		YYDEBUG(145, *YYCURSOR);
2676 		yych = *++YYCURSOR;
2677 		if (yych <= 'T') {
2678 			if (yych <= 'L') {
2679 				if (yych <= 'K') goto yy44;
2680 				goto yy237;
2681 			} else {
2682 				if (yych <= 'R') goto yy44;
2683 				if (yych <= 'S') goto yy238;
2684 				goto yy239;
2685 			}
2686 		} else {
2687 			if (yych <= 'r') {
2688 				if (yych == 'l') goto yy237;
2689 				goto yy44;
2690 			} else {
2691 				if (yych <= 's') goto yy238;
2692 				if (yych <= 't') goto yy239;
2693 				goto yy44;
2694 			}
2695 		}
2696 yy146:
2697 		YYDEBUG(146, *YYCURSOR);
2698 		yych = *++YYCURSOR;
2699 		if (yych <= 'O') {
2700 			if (yych == 'A') goto yy240;
2701 			if (yych <= 'N') goto yy44;
2702 			goto yy241;
2703 		} else {
2704 			if (yych <= 'a') {
2705 				if (yych <= '`') goto yy44;
2706 				goto yy240;
2707 			} else {
2708 				if (yych == 'o') goto yy241;
2709 				goto yy44;
2710 			}
2711 		}
2712 yy147:
2713 		YYDEBUG(147, *YYCURSOR);
2714 		yych = *++YYCURSOR;
2715 		if (yych == 'N') goto yy242;
2716 		if (yych == 'n') goto yy242;
2717 		goto yy44;
2718 yy148:
2719 		YYDEBUG(148, *YYCURSOR);
2720 		yych = *++YYCURSOR;
2721 		if (yych <= 'F') {
2722 			if (yych == 'C') goto yy243;
2723 			if (yych <= 'E') goto yy44;
2724 			goto yy244;
2725 		} else {
2726 			if (yych <= 'c') {
2727 				if (yych <= 'b') goto yy44;
2728 				goto yy243;
2729 			} else {
2730 				if (yych == 'f') goto yy244;
2731 				goto yy44;
2732 			}
2733 		}
2734 yy149:
2735 		YYDEBUG(149, *YYCURSOR);
2736 		yych = *++YYCURSOR;
2737 		if (yych == 'E') goto yy245;
2738 		if (yych == 'e') goto yy245;
2739 		goto yy44;
2740 yy150:
2741 		YYDEBUG(150, *YYCURSOR);
2742 		yych = *++YYCURSOR;
2743 		if (yybm[0+yych] & 16) {
2744 			goto yy43;
2745 		}
2746 		YYDEBUG(151, *YYCURSOR);
2747 		yyleng = YYCURSOR - SCNG(yy_text);
2748 #line 1195 "Zend/zend_language_scanner.l"
2749 		{
2750 	RETURN_TOKEN(T_DO);
2751 }
2752 #line 2753 "Zend/zend_language_scanner.c"
2753 yy152:
2754 		YYDEBUG(152, *YYCURSOR);
2755 		yych = *++YYCURSOR;
2756 		if (yych == 'H') goto yy247;
2757 		if (yych == 'h') goto yy247;
2758 		goto yy44;
2759 yy153:
2760 		YYDEBUG(153, *YYCURSOR);
2761 		yych = *++YYCURSOR;
2762 		if (yych == 'S') goto yy248;
2763 		if (yych == 's') goto yy248;
2764 		goto yy44;
2765 yy154:
2766 		YYDEBUG(154, *YYCURSOR);
2767 		yych = *++YYCURSOR;
2768 		if (yych == 'P') goto yy249;
2769 		if (yych == 'p') goto yy249;
2770 		goto yy44;
2771 yy155:
2772 		YYDEBUG(155, *YYCURSOR);
2773 		yych = *++YYCURSOR;
2774 		if (yych == 'D') goto yy250;
2775 		if (yych == 'd') goto yy250;
2776 		goto yy44;
2777 yy156:
2778 		YYDEBUG(156, *YYCURSOR);
2779 		yych = *++YYCURSOR;
2780 		if (yych == 'A') goto yy251;
2781 		if (yych == 'a') goto yy251;
2782 		goto yy44;
2783 yy157:
2784 		YYDEBUG(157, *YYCURSOR);
2785 		yych = *++YYCURSOR;
2786 		if (yych <= 'T') {
2787 			if (yych == 'I') goto yy252;
2788 			if (yych <= 'S') goto yy44;
2789 			goto yy253;
2790 		} else {
2791 			if (yych <= 'i') {
2792 				if (yych <= 'h') goto yy44;
2793 				goto yy252;
2794 			} else {
2795 				if (yych == 't') goto yy253;
2796 				goto yy44;
2797 			}
2798 		}
2799 yy158:
2800 		YYDEBUG(158, *YYCURSOR);
2801 		yych = *++YYCURSOR;
2802 		if (yych == 'N') goto yy254;
2803 		if (yych == 'n') goto yy254;
2804 		goto yy44;
2805 yy159:
2806 		YYDEBUG(159, *YYCURSOR);
2807 		yych = *++YYCURSOR;
2808 		if (yych == 'R') goto yy255;
2809 		if (yych == 'r') goto yy255;
2810 		goto yy44;
2811 yy160:
2812 		YYDEBUG(160, *YYCURSOR);
2813 		yych = *++YYCURSOR;
2814 		if (yych == 'N') goto yy257;
2815 		if (yych == 'n') goto yy257;
2816 		goto yy44;
2817 yy161:
2818 		YYDEBUG(161, *YYCURSOR);
2819 		yych = *++YYCURSOR;
2820 		if (yych == 'O') goto yy258;
2821 		if (yych == 'o') goto yy258;
2822 		goto yy44;
2823 yy162:
2824 		YYDEBUG(162, *YYCURSOR);
2825 		yych = *++YYCURSOR;
2826 		if (yych == 'T') goto yy259;
2827 		if (yych == 't') goto yy259;
2828 		goto yy44;
2829 yy163:
2830 		YYDEBUG(163, *YYCURSOR);
2831 		yych = *++YYCURSOR;
2832 		if (yybm[0+yych] & 16) {
2833 			goto yy43;
2834 		}
2835 		YYDEBUG(164, *YYCURSOR);
2836 		yyleng = YYCURSOR - SCNG(yy_text);
2837 #line 1171 "Zend/zend_language_scanner.l"
2838 		{
2839 	RETURN_TOKEN(T_IF);
2840 }
2841 #line 2842 "Zend/zend_language_scanner.c"
2842 yy165:
2843 		YYDEBUG(165, *YYCURSOR);
2844 		yych = *++YYCURSOR;
2845 		if (yych == 'P') goto yy260;
2846 		if (yych == 'p') goto yy260;
2847 		goto yy44;
2848 yy166:
2849 		YYDEBUG(166, *YYCURSOR);
2850 		yych = *++YYCURSOR;
2851 		if (yych <= 'T') {
2852 			if (yych <= 'C') {
2853 				if (yych <= 'B') goto yy44;
2854 				goto yy261;
2855 			} else {
2856 				if (yych <= 'R') goto yy44;
2857 				if (yych <= 'S') goto yy262;
2858 				goto yy263;
2859 			}
2860 		} else {
2861 			if (yych <= 'r') {
2862 				if (yych == 'c') goto yy261;
2863 				goto yy44;
2864 			} else {
2865 				if (yych <= 's') goto yy262;
2866 				if (yych <= 't') goto yy263;
2867 				goto yy44;
2868 			}
2869 		}
2870 yy167:
2871 		YYDEBUG(167, *YYCURSOR);
2872 		yych = *++YYCURSOR;
2873 		if (yych == 'S') goto yy264;
2874 		if (yych == 's') goto yy264;
2875 		goto yy44;
2876 yy168:
2877 		YYDEBUG(168, *YYCURSOR);
2878 		yych = *++YYCURSOR;
2879 		if (yych == 'S') goto yy265;
2880 		if (yych == 's') goto yy265;
2881 		goto yy44;
2882 yy169:
2883 		YYDEBUG(169, *YYCURSOR);
2884 		yych = *++YYCURSOR;
2885 		if (yych == 'M') goto yy266;
2886 		if (yych == 'm') goto yy266;
2887 		goto yy44;
2888 yy170:
2889 		YYDEBUG(170, *YYCURSOR);
2890 		yych = *++YYCURSOR;
2891 		if (yych == 'W') goto yy267;
2892 		if (yych == 'w') goto yy267;
2893 		goto yy44;
2894 yy171:
2895 		YYDEBUG(171, *YYCURSOR);
2896 		yych = *++YYCURSOR;
2897 		if (yybm[0+yych] & 16) {
2898 			goto yy43;
2899 		}
2900 		YYDEBUG(172, *YYCURSOR);
2901 		yyleng = YYCURSOR - SCNG(yy_text);
2902 #line 1557 "Zend/zend_language_scanner.l"
2903 		{
2904 	RETURN_TOKEN(T_LOGICAL_OR);
2905 }
2906 #line 2907 "Zend/zend_language_scanner.c"
2907 yy173:
2908 		YYDEBUG(173, *YYCURSOR);
2909 		yych = *++YYCURSOR;
2910 		if (yych <= 'O') {
2911 			if (yych == 'I') goto yy269;
2912 			if (yych <= 'N') goto yy44;
2913 			goto yy270;
2914 		} else {
2915 			if (yych <= 'i') {
2916 				if (yych <= 'h') goto yy44;
2917 				goto yy269;
2918 			} else {
2919 				if (yych == 'o') goto yy270;
2920 				goto yy44;
2921 			}
2922 		}
2923 yy174:
2924 		YYDEBUG(174, *YYCURSOR);
2925 		yych = *++YYCURSOR;
2926 		if (yych == 'B') goto yy271;
2927 		if (yych == 'b') goto yy271;
2928 		goto yy44;
2929 yy175:
2930 		YYDEBUG(175, *YYCURSOR);
2931 		yych = *++YYCURSOR;
2932 		if (yych <= 'T') {
2933 			if (yych == 'Q') goto yy272;
2934 			if (yych <= 'S') goto yy44;
2935 			goto yy273;
2936 		} else {
2937 			if (yych <= 'q') {
2938 				if (yych <= 'p') goto yy44;
2939 				goto yy272;
2940 			} else {
2941 				if (yych == 't') goto yy273;
2942 				goto yy44;
2943 			}
2944 		}
2945 yy176:
2946 		YYDEBUG(176, *YYCURSOR);
2947 		yych = *++YYCURSOR;
2948 		if (yych == 'A') goto yy274;
2949 		if (yych == 'a') goto yy274;
2950 		goto yy44;
2951 yy177:
2952 		YYDEBUG(177, *YYCURSOR);
2953 		yych = *++YYCURSOR;
2954 		if (yych == 'I') goto yy275;
2955 		if (yych == 'i') goto yy275;
2956 		goto yy44;
2957 yy178:
2958 		YYDEBUG(178, *YYCURSOR);
2959 		yych = *++YYCURSOR;
2960 		if (yych == 'R') goto yy276;
2961 		if (yych == 'r') goto yy276;
2962 		goto yy44;
2963 yy179:
2964 		YYDEBUG(179, *YYCURSOR);
2965 		yych = *++YYCURSOR;
2966 		if (yych <= 'Y') {
2967 			if (yych == 'A') goto yy277;
2968 			if (yych <= 'X') goto yy44;
2969 			goto yy278;
2970 		} else {
2971 			if (yych <= 'a') {
2972 				if (yych <= '`') goto yy44;
2973 				goto yy277;
2974 			} else {
2975 				if (yych == 'y') goto yy278;
2976 				goto yy44;
2977 			}
2978 		}
2979 yy180:
2980 		YYDEBUG(180, *YYCURSOR);
2981 		yych = *++YYCURSOR;
2982 		if (yych == 'S') goto yy280;
2983 		if (yych == 's') goto yy280;
2984 		goto yy44;
2985 yy181:
2986 		YYDEBUG(181, *YYCURSOR);
2987 		yych = *++YYCURSOR;
2988 		if (yych == 'E') goto yy281;
2989 		if (yych == 'e') goto yy281;
2990 		goto yy44;
2991 yy182:
2992 		YYDEBUG(182, *YYCURSOR);
2993 		yych = *++YYCURSOR;
2994 		if (yych == 'R') goto yy283;
2995 		if (yych == 'r') goto yy283;
2996 		goto yy44;
2997 yy183:
2998 		YYDEBUG(183, *YYCURSOR);
2999 		yych = *++YYCURSOR;
3000 		if (yych == 'I') goto yy285;
3001 		if (yych == 'i') goto yy285;
3002 		goto yy44;
3003 yy184:
3004 		YYDEBUG(184, *YYCURSOR);
3005 		yych = *++YYCURSOR;
3006 		if (yych == 'R') goto yy286;
3007 		if (yych == 'r') goto yy286;
3008 		goto yy44;
3009 yy185:
3010 		YYDEBUG(185, *YYCURSOR);
3011 		yych = *++YYCURSOR;
3012 		if (yych == 'E') goto yy288;
3013 		if (yych == 'e') goto yy288;
3014 		goto yy44;
3015 yy186:
3016 		YYDEBUG(186, *YYCURSOR);
3017 		++YYCURSOR;
3018 		YYDEBUG(187, *YYCURSOR);
3019 		yyleng = YYCURSOR - SCNG(yy_text);
3020 #line 1545 "Zend/zend_language_scanner.l"
3021 		{
3022 	RETURN_TOKEN(T_XOR_EQUAL);
3023 }
3024 #line 3025 "Zend/zend_language_scanner.c"
3025 yy188:
3026 		YYDEBUG(188, *YYCURSOR);
3027 		yych = *++YYCURSOR;
3028 		switch (yych) {
3029 		case 'C':
3030 		case 'c':	goto yy289;
3031 		case 'D':
3032 		case 'd':	goto yy290;
3033 		case 'F':
3034 		case 'f':	goto yy291;
3035 		case 'H':
3036 		case 'h':	goto yy292;
3037 		case 'L':
3038 		case 'l':	goto yy293;
3039 		case 'M':
3040 		case 'm':	goto yy294;
3041 		case 'N':
3042 		case 'n':	goto yy295;
3043 		case 'T':
3044 		case 't':	goto yy296;
3045 		default:	goto yy44;
3046 		}
3047 yy189:
3048 		YYDEBUG(189, *YYCURSOR);
3049 		++YYCURSOR;
3050 		YYDEBUG(190, *YYCURSOR);
3051 		yyleng = YYCURSOR - SCNG(yy_text);
3052 #line 1541 "Zend/zend_language_scanner.l"
3053 		{
3054 	RETURN_TOKEN(T_OR_EQUAL);
3055 }
3056 #line 3057 "Zend/zend_language_scanner.c"
3057 yy191:
3058 		YYDEBUG(191, *YYCURSOR);
3059 		++YYCURSOR;
3060 		YYDEBUG(192, *YYCURSOR);
3061 		yyleng = YYCURSOR - SCNG(yy_text);
3062 #line 1549 "Zend/zend_language_scanner.l"
3063 		{
3064 	RETURN_TOKEN(T_BOOLEAN_OR);
3065 }
3066 #line 3067 "Zend/zend_language_scanner.c"
3067 yy193:
3068 		YYDEBUG(193, *YYCURSOR);
3069 		++YYCURSOR;
3070 		YYDEBUG(194, *YYCURSOR);
3071 		yyleng = YYCURSOR - SCNG(yy_text);
3072 #line 1473 "Zend/zend_language_scanner.l"
3073 		{
3074 	RETURN_TOKEN(T_IS_NOT_IDENTICAL);
3075 }
3076 #line 3077 "Zend/zend_language_scanner.c"
3077 yy195:
3078 		YYDEBUG(195, *YYCURSOR);
3079 		yych = *++YYCURSOR;
3080 		if (yych == 'R') goto yy297;
3081 		if (yych == 'r') goto yy297;
3082 		goto yy82;
3083 yy196:
3084 		YYDEBUG(196, *YYCURSOR);
3085 		yych = *++YYCURSOR;
3086 		if (yych == 'N') goto yy298;
3087 		if (yych == 'n') goto yy298;
3088 		goto yy82;
3089 yy197:
3090 		YYDEBUG(197, *YYCURSOR);
3091 		yych = *++YYCURSOR;
3092 		if (yych == 'O') goto yy299;
3093 		if (yych == 'o') goto yy299;
3094 		goto yy82;
3095 yy198:
3096 		YYDEBUG(198, *YYCURSOR);
3097 		yych = *++YYCURSOR;
3098 		if (yych == 'U') goto yy300;
3099 		if (yych == 'u') goto yy300;
3100 		goto yy82;
3101 yy199:
3102 		YYDEBUG(199, *YYCURSOR);
3103 		yych = *++YYCURSOR;
3104 		if (yych == 'O') goto yy301;
3105 		if (yych == 'o') goto yy301;
3106 		goto yy82;
3107 yy200:
3108 		YYDEBUG(200, *YYCURSOR);
3109 		yych = *++YYCURSOR;
3110 		if (yych == 'T') goto yy302;
3111 		if (yych == 't') goto yy302;
3112 		goto yy82;
3113 yy201:
3114 		YYDEBUG(201, *YYCURSOR);
3115 		yych = *++YYCURSOR;
3116 		if (yych == 'J') goto yy303;
3117 		if (yych == 'j') goto yy303;
3118 		goto yy82;
3119 yy202:
3120 		YYDEBUG(202, *YYCURSOR);
3121 		yych = *++YYCURSOR;
3122 		if (yych == 'A') goto yy304;
3123 		if (yych == 'a') goto yy304;
3124 		goto yy82;
3125 yy203:
3126 		YYDEBUG(203, *YYCURSOR);
3127 		yych = *++YYCURSOR;
3128 		if (yych == 'R') goto yy305;
3129 		if (yych == 'r') goto yy305;
3130 		goto yy82;
3131 yy204:
3132 		YYDEBUG(204, *YYCURSOR);
3133 		yych = *++YYCURSOR;
3134 		if (yych == 'S') goto yy306;
3135 		if (yych == 's') goto yy306;
3136 		goto yy82;
3137 yy205:
3138 		YYDEBUG(205, *YYCURSOR);
3139 		++YYCURSOR;
3140 		YYDEBUG(206, *YYCURSOR);
3141 		yyleng = YYCURSOR - SCNG(yy_text);
3142 #line 1513 "Zend/zend_language_scanner.l"
3143 		{
3144 	RETURN_TOKEN(T_POW_EQUAL);
3145 }
3146 #line 3147 "Zend/zend_language_scanner.c"
3147 yy207:
3148 		YYDEBUG(207, *YYCURSOR);
3149 		++YYCURSOR;
3150 		YYDEBUG(208, *YYCURSOR);
3151 		yyleng = YYCURSOR - SCNG(yy_text);
3152 #line 1321 "Zend/zend_language_scanner.l"
3153 		{
3154 	RETURN_TOKEN(T_ELLIPSIS);
3155 }
3156 #line 3157 "Zend/zend_language_scanner.c"
3157 yy209:
3158 		YYDEBUG(209, *YYCURSOR);
3159 		yych = *++YYCURSOR;
3160 		if (yych <= '\f') {
3161 			if (yych <= 0x08) goto yy82;
3162 			if (yych <= '\n') goto yy307;
3163 			goto yy82;
3164 		} else {
3165 			if (yych <= '\r') goto yy307;
3166 			if (yych == ' ') goto yy307;
3167 			goto yy82;
3168 		}
3169 yy210:
3170 		YYDEBUG(210, *YYCURSOR);
3171 		++YYCURSOR;
3172 		YYFILL(1);
3173 		yych = *YYCURSOR;
3174 		YYDEBUG(211, *YYCURSOR);
3175 		if (yybm[0+yych] & 64) {
3176 			goto yy210;
3177 		}
3178 		YYDEBUG(212, *YYCURSOR);
3179 		yyleng = YYCURSOR - SCNG(yy_text);
3180 #line 1619 "Zend/zend_language_scanner.l"
3181 		{
3182 	char *bin = yytext + 2; /* Skip "0b" */
3183 	int len = yyleng - 2;
3184 	char *end;
3185 
3186 	/* Skip any leading 0s */
3187 	while (*bin == '0') {
3188 		++bin;
3189 		--len;
3190 	}
3191 
3192 	if (len < SIZEOF_ZEND_LONG * 8) {
3193 		if (len == 0) {
3194 			ZVAL_LONG(zendlval, 0);
3195 		} else {
3196 			errno = 0;
3197 			ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
3198 			ZEND_ASSERT(!errno && end == yytext + yyleng);
3199 		}
3200 		RETURN_TOKEN(T_LNUMBER);
3201 	} else {
3202 		ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end));
3203 		/* errno isn't checked since we allow HUGE_VAL/INF overflow */
3204 		ZEND_ASSERT(end == yytext + yyleng);
3205 		RETURN_TOKEN(T_DNUMBER);
3206 	}
3207 }
3208 #line 3209 "Zend/zend_language_scanner.c"
3209 yy213:
3210 		YYDEBUG(213, *YYCURSOR);
3211 		yych = *++YYCURSOR;
3212 		if (yych <= '/') goto yy82;
3213 		if (yych >= ':') goto yy82;
3214 yy214:
3215 		YYDEBUG(214, *YYCURSOR);
3216 		++YYCURSOR;
3217 		YYFILL(1);
3218 		yych = *YYCURSOR;
3219 		YYDEBUG(215, *YYCURSOR);
3220 		if (yych <= '/') goto yy109;
3221 		if (yych <= '9') goto yy214;
3222 		goto yy109;
3223 yy216:
3224 		YYDEBUG(216, *YYCURSOR);
3225 		++YYCURSOR;
3226 		YYFILL(1);
3227 		yych = *YYCURSOR;
3228 		YYDEBUG(217, *YYCURSOR);
3229 		if (yybm[0+yych] & 128) {
3230 			goto yy216;
3231 		}
3232 		YYDEBUG(218, *YYCURSOR);
3233 		yyleng = YYCURSOR - SCNG(yy_text);
3234 #line 1691 "Zend/zend_language_scanner.l"
3235 		{
3236 	char *hex = yytext + 2; /* Skip "0x" */
3237 	int len = yyleng - 2;
3238 	char *end;
3239 
3240 	/* Skip any leading 0s */
3241 	while (*hex == '0') {
3242 		hex++;
3243 		len--;
3244 	}
3245 
3246 	if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) {
3247 		if (len == 0) {
3248 			ZVAL_LONG(zendlval, 0);
3249 		} else {
3250 			errno = 0;
3251 			ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
3252 			ZEND_ASSERT(!errno && end == hex + len);
3253 		}
3254 		RETURN_TOKEN(T_LNUMBER);
3255 	} else {
3256 		ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end));
3257 		/* errno isn't checked since we allow HUGE_VAL/INF overflow */
3258 		ZEND_ASSERT(end == hex + len);
3259 		RETURN_TOKEN(T_DNUMBER);
3260 	}
3261 }
3262 #line 3263 "Zend/zend_language_scanner.c"
3263 yy219:
3264 		YYDEBUG(219, *YYCURSOR);
3265 		++YYCURSOR;
3266 		YYFILL(2);
3267 		yych = *YYCURSOR;
3268 		YYDEBUG(220, *YYCURSOR);
3269 		if (yych <= '\'') {
3270 			if (yych <= ' ') {
3271 				if (yych == '\t') goto yy219;
3272 				if (yych <= 0x1F) goto yy82;
3273 				goto yy219;
3274 			} else {
3275 				if (yych == '"') goto yy309;
3276 				if (yych <= '&') goto yy82;
3277 				goto yy310;
3278 			}
3279 		} else {
3280 			if (yych <= '_') {
3281 				if (yych <= '@') goto yy82;
3282 				if (yych <= 'Z') goto yy311;
3283 				if (yych <= '^') goto yy82;
3284 				goto yy311;
3285 			} else {
3286 				if (yych <= '`') goto yy82;
3287 				if (yych <= 'z') goto yy311;
3288 				if (yych <= 0x7F) goto yy82;
3289 				goto yy311;
3290 			}
3291 		}
3292 yy221:
3293 		YYDEBUG(221, *YYCURSOR);
3294 		++YYCURSOR;
3295 		YYDEBUG(222, *YYCURSOR);
3296 		yyleng = YYCURSOR - SCNG(yy_text);
3297 #line 1529 "Zend/zend_language_scanner.l"
3298 		{
3299 	RETURN_TOKEN(T_SL_EQUAL);
3300 }
3301 #line 3302 "Zend/zend_language_scanner.c"
3302 yy223:
3303 		YYDEBUG(223, *YYCURSOR);
3304 		++YYCURSOR;
3305 		YYDEBUG(224, *YYCURSOR);
3306 		yyleng = YYCURSOR - SCNG(yy_text);
3307 #line 1485 "Zend/zend_language_scanner.l"
3308 		{
3309 	RETURN_TOKEN(T_SPACESHIP);
3310 }
3311 #line 3312 "Zend/zend_language_scanner.c"
3312 yy225:
3313 		YYDEBUG(225, *YYCURSOR);
3314 		++YYCURSOR;
3315 		YYDEBUG(226, *YYCURSOR);
3316 		yyleng = YYCURSOR - SCNG(yy_text);
3317 #line 1469 "Zend/zend_language_scanner.l"
3318 		{
3319 	RETURN_TOKEN(T_IS_IDENTICAL);
3320 }
3321 #line 3322 "Zend/zend_language_scanner.c"
3322 yy227:
3323 		YYDEBUG(227, *YYCURSOR);
3324 		++YYCURSOR;
3325 		YYDEBUG(228, *YYCURSOR);
3326 		yyleng = YYCURSOR - SCNG(yy_text);
3327 #line 1533 "Zend/zend_language_scanner.l"
3328 		{
3329 	RETURN_TOKEN(T_SR_EQUAL);
3330 }
3331 #line 3332 "Zend/zend_language_scanner.c"
3332 yy229:
3333 		YYDEBUG(229, *YYCURSOR);
3334 		++YYCURSOR;
3335 		goto yy135;
3336 yy230:
3337 		YYDEBUG(230, *YYCURSOR);
3338 		yych = *++YYCURSOR;
3339 		if (yych == '\n') goto yy229;
3340 		goto yy135;
3341 yy231:
3342 		YYDEBUG(231, *YYCURSOR);
3343 		yych = *++YYCURSOR;
3344 		if (yych == 'T') goto yy313;
3345 		if (yych == 't') goto yy313;
3346 		goto yy44;
3347 yy232:
3348 		YYDEBUG(232, *YYCURSOR);
3349 		yych = *++YYCURSOR;
3350 		if (yybm[0+yych] & 16) {
3351 			goto yy43;
3352 		}
3353 		YYDEBUG(233, *YYCURSOR);
3354 		yyleng = YYCURSOR - SCNG(yy_text);
3355 #line 1561 "Zend/zend_language_scanner.l"
3356 		{
3357 	RETURN_TOKEN(T_LOGICAL_AND);
3358 }
3359 #line 3360 "Zend/zend_language_scanner.c"
3360 yy234:
3361 		YYDEBUG(234, *YYCURSOR);
3362 		yych = *++YYCURSOR;
3363 		if (yych == 'A') goto yy314;
3364 		if (yych == 'a') goto yy314;
3365 		goto yy44;
3366 yy235:
3367 		YYDEBUG(235, *YYCURSOR);
3368 		yych = *++YYCURSOR;
3369 		if (yych == '<') goto yy219;
3370 		goto yy82;
3371 yy236:
3372 		YYDEBUG(236, *YYCURSOR);
3373 		yych = *++YYCURSOR;
3374 		if (yych == 'A') goto yy315;
3375 		if (yych == 'a') goto yy315;
3376 		goto yy44;
3377 yy237:
3378 		YYDEBUG(237, *YYCURSOR);
3379 		yych = *++YYCURSOR;
3380 		if (yych == 'L') goto yy316;
3381 		if (yych == 'l') goto yy316;
3382 		goto yy44;
3383 yy238:
3384 		YYDEBUG(238, *YYCURSOR);
3385 		yych = *++YYCURSOR;
3386 		if (yych == 'E') goto yy317;
3387 		if (yych == 'e') goto yy317;
3388 		goto yy44;
3389 yy239:
3390 		YYDEBUG(239, *YYCURSOR);
3391 		yych = *++YYCURSOR;
3392 		if (yych == 'C') goto yy319;
3393 		if (yych == 'c') goto yy319;
3394 		goto yy44;
3395 yy240:
3396 		YYDEBUG(240, *YYCURSOR);
3397 		yych = *++YYCURSOR;
3398 		if (yych == 'S') goto yy320;
3399 		if (yych == 's') goto yy320;
3400 		goto yy44;
3401 yy241:
3402 		YYDEBUG(241, *YYCURSOR);
3403 		yych = *++YYCURSOR;
3404 		if (yych == 'N') goto yy321;
3405 		if (yych == 'n') goto yy321;
3406 		goto yy44;
3407 yy242:
3408 		YYDEBUG(242, *YYCURSOR);
3409 		yych = *++YYCURSOR;
3410 		if (yych <= 'T') {
3411 			if (yych <= 'R') goto yy44;
3412 			if (yych <= 'S') goto yy322;
3413 			goto yy323;
3414 		} else {
3415 			if (yych <= 'r') goto yy44;
3416 			if (yych <= 's') goto yy322;
3417 			if (yych <= 't') goto yy323;
3418 			goto yy44;
3419 		}
3420 yy243:
3421 		YYDEBUG(243, *YYCURSOR);
3422 		yych = *++YYCURSOR;
3423 		if (yych == 'L') goto yy324;
3424 		if (yych == 'l') goto yy324;
3425 		goto yy44;
3426 yy244:
3427 		YYDEBUG(244, *YYCURSOR);
3428 		yych = *++YYCURSOR;
3429 		if (yych == 'A') goto yy325;
3430 		if (yych == 'a') goto yy325;
3431 		goto yy44;
3432 yy245:
3433 		YYDEBUG(245, *YYCURSOR);
3434 		yych = *++YYCURSOR;
3435 		if (yybm[0+yych] & 16) {
3436 			goto yy43;
3437 		}
3438 		YYDEBUG(246, *YYCURSOR);
3439 		yyleng = YYCURSOR - SCNG(yy_text);
3440 #line 1129 "Zend/zend_language_scanner.l"
3441 		{
3442 	RETURN_TOKEN(T_EXIT);
3443 }
3444 #line 3445 "Zend/zend_language_scanner.c"
3445 yy247:
3446 		YYDEBUG(247, *YYCURSOR);
3447 		yych = *++YYCURSOR;
3448 		if (yych == 'O') goto yy326;
3449 		if (yych == 'o') goto yy326;
3450 		goto yy44;
3451 yy248:
3452 		YYDEBUG(248, *YYCURSOR);
3453 		yych = *++YYCURSOR;
3454 		if (yych == 'E') goto yy328;
3455 		if (yych == 'e') goto yy328;
3456 		goto yy44;
3457 yy249:
3458 		YYDEBUG(249, *YYCURSOR);
3459 		yych = *++YYCURSOR;
3460 		if (yych == 'T') goto yy330;
3461 		if (yych == 't') goto yy330;
3462 		goto yy44;
3463 yy250:
3464 		YYDEBUG(250, *YYCURSOR);
3465 		yych = *++YYCURSOR;
3466 		switch (yych) {
3467 		case 'D':
3468 		case 'd':	goto yy331;
3469 		case 'F':
3470 		case 'f':	goto yy332;
3471 		case 'I':
3472 		case 'i':	goto yy333;
3473 		case 'S':
3474 		case 's':	goto yy334;
3475 		case 'W':
3476 		case 'w':	goto yy335;
3477 		default:	goto yy44;
3478 		}
3479 yy251:
3480 		YYDEBUG(251, *YYCURSOR);
3481 		yych = *++YYCURSOR;
3482 		if (yych == 'L') goto yy336;
3483 		if (yych == 'l') goto yy336;
3484 		goto yy44;
3485 yy252:
3486 		YYDEBUG(252, *YYCURSOR);
3487 		yych = *++YYCURSOR;
3488 		if (yych == 'T') goto yy338;
3489 		if (yych == 't') goto yy338;
3490 		goto yy44;
3491 yy253:
3492 		YYDEBUG(253, *YYCURSOR);
3493 		yych = *++YYCURSOR;
3494 		if (yych == 'E') goto yy340;
3495 		if (yych == 'e') goto yy340;
3496 		goto yy44;
3497 yy254:
3498 		YYDEBUG(254, *YYCURSOR);
3499 		yych = *++YYCURSOR;
3500 		if (yych == 'A') goto yy341;
3501 		if (yych == 'a') goto yy341;
3502 		goto yy44;
3503 yy255:
3504 		YYDEBUG(255, *YYCURSOR);
3505 		yych = *++YYCURSOR;
3506 		if (yych <= '^') {
3507 			if (yych <= '@') {
3508 				if (yych <= '/') goto yy256;
3509 				if (yych <= '9') goto yy43;
3510 			} else {
3511 				if (yych == 'E') goto yy342;
3512 				if (yych <= 'Z') goto yy43;
3513 			}
3514 		} else {
3515 			if (yych <= 'd') {
3516 				if (yych != '`') goto yy43;
3517 			} else {
3518 				if (yych <= 'e') goto yy342;
3519 				if (yych <= 'z') goto yy43;
3520 				if (yych >= 0x80) goto yy43;
3521 			}
3522 		}
3523 yy256:
3524 		YYDEBUG(256, *YYCURSOR);
3525 		yyleng = YYCURSOR - SCNG(yy_text);
3526 #line 1199 "Zend/zend_language_scanner.l"
3527 		{
3528 	RETURN_TOKEN(T_FOR);
3529 }
3530 #line 3531 "Zend/zend_language_scanner.c"
3531 yy257:
3532 		YYDEBUG(257, *YYCURSOR);
3533 		yych = *++YYCURSOR;
3534 		if (yych == 'C') goto yy343;
3535 		if (yych == 'c') goto yy343;
3536 		goto yy44;
3537 yy258:
3538 		YYDEBUG(258, *YYCURSOR);
3539 		yych = *++YYCURSOR;
3540 		if (yych == 'B') goto yy344;
3541 		if (yych == 'b') goto yy344;
3542 		goto yy44;
3543 yy259:
3544 		YYDEBUG(259, *YYCURSOR);
3545 		yych = *++YYCURSOR;
3546 		if (yych == 'O') goto yy345;
3547 		if (yych == 'o') goto yy345;
3548 		goto yy44;
3549 yy260:
3550 		YYDEBUG(260, *YYCURSOR);
3551 		yych = *++YYCURSOR;
3552 		if (yych == 'L') goto yy347;
3553 		if (yych == 'l') goto yy347;
3554 		goto yy44;
3555 yy261:
3556 		YYDEBUG(261, *YYCURSOR);
3557 		yych = *++YYCURSOR;
3558 		if (yych == 'L') goto yy348;
3559 		if (yych == 'l') goto yy348;
3560 		goto yy44;
3561 yy262:
3562 		YYDEBUG(262, *YYCURSOR);
3563 		yych = *++YYCURSOR;
3564 		if (yych == 'T') goto yy349;
3565 		if (yych == 't') goto yy349;
3566 		goto yy44;
3567 yy263:
3568 		YYDEBUG(263, *YYCURSOR);
3569 		yych = *++YYCURSOR;
3570 		if (yych == 'E') goto yy350;
3571 		if (yych == 'e') goto yy350;
3572 		goto yy44;
3573 yy264:
3574 		YYDEBUG(264, *YYCURSOR);
3575 		yych = *++YYCURSOR;
3576 		if (yych == 'E') goto yy351;
3577 		if (yych == 'e') goto yy351;
3578 		goto yy44;
3579 yy265:
3580 		YYDEBUG(265, *YYCURSOR);
3581 		yych = *++YYCURSOR;
3582 		if (yych == 'T') goto yy352;
3583 		if (yych == 't') goto yy352;
3584 		goto yy44;
3585 yy266:
3586 		YYDEBUG(266, *YYCURSOR);
3587 		yych = *++YYCURSOR;
3588 		if (yych == 'E') goto yy354;
3589 		if (yych == 'e') goto yy354;
3590 		goto yy44;
3591 yy267:
3592 		YYDEBUG(267, *YYCURSOR);
3593 		yych = *++YYCURSOR;
3594 		if (yybm[0+yych] & 16) {
3595 			goto yy43;
3596 		}
3597 		YYDEBUG(268, *YYCURSOR);
3598 		yyleng = YYCURSOR - SCNG(yy_text);
3599 #line 1329 "Zend/zend_language_scanner.l"
3600 		{
3601 	RETURN_TOKEN(T_NEW);
3602 }
3603 #line 3604 "Zend/zend_language_scanner.c"
3604 yy269:
3605 		YYDEBUG(269, *YYCURSOR);
3606 		yych = *++YYCURSOR;
3607 		if (yych <= 'V') {
3608 			if (yych == 'N') goto yy355;
3609 			if (yych <= 'U') goto yy44;
3610 			goto yy356;
3611 		} else {
3612 			if (yych <= 'n') {
3613 				if (yych <= 'm') goto yy44;
3614 				goto yy355;
3615 			} else {
3616 				if (yych == 'v') goto yy356;
3617 				goto yy44;
3618 			}
3619 		}
3620 yy270:
3621 		YYDEBUG(270, *YYCURSOR);
3622 		yych = *++YYCURSOR;
3623 		if (yych == 'T') goto yy357;
3624 		if (yych == 't') goto yy357;
3625 		goto yy44;
3626 yy271:
3627 		YYDEBUG(271, *YYCURSOR);
3628 		yych = *++YYCURSOR;
3629 		if (yych == 'L') goto yy358;
3630 		if (yych == 'l') goto yy358;
3631 		goto yy44;
3632 yy272:
3633 		YYDEBUG(272, *YYCURSOR);
3634 		yych = *++YYCURSOR;
3635 		if (yych == 'U') goto yy359;
3636 		if (yych == 'u') goto yy359;
3637 		goto yy44;
3638 yy273:
3639 		YYDEBUG(273, *YYCURSOR);
3640 		yych = *++YYCURSOR;
3641 		if (yych == 'U') goto yy360;
3642 		if (yych == 'u') goto yy360;
3643 		goto yy44;
3644 yy274:
3645 		YYDEBUG(274, *YYCURSOR);
3646 		yych = *++YYCURSOR;
3647 		if (yych == 'T') goto yy361;
3648 		if (yych == 't') goto yy361;
3649 		goto yy44;
3650 yy275:
3651 		YYDEBUG(275, *YYCURSOR);
3652 		yych = *++YYCURSOR;
3653 		if (yych == 'T') goto yy362;
3654 		if (yych == 't') goto yy362;
3655 		goto yy44;
3656 yy276:
3657 		YYDEBUG(276, *YYCURSOR);
3658 		yych = *++YYCURSOR;
3659 		if (yych == 'O') goto yy363;
3660 		if (yych == 'o') goto yy363;
3661 		goto yy44;
3662 yy277:
3663 		YYDEBUG(277, *YYCURSOR);
3664 		yych = *++YYCURSOR;
3665 		if (yych == 'I') goto yy364;
3666 		if (yych == 'i') goto yy364;
3667 		goto yy44;
3668 yy278:
3669 		YYDEBUG(278, *YYCURSOR);
3670 		yych = *++YYCURSOR;
3671 		if (yybm[0+yych] & 16) {
3672 			goto yy43;
3673 		}
3674 		YYDEBUG(279, *YYCURSOR);
3675 		yyleng = YYCURSOR - SCNG(yy_text);
3676 #line 1155 "Zend/zend_language_scanner.l"
3677 		{
3678 	RETURN_TOKEN(T_TRY);
3679 }
3680 #line 3681 "Zend/zend_language_scanner.c"
3681 yy280:
3682 		YYDEBUG(280, *YYCURSOR);
3683 		yych = *++YYCURSOR;
3684 		if (yych == 'E') goto yy365;
3685 		if (yych == 'e') goto yy365;
3686 		goto yy44;
3687 yy281:
3688 		YYDEBUG(281, *YYCURSOR);
3689 		yych = *++YYCURSOR;
3690 		if (yybm[0+yych] & 16) {
3691 			goto yy43;
3692 		}
3693 		YYDEBUG(282, *YYCURSOR);
3694 		yyleng = YYCURSOR - SCNG(yy_text);
3695 #line 1393 "Zend/zend_language_scanner.l"
3696 		{
3697 	RETURN_TOKEN(T_USE);
3698 }
3699 #line 3700 "Zend/zend_language_scanner.c"
3700 yy283:
3701 		YYDEBUG(283, *YYCURSOR);
3702 		yych = *++YYCURSOR;
3703 		if (yybm[0+yych] & 16) {
3704 			goto yy43;
3705 		}
3706 		YYDEBUG(284, *YYCURSOR);
3707 		yyleng = YYCURSOR - SCNG(yy_text);
3708 #line 1337 "Zend/zend_language_scanner.l"
3709 		{
3710 	RETURN_TOKEN(T_VAR);
3711 }
3712 #line 3713 "Zend/zend_language_scanner.c"
3713 yy285:
3714 		YYDEBUG(285, *YYCURSOR);
3715 		yych = *++YYCURSOR;
3716 		if (yych == 'L') goto yy366;
3717 		if (yych == 'l') goto yy366;
3718 		goto yy44;
3719 yy286:
3720 		YYDEBUG(286, *YYCURSOR);
3721 		yych = *++YYCURSOR;
3722 		if (yybm[0+yych] & 16) {
3723 			goto yy43;
3724 		}
3725 		YYDEBUG(287, *YYCURSOR);
3726 		yyleng = YYCURSOR - SCNG(yy_text);
3727 #line 1565 "Zend/zend_language_scanner.l"
3728 		{
3729 	RETURN_TOKEN(T_LOGICAL_XOR);
3730 }
3731 #line 3732 "Zend/zend_language_scanner.c"
3732 yy288:
3733 		YYDEBUG(288, *YYCURSOR);
3734 		yych = *++YYCURSOR;
3735 		if (yych == 'L') goto yy367;
3736 		if (yych == 'l') goto yy367;
3737 		goto yy44;
3738 yy289:
3739 		YYDEBUG(289, *YYCURSOR);
3740 		yych = *++YYCURSOR;
3741 		if (yych == 'L') goto yy368;
3742 		if (yych == 'l') goto yy368;
3743 		goto yy44;
3744 yy290:
3745 		YYDEBUG(290, *YYCURSOR);
3746 		yych = *++YYCURSOR;
3747 		if (yych == 'I') goto yy369;
3748 		if (yych == 'i') goto yy369;
3749 		goto yy44;
3750 yy291:
3751 		YYDEBUG(291, *YYCURSOR);
3752 		yych = *++YYCURSOR;
3753 		if (yych <= 'U') {
3754 			if (yych == 'I') goto yy370;
3755 			if (yych <= 'T') goto yy44;
3756 			goto yy371;
3757 		} else {
3758 			if (yych <= 'i') {
3759 				if (yych <= 'h') goto yy44;
3760 				goto yy370;
3761 			} else {
3762 				if (yych == 'u') goto yy371;
3763 				goto yy44;
3764 			}
3765 		}
3766 yy292:
3767 		YYDEBUG(292, *YYCURSOR);
3768 		yych = *++YYCURSOR;
3769 		if (yych == 'A') goto yy372;
3770 		if (yych == 'a') goto yy372;
3771 		goto yy44;
3772 yy293:
3773 		YYDEBUG(293, *YYCURSOR);
3774 		yych = *++YYCURSOR;
3775 		if (yych == 'I') goto yy373;
3776 		if (yych == 'i') goto yy373;
3777 		goto yy44;
3778 yy294:
3779 		YYDEBUG(294, *YYCURSOR);
3780 		yych = *++YYCURSOR;
3781 		if (yych == 'E') goto yy374;
3782 		if (yych == 'e') goto yy374;
3783 		goto yy44;
3784 yy295:
3785 		YYDEBUG(295, *YYCURSOR);
3786 		yych = *++YYCURSOR;
3787 		if (yych == 'A') goto yy375;
3788 		if (yych == 'a') goto yy375;
3789 		goto yy44;
3790 yy296:
3791 		YYDEBUG(296, *YYCURSOR);
3792 		yych = *++YYCURSOR;
3793 		if (yych == 'R') goto yy376;
3794 		if (yych == 'r') goto yy376;
3795 		goto yy44;
3796 yy297:
3797 		YYDEBUG(297, *YYCURSOR);
3798 		yych = *++YYCURSOR;
3799 		if (yych == 'A') goto yy377;
3800 		if (yych == 'a') goto yy377;
3801 		goto yy82;
3802 yy298:
3803 		YYDEBUG(298, *YYCURSOR);
3804 		yych = *++YYCURSOR;
3805 		if (yych == 'A') goto yy378;
3806 		if (yych == 'a') goto yy378;
3807 		goto yy82;
3808 yy299:
3809 		YYDEBUG(299, *YYCURSOR);
3810 		yych = *++YYCURSOR;
3811 		if (yych == 'L') goto yy379;
3812 		if (yych == 'l') goto yy379;
3813 		goto yy82;
3814 yy300:
3815 		YYDEBUG(300, *YYCURSOR);
3816 		yych = *++YYCURSOR;
3817 		if (yych == 'B') goto yy380;
3818 		if (yych == 'b') goto yy380;
3819 		goto yy82;
3820 yy301:
3821 		YYDEBUG(301, *YYCURSOR);
3822 		yych = *++YYCURSOR;
3823 		if (yych == 'A') goto yy381;
3824 		if (yych == 'a') goto yy381;
3825 		goto yy82;
3826 yy302:
3827 		YYDEBUG(302, *YYCURSOR);
3828 		yych = *++YYCURSOR;
3829 		if (yych == 'E') goto yy386;
3830 		if (yych == 'e') goto yy386;
3831 		goto yy383;
3832 yy303:
3833 		YYDEBUG(303, *YYCURSOR);
3834 		yych = *++YYCURSOR;
3835 		if (yych == 'E') goto yy387;
3836 		if (yych == 'e') goto yy387;
3837 		goto yy82;
3838 yy304:
3839 		YYDEBUG(304, *YYCURSOR);
3840 		yych = *++YYCURSOR;
3841 		if (yych == 'L') goto yy388;
3842 		if (yych == 'l') goto yy388;
3843 		goto yy82;
3844 yy305:
3845 		YYDEBUG(305, *YYCURSOR);
3846 		yych = *++YYCURSOR;
3847 		if (yych == 'I') goto yy390;
3848 		if (yych == 'i') goto yy390;
3849 		goto yy82;
3850 yy306:
3851 		YYDEBUG(306, *YYCURSOR);
3852 		yych = *++YYCURSOR;
3853 		if (yych == 'E') goto yy391;
3854 		if (yych == 'e') goto yy391;
3855 		goto yy82;
3856 yy307:
3857 		YYDEBUG(307, *YYCURSOR);
3858 		++YYCURSOR;
3859 		YYFILL(1);
3860 		yych = *YYCURSOR;
3861 		YYDEBUG(308, *YYCURSOR);
3862 		if (yych <= '\f') {
3863 			if (yych <= 0x08) goto yy113;
3864 			if (yych <= '\n') goto yy307;
3865 			goto yy113;
3866 		} else {
3867 			if (yych <= '\r') goto yy307;
3868 			if (yych == ' ') goto yy307;
3869 			goto yy113;
3870 		}
3871 yy309:
3872 		YYDEBUG(309, *YYCURSOR);
3873 		yych = *++YYCURSOR;
3874 		if (yych == '"') goto yy82;
3875 		if (yych <= '/') goto yy393;
3876 		if (yych <= '9') goto yy82;
3877 		goto yy393;
3878 yy310:
3879 		YYDEBUG(310, *YYCURSOR);
3880 		yych = *++YYCURSOR;
3881 		if (yych == '\'') goto yy82;
3882 		if (yych <= '/') goto yy395;
3883 		if (yych <= '9') goto yy82;
3884 		goto yy395;
3885 yy311:
3886 		YYDEBUG(311, *YYCURSOR);
3887 		++YYCURSOR;
3888 		YYFILL(2);
3889 		yych = *YYCURSOR;
3890 		YYDEBUG(312, *YYCURSOR);
3891 		if (yych <= '@') {
3892 			if (yych <= '\f') {
3893 				if (yych == '\n') goto yy396;
3894 				goto yy82;
3895 			} else {
3896 				if (yych <= '\r') goto yy398;
3897 				if (yych <= '/') goto yy82;
3898 				if (yych <= '9') goto yy311;
3899 				goto yy82;
3900 			}
3901 		} else {
3902 			if (yych <= '_') {
3903 				if (yych <= 'Z') goto yy311;
3904 				if (yych <= '^') goto yy82;
3905 				goto yy311;
3906 			} else {
3907 				if (yych <= '`') goto yy82;
3908 				if (yych <= 'z') goto yy311;
3909 				if (yych <= 0x7F) goto yy82;
3910 				goto yy311;
3911 			}
3912 		}
3913 yy313:
3914 		YYDEBUG(313, *YYCURSOR);
3915 		yych = *++YYCURSOR;
3916 		if (yych == 'R') goto yy399;
3917 		if (yych == 'r') goto yy399;
3918 		goto yy44;
3919 yy314:
3920 		YYDEBUG(314, *YYCURSOR);
3921 		yych = *++YYCURSOR;
3922 		if (yych == 'Y') goto yy400;
3923 		if (yych == 'y') goto yy400;
3924 		goto yy44;
3925 yy315:
3926 		YYDEBUG(315, *YYCURSOR);
3927 		yych = *++YYCURSOR;
3928 		if (yych == 'K') goto yy402;
3929 		if (yych == 'k') goto yy402;
3930 		goto yy44;
3931 yy316:
3932 		YYDEBUG(316, *YYCURSOR);
3933 		yych = *++YYCURSOR;
3934 		if (yych == 'A') goto yy404;
3935 		if (yych == 'a') goto yy404;
3936 		goto yy44;
3937 yy317:
3938 		YYDEBUG(317, *YYCURSOR);
3939 		yych = *++YYCURSOR;
3940 		if (yybm[0+yych] & 16) {
3941 			goto yy43;
3942 		}
3943 		YYDEBUG(318, *YYCURSOR);
3944 		yyleng = YYCURSOR - SCNG(yy_text);
3945 #line 1239 "Zend/zend_language_scanner.l"
3946 		{
3947 	RETURN_TOKEN(T_CASE);
3948 }
3949 #line 3950 "Zend/zend_language_scanner.c"
3950 yy319:
3951 		YYDEBUG(319, *YYCURSOR);
3952 		yych = *++YYCURSOR;
3953 		if (yych == 'H') goto yy405;
3954 		if (yych == 'h') goto yy405;
3955 		goto yy44;
3956 yy320:
3957 		YYDEBUG(320, *YYCURSOR);
3958 		yych = *++YYCURSOR;
3959 		if (yych == 'S') goto yy407;
3960 		if (yych == 's') goto yy407;
3961 		goto yy44;
3962 yy321:
3963 		YYDEBUG(321, *YYCURSOR);
3964 		yych = *++YYCURSOR;
3965 		if (yych == 'E') goto yy409;
3966 		if (yych == 'e') goto yy409;
3967 		goto yy44;
3968 yy322:
3969 		YYDEBUG(322, *YYCURSOR);
3970 		yych = *++YYCURSOR;
3971 		if (yych == 'T') goto yy411;
3972 		if (yych == 't') goto yy411;
3973 		goto yy44;
3974 yy323:
3975 		YYDEBUG(323, *YYCURSOR);
3976 		yych = *++YYCURSOR;
3977 		if (yych == 'I') goto yy413;
3978 		if (yych == 'i') goto yy413;
3979 		goto yy44;
3980 yy324:
3981 		YYDEBUG(324, *YYCURSOR);
3982 		yych = *++YYCURSOR;
3983 		if (yych == 'A') goto yy414;
3984 		if (yych == 'a') goto yy414;
3985 		goto yy44;
3986 yy325:
3987 		YYDEBUG(325, *YYCURSOR);
3988 		yych = *++YYCURSOR;
3989 		if (yych == 'U') goto yy415;
3990 		if (yych == 'u') goto yy415;
3991 		goto yy44;
3992 yy326:
3993 		YYDEBUG(326, *YYCURSOR);
3994 		yych = *++YYCURSOR;
3995 		if (yybm[0+yych] & 16) {
3996 			goto yy43;
3997 		}
3998 		YYDEBUG(327, *YYCURSOR);
3999 		yyleng = YYCURSOR - SCNG(yy_text);
4000 #line 1259 "Zend/zend_language_scanner.l"
4001 		{
4002 	RETURN_TOKEN(T_ECHO);
4003 }
4004 #line 4005 "Zend/zend_language_scanner.c"
4005 yy328:
4006 		YYDEBUG(328, *YYCURSOR);
4007 		yych = *++YYCURSOR;
4008 		if (yych <= '^') {
4009 			if (yych <= '@') {
4010 				if (yych <= '/') goto yy329;
4011 				if (yych <= '9') goto yy43;
4012 			} else {
4013 				if (yych == 'I') goto yy416;
4014 				if (yych <= 'Z') goto yy43;
4015 			}
4016 		} else {
4017 			if (yych <= 'h') {
4018 				if (yych != '`') goto yy43;
4019 			} else {
4020 				if (yych <= 'i') goto yy416;
4021 				if (yych <= 'z') goto yy43;
4022 				if (yych >= 0x80) goto yy43;
4023 			}
4024 		}
4025 yy329:
4026 		YYDEBUG(329, *YYCURSOR);
4027 		yyleng = YYCURSOR - SCNG(yy_text);
4028 #line 1183 "Zend/zend_language_scanner.l"
4029 		{
4030 	RETURN_TOKEN(T_ELSE);
4031 }
4032 #line 4033 "Zend/zend_language_scanner.c"
4033 yy330:
4034 		YYDEBUG(330, *YYCURSOR);
4035 		yych = *++YYCURSOR;
4036 		if (yych == 'Y') goto yy417;
4037 		if (yych == 'y') goto yy417;
4038 		goto yy44;
4039 yy331:
4040 		YYDEBUG(331, *YYCURSOR);
4041 		yych = *++YYCURSOR;
4042 		if (yych == 'E') goto yy419;
4043 		if (yych == 'e') goto yy419;
4044 		goto yy44;
4045 yy332:
4046 		YYDEBUG(332, *YYCURSOR);
4047 		yych = *++YYCURSOR;
4048 		if (yych == 'O') goto yy420;
4049 		if (yych == 'o') goto yy420;
4050 		goto yy44;
4051 yy333:
4052 		YYDEBUG(333, *YYCURSOR);
4053 		yych = *++YYCURSOR;
4054 		if (yych == 'F') goto yy421;
4055 		if (yych == 'f') goto yy421;
4056 		goto yy44;
4057 yy334:
4058 		YYDEBUG(334, *YYCURSOR);
4059 		yych = *++YYCURSOR;
4060 		if (yych == 'W') goto yy423;
4061 		if (yych == 'w') goto yy423;
4062 		goto yy44;
4063 yy335:
4064 		YYDEBUG(335, *YYCURSOR);
4065 		yych = *++YYCURSOR;
4066 		if (yych == 'H') goto yy424;
4067 		if (yych == 'h') goto yy424;
4068 		goto yy44;
4069 yy336:
4070 		YYDEBUG(336, *YYCURSOR);
4071 		yych = *++YYCURSOR;
4072 		if (yybm[0+yych] & 16) {
4073 			goto yy43;
4074 		}
4075 		YYDEBUG(337, *YYCURSOR);
4076 		yyleng = YYCURSOR - SCNG(yy_text);
4077 #line 1369 "Zend/zend_language_scanner.l"
4078 		{
4079 	RETURN_TOKEN(T_EVAL);
4080 }
4081 #line 4082 "Zend/zend_language_scanner.c"
4082 yy338:
4083 		YYDEBUG(338, *YYCURSOR);
4084 		yych = *++YYCURSOR;
4085 		if (yybm[0+yych] & 16) {
4086 			goto yy43;
4087 		}
4088 		YYDEBUG(339, *YYCURSOR);
4089 		yyleng = YYCURSOR - SCNG(yy_text);
4090 #line 1125 "Zend/zend_language_scanner.l"
4091 		{
4092 	RETURN_TOKEN(T_EXIT);
4093 }
4094 #line 4095 "Zend/zend_language_scanner.c"
4095 yy340:
4096 		YYDEBUG(340, *YYCURSOR);
4097 		yych = *++YYCURSOR;
4098 		if (yych == 'N') goto yy425;
4099 		if (yych == 'n') goto yy425;
4100 		goto yy44;
4101 yy341:
4102 		YYDEBUG(341, *YYCURSOR);
4103 		yych = *++YYCURSOR;
4104 		if (yych == 'L') goto yy426;
4105 		if (yych == 'l') goto yy426;
4106 		goto yy44;
4107 yy342:
4108 		YYDEBUG(342, *YYCURSOR);
4109 		yych = *++YYCURSOR;
4110 		if (yych == 'A') goto yy428;
4111 		if (yych == 'a') goto yy428;
4112 		goto yy44;
4113 yy343:
4114 		YYDEBUG(343, *YYCURSOR);
4115 		yych = *++YYCURSOR;
4116 		if (yych == 'T') goto yy429;
4117 		if (yych == 't') goto yy429;
4118 		goto yy44;
4119 yy344:
4120 		YYDEBUG(344, *YYCURSOR);
4121 		yych = *++YYCURSOR;
4122 		if (yych == 'A') goto yy430;
4123 		if (yych == 'a') goto yy430;
4124 		goto yy44;
4125 yy345:
4126 		YYDEBUG(345, *YYCURSOR);
4127 		yych = *++YYCURSOR;
4128 		if (yybm[0+yych] & 16) {
4129 			goto yy43;
4130 		}
4131 		YYDEBUG(346, *YYCURSOR);
4132 		yyleng = YYCURSOR - SCNG(yy_text);
4133 #line 1255 "Zend/zend_language_scanner.l"
4134 		{
4135 	RETURN_TOKEN(T_GOTO);
4136 }
4137 #line 4138 "Zend/zend_language_scanner.c"
4138 yy347:
4139 		YYDEBUG(347, *YYCURSOR);
4140 		yych = *++YYCURSOR;
4141 		if (yych == 'E') goto yy431;
4142 		if (yych == 'e') goto yy431;
4143 		goto yy44;
4144 yy348:
4145 		YYDEBUG(348, *YYCURSOR);
4146 		yych = *++YYCURSOR;
4147 		if (yych == 'U') goto yy432;
4148 		if (yych == 'u') goto yy432;
4149 		goto yy44;
4150 yy349:
4151 		YYDEBUG(349, *YYCURSOR);
4152 		yych = *++YYCURSOR;
4153 		if (yych <= 'E') {
4154 			if (yych == 'A') goto yy433;
4155 			if (yych <= 'D') goto yy44;
4156 			goto yy434;
4157 		} else {
4158 			if (yych <= 'a') {
4159 				if (yych <= '`') goto yy44;
4160 				goto yy433;
4161 			} else {
4162 				if (yych == 'e') goto yy434;
4163 				goto yy44;
4164 			}
4165 		}
4166 yy350:
4167 		YYDEBUG(350, *YYCURSOR);
4168 		yych = *++YYCURSOR;
4169 		if (yych == 'R') goto yy435;
4170 		if (yych == 'r') goto yy435;
4171 		goto yy44;
4172 yy351:
4173 		YYDEBUG(351, *YYCURSOR);
4174 		yych = *++YYCURSOR;
4175 		if (yych == 'T') goto yy436;
4176 		if (yych == 't') goto yy436;
4177 		goto yy44;
4178 yy352:
4179 		YYDEBUG(352, *YYCURSOR);
4180 		yych = *++YYCURSOR;
4181 		if (yybm[0+yych] & 16) {
4182 			goto yy43;
4183 		}
4184 		YYDEBUG(353, *YYCURSOR);
4185 		yyleng = YYCURSOR - SCNG(yy_text);
4186 #line 1449 "Zend/zend_language_scanner.l"
4187 		{
4188 	RETURN_TOKEN(T_LIST);
4189 }
4190 #line 4191 "Zend/zend_language_scanner.c"
4191 yy354:
4192 		YYDEBUG(354, *YYCURSOR);
4193 		yych = *++YYCURSOR;
4194 		if (yych == 'S') goto yy438;
4195 		if (yych == 's') goto yy438;
4196 		goto yy44;
4197 yy355:
4198 		YYDEBUG(355, *YYCURSOR);
4199 		yych = *++YYCURSOR;
4200 		if (yych == 'T') goto yy439;
4201 		if (yych == 't') goto yy439;
4202 		goto yy44;
4203 yy356:
4204 		YYDEBUG(356, *YYCURSOR);
4205 		yych = *++YYCURSOR;
4206 		if (yych == 'A') goto yy441;
4207 		if (yych == 'a') goto yy441;
4208 		goto yy44;
4209 yy357:
4210 		YYDEBUG(357, *YYCURSOR);
4211 		yych = *++YYCURSOR;
4212 		if (yych == 'E') goto yy442;
4213 		if (yych == 'e') goto yy442;
4214 		goto yy44;
4215 yy358:
4216 		YYDEBUG(358, *YYCURSOR);
4217 		yych = *++YYCURSOR;
4218 		if (yych == 'I') goto yy443;
4219 		if (yych == 'i') goto yy443;
4220 		goto yy44;
4221 yy359:
4222 		YYDEBUG(359, *YYCURSOR);
4223 		yych = *++YYCURSOR;
4224 		if (yych == 'I') goto yy444;
4225 		if (yych == 'i') goto yy444;
4226 		goto yy44;
4227 yy360:
4228 		YYDEBUG(360, *YYCURSOR);
4229 		yych = *++YYCURSOR;
4230 		if (yych == 'R') goto yy445;
4231 		if (yych == 'r') goto yy445;
4232 		goto yy44;
4233 yy361:
4234 		YYDEBUG(361, *YYCURSOR);
4235 		yych = *++YYCURSOR;
4236 		if (yych == 'I') goto yy446;
4237 		if (yych == 'i') goto yy446;
4238 		goto yy44;
4239 yy362:
4240 		YYDEBUG(362, *YYCURSOR);
4241 		yych = *++YYCURSOR;
4242 		if (yych == 'C') goto yy447;
4243 		if (yych == 'c') goto yy447;
4244 		goto yy44;
4245 yy363:
4246 		YYDEBUG(363, *YYCURSOR);
4247 		yych = *++YYCURSOR;
4248 		if (yych == 'W') goto yy448;
4249 		if (yych == 'w') goto yy448;
4250 		goto yy44;
4251 yy364:
4252 		YYDEBUG(364, *YYCURSOR);
4253 		yych = *++YYCURSOR;
4254 		if (yych == 'T') goto yy450;
4255 		if (yych == 't') goto yy450;
4256 		goto yy44;
4257 yy365:
4258 		YYDEBUG(365, *YYCURSOR);
4259 		yych = *++YYCURSOR;
4260 		if (yych == 'T') goto yy452;
4261 		if (yych == 't') goto yy452;
4262 		goto yy44;
4263 yy366:
4264 		YYDEBUG(366, *YYCURSOR);
4265 		yych = *++YYCURSOR;
4266 		if (yych == 'E') goto yy454;
4267 		if (yych == 'e') goto yy454;
4268 		goto yy44;
4269 yy367:
4270 		YYDEBUG(367, *YYCURSOR);
4271 		yych = *++YYCURSOR;
4272 		if (yych == 'D') goto yy456;
4273 		if (yych == 'd') goto yy456;
4274 		goto yy44;
4275 yy368:
4276 		YYDEBUG(368, *YYCURSOR);
4277 		yych = *++YYCURSOR;
4278 		if (yych == 'A') goto yy458;
4279 		if (yych == 'a') goto yy458;
4280 		goto yy44;
4281 yy369:
4282 		YYDEBUG(369, *YYCURSOR);
4283 		yych = *++YYCURSOR;
4284 		if (yych == 'R') goto yy459;
4285 		if (yych == 'r') goto yy459;
4286 		goto yy44;
4287 yy370:
4288 		YYDEBUG(370, *YYCURSOR);
4289 		yych = *++YYCURSOR;
4290 		if (yych == 'L') goto yy460;
4291 		if (yych == 'l') goto yy460;
4292 		goto yy44;
4293 yy371:
4294 		YYDEBUG(371, *YYCURSOR);
4295 		yych = *++YYCURSOR;
4296 		if (yych == 'N') goto yy461;
4297 		if (yych == 'n') goto yy461;
4298 		goto yy44;
4299 yy372:
4300 		YYDEBUG(372, *YYCURSOR);
4301 		yych = *++YYCURSOR;
4302 		if (yych == 'L') goto yy462;
4303 		if (yych == 'l') goto yy462;
4304 		goto yy44;
4305 yy373:
4306 		YYDEBUG(373, *YYCURSOR);
4307 		yych = *++YYCURSOR;
4308 		if (yych == 'N') goto yy463;
4309 		if (yych == 'n') goto yy463;
4310 		goto yy44;
4311 yy374:
4312 		YYDEBUG(374, *YYCURSOR);
4313 		yych = *++YYCURSOR;
4314 		if (yych == 'T') goto yy464;
4315 		if (yych == 't') goto yy464;
4316 		goto yy44;
4317 yy375:
4318 		YYDEBUG(375, *YYCURSOR);
4319 		yych = *++YYCURSOR;
4320 		if (yych == 'M') goto yy465;
4321 		if (yych == 'm') goto yy465;
4322 		goto yy44;
4323 yy376:
4324 		YYDEBUG(376, *YYCURSOR);
4325 		yych = *++YYCURSOR;
4326 		if (yych == 'A') goto yy466;
4327 		if (yych == 'a') goto yy466;
4328 		goto yy44;
4329 yy377:
4330 		YYDEBUG(377, *YYCURSOR);
4331 		yych = *++YYCURSOR;
4332 		if (yych == 'Y') goto yy467;
4333 		if (yych == 'y') goto yy467;
4334 		goto yy82;
4335 yy378:
4336 		YYDEBUG(378, *YYCURSOR);
4337 		yych = *++YYCURSOR;
4338 		if (yych == 'R') goto yy469;
4339 		if (yych == 'r') goto yy469;
4340 		goto yy82;
4341 yy379:
4342 		YYDEBUG(379, *YYCURSOR);
4343 		yych = *++YYCURSOR;
4344 		if (yych == 'E') goto yy474;
4345 		if (yych == 'e') goto yy474;
4346 		goto yy471;
4347 yy380:
4348 		YYDEBUG(380, *YYCURSOR);
4349 		yych = *++YYCURSOR;
4350 		if (yych == 'L') goto yy475;
4351 		if (yych == 'l') goto yy475;
4352 		goto yy82;
4353 yy381:
4354 		YYDEBUG(381, *YYCURSOR);
4355 		yych = *++YYCURSOR;
4356 		if (yych == 'T') goto yy388;
4357 		if (yych == 't') goto yy388;
4358 		goto yy82;
4359 yy382:
4360 		YYDEBUG(382, *YYCURSOR);
4361 		++YYCURSOR;
4362 		YYFILL(1);
4363 		yych = *YYCURSOR;
4364 yy383:
4365 		YYDEBUG(383, *YYCURSOR);
4366 		if (yych <= 0x1F) {
4367 			if (yych == '\t') goto yy382;
4368 			goto yy82;
4369 		} else {
4370 			if (yych <= ' ') goto yy382;
4371 			if (yych != ')') goto yy82;
4372 		}
4373 		YYDEBUG(384, *YYCURSOR);
4374 		++YYCURSOR;
4375 		YYDEBUG(385, *YYCURSOR);
4376 		yyleng = YYCURSOR - SCNG(yy_text);
4377 #line 1341 "Zend/zend_language_scanner.l"
4378 		{
4379 	RETURN_TOKEN(T_INT_CAST);
4380 }
4381 #line 4382 "Zend/zend_language_scanner.c"
4382 yy386:
4383 		YYDEBUG(386, *YYCURSOR);
4384 		yych = *++YYCURSOR;
4385 		if (yych == 'G') goto yy476;
4386 		if (yych == 'g') goto yy476;
4387 		goto yy82;
4388 yy387:
4389 		YYDEBUG(387, *YYCURSOR);
4390 		yych = *++YYCURSOR;
4391 		if (yych == 'C') goto yy477;
4392 		if (yych == 'c') goto yy477;
4393 		goto yy82;
4394 yy388:
4395 		YYDEBUG(388, *YYCURSOR);
4396 		++YYCURSOR;
4397 		YYFILL(1);
4398 		yych = *YYCURSOR;
4399 		YYDEBUG(389, *YYCURSOR);
4400 		if (yych <= 0x1F) {
4401 			if (yych == '\t') goto yy388;
4402 			goto yy82;
4403 		} else {
4404 			if (yych <= ' ') goto yy388;
4405 			if (yych == ')') goto yy478;
4406 			goto yy82;
4407 		}
4408 yy390:
4409 		YYDEBUG(390, *YYCURSOR);
4410 		yych = *++YYCURSOR;
4411 		if (yych == 'N') goto yy480;
4412 		if (yych == 'n') goto yy480;
4413 		goto yy82;
4414 yy391:
4415 		YYDEBUG(391, *YYCURSOR);
4416 		yych = *++YYCURSOR;
4417 		if (yych == 'T') goto yy481;
4418 		if (yych == 't') goto yy481;
4419 		goto yy82;
4420 yy392:
4421 		YYDEBUG(392, *YYCURSOR);
4422 		++YYCURSOR;
4423 		YYFILL(3);
4424 		yych = *YYCURSOR;
4425 yy393:
4426 		YYDEBUG(393, *YYCURSOR);
4427 		if (yych <= 'Z') {
4428 			if (yych <= '/') {
4429 				if (yych == '"') goto yy483;
4430 				goto yy82;
4431 			} else {
4432 				if (yych <= '9') goto yy392;
4433 				if (yych <= '@') goto yy82;
4434 				goto yy392;
4435 			}
4436 		} else {
4437 			if (yych <= '`') {
4438 				if (yych == '_') goto yy392;
4439 				goto yy82;
4440 			} else {
4441 				if (yych <= 'z') goto yy392;
4442 				if (yych <= 0x7F) goto yy82;
4443 				goto yy392;
4444 			}
4445 		}
4446 yy394:
4447 		YYDEBUG(394, *YYCURSOR);
4448 		++YYCURSOR;
4449 		YYFILL(3);
4450 		yych = *YYCURSOR;
4451 yy395:
4452 		YYDEBUG(395, *YYCURSOR);
4453 		if (yych <= 'Z') {
4454 			if (yych <= '/') {
4455 				if (yych == '\'') goto yy483;
4456 				goto yy82;
4457 			} else {
4458 				if (yych <= '9') goto yy394;
4459 				if (yych <= '@') goto yy82;
4460 				goto yy394;
4461 			}
4462 		} else {
4463 			if (yych <= '`') {
4464 				if (yych == '_') goto yy394;
4465 				goto yy82;
4466 			} else {
4467 				if (yych <= 'z') goto yy394;
4468 				if (yych <= 0x7F) goto yy82;
4469 				goto yy394;
4470 			}
4471 		}
4472 yy396:
4473 		YYDEBUG(396, *YYCURSOR);
4474 		++YYCURSOR;
4475 yy397:
4476 		YYDEBUG(397, *YYCURSOR);
4477 		yyleng = YYCURSOR - SCNG(yy_text);
4478 #line 2080 "Zend/zend_language_scanner.l"
4479 		{
4480 	char *s;
4481 	int bprefix = (yytext[0] != '<') ? 1 : 0;
4482 	zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label));
4483 
4484 	CG(zend_lineno)++;
4485 	heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
4486 	s = yytext+bprefix+3;
4487 	while ((*s == ' ') || (*s == '\t')) {
4488 		s++;
4489 		heredoc_label->length--;
4490 	}
4491 
4492 	if (*s == '\'') {
4493 		s++;
4494 		heredoc_label->length -= 2;
4495 
4496 		BEGIN(ST_NOWDOC);
4497 	} else {
4498 		if (*s == '"') {
4499 			s++;
4500 			heredoc_label->length -= 2;
4501 		}
4502 
4503 		BEGIN(ST_HEREDOC);
4504 	}
4505 
4506 	heredoc_label->label = estrndup(s, heredoc_label->length);
4507 
4508 	/* Check for ending label on the next line */
4509 	if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) {
4510 		YYCTYPE *end = YYCURSOR + heredoc_label->length;
4511 
4512 		if (*end == ';') {
4513 			end++;
4514 		}
4515 
4516 		if (*end == '\n' || *end == '\r') {
4517 			BEGIN(ST_END_HEREDOC);
4518 		}
4519 	}
4520 
4521 	zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label);
4522 
4523 	RETURN_TOKEN(T_START_HEREDOC);
4524 }
4525 #line 4526 "Zend/zend_language_scanner.c"
4526 yy398:
4527 		YYDEBUG(398, *YYCURSOR);
4528 		yych = *++YYCURSOR;
4529 		if (yych == '\n') goto yy396;
4530 		goto yy397;
4531 yy399:
4532 		YYDEBUG(399, *YYCURSOR);
4533 		yych = *++YYCURSOR;
4534 		if (yych == 'A') goto yy484;
4535 		if (yych == 'a') goto yy484;
4536 		goto yy44;
4537 yy400:
4538 		YYDEBUG(400, *YYCURSOR);
4539 		yych = *++YYCURSOR;
4540 		if (yybm[0+yych] & 16) {
4541 			goto yy43;
4542 		}
4543 		YYDEBUG(401, *YYCURSOR);
4544 		yyleng = YYCURSOR - SCNG(yy_text);
4545 #line 1453 "Zend/zend_language_scanner.l"
4546 		{
4547 	RETURN_TOKEN(T_ARRAY);
4548 }
4549 #line 4550 "Zend/zend_language_scanner.c"
4550 yy402:
4551 		YYDEBUG(402, *YYCURSOR);
4552 		yych = *++YYCURSOR;
4553 		if (yybm[0+yych] & 16) {
4554 			goto yy43;
4555 		}
4556 		YYDEBUG(403, *YYCURSOR);
4557 		yyleng = YYCURSOR - SCNG(yy_text);
4558 #line 1247 "Zend/zend_language_scanner.l"
4559 		{
4560 	RETURN_TOKEN(T_BREAK);
4561 }
4562 #line 4563 "Zend/zend_language_scanner.c"
4563 yy404:
4564 		YYDEBUG(404, *YYCURSOR);
4565 		yych = *++YYCURSOR;
4566 		if (yych == 'B') goto yy485;
4567 		if (yych == 'b') goto yy485;
4568 		goto yy44;
4569 yy405:
4570 		YYDEBUG(405, *YYCURSOR);
4571 		yych = *++YYCURSOR;
4572 		if (yybm[0+yych] & 16) {
4573 			goto yy43;
4574 		}
4575 		YYDEBUG(406, *YYCURSOR);
4576 		yyleng = YYCURSOR - SCNG(yy_text);
4577 #line 1159 "Zend/zend_language_scanner.l"
4578 		{
4579 	RETURN_TOKEN(T_CATCH);
4580 }
4581 #line 4582 "Zend/zend_language_scanner.c"
4582 yy407:
4583 		YYDEBUG(407, *YYCURSOR);
4584 		yych = *++YYCURSOR;
4585 		if (yybm[0+yych] & 16) {
4586 			goto yy43;
4587 		}
4588 		YYDEBUG(408, *YYCURSOR);
4589 		yyleng = YYCURSOR - SCNG(yy_text);
4590 #line 1267 "Zend/zend_language_scanner.l"
4591 		{
4592 	RETURN_TOKEN(T_CLASS);
4593 }
4594 #line 4595 "Zend/zend_language_scanner.c"
4595 yy409:
4596 		YYDEBUG(409, *YYCURSOR);
4597 		yych = *++YYCURSOR;
4598 		if (yybm[0+yych] & 16) {
4599 			goto yy43;
4600 		}
4601 		YYDEBUG(410, *YYCURSOR);
4602 		yyleng = YYCURSOR - SCNG(yy_text);
4603 #line 1333 "Zend/zend_language_scanner.l"
4604 		{
4605 	RETURN_TOKEN(T_CLONE);
4606 }
4607 #line 4608 "Zend/zend_language_scanner.c"
4608 yy411:
4609 		YYDEBUG(411, *YYCURSOR);
4610 		yych = *++YYCURSOR;
4611 		if (yybm[0+yych] & 16) {
4612 			goto yy43;
4613 		}
4614 		YYDEBUG(412, *YYCURSOR);
4615 		yyleng = YYCURSOR - SCNG(yy_text);
4616 #line 1137 "Zend/zend_language_scanner.l"
4617 		{
4618 	RETURN_TOKEN(T_CONST);
4619 }
4620 #line 4621 "Zend/zend_language_scanner.c"
4621 yy413:
4622 		YYDEBUG(413, *YYCURSOR);
4623 		yych = *++YYCURSOR;
4624 		if (yych == 'N') goto yy486;
4625 		if (yych == 'n') goto yy486;
4626 		goto yy44;
4627 yy414:
4628 		YYDEBUG(414, *YYCURSOR);
4629 		yych = *++YYCURSOR;
4630 		if (yych == 'R') goto yy487;
4631 		if (yych == 'r') goto yy487;
4632 		goto yy44;
4633 yy415:
4634 		YYDEBUG(415, *YYCURSOR);
4635 		yych = *++YYCURSOR;
4636 		if (yych == 'L') goto yy488;
4637 		if (yych == 'l') goto yy488;
4638 		goto yy44;
4639 yy416:
4640 		YYDEBUG(416, *YYCURSOR);
4641 		yych = *++YYCURSOR;
4642 		if (yych == 'F') goto yy489;
4643 		if (yych == 'f') goto yy489;
4644 		goto yy44;
4645 yy417:
4646 		YYDEBUG(417, *YYCURSOR);
4647 		yych = *++YYCURSOR;
4648 		if (yybm[0+yych] & 16) {
4649 			goto yy43;
4650 		}
4651 		YYDEBUG(418, *YYCURSOR);
4652 		yyleng = YYCURSOR - SCNG(yy_text);
4653 #line 1409 "Zend/zend_language_scanner.l"
4654 		{
4655 	RETURN_TOKEN(T_EMPTY);
4656 }
4657 #line 4658 "Zend/zend_language_scanner.c"
4658 yy419:
4659 		YYDEBUG(419, *YYCURSOR);
4660 		yych = *++YYCURSOR;
4661 		if (yych == 'C') goto yy491;
4662 		if (yych == 'c') goto yy491;
4663 		goto yy44;
4664 yy420:
4665 		YYDEBUG(420, *YYCURSOR);
4666 		yych = *++YYCURSOR;
4667 		if (yych == 'R') goto yy492;
4668 		if (yych == 'r') goto yy492;
4669 		goto yy44;
4670 yy421:
4671 		YYDEBUG(421, *YYCURSOR);
4672 		yych = *++YYCURSOR;
4673 		if (yybm[0+yych] & 16) {
4674 			goto yy43;
4675 		}
4676 		YYDEBUG(422, *YYCURSOR);
4677 		yyleng = YYCURSOR - SCNG(yy_text);
4678 #line 1179 "Zend/zend_language_scanner.l"
4679 		{
4680 	RETURN_TOKEN(T_ENDIF);
4681 }
4682 #line 4683 "Zend/zend_language_scanner.c"
4683 yy423:
4684 		YYDEBUG(423, *YYCURSOR);
4685 		yych = *++YYCURSOR;
4686 		if (yych == 'I') goto yy494;
4687 		if (yych == 'i') goto yy494;
4688 		goto yy44;
4689 yy424:
4690 		YYDEBUG(424, *YYCURSOR);
4691 		yych = *++YYCURSOR;
4692 		if (yych == 'I') goto yy495;
4693 		if (yych == 'i') goto yy495;
4694 		goto yy44;
4695 yy425:
4696 		YYDEBUG(425, *YYCURSOR);
4697 		yych = *++YYCURSOR;
4698 		if (yych == 'D') goto yy496;
4699 		if (yych == 'd') goto yy496;
4700 		goto yy44;
4701 yy426:
4702 		YYDEBUG(426, *YYCURSOR);
4703 		yych = *++YYCURSOR;
4704 		if (yych <= '^') {
4705 			if (yych <= '@') {
4706 				if (yych <= '/') goto yy427;
4707 				if (yych <= '9') goto yy43;
4708 			} else {
4709 				if (yych == 'L') goto yy497;
4710 				if (yych <= 'Z') goto yy43;
4711 			}
4712 		} else {
4713 			if (yych <= 'k') {
4714 				if (yych != '`') goto yy43;
4715 			} else {
4716 				if (yych <= 'l') goto yy497;
4717 				if (yych <= 'z') goto yy43;
4718 				if (yych >= 0x80) goto yy43;
4719 			}
4720 		}
4721 yy427:
4722 		YYDEBUG(427, *YYCURSOR);
4723 		yyleng = YYCURSOR - SCNG(yy_text);
4724 #line 1425 "Zend/zend_language_scanner.l"
4725 		{
4726 	RETURN_TOKEN(T_FINAL);
4727 }
4728 #line 4729 "Zend/zend_language_scanner.c"
4729 yy428:
4730 		YYDEBUG(428, *YYCURSOR);
4731 		yych = *++YYCURSOR;
4732 		if (yych == 'C') goto yy498;
4733 		if (yych == 'c') goto yy498;
4734 		goto yy44;
4735 yy429:
4736 		YYDEBUG(429, *YYCURSOR);
4737 		yych = *++YYCURSOR;
4738 		if (yych == 'I') goto yy499;
4739 		if (yych == 'i') goto yy499;
4740 		goto yy44;
4741 yy430:
4742 		YYDEBUG(430, *YYCURSOR);
4743 		yych = *++YYCURSOR;
4744 		if (yych == 'L') goto yy500;
4745 		if (yych == 'l') goto yy500;
4746 		goto yy44;
4747 yy431:
4748 		YYDEBUG(431, *YYCURSOR);
4749 		yych = *++YYCURSOR;
4750 		if (yych == 'M') goto yy502;
4751 		if (yych == 'm') goto yy502;
4752 		goto yy44;
4753 yy432:
4754 		YYDEBUG(432, *YYCURSOR);
4755 		yych = *++YYCURSOR;
4756 		if (yych == 'D') goto yy503;
4757 		if (yych == 'd') goto yy503;
4758 		goto yy44;
4759 yy433:
4760 		YYDEBUG(433, *YYCURSOR);
4761 		yych = *++YYCURSOR;
4762 		if (yych == 'N') goto yy504;
4763 		if (yych == 'n') goto yy504;
4764 		goto yy44;
4765 yy434:
4766 		YYDEBUG(434, *YYCURSOR);
4767 		yych = *++YYCURSOR;
4768 		if (yych == 'A') goto yy505;
4769 		if (yych == 'a') goto yy505;
4770 		goto yy44;
4771 yy435:
4772 		YYDEBUG(435, *YYCURSOR);
4773 		yych = *++YYCURSOR;
4774 		if (yych == 'F') goto yy506;
4775 		if (yych == 'f') goto yy506;
4776 		goto yy44;
4777 yy436:
4778 		YYDEBUG(436, *YYCURSOR);
4779 		yych = *++YYCURSOR;
4780 		if (yybm[0+yych] & 16) {
4781 			goto yy43;
4782 		}
4783 		YYDEBUG(437, *YYCURSOR);
4784 		yyleng = YYCURSOR - SCNG(yy_text);
4785 #line 1405 "Zend/zend_language_scanner.l"
4786 		{
4787 	RETURN_TOKEN(T_ISSET);
4788 }
4789 #line 4790 "Zend/zend_language_scanner.c"
4790 yy438:
4791 		YYDEBUG(438, *YYCURSOR);
4792 		yych = *++YYCURSOR;
4793 		if (yych == 'P') goto yy507;
4794 		if (yych == 'p') goto yy507;
4795 		goto yy44;
4796 yy439:
4797 		YYDEBUG(439, *YYCURSOR);
4798 		yych = *++YYCURSOR;
4799 		if (yybm[0+yych] & 16) {
4800 			goto yy43;
4801 		}
4802 		YYDEBUG(440, *YYCURSOR);
4803 		yyleng = YYCURSOR - SCNG(yy_text);
4804 #line 1263 "Zend/zend_language_scanner.l"
4805 		{
4806 	RETURN_TOKEN(T_PRINT);
4807 }
4808 #line 4809 "Zend/zend_language_scanner.c"
4809 yy441:
4810 		YYDEBUG(441, *YYCURSOR);
4811 		yych = *++YYCURSOR;
4812 		if (yych == 'T') goto yy508;
4813 		if (yych == 't') goto yy508;
4814 		goto yy44;
4815 yy442:
4816 		YYDEBUG(442, *YYCURSOR);
4817 		yych = *++YYCURSOR;
4818 		if (yych == 'C') goto yy509;
4819 		if (yych == 'c') goto yy509;
4820 		goto yy44;
4821 yy443:
4822 		YYDEBUG(443, *YYCURSOR);
4823 		yych = *++YYCURSOR;
4824 		if (yych == 'C') goto yy510;
4825 		if (yych == 'c') goto yy510;
4826 		goto yy44;
4827 yy444:
4828 		YYDEBUG(444, *YYCURSOR);
4829 		yych = *++YYCURSOR;
4830 		if (yych == 'R') goto yy512;
4831 		if (yych == 'r') goto yy512;
4832 		goto yy44;
4833 yy445:
4834 		YYDEBUG(445, *YYCURSOR);
4835 		yych = *++YYCURSOR;
4836 		if (yych == 'N') goto yy513;
4837 		if (yych == 'n') goto yy513;
4838 		goto yy44;
4839 yy446:
4840 		YYDEBUG(446, *YYCURSOR);
4841 		yych = *++YYCURSOR;
4842 		if (yych == 'C') goto yy515;
4843 		if (yych == 'c') goto yy515;
4844 		goto yy44;
4845 yy447:
4846 		YYDEBUG(447, *YYCURSOR);
4847 		yych = *++YYCURSOR;
4848 		if (yych == 'H') goto yy517;
4849 		if (yych == 'h') goto yy517;
4850 		goto yy44;
4851 yy448:
4852 		YYDEBUG(448, *YYCURSOR);
4853 		yych = *++YYCURSOR;
4854 		if (yybm[0+yych] & 16) {
4855 			goto yy43;
4856 		}
4857 		YYDEBUG(449, *YYCURSOR);
4858 		yyleng = YYCURSOR - SCNG(yy_text);
4859 #line 1167 "Zend/zend_language_scanner.l"
4860 		{
4861 	RETURN_TOKEN(T_THROW);
4862 }
4863 #line 4864 "Zend/zend_language_scanner.c"
4864 yy450:
4865 		YYDEBUG(450, *YYCURSOR);
4866 		yych = *++YYCURSOR;
4867 		if (yybm[0+yych] & 16) {
4868 			goto yy43;
4869 		}
4870 		YYDEBUG(451, *YYCURSOR);
4871 		yyleng = YYCURSOR - SCNG(yy_text);
4872 #line 1275 "Zend/zend_language_scanner.l"
4873 		{
4874 	RETURN_TOKEN(T_TRAIT);
4875 }
4876 #line 4877 "Zend/zend_language_scanner.c"
4877 yy452:
4878 		YYDEBUG(452, *YYCURSOR);
4879 		yych = *++YYCURSOR;
4880 		if (yybm[0+yych] & 16) {
4881 			goto yy43;
4882 		}
4883 		YYDEBUG(453, *YYCURSOR);
4884 		yyleng = YYCURSOR - SCNG(yy_text);
4885 #line 1441 "Zend/zend_language_scanner.l"
4886 		{
4887 	RETURN_TOKEN(T_UNSET);
4888 }
4889 #line 4890 "Zend/zend_language_scanner.c"
4890 yy454:
4891 		YYDEBUG(454, *YYCURSOR);
4892 		yych = *++YYCURSOR;
4893 		if (yybm[0+yych] & 16) {
4894 			goto yy43;
4895 		}
4896 		YYDEBUG(455, *YYCURSOR);
4897 		yyleng = YYCURSOR - SCNG(yy_text);
4898 #line 1187 "Zend/zend_language_scanner.l"
4899 		{
4900 	RETURN_TOKEN(T_WHILE);
4901 }
4902 #line 4903 "Zend/zend_language_scanner.c"
4903 yy456:
4904 		YYDEBUG(456, *YYCURSOR);
4905 		yyaccept = 6;
4906 		yych = *(YYMARKER = ++YYCURSOR);
4907 		if (yybm[0+yych] & 16) {
4908 			goto yy43;
4909 		}
4910 		if (yych <= '\f') {
4911 			if (yych <= 0x08) goto yy457;
4912 			if (yych <= '\n') goto yy519;
4913 		} else {
4914 			if (yych <= '\r') goto yy519;
4915 			if (yych == ' ') goto yy519;
4916 		}
4917 yy457:
4918 		YYDEBUG(457, *YYCURSOR);
4919 		yyleng = YYCURSOR - SCNG(yy_text);
4920 #line 1151 "Zend/zend_language_scanner.l"
4921 		{
4922 	RETURN_TOKEN(T_YIELD);
4923 }
4924 #line 4925 "Zend/zend_language_scanner.c"
4925 yy458:
4926 		YYDEBUG(458, *YYCURSOR);
4927 		yych = *++YYCURSOR;
4928 		if (yych == 'S') goto yy521;
4929 		if (yych == 's') goto yy521;
4930 		goto yy44;
4931 yy459:
4932 		YYDEBUG(459, *YYCURSOR);
4933 		yych = *++YYCURSOR;
4934 		if (yych == '_') goto yy522;
4935 		goto yy44;
4936 yy460:
4937 		YYDEBUG(460, *YYCURSOR);
4938 		yych = *++YYCURSOR;
4939 		if (yych == 'E') goto yy523;
4940 		if (yych == 'e') goto yy523;
4941 		goto yy44;
4942 yy461:
4943 		YYDEBUG(461, *YYCURSOR);
4944 		yych = *++YYCURSOR;
4945 		if (yych == 'C') goto yy524;
4946 		if (yych == 'c') goto yy524;
4947 		goto yy44;
4948 yy462:
4949 		YYDEBUG(462, *YYCURSOR);
4950 		yych = *++YYCURSOR;
4951 		if (yych == 'T') goto yy525;
4952 		if (yych == 't') goto yy525;
4953 		goto yy44;
4954 yy463:
4955 		YYDEBUG(463, *YYCURSOR);
4956 		yych = *++YYCURSOR;
4957 		if (yych == 'E') goto yy526;
4958 		if (yych == 'e') goto yy526;
4959 		goto yy44;
4960 yy464:
4961 		YYDEBUG(464, *YYCURSOR);
4962 		yych = *++YYCURSOR;
4963 		if (yych == 'H') goto yy527;
4964 		if (yych == 'h') goto yy527;
4965 		goto yy44;
4966 yy465:
4967 		YYDEBUG(465, *YYCURSOR);
4968 		yych = *++YYCURSOR;
4969 		if (yych == 'E') goto yy528;
4970 		if (yych == 'e') goto yy528;
4971 		goto yy44;
4972 yy466:
4973 		YYDEBUG(466, *YYCURSOR);
4974 		yych = *++YYCURSOR;
4975 		if (yych == 'I') goto yy529;
4976 		if (yych == 'i') goto yy529;
4977 		goto yy44;
4978 yy467:
4979 		YYDEBUG(467, *YYCURSOR);
4980 		++YYCURSOR;
4981 		YYFILL(1);
4982 		yych = *YYCURSOR;
4983 		YYDEBUG(468, *YYCURSOR);
4984 		if (yych <= 0x1F) {
4985 			if (yych == '\t') goto yy467;
4986 			goto yy82;
4987 		} else {
4988 			if (yych <= ' ') goto yy467;
4989 			if (yych == ')') goto yy530;
4990 			goto yy82;
4991 		}
4992 yy469:
4993 		YYDEBUG(469, *YYCURSOR);
4994 		yych = *++YYCURSOR;
4995 		if (yych == 'Y') goto yy532;
4996 		if (yych == 'y') goto yy532;
4997 		goto yy82;
4998 yy470:
4999 		YYDEBUG(470, *YYCURSOR);
5000 		++YYCURSOR;
5001 		YYFILL(1);
5002 		yych = *YYCURSOR;
5003 yy471:
5004 		YYDEBUG(471, *YYCURSOR);
5005 		if (yych <= 0x1F) {
5006 			if (yych == '\t') goto yy470;
5007 			goto yy82;
5008 		} else {
5009 			if (yych <= ' ') goto yy470;
5010 			if (yych != ')') goto yy82;
5011 		}
5012 		YYDEBUG(472, *YYCURSOR);
5013 		++YYCURSOR;
5014 		YYDEBUG(473, *YYCURSOR);
5015 		yyleng = YYCURSOR - SCNG(yy_text);
5016 #line 1361 "Zend/zend_language_scanner.l"
5017 		{
5018 	RETURN_TOKEN(T_BOOL_CAST);
5019 }
5020 #line 5021 "Zend/zend_language_scanner.c"
5021 yy474:
5022 		YYDEBUG(474, *YYCURSOR);
5023 		yych = *++YYCURSOR;
5024 		if (yych == 'A') goto yy534;
5025 		if (yych == 'a') goto yy534;
5026 		goto yy82;
5027 yy475:
5028 		YYDEBUG(475, *YYCURSOR);
5029 		yych = *++YYCURSOR;
5030 		if (yych == 'E') goto yy388;
5031 		if (yych == 'e') goto yy388;
5032 		goto yy82;
5033 yy476:
5034 		YYDEBUG(476, *YYCURSOR);
5035 		yych = *++YYCURSOR;
5036 		if (yych == 'E') goto yy535;
5037 		if (yych == 'e') goto yy535;
5038 		goto yy82;
5039 yy477:
5040 		YYDEBUG(477, *YYCURSOR);
5041 		yych = *++YYCURSOR;
5042 		if (yych == 'T') goto yy536;
5043 		if (yych == 't') goto yy536;
5044 		goto yy82;
5045 yy478:
5046 		YYDEBUG(478, *YYCURSOR);
5047 		++YYCURSOR;
5048 		YYDEBUG(479, *YYCURSOR);
5049 		yyleng = YYCURSOR - SCNG(yy_text);
5050 #line 1345 "Zend/zend_language_scanner.l"
5051 		{
5052 	RETURN_TOKEN(T_DOUBLE_CAST);
5053 }
5054 #line 5055 "Zend/zend_language_scanner.c"
5055 yy480:
5056 		YYDEBUG(480, *YYCURSOR);
5057 		yych = *++YYCURSOR;
5058 		if (yych == 'G') goto yy532;
5059 		if (yych == 'g') goto yy532;
5060 		goto yy82;
5061 yy481:
5062 		YYDEBUG(481, *YYCURSOR);
5063 		++YYCURSOR;
5064 		YYFILL(1);
5065 		yych = *YYCURSOR;
5066 		YYDEBUG(482, *YYCURSOR);
5067 		if (yych <= 0x1F) {
5068 			if (yych == '\t') goto yy481;
5069 			goto yy82;
5070 		} else {
5071 			if (yych <= ' ') goto yy481;
5072 			if (yych == ')') goto yy538;
5073 			goto yy82;
5074 		}
5075 yy483:
5076 		YYDEBUG(483, *YYCURSOR);
5077 		yych = *++YYCURSOR;
5078 		if (yych == '\n') goto yy396;
5079 		if (yych == '\r') goto yy398;
5080 		goto yy82;
5081 yy484:
5082 		YYDEBUG(484, *YYCURSOR);
5083 		yych = *++YYCURSOR;
5084 		if (yych == 'C') goto yy540;
5085 		if (yych == 'c') goto yy540;
5086 		goto yy44;
5087 yy485:
5088 		YYDEBUG(485, *YYCURSOR);
5089 		yych = *++YYCURSOR;
5090 		if (yych == 'L') goto yy541;
5091 		if (yych == 'l') goto yy541;
5092 		goto yy44;
5093 yy486:
5094 		YYDEBUG(486, *YYCURSOR);
5095 		yych = *++YYCURSOR;
5096 		if (yych == 'U') goto yy542;
5097 		if (yych == 'u') goto yy542;
5098 		goto yy44;
5099 yy487:
5100 		YYDEBUG(487, *YYCURSOR);
5101 		yych = *++YYCURSOR;
5102 		if (yych == 'E') goto yy543;
5103 		if (yych == 'e') goto yy543;
5104 		goto yy44;
5105 yy488:
5106 		YYDEBUG(488, *YYCURSOR);
5107 		yych = *++YYCURSOR;
5108 		if (yych == 'T') goto yy545;
5109 		if (yych == 't') goto yy545;
5110 		goto yy44;
5111 yy489:
5112 		YYDEBUG(489, *YYCURSOR);
5113 		yych = *++YYCURSOR;
5114 		if (yybm[0+yych] & 16) {
5115 			goto yy43;
5116 		}
5117 		YYDEBUG(490, *YYCURSOR);
5118 		yyleng = YYCURSOR - SCNG(yy_text);
5119 #line 1175 "Zend/zend_language_scanner.l"
5120 		{
5121 	RETURN_TOKEN(T_ELSEIF);
5122 }
5123 #line 5124 "Zend/zend_language_scanner.c"
5124 yy491:
5125 		YYDEBUG(491, *YYCURSOR);
5126 		yych = *++YYCURSOR;
5127 		if (yych == 'L') goto yy547;
5128 		if (yych == 'l') goto yy547;
5129 		goto yy44;
5130 yy492:
5131 		YYDEBUG(492, *YYCURSOR);
5132 		yych = *++YYCURSOR;
5133 		if (yych <= '^') {
5134 			if (yych <= '@') {
5135 				if (yych <= '/') goto yy493;
5136 				if (yych <= '9') goto yy43;
5137 			} else {
5138 				if (yych == 'E') goto yy548;
5139 				if (yych <= 'Z') goto yy43;
5140 			}
5141 		} else {
5142 			if (yych <= 'd') {
5143 				if (yych != '`') goto yy43;
5144 			} else {
5145 				if (yych <= 'e') goto yy548;
5146 				if (yych <= 'z') goto yy43;
5147 				if (yych >= 0x80) goto yy43;
5148 			}
5149 		}
5150 yy493:
5151 		YYDEBUG(493, *YYCURSOR);
5152 		yyleng = YYCURSOR - SCNG(yy_text);
5153 #line 1203 "Zend/zend_language_scanner.l"
5154 		{
5155 	RETURN_TOKEN(T_ENDFOR);
5156 }
5157 #line 5158 "Zend/zend_language_scanner.c"
5158 yy494:
5159 		YYDEBUG(494, *YYCURSOR);
5160 		yych = *++YYCURSOR;
5161 		if (yych == 'T') goto yy549;
5162 		if (yych == 't') goto yy549;
5163 		goto yy44;
5164 yy495:
5165 		YYDEBUG(495, *YYCURSOR);
5166 		yych = *++YYCURSOR;
5167 		if (yych == 'L') goto yy550;
5168 		if (yych == 'l') goto yy550;
5169 		goto yy44;
5170 yy496:
5171 		YYDEBUG(496, *YYCURSOR);
5172 		yych = *++YYCURSOR;
5173 		if (yych == 'S') goto yy551;
5174 		if (yych == 's') goto yy551;
5175 		goto yy44;
5176 yy497:
5177 		YYDEBUG(497, *YYCURSOR);
5178 		yych = *++YYCURSOR;
5179 		if (yych == 'Y') goto yy553;
5180 		if (yych == 'y') goto yy553;
5181 		goto yy44;
5182 yy498:
5183 		YYDEBUG(498, *YYCURSOR);
5184 		yych = *++YYCURSOR;
5185 		if (yych == 'H') goto yy555;
5186 		if (yych == 'h') goto yy555;
5187 		goto yy44;
5188 yy499:
5189 		YYDEBUG(499, *YYCURSOR);
5190 		yych = *++YYCURSOR;
5191 		if (yych == 'O') goto yy557;
5192 		if (yych == 'o') goto yy557;
5193 		goto yy44;
5194 yy500:
5195 		YYDEBUG(500, *YYCURSOR);
5196 		yych = *++YYCURSOR;
5197 		if (yybm[0+yych] & 16) {
5198 			goto yy43;
5199 		}
5200 		YYDEBUG(501, *YYCURSOR);
5201 		yyleng = YYCURSOR - SCNG(yy_text);
5202 #line 1401 "Zend/zend_language_scanner.l"
5203 		{
5204 	RETURN_TOKEN(T_GLOBAL);
5205 }
5206 #line 5207 "Zend/zend_language_scanner.c"
5207 yy502:
5208 		YYDEBUG(502, *YYCURSOR);
5209 		yych = *++YYCURSOR;
5210 		if (yych == 'E') goto yy558;
5211 		if (yych == 'e') goto yy558;
5212 		goto yy44;
5213 yy503:
5214 		YYDEBUG(503, *YYCURSOR);
5215 		yych = *++YYCURSOR;
5216 		if (yych == 'E') goto yy559;
5217 		if (yych == 'e') goto yy559;
5218 		goto yy44;
5219 yy504:
5220 		YYDEBUG(504, *YYCURSOR);
5221 		yych = *++YYCURSOR;
5222 		if (yych == 'C') goto yy561;
5223 		if (yych == 'c') goto yy561;
5224 		goto yy44;
5225 yy505:
5226 		YYDEBUG(505, *YYCURSOR);
5227 		yych = *++YYCURSOR;
5228 		if (yych == 'D') goto yy562;
5229 		if (yych == 'd') goto yy562;
5230 		goto yy44;
5231 yy506:
5232 		YYDEBUG(506, *YYCURSOR);
5233 		yych = *++YYCURSOR;
5234 		if (yych == 'A') goto yy563;
5235 		if (yych == 'a') goto yy563;
5236 		goto yy44;
5237 yy507:
5238 		YYDEBUG(507, *YYCURSOR);
5239 		yych = *++YYCURSOR;
5240 		if (yych == 'A') goto yy564;
5241 		if (yych == 'a') goto yy564;
5242 		goto yy44;
5243 yy508:
5244 		YYDEBUG(508, *YYCURSOR);
5245 		yych = *++YYCURSOR;
5246 		if (yych == 'E') goto yy565;
5247 		if (yych == 'e') goto yy565;
5248 		goto yy44;
5249 yy509:
5250 		YYDEBUG(509, *YYCURSOR);
5251 		yych = *++YYCURSOR;
5252 		if (yych == 'T') goto yy567;
5253 		if (yych == 't') goto yy567;
5254 		goto yy44;
5255 yy510:
5256 		YYDEBUG(510, *YYCURSOR);
5257 		yych = *++YYCURSOR;
5258 		if (yybm[0+yych] & 16) {
5259 			goto yy43;
5260 		}
5261 		YYDEBUG(511, *YYCURSOR);
5262 		yyleng = YYCURSOR - SCNG(yy_text);
5263 #line 1437 "Zend/zend_language_scanner.l"
5264 		{
5265 	RETURN_TOKEN(T_PUBLIC);
5266 }
5267 #line 5268 "Zend/zend_language_scanner.c"
5268 yy512:
5269 		YYDEBUG(512, *YYCURSOR);
5270 		yych = *++YYCURSOR;
5271 		if (yych == 'E') goto yy568;
5272 		if (yych == 'e') goto yy568;
5273 		goto yy44;
5274 yy513:
5275 		YYDEBUG(513, *YYCURSOR);
5276 		yych = *++YYCURSOR;
5277 		if (yybm[0+yych] & 16) {
5278 			goto yy43;
5279 		}
5280 		YYDEBUG(514, *YYCURSOR);
5281 		yyleng = YYCURSOR - SCNG(yy_text);
5282 #line 1141 "Zend/zend_language_scanner.l"
5283 		{
5284 	RETURN_TOKEN(T_RETURN);
5285 }
5286 #line 5287 "Zend/zend_language_scanner.c"
5287 yy515:
5288 		YYDEBUG(515, *YYCURSOR);
5289 		yych = *++YYCURSOR;
5290 		if (yybm[0+yych] & 16) {
5291 			goto yy43;
5292 		}
5293 		YYDEBUG(516, *YYCURSOR);
5294 		yyleng = YYCURSOR - SCNG(yy_text);
5295 #line 1417 "Zend/zend_language_scanner.l"
5296 		{
5297 	RETURN_TOKEN(T_STATIC);
5298 }
5299 #line 5300 "Zend/zend_language_scanner.c"
5300 yy517:
5301 		YYDEBUG(517, *YYCURSOR);
5302 		yych = *++YYCURSOR;
5303 		if (yybm[0+yych] & 16) {
5304 			goto yy43;
5305 		}
5306 		YYDEBUG(518, *YYCURSOR);
5307 		yyleng = YYCURSOR - SCNG(yy_text);
5308 #line 1231 "Zend/zend_language_scanner.l"
5309 		{
5310 	RETURN_TOKEN(T_SWITCH);
5311 }
5312 #line 5313 "Zend/zend_language_scanner.c"
5313 yy519:
5314 		YYDEBUG(519, *YYCURSOR);
5315 		++YYCURSOR;
5316 		YYFILL(5);
5317 		yych = *YYCURSOR;
5318 		YYDEBUG(520, *YYCURSOR);
5319 		if (yych <= 0x1F) {
5320 			if (yych <= '\n') {
5321 				if (yych <= 0x08) goto yy82;
5322 				goto yy519;
5323 			} else {
5324 				if (yych == '\r') goto yy519;
5325 				goto yy82;
5326 			}
5327 		} else {
5328 			if (yych <= 'F') {
5329 				if (yych <= ' ') goto yy519;
5330 				if (yych <= 'E') goto yy82;
5331 				goto yy570;
5332 			} else {
5333 				if (yych == 'f') goto yy570;
5334 				goto yy82;
5335 			}
5336 		}
5337 yy521:
5338 		YYDEBUG(521, *YYCURSOR);
5339 		yych = *++YYCURSOR;
5340 		if (yych == 'S') goto yy571;
5341 		if (yych == 's') goto yy571;
5342 		goto yy44;
5343 yy522:
5344 		YYDEBUG(522, *YYCURSOR);
5345 		yych = *++YYCURSOR;
5346 		if (yych == '_') goto yy572;
5347 		goto yy44;
5348 yy523:
5349 		YYDEBUG(523, *YYCURSOR);
5350 		yych = *++YYCURSOR;
5351 		if (yych == '_') goto yy574;
5352 		goto yy44;
5353 yy524:
5354 		YYDEBUG(524, *YYCURSOR);
5355 		yych = *++YYCURSOR;
5356 		if (yych == 'T') goto yy575;
5357 		if (yych == 't') goto yy575;
5358 		goto yy44;
5359 yy525:
5360 		YYDEBUG(525, *YYCURSOR);
5361 		yych = *++YYCURSOR;
5362 		if (yych == '_') goto yy576;
5363 		goto yy44;
5364 yy526:
5365 		YYDEBUG(526, *YYCURSOR);
5366 		yych = *++YYCURSOR;
5367 		if (yych == '_') goto yy577;
5368 		goto yy44;
5369 yy527:
5370 		YYDEBUG(527, *YYCURSOR);
5371 		yych = *++YYCURSOR;
5372 		if (yych == 'O') goto yy578;
5373 		if (yych == 'o') goto yy578;
5374 		goto yy44;
5375 yy528:
5376 		YYDEBUG(528, *YYCURSOR);
5377 		yych = *++YYCURSOR;
5378 		if (yych == 'S') goto yy579;
5379 		if (yych == 's') goto yy579;
5380 		goto yy44;
5381 yy529:
5382 		YYDEBUG(529, *YYCURSOR);
5383 		yych = *++YYCURSOR;
5384 		if (yych == 'T') goto yy580;
5385 		if (yych == 't') goto yy580;
5386 		goto yy44;
5387 yy530:
5388 		YYDEBUG(530, *YYCURSOR);
5389 		++YYCURSOR;
5390 		YYDEBUG(531, *YYCURSOR);
5391 		yyleng = YYCURSOR - SCNG(yy_text);
5392 #line 1353 "Zend/zend_language_scanner.l"
5393 		{
5394 	RETURN_TOKEN(T_ARRAY_CAST);
5395 }
5396 #line 5397 "Zend/zend_language_scanner.c"
5397 yy532:
5398 		YYDEBUG(532, *YYCURSOR);
5399 		++YYCURSOR;
5400 		YYFILL(1);
5401 		yych = *YYCURSOR;
5402 		YYDEBUG(533, *YYCURSOR);
5403 		if (yych <= 0x1F) {
5404 			if (yych == '\t') goto yy532;
5405 			goto yy82;
5406 		} else {
5407 			if (yych <= ' ') goto yy532;
5408 			if (yych == ')') goto yy581;
5409 			goto yy82;
5410 		}
5411 yy534:
5412 		YYDEBUG(534, *YYCURSOR);
5413 		yych = *++YYCURSOR;
5414 		if (yych == 'N') goto yy470;
5415 		if (yych == 'n') goto yy470;
5416 		goto yy82;
5417 yy535:
5418 		YYDEBUG(535, *YYCURSOR);
5419 		yych = *++YYCURSOR;
5420 		if (yych == 'R') goto yy382;
5421 		if (yych == 'r') goto yy382;
5422 		goto yy82;
5423 yy536:
5424 		YYDEBUG(536, *YYCURSOR);
5425 		++YYCURSOR;
5426 		YYFILL(1);
5427 		yych = *YYCURSOR;
5428 		YYDEBUG(537, *YYCURSOR);
5429 		if (yych <= 0x1F) {
5430 			if (yych == '\t') goto yy536;
5431 			goto yy82;
5432 		} else {
5433 			if (yych <= ' ') goto yy536;
5434 			if (yych == ')') goto yy583;
5435 			goto yy82;
5436 		}
5437 yy538:
5438 		YYDEBUG(538, *YYCURSOR);
5439 		++YYCURSOR;
5440 		YYDEBUG(539, *YYCURSOR);
5441 		yyleng = YYCURSOR - SCNG(yy_text);
5442 #line 1365 "Zend/zend_language_scanner.l"
5443 		{
5444 	RETURN_TOKEN(T_UNSET_CAST);
5445 }
5446 #line 5447 "Zend/zend_language_scanner.c"
5447 yy540:
5448 		YYDEBUG(540, *YYCURSOR);
5449 		yych = *++YYCURSOR;
5450 		if (yych == 'T') goto yy585;
5451 		if (yych == 't') goto yy585;
5452 		goto yy44;
5453 yy541:
5454 		YYDEBUG(541, *YYCURSOR);
5455 		yych = *++YYCURSOR;
5456 		if (yych == 'E') goto yy587;
5457 		if (yych == 'e') goto yy587;
5458 		goto yy44;
5459 yy542:
5460 		YYDEBUG(542, *YYCURSOR);
5461 		yych = *++YYCURSOR;
5462 		if (yych == 'E') goto yy589;
5463 		if (yych == 'e') goto yy589;
5464 		goto yy44;
5465 yy543:
5466 		YYDEBUG(543, *YYCURSOR);
5467 		yych = *++YYCURSOR;
5468 		if (yybm[0+yych] & 16) {
5469 			goto yy43;
5470 		}
5471 		YYDEBUG(544, *YYCURSOR);
5472 		yyleng = YYCURSOR - SCNG(yy_text);
5473 #line 1215 "Zend/zend_language_scanner.l"
5474 		{
5475 	RETURN_TOKEN(T_DECLARE);
5476 }
5477 #line 5478 "Zend/zend_language_scanner.c"
5478 yy545:
5479 		YYDEBUG(545, *YYCURSOR);
5480 		yych = *++YYCURSOR;
5481 		if (yybm[0+yych] & 16) {
5482 			goto yy43;
5483 		}
5484 		YYDEBUG(546, *YYCURSOR);
5485 		yyleng = YYCURSOR - SCNG(yy_text);
5486 #line 1243 "Zend/zend_language_scanner.l"
5487 		{
5488 	RETURN_TOKEN(T_DEFAULT);
5489 }
5490 #line 5491 "Zend/zend_language_scanner.c"
5491 yy547:
5492 		YYDEBUG(547, *YYCURSOR);
5493 		yych = *++YYCURSOR;
5494 		if (yych == 'A') goto yy591;
5495 		if (yych == 'a') goto yy591;
5496 		goto yy44;
5497 yy548:
5498 		YYDEBUG(548, *YYCURSOR);
5499 		yych = *++YYCURSOR;
5500 		if (yych == 'A') goto yy592;
5501 		if (yych == 'a') goto yy592;
5502 		goto yy44;
5503 yy549:
5504 		YYDEBUG(549, *YYCURSOR);
5505 		yych = *++YYCURSOR;
5506 		if (yych == 'C') goto yy593;
5507 		if (yych == 'c') goto yy593;
5508 		goto yy44;
5509 yy550:
5510 		YYDEBUG(550, *YYCURSOR);
5511 		yych = *++YYCURSOR;
5512 		if (yych == 'E') goto yy594;
5513 		if (yych == 'e') goto yy594;
5514 		goto yy44;
5515 yy551:
5516 		YYDEBUG(551, *YYCURSOR);
5517 		yych = *++YYCURSOR;
5518 		if (yybm[0+yych] & 16) {
5519 			goto yy43;
5520 		}
5521 		YYDEBUG(552, *YYCURSOR);
5522 		yyleng = YYCURSOR - SCNG(yy_text);
5523 #line 1279 "Zend/zend_language_scanner.l"
5524 		{
5525 	RETURN_TOKEN(T_EXTENDS);
5526 }
5527 #line 5528 "Zend/zend_language_scanner.c"
5528 yy553:
5529 		YYDEBUG(553, *YYCURSOR);
5530 		yych = *++YYCURSOR;
5531 		if (yybm[0+yych] & 16) {
5532 			goto yy43;
5533 		}
5534 		YYDEBUG(554, *YYCURSOR);
5535 		yyleng = YYCURSOR - SCNG(yy_text);
5536 #line 1163 "Zend/zend_language_scanner.l"
5537 		{
5538 	RETURN_TOKEN(T_FINALLY);
5539 }
5540 #line 5541 "Zend/zend_language_scanner.c"
5541 yy555:
5542 		YYDEBUG(555, *YYCURSOR);
5543 		yych = *++YYCURSOR;
5544 		if (yybm[0+yych] & 16) {
5545 			goto yy43;
5546 		}
5547 		YYDEBUG(556, *YYCURSOR);
5548 		yyleng = YYCURSOR - SCNG(yy_text);
5549 #line 1207 "Zend/zend_language_scanner.l"
5550 		{
5551 	RETURN_TOKEN(T_FOREACH);
5552 }
5553 #line 5554 "Zend/zend_language_scanner.c"
5554 yy557:
5555 		YYDEBUG(557, *YYCURSOR);
5556 		yych = *++YYCURSOR;
5557 		if (yych == 'N') goto yy596;
5558 		if (yych == 'n') goto yy596;
5559 		goto yy44;
5560 yy558:
5561 		YYDEBUG(558, *YYCURSOR);
5562 		yych = *++YYCURSOR;
5563 		if (yych == 'N') goto yy598;
5564 		if (yych == 'n') goto yy598;
5565 		goto yy44;
5566 yy559:
5567 		YYDEBUG(559, *YYCURSOR);
5568 		yych = *++YYCURSOR;
5569 		if (yych <= '^') {
5570 			if (yych <= '9') {
5571 				if (yych >= '0') goto yy43;
5572 			} else {
5573 				if (yych <= '@') goto yy560;
5574 				if (yych <= 'Z') goto yy43;
5575 			}
5576 		} else {
5577 			if (yych <= '`') {
5578 				if (yych <= '_') goto yy599;
5579 			} else {
5580 				if (yych <= 'z') goto yy43;
5581 				if (yych >= 0x80) goto yy43;
5582 			}
5583 		}
5584 yy560:
5585 		YYDEBUG(560, *YYCURSOR);
5586 		yyleng = YYCURSOR - SCNG(yy_text);
5587 #line 1373 "Zend/zend_language_scanner.l"
5588 		{
5589 	RETURN_TOKEN(T_INCLUDE);
5590 }
5591 #line 5592 "Zend/zend_language_scanner.c"
5592 yy561:
5593 		YYDEBUG(561, *YYCURSOR);
5594 		yych = *++YYCURSOR;
5595 		if (yych == 'E') goto yy600;
5596 		if (yych == 'e') goto yy600;
5597 		goto yy44;
5598 yy562:
5599 		YYDEBUG(562, *YYCURSOR);
5600 		yych = *++YYCURSOR;
5601 		if (yych == 'O') goto yy601;
5602 		if (yych == 'o') goto yy601;
5603 		goto yy44;
5604 yy563:
5605 		YYDEBUG(563, *YYCURSOR);
5606 		yych = *++YYCURSOR;
5607 		if (yych == 'C') goto yy602;
5608 		if (yych == 'c') goto yy602;
5609 		goto yy44;
5610 yy564:
5611 		YYDEBUG(564, *YYCURSOR);
5612 		yych = *++YYCURSOR;
5613 		if (yych == 'C') goto yy603;
5614 		if (yych == 'c') goto yy603;
5615 		goto yy44;
5616 yy565:
5617 		YYDEBUG(565, *YYCURSOR);
5618 		yych = *++YYCURSOR;
5619 		if (yybm[0+yych] & 16) {
5620 			goto yy43;
5621 		}
5622 		YYDEBUG(566, *YYCURSOR);
5623 		yyleng = YYCURSOR - SCNG(yy_text);
5624 #line 1429 "Zend/zend_language_scanner.l"
5625 		{
5626 	RETURN_TOKEN(T_PRIVATE);
5627 }
5628 #line 5629 "Zend/zend_language_scanner.c"
5629 yy567:
5630 		YYDEBUG(567, *YYCURSOR);
5631 		yych = *++YYCURSOR;
5632 		if (yych == 'E') goto yy604;
5633 		if (yych == 'e') goto yy604;
5634 		goto yy44;
5635 yy568:
5636 		YYDEBUG(568, *YYCURSOR);
5637 		yych = *++YYCURSOR;
5638 		if (yych <= '^') {
5639 			if (yych <= '9') {
5640 				if (yych >= '0') goto yy43;
5641 			} else {
5642 				if (yych <= '@') goto yy569;
5643 				if (yych <= 'Z') goto yy43;
5644 			}
5645 		} else {
5646 			if (yych <= '`') {
5647 				if (yych <= '_') goto yy605;
5648 			} else {
5649 				if (yych <= 'z') goto yy43;
5650 				if (yych >= 0x80) goto yy43;
5651 			}
5652 		}
5653 yy569:
5654 		YYDEBUG(569, *YYCURSOR);
5655 		yyleng = YYCURSOR - SCNG(yy_text);
5656 #line 1381 "Zend/zend_language_scanner.l"
5657 		{
5658 	RETURN_TOKEN(T_REQUIRE);
5659 }
5660 #line 5661 "Zend/zend_language_scanner.c"
5661 yy570:
5662 		YYDEBUG(570, *YYCURSOR);
5663 		yych = *++YYCURSOR;
5664 		if (yych == 'R') goto yy606;
5665 		if (yych == 'r') goto yy606;
5666 		goto yy82;
5667 yy571:
5668 		YYDEBUG(571, *YYCURSOR);
5669 		yych = *++YYCURSOR;
5670 		if (yych == '_') goto yy607;
5671 		goto yy44;
5672 yy572:
5673 		YYDEBUG(572, *YYCURSOR);
5674 		yych = *++YYCURSOR;
5675 		if (yybm[0+yych] & 16) {
5676 			goto yy43;
5677 		}
5678 		YYDEBUG(573, *YYCURSOR);
5679 		yyleng = YYCURSOR - SCNG(yy_text);
5680 #line 1773 "Zend/zend_language_scanner.l"
5681 		{
5682 	RETURN_TOKEN(T_DIR);
5683 }
5684 #line 5685 "Zend/zend_language_scanner.c"
5685 yy574:
5686 		YYDEBUG(574, *YYCURSOR);
5687 		yych = *++YYCURSOR;
5688 		if (yych == '_') goto yy608;
5689 		goto yy44;
5690 yy575:
5691 		YYDEBUG(575, *YYCURSOR);
5692 		yych = *++YYCURSOR;
5693 		if (yych == 'I') goto yy610;
5694 		if (yych == 'i') goto yy610;
5695 		goto yy44;
5696 yy576:
5697 		YYDEBUG(576, *YYCURSOR);
5698 		yych = *++YYCURSOR;
5699 		if (yych == 'C') goto yy611;
5700 		if (yych == 'c') goto yy611;
5701 		goto yy44;
5702 yy577:
5703 		YYDEBUG(577, *YYCURSOR);
5704 		yych = *++YYCURSOR;
5705 		if (yych == '_') goto yy612;
5706 		goto yy44;
5707 yy578:
5708 		YYDEBUG(578, *YYCURSOR);
5709 		yych = *++YYCURSOR;
5710 		if (yych == 'D') goto yy614;
5711 		if (yych == 'd') goto yy614;
5712 		goto yy44;
5713 yy579:
5714 		YYDEBUG(579, *YYCURSOR);
5715 		yych = *++YYCURSOR;
5716 		if (yych == 'P') goto yy615;
5717 		if (yych == 'p') goto yy615;
5718 		goto yy44;
5719 yy580:
5720 		YYDEBUG(580, *YYCURSOR);
5721 		yych = *++YYCURSOR;
5722 		if (yych == '_') goto yy616;
5723 		goto yy44;
5724 yy581:
5725 		YYDEBUG(581, *YYCURSOR);
5726 		++YYCURSOR;
5727 		YYDEBUG(582, *YYCURSOR);
5728 		yyleng = YYCURSOR - SCNG(yy_text);
5729 #line 1349 "Zend/zend_language_scanner.l"
5730 		{
5731 	RETURN_TOKEN(T_STRING_CAST);
5732 }
5733 #line 5734 "Zend/zend_language_scanner.c"
5734 yy583:
5735 		YYDEBUG(583, *YYCURSOR);
5736 		++YYCURSOR;
5737 		YYDEBUG(584, *YYCURSOR);
5738 		yyleng = YYCURSOR - SCNG(yy_text);
5739 #line 1357 "Zend/zend_language_scanner.l"
5740 		{
5741 	RETURN_TOKEN(T_OBJECT_CAST);
5742 }
5743 #line 5744 "Zend/zend_language_scanner.c"
5744 yy585:
5745 		YYDEBUG(585, *YYCURSOR);
5746 		yych = *++YYCURSOR;
5747 		if (yybm[0+yych] & 16) {
5748 			goto yy43;
5749 		}
5750 		YYDEBUG(586, *YYCURSOR);
5751 		yyleng = YYCURSOR - SCNG(yy_text);
5752 #line 1421 "Zend/zend_language_scanner.l"
5753 		{
5754 	RETURN_TOKEN(T_ABSTRACT);
5755 }
5756 #line 5757 "Zend/zend_language_scanner.c"
5757 yy587:
5758 		YYDEBUG(587, *YYCURSOR);
5759 		yych = *++YYCURSOR;
5760 		if (yybm[0+yych] & 16) {
5761 			goto yy43;
5762 		}
5763 		YYDEBUG(588, *YYCURSOR);
5764 		yyleng = YYCURSOR - SCNG(yy_text);
5765 #line 1457 "Zend/zend_language_scanner.l"
5766 		{
5767 	RETURN_TOKEN(T_CALLABLE);
5768 }
5769 #line 5770 "Zend/zend_language_scanner.c"
5770 yy589:
5771 		YYDEBUG(589, *YYCURSOR);
5772 		yych = *++YYCURSOR;
5773 		if (yybm[0+yych] & 16) {
5774 			goto yy43;
5775 		}
5776 		YYDEBUG(590, *YYCURSOR);
5777 		yyleng = YYCURSOR - SCNG(yy_text);
5778 #line 1251 "Zend/zend_language_scanner.l"
5779 		{
5780 	RETURN_TOKEN(T_CONTINUE);
5781 }
5782 #line 5783 "Zend/zend_language_scanner.c"
5783 yy591:
5784 		YYDEBUG(591, *YYCURSOR);
5785 		yych = *++YYCURSOR;
5786 		if (yych == 'R') goto yy617;
5787 		if (yych == 'r') goto yy617;
5788 		goto yy44;
5789 yy592:
5790 		YYDEBUG(592, *YYCURSOR);
5791 		yych = *++YYCURSOR;
5792 		if (yych == 'C') goto yy618;
5793 		if (yych == 'c') goto yy618;
5794 		goto yy44;
5795 yy593:
5796 		YYDEBUG(593, *YYCURSOR);
5797 		yych = *++YYCURSOR;
5798 		if (yych == 'H') goto yy619;
5799 		if (yych == 'h') goto yy619;
5800 		goto yy44;
5801 yy594:
5802 		YYDEBUG(594, *YYCURSOR);
5803 		yych = *++YYCURSOR;
5804 		if (yybm[0+yych] & 16) {
5805 			goto yy43;
5806 		}
5807 		YYDEBUG(595, *YYCURSOR);
5808 		yyleng = YYCURSOR - SCNG(yy_text);
5809 #line 1191 "Zend/zend_language_scanner.l"
5810 		{
5811 	RETURN_TOKEN(T_ENDWHILE);
5812 }
5813 #line 5814 "Zend/zend_language_scanner.c"
5814 yy596:
5815 		YYDEBUG(596, *YYCURSOR);
5816 		yych = *++YYCURSOR;
5817 		if (yybm[0+yych] & 16) {
5818 			goto yy43;
5819 		}
5820 		YYDEBUG(597, *YYCURSOR);
5821 		yyleng = YYCURSOR - SCNG(yy_text);
5822 #line 1133 "Zend/zend_language_scanner.l"
5823 		{
5824 	RETURN_TOKEN(T_FUNCTION);
5825 }
5826 #line 5827 "Zend/zend_language_scanner.c"
5827 yy598:
5828 		YYDEBUG(598, *YYCURSOR);
5829 		yych = *++YYCURSOR;
5830 		if (yych == 'T') goto yy621;
5831 		if (yych == 't') goto yy621;
5832 		goto yy44;
5833 yy599:
5834 		YYDEBUG(599, *YYCURSOR);
5835 		yych = *++YYCURSOR;
5836 		if (yych == 'O') goto yy622;
5837 		if (yych == 'o') goto yy622;
5838 		goto yy44;
5839 yy600:
5840 		YYDEBUG(600, *YYCURSOR);
5841 		yych = *++YYCURSOR;
5842 		if (yych == 'O') goto yy623;
5843 		if (yych == 'o') goto yy623;
5844 		goto yy44;
5845 yy601:
5846 		YYDEBUG(601, *YYCURSOR);
5847 		yych = *++YYCURSOR;
5848 		if (yych == 'F') goto yy624;
5849 		if (yych == 'f') goto yy624;
5850 		goto yy44;
5851 yy602:
5852 		YYDEBUG(602, *YYCURSOR);
5853 		yych = *++YYCURSOR;
5854 		if (yych == 'E') goto yy626;
5855 		if (yych == 'e') goto yy626;
5856 		goto yy44;
5857 yy603:
5858 		YYDEBUG(603, *YYCURSOR);
5859 		yych = *++YYCURSOR;
5860 		if (yych == 'E') goto yy628;
5861 		if (yych == 'e') goto yy628;
5862 		goto yy44;
5863 yy604:
5864 		YYDEBUG(604, *YYCURSOR);
5865 		yych = *++YYCURSOR;
5866 		if (yych == 'D') goto yy630;
5867 		if (yych == 'd') goto yy630;
5868 		goto yy44;
5869 yy605:
5870 		YYDEBUG(605, *YYCURSOR);
5871 		yych = *++YYCURSOR;
5872 		if (yych == 'O') goto yy632;
5873 		if (yych == 'o') goto yy632;
5874 		goto yy44;
5875 yy606:
5876 		YYDEBUG(606, *YYCURSOR);
5877 		yych = *++YYCURSOR;
5878 		if (yych == 'O') goto yy633;
5879 		if (yych == 'o') goto yy633;
5880 		goto yy82;
5881 yy607:
5882 		YYDEBUG(607, *YYCURSOR);
5883 		yych = *++YYCURSOR;
5884 		if (yych == '_') goto yy634;
5885 		goto yy44;
5886 yy608:
5887 		YYDEBUG(608, *YYCURSOR);
5888 		yych = *++YYCURSOR;
5889 		if (yybm[0+yych] & 16) {
5890 			goto yy43;
5891 		}
5892 		YYDEBUG(609, *YYCURSOR);
5893 		yyleng = YYCURSOR - SCNG(yy_text);
5894 #line 1769 "Zend/zend_language_scanner.l"
5895 		{
5896 	RETURN_TOKEN(T_FILE);
5897 }
5898 #line 5899 "Zend/zend_language_scanner.c"
5899 yy610:
5900 		YYDEBUG(610, *YYCURSOR);
5901 		yych = *++YYCURSOR;
5902 		if (yych == 'O') goto yy636;
5903 		if (yych == 'o') goto yy636;
5904 		goto yy44;
5905 yy611:
5906 		YYDEBUG(611, *YYCURSOR);
5907 		yych = *++YYCURSOR;
5908 		if (yych == 'O') goto yy637;
5909 		if (yych == 'o') goto yy637;
5910 		goto yy44;
5911 yy612:
5912 		YYDEBUG(612, *YYCURSOR);
5913 		yych = *++YYCURSOR;
5914 		if (yybm[0+yych] & 16) {
5915 			goto yy43;
5916 		}
5917 		YYDEBUG(613, *YYCURSOR);
5918 		yyleng = YYCURSOR - SCNG(yy_text);
5919 #line 1765 "Zend/zend_language_scanner.l"
5920 		{
5921 	RETURN_TOKEN(T_LINE);
5922 }
5923 #line 5924 "Zend/zend_language_scanner.c"
5924 yy614:
5925 		YYDEBUG(614, *YYCURSOR);
5926 		yych = *++YYCURSOR;
5927 		if (yych == '_') goto yy638;
5928 		goto yy44;
5929 yy615:
5930 		YYDEBUG(615, *YYCURSOR);
5931 		yych = *++YYCURSOR;
5932 		if (yych == 'A') goto yy639;
5933 		if (yych == 'a') goto yy639;
5934 		goto yy44;
5935 yy616:
5936 		YYDEBUG(616, *YYCURSOR);
5937 		yych = *++YYCURSOR;
5938 		if (yych == '_') goto yy640;
5939 		goto yy44;
5940 yy617:
5941 		YYDEBUG(617, *YYCURSOR);
5942 		yych = *++YYCURSOR;
5943 		if (yych == 'E') goto yy642;
5944 		if (yych == 'e') goto yy642;
5945 		goto yy44;
5946 yy618:
5947 		YYDEBUG(618, *YYCURSOR);
5948 		yych = *++YYCURSOR;
5949 		if (yych == 'H') goto yy644;
5950 		if (yych == 'h') goto yy644;
5951 		goto yy44;
5952 yy619:
5953 		YYDEBUG(619, *YYCURSOR);
5954 		yych = *++YYCURSOR;
5955 		if (yybm[0+yych] & 16) {
5956 			goto yy43;
5957 		}
5958 		YYDEBUG(620, *YYCURSOR);
5959 		yyleng = YYCURSOR - SCNG(yy_text);
5960 #line 1235 "Zend/zend_language_scanner.l"
5961 		{
5962 	RETURN_TOKEN(T_ENDSWITCH);
5963 }
5964 #line 5965 "Zend/zend_language_scanner.c"
5965 yy621:
5966 		YYDEBUG(621, *YYCURSOR);
5967 		yych = *++YYCURSOR;
5968 		if (yych == 'S') goto yy646;
5969 		if (yych == 's') goto yy646;
5970 		goto yy44;
5971 yy622:
5972 		YYDEBUG(622, *YYCURSOR);
5973 		yych = *++YYCURSOR;
5974 		if (yych == 'N') goto yy648;
5975 		if (yych == 'n') goto yy648;
5976 		goto yy44;
5977 yy623:
5978 		YYDEBUG(623, *YYCURSOR);
5979 		yych = *++YYCURSOR;
5980 		if (yych == 'F') goto yy649;
5981 		if (yych == 'f') goto yy649;
5982 		goto yy44;
5983 yy624:
5984 		YYDEBUG(624, *YYCURSOR);
5985 		yych = *++YYCURSOR;
5986 		if (yybm[0+yych] & 16) {
5987 			goto yy43;
5988 		}
5989 		YYDEBUG(625, *YYCURSOR);
5990 		yyleng = YYCURSOR - SCNG(yy_text);
5991 #line 1397 "Zend/zend_language_scanner.l"
5992 		{
5993     RETURN_TOKEN(T_INSTEADOF);
5994 }
5995 #line 5996 "Zend/zend_language_scanner.c"
5996 yy626:
5997 		YYDEBUG(626, *YYCURSOR);
5998 		yych = *++YYCURSOR;
5999 		if (yybm[0+yych] & 16) {
6000 			goto yy43;
6001 		}
6002 		YYDEBUG(627, *YYCURSOR);
6003 		yyleng = YYCURSOR - SCNG(yy_text);
6004 #line 1271 "Zend/zend_language_scanner.l"
6005 		{
6006 	RETURN_TOKEN(T_INTERFACE);
6007 }
6008 #line 6009 "Zend/zend_language_scanner.c"
6009 yy628:
6010 		YYDEBUG(628, *YYCURSOR);
6011 		yych = *++YYCURSOR;
6012 		if (yybm[0+yych] & 16) {
6013 			goto yy43;
6014 		}
6015 		YYDEBUG(629, *YYCURSOR);
6016 		yyleng = YYCURSOR - SCNG(yy_text);
6017 #line 1389 "Zend/zend_language_scanner.l"
6018 		{
6019 	RETURN_TOKEN(T_NAMESPACE);
6020 }
6021 #line 6022 "Zend/zend_language_scanner.c"
6022 yy630:
6023 		YYDEBUG(630, *YYCURSOR);
6024 		yych = *++YYCURSOR;
6025 		if (yybm[0+yych] & 16) {
6026 			goto yy43;
6027 		}
6028 		YYDEBUG(631, *YYCURSOR);
6029 		yyleng = YYCURSOR - SCNG(yy_text);
6030 #line 1433 "Zend/zend_language_scanner.l"
6031 		{
6032 	RETURN_TOKEN(T_PROTECTED);
6033 }
6034 #line 6035 "Zend/zend_language_scanner.c"
6035 yy632:
6036 		YYDEBUG(632, *YYCURSOR);
6037 		yych = *++YYCURSOR;
6038 		if (yych == 'N') goto yy651;
6039 		if (yych == 'n') goto yy651;
6040 		goto yy44;
6041 yy633:
6042 		YYDEBUG(633, *YYCURSOR);
6043 		yych = *++YYCURSOR;
6044 		if (yych == 'M') goto yy652;
6045 		if (yych == 'm') goto yy652;
6046 		goto yy82;
6047 yy634:
6048 		YYDEBUG(634, *YYCURSOR);
6049 		yych = *++YYCURSOR;
6050 		if (yybm[0+yych] & 16) {
6051 			goto yy43;
6052 		}
6053 		YYDEBUG(635, *YYCURSOR);
6054 		yyleng = YYCURSOR - SCNG(yy_text);
6055 #line 1749 "Zend/zend_language_scanner.l"
6056 		{
6057 	RETURN_TOKEN(T_CLASS_C);
6058 }
6059 #line 6060 "Zend/zend_language_scanner.c"
6060 yy636:
6061 		YYDEBUG(636, *YYCURSOR);
6062 		yych = *++YYCURSOR;
6063 		if (yych == 'N') goto yy653;
6064 		if (yych == 'n') goto yy653;
6065 		goto yy44;
6066 yy637:
6067 		YYDEBUG(637, *YYCURSOR);
6068 		yych = *++YYCURSOR;
6069 		if (yych == 'M') goto yy654;
6070 		if (yych == 'm') goto yy654;
6071 		goto yy44;
6072 yy638:
6073 		YYDEBUG(638, *YYCURSOR);
6074 		yych = *++YYCURSOR;
6075 		if (yych == '_') goto yy655;
6076 		goto yy44;
6077 yy639:
6078 		YYDEBUG(639, *YYCURSOR);
6079 		yych = *++YYCURSOR;
6080 		if (yych == 'C') goto yy657;
6081 		if (yych == 'c') goto yy657;
6082 		goto yy44;
6083 yy640:
6084 		YYDEBUG(640, *YYCURSOR);
6085 		yych = *++YYCURSOR;
6086 		if (yybm[0+yych] & 16) {
6087 			goto yy43;
6088 		}
6089 		YYDEBUG(641, *YYCURSOR);
6090 		yyleng = YYCURSOR - SCNG(yy_text);
6091 #line 1753 "Zend/zend_language_scanner.l"
6092 		{
6093 	RETURN_TOKEN(T_TRAIT_C);
6094 }
6095 #line 6096 "Zend/zend_language_scanner.c"
6096 yy642:
6097 		YYDEBUG(642, *YYCURSOR);
6098 		yych = *++YYCURSOR;
6099 		if (yybm[0+yych] & 16) {
6100 			goto yy43;
6101 		}
6102 		YYDEBUG(643, *YYCURSOR);
6103 		yyleng = YYCURSOR - SCNG(yy_text);
6104 #line 1219 "Zend/zend_language_scanner.l"
6105 		{
6106 	RETURN_TOKEN(T_ENDDECLARE);
6107 }
6108 #line 6109 "Zend/zend_language_scanner.c"
6109 yy644:
6110 		YYDEBUG(644, *YYCURSOR);
6111 		yych = *++YYCURSOR;
6112 		if (yybm[0+yych] & 16) {
6113 			goto yy43;
6114 		}
6115 		YYDEBUG(645, *YYCURSOR);
6116 		yyleng = YYCURSOR - SCNG(yy_text);
6117 #line 1211 "Zend/zend_language_scanner.l"
6118 		{
6119 	RETURN_TOKEN(T_ENDFOREACH);
6120 }
6121 #line 6122 "Zend/zend_language_scanner.c"
6122 yy646:
6123 		YYDEBUG(646, *YYCURSOR);
6124 		yych = *++YYCURSOR;
6125 		if (yybm[0+yych] & 16) {
6126 			goto yy43;
6127 		}
6128 		YYDEBUG(647, *YYCURSOR);
6129 		yyleng = YYCURSOR - SCNG(yy_text);
6130 #line 1283 "Zend/zend_language_scanner.l"
6131 		{
6132 	RETURN_TOKEN(T_IMPLEMENTS);
6133 }
6134 #line 6135 "Zend/zend_language_scanner.c"
6135 yy648:
6136 		YYDEBUG(648, *YYCURSOR);
6137 		yych = *++YYCURSOR;
6138 		if (yych == 'C') goto yy658;
6139 		if (yych == 'c') goto yy658;
6140 		goto yy44;
6141 yy649:
6142 		YYDEBUG(649, *YYCURSOR);
6143 		yych = *++YYCURSOR;
6144 		if (yybm[0+yych] & 16) {
6145 			goto yy43;
6146 		}
6147 		YYDEBUG(650, *YYCURSOR);
6148 		yyleng = YYCURSOR - SCNG(yy_text);
6149 #line 1223 "Zend/zend_language_scanner.l"
6150 		{
6151 	RETURN_TOKEN(T_INSTANCEOF);
6152 }
6153 #line 6154 "Zend/zend_language_scanner.c"
6154 yy651:
6155 		YYDEBUG(651, *YYCURSOR);
6156 		yych = *++YYCURSOR;
6157 		if (yych == 'C') goto yy659;
6158 		if (yych == 'c') goto yy659;
6159 		goto yy44;
6160 yy652:
6161 		YYDEBUG(652, *YYCURSOR);
6162 		yych = *++YYCURSOR;
6163 		if (yych <= '^') {
6164 			if (yych <= '9') {
6165 				if (yych <= '/') goto yy660;
6166 				goto yy82;
6167 			} else {
6168 				if (yych <= '@') goto yy660;
6169 				if (yych <= 'Z') goto yy82;
6170 				goto yy660;
6171 			}
6172 		} else {
6173 			if (yych <= '`') {
6174 				if (yych <= '_') goto yy82;
6175 				goto yy660;
6176 			} else {
6177 				if (yych <= 'z') goto yy82;
6178 				if (yych <= 0x7F) goto yy660;
6179 				goto yy82;
6180 			}
6181 		}
6182 yy653:
6183 		YYDEBUG(653, *YYCURSOR);
6184 		yych = *++YYCURSOR;
6185 		if (yych == '_') goto yy662;
6186 		goto yy44;
6187 yy654:
6188 		YYDEBUG(654, *YYCURSOR);
6189 		yych = *++YYCURSOR;
6190 		if (yych == 'P') goto yy663;
6191 		if (yych == 'p') goto yy663;
6192 		goto yy44;
6193 yy655:
6194 		YYDEBUG(655, *YYCURSOR);
6195 		yych = *++YYCURSOR;
6196 		if (yybm[0+yych] & 16) {
6197 			goto yy43;
6198 		}
6199 		YYDEBUG(656, *YYCURSOR);
6200 		yyleng = YYCURSOR - SCNG(yy_text);
6201 #line 1761 "Zend/zend_language_scanner.l"
6202 		{
6203 	RETURN_TOKEN(T_METHOD_C);
6204 }
6205 #line 6206 "Zend/zend_language_scanner.c"
6206 yy657:
6207 		YYDEBUG(657, *YYCURSOR);
6208 		yych = *++YYCURSOR;
6209 		if (yych == 'E') goto yy664;
6210 		if (yych == 'e') goto yy664;
6211 		goto yy44;
6212 yy658:
6213 		YYDEBUG(658, *YYCURSOR);
6214 		yych = *++YYCURSOR;
6215 		if (yych == 'E') goto yy665;
6216 		if (yych == 'e') goto yy665;
6217 		goto yy44;
6218 yy659:
6219 		YYDEBUG(659, *YYCURSOR);
6220 		yych = *++YYCURSOR;
6221 		if (yych == 'E') goto yy667;
6222 		if (yych == 'e') goto yy667;
6223 		goto yy44;
6224 yy660:
6225 		YYDEBUG(660, *YYCURSOR);
6226 		++YYCURSOR;
6227 		YYDEBUG(661, *YYCURSOR);
6228 		yyleng = YYCURSOR - SCNG(yy_text);
6229 #line 1145 "Zend/zend_language_scanner.l"
6230 		{
6231 	yyless(yyleng - 1);
6232 	HANDLE_NEWLINES(yytext, yyleng);
6233 	RETURN_TOKEN(T_YIELD_FROM);
6234 }
6235 #line 6236 "Zend/zend_language_scanner.c"
6236 yy662:
6237 		YYDEBUG(662, *YYCURSOR);
6238 		yych = *++YYCURSOR;
6239 		if (yych == '_') goto yy669;
6240 		goto yy44;
6241 yy663:
6242 		YYDEBUG(663, *YYCURSOR);
6243 		yych = *++YYCURSOR;
6244 		if (yych == 'I') goto yy671;
6245 		if (yych == 'i') goto yy671;
6246 		goto yy44;
6247 yy664:
6248 		YYDEBUG(664, *YYCURSOR);
6249 		yych = *++YYCURSOR;
6250 		if (yych == '_') goto yy672;
6251 		goto yy44;
6252 yy665:
6253 		YYDEBUG(665, *YYCURSOR);
6254 		yych = *++YYCURSOR;
6255 		if (yybm[0+yych] & 16) {
6256 			goto yy43;
6257 		}
6258 		YYDEBUG(666, *YYCURSOR);
6259 		yyleng = YYCURSOR - SCNG(yy_text);
6260 #line 1377 "Zend/zend_language_scanner.l"
6261 		{
6262 	RETURN_TOKEN(T_INCLUDE_ONCE);
6263 }
6264 #line 6265 "Zend/zend_language_scanner.c"
6265 yy667:
6266 		YYDEBUG(667, *YYCURSOR);
6267 		yych = *++YYCURSOR;
6268 		if (yybm[0+yych] & 16) {
6269 			goto yy43;
6270 		}
6271 		YYDEBUG(668, *YYCURSOR);
6272 		yyleng = YYCURSOR - SCNG(yy_text);
6273 #line 1385 "Zend/zend_language_scanner.l"
6274 		{
6275 	RETURN_TOKEN(T_REQUIRE_ONCE);
6276 }
6277 #line 6278 "Zend/zend_language_scanner.c"
6278 yy669:
6279 		YYDEBUG(669, *YYCURSOR);
6280 		yych = *++YYCURSOR;
6281 		if (yybm[0+yych] & 16) {
6282 			goto yy43;
6283 		}
6284 		YYDEBUG(670, *YYCURSOR);
6285 		yyleng = YYCURSOR - SCNG(yy_text);
6286 #line 1757 "Zend/zend_language_scanner.l"
6287 		{
6288 	RETURN_TOKEN(T_FUNC_C);
6289 }
6290 #line 6291 "Zend/zend_language_scanner.c"
6291 yy671:
6292 		YYDEBUG(671, *YYCURSOR);
6293 		yych = *++YYCURSOR;
6294 		if (yych == 'L') goto yy673;
6295 		if (yych == 'l') goto yy673;
6296 		goto yy44;
6297 yy672:
6298 		YYDEBUG(672, *YYCURSOR);
6299 		yych = *++YYCURSOR;
6300 		if (yych == '_') goto yy674;
6301 		goto yy44;
6302 yy673:
6303 		YYDEBUG(673, *YYCURSOR);
6304 		yych = *++YYCURSOR;
6305 		if (yych == 'E') goto yy676;
6306 		if (yych == 'e') goto yy676;
6307 		goto yy44;
6308 yy674:
6309 		YYDEBUG(674, *YYCURSOR);
6310 		yych = *++YYCURSOR;
6311 		if (yybm[0+yych] & 16) {
6312 			goto yy43;
6313 		}
6314 		YYDEBUG(675, *YYCURSOR);
6315 		yyleng = YYCURSOR - SCNG(yy_text);
6316 #line 1777 "Zend/zend_language_scanner.l"
6317 		{
6318 	RETURN_TOKEN(T_NS_C);
6319 }
6320 #line 6321 "Zend/zend_language_scanner.c"
6321 yy676:
6322 		YYDEBUG(676, *YYCURSOR);
6323 		yych = *++YYCURSOR;
6324 		if (yych == 'R') goto yy677;
6325 		if (yych != 'r') goto yy44;
6326 yy677:
6327 		YYDEBUG(677, *YYCURSOR);
6328 		yych = *++YYCURSOR;
6329 		if (yybm[0+yych] & 16) {
6330 			goto yy43;
6331 		}
6332 		YYDEBUG(678, *YYCURSOR);
6333 		yyleng = YYCURSOR - SCNG(yy_text);
6334 #line 1413 "Zend/zend_language_scanner.l"
6335 		{
6336 	RETURN_TOKEN(T_HALT_COMPILER);
6337 }
6338 #line 6339 "Zend/zend_language_scanner.c"
6339 	}
6340 /* *********************************** */
6341 yyc_ST_LOOKING_FOR_PROPERTY:
6342 	{
6343 		static const unsigned char yybm[] = {
6344 			  0,   0,   0,   0,   0,   0,   0,   0,
6345 			  0,  64,  64,   0,   0,  64,   0,   0,
6346 			  0,   0,   0,   0,   0,   0,   0,   0,
6347 			  0,   0,   0,   0,   0,   0,   0,   0,
6348 			 64,   0,   0,   0,   0,   0,   0,   0,
6349 			  0,   0,   0,   0,   0,   0,   0,   0,
6350 			128, 128, 128, 128, 128, 128, 128, 128,
6351 			128, 128,   0,   0,   0,   0,   0,   0,
6352 			  0, 128, 128, 128, 128, 128, 128, 128,
6353 			128, 128, 128, 128, 128, 128, 128, 128,
6354 			128, 128, 128, 128, 128, 128, 128, 128,
6355 			128, 128, 128,   0,   0,   0,   0, 128,
6356 			  0, 128, 128, 128, 128, 128, 128, 128,
6357 			128, 128, 128, 128, 128, 128, 128, 128,
6358 			128, 128, 128, 128, 128, 128, 128, 128,
6359 			128, 128, 128,   0,   0,   0,   0,   0,
6360 			128, 128, 128, 128, 128, 128, 128, 128,
6361 			128, 128, 128, 128, 128, 128, 128, 128,
6362 			128, 128, 128, 128, 128, 128, 128, 128,
6363 			128, 128, 128, 128, 128, 128, 128, 128,
6364 			128, 128, 128, 128, 128, 128, 128, 128,
6365 			128, 128, 128, 128, 128, 128, 128, 128,
6366 			128, 128, 128, 128, 128, 128, 128, 128,
6367 			128, 128, 128, 128, 128, 128, 128, 128,
6368 			128, 128, 128, 128, 128, 128, 128, 128,
6369 			128, 128, 128, 128, 128, 128, 128, 128,
6370 			128, 128, 128, 128, 128, 128, 128, 128,
6371 			128, 128, 128, 128, 128, 128, 128, 128,
6372 			128, 128, 128, 128, 128, 128, 128, 128,
6373 			128, 128, 128, 128, 128, 128, 128, 128,
6374 			128, 128, 128, 128, 128, 128, 128, 128,
6375 			128, 128, 128, 128, 128, 128, 128, 128,
6376 		};
6377 		YYDEBUG(679, *YYCURSOR);
6378 		YYFILL(2);
6379 		yych = *YYCURSOR;
6380 		if (yybm[0+yych] & 64) {
6381 			goto yy683;
6382 		}
6383 		if (yych <= '^') {
6384 			if (yych <= '-') {
6385 				if (yych >= '-') goto yy686;
6386 			} else {
6387 				if (yych <= '@') goto yy681;
6388 				if (yych <= 'Z') goto yy687;
6389 			}
6390 		} else {
6391 			if (yych <= '`') {
6392 				if (yych <= '_') goto yy687;
6393 			} else {
6394 				if (yych <= 'z') goto yy687;
6395 				if (yych >= 0x80) goto yy687;
6396 			}
6397 		}
6398 yy681:
6399 		YYDEBUG(681, *YYCURSOR);
6400 		++YYCURSOR;
6401 yy682:
6402 		YYDEBUG(682, *YYCURSOR);
6403 		yyleng = YYCURSOR - SCNG(yy_text);
6404 #line 1307 "Zend/zend_language_scanner.l"
6405 		{
6406 	yyless(0);
6407 	yy_pop_state();
6408 	goto restart;
6409 }
6410 #line 6411 "Zend/zend_language_scanner.c"
6411 yy683:
6412 		YYDEBUG(683, *YYCURSOR);
6413 		++YYCURSOR;
6414 		YYFILL(1);
6415 		yych = *YYCURSOR;
6416 		YYDEBUG(684, *YYCURSOR);
6417 		if (yybm[0+yych] & 64) {
6418 			goto yy683;
6419 		}
6420 		YYDEBUG(685, *YYCURSOR);
6421 		yyleng = YYCURSOR - SCNG(yy_text);
6422 #line 1292 "Zend/zend_language_scanner.l"
6423 		{
6424 	HANDLE_NEWLINES(yytext, yyleng);
6425 	RETURN_TOKEN(T_WHITESPACE);
6426 }
6427 #line 6428 "Zend/zend_language_scanner.c"
6428 yy686:
6429 		YYDEBUG(686, *YYCURSOR);
6430 		yych = *++YYCURSOR;
6431 		if (yych == '>') goto yy690;
6432 		goto yy682;
6433 yy687:
6434 		YYDEBUG(687, *YYCURSOR);
6435 		++YYCURSOR;
6436 		YYFILL(1);
6437 		yych = *YYCURSOR;
6438 		YYDEBUG(688, *YYCURSOR);
6439 		if (yybm[0+yych] & 128) {
6440 			goto yy687;
6441 		}
6442 		YYDEBUG(689, *YYCURSOR);
6443 		yyleng = YYCURSOR - SCNG(yy_text);
6444 #line 1301 "Zend/zend_language_scanner.l"
6445 		{
6446 	yy_pop_state();
6447 	zend_copy_value(zendlval, yytext, yyleng);
6448 	RETURN_TOKEN(T_STRING);
6449 }
6450 #line 6451 "Zend/zend_language_scanner.c"
6451 yy690:
6452 		YYDEBUG(690, *YYCURSOR);
6453 		++YYCURSOR;
6454 		YYDEBUG(691, *YYCURSOR);
6455 		yyleng = YYCURSOR - SCNG(yy_text);
6456 #line 1297 "Zend/zend_language_scanner.l"
6457 		{
6458 	RETURN_TOKEN(T_OBJECT_OPERATOR);
6459 }
6460 #line 6461 "Zend/zend_language_scanner.c"
6461 	}
6462 /* *********************************** */
6463 yyc_ST_BACKQUOTE:
6464 	{
6465 		static const unsigned char yybm[] = {
6466 			  0,   0,   0,   0,   0,   0,   0,   0,
6467 			  0,   0,   0,   0,   0,   0,   0,   0,
6468 			  0,   0,   0,   0,   0,   0,   0,   0,
6469 			  0,   0,   0,   0,   0,   0,   0,   0,
6470 			  0,   0,   0,   0,   0,   0,   0,   0,
6471 			  0,   0,   0,   0,   0,   0,   0,   0,
6472 			128, 128, 128, 128, 128, 128, 128, 128,
6473 			128, 128,   0,   0,   0,   0,   0,   0,
6474 			  0, 128, 128, 128, 128, 128, 128, 128,
6475 			128, 128, 128, 128, 128, 128, 128, 128,
6476 			128, 128, 128, 128, 128, 128, 128, 128,
6477 			128, 128, 128,   0,   0,   0,   0, 128,
6478 			  0, 128, 128, 128, 128, 128, 128, 128,
6479 			128, 128, 128, 128, 128, 128, 128, 128,
6480 			128, 128, 128, 128, 128, 128, 128, 128,
6481 			128, 128, 128,   0,   0,   0,   0,   0,
6482 			128, 128, 128, 128, 128, 128, 128, 128,
6483 			128, 128, 128, 128, 128, 128, 128, 128,
6484 			128, 128, 128, 128, 128, 128, 128, 128,
6485 			128, 128, 128, 128, 128, 128, 128, 128,
6486 			128, 128, 128, 128, 128, 128, 128, 128,
6487 			128, 128, 128, 128, 128, 128, 128, 128,
6488 			128, 128, 128, 128, 128, 128, 128, 128,
6489 			128, 128, 128, 128, 128, 128, 128, 128,
6490 			128, 128, 128, 128, 128, 128, 128, 128,
6491 			128, 128, 128, 128, 128, 128, 128, 128,
6492 			128, 128, 128, 128, 128, 128, 128, 128,
6493 			128, 128, 128, 128, 128, 128, 128, 128,
6494 			128, 128, 128, 128, 128, 128, 128, 128,
6495 			128, 128, 128, 128, 128, 128, 128, 128,
6496 			128, 128, 128, 128, 128, 128, 128, 128,
6497 			128, 128, 128, 128, 128, 128, 128, 128,
6498 		};
6499 		YYDEBUG(692, *YYCURSOR);
6500 		YYFILL(2);
6501 		yych = *YYCURSOR;
6502 		if (yych <= '_') {
6503 			if (yych == '$') goto yy696;
6504 		} else {
6505 			if (yych <= '`') goto yy697;
6506 			if (yych == '{') goto yy699;
6507 		}
6508 		YYDEBUG(694, *YYCURSOR);
6509 		++YYCURSOR;
6510 yy695:
6511 		YYDEBUG(695, *YYCURSOR);
6512 		yyleng = YYCURSOR - SCNG(yy_text);
6513 #line 2217 "Zend/zend_language_scanner.l"
6514 		{
6515 	if (YYCURSOR > YYLIMIT) {
6516 		RETURN_TOKEN(END);
6517 	}
6518 	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
6519 		YYCURSOR++;
6520 	}
6521 
6522 	while (YYCURSOR < YYLIMIT) {
6523 		switch (*YYCURSOR++) {
6524 			case '`':
6525 				break;
6526 			case '$':
6527 				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
6528 					break;
6529 				}
6530 				continue;
6531 			case '{':
6532 				if (*YYCURSOR == '$') {
6533 					break;
6534 				}
6535 				continue;
6536 			case '\\':
6537 				if (YYCURSOR < YYLIMIT) {
6538 					YYCURSOR++;
6539 				}
6540 				/* fall through */
6541 			default:
6542 				continue;
6543 		}
6544 
6545 		YYCURSOR--;
6546 		break;
6547 	}
6548 
6549 	yyleng = YYCURSOR - SCNG(yy_text);
6550 
6551 	zend_scan_escape_string(zendlval, yytext, yyleng, '`');
6552 	RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
6553 }
6554 #line 6555 "Zend/zend_language_scanner.c"
6555 yy696:
6556 		YYDEBUG(696, *YYCURSOR);
6557 		yych = *++YYCURSOR;
6558 		if (yych <= '_') {
6559 			if (yych <= '@') goto yy695;
6560 			if (yych <= 'Z') goto yy700;
6561 			if (yych <= '^') goto yy695;
6562 			goto yy700;
6563 		} else {
6564 			if (yych <= 'z') {
6565 				if (yych <= '`') goto yy695;
6566 				goto yy700;
6567 			} else {
6568 				if (yych <= '{') goto yy703;
6569 				if (yych <= 0x7F) goto yy695;
6570 				goto yy700;
6571 			}
6572 		}
6573 yy697:
6574 		YYDEBUG(697, *YYCURSOR);
6575 		++YYCURSOR;
6576 		YYDEBUG(698, *YYCURSOR);
6577 		yyleng = YYCURSOR - SCNG(yy_text);
6578 #line 2161 "Zend/zend_language_scanner.l"
6579 		{
6580 	BEGIN(ST_IN_SCRIPTING);
6581 	RETURN_TOKEN('`');
6582 }
6583 #line 6584 "Zend/zend_language_scanner.c"
6584 yy699:
6585 		YYDEBUG(699, *YYCURSOR);
6586 		yych = *++YYCURSOR;
6587 		if (yych == '$') goto yy705;
6588 		goto yy695;
6589 yy700:
6590 		YYDEBUG(700, *YYCURSOR);
6591 		YYMARKER = ++YYCURSOR;
6592 		YYFILL(3);
6593 		yych = *YYCURSOR;
6594 		YYDEBUG(701, *YYCURSOR);
6595 		if (yybm[0+yych] & 128) {
6596 			goto yy700;
6597 		}
6598 		if (yych == '-') goto yy707;
6599 		if (yych <= '@') goto yy702;
6600 		if (yych <= '[') goto yy709;
6601 yy702:
6602 		YYDEBUG(702, *YYCURSOR);
6603 		yyleng = YYCURSOR - SCNG(yy_text);
6604 #line 1869 "Zend/zend_language_scanner.l"
6605 		{
6606 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
6607 	RETURN_TOKEN(T_VARIABLE);
6608 }
6609 #line 6610 "Zend/zend_language_scanner.c"
6610 yy703:
6611 		YYDEBUG(703, *YYCURSOR);
6612 		++YYCURSOR;
6613 		YYDEBUG(704, *YYCURSOR);
6614 		yyleng = YYCURSOR - SCNG(yy_text);
6615 #line 1588 "Zend/zend_language_scanner.l"
6616 		{
6617 	yy_push_state(ST_LOOKING_FOR_VARNAME);
6618 	RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
6619 }
6620 #line 6621 "Zend/zend_language_scanner.c"
6621 yy705:
6622 		YYDEBUG(705, *YYCURSOR);
6623 		++YYCURSOR;
6624 		YYDEBUG(706, *YYCURSOR);
6625 		yyleng = YYCURSOR - SCNG(yy_text);
6626 #line 2148 "Zend/zend_language_scanner.l"
6627 		{
6628 	Z_LVAL_P(zendlval) = (zend_long) '{';
6629 	yy_push_state(ST_IN_SCRIPTING);
6630 	yyless(1);
6631 	RETURN_TOKEN(T_CURLY_OPEN);
6632 }
6633 #line 6634 "Zend/zend_language_scanner.c"
6634 yy707:
6635 		YYDEBUG(707, *YYCURSOR);
6636 		yych = *++YYCURSOR;
6637 		if (yych == '>') goto yy711;
6638 yy708:
6639 		YYDEBUG(708, *YYCURSOR);
6640 		YYCURSOR = YYMARKER;
6641 		goto yy702;
6642 yy709:
6643 		YYDEBUG(709, *YYCURSOR);
6644 		++YYCURSOR;
6645 		YYDEBUG(710, *YYCURSOR);
6646 		yyleng = YYCURSOR - SCNG(yy_text);
6647 #line 1862 "Zend/zend_language_scanner.l"
6648 		{
6649 	yyless(yyleng - 1);
6650 	yy_push_state(ST_VAR_OFFSET);
6651 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
6652 	RETURN_TOKEN(T_VARIABLE);
6653 }
6654 #line 6655 "Zend/zend_language_scanner.c"
6655 yy711:
6656 		YYDEBUG(711, *YYCURSOR);
6657 		yych = *++YYCURSOR;
6658 		if (yych <= '_') {
6659 			if (yych <= '@') goto yy708;
6660 			if (yych <= 'Z') goto yy712;
6661 			if (yych <= '^') goto yy708;
6662 		} else {
6663 			if (yych <= '`') goto yy708;
6664 			if (yych <= 'z') goto yy712;
6665 			if (yych <= 0x7F) goto yy708;
6666 		}
6667 yy712:
6668 		YYDEBUG(712, *YYCURSOR);
6669 		++YYCURSOR;
6670 		YYDEBUG(713, *YYCURSOR);
6671 		yyleng = YYCURSOR - SCNG(yy_text);
6672 #line 1853 "Zend/zend_language_scanner.l"
6673 		{
6674 	yyless(yyleng - 3);
6675 	yy_push_state(ST_LOOKING_FOR_PROPERTY);
6676 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
6677 	RETURN_TOKEN(T_VARIABLE);
6678 }
6679 #line 6680 "Zend/zend_language_scanner.c"
6680 	}
6681 /* *********************************** */
6682 yyc_ST_DOUBLE_QUOTES:
6683 	{
6684 		static const unsigned char yybm[] = {
6685 			  0,   0,   0,   0,   0,   0,   0,   0,
6686 			  0,   0,   0,   0,   0,   0,   0,   0,
6687 			  0,   0,   0,   0,   0,   0,   0,   0,
6688 			  0,   0,   0,   0,   0,   0,   0,   0,
6689 			  0,   0,   0,   0,   0,   0,   0,   0,
6690 			  0,   0,   0,   0,   0,   0,   0,   0,
6691 			128, 128, 128, 128, 128, 128, 128, 128,
6692 			128, 128,   0,   0,   0,   0,   0,   0,
6693 			  0, 128, 128, 128, 128, 128, 128, 128,
6694 			128, 128, 128, 128, 128, 128, 128, 128,
6695 			128, 128, 128, 128, 128, 128, 128, 128,
6696 			128, 128, 128,   0,   0,   0,   0, 128,
6697 			  0, 128, 128, 128, 128, 128, 128, 128,
6698 			128, 128, 128, 128, 128, 128, 128, 128,
6699 			128, 128, 128, 128, 128, 128, 128, 128,
6700 			128, 128, 128,   0,   0,   0,   0,   0,
6701 			128, 128, 128, 128, 128, 128, 128, 128,
6702 			128, 128, 128, 128, 128, 128, 128, 128,
6703 			128, 128, 128, 128, 128, 128, 128, 128,
6704 			128, 128, 128, 128, 128, 128, 128, 128,
6705 			128, 128, 128, 128, 128, 128, 128, 128,
6706 			128, 128, 128, 128, 128, 128, 128, 128,
6707 			128, 128, 128, 128, 128, 128, 128, 128,
6708 			128, 128, 128, 128, 128, 128, 128, 128,
6709 			128, 128, 128, 128, 128, 128, 128, 128,
6710 			128, 128, 128, 128, 128, 128, 128, 128,
6711 			128, 128, 128, 128, 128, 128, 128, 128,
6712 			128, 128, 128, 128, 128, 128, 128, 128,
6713 			128, 128, 128, 128, 128, 128, 128, 128,
6714 			128, 128, 128, 128, 128, 128, 128, 128,
6715 			128, 128, 128, 128, 128, 128, 128, 128,
6716 			128, 128, 128, 128, 128, 128, 128, 128,
6717 		};
6718 		YYDEBUG(714, *YYCURSOR);
6719 		YYFILL(2);
6720 		yych = *YYCURSOR;
6721 		if (yych <= '#') {
6722 			if (yych == '"') goto yy718;
6723 		} else {
6724 			if (yych <= '$') goto yy720;
6725 			if (yych == '{') goto yy721;
6726 		}
6727 		YYDEBUG(716, *YYCURSOR);
6728 		++YYCURSOR;
6729 yy717:
6730 		YYDEBUG(717, *YYCURSOR);
6731 		yyleng = YYCURSOR - SCNG(yy_text);
6732 #line 2167 "Zend/zend_language_scanner.l"
6733 		{
6734 	if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
6735 		YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
6736 		SET_DOUBLE_QUOTES_SCANNED_LENGTH(0);
6737 
6738 		goto double_quotes_scan_done;
6739 	}
6740 
6741 	if (YYCURSOR > YYLIMIT) {
6742 		RETURN_TOKEN(END);
6743 	}
6744 	if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
6745 		YYCURSOR++;
6746 	}
6747 
6748 	while (YYCURSOR < YYLIMIT) {
6749 		switch (*YYCURSOR++) {
6750 			case '"':
6751 				break;
6752 			case '$':
6753 				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
6754 					break;
6755 				}
6756 				continue;
6757 			case '{':
6758 				if (*YYCURSOR == '$') {
6759 					break;
6760 				}
6761 				continue;
6762 			case '\\':
6763 				if (YYCURSOR < YYLIMIT) {
6764 					YYCURSOR++;
6765 				}
6766 				/* fall through */
6767 			default:
6768 				continue;
6769 		}
6770 
6771 		YYCURSOR--;
6772 		break;
6773 	}
6774 
6775 double_quotes_scan_done:
6776 	yyleng = YYCURSOR - SCNG(yy_text);
6777 
6778 	zend_scan_escape_string(zendlval, yytext, yyleng, '"');
6779 	RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
6780 }
6781 #line 6782 "Zend/zend_language_scanner.c"
6782 yy718:
6783 		YYDEBUG(718, *YYCURSOR);
6784 		++YYCURSOR;
6785 		YYDEBUG(719, *YYCURSOR);
6786 		yyleng = YYCURSOR - SCNG(yy_text);
6787 #line 2156 "Zend/zend_language_scanner.l"
6788 		{
6789 	BEGIN(ST_IN_SCRIPTING);
6790 	RETURN_TOKEN('"');
6791 }
6792 #line 6793 "Zend/zend_language_scanner.c"
6793 yy720:
6794 		YYDEBUG(720, *YYCURSOR);
6795 		yych = *++YYCURSOR;
6796 		if (yych <= '_') {
6797 			if (yych <= '@') goto yy717;
6798 			if (yych <= 'Z') goto yy722;
6799 			if (yych <= '^') goto yy717;
6800 			goto yy722;
6801 		} else {
6802 			if (yych <= 'z') {
6803 				if (yych <= '`') goto yy717;
6804 				goto yy722;
6805 			} else {
6806 				if (yych <= '{') goto yy725;
6807 				if (yych <= 0x7F) goto yy717;
6808 				goto yy722;
6809 			}
6810 		}
6811 yy721:
6812 		YYDEBUG(721, *YYCURSOR);
6813 		yych = *++YYCURSOR;
6814 		if (yych == '$') goto yy727;
6815 		goto yy717;
6816 yy722:
6817 		YYDEBUG(722, *YYCURSOR);
6818 		YYMARKER = ++YYCURSOR;
6819 		YYFILL(3);
6820 		yych = *YYCURSOR;
6821 		YYDEBUG(723, *YYCURSOR);
6822 		if (yybm[0+yych] & 128) {
6823 			goto yy722;
6824 		}
6825 		if (yych == '-') goto yy729;
6826 		if (yych <= '@') goto yy724;
6827 		if (yych <= '[') goto yy731;
6828 yy724:
6829 		YYDEBUG(724, *YYCURSOR);
6830 		yyleng = YYCURSOR - SCNG(yy_text);
6831 #line 1869 "Zend/zend_language_scanner.l"
6832 		{
6833 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
6834 	RETURN_TOKEN(T_VARIABLE);
6835 }
6836 #line 6837 "Zend/zend_language_scanner.c"
6837 yy725:
6838 		YYDEBUG(725, *YYCURSOR);
6839 		++YYCURSOR;
6840 		YYDEBUG(726, *YYCURSOR);
6841 		yyleng = YYCURSOR - SCNG(yy_text);
6842 #line 1588 "Zend/zend_language_scanner.l"
6843 		{
6844 	yy_push_state(ST_LOOKING_FOR_VARNAME);
6845 	RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
6846 }
6847 #line 6848 "Zend/zend_language_scanner.c"
6848 yy727:
6849 		YYDEBUG(727, *YYCURSOR);
6850 		++YYCURSOR;
6851 		YYDEBUG(728, *YYCURSOR);
6852 		yyleng = YYCURSOR - SCNG(yy_text);
6853 #line 2148 "Zend/zend_language_scanner.l"
6854 		{
6855 	Z_LVAL_P(zendlval) = (zend_long) '{';
6856 	yy_push_state(ST_IN_SCRIPTING);
6857 	yyless(1);
6858 	RETURN_TOKEN(T_CURLY_OPEN);
6859 }
6860 #line 6861 "Zend/zend_language_scanner.c"
6861 yy729:
6862 		YYDEBUG(729, *YYCURSOR);
6863 		yych = *++YYCURSOR;
6864 		if (yych == '>') goto yy733;
6865 yy730:
6866 		YYDEBUG(730, *YYCURSOR);
6867 		YYCURSOR = YYMARKER;
6868 		goto yy724;
6869 yy731:
6870 		YYDEBUG(731, *YYCURSOR);
6871 		++YYCURSOR;
6872 		YYDEBUG(732, *YYCURSOR);
6873 		yyleng = YYCURSOR - SCNG(yy_text);
6874 #line 1862 "Zend/zend_language_scanner.l"
6875 		{
6876 	yyless(yyleng - 1);
6877 	yy_push_state(ST_VAR_OFFSET);
6878 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
6879 	RETURN_TOKEN(T_VARIABLE);
6880 }
6881 #line 6882 "Zend/zend_language_scanner.c"
6882 yy733:
6883 		YYDEBUG(733, *YYCURSOR);
6884 		yych = *++YYCURSOR;
6885 		if (yych <= '_') {
6886 			if (yych <= '@') goto yy730;
6887 			if (yych <= 'Z') goto yy734;
6888 			if (yych <= '^') goto yy730;
6889 		} else {
6890 			if (yych <= '`') goto yy730;
6891 			if (yych <= 'z') goto yy734;
6892 			if (yych <= 0x7F) goto yy730;
6893 		}
6894 yy734:
6895 		YYDEBUG(734, *YYCURSOR);
6896 		++YYCURSOR;
6897 		YYDEBUG(735, *YYCURSOR);
6898 		yyleng = YYCURSOR - SCNG(yy_text);
6899 #line 1853 "Zend/zend_language_scanner.l"
6900 		{
6901 	yyless(yyleng - 3);
6902 	yy_push_state(ST_LOOKING_FOR_PROPERTY);
6903 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
6904 	RETURN_TOKEN(T_VARIABLE);
6905 }
6906 #line 6907 "Zend/zend_language_scanner.c"
6907 	}
6908 /* *********************************** */
6909 yyc_ST_HEREDOC:
6910 	{
6911 		static const unsigned char yybm[] = {
6912 			  0,   0,   0,   0,   0,   0,   0,   0,
6913 			  0,   0,   0,   0,   0,   0,   0,   0,
6914 			  0,   0,   0,   0,   0,   0,   0,   0,
6915 			  0,   0,   0,   0,   0,   0,   0,   0,
6916 			  0,   0,   0,   0,   0,   0,   0,   0,
6917 			  0,   0,   0,   0,   0,   0,   0,   0,
6918 			128, 128, 128, 128, 128, 128, 128, 128,
6919 			128, 128,   0,   0,   0,   0,   0,   0,
6920 			  0, 128, 128, 128, 128, 128, 128, 128,
6921 			128, 128, 128, 128, 128, 128, 128, 128,
6922 			128, 128, 128, 128, 128, 128, 128, 128,
6923 			128, 128, 128,   0,   0,   0,   0, 128,
6924 			  0, 128, 128, 128, 128, 128, 128, 128,
6925 			128, 128, 128, 128, 128, 128, 128, 128,
6926 			128, 128, 128, 128, 128, 128, 128, 128,
6927 			128, 128, 128,   0,   0,   0,   0,   0,
6928 			128, 128, 128, 128, 128, 128, 128, 128,
6929 			128, 128, 128, 128, 128, 128, 128, 128,
6930 			128, 128, 128, 128, 128, 128, 128, 128,
6931 			128, 128, 128, 128, 128, 128, 128, 128,
6932 			128, 128, 128, 128, 128, 128, 128, 128,
6933 			128, 128, 128, 128, 128, 128, 128, 128,
6934 			128, 128, 128, 128, 128, 128, 128, 128,
6935 			128, 128, 128, 128, 128, 128, 128, 128,
6936 			128, 128, 128, 128, 128, 128, 128, 128,
6937 			128, 128, 128, 128, 128, 128, 128, 128,
6938 			128, 128, 128, 128, 128, 128, 128, 128,
6939 			128, 128, 128, 128, 128, 128, 128, 128,
6940 			128, 128, 128, 128, 128, 128, 128, 128,
6941 			128, 128, 128, 128, 128, 128, 128, 128,
6942 			128, 128, 128, 128, 128, 128, 128, 128,
6943 			128, 128, 128, 128, 128, 128, 128, 128,
6944 		};
6945 		YYDEBUG(736, *YYCURSOR);
6946 		YYFILL(2);
6947 		yych = *YYCURSOR;
6948 		if (yych == '$') goto yy740;
6949 		if (yych == '{') goto yy741;
6950 		YYDEBUG(738, *YYCURSOR);
6951 		++YYCURSOR;
6952 yy739:
6953 		YYDEBUG(739, *YYCURSOR);
6954 		yyleng = YYCURSOR - SCNG(yy_text);
6955 #line 2259 "Zend/zend_language_scanner.l"
6956 		{
6957 	int newline = 0;
6958 
6959 	zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack));
6960 
6961 	if (YYCURSOR > YYLIMIT) {
6962 		RETURN_TOKEN(END);
6963 	}
6964 
6965 	YYCURSOR--;
6966 
6967 	while (YYCURSOR < YYLIMIT) {
6968 		switch (*YYCURSOR++) {
6969 			case '\r':
6970 				if (*YYCURSOR == '\n') {
6971 					YYCURSOR++;
6972 				}
6973 				/* fall through */
6974 			case '\n':
6975 				/* Check for ending label on the next line */
6976 				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
6977 					YYCTYPE *end = YYCURSOR + heredoc_label->length;
6978 
6979 					if (*end == ';') {
6980 						end++;
6981 					}
6982 
6983 					if (*end == '\n' || *end == '\r') {
6984 						/* newline before label will be subtracted from returned text, but
6985 						 * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
6986 						if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') {
6987 							newline = 2; /* Windows newline */
6988 						} else {
6989 							newline = 1;
6990 						}
6991 
6992 						CG(increment_lineno) = 1; /* For newline before label */
6993 						BEGIN(ST_END_HEREDOC);
6994 
6995 						goto heredoc_scan_done;
6996 					}
6997 				}
6998 				continue;
6999 			case '$':
7000 				if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
7001 					break;
7002 				}
7003 				continue;
7004 			case '{':
7005 				if (*YYCURSOR == '$') {
7006 					break;
7007 				}
7008 				continue;
7009 			case '\\':
7010 				if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
7011 					YYCURSOR++;
7012 				}
7013 				/* fall through */
7014 			default:
7015 				continue;
7016 		}
7017 
7018 		YYCURSOR--;
7019 		break;
7020 	}
7021 
7022 heredoc_scan_done:
7023 	yyleng = YYCURSOR - SCNG(yy_text);
7024 
7025 	zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
7026 	RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
7027 }
7028 #line 7029 "Zend/zend_language_scanner.c"
7029 yy740:
7030 		YYDEBUG(740, *YYCURSOR);
7031 		yych = *++YYCURSOR;
7032 		if (yych <= '_') {
7033 			if (yych <= '@') goto yy739;
7034 			if (yych <= 'Z') goto yy742;
7035 			if (yych <= '^') goto yy739;
7036 			goto yy742;
7037 		} else {
7038 			if (yych <= 'z') {
7039 				if (yych <= '`') goto yy739;
7040 				goto yy742;
7041 			} else {
7042 				if (yych <= '{') goto yy745;
7043 				if (yych <= 0x7F) goto yy739;
7044 				goto yy742;
7045 			}
7046 		}
7047 yy741:
7048 		YYDEBUG(741, *YYCURSOR);
7049 		yych = *++YYCURSOR;
7050 		if (yych == '$') goto yy747;
7051 		goto yy739;
7052 yy742:
7053 		YYDEBUG(742, *YYCURSOR);
7054 		YYMARKER = ++YYCURSOR;
7055 		YYFILL(3);
7056 		yych = *YYCURSOR;
7057 		YYDEBUG(743, *YYCURSOR);
7058 		if (yybm[0+yych] & 128) {
7059 			goto yy742;
7060 		}
7061 		if (yych == '-') goto yy749;
7062 		if (yych <= '@') goto yy744;
7063 		if (yych <= '[') goto yy751;
7064 yy744:
7065 		YYDEBUG(744, *YYCURSOR);
7066 		yyleng = YYCURSOR - SCNG(yy_text);
7067 #line 1869 "Zend/zend_language_scanner.l"
7068 		{
7069 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
7070 	RETURN_TOKEN(T_VARIABLE);
7071 }
7072 #line 7073 "Zend/zend_language_scanner.c"
7073 yy745:
7074 		YYDEBUG(745, *YYCURSOR);
7075 		++YYCURSOR;
7076 		YYDEBUG(746, *YYCURSOR);
7077 		yyleng = YYCURSOR - SCNG(yy_text);
7078 #line 1588 "Zend/zend_language_scanner.l"
7079 		{
7080 	yy_push_state(ST_LOOKING_FOR_VARNAME);
7081 	RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
7082 }
7083 #line 7084 "Zend/zend_language_scanner.c"
7084 yy747:
7085 		YYDEBUG(747, *YYCURSOR);
7086 		++YYCURSOR;
7087 		YYDEBUG(748, *YYCURSOR);
7088 		yyleng = YYCURSOR - SCNG(yy_text);
7089 #line 2148 "Zend/zend_language_scanner.l"
7090 		{
7091 	Z_LVAL_P(zendlval) = (zend_long) '{';
7092 	yy_push_state(ST_IN_SCRIPTING);
7093 	yyless(1);
7094 	RETURN_TOKEN(T_CURLY_OPEN);
7095 }
7096 #line 7097 "Zend/zend_language_scanner.c"
7097 yy749:
7098 		YYDEBUG(749, *YYCURSOR);
7099 		yych = *++YYCURSOR;
7100 		if (yych == '>') goto yy753;
7101 yy750:
7102 		YYDEBUG(750, *YYCURSOR);
7103 		YYCURSOR = YYMARKER;
7104 		goto yy744;
7105 yy751:
7106 		YYDEBUG(751, *YYCURSOR);
7107 		++YYCURSOR;
7108 		YYDEBUG(752, *YYCURSOR);
7109 		yyleng = YYCURSOR - SCNG(yy_text);
7110 #line 1862 "Zend/zend_language_scanner.l"
7111 		{
7112 	yyless(yyleng - 1);
7113 	yy_push_state(ST_VAR_OFFSET);
7114 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
7115 	RETURN_TOKEN(T_VARIABLE);
7116 }
7117 #line 7118 "Zend/zend_language_scanner.c"
7118 yy753:
7119 		YYDEBUG(753, *YYCURSOR);
7120 		yych = *++YYCURSOR;
7121 		if (yych <= '_') {
7122 			if (yych <= '@') goto yy750;
7123 			if (yych <= 'Z') goto yy754;
7124 			if (yych <= '^') goto yy750;
7125 		} else {
7126 			if (yych <= '`') goto yy750;
7127 			if (yych <= 'z') goto yy754;
7128 			if (yych <= 0x7F) goto yy750;
7129 		}
7130 yy754:
7131 		YYDEBUG(754, *YYCURSOR);
7132 		++YYCURSOR;
7133 		YYDEBUG(755, *YYCURSOR);
7134 		yyleng = YYCURSOR - SCNG(yy_text);
7135 #line 1853 "Zend/zend_language_scanner.l"
7136 		{
7137 	yyless(yyleng - 3);
7138 	yy_push_state(ST_LOOKING_FOR_PROPERTY);
7139 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
7140 	RETURN_TOKEN(T_VARIABLE);
7141 }
7142 #line 7143 "Zend/zend_language_scanner.c"
7143 	}
7144 /* *********************************** */
7145 yyc_ST_LOOKING_FOR_VARNAME:
7146 	{
7147 		static const unsigned char yybm[] = {
7148 			  0,   0,   0,   0,   0,   0,   0,   0,
7149 			  0,   0,   0,   0,   0,   0,   0,   0,
7150 			  0,   0,   0,   0,   0,   0,   0,   0,
7151 			  0,   0,   0,   0,   0,   0,   0,   0,
7152 			  0,   0,   0,   0,   0,   0,   0,   0,
7153 			  0,   0,   0,   0,   0,   0,   0,   0,
7154 			128, 128, 128, 128, 128, 128, 128, 128,
7155 			128, 128,   0,   0,   0,   0,   0,   0,
7156 			  0, 128, 128, 128, 128, 128, 128, 128,
7157 			128, 128, 128, 128, 128, 128, 128, 128,
7158 			128, 128, 128, 128, 128, 128, 128, 128,
7159 			128, 128, 128,   0,   0,   0,   0, 128,
7160 			  0, 128, 128, 128, 128, 128, 128, 128,
7161 			128, 128, 128, 128, 128, 128, 128, 128,
7162 			128, 128, 128, 128, 128, 128, 128, 128,
7163 			128, 128, 128,   0,   0,   0,   0,   0,
7164 			128, 128, 128, 128, 128, 128, 128, 128,
7165 			128, 128, 128, 128, 128, 128, 128, 128,
7166 			128, 128, 128, 128, 128, 128, 128, 128,
7167 			128, 128, 128, 128, 128, 128, 128, 128,
7168 			128, 128, 128, 128, 128, 128, 128, 128,
7169 			128, 128, 128, 128, 128, 128, 128, 128,
7170 			128, 128, 128, 128, 128, 128, 128, 128,
7171 			128, 128, 128, 128, 128, 128, 128, 128,
7172 			128, 128, 128, 128, 128, 128, 128, 128,
7173 			128, 128, 128, 128, 128, 128, 128, 128,
7174 			128, 128, 128, 128, 128, 128, 128, 128,
7175 			128, 128, 128, 128, 128, 128, 128, 128,
7176 			128, 128, 128, 128, 128, 128, 128, 128,
7177 			128, 128, 128, 128, 128, 128, 128, 128,
7178 			128, 128, 128, 128, 128, 128, 128, 128,
7179 			128, 128, 128, 128, 128, 128, 128, 128,
7180 		};
7181 		YYDEBUG(756, *YYCURSOR);
7182 		YYFILL(2);
7183 		yych = *YYCURSOR;
7184 		if (yych <= '_') {
7185 			if (yych <= '@') goto yy758;
7186 			if (yych <= 'Z') goto yy760;
7187 			if (yych >= '_') goto yy760;
7188 		} else {
7189 			if (yych <= '`') goto yy758;
7190 			if (yych <= 'z') goto yy760;
7191 			if (yych >= 0x80) goto yy760;
7192 		}
7193 yy758:
7194 		YYDEBUG(758, *YYCURSOR);
7195 		++YYCURSOR;
7196 yy759:
7197 		YYDEBUG(759, *YYCURSOR);
7198 		yyleng = YYCURSOR - SCNG(yy_text);
7199 #line 1612 "Zend/zend_language_scanner.l"
7200 		{
7201 	yyless(0);
7202 	yy_pop_state();
7203 	yy_push_state(ST_IN_SCRIPTING);
7204 	goto restart;
7205 }
7206 #line 7207 "Zend/zend_language_scanner.c"
7207 yy760:
7208 		YYDEBUG(760, *YYCURSOR);
7209 		yych = *(YYMARKER = ++YYCURSOR);
7210 		if (yych <= '_') {
7211 			if (yych <= '@') {
7212 				if (yych <= '/') goto yy759;
7213 				if (yych <= '9') goto yy762;
7214 				goto yy759;
7215 			} else {
7216 				if (yych <= '[') goto yy762;
7217 				if (yych <= '^') goto yy759;
7218 				goto yy762;
7219 			}
7220 		} else {
7221 			if (yych <= '|') {
7222 				if (yych <= '`') goto yy759;
7223 				if (yych <= 'z') goto yy762;
7224 				goto yy759;
7225 			} else {
7226 				if (yych <= '}') goto yy762;
7227 				if (yych <= 0x7F) goto yy759;
7228 				goto yy762;
7229 			}
7230 		}
7231 yy761:
7232 		YYDEBUG(761, *YYCURSOR);
7233 		++YYCURSOR;
7234 		YYFILL(1);
7235 		yych = *YYCURSOR;
7236 yy762:
7237 		YYDEBUG(762, *YYCURSOR);
7238 		if (yybm[0+yych] & 128) {
7239 			goto yy761;
7240 		}
7241 		if (yych <= '@') goto yy763;
7242 		if (yych <= '[') goto yy764;
7243 		if (yych == '}') goto yy764;
7244 yy763:
7245 		YYDEBUG(763, *YYCURSOR);
7246 		YYCURSOR = YYMARKER;
7247 		goto yy759;
7248 yy764:
7249 		YYDEBUG(764, *YYCURSOR);
7250 		++YYCURSOR;
7251 		YYDEBUG(765, *YYCURSOR);
7252 		yyleng = YYCURSOR - SCNG(yy_text);
7253 #line 1603 "Zend/zend_language_scanner.l"
7254 		{
7255 	yyless(yyleng - 1);
7256 	zend_copy_value(zendlval, yytext, yyleng);
7257 	yy_pop_state();
7258 	yy_push_state(ST_IN_SCRIPTING);
7259 	RETURN_TOKEN(T_STRING_VARNAME);
7260 }
7261 #line 7262 "Zend/zend_language_scanner.c"
7262 	}
7263 /* *********************************** */
7264 yyc_ST_VAR_OFFSET:
7265 	{
7266 		static const unsigned char yybm[] = {
7267 			  0,   0,   0,   0,   0,   0,   0,   0,
7268 			  0,   0,   0,   0,   0,   0,   0,   0,
7269 			  0,   0,   0,   0,   0,   0,   0,   0,
7270 			  0,   0,   0,   0,   0,   0,   0,   0,
7271 			  0,   0,   0,   0,   0,   0,   0,   0,
7272 			  0,   0,   0,   0,   0,   0,   0,   0,
7273 			240, 240, 176, 176, 176, 176, 176, 176,
7274 			176, 176,   0,   0,   0,   0,   0,   0,
7275 			  0, 160, 160, 160, 160, 160, 160,  32,
7276 			 32,  32,  32,  32,  32,  32,  32,  32,
7277 			 32,  32,  32,  32,  32,  32,  32,  32,
7278 			 32,  32,  32,   0,   0,   0,   0,  32,
7279 			  0, 160, 160, 160, 160, 160, 160,  32,
7280 			 32,  32,  32,  32,  32,  32,  32,  32,
7281 			 32,  32,  32,  32,  32,  32,  32,  32,
7282 			 32,  32,  32,   0,   0,   0,   0,   0,
7283 			 32,  32,  32,  32,  32,  32,  32,  32,
7284 			 32,  32,  32,  32,  32,  32,  32,  32,
7285 			 32,  32,  32,  32,  32,  32,  32,  32,
7286 			 32,  32,  32,  32,  32,  32,  32,  32,
7287 			 32,  32,  32,  32,  32,  32,  32,  32,
7288 			 32,  32,  32,  32,  32,  32,  32,  32,
7289 			 32,  32,  32,  32,  32,  32,  32,  32,
7290 			 32,  32,  32,  32,  32,  32,  32,  32,
7291 			 32,  32,  32,  32,  32,  32,  32,  32,
7292 			 32,  32,  32,  32,  32,  32,  32,  32,
7293 			 32,  32,  32,  32,  32,  32,  32,  32,
7294 			 32,  32,  32,  32,  32,  32,  32,  32,
7295 			 32,  32,  32,  32,  32,  32,  32,  32,
7296 			 32,  32,  32,  32,  32,  32,  32,  32,
7297 			 32,  32,  32,  32,  32,  32,  32,  32,
7298 			 32,  32,  32,  32,  32,  32,  32,  32,
7299 		};
7300 		YYDEBUG(766, *YYCURSOR);
7301 		YYFILL(3);
7302 		yych = *YYCURSOR;
7303 		if (yych <= '0') {
7304 			if (yych <= ' ') {
7305 				if (yych <= '\f') {
7306 					if (yych <= 0x08) goto yy768;
7307 					if (yych <= '\n') goto yy770;
7308 				} else {
7309 					if (yych <= '\r') goto yy770;
7310 					if (yych >= ' ') goto yy770;
7311 				}
7312 			} else {
7313 				if (yych <= '$') {
7314 					if (yych <= '"') goto yy772;
7315 					if (yych <= '#') goto yy770;
7316 					goto yy774;
7317 				} else {
7318 					if (yych == '\'') goto yy770;
7319 					if (yych <= '/') goto yy772;
7320 					goto yy775;
7321 				}
7322 			}
7323 		} else {
7324 			if (yych <= ']') {
7325 				if (yych <= 'Z') {
7326 					if (yych <= '9') goto yy777;
7327 					if (yych <= '@') goto yy772;
7328 					goto yy779;
7329 				} else {
7330 					if (yych <= '[') goto yy772;
7331 					if (yych <= '\\') goto yy770;
7332 					goto yy782;
7333 				}
7334 			} else {
7335 				if (yych <= '`') {
7336 					if (yych == '_') goto yy779;
7337 					goto yy772;
7338 				} else {
7339 					if (yych <= 'z') goto yy779;
7340 					if (yych <= '~') goto yy772;
7341 					if (yych >= 0x80) goto yy779;
7342 				}
7343 			}
7344 		}
7345 yy768:
7346 		YYDEBUG(768, *YYCURSOR);
7347 		++YYCURSOR;
7348 		YYDEBUG(769, *YYCURSOR);
7349 		yyleng = YYCURSOR - SCNG(yy_text);
7350 #line 2390 "Zend/zend_language_scanner.l"
7351 		{
7352 	if (YYCURSOR > YYLIMIT) {
7353 		RETURN_TOKEN(END);
7354 	}
7355 
7356 	zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
7357 	goto restart;
7358 }
7359 #line 7360 "Zend/zend_language_scanner.c"
7360 yy770:
7361 		YYDEBUG(770, *YYCURSOR);
7362 		++YYCURSOR;
7363 		YYDEBUG(771, *YYCURSOR);
7364 		yyleng = YYCURSOR - SCNG(yy_text);
7365 #line 1884 "Zend/zend_language_scanner.l"
7366 		{
7367 	/* Invalid rule to return a more explicit parse error with proper line number */
7368 	yyless(0);
7369 	yy_pop_state();
7370 	ZVAL_NULL(zendlval);
7371 	RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
7372 }
7373 #line 7374 "Zend/zend_language_scanner.c"
7374 yy772:
7375 		YYDEBUG(772, *YYCURSOR);
7376 		++YYCURSOR;
7377 yy773:
7378 		YYDEBUG(773, *YYCURSOR);
7379 		yyleng = YYCURSOR - SCNG(yy_text);
7380 #line 1879 "Zend/zend_language_scanner.l"
7381 		{
7382 	/* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */
7383 	RETURN_TOKEN(yytext[0]);
7384 }
7385 #line 7386 "Zend/zend_language_scanner.c"
7386 yy774:
7387 		YYDEBUG(774, *YYCURSOR);
7388 		yych = *++YYCURSOR;
7389 		if (yych <= '_') {
7390 			if (yych <= '@') goto yy773;
7391 			if (yych <= 'Z') goto yy784;
7392 			if (yych <= '^') goto yy773;
7393 			goto yy784;
7394 		} else {
7395 			if (yych <= '`') goto yy773;
7396 			if (yych <= 'z') goto yy784;
7397 			if (yych <= 0x7F) goto yy773;
7398 			goto yy784;
7399 		}
7400 yy775:
7401 		YYDEBUG(775, *YYCURSOR);
7402 		yych = *(YYMARKER = ++YYCURSOR);
7403 		if (yych <= 'W') {
7404 			if (yych <= '9') {
7405 				if (yych >= '0') goto yy787;
7406 			} else {
7407 				if (yych == 'B') goto yy790;
7408 			}
7409 		} else {
7410 			if (yych <= 'b') {
7411 				if (yych <= 'X') goto yy792;
7412 				if (yych >= 'b') goto yy790;
7413 			} else {
7414 				if (yych == 'x') goto yy792;
7415 			}
7416 		}
7417 yy776:
7418 		YYDEBUG(776, *YYCURSOR);
7419 		yyleng = YYCURSOR - SCNG(yy_text);
7420 #line 1719 "Zend/zend_language_scanner.l"
7421 		{ /* Offset could be treated as a long */
7422 	if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
7423 		char *end;
7424 		errno = 0;
7425 		ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10));
7426 		if (errno == ERANGE) {
7427 			goto string;
7428 		}
7429 		ZEND_ASSERT(end == yytext + yyleng);
7430 	} else {
7431 string:
7432 		ZVAL_STRINGL(zendlval, yytext, yyleng);
7433 	}
7434 	RETURN_TOKEN(T_NUM_STRING);
7435 }
7436 #line 7437 "Zend/zend_language_scanner.c"
7437 yy777:
7438 		YYDEBUG(777, *YYCURSOR);
7439 		++YYCURSOR;
7440 		YYFILL(1);
7441 		yych = *YYCURSOR;
7442 		YYDEBUG(778, *YYCURSOR);
7443 		if (yybm[0+yych] & 16) {
7444 			goto yy777;
7445 		}
7446 		goto yy776;
7447 yy779:
7448 		YYDEBUG(779, *YYCURSOR);
7449 		++YYCURSOR;
7450 		YYFILL(1);
7451 		yych = *YYCURSOR;
7452 		YYDEBUG(780, *YYCURSOR);
7453 		if (yybm[0+yych] & 32) {
7454 			goto yy779;
7455 		}
7456 		YYDEBUG(781, *YYCURSOR);
7457 		yyleng = YYCURSOR - SCNG(yy_text);
7458 #line 1892 "Zend/zend_language_scanner.l"
7459 		{
7460 	zend_copy_value(zendlval, yytext, yyleng);
7461 	RETURN_TOKEN(T_STRING);
7462 }
7463 #line 7464 "Zend/zend_language_scanner.c"
7464 yy782:
7465 		YYDEBUG(782, *YYCURSOR);
7466 		++YYCURSOR;
7467 		YYDEBUG(783, *YYCURSOR);
7468 		yyleng = YYCURSOR - SCNG(yy_text);
7469 #line 1874 "Zend/zend_language_scanner.l"
7470 		{
7471 	yy_pop_state();
7472 	RETURN_TOKEN(']');
7473 }
7474 #line 7475 "Zend/zend_language_scanner.c"
7475 yy784:
7476 		YYDEBUG(784, *YYCURSOR);
7477 		++YYCURSOR;
7478 		YYFILL(1);
7479 		yych = *YYCURSOR;
7480 		YYDEBUG(785, *YYCURSOR);
7481 		if (yych <= '^') {
7482 			if (yych <= '9') {
7483 				if (yych >= '0') goto yy784;
7484 			} else {
7485 				if (yych <= '@') goto yy786;
7486 				if (yych <= 'Z') goto yy784;
7487 			}
7488 		} else {
7489 			if (yych <= '`') {
7490 				if (yych <= '_') goto yy784;
7491 			} else {
7492 				if (yych <= 'z') goto yy784;
7493 				if (yych >= 0x80) goto yy784;
7494 			}
7495 		}
7496 yy786:
7497 		YYDEBUG(786, *YYCURSOR);
7498 		yyleng = YYCURSOR - SCNG(yy_text);
7499 #line 1869 "Zend/zend_language_scanner.l"
7500 		{
7501 	zend_copy_value(zendlval, (yytext+1), (yyleng-1));
7502 	RETURN_TOKEN(T_VARIABLE);
7503 }
7504 #line 7505 "Zend/zend_language_scanner.c"
7505 yy787:
7506 		YYDEBUG(787, *YYCURSOR);
7507 		++YYCURSOR;
7508 		YYFILL(1);
7509 		yych = *YYCURSOR;
7510 		YYDEBUG(788, *YYCURSOR);
7511 		if (yych <= '/') goto yy789;
7512 		if (yych <= '9') goto yy787;
7513 yy789:
7514 		YYDEBUG(789, *YYCURSOR);
7515 		yyleng = YYCURSOR - SCNG(yy_text);
7516 #line 1735 "Zend/zend_language_scanner.l"
7517 		{ /* Offset must be treated as a string */
7518 	ZVAL_STRINGL(zendlval, yytext, yyleng);
7519 	RETURN_TOKEN(T_NUM_STRING);
7520 }
7521 #line 7522 "Zend/zend_language_scanner.c"
7522 yy790:
7523 		YYDEBUG(790, *YYCURSOR);
7524 		yych = *++YYCURSOR;
7525 		if (yybm[0+yych] & 64) {
7526 			goto yy793;
7527 		}
7528 yy791:
7529 		YYDEBUG(791, *YYCURSOR);
7530 		YYCURSOR = YYMARKER;
7531 		goto yy776;
7532 yy792:
7533 		YYDEBUG(792, *YYCURSOR);
7534 		yych = *++YYCURSOR;
7535 		if (yybm[0+yych] & 128) {
7536 			goto yy795;
7537 		}
7538 		goto yy791;
7539 yy793:
7540 		YYDEBUG(793, *YYCURSOR);
7541 		++YYCURSOR;
7542 		YYFILL(1);
7543 		yych = *YYCURSOR;
7544 		YYDEBUG(794, *YYCURSOR);
7545 		if (yybm[0+yych] & 64) {
7546 			goto yy793;
7547 		}
7548 		goto yy789;
7549 yy795:
7550 		YYDEBUG(795, *YYCURSOR);
7551 		++YYCURSOR;
7552 		YYFILL(1);
7553 		yych = *YYCURSOR;
7554 		YYDEBUG(796, *YYCURSOR);
7555 		if (yybm[0+yych] & 128) {
7556 			goto yy795;
7557 		}
7558 		goto yy789;
7559 	}
7560 /* *********************************** */
7561 yyc_INITIAL:
7562 	YYDEBUG(797, *YYCURSOR);
7563 	YYFILL(7);
7564 	yych = *YYCURSOR;
7565 	if (yych == '<') goto yy801;
7566 	YYDEBUG(799, *YYCURSOR);
7567 	++YYCURSOR;
7568 yy800:
7569 	YYDEBUG(800, *YYCURSOR);
7570 	yyleng = YYCURSOR - SCNG(yy_text);
7571 #line 1804 "Zend/zend_language_scanner.l"
7572 	{
7573 	if (YYCURSOR > YYLIMIT) {
7574 		RETURN_TOKEN(END);
7575 	}
7576 
7577 inline_char_handler:
7578 
7579 	while (1) {
7580 		YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
7581 
7582 		YYCURSOR = ptr ? ptr + 1 : YYLIMIT;
7583 
7584 		if (YYCURSOR >= YYLIMIT) {
7585 			break;
7586 		}
7587 
7588 		if (*YYCURSOR == '?') {
7589 			if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */
7590 
7591 				YYCURSOR--;
7592 				break;
7593 			}
7594 		}
7595 	}
7596 
7597 	yyleng = YYCURSOR - SCNG(yy_text);
7598 
7599 	if (SCNG(output_filter)) {
7600 		size_t readsize;
7601 		char *s = NULL;
7602 		size_t sz = 0;
7603 		// TODO: avoid reallocation ???
7604 		readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng);
7605 		ZVAL_STRINGL(zendlval, s, sz);
7606 		efree(s);
7607 		if (readsize < yyleng) {
7608 			yyless(readsize);
7609 		}
7610 	} else {
7611 	  ZVAL_STRINGL(zendlval, yytext, yyleng);
7612 	}
7613 	HANDLE_NEWLINES(yytext, yyleng);
7614 	RETURN_TOKEN(T_INLINE_HTML);
7615 }
7616 #line 7617 "Zend/zend_language_scanner.c"
7617 yy801:
7618 	YYDEBUG(801, *YYCURSOR);
7619 	yych = *++YYCURSOR;
7620 	if (yych != '?') goto yy800;
7621 	YYDEBUG(802, *YYCURSOR);
7622 	yych = *(YYMARKER = ++YYCURSOR);
7623 	if (yych <= 'O') {
7624 		if (yych == '=') goto yy804;
7625 	} else {
7626 		if (yych <= 'P') goto yy806;
7627 		if (yych == 'p') goto yy806;
7628 	}
7629 yy803:
7630 	YYDEBUG(803, *YYCURSOR);
7631 	yyleng = YYCURSOR - SCNG(yy_text);
7632 #line 1795 "Zend/zend_language_scanner.l"
7633 	{
7634 	if (CG(short_tags)) {
7635 		BEGIN(ST_IN_SCRIPTING);
7636 		RETURN_TOKEN(T_OPEN_TAG);
7637 	} else {
7638 		goto inline_char_handler;
7639 	}
7640 }
7641 #line 7642 "Zend/zend_language_scanner.c"
7642 yy804:
7643 	YYDEBUG(804, *YYCURSOR);
7644 	++YYCURSOR;
7645 	YYDEBUG(805, *YYCURSOR);
7646 	yyleng = YYCURSOR - SCNG(yy_text);
7647 #line 1782 "Zend/zend_language_scanner.l"
7648 	{
7649 	BEGIN(ST_IN_SCRIPTING);
7650 	RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO);
7651 }
7652 #line 7653 "Zend/zend_language_scanner.c"
7653 yy806:
7654 	YYDEBUG(806, *YYCURSOR);
7655 	yych = *++YYCURSOR;
7656 	if (yych == 'H') goto yy808;
7657 	if (yych == 'h') goto yy808;
7658 yy807:
7659 	YYDEBUG(807, *YYCURSOR);
7660 	YYCURSOR = YYMARKER;
7661 	goto yy803;
7662 yy808:
7663 	YYDEBUG(808, *YYCURSOR);
7664 	yych = *++YYCURSOR;
7665 	if (yych == 'P') goto yy809;
7666 	if (yych != 'p') goto yy807;
7667 yy809:
7668 	YYDEBUG(809, *YYCURSOR);
7669 	yych = *++YYCURSOR;
7670 	if (yych <= '\f') {
7671 		if (yych <= 0x08) goto yy807;
7672 		if (yych >= '\v') goto yy807;
7673 	} else {
7674 		if (yych <= '\r') goto yy812;
7675 		if (yych != ' ') goto yy807;
7676 	}
7677 yy810:
7678 	YYDEBUG(810, *YYCURSOR);
7679 	++YYCURSOR;
7680 yy811:
7681 	YYDEBUG(811, *YYCURSOR);
7682 	yyleng = YYCURSOR - SCNG(yy_text);
7683 #line 1788 "Zend/zend_language_scanner.l"
7684 	{
7685 	HANDLE_NEWLINE(yytext[yyleng-1]);
7686 	BEGIN(ST_IN_SCRIPTING);
7687 	RETURN_TOKEN(T_OPEN_TAG);
7688 }
7689 #line 7690 "Zend/zend_language_scanner.c"
7690 yy812:
7691 	YYDEBUG(812, *YYCURSOR);
7692 	yych = *++YYCURSOR;
7693 	if (yych == '\n') goto yy810;
7694 	goto yy811;
7695 /* *********************************** */
7696 yyc_ST_END_HEREDOC:
7697 	YYDEBUG(813, *YYCURSOR);
7698 	YYFILL(1);
7699 	yych = *YYCURSOR;
7700 	YYDEBUG(815, *YYCURSOR);
7701 	++YYCURSOR;
7702 	YYDEBUG(816, *YYCURSOR);
7703 	yyleng = YYCURSOR - SCNG(yy_text);
7704 #line 2134 "Zend/zend_language_scanner.l"
7705 	{
7706 	zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
7707 
7708 	YYCURSOR += heredoc_label->length - 1;
7709 	yyleng = heredoc_label->length;
7710 
7711 	heredoc_label_dtor(heredoc_label);
7712 	efree(heredoc_label);
7713 
7714 	BEGIN(ST_IN_SCRIPTING);
7715 	RETURN_TOKEN(T_END_HEREDOC);
7716 }
7717 #line 7718 "Zend/zend_language_scanner.c"
7718 /* *********************************** */
7719 yyc_ST_NOWDOC:
7720 	YYDEBUG(817, *YYCURSOR);
7721 	YYFILL(1);
7722 	yych = *YYCURSOR;
7723 	YYDEBUG(819, *YYCURSOR);
7724 	++YYCURSOR;
7725 	YYDEBUG(820, *YYCURSOR);
7726 	yyleng = YYCURSOR - SCNG(yy_text);
7727 #line 2333 "Zend/zend_language_scanner.l"
7728 	{
7729 	int newline = 0;
7730 
7731 	zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack));
7732 
7733 	if (YYCURSOR > YYLIMIT) {
7734 		RETURN_TOKEN(END);
7735 	}
7736 
7737 	YYCURSOR--;
7738 
7739 	while (YYCURSOR < YYLIMIT) {
7740 		switch (*YYCURSOR++) {
7741 			case '\r':
7742 				if (*YYCURSOR == '\n') {
7743 					YYCURSOR++;
7744 				}
7745 				/* fall through */
7746 			case '\n':
7747 				/* Check for ending label on the next line */
7748 				if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) {
7749 					YYCTYPE *end = YYCURSOR + heredoc_label->length;
7750 
7751 					if (*end == ';') {
7752 						end++;
7753 					}
7754 
7755 					if (*end == '\n' || *end == '\r') {
7756 						/* newline before label will be subtracted from returned text, but
7757 						 * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
7758 						if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') {
7759 							newline = 2; /* Windows newline */
7760 						} else {
7761 							newline = 1;
7762 						}
7763 
7764 						CG(increment_lineno) = 1; /* For newline before label */
7765 						BEGIN(ST_END_HEREDOC);
7766 
7767 						goto nowdoc_scan_done;
7768 					}
7769 				}
7770 				/* fall through */
7771 			default:
7772 				continue;
7773 		}
7774 	}
7775 
7776 nowdoc_scan_done:
7777 	yyleng = YYCURSOR - SCNG(yy_text);
7778 
7779 	zend_copy_value(zendlval, yytext, yyleng - newline);
7780 	HANDLE_NEWLINES(yytext, yyleng - newline);
7781 	RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
7782 }
7783 #line 7784 "Zend/zend_language_scanner.c"
7784 }
7785 #line 2399 "Zend/zend_language_scanner.l"
7786 
7787 }
7788