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