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