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