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