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