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