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