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