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