PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - var/php_gcov/PHP_5_3/lcov_data/Zend - zend_language_scanner.c
Test: PHP Code Coverage
Date: 2009-11-21 Instrumented lines: 3319
Code covered: 89.6 % Executed lines: 2975
Legend: not executed executed

       1                 : /* Generated by re2c 0.13.5 on Mon Nov 16 23:30:01 2009 */
       2                 : #line 1 "Zend/zend_language_scanner.l"
       3                 : /*
       4                 :    +----------------------------------------------------------------------+
       5                 :    | Zend Engine                                                          |
       6                 :    +----------------------------------------------------------------------+
       7                 :    | Copyright (c) 1998-2009 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: zend_language_scanner.c 290862 2009-11-17 11:18:40Z felipe $ */
      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                 : #include "zend_alloc.h"
      39                 : #include <zend_language_parser.h>
      40                 : #include "zend_compile.h"
      41                 : #include "zend_language_scanner.h"
      42                 : #include "zend_highlight.h"
      43                 : #include "zend_constants.h"
      44                 : #include "zend_variables.h"
      45                 : #include "zend_operators.h"
      46                 : #include "zend_API.h"
      47                 : #include "zend_strtod.h"
      48                 : #include "zend_exceptions.h"
      49                 : #include "tsrm_virtual_cwd.h"
      50                 : #include "tsrm_config_common.h"
      51                 : 
      52                 : #define YYCTYPE   unsigned char
      53                 : #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
      54                 : #define YYCURSOR  SCNG(yy_cursor)
      55                 : #define YYLIMIT   SCNG(yy_limit)
      56                 : #define YYMARKER  SCNG(yy_marker)
      57                 : 
      58                 : #define YYGETCONDITION()  SCNG(yy_state)
      59                 : #define YYSETCONDITION(s) SCNG(yy_state) = s
      60                 : 
      61                 : #define STATE(name)  yyc##name
      62                 : 
      63                 : /* emulate flex constructs */
      64                 : #define BEGIN(state) YYSETCONDITION(STATE(state))
      65                 : #define YYSTATE      YYGETCONDITION()
      66                 : #define yytext       ((char*)SCNG(yy_text))
      67                 : #define yyleng       SCNG(yy_leng)
      68                 : #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
      69                 :                           yyleng   = (unsigned int)x; } while(0)
      70                 : #define yymore()     goto yymore_restart
      71                 : 
      72                 : /* perform sanity check. If this message is triggered you should
      73                 :    increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
      74                 : #define YYMAXFILL 16
      75                 : #if ZEND_MMAP_AHEAD < YYMAXFILL
      76                 : # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL
      77                 : #endif
      78                 : 
      79                 : #ifdef HAVE_STDARG_H
      80                 : # include <stdarg.h>
      81                 : #endif
      82                 : 
      83                 : #ifdef HAVE_UNISTD_H
      84                 : # include <unistd.h>
      85                 : #endif
      86                 : 
      87                 : /* Globals Macros */
      88                 : #define SCNG    LANG_SCNG
      89                 : #ifdef ZTS
      90                 : ZEND_API ts_rsrc_id language_scanner_globals_id;
      91                 : #else
      92                 : ZEND_API zend_php_scanner_globals language_scanner_globals;
      93                 : #endif
      94                 : 
      95                 : #define HANDLE_NEWLINES(s, l)                                                                                                   \
      96                 : do {                                                                                                                                                    \
      97                 :         char *p = (s), *boundary = p+(l);                                                                                       \
      98                 :                                                                                                                                                                 \
      99                 :         while (p<boundary) {                                                                                                         \
     100                 :                 if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {                                   \
     101                 :                         CG(zend_lineno)++;                                                                                                      \
     102                 :                 }                                                                                                                                               \
     103                 :                 p++;                                                                                                                                    \
     104                 :         }                                                                                                                                                       \
     105                 : } while (0)
     106                 : 
     107                 : #define HANDLE_NEWLINE(c) \
     108                 : { \
     109                 :         if (c == '\n' || c == '\r') { \
     110                 :                 CG(zend_lineno)++; \
     111                 :         } \
     112                 : }
     113                 : 
     114                 : /* To save initial string length after scanning to first variable, CG(doc_comment_len) can be reused */
     115                 : #define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) CG(doc_comment_len) = (len)
     116                 : #define GET_DOUBLE_QUOTES_SCANNED_LENGTH()    CG(doc_comment_len)
     117                 : 
     118                 : #define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x7F)
     119                 : 
     120                 : #define ZEND_IS_OCT(c)  ((c)>='0' && (c)<='7')
     121                 : #define ZEND_IS_HEX(c)  (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F'))
     122                 : 
     123                 : BEGIN_EXTERN_C()
     124                 : 
     125                 : static void _yy_push_state(int new_state TSRMLS_DC)
     126                 : {
     127                 :         zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int));
     128                 :         YYSETCONDITION(new_state);
     129                 : }
     130                 : 
     131                 : #define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
     132                 : 
     133                 : static void yy_pop_state(TSRMLS_D)
     134                 : {
     135                 :         int *stack_state;
     136                 :         zend_stack_top(&SCNG(state_stack), (void **) &stack_state);
     137                 :         YYSETCONDITION(*stack_state);
     138                 :         zend_stack_del_top(&SCNG(state_stack));
     139                 : }
     140                 : 
     141                 : static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
     142                 : {
     143                 :         YYCURSOR       = (YYCTYPE*)str;
     144                 :         SCNG(yy_start) = YYCURSOR;
     145                 :         YYLIMIT        = YYCURSOR + len;
     146                 : }
     147                 : 
     148                 : void startup_scanner(TSRMLS_D)
     149                 : {
     150                 :         CG(heredoc) = NULL;
     151                 :         CG(heredoc_len) = 0;
     152                 :         CG(doc_comment) = NULL;
     153                 :         CG(doc_comment_len) = 0;
     154                 :         zend_stack_init(&SCNG(state_stack));
     155                 : }
     156                 : 
     157                 : void shutdown_scanner(TSRMLS_D)
     158                 : {
     159                 :         if (CG(heredoc)) {
     160                 :                 efree(CG(heredoc));
     161                 :                 CG(heredoc_len)=0;
     162                 :         }
     163                 :         zend_stack_destroy(&SCNG(state_stack));
     164                 :         RESET_DOC_COMMENT();
     165                 : }
     166                 : 
     167                 : ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC)
     168                 : {
     169                 :         lex_state->yy_leng   = SCNG(yy_leng);
     170                 :         lex_state->yy_start  = SCNG(yy_start);
     171                 :         lex_state->yy_text   = SCNG(yy_text);
     172                 :         lex_state->yy_cursor = SCNG(yy_cursor);
     173                 :         lex_state->yy_marker = SCNG(yy_marker);
     174                 :         lex_state->yy_limit  = SCNG(yy_limit);
     175                 : 
     176                 :         lex_state->state_stack = SCNG(state_stack);
     177                 :         zend_stack_init(&SCNG(state_stack));
     178                 : 
     179                 :         lex_state->in = SCNG(yy_in);
     180                 :         lex_state->yy_state = YYSTATE;
     181                 :         lex_state->filename = zend_get_compiled_filename(TSRMLS_C);
     182                 :         lex_state->lineno = CG(zend_lineno);
     183                 : 
     184                 : #ifdef ZEND_MULTIBYTE
     185                 :         lex_state->script_org = SCNG(script_org);
     186                 :         lex_state->script_org_size = SCNG(script_org_size);
     187                 :         lex_state->script_filtered = SCNG(script_filtered);
     188                 :         lex_state->script_filtered_size = SCNG(script_filtered_size);
     189                 :         lex_state->input_filter = SCNG(input_filter);
     190                 :         lex_state->output_filter = SCNG(output_filter);
     191                 :         lex_state->script_encoding = SCNG(script_encoding);
     192                 :         lex_state->internal_encoding = SCNG(internal_encoding);
     193                 : #endif /* ZEND_MULTIBYTE */
     194                 : }
     195                 : 
     196                 : ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC)
     197                 : {
     198                 :         SCNG(yy_leng)   = lex_state->yy_leng;
     199                 :         SCNG(yy_start)  = lex_state->yy_start;
     200                 :         SCNG(yy_text)   = lex_state->yy_text;
     201                 :         SCNG(yy_cursor) = lex_state->yy_cursor;
     202                 :         SCNG(yy_marker) = lex_state->yy_marker;
     203                 :         SCNG(yy_limit)  = lex_state->yy_limit;
     204                 : 
     205                 :         zend_stack_destroy(&SCNG(state_stack));
     206                 :         SCNG(state_stack) = lex_state->state_stack;
     207                 : 
     208                 :         SCNG(yy_in) = lex_state->in;
     209                 :         YYSETCONDITION(lex_state->yy_state);
     210                 :         CG(zend_lineno) = lex_state->lineno;
     211                 :         zend_restore_compiled_filename(lex_state->filename TSRMLS_CC);
     212                 : #ifdef ZEND_MULTIBYTE
     213                 :         if (SCNG(script_org)) {
     214                 :                 efree(SCNG(script_org));
     215                 :                 SCNG(script_org) = NULL;
     216                 :         }
     217                 :         if (SCNG(script_filtered)) {
     218                 :                 efree(SCNG(script_filtered));
     219                 :                 SCNG(script_filtered) = NULL;
     220                 :         }
     221                 :         SCNG(script_org) = lex_state->script_org;
     222                 :         SCNG(script_org_size) = lex_state->script_org_size;
     223                 :         SCNG(script_filtered) = lex_state->script_filtered;
     224                 :         SCNG(script_filtered_size) = lex_state->script_filtered_size;
     225                 :         SCNG(input_filter) = lex_state->input_filter;
     226                 :         SCNG(output_filter) = lex_state->output_filter;
     227                 :         SCNG(script_encoding) = lex_state->script_encoding;
     228                 :         SCNG(internal_encoding) = lex_state->internal_encoding;
     229                 : #endif /* ZEND_MULTIBYTE */
     230                 : }
     231                 : 
     232                 : ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC)
     233                 : {
     234                 :         zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles);
     235                 :         /* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */
     236                 :         file_handle->opened_path = NULL;
     237                 :         if (file_handle->free_filename) {
     238                 :                 file_handle->filename = NULL;
     239                 :         }
     240                 : }
     241                 : 
     242                 : 
     243                 : ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC)
     244                 : {
     245                 :         char *file_path = NULL, *buf;
     246                 :         size_t size;
     247                 : 
     248                 :         if (zend_stream_fixup(file_handle, &buf, &size TSRMLS_CC) == FAILURE) {
     249                 :                 return FAILURE;
     250                 :         }
     251                 : 
     252                 :         zend_llist_add_element(&CG(open_files), file_handle);
     253                 :         if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) {
     254                 :                 zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files));
     255                 :                 size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle;
     256                 :                 fh->handle.stream.handle = (void*)(((char*)fh) + diff);
     257                 :                 file_handle->handle.stream.handle = fh->handle.stream.handle;
     258                 :         }
     259                 : 
     260                 :         /* Reset the scanner for scanning the new file */
     261                 :         SCNG(yy_in) = file_handle;
     262                 : 
     263                 :         if (size != -1) {
     264                 : #ifdef ZEND_MULTIBYTE
     265                 :                 if (zend_multibyte_read_script((unsigned char *)buf, size TSRMLS_CC) != 0) {
     266                 :                         return FAILURE;
     267                 :                 }
     268                 : 
     269                 :                 SCNG(yy_in) = NULL;
     270                 : 
     271                 :                 zend_multibyte_set_filter(NULL TSRMLS_CC);
     272                 : 
     273                 :                 if (!SCNG(input_filter)) {
     274                 :                         SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1);
     275                 :                         memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1);
     276                 :                         SCNG(script_filtered_size) = SCNG(script_org_size);
     277                 :                 } else {
     278                 :                         SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC);
     279                 :                 }
     280                 : 
     281                 :                 yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC);
     282                 : #else /* !ZEND_MULTIBYTE */
     283                 :                 yy_scan_buffer(buf, size TSRMLS_CC);
     284                 : #endif /* ZEND_MULTIBYTE */
     285                 :         } else {
     286                 :                 zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed");
     287                 :         }
     288                 : 
     289                 :         BEGIN(INITIAL);
     290                 : 
     291                 :         if (file_handle->opened_path) {
     292                 :                 file_path = file_handle->opened_path;
     293                 :         } else {
     294                 :                 file_path = file_handle->filename;
     295                 :         }
     296                 : 
     297                 :         zend_set_compiled_filename(file_path TSRMLS_CC);
     298                 : 
     299                 :         if (CG(start_lineno)) {
     300                 :                 CG(zend_lineno) = CG(start_lineno);
     301                 :                 CG(start_lineno) = 0;
     302                 :         } else {
     303                 :                 CG(zend_lineno) = 1;
     304                 :         }
     305                 : 
     306                 :         CG(increment_lineno) = 0;
     307                 :         return SUCCESS;
     308                 : }
     309                 : END_EXTERN_C()
     310                 : 
     311                 : 
     312                 : ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC)
     313                 : {
     314                 :         zend_lex_state original_lex_state;
     315                 :         zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
     316                 :         zend_op_array *original_active_op_array = CG(active_op_array);
     317                 :         zend_op_array *retval=NULL;
     318                 :         int compiler_result;
     319                 :         zend_bool compilation_successful=0;
     320                 :         znode retval_znode;
     321                 :         zend_bool original_in_compilation = CG(in_compilation);
     322                 : 
     323                 :         retval_znode.op_type = IS_CONST;
     324                 :         retval_znode.u.constant.type = IS_LONG;
     325                 :         retval_znode.u.constant.value.lval = 1;
     326                 :         Z_UNSET_ISREF(retval_znode.u.constant);
     327                 :         Z_SET_REFCOUNT(retval_znode.u.constant, 1);
     328                 : 
     329                 :         zend_save_lexical_state(&original_lex_state TSRMLS_CC);
     330                 : 
     331                 :         retval = op_array; /* success oriented */
     332                 : 
     333                 :         if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) {
     334                 :                 if (type==ZEND_REQUIRE) {
     335                 :                         zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC);
     336                 :                         zend_bailout();
     337                 :                 } else {
     338                 :                         zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC);
     339                 :                 }
     340                 :                 compilation_successful=0;
     341                 :         } else {
     342                 :                 init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC);
     343                 :                 CG(in_compilation) = 1;
     344                 :                 CG(active_op_array) = op_array;
     345                 :                 compiler_result = zendparse(TSRMLS_C);
     346                 :                 zend_do_return(&retval_znode, 0 TSRMLS_CC);
     347                 :                 CG(in_compilation) = original_in_compilation;
     348                 :                 if (compiler_result==1) { /* parser error */
     349                 :                         zend_bailout();
     350                 :                 }
     351                 :                 compilation_successful=1;
     352                 :         }
     353                 : 
     354                 :         if (retval) {
     355                 :                 CG(active_op_array) = original_active_op_array;
     356                 :                 if (compilation_successful) {
     357                 :                         pass_two(op_array TSRMLS_CC);
     358                 :                         zend_release_labels(TSRMLS_C);
     359                 :                 } else {
     360                 :                         efree(op_array);
     361                 :                         retval = NULL;
     362                 :                 }
     363                 :         }
     364                 :         zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
     365                 :         return retval;
     366                 : }
     367                 : 
     368                 : 
     369                 : zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC)
     370                 : {
     371                 :         zend_file_handle file_handle;
     372                 :         zval tmp;
     373                 :         zend_op_array *retval;
     374                 :         char *opened_path = NULL;
     375                 : 
     376                 :         if (filename->type != IS_STRING) {
     377                 :                 tmp = *filename;
     378                 :                 zval_copy_ctor(&tmp);
     379                 :                 convert_to_string(&tmp);
     380                 :                 filename = &tmp;
     381                 :         }
     382                 :         file_handle.filename = filename->value.str.val;
     383                 :         file_handle.free_filename = 0;
     384                 :         file_handle.type = ZEND_HANDLE_FILENAME;
     385                 :         file_handle.opened_path = NULL;
     386                 :         file_handle.handle.fp = NULL;
     387                 : 
     388                 :         retval = zend_compile_file(&file_handle, type TSRMLS_CC);
     389                 :         if (retval && file_handle.handle.stream.handle) {
     390                 :                 int dummy = 1;
     391                 : 
     392                 :                 if (!file_handle.opened_path) {
     393                 :                         file_handle.opened_path = opened_path = estrndup(filename->value.str.val, filename->value.str.len);
     394                 :                 }
     395                 : 
     396                 :                 zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL);
     397                 : 
     398                 :                 if (opened_path) {
     399                 :                         efree(opened_path);
     400                 :                 }
     401                 :         }
     402                 :         zend_destroy_file_handle(&file_handle TSRMLS_CC);
     403                 : 
     404                 :         if (filename==&tmp) {
     405                 :                 zval_dtor(&tmp);
     406                 :         }
     407                 :         return retval;
     408                 : }
     409                 : 
     410                 : ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC)
     411                 : {
     412                 :         /* enforce two trailing NULLs for flex... */
     413                 :         str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD);
     414                 : 
     415                 :         memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD);
     416                 : 
     417                 :         SCNG(yy_in)=NULL;
     418                 : 
     419                 : #ifdef ZEND_MULTIBYTE
     420                 :         SCNG(script_org) = (unsigned char *)estrdup(str->value.str.val);
     421                 :         SCNG(script_org_size) = str->value.str.len;
     422                 : 
     423                 :         zend_multibyte_set_filter(CG(internal_encoding) TSRMLS_CC);
     424                 : 
     425                 :         if (!SCNG(input_filter)) {
     426                 :                 SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1);
     427                 :                 memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1);
     428                 :                 SCNG(script_filtered_size) = SCNG(script_org_size);
     429                 :         } else {
     430                 :                 SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC);
     431                 :         }
     432                 : 
     433                 :         yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC);    
     434                 : #else /* !ZEND_MULTIBYTE */
     435                 :         yy_scan_buffer(str->value.str.val, str->value.str.len TSRMLS_CC);
     436                 : #endif /* ZEND_MULTIBYTE */
     437                 : 
     438                 :         zend_set_compiled_filename(filename TSRMLS_CC);
     439                 :         CG(zend_lineno) = 1;
     440                 :         CG(increment_lineno) = 0;
     441                 :         return SUCCESS;
     442                 : }
     443                 : 
     444                 : 
     445                 : ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D)
     446                 : {
     447                 :         size_t offset = SCNG(yy_cursor) - SCNG(yy_start);
     448                 : #ifdef ZEND_MULTIBYTE
     449                 :         if (SCNG(input_filter)) {
     450                 :                 size_t original_offset = offset, length = 0; do {
     451                 :                         unsigned char *p = NULL;
     452                 :                         SCNG(input_filter)(&p, &length, SCNG(script_org), offset TSRMLS_CC);
     453                 :                         if (!p) {
     454                 :                                 break;
     455                 :                         }
     456                 :                         efree(p);
     457                 :                         if (length > original_offset) {
     458                 :                                 offset--;
     459                 :                         } else if (length < original_offset) {
     460                 :                                 offset++;
     461                 :                         }
     462                 :                 } while (original_offset != length);
     463                 :         }
     464                 : #endif
     465                 :         return offset;
     466                 : }
     467                 : 
     468                 : 
     469                 : zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC)
     470                 : {
     471                 :         zend_lex_state original_lex_state;
     472                 :         zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
     473                 :         zend_op_array *original_active_op_array = CG(active_op_array);
     474                 :         zend_op_array *retval;
     475                 :         zval tmp;
     476                 :         int compiler_result;
     477                 :         zend_bool original_in_compilation = CG(in_compilation);
     478                 : 
     479                 :         if (source_string->value.str.len==0) {
     480                 :                 efree(op_array);
     481                 :                 return NULL;
     482                 :         }
     483                 : 
     484                 :         CG(in_compilation) = 1;
     485                 : 
     486                 :         tmp = *source_string;
     487                 :         zval_copy_ctor(&tmp);
     488                 :         convert_to_string(&tmp);
     489                 :         source_string = &tmp;
     490                 : 
     491                 :         zend_save_lexical_state(&original_lex_state TSRMLS_CC);
     492                 :         if (zend_prepare_string_for_scanning(source_string, filename TSRMLS_CC)==FAILURE) {
     493                 :                 efree(op_array);
     494                 :                 retval = NULL;
     495                 :         } else {
     496                 :                 zend_bool orig_interactive = CG(interactive);
     497                 : 
     498                 :                 CG(interactive) = 0;
     499                 :                 init_op_array(op_array, ZEND_EVAL_CODE, INITIAL_OP_ARRAY_SIZE TSRMLS_CC);
     500                 :                 CG(interactive) = orig_interactive;
     501                 :                 CG(active_op_array) = op_array;
     502                 :                 BEGIN(ST_IN_SCRIPTING);
     503                 :                 compiler_result = zendparse(TSRMLS_C);
     504                 : 
     505                 : #ifdef ZEND_MULTIBYTE
     506                 :                 if (SCNG(script_org)) {
     507                 :                         efree(SCNG(script_org));
     508                 :                         SCNG(script_org) = NULL;
     509                 :                 }
     510                 :                 if (SCNG(script_filtered)) {
     511                 :                         efree(SCNG(script_filtered));
     512                 :                         SCNG(script_filtered) = NULL;
     513                 :                 }
     514                 : #endif /* ZEND_MULTIBYTE */
     515                 : 
     516                 :                 if (compiler_result==1) {
     517                 :                         CG(active_op_array) = original_active_op_array;
     518                 :                         CG(unclean_shutdown)=1;
     519                 :                         retval = NULL;
     520                 :                 } else {
     521                 :                         zend_do_return(NULL, 0 TSRMLS_CC);
     522                 :                         CG(active_op_array) = original_active_op_array;
     523                 :                         pass_two(op_array TSRMLS_CC);
     524                 :                         zend_release_labels(TSRMLS_C);
     525                 :                         retval = op_array;
     526                 :                 }
     527                 :         }
     528                 :         zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
     529                 :         zval_dtor(&tmp);
     530                 :         CG(in_compilation) = original_in_compilation;
     531                 :         return retval;
     532                 : }
     533                 : 
     534                 : 
     535                 : BEGIN_EXTERN_C()
     536                 : int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC)
     537                 : {
     538                 :         zend_lex_state original_lex_state;
     539                 :         zend_file_handle file_handle;
     540                 : 
     541                 :         file_handle.type = ZEND_HANDLE_FILENAME;
     542                 :         file_handle.filename = filename;
     543                 :         file_handle.free_filename = 0;
     544                 :         file_handle.opened_path = NULL;
     545                 :         zend_save_lexical_state(&original_lex_state TSRMLS_CC);
     546                 :         if (open_file_for_scanning(&file_handle TSRMLS_CC)==FAILURE) {
     547                 :                 zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename TSRMLS_CC);
     548                 :                 zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
     549                 :                 return FAILURE;
     550                 :         }
     551                 :         zend_highlight(syntax_highlighter_ini TSRMLS_CC);
     552                 : #ifdef ZEND_MULTIBYTE
     553                 :         if (SCNG(script_org)) {
     554                 :                 efree(SCNG(script_org));
     555                 :                 SCNG(script_org) = NULL;
     556                 :         }
     557                 :         if (SCNG(script_filtered)) {
     558                 :                 efree(SCNG(script_filtered));
     559                 :                 SCNG(script_filtered) = NULL;
     560                 :         }
     561                 : #endif /* ZEND_MULTIBYTE */
     562                 :         zend_destroy_file_handle(&file_handle TSRMLS_CC);
     563                 :         zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
     564                 :         return SUCCESS;
     565                 : }
     566                 : 
     567                 : int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name TSRMLS_DC)
     568                 : {
     569                 :         zend_lex_state original_lex_state;
     570                 :         zval tmp = *str;
     571                 : 
     572                 :         str = &tmp;
     573                 :         zval_copy_ctor(str);
     574                 :         zend_save_lexical_state(&original_lex_state TSRMLS_CC);
     575                 :         if (zend_prepare_string_for_scanning(str, str_name TSRMLS_CC)==FAILURE) {
     576                 :                 zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
     577                 :                 return FAILURE;
     578                 :         }
     579                 :         BEGIN(INITIAL);
     580                 :         zend_highlight(syntax_highlighter_ini TSRMLS_CC);
     581                 : #ifdef ZEND_MULTIBYTE
     582                 :         if (SCNG(script_org)) {
     583                 :                 efree(SCNG(script_org));
     584                 :                 SCNG(script_org) = NULL;
     585                 :         }
     586                 :         if (SCNG(script_filtered)) {
     587                 :                 efree(SCNG(script_filtered));
     588                 :                 SCNG(script_filtered) = NULL;
     589                 :         }
     590                 : #endif /* ZEND_MULTIBYTE */
     591                 :         zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
     592                 :         zval_dtor(str);
     593                 :         return SUCCESS;
     594                 : }
     595                 : END_EXTERN_C()
     596                 : 
     597                 : #ifdef ZEND_MULTIBYTE
     598                 : 
     599                 : BEGIN_EXTERN_C()
     600                 : ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC)
     601                 : {
     602                 :         size_t original_offset, offset, free_flag, new_len, length;
     603                 :         unsigned char *p;
     604                 : 
     605                 :         /* calculate current position */
     606                 :         offset = original_offset = YYCURSOR - SCNG(yy_start);
     607                 :         if (old_input_filter && offset > 0) {
     608                 :                 zend_encoding *new_encoding = SCNG(script_encoding);
     609                 :                 zend_encoding_filter new_filter = SCNG(input_filter);
     610                 :                 SCNG(script_encoding) = old_encoding;
     611                 :                 SCNG(input_filter) = old_input_filter;
     612                 :                 offset = zend_get_scanned_file_offset(TSRMLS_C);
     613                 :                 SCNG(script_encoding) = new_encoding;
     614                 :                 SCNG(input_filter) = new_filter;
     615                 :         }
     616                 : 
     617                 :         /* convert and set */
     618                 :         if (!SCNG(input_filter)) {
     619                 :                 length = SCNG(script_org_size) - offset;
     620                 :                 p = SCNG(script_org) + offset;
     621                 :                 free_flag = 0;
     622                 :         } else {
     623                 :                 SCNG(input_filter)(&p, &length, SCNG(script_org) + offset, SCNG(script_org_size) - offset TSRMLS_CC);
     624                 :                 free_flag = 1;
     625                 :         }
     626                 : 
     627                 :         new_len = original_offset + length;
     628                 : 
     629                 :         if (new_len > YYLIMIT - SCNG(yy_start)) {
     630                 :                 unsigned char *new_yy_start = erealloc(SCNG(yy_start), new_len);
     631                 :                 SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start));
     632                 :                 SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start));
     633                 :                 SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start));
     634                 :                 SCNG(yy_start) = new_yy_start;
     635                 :                 SCNG(script_filtered) = new_yy_start;
     636                 :                 SCNG(script_filtered_size) = new_len;
     637                 :         }
     638                 : 
     639                 :         SCNG(yy_limit) = SCNG(yy_start) + new_len;
     640                 :         memmove(SCNG(yy_start) + original_offset, p, length);
     641                 : 
     642                 :         if (free_flag) {
     643                 :                 efree(p);
     644                 :         }
     645                 : }
     646                 : 
     647                 : 
     648                 : ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC)
     649                 : {
     650                 :         size_t n;
     651                 : 
     652                 :         if (CG(interactive) == 0) {
     653                 :                 if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) {
     654                 :                         return FAILURE;
     655                 :                 }
     656                 :                 n = len;
     657                 :                 return n;
     658                 :         }
     659                 : 
     660                 :         /* interactive */
     661                 :         if (SCNG(script_org)) {
     662                 :                 efree(SCNG(script_org));
     663                 :         }
     664                 :         if (SCNG(script_filtered)) {
     665                 :                 efree(SCNG(script_filtered));
     666                 :         }
     667                 :         SCNG(script_org) = NULL;
     668                 :         SCNG(script_org_size) = 0;
     669                 : 
     670                 :         /* TODO: support widechars */
     671                 :         if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) {
     672                 :                 return FAILURE;
     673                 :         }
     674                 :         n = len;
     675                 : 
     676                 :         SCNG(script_org_size) = n;
     677                 :         SCNG(script_org) = (unsigned char*)emalloc(SCNG(script_org_size) + 1);
     678                 :         memcpy(SCNG(script_org), buf, n);
     679                 : 
     680                 :         return n;
     681                 : }
     682                 : 
     683                 : 
     684                 : ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC)
     685                 : {
     686                 :         if (SCNG(script_org)) {
     687                 :                 efree(SCNG(script_org));
     688                 :                 SCNG(script_org) = NULL;
     689                 :         }
     690                 :         SCNG(script_org_size) = n;      
     691                 :         
     692                 :         SCNG(script_org) = (unsigned char*)emalloc(SCNG(script_org_size) + 1);
     693                 :         memcpy(SCNG(script_org), buf, n);
     694                 :         *(SCNG(script_org)+SCNG(script_org_size)) = '\0';
     695                 : 
     696                 :         return 0;
     697                 : }
     698                 : 
     699                 : 
     700                 : # define zend_copy_value(zendlval, yytext, yyleng) \
     701                 :         if (SCNG(output_filter)) { \
     702                 :                 size_t sz = 0; \
     703                 :                 SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \
     704                 :                 zendlval->value.str.len = sz; \
     705                 :         } else { \
     706                 :                 zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \
     707                 :                 zendlval->value.str.len = yyleng; \
     708                 :         }
     709                 : #else /* ZEND_MULTIBYTE */
     710                 : # define zend_copy_value(zendlval, yytext, yyleng) \
     711                 :         zendlval->value.str.val = (char *)estrndup(yytext, yyleng); \
     712                 :         zendlval->value.str.len = yyleng;
     713                 : #endif /* ZEND_MULTIBYTE */
     714                 : 
     715                 : static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC)
     716                 : {
     717                 :         register char *s, *t;
     718                 :         char *end;
     719                 : 
     720                 :         ZVAL_STRINGL(zendlval, str, len, 1);
     721                 : 
     722                 :         /* convert escape sequences */
     723                 :         s = t = zendlval->value.str.val;
     724                 :         end = s+zendlval->value.str.len;
     725                 :         while (s<end) {
     726                 :                 if (*s=='\\') {
     727                 :                         s++;
     728                 :                         if (s >= end) {
     729                 :                                 *t++ = '\\';
     730                 :                                 break;
     731                 :                         }
     732                 : 
     733                 :                         switch(*s) {
     734                 :                                 case 'n':
     735                 :                                         *t++ = '\n';
     736                 :                                         zendlval->value.str.len--;
     737                 :                                         break;
     738                 :                                 case 'r':
     739                 :                                         *t++ = '\r';
     740                 :                                         zendlval->value.str.len--;
     741                 :                                         break;
     742                 :                                 case 't':
     743                 :                                         *t++ = '\t';
     744                 :                                         zendlval->value.str.len--;
     745                 :                                         break;
     746                 :                                 case 'f':
     747                 :                                         *t++ = '\f';
     748                 :                                         zendlval->value.str.len--;
     749                 :                                         break;
     750                 :                                 case 'v':
     751                 :                                         *t++ = '\v';
     752                 :                                         zendlval->value.str.len--;
     753                 :                                         break;
     754                 :                                 case '"':
     755                 :                                 case '`':
     756                 :                                         if (*s != quote_type) {
     757                 :                                                 *t++ = '\\';
     758                 :                                                 *t++ = *s;
     759                 :                                                 break;
     760                 :                                         }
     761                 :                                 case '\\':
     762                 :                                 case '$':
     763                 :                                         *t++ = *s;
     764                 :                                         zendlval->value.str.len--;
     765                 :                                         break;
     766                 :                                 case 'x':
     767                 :                                 case 'X':
     768                 :                                         if (ZEND_IS_HEX(*(s+1))) {
     769                 :                                                 char hex_buf[3] = { 0, 0, 0 };
     770                 : 
     771                 :                                                 zendlval->value.str.len--; /* for the 'x' */
     772                 : 
     773                 :                                                 hex_buf[0] = *(++s);
     774                 :                                                 zendlval->value.str.len--;
     775                 :                                                 if (ZEND_IS_HEX(*(s+1))) {
     776                 :                                                         hex_buf[1] = *(++s);
     777                 :                                                         zendlval->value.str.len--;
     778                 :                                                 }
     779                 :                                                 *t++ = (char) strtol(hex_buf, NULL, 16);
     780                 :                                         } else {
     781                 :                                                 *t++ = '\\';
     782                 :                                                 *t++ = *s;
     783                 :                                         }
     784                 :                                         break;
     785                 :                                 default:
     786                 :                                         /* check for an octal */
     787                 :                                         if (ZEND_IS_OCT(*s)) {
     788                 :                                                 char octal_buf[4] = { 0, 0, 0, 0 };
     789                 : 
     790                 :                                                 octal_buf[0] = *s;
     791                 :                                                 zendlval->value.str.len--;
     792                 :                                                 if (ZEND_IS_OCT(*(s+1))) {
     793                 :                                                         octal_buf[1] = *(++s);
     794                 :                                                         zendlval->value.str.len--;
     795                 :                                                         if (ZEND_IS_OCT(*(s+1))) {
     796                 :                                                                 octal_buf[2] = *(++s);
     797                 :                                                                 zendlval->value.str.len--;
     798                 :                                                         }
     799                 :                                                 }
     800                 :                                                 *t++ = (char) strtol(octal_buf, NULL, 8);
     801                 :                                         } else {
     802                 :                                                 *t++ = '\\';
     803                 :                                                 *t++ = *s;
     804                 :                                         }
     805                 :                                         break;
     806                 :                         }
     807                 :                 } else {
     808                 :                         *t++ = *s;
     809                 :                 }
     810                 : 
     811                 :                 if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
     812                 :                         CG(zend_lineno)++;
     813                 :                 }
     814                 :                 s++;
     815                 :         }
     816                 :         *t = 0;
     817                 : #ifdef ZEND_MULTIBYTE
     818                 :         if (SCNG(output_filter)) {
     819                 :                 size_t sz = 0;
     820                 :                 s = zendlval->value.str.val;
     821                 :                 SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC);
     822                 :                 zendlval->value.str.len = sz;
     823                 :                 efree(s);
     824                 :         }
     825                 : #endif /* ZEND_MULTIBYTE */
     826                 : }
     827                 : 
     828                 : 
     829                 : int lex_scan(zval *zendlval TSRMLS_DC)
     830                 : {
     831                 : restart:
     832                 :         SCNG(yy_text) = YYCURSOR;
     833                 : 
     834                 : yymore_restart:
     835                 : 
     836                 : 
     837                 : #line 838 "Zend/zend_language_scanner.c"
     838                 : {
     839                 :         YYCTYPE yych;
     840         5935888 :         unsigned int yyaccept = 0;
     841         5935888 :         if (YYGETCONDITION() < 5) {
     842         5878332 :                 if (YYGETCONDITION() < 2) {
     843         5828559 :                         if (YYGETCONDITION() < 1) {
     844         5793327 :                                 goto yyc_ST_IN_SCRIPTING;
     845                 :                         } else {
     846           35232 :                                 goto yyc_ST_LOOKING_FOR_PROPERTY;
     847                 :                         }
     848                 :                 } else {
     849           49773 :                         if (YYGETCONDITION() < 3) {
     850             407 :                                 goto yyc_ST_BACKQUOTE;
     851                 :                         } else {
     852           49366 :                                 if (YYGETCONDITION() < 4) {
     853           47132 :                                         goto yyc_ST_DOUBLE_QUOTES;
     854                 :                                 } else {
     855            2234 :                                         goto yyc_ST_HEREDOC;
     856                 :                                 }
     857                 :                         }
     858                 :                 }
     859                 :         } else {
     860           57556 :                 if (YYGETCONDITION() < 7) {
     861            2743 :                         if (YYGETCONDITION() < 6) {
     862              87 :                                 goto yyc_ST_LOOKING_FOR_VARNAME;
     863                 :                         } else {
     864            2656 :                                 goto yyc_ST_VAR_OFFSET;
     865                 :                         }
     866                 :                 } else {
     867           54813 :                         if (YYGETCONDITION() < 8) {
     868           53375 :                                 goto yyc_INITIAL;
     869                 :                         } else {
     870            1438 :                                 if (YYGETCONDITION() < 9) {
     871            1402 :                                         goto yyc_ST_END_HEREDOC;
     872                 :                                 } else {
     873              36 :                                         goto yyc_ST_NOWDOC;
     874                 :                                 }
     875                 :                         }
     876                 :                 }
     877                 :         }
     878                 : /* *********************************** */
     879           53375 : yyc_INITIAL:
     880                 :         {
     881                 :                 static const unsigned char yybm[] = {
     882                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     883                 :                           0, 128, 128,   0,   0, 128,   0,   0, 
     884                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     885                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     886                 :                         128,   0,   0,   0,   0,   0,   0,   0, 
     887                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     888                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     889                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     890                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     891                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     892                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     893                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     894                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     895                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     896                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     897                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     898                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     899                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     900                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     901                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     902                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     903                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     904                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     905                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     906                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     907                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     908                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     909                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     910                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     911                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     912                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     913                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
     914                 :                 };
     915                 : 
     916                 :                 YYDEBUG(0, *YYCURSOR);
     917           53375 :                 YYFILL(8);
     918           53375 :                 yych = *YYCURSOR;
     919           53375 :                 if (yych != '<') goto yy4;
     920                 :                 YYDEBUG(2, *YYCURSOR);
     921           25808 :                 yyaccept = 0;
     922           25808 :                 yych = *(YYMARKER = ++YYCURSOR);
     923           25808 :                 if (yych <= '?') {
     924           25709 :                         if (yych == '%') goto yy7;
     925           25707 :                         if (yych >= '?') goto yy5;
     926                 :                 } else {
     927              99 :                         if (yych <= 'S') {
     928               2 :                                 if (yych >= 'S') goto yy9;
     929                 :                         } else {
     930              97 :                                 if (yych == 's') goto yy9;
     931                 :                         }
     932                 :                 }
     933           27662 : yy3:
     934                 :                 YYDEBUG(3, *YYCURSOR);
     935           27662 :                 yyleng = YYCURSOR - SCNG(yy_text);
     936                 : #line 1562 "Zend/zend_language_scanner.l"
     937                 :                 {
     938                 :         if (YYCURSOR > YYLIMIT) {
     939                 :                 return 0;
     940                 :         }
     941                 : 
     942                 : inline_char_handler:
     943                 : 
     944                 :         while (1) {
     945                 :                 YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
     946                 : 
     947                 :                 YYCURSOR = ptr ? ptr + 1 : YYLIMIT;
     948                 : 
     949                 :                 if (YYCURSOR < YYLIMIT) {
     950                 :                         switch (*YYCURSOR) {
     951                 :                                 case '?':
     952                 :                                         if (CG(short_tags) || !strncasecmp(YYCURSOR + 1, "php", 3)) { /* Assume [ \t\n\r] follows "php" */
     953                 :                                                 break;
     954                 :                                         }
     955                 :                                         continue;
     956                 :                                 case '%':
     957                 :                                         if (CG(asp_tags)) {
     958                 :                                                 break;
     959                 :                                         }
     960                 :                                         continue;
     961                 :                                 case 's':
     962                 :                                 case 'S':
     963                 :                                         /* Probably NOT an opening PHP <script> tag, so don't end the HTML chunk yet
     964                 :                                          * If it is, the PHP <script> tag rule checks for any HTML scanned before it */
     965                 :                                         YYCURSOR--;
     966                 :                                         yymore();
     967                 :                                 default:
     968                 :                                         continue;
     969                 :                         }
     970                 : 
     971                 :                         YYCURSOR--;
     972                 :                 }
     973                 : 
     974                 :                 break;
     975                 :         }
     976                 : 
     977                 : inline_html:
     978                 :         yyleng = YYCURSOR - SCNG(yy_text);
     979                 : 
     980                 : #ifdef ZEND_MULTIBYTE
     981                 :         if (SCNG(output_filter)) {
     982                 :                 int readsize;
     983                 :                 size_t sz = 0;
     984                 :                 readsize = SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC);
     985                 :                 zendlval->value.str.len = sz;
     986                 :                 if (readsize < yyleng) {
     987                 :                         yyless(readsize);
     988                 :                 }
     989                 :         } else {
     990                 :           zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
     991                 :           zendlval->value.str.len = yyleng;
     992                 :         }
     993                 : #else /* !ZEND_MULTIBYTE */
     994                 :         zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
     995                 :         zendlval->value.str.len = yyleng;
     996                 : #endif
     997                 :         zendlval->type = IS_STRING;
     998                 :         HANDLE_NEWLINES(yytext, yyleng);
     999                 :         return T_INLINE_HTML;
    1000                 : }
    1001                 : #line 1002 "Zend/zend_language_scanner.c"
    1002           27567 : yy4:
    1003                 :                 YYDEBUG(4, *YYCURSOR);
    1004           27567 :                 yych = *++YYCURSOR;
    1005           27567 :                 goto yy3;
    1006           25706 : yy5:
    1007                 :                 YYDEBUG(5, *YYCURSOR);
    1008           25706 :                 yyaccept = 1;
    1009           25706 :                 yych = *(YYMARKER = ++YYCURSOR);
    1010           25706 :                 if (yych <= 'O') {
    1011               9 :                         if (yych == '=') goto yy45;
    1012                 :                 } else {
    1013           25697 :                         if (yych <= 'P') goto yy47;
    1014           25327 :                         if (yych == 'p') goto yy47;
    1015                 :                 }
    1016               5 : yy6:
    1017                 :                 YYDEBUG(6, *YYCURSOR);
    1018               5 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1019                 : #line 1550 "Zend/zend_language_scanner.l"
    1020                 :                 {
    1021                 :         if (CG(short_tags)) {
    1022                 :                 zendlval->value.str.val = yytext; /* no copying - intentional */
    1023                 :                 zendlval->value.str.len = yyleng;
    1024                 :                 zendlval->type = IS_STRING;
    1025                 :                 BEGIN(ST_IN_SCRIPTING);
    1026                 :                 return T_OPEN_TAG;
    1027                 :         } else {
    1028                 :                 goto inline_char_handler;
    1029                 :         }
    1030                 : }
    1031                 : #line 1032 "Zend/zend_language_scanner.c"
    1032               2 : yy7:
    1033                 :                 YYDEBUG(7, *YYCURSOR);
    1034               2 :                 ++YYCURSOR;
    1035               2 :                 if ((yych = *YYCURSOR) == '=') goto yy43;
    1036                 :                 YYDEBUG(8, *YYCURSOR);
    1037               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1038                 : #line 1527 "Zend/zend_language_scanner.l"
    1039                 :                 {
    1040                 :         if (CG(asp_tags)) {
    1041                 :                 zendlval->value.str.val = yytext; /* no copying - intentional */
    1042                 :                 zendlval->value.str.len = yyleng;
    1043                 :                 zendlval->type = IS_STRING;
    1044                 :                 BEGIN(ST_IN_SCRIPTING);
    1045                 :                 return T_OPEN_TAG;
    1046                 :         } else {
    1047                 :                 goto inline_char_handler;
    1048                 :         }
    1049                 : }
    1050                 : #line 1051 "Zend/zend_language_scanner.c"
    1051              10 : yy9:
    1052                 :                 YYDEBUG(9, *YYCURSOR);
    1053              10 :                 yych = *++YYCURSOR;
    1054              10 :                 if (yych == 'C') goto yy11;
    1055              10 :                 if (yych == 'c') goto yy11;
    1056               5 : yy10:
    1057                 :                 YYDEBUG(10, *YYCURSOR);
    1058               5 :                 YYCURSOR = YYMARKER;
    1059               5 :                 if (yyaccept <= 0) {
    1060               5 :                         goto yy3;
    1061                 :                 } else {
    1062               0 :                         goto yy6;
    1063                 :                 }
    1064               9 : yy11:
    1065                 :                 YYDEBUG(11, *YYCURSOR);
    1066               9 :                 yych = *++YYCURSOR;
    1067               9 :                 if (yych == 'R') goto yy12;
    1068               9 :                 if (yych != 'r') goto yy10;
    1069               8 : yy12:
    1070                 :                 YYDEBUG(12, *YYCURSOR);
    1071               8 :                 yych = *++YYCURSOR;
    1072               8 :                 if (yych == 'I') goto yy13;
    1073               8 :                 if (yych != 'i') goto yy10;
    1074               8 : yy13:
    1075                 :                 YYDEBUG(13, *YYCURSOR);
    1076               8 :                 yych = *++YYCURSOR;
    1077               8 :                 if (yych == 'P') goto yy14;
    1078               8 :                 if (yych != 'p') goto yy10;
    1079               8 : yy14:
    1080                 :                 YYDEBUG(14, *YYCURSOR);
    1081               8 :                 yych = *++YYCURSOR;
    1082               8 :                 if (yych == 'T') goto yy15;
    1083               8 :                 if (yych != 't') goto yy10;
    1084               8 : yy15:
    1085                 :                 YYDEBUG(15, *YYCURSOR);
    1086               8 :                 yych = *++YYCURSOR;
    1087               8 :                 if (yych == 'L') goto yy10;
    1088               8 :                 if (yych == 'l') goto yy10;
    1089               8 :                 goto yy17;
    1090               7 : yy16:
    1091                 :                 YYDEBUG(16, *YYCURSOR);
    1092               7 :                 ++YYCURSOR;
    1093               7 :                 YYFILL(8);
    1094               7 :                 yych = *YYCURSOR;
    1095              15 : yy17:
    1096                 :                 YYDEBUG(17, *YYCURSOR);
    1097              15 :                 if (yybm[0+yych] & 128) {
    1098               7 :                         goto yy16;
    1099                 :                 }
    1100               8 :                 if (yych == 'L') goto yy18;
    1101               8 :                 if (yych != 'l') goto yy10;
    1102               7 : yy18:
    1103                 :                 YYDEBUG(18, *YYCURSOR);
    1104               7 :                 yych = *++YYCURSOR;
    1105               7 :                 if (yych == 'A') goto yy19;
    1106               7 :                 if (yych != 'a') goto yy10;
    1107               7 : yy19:
    1108                 :                 YYDEBUG(19, *YYCURSOR);
    1109               7 :                 yych = *++YYCURSOR;
    1110               7 :                 if (yych == 'N') goto yy20;
    1111               7 :                 if (yych != 'n') goto yy10;
    1112               7 : yy20:
    1113                 :                 YYDEBUG(20, *YYCURSOR);
    1114               7 :                 yych = *++YYCURSOR;
    1115               7 :                 if (yych == 'G') goto yy21;
    1116               7 :                 if (yych != 'g') goto yy10;
    1117               7 : yy21:
    1118                 :                 YYDEBUG(21, *YYCURSOR);
    1119               7 :                 yych = *++YYCURSOR;
    1120               7 :                 if (yych == 'U') goto yy22;
    1121               7 :                 if (yych != 'u') goto yy10;
    1122               7 : yy22:
    1123                 :                 YYDEBUG(22, *YYCURSOR);
    1124               7 :                 yych = *++YYCURSOR;
    1125               7 :                 if (yych == 'A') goto yy23;
    1126               7 :                 if (yych != 'a') goto yy10;
    1127               7 : yy23:
    1128                 :                 YYDEBUG(23, *YYCURSOR);
    1129               7 :                 yych = *++YYCURSOR;
    1130               7 :                 if (yych == 'G') goto yy24;
    1131               7 :                 if (yych != 'g') goto yy10;
    1132               7 : yy24:
    1133                 :                 YYDEBUG(24, *YYCURSOR);
    1134               7 :                 yych = *++YYCURSOR;
    1135               7 :                 if (yych == 'E') goto yy25;
    1136               7 :                 if (yych != 'e') goto yy10;
    1137               7 : yy25:
    1138                 :                 YYDEBUG(25, *YYCURSOR);
    1139               7 :                 ++YYCURSOR;
    1140               7 :                 YYFILL(1);
    1141               7 :                 yych = *YYCURSOR;
    1142                 :                 YYDEBUG(26, *YYCURSOR);
    1143               7 :                 if (yych <= '\r') {
    1144               0 :                         if (yych <= 0x08) goto yy10;
    1145               0 :                         if (yych <= '\n') goto yy25;
    1146               0 :                         if (yych <= '\f') goto yy10;
    1147               0 :                         goto yy25;
    1148                 :                 } else {
    1149               7 :                         if (yych <= ' ') {
    1150               0 :                                 if (yych <= 0x1F) goto yy10;
    1151               0 :                                 goto yy25;
    1152                 :                         } else {
    1153               7 :                                 if (yych != '=') goto yy10;
    1154                 :                         }
    1155                 :                 }
    1156               6 : yy27:
    1157                 :                 YYDEBUG(27, *YYCURSOR);
    1158               6 :                 ++YYCURSOR;
    1159               6 :                 YYFILL(5);
    1160               6 :                 yych = *YYCURSOR;
    1161                 :                 YYDEBUG(28, *YYCURSOR);
    1162               6 :                 if (yych <= '!') {
    1163               0 :                         if (yych <= '\f') {
    1164               0 :                                 if (yych <= 0x08) goto yy10;
    1165               0 :                                 if (yych <= '\n') goto yy27;
    1166               0 :                                 goto yy10;
    1167                 :                         } else {
    1168               0 :                                 if (yych <= '\r') goto yy27;
    1169               0 :                                 if (yych == ' ') goto yy27;
    1170               0 :                                 goto yy10;
    1171                 :                         }
    1172                 :                 } else {
    1173               6 :                         if (yych <= 'O') {
    1174               3 :                                 if (yych <= '"') goto yy30;
    1175               2 :                                 if (yych == '\'') goto yy31;
    1176               1 :                                 goto yy10;
    1177                 :                         } else {
    1178               3 :                                 if (yych <= 'P') goto yy29;
    1179               3 :                                 if (yych != 'p') goto yy10;
    1180                 :                         }
    1181                 :                 }
    1182               3 : yy29:
    1183                 :                 YYDEBUG(29, *YYCURSOR);
    1184               3 :                 yych = *++YYCURSOR;
    1185               3 :                 if (yych == 'H') goto yy42;
    1186               3 :                 if (yych == 'h') goto yy42;
    1187               0 :                 goto yy10;
    1188               1 : yy30:
    1189                 :                 YYDEBUG(30, *YYCURSOR);
    1190               1 :                 yych = *++YYCURSOR;
    1191               1 :                 if (yych == 'P') goto yy39;
    1192               1 :                 if (yych == 'p') goto yy39;
    1193               0 :                 goto yy10;
    1194               1 : yy31:
    1195                 :                 YYDEBUG(31, *YYCURSOR);
    1196               1 :                 yych = *++YYCURSOR;
    1197               1 :                 if (yych == 'P') goto yy32;
    1198               1 :                 if (yych != 'p') goto yy10;
    1199               1 : yy32:
    1200                 :                 YYDEBUG(32, *YYCURSOR);
    1201               1 :                 yych = *++YYCURSOR;
    1202               1 :                 if (yych == 'H') goto yy33;
    1203               1 :                 if (yych != 'h') goto yy10;
    1204               1 : yy33:
    1205                 :                 YYDEBUG(33, *YYCURSOR);
    1206               1 :                 yych = *++YYCURSOR;
    1207               1 :                 if (yych == 'P') goto yy34;
    1208               1 :                 if (yych != 'p') goto yy10;
    1209               1 : yy34:
    1210                 :                 YYDEBUG(34, *YYCURSOR);
    1211               1 :                 yych = *++YYCURSOR;
    1212               1 :                 if (yych != '\'') goto yy10;
    1213               5 : yy35:
    1214                 :                 YYDEBUG(35, *YYCURSOR);
    1215               5 :                 ++YYCURSOR;
    1216               5 :                 YYFILL(1);
    1217               5 :                 yych = *YYCURSOR;
    1218                 :                 YYDEBUG(36, *YYCURSOR);
    1219               5 :                 if (yych <= '\r') {
    1220               0 :                         if (yych <= 0x08) goto yy10;
    1221               0 :                         if (yych <= '\n') goto yy35;
    1222               0 :                         if (yych <= '\f') goto yy10;
    1223               0 :                         goto yy35;
    1224                 :                 } else {
    1225               5 :                         if (yych <= ' ') {
    1226               0 :                                 if (yych <= 0x1F) goto yy10;
    1227               0 :                                 goto yy35;
    1228                 :                         } else {
    1229               5 :                                 if (yych != '>') goto yy10;
    1230                 :                         }
    1231                 :                 }
    1232                 :                 YYDEBUG(37, *YYCURSOR);
    1233               5 :                 ++YYCURSOR;
    1234                 :                 YYDEBUG(38, *YYCURSOR);
    1235               5 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1236                 : #line 1483 "Zend/zend_language_scanner.l"
    1237                 :                 {
    1238                 :         YYCTYPE *bracket = zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
    1239                 : 
    1240                 :         if (bracket != SCNG(yy_text)) {
    1241                 :                 /* Handle previously scanned HTML, as possible <script> tags found are assumed to not be PHP's */
    1242                 :                 YYCURSOR = bracket;
    1243                 :                 goto inline_html;
    1244                 :         }
    1245                 : 
    1246                 :         HANDLE_NEWLINES(yytext, yyleng);
    1247                 :         zendlval->value.str.val = yytext; /* no copying - intentional */
    1248                 :         zendlval->value.str.len = yyleng;
    1249                 :         zendlval->type = IS_STRING;
    1250                 :         BEGIN(ST_IN_SCRIPTING);
    1251                 :         return T_OPEN_TAG;
    1252                 : }
    1253                 : #line 1254 "Zend/zend_language_scanner.c"
    1254               1 : yy39:
    1255                 :                 YYDEBUG(39, *YYCURSOR);
    1256               1 :                 yych = *++YYCURSOR;
    1257               1 :                 if (yych == 'H') goto yy40;
    1258               1 :                 if (yych != 'h') goto yy10;
    1259               1 : yy40:
    1260                 :                 YYDEBUG(40, *YYCURSOR);
    1261               1 :                 yych = *++YYCURSOR;
    1262               1 :                 if (yych == 'P') goto yy41;
    1263               1 :                 if (yych != 'p') goto yy10;
    1264               1 : yy41:
    1265                 :                 YYDEBUG(41, *YYCURSOR);
    1266               1 :                 yych = *++YYCURSOR;
    1267               1 :                 if (yych == '"') goto yy35;
    1268               0 :                 goto yy10;
    1269               3 : yy42:
    1270                 :                 YYDEBUG(42, *YYCURSOR);
    1271               3 :                 yych = *++YYCURSOR;
    1272               3 :                 if (yych == 'P') goto yy35;
    1273               3 :                 if (yych == 'p') goto yy35;
    1274               0 :                 goto yy10;
    1275               2 : yy43:
    1276                 :                 YYDEBUG(43, *YYCURSOR);
    1277               2 :                 ++YYCURSOR;
    1278                 :                 YYDEBUG(44, *YYCURSOR);
    1279               2 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1280                 : #line 1501 "Zend/zend_language_scanner.l"
    1281                 :                 {
    1282                 :         if (CG(asp_tags)) {
    1283                 :                 zendlval->value.str.val = yytext; /* no copying - intentional */
    1284                 :                 zendlval->value.str.len = yyleng;
    1285                 :                 zendlval->type = IS_STRING;
    1286                 :                 BEGIN(ST_IN_SCRIPTING);
    1287                 :                 return T_OPEN_TAG_WITH_ECHO;
    1288                 :         } else {
    1289                 :                 goto inline_char_handler;
    1290                 :         }
    1291                 : }
    1292                 : #line 1293 "Zend/zend_language_scanner.c"
    1293               4 : yy45:
    1294                 :                 YYDEBUG(45, *YYCURSOR);
    1295               4 :                 ++YYCURSOR;
    1296                 :                 YYDEBUG(46, *YYCURSOR);
    1297               4 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1298                 : #line 1514 "Zend/zend_language_scanner.l"
    1299                 :                 {
    1300                 :         if (CG(short_tags)) {
    1301                 :                 zendlval->value.str.val = yytext; /* no copying - intentional */
    1302                 :                 zendlval->value.str.len = yyleng;
    1303                 :                 zendlval->type = IS_STRING;
    1304                 :                 BEGIN(ST_IN_SCRIPTING);
    1305                 :                 return T_OPEN_TAG_WITH_ECHO;
    1306                 :         } else {
    1307                 :                 goto inline_char_handler;
    1308                 :         }
    1309                 : }
    1310                 : #line 1311 "Zend/zend_language_scanner.c"
    1311           25697 : yy47:
    1312                 :                 YYDEBUG(47, *YYCURSOR);
    1313           25697 :                 yych = *++YYCURSOR;
    1314           25697 :                 if (yych == 'H') goto yy48;
    1315           25327 :                 if (yych != 'h') goto yy10;
    1316           25697 : yy48:
    1317                 :                 YYDEBUG(48, *YYCURSOR);
    1318           25697 :                 yych = *++YYCURSOR;
    1319           25697 :                 if (yych == 'P') goto yy49;
    1320           25327 :                 if (yych != 'p') goto yy10;
    1321           25697 : yy49:
    1322                 :                 YYDEBUG(49, *YYCURSOR);
    1323           25697 :                 yych = *++YYCURSOR;
    1324           25697 :                 if (yych <= '\f') {
    1325           20465 :                         if (yych <= 0x08) goto yy10;
    1326           20465 :                         if (yych >= '\v') goto yy10;
    1327                 :                 } else {
    1328            5232 :                         if (yych <= '\r') goto yy52;
    1329            5084 :                         if (yych != ' ') goto yy10;
    1330                 :                 }
    1331           25697 : yy50:
    1332                 :                 YYDEBUG(50, *YYCURSOR);
    1333           25697 :                 ++YYCURSOR;
    1334           25697 : yy51:
    1335                 :                 YYDEBUG(51, *YYCURSOR);
    1336           25697 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1337                 : #line 1540 "Zend/zend_language_scanner.l"
    1338                 :                 {
    1339                 :         zendlval->value.str.val = yytext; /* no copying - intentional */
    1340                 :         zendlval->value.str.len = yyleng;
    1341                 :         zendlval->type = IS_STRING;
    1342                 :         HANDLE_NEWLINE(yytext[yyleng-1]);
    1343                 :         BEGIN(ST_IN_SCRIPTING);
    1344                 :         return T_OPEN_TAG;
    1345                 : }
    1346                 : #line 1347 "Zend/zend_language_scanner.c"
    1347             148 : yy52:
    1348                 :                 YYDEBUG(52, *YYCURSOR);
    1349             148 :                 ++YYCURSOR;
    1350             148 :                 if ((yych = *YYCURSOR) == '\n') goto yy50;
    1351               0 :                 goto yy51;
    1352                 :         }
    1353                 : /* *********************************** */
    1354             407 : yyc_ST_BACKQUOTE:
    1355                 :         {
    1356                 :                 static const unsigned char yybm[] = {
    1357                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1358                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1359                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1360                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1361                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1362                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1363                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1364                 :                         128, 128,   0,   0,   0,   0,   0,   0, 
    1365                 :                           0, 128, 128, 128, 128, 128, 128, 128, 
    1366                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1367                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1368                 :                         128, 128, 128,   0,   0,   0,   0, 128, 
    1369                 :                           0, 128, 128, 128, 128, 128, 128, 128, 
    1370                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1371                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1372                 :                         128, 128, 128,   0,   0,   0,   0, 128, 
    1373                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1374                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1375                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1376                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1377                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1378                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1379                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1380                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1381                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1382                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1383                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1384                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1385                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1386                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1387                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1388                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1389                 :                 };
    1390                 :                 YYDEBUG(53, *YYCURSOR);
    1391             407 :                 YYFILL(2);
    1392             407 :                 yych = *YYCURSOR;
    1393             407 :                 if (yych <= '_') {
    1394             291 :                         if (yych != '$') goto yy60;
    1395                 :                 } else {
    1396             116 :                         if (yych <= '`') goto yy58;
    1397              12 :                         if (yych == '{') goto yy57;
    1398              12 :                         goto yy60;
    1399                 :                 }
    1400                 :                 YYDEBUG(55, *YYCURSOR);
    1401             136 :                 ++YYCURSOR;
    1402             136 :                 if ((yych = *YYCURSOR) <= '_') {
    1403               0 :                         if (yych <= '@') goto yy56;
    1404               0 :                         if (yych <= 'Z') goto yy63;
    1405               0 :                         if (yych >= '_') goto yy63;
    1406                 :                 } else {
    1407             136 :                         if (yych <= 'z') {
    1408             136 :                                 if (yych >= 'a') goto yy63;
    1409                 :                         } else {
    1410               0 :                                 if (yych <= '{') goto yy66;
    1411               0 :                                 if (yych >= 0x7F) goto yy63;
    1412                 :                         }
    1413                 :                 }
    1414             167 : yy56:
    1415                 :                 YYDEBUG(56, *YYCURSOR);
    1416             167 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1417                 : #line 2020 "Zend/zend_language_scanner.l"
    1418                 :                 {
    1419                 :         if (YYCURSOR > YYLIMIT) {
    1420                 :                 return 0;
    1421                 :         }
    1422                 :         if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
    1423                 :                 YYCURSOR++;
    1424                 :         }
    1425                 : 
    1426                 :         while (YYCURSOR < YYLIMIT) {
    1427                 :                 switch (*YYCURSOR++) {
    1428                 :                         case '`':
    1429                 :                                 break;
    1430                 :                         case '$':
    1431                 :                                 if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
    1432                 :                                         break;
    1433                 :                                 }
    1434                 :                                 continue;
    1435                 :                         case '{':
    1436                 :                                 if (*YYCURSOR == '$') {
    1437                 :                                         break;
    1438                 :                                 }
    1439                 :                                 continue;
    1440                 :                         case '\\':
    1441                 :                                 if (YYCURSOR < YYLIMIT) {
    1442                 :                                         YYCURSOR++;
    1443                 :                                 }
    1444                 :                                 /* fall through */
    1445                 :                         default:
    1446                 :                                 continue;
    1447                 :                 }
    1448                 : 
    1449                 :                 YYCURSOR--;
    1450                 :                 break;
    1451                 :         }
    1452                 : 
    1453                 :         yyleng = YYCURSOR - SCNG(yy_text);
    1454                 : 
    1455                 :         zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
    1456                 :         return T_ENCAPSED_AND_WHITESPACE;
    1457                 : }
    1458                 : #line 1459 "Zend/zend_language_scanner.c"
    1459               0 : yy57:
    1460                 :                 YYDEBUG(57, *YYCURSOR);
    1461               0 :                 yych = *++YYCURSOR;
    1462               0 :                 if (yych == '$') goto yy61;
    1463               0 :                 goto yy56;
    1464             104 : yy58:
    1465                 :                 YYDEBUG(58, *YYCURSOR);
    1466             104 :                 ++YYCURSOR;
    1467                 :                 YYDEBUG(59, *YYCURSOR);
    1468             104 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1469                 : #line 1964 "Zend/zend_language_scanner.l"
    1470                 :                 {
    1471                 :         BEGIN(ST_IN_SCRIPTING);
    1472                 :         return '`';
    1473                 : }
    1474                 : #line 1475 "Zend/zend_language_scanner.c"
    1475             167 : yy60:
    1476                 :                 YYDEBUG(60, *YYCURSOR);
    1477             167 :                 yych = *++YYCURSOR;
    1478             167 :                 goto yy56;
    1479               0 : yy61:
    1480                 :                 YYDEBUG(61, *YYCURSOR);
    1481               0 :                 ++YYCURSOR;
    1482                 :                 YYDEBUG(62, *YYCURSOR);
    1483               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1484                 : #line 1951 "Zend/zend_language_scanner.l"
    1485                 :                 {
    1486                 :         zendlval->value.lval = (long) '{';
    1487                 :         yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
    1488                 :         yyless(1);
    1489                 :         return T_CURLY_OPEN;
    1490                 : }
    1491                 : #line 1492 "Zend/zend_language_scanner.c"
    1492             587 : yy63:
    1493                 :                 YYDEBUG(63, *YYCURSOR);
    1494             587 :                 yyaccept = 0;
    1495             587 :                 YYMARKER = ++YYCURSOR;
    1496             587 :                 YYFILL(3);
    1497             587 :                 yych = *YYCURSOR;
    1498                 :                 YYDEBUG(64, *YYCURSOR);
    1499             587 :                 if (yybm[0+yych] & 128) {
    1500             451 :                         goto yy63;
    1501                 :                 }
    1502             136 :                 if (yych == '-') goto yy68;
    1503             136 :                 if (yych == '[') goto yy70;
    1504             136 : yy65:
    1505                 :                 YYDEBUG(65, *YYCURSOR);
    1506             136 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1507                 : #line 1649 "Zend/zend_language_scanner.l"
    1508                 :                 {
    1509                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    1510                 :         zendlval->type = IS_STRING;
    1511                 :         return T_VARIABLE;
    1512                 : }
    1513                 : #line 1514 "Zend/zend_language_scanner.c"
    1514               0 : yy66:
    1515                 :                 YYDEBUG(66, *YYCURSOR);
    1516               0 :                 ++YYCURSOR;
    1517                 :                 YYDEBUG(67, *YYCURSOR);
    1518               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1519                 : #line 1276 "Zend/zend_language_scanner.l"
    1520                 :                 {
    1521                 :         yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
    1522                 :         return T_DOLLAR_OPEN_CURLY_BRACES;
    1523                 : }
    1524                 : #line 1525 "Zend/zend_language_scanner.c"
    1525               0 : yy68:
    1526                 :                 YYDEBUG(68, *YYCURSOR);
    1527               0 :                 yych = *++YYCURSOR;
    1528               0 :                 if (yych == '>') goto yy72;
    1529               0 : yy69:
    1530                 :                 YYDEBUG(69, *YYCURSOR);
    1531               0 :                 YYCURSOR = YYMARKER;
    1532               0 :                 goto yy65;
    1533               0 : yy70:
    1534                 :                 YYDEBUG(70, *YYCURSOR);
    1535               0 :                 ++YYCURSOR;
    1536                 :                 YYDEBUG(71, *YYCURSOR);
    1537               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1538                 : #line 1641 "Zend/zend_language_scanner.l"
    1539                 :                 {
    1540                 :         yyless(yyleng - 1);
    1541                 :         yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
    1542                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    1543                 :         zendlval->type = IS_STRING;
    1544                 :         return T_VARIABLE;
    1545                 : }
    1546                 : #line 1547 "Zend/zend_language_scanner.c"
    1547               0 : yy72:
    1548                 :                 YYDEBUG(72, *YYCURSOR);
    1549               0 :                 yych = *++YYCURSOR;
    1550               0 :                 if (yych <= '_') {
    1551               0 :                         if (yych <= '@') goto yy69;
    1552               0 :                         if (yych <= 'Z') goto yy73;
    1553               0 :                         if (yych <= '^') goto yy69;
    1554                 :                 } else {
    1555               0 :                         if (yych <= '`') goto yy69;
    1556               0 :                         if (yych <= 'z') goto yy73;
    1557               0 :                         if (yych <= '~') goto yy69;
    1558                 :                 }
    1559               0 : yy73:
    1560                 :                 YYDEBUG(73, *YYCURSOR);
    1561               0 :                 ++YYCURSOR;
    1562                 :                 YYDEBUG(74, *YYCURSOR);
    1563               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1564                 : #line 1631 "Zend/zend_language_scanner.l"
    1565                 :                 {
    1566                 :         yyless(yyleng - 3);
    1567                 :         yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
    1568                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    1569                 :         zendlval->type = IS_STRING;
    1570                 :         return T_VARIABLE;
    1571                 : }
    1572                 : #line 1573 "Zend/zend_language_scanner.c"
    1573                 :         }
    1574                 : /* *********************************** */
    1575           47132 : yyc_ST_DOUBLE_QUOTES:
    1576                 :         {
    1577                 :                 static const unsigned char yybm[] = {
    1578                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1579                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1580                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1581                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1582                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1583                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1584                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1585                 :                         128, 128,   0,   0,   0,   0,   0,   0, 
    1586                 :                           0, 128, 128, 128, 128, 128, 128, 128, 
    1587                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1588                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1589                 :                         128, 128, 128,   0,   0,   0,   0, 128, 
    1590                 :                           0, 128, 128, 128, 128, 128, 128, 128, 
    1591                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1592                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1593                 :                         128, 128, 128,   0,   0,   0,   0, 128, 
    1594                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1595                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1596                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1597                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1598                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1599                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1600                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1601                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1602                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1603                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1604                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1605                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1606                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1607                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1608                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1609                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1610                 :                 };
    1611                 :                 YYDEBUG(75, *YYCURSOR);
    1612           47132 :                 YYFILL(2);
    1613           47132 :                 yych = *YYCURSOR;
    1614           47132 :                 if (yych <= '#') {
    1615           13311 :                         if (yych == '"') goto yy80;
    1616            2139 :                         goto yy82;
    1617                 :                 } else {
    1618           33821 :                         if (yych <= '$') goto yy77;
    1619           17681 :                         if (yych == '{') goto yy79;
    1620           17427 :                         goto yy82;
    1621                 :                 }
    1622           16140 : yy77:
    1623                 :                 YYDEBUG(77, *YYCURSOR);
    1624           16140 :                 ++YYCURSOR;
    1625           16140 :                 if ((yych = *YYCURSOR) <= '_') {
    1626              56 :                         if (yych <= '@') goto yy78;
    1627              55 :                         if (yych <= 'Z') goto yy85;
    1628               0 :                         if (yych >= '_') goto yy85;
    1629                 :                 } else {
    1630           16084 :                         if (yych <= 'z') {
    1631           15997 :                                 if (yych >= 'a') goto yy85;
    1632                 :                         } else {
    1633              87 :                                 if (yych <= '{') goto yy88;
    1634               0 :                                 if (yych >= 0x7F) goto yy85;
    1635                 :                         }
    1636                 :                 }
    1637           19567 : yy78:
    1638                 :                 YYDEBUG(78, *YYCURSOR);
    1639           19567 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1640                 : #line 1970 "Zend/zend_language_scanner.l"
    1641                 :                 {
    1642                 :         if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
    1643                 :                 YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
    1644                 :                 SET_DOUBLE_QUOTES_SCANNED_LENGTH(0);
    1645                 : 
    1646                 :                 goto double_quotes_scan_done;
    1647                 :         }
    1648                 : 
    1649                 :         if (YYCURSOR > YYLIMIT) {
    1650                 :                 return 0;
    1651                 :         }
    1652                 :         if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
    1653                 :                 YYCURSOR++;
    1654                 :         }
    1655                 : 
    1656                 :         while (YYCURSOR < YYLIMIT) {
    1657                 :                 switch (*YYCURSOR++) {
    1658                 :                         case '"':
    1659                 :                                 break;
    1660                 :                         case '$':
    1661                 :                                 if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
    1662                 :                                         break;
    1663                 :                                 }
    1664                 :                                 continue;
    1665                 :                         case '{':
    1666                 :                                 if (*YYCURSOR == '$') {
    1667                 :                                         break;
    1668                 :                                 }
    1669                 :                                 continue;
    1670                 :                         case '\\':
    1671                 :                                 if (YYCURSOR < YYLIMIT) {
    1672                 :                                         YYCURSOR++;
    1673                 :                                 }
    1674                 :                                 /* fall through */
    1675                 :                         default:
    1676                 :                                 continue;
    1677                 :                 }
    1678                 : 
    1679                 :                 YYCURSOR--;
    1680                 :                 break;
    1681                 :         }
    1682                 : 
    1683                 : double_quotes_scan_done:
    1684                 :         yyleng = YYCURSOR - SCNG(yy_text);
    1685                 : 
    1686                 :         zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
    1687                 :         return T_ENCAPSED_AND_WHITESPACE;
    1688                 : }
    1689                 : #line 1690 "Zend/zend_language_scanner.c"
    1690             254 : yy79:
    1691                 :                 YYDEBUG(79, *YYCURSOR);
    1692             254 :                 yych = *++YYCURSOR;
    1693             254 :                 if (yych == '$') goto yy83;
    1694               0 :                 goto yy78;
    1695           11172 : yy80:
    1696                 :                 YYDEBUG(80, *YYCURSOR);
    1697           11172 :                 ++YYCURSOR;
    1698                 :                 YYDEBUG(81, *YYCURSOR);
    1699           11172 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1700                 : #line 1959 "Zend/zend_language_scanner.l"
    1701                 :                 {
    1702                 :         BEGIN(ST_IN_SCRIPTING);
    1703                 :         return '"';
    1704                 : }
    1705                 : #line 1706 "Zend/zend_language_scanner.c"
    1706           19566 : yy82:
    1707                 :                 YYDEBUG(82, *YYCURSOR);
    1708           19566 :                 yych = *++YYCURSOR;
    1709           19566 :                 goto yy78;
    1710             254 : yy83:
    1711                 :                 YYDEBUG(83, *YYCURSOR);
    1712             254 :                 ++YYCURSOR;
    1713                 :                 YYDEBUG(84, *YYCURSOR);
    1714             254 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1715                 : #line 1951 "Zend/zend_language_scanner.l"
    1716                 :                 {
    1717                 :         zendlval->value.lval = (long) '{';
    1718                 :         yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
    1719                 :         yyless(1);
    1720                 :         return T_CURLY_OPEN;
    1721                 : }
    1722                 : #line 1723 "Zend/zend_language_scanner.c"
    1723           66784 : yy85:
    1724                 :                 YYDEBUG(85, *YYCURSOR);
    1725           66784 :                 yyaccept = 0;
    1726           66784 :                 YYMARKER = ++YYCURSOR;
    1727           66784 :                 YYFILL(3);
    1728           66784 :                 yych = *YYCURSOR;
    1729                 :                 YYDEBUG(86, *YYCURSOR);
    1730           66784 :                 if (yybm[0+yych] & 128) {
    1731           50732 :                         goto yy85;
    1732                 :                 }
    1733           16052 :                 if (yych == '-') goto yy90;
    1734           15737 :                 if (yych == '[') goto yy92;
    1735           15108 : yy87:
    1736                 :                 YYDEBUG(87, *YYCURSOR);
    1737           15108 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1738                 : #line 1649 "Zend/zend_language_scanner.l"
    1739                 :                 {
    1740                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    1741                 :         zendlval->type = IS_STRING;
    1742                 :         return T_VARIABLE;
    1743                 : }
    1744                 : #line 1745 "Zend/zend_language_scanner.c"
    1745              87 : yy88:
    1746                 :                 YYDEBUG(88, *YYCURSOR);
    1747              87 :                 ++YYCURSOR;
    1748                 :                 YYDEBUG(89, *YYCURSOR);
    1749              87 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1750                 : #line 1276 "Zend/zend_language_scanner.l"
    1751                 :                 {
    1752                 :         yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
    1753                 :         return T_DOLLAR_OPEN_CURLY_BRACES;
    1754                 : }
    1755                 : #line 1756 "Zend/zend_language_scanner.c"
    1756             315 : yy90:
    1757                 :                 YYDEBUG(90, *YYCURSOR);
    1758             315 :                 yych = *++YYCURSOR;
    1759             315 :                 if (yych == '>') goto yy94;
    1760             256 : yy91:
    1761                 :                 YYDEBUG(91, *YYCURSOR);
    1762             256 :                 YYCURSOR = YYMARKER;
    1763             256 :                 goto yy87;
    1764             885 : yy92:
    1765                 :                 YYDEBUG(92, *YYCURSOR);
    1766             885 :                 ++YYCURSOR;
    1767                 :                 YYDEBUG(93, *YYCURSOR);
    1768             885 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1769                 : #line 1641 "Zend/zend_language_scanner.l"
    1770                 :                 {
    1771                 :         yyless(yyleng - 1);
    1772                 :         yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
    1773                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    1774                 :         zendlval->type = IS_STRING;
    1775                 :         return T_VARIABLE;
    1776                 : }
    1777                 : #line 1778 "Zend/zend_language_scanner.c"
    1778              59 : yy94:
    1779                 :                 YYDEBUG(94, *YYCURSOR);
    1780              59 :                 yych = *++YYCURSOR;
    1781              59 :                 if (yych <= '_') {
    1782               0 :                         if (yych <= '@') goto yy91;
    1783               0 :                         if (yych <= 'Z') goto yy95;
    1784               0 :                         if (yych <= '^') goto yy91;
    1785                 :                 } else {
    1786              59 :                         if (yych <= '`') goto yy91;
    1787              59 :                         if (yych <= 'z') goto yy95;
    1788               0 :                         if (yych <= '~') goto yy91;
    1789                 :                 }
    1790              59 : yy95:
    1791                 :                 YYDEBUG(95, *YYCURSOR);
    1792              59 :                 ++YYCURSOR;
    1793                 :                 YYDEBUG(96, *YYCURSOR);
    1794              59 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1795                 : #line 1631 "Zend/zend_language_scanner.l"
    1796                 :                 {
    1797                 :         yyless(yyleng - 3);
    1798                 :         yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
    1799                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    1800                 :         zendlval->type = IS_STRING;
    1801                 :         return T_VARIABLE;
    1802                 : }
    1803                 : #line 1804 "Zend/zend_language_scanner.c"
    1804                 :         }
    1805                 : /* *********************************** */
    1806            1402 : yyc_ST_END_HEREDOC:
    1807                 :         YYDEBUG(97, *YYCURSOR);
    1808            1402 :         YYFILL(1);
    1809            1402 :         yych = *YYCURSOR;
    1810                 :         YYDEBUG(99, *YYCURSOR);
    1811            1402 :         ++YYCURSOR;
    1812                 :         YYDEBUG(100, *YYCURSOR);
    1813            1402 :         yyleng = YYCURSOR - SCNG(yy_text);
    1814                 : #line 1938 "Zend/zend_language_scanner.l"
    1815                 :         {
    1816                 :         YYCURSOR += CG(heredoc_len) - 1;
    1817                 :         yyleng = CG(heredoc_len);
    1818                 : 
    1819                 :         Z_STRVAL_P(zendlval) = CG(heredoc);
    1820                 :         Z_STRLEN_P(zendlval) = CG(heredoc_len);
    1821                 :         CG(heredoc) = NULL;
    1822                 :         CG(heredoc_len) = 0;
    1823                 :         BEGIN(ST_IN_SCRIPTING);
    1824                 :         return T_END_HEREDOC;
    1825                 : }
    1826                 : #line 1827 "Zend/zend_language_scanner.c"
    1827                 : /* *********************************** */
    1828            2234 : yyc_ST_HEREDOC:
    1829                 :         {
    1830                 :                 static const unsigned char yybm[] = {
    1831                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1832                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1833                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1834                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1835                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1836                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    1837                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1838                 :                         128, 128,   0,   0,   0,   0,   0,   0, 
    1839                 :                           0, 128, 128, 128, 128, 128, 128, 128, 
    1840                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1841                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1842                 :                         128, 128, 128,   0,   0,   0,   0, 128, 
    1843                 :                           0, 128, 128, 128, 128, 128, 128, 128, 
    1844                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1845                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1846                 :                         128, 128, 128,   0,   0,   0,   0, 128, 
    1847                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1848                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1849                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1850                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1851                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1852                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1853                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1854                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1855                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1856                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1857                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1858                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1859                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1860                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1861                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1862                 :                         128, 128, 128, 128, 128, 128, 128, 128, 
    1863                 :                 };
    1864                 :                 YYDEBUG(101, *YYCURSOR);
    1865            2234 :                 YYFILL(2);
    1866            2234 :                 yych = *YYCURSOR;
    1867            2234 :                 if (yych == '$') goto yy103;
    1868            1792 :                 if (yych == '{') goto yy105;
    1869            1765 :                 goto yy106;
    1870             442 : yy103:
    1871                 :                 YYDEBUG(103, *YYCURSOR);
    1872             442 :                 ++YYCURSOR;
    1873             442 :                 if ((yych = *YYCURSOR) <= '_') {
    1874               2 :                         if (yych <= '@') goto yy104;
    1875               2 :                         if (yych <= 'Z') goto yy109;
    1876               0 :                         if (yych >= '_') goto yy109;
    1877                 :                 } else {
    1878             440 :                         if (yych <= 'z') {
    1879             440 :                                 if (yych >= 'a') goto yy109;
    1880                 :                         } else {
    1881               0 :                                 if (yych <= '{') goto yy112;
    1882               0 :                                 if (yych >= 0x7F) goto yy109;
    1883                 :                         }
    1884                 :                 }
    1885            1765 : yy104:
    1886                 :                 YYDEBUG(104, *YYCURSOR);
    1887            1765 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1888                 : #line 2062 "Zend/zend_language_scanner.l"
    1889                 :                 {
    1890                 :         int newline = 0;
    1891                 : 
    1892                 :         if (YYCURSOR > YYLIMIT) {
    1893                 :                 return 0;
    1894                 :         }
    1895                 : 
    1896                 :         YYCURSOR--;
    1897                 : 
    1898                 :         while (YYCURSOR < YYLIMIT) {
    1899                 :                 switch (*YYCURSOR++) {
    1900                 :                         case '\r':
    1901                 :                                 if (*YYCURSOR == '\n') {
    1902                 :                                         YYCURSOR++;
    1903                 :                                 }
    1904                 :                                 /* fall through */
    1905                 :                         case '\n':
    1906                 :                                 /* Check for ending label on the next line */
    1907                 :                                 if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) {
    1908                 :                                         YYCTYPE *end = YYCURSOR + CG(heredoc_len);
    1909                 : 
    1910                 :                                         if (*end == ';') {
    1911                 :                                                 end++;
    1912                 :                                         }
    1913                 : 
    1914                 :                                         if (*end == '\n' || *end == '\r') {
    1915                 :                                                 /* newline before label will be subtracted from returned text, but
    1916                 :                                                  * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
    1917                 :                                                 if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') {
    1918                 :                                                         newline = 2; /* Windows newline */
    1919                 :                                                 } else {
    1920                 :                                                         newline = 1;
    1921                 :                                                 }
    1922                 : 
    1923                 :                                                 CG(increment_lineno) = 1; /* For newline before label */
    1924                 :                                                 BEGIN(ST_END_HEREDOC);
    1925                 : 
    1926                 :                                                 goto heredoc_scan_done;
    1927                 :                                         }
    1928                 :                                 }
    1929                 :                                 continue;
    1930                 :                         case '$':
    1931                 :                                 if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
    1932                 :                                         break;
    1933                 :                                 }
    1934                 :                                 continue;
    1935                 :                         case '{':
    1936                 :                                 if (*YYCURSOR == '$') {
    1937                 :                                         break;
    1938                 :                                 }
    1939                 :                                 continue;
    1940                 :                         case '\\':
    1941                 :                                 if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
    1942                 :                                         YYCURSOR++;
    1943                 :                                 }
    1944                 :                                 /* fall through */
    1945                 :                         default:
    1946                 :                                 continue;
    1947                 :                 }
    1948                 : 
    1949                 :                 YYCURSOR--;
    1950                 :                 break;
    1951                 :         }
    1952                 : 
    1953                 : heredoc_scan_done:
    1954                 :         yyleng = YYCURSOR - SCNG(yy_text);
    1955                 : 
    1956                 :         zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);
    1957                 :         return T_ENCAPSED_AND_WHITESPACE;
    1958                 : }
    1959                 : #line 1960 "Zend/zend_language_scanner.c"
    1960              27 : yy105:
    1961                 :                 YYDEBUG(105, *YYCURSOR);
    1962              27 :                 yych = *++YYCURSOR;
    1963              27 :                 if (yych == '$') goto yy107;
    1964               0 :                 goto yy104;
    1965            1765 : yy106:
    1966                 :                 YYDEBUG(106, *YYCURSOR);
    1967            1765 :                 yych = *++YYCURSOR;
    1968            1765 :                 goto yy104;
    1969              27 : yy107:
    1970                 :                 YYDEBUG(107, *YYCURSOR);
    1971              27 :                 ++YYCURSOR;
    1972                 :                 YYDEBUG(108, *YYCURSOR);
    1973              27 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1974                 : #line 1951 "Zend/zend_language_scanner.l"
    1975                 :                 {
    1976                 :         zendlval->value.lval = (long) '{';
    1977                 :         yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
    1978                 :         yyless(1);
    1979                 :         return T_CURLY_OPEN;
    1980                 : }
    1981                 : #line 1982 "Zend/zend_language_scanner.c"
    1982            3293 : yy109:
    1983                 :                 YYDEBUG(109, *YYCURSOR);
    1984            3293 :                 yyaccept = 0;
    1985            3293 :                 YYMARKER = ++YYCURSOR;
    1986            3293 :                 YYFILL(3);
    1987            3293 :                 yych = *YYCURSOR;
    1988                 :                 YYDEBUG(110, *YYCURSOR);
    1989            3293 :                 if (yybm[0+yych] & 128) {
    1990            2851 :                         goto yy109;
    1991                 :                 }
    1992             442 :                 if (yych == '-') goto yy114;
    1993             442 :                 if (yych == '[') goto yy116;
    1994             441 : yy111:
    1995                 :                 YYDEBUG(111, *YYCURSOR);
    1996             441 :                 yyleng = YYCURSOR - SCNG(yy_text);
    1997                 : #line 1649 "Zend/zend_language_scanner.l"
    1998                 :                 {
    1999                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    2000                 :         zendlval->type = IS_STRING;
    2001                 :         return T_VARIABLE;
    2002                 : }
    2003                 : #line 2004 "Zend/zend_language_scanner.c"
    2004               0 : yy112:
    2005                 :                 YYDEBUG(112, *YYCURSOR);
    2006               0 :                 ++YYCURSOR;
    2007                 :                 YYDEBUG(113, *YYCURSOR);
    2008               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2009                 : #line 1276 "Zend/zend_language_scanner.l"
    2010                 :                 {
    2011                 :         yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
    2012                 :         return T_DOLLAR_OPEN_CURLY_BRACES;
    2013                 : }
    2014                 : #line 2015 "Zend/zend_language_scanner.c"
    2015               0 : yy114:
    2016                 :                 YYDEBUG(114, *YYCURSOR);
    2017               0 :                 yych = *++YYCURSOR;
    2018               0 :                 if (yych == '>') goto yy118;
    2019               0 : yy115:
    2020                 :                 YYDEBUG(115, *YYCURSOR);
    2021               0 :                 YYCURSOR = YYMARKER;
    2022               0 :                 goto yy111;
    2023               1 : yy116:
    2024                 :                 YYDEBUG(116, *YYCURSOR);
    2025               1 :                 ++YYCURSOR;
    2026                 :                 YYDEBUG(117, *YYCURSOR);
    2027               1 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2028                 : #line 1641 "Zend/zend_language_scanner.l"
    2029                 :                 {
    2030                 :         yyless(yyleng - 1);
    2031                 :         yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
    2032                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    2033                 :         zendlval->type = IS_STRING;
    2034                 :         return T_VARIABLE;
    2035                 : }
    2036                 : #line 2037 "Zend/zend_language_scanner.c"
    2037               0 : yy118:
    2038                 :                 YYDEBUG(118, *YYCURSOR);
    2039               0 :                 yych = *++YYCURSOR;
    2040               0 :                 if (yych <= '_') {
    2041               0 :                         if (yych <= '@') goto yy115;
    2042               0 :                         if (yych <= 'Z') goto yy119;
    2043               0 :                         if (yych <= '^') goto yy115;
    2044                 :                 } else {
    2045               0 :                         if (yych <= '`') goto yy115;
    2046               0 :                         if (yych <= 'z') goto yy119;
    2047               0 :                         if (yych <= '~') goto yy115;
    2048                 :                 }
    2049               0 : yy119:
    2050                 :                 YYDEBUG(119, *YYCURSOR);
    2051               0 :                 ++YYCURSOR;
    2052                 :                 YYDEBUG(120, *YYCURSOR);
    2053               0 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2054                 : #line 1631 "Zend/zend_language_scanner.l"
    2055                 :                 {
    2056                 :         yyless(yyleng - 3);
    2057                 :         yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
    2058                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    2059                 :         zendlval->type = IS_STRING;
    2060                 :         return T_VARIABLE;
    2061                 : }
    2062                 : #line 2063 "Zend/zend_language_scanner.c"
    2063                 :         }
    2064                 : /* *********************************** */
    2065         5793327 : yyc_ST_IN_SCRIPTING:
    2066                 :         {
    2067                 :                 static const unsigned char yybm[] = {
    2068                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    2069                 :                           0, 192,  64,   0,   0,  64,   0,   0, 
    2070                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    2071                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    2072                 :                         192,   0,   0,   0,   0,   0,   0,   0, 
    2073                 :                           0,   0,   0,   0,   0,   0,   0,   0, 
    2074                 :                          56,  56,  56,  56,  56,  56,  56,  56, 
    2075                 :                          56,  56,   0,   0,   0,   0,   0,   0, 
    2076                 :                           0,  40,  40,  40,  40,  40,  40,   8, 
    2077                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2078                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2079                 :                           8,   8,   8,   0,   0,   0,   0,   8, 
    2080                 :                           0,  40,  40,  40,  40,  40,  40,   8, 
    2081                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2082                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2083                 :                           8,   8,   8,   0,   0,   0,   0,   8, 
    2084                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2085                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2086                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2087                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2088                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2089                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2090                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2091                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2092                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2093                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2094                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2095                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2096                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2097                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2098                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2099                 :                           8,   8,   8,   8,   8,   8,   8,   8, 
    2100                 :                 };
    2101                 :                 YYDEBUG(121, *YYCURSOR);
    2102         5793327 :                 YYFILL(16);
    2103         5793327 :                 yych = *YYCURSOR;
    2104                 :                 YYDEBUG(-1, yych);
    2105         5793327 :                 switch (yych) {
    2106                 :                 case 0x00:
    2107                 :                 case 0x01:
    2108                 :                 case 0x02:
    2109                 :                 case 0x03:
    2110                 :                 case 0x04:
    2111                 :                 case 0x05:
    2112                 :                 case 0x06:
    2113                 :                 case 0x07:
    2114                 :                 case 0x08:
    2115                 :                 case '\v':
    2116                 :                 case '\f':
    2117                 :                 case 0x0E:
    2118                 :                 case 0x0F:
    2119                 :                 case 0x10:
    2120                 :                 case 0x11:
    2121                 :                 case 0x12:
    2122                 :                 case 0x13:
    2123                 :                 case 0x14:
    2124                 :                 case 0x15:
    2125                 :                 case 0x16:
    2126                 :                 case 0x17:
    2127                 :                 case 0x18:
    2128                 :                 case 0x19:
    2129                 :                 case 0x1A:
    2130                 :                 case 0x1B:
    2131                 :                 case 0x1C:
    2132                 :                 case 0x1D:
    2133                 :                 case 0x1E:
    2134            1526 :                 case 0x1F:      goto yy183;
    2135                 :                 case '\t':
    2136                 :                 case '\n':
    2137                 :                 case '\r':
    2138         1746632 :                 case ' ':       goto yy139;
    2139           32462 :                 case '!':       goto yy152;
    2140          163341 :                 case '"':  goto yy179;
    2141            1903 :                 case '#':       goto yy175;
    2142          588918 :                 case '$':       goto yy164;
    2143             118 :                 case '%':       goto yy158;
    2144            5786 :                 case '&':   goto yy159;
    2145          196729 :                 case '\'':      goto yy177;
    2146          446674 :                 case '(':       goto yy146;
    2147                 :                 case ')':
    2148                 :                 case ',':
    2149                 :                 case ';':
    2150                 :                 case '@':
    2151                 :                 case '[':
    2152                 :                 case ']':
    2153         1230008 :                 case '~':       goto yy165;
    2154            2397 :                 case '*':       goto yy155;
    2155            9752 :                 case '+':       goto yy151;
    2156           42099 :                 case '-':       goto yy137;
    2157           35013 :                 case '.':       goto yy157;
    2158           62369 :                 case '/':       goto yy156;
    2159           21722 :                 case '0':       goto yy171;
    2160                 :                 case '1':
    2161                 :                 case '2':
    2162                 :                 case '3':
    2163                 :                 case '4':
    2164                 :                 case '5':
    2165                 :                 case '6':
    2166                 :                 case '7':
    2167                 :                 case '8':
    2168           64304 :                 case '9':       goto yy173;
    2169           42522 :                 case ':':       goto yy141;
    2170            4546 :                 case '<':    goto yy153;
    2171          178039 :                 case '=':       goto yy149;
    2172            1067 :                 case '>':    goto yy154;
    2173           47556 :                 case '?':       goto yy166;
    2174                 :                 case 'A':
    2175           38607 :                 case 'a':       goto yy132;
    2176                 :                 case 'B':
    2177            5868 :                 case 'b':       goto yy134;
    2178                 :                 case 'C':
    2179           23652 :                 case 'c':       goto yy127;
    2180                 :                 case 'D':
    2181           29216 :                 case 'd':       goto yy125;
    2182                 :                 case 'E':
    2183           68927 :                 case 'e':       goto yy123;
    2184                 :                 case 'F':
    2185           91337 :                 case 'f':       goto yy126;
    2186                 :                 case 'G':
    2187           46871 :                 case 'g':       goto yy135;
    2188                 :                 case 'I':
    2189           74633 :                 case 'i':       goto yy130;
    2190                 :                 case 'L':
    2191            7103 :                 case 'l':       goto yy150;
    2192                 :                 case 'N':
    2193           26475 :                 case 'n':       goto yy144;
    2194                 :                 case 'O':
    2195            7794 :                 case 'o':       goto yy162;
    2196                 :                 case 'P':
    2197           44636 :                 case 'p':       goto yy136;
    2198                 :                 case 'R':
    2199           50064 :                 case 'r':       goto yy128;
    2200                 :                 case 'S':
    2201           38060 :                 case 's':       goto yy133;
    2202                 :                 case 'T':
    2203           26732 :                 case 't':       goto yy129;
    2204                 :                 case 'U':
    2205           14150 :                 case 'u':       goto yy147;
    2206                 :                 case 'V':
    2207           29172 :                 case 'v':       goto yy145;
    2208                 :                 case 'W':
    2209            1371 :                 case 'w':       goto yy131;
    2210                 :                 case 'X':
    2211             837 :                 case 'x':       goto yy163;
    2212             482 :                 case '\\':      goto yy142;
    2213              22 :                 case '^':       goto yy161;
    2214           12711 :                 case '_':       goto yy148;
    2215             104 :                 case '`':       goto yy181;
    2216           96256 :                 case '{':       goto yy167;
    2217            1719 :                 case '|':       goto yy160;
    2218           96552 :                 case '}':       goto yy169;
    2219           34493 :                 default:        goto yy174;
    2220                 :                 }
    2221           68927 : yy123:
    2222                 :                 YYDEBUG(123, *YYCURSOR);
    2223           68927 :                 ++YYCURSOR;
    2224                 :                 YYDEBUG(-1, yych);
    2225           68927 :                 switch ((yych = *YYCURSOR)) {
    2226                 :                 case 'C':
    2227           30371 :                 case 'c':       goto yy701;
    2228                 :                 case 'L':
    2229           16807 :                 case 'l':       goto yy702;
    2230                 :                 case 'M':
    2231            5541 :                 case 'm':       goto yy703;
    2232                 :                 case 'N':
    2233             301 :                 case 'n':       goto yy704;
    2234                 :                 case 'V':
    2235            1902 :                 case 'v':       goto yy705;
    2236                 :                 case 'X':
    2237           11688 :                 case 'x':       goto yy706;
    2238            2317 :                 default:        goto yy186;
    2239                 :                 }
    2240          380426 : yy124:
    2241                 :                 YYDEBUG(124, *YYCURSOR);
    2242          380426 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2243                 : #line 1672 "Zend/zend_language_scanner.l"
    2244                 :                 {
    2245                 :         zend_copy_value(zendlval, yytext, yyleng);
    2246                 :         zendlval->type = IS_STRING;
    2247                 :         return T_STRING;
    2248                 : }
    2249                 : #line 2250 "Zend/zend_language_scanner.c"
    2250           29216 : yy125:
    2251                 :                 YYDEBUG(125, *YYCURSOR);
    2252           29216 :                 yych = *++YYCURSOR;
    2253           29216 :                 if (yych <= 'O') {
    2254            1069 :                         if (yych <= 'H') {
    2255             342 :                                 if (yych == 'E') goto yy683;
    2256             302 :                                 goto yy186;
    2257                 :                         } else {
    2258             727 :                                 if (yych <= 'I') goto yy684;
    2259             177 :                                 if (yych <= 'N') goto yy186;
    2260             177 :                                 goto yy685;
    2261                 :                         }
    2262                 :                 } else {
    2263           28147 :                         if (yych <= 'h') {
    2264            7371 :                                 if (yych == 'e') goto yy683;
    2265            3095 :                                 goto yy186;
    2266                 :                         } else {
    2267           20776 :                                 if (yych <= 'i') goto yy684;
    2268            1436 :                                 if (yych == 'o') goto yy685;
    2269             878 :                                 goto yy186;
    2270                 :                         }
    2271                 :                 }
    2272           91337 : yy126:
    2273                 :                 YYDEBUG(126, *YYCURSOR);
    2274           91337 :                 yych = *++YYCURSOR;
    2275           91337 :                 if (yych <= 'U') {
    2276            6029 :                         if (yych <= 'N') {
    2277            5917 :                                 if (yych == 'I') goto yy662;
    2278            5417 :                                 goto yy186;
    2279                 :                         } else {
    2280             112 :                                 if (yych <= 'O') goto yy663;
    2281              59 :                                 if (yych <= 'T') goto yy186;
    2282              21 :                                 goto yy664;
    2283                 :                         }
    2284                 :                 } else {
    2285           85308 :                         if (yych <= 'n') {
    2286           33281 :                                 if (yych == 'i') goto yy662;
    2287           27734 :                                 goto yy186;
    2288                 :                         } else {
    2289           52027 :                                 if (yych <= 'o') goto yy663;
    2290           37737 :                                 if (yych == 'u') goto yy664;
    2291            4743 :                                 goto yy186;
    2292                 :                         }
    2293                 :                 }
    2294           23652 : yy127:
    2295                 :                 YYDEBUG(127, *YYCURSOR);
    2296           23652 :                 yych = *++YYCURSOR;
    2297           23652 :                 if (yych <= 'O') {
    2298            1955 :                         if (yych <= 'K') {
    2299            1864 :                                 if (yych == 'A') goto yy634;
    2300             661 :                                 goto yy186;
    2301                 :                         } else {
    2302              91 :                                 if (yych <= 'L') goto yy635;
    2303              55 :                                 if (yych <= 'N') goto yy186;
    2304              54 :                                 goto yy636;
    2305                 :                         }
    2306                 :                 } else {
    2307           21697 :                         if (yych <= 'k') {
    2308            6234 :                                 if (yych == 'a') goto yy634;
    2309            2462 :                                 goto yy186;
    2310                 :                         } else {
    2311           15463 :                                 if (yych <= 'l') goto yy635;
    2312            7055 :                                 if (yych == 'o') goto yy636;
    2313            2396 :                                 goto yy186;
    2314                 :                         }
    2315                 :                 }
    2316           50064 : yy128:
    2317                 :                 YYDEBUG(128, *YYCURSOR);
    2318           50064 :                 yych = *++YYCURSOR;
    2319           50064 :                 if (yych == 'E') goto yy616;
    2320           50052 :                 if (yych == 'e') goto yy616;
    2321            2449 :                 goto yy186;
    2322           26732 : yy129:
    2323                 :                 YYDEBUG(129, *YYCURSOR);
    2324           26732 :                 yych = *++YYCURSOR;
    2325           26732 :                 if (yych <= 'R') {
    2326            4006 :                         if (yych == 'H') goto yy608;
    2327            4002 :                         if (yych <= 'Q') goto yy186;
    2328            3841 :                         goto yy609;
    2329                 :                 } else {
    2330           22726 :                         if (yych <= 'h') {
    2331            6930 :                                 if (yych <= 'g') goto yy186;
    2332             274 :                                 goto yy608;
    2333                 :                         } else {
    2334           15796 :                                 if (yych == 'r') goto yy609;
    2335             640 :                                 goto yy186;
    2336                 :                         }
    2337                 :                 }
    2338           74633 : yy130:
    2339                 :                 YYDEBUG(130, *YYCURSOR);
    2340           74633 :                 yych = *++YYCURSOR;
    2341           74633 :                 if (yych <= 'S') {
    2342             413 :                         if (yych <= 'L') {
    2343             203 :                                 if (yych == 'F') goto yy561;
    2344             196 :                                 goto yy186;
    2345                 :                         } else {
    2346             210 :                                 if (yych <= 'M') goto yy563;
    2347             126 :                                 if (yych <= 'N') goto yy564;
    2348              26 :                                 if (yych <= 'R') goto yy186;
    2349              26 :                                 goto yy565;
    2350                 :                         }
    2351                 :                 } else {
    2352           74220 :                         if (yych <= 'm') {
    2353           59991 :                                 if (yych == 'f') goto yy561;
    2354            2801 :                                 if (yych <= 'l') goto yy186;
    2355            2573 :                                 goto yy563;
    2356                 :                         } else {
    2357           14229 :                                 if (yych <= 'n') goto yy564;
    2358            7217 :                                 if (yych == 's') goto yy565;
    2359             179 :                                 goto yy186;
    2360                 :                         }
    2361                 :                 }
    2362            1371 : yy131:
    2363                 :                 YYDEBUG(131, *YYCURSOR);
    2364            1371 :                 yych = *++YYCURSOR;
    2365            1371 :                 if (yych == 'H') goto yy556;
    2366            1371 :                 if (yych == 'h') goto yy556;
    2367             343 :                 goto yy186;
    2368           38607 : yy132:
    2369                 :                 YYDEBUG(132, *YYCURSOR);
    2370           38607 :                 yych = *++YYCURSOR;
    2371           38607 :                 if (yych <= 'S') {
    2372             857 :                         if (yych <= 'M') {
    2373             778 :                                 if (yych == 'B') goto yy538;
    2374             766 :                                 goto yy186;
    2375                 :                         } else {
    2376              79 :                                 if (yych <= 'N') goto yy539;
    2377              79 :                                 if (yych <= 'Q') goto yy186;
    2378              67 :                                 if (yych <= 'R') goto yy540;
    2379              52 :                                 goto yy541;
    2380                 :                         }
    2381                 :                 } else {
    2382           37750 :                         if (yych <= 'n') {
    2383            4578 :                                 if (yych == 'b') goto yy538;
    2384            4414 :                                 if (yych <= 'm') goto yy186;
    2385              85 :                                 goto yy539;
    2386                 :                         } else {
    2387           33172 :                                 if (yych <= 'q') goto yy186;
    2388           33154 :                                 if (yych <= 'r') goto yy540;
    2389            8991 :                                 if (yych <= 's') goto yy541;
    2390              86 :                                 goto yy186;
    2391                 :                         }
    2392                 :                 }
    2393           38060 : yy133:
    2394                 :                 YYDEBUG(133, *YYCURSOR);
    2395           38060 :                 yych = *++YYCURSOR;
    2396           38060 :                 if (yych <= 'W') {
    2397            1795 :                         if (yych == 'T') goto yy526;
    2398            1577 :                         if (yych <= 'V') goto yy186;
    2399               0 :                         goto yy527;
    2400                 :                 } else {
    2401           36265 :                         if (yych <= 't') {
    2402           31606 :                                 if (yych <= 's') goto yy186;
    2403           19987 :                                 goto yy526;
    2404                 :                         } else {
    2405            4659 :                                 if (yych == 'w') goto yy527;
    2406            4216 :                                 goto yy186;
    2407                 :                         }
    2408                 :                 }
    2409            5868 : yy134:
    2410                 :                 YYDEBUG(134, *YYCURSOR);
    2411            5868 :                 yyaccept = 0;
    2412            5868 :                 yych = *(YYMARKER = ++YYCURSOR);
    2413            5868 :                 if (yych <= ';') {
    2414            1461 :                         if (yych <= '"') {
    2415             645 :                                 if (yych <= '!') goto yy186;
    2416             441 :                                 goto yy518;
    2417                 :                         } else {
    2418             816 :                                 if (yych == '\'') goto yy519;
    2419             197 :                                 goto yy186;
    2420                 :                         }
    2421                 :                 } else {
    2422            4407 :                         if (yych <= 'R') {
    2423              62 :                                 if (yych <= '<') goto yy517;
    2424              24 :                                 if (yych <= 'Q') goto yy186;
    2425               0 :                                 goto yy520;
    2426                 :                         } else {
    2427            4345 :                                 if (yych == 'r') goto yy520;
    2428            2707 :                                 goto yy186;
    2429                 :                         }
    2430                 :                 }
    2431           46871 : yy135:
    2432                 :                 YYDEBUG(135, *YYCURSOR);
    2433           46871 :                 yych = *++YYCURSOR;
    2434           46871 :                 if (yych <= 'O') {
    2435              67 :                         if (yych == 'L') goto yy507;
    2436              58 :                         if (yych <= 'N') goto yy186;
    2437               0 :                         goto yy508;
    2438                 :                 } else {
    2439           46804 :                         if (yych <= 'l') {
    2440           45089 :                                 if (yych <= 'k') goto yy186;
    2441            3823 :                                 goto yy507;
    2442                 :                         } else {
    2443            1715 :                                 if (yych == 'o') goto yy508;
    2444            1673 :                                 goto yy186;
    2445                 :                         }
    2446                 :                 }
    2447           44636 : yy136:
    2448                 :                 YYDEBUG(136, *YYCURSOR);
    2449           44636 :                 yych = *++YYCURSOR;
    2450           44636 :                 if (yych <= 'U') {
    2451           15563 :                         if (yych == 'R') goto yy483;
    2452           15473 :                         if (yych <= 'T') goto yy186;
    2453               0 :                         goto yy484;
    2454                 :                 } else {
    2455           29073 :                         if (yych <= 'r') {
    2456           22977 :                                 if (yych <= 'q') goto yy186;
    2457           16618 :                                 goto yy483;
    2458                 :                         } else {
    2459            6096 :                                 if (yych == 'u') goto yy484;
    2460              50 :                                 goto yy186;
    2461                 :                         }
    2462                 :                 }
    2463           42099 : yy137:
    2464                 :                 YYDEBUG(137, *YYCURSOR);
    2465           42099 :                 ++YYCURSOR;
    2466           42099 :                 if ((yych = *YYCURSOR) <= '<') {
    2467            6790 :                         if (yych == '-') goto yy479;
    2468                 :                 } else {
    2469           35309 :                         if (yych <= '=') goto yy477;
    2470           35170 :                         if (yych <= '>') goto yy481;
    2471                 :                 }
    2472         1926666 : yy138:
    2473                 :                 YYDEBUG(138, *YYCURSOR);
    2474         1926666 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2475                 : #line 1265 "Zend/zend_language_scanner.l"
    2476                 :                 {
    2477                 :         return yytext[0];
    2478                 : }
    2479                 : #line 2480 "Zend/zend_language_scanner.c"
    2480         1746632 : yy139:
    2481                 :                 YYDEBUG(139, *YYCURSOR);
    2482         1746632 :                 ++YYCURSOR;
    2483         1746632 :                 yych = *YYCURSOR;
    2484         1746632 :                 goto yy476;
    2485         1746632 : yy140:
    2486                 :                 YYDEBUG(140, *YYCURSOR);
    2487         1746632 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2488                 : #line 1000 "Zend/zend_language_scanner.l"
    2489                 :                 {
    2490                 :         zendlval->value.str.val = yytext; /* no copying - intentional */
    2491                 :         zendlval->value.str.len = yyleng;
    2492                 :         zendlval->type = IS_STRING;
    2493                 :         HANDLE_NEWLINES(yytext, yyleng);
    2494                 :         return T_WHITESPACE;
    2495                 : }
    2496                 : #line 2497 "Zend/zend_language_scanner.c"
    2497           42522 : yy141:
    2498                 :                 YYDEBUG(141, *YYCURSOR);
    2499           42522 :                 yych = *++YYCURSOR;
    2500           42522 :                 if (yych == ':') goto yy473;
    2501           24607 :                 goto yy138;
    2502             482 : yy142:
    2503                 :                 YYDEBUG(142, *YYCURSOR);
    2504             482 :                 ++YYCURSOR;
    2505                 :                 YYDEBUG(143, *YYCURSOR);
    2506             482 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2507                 : #line 1029 "Zend/zend_language_scanner.l"
    2508                 :                 {
    2509                 :         return T_NS_SEPARATOR;
    2510                 : }
    2511                 : #line 2512 "Zend/zend_language_scanner.c"
    2512           26475 : yy144:
    2513                 :                 YYDEBUG(144, *YYCURSOR);
    2514           26475 :                 yych = *++YYCURSOR;
    2515           26475 :                 if (yych <= 'E') {
    2516              26 :                         if (yych == 'A') goto yy461;
    2517               2 :                         if (yych <= 'D') goto yy186;
    2518               2 :                         goto yy462;
    2519                 :                 } else {
    2520           26449 :                         if (yych <= 'a') {
    2521            8053 :                                 if (yych <= '`') goto yy186;
    2522             225 :                                 goto yy461;
    2523                 :                         } else {
    2524           18396 :                                 if (yych == 'e') goto yy462;
    2525            7960 :                                 goto yy186;
    2526                 :                         }
    2527                 :                 }
    2528           29172 : yy145:
    2529                 :                 YYDEBUG(145, *YYCURSOR);
    2530           29172 :                 yych = *++YYCURSOR;
    2531           29172 :                 if (yych == 'A') goto yy458;
    2532           29154 :                 if (yych == 'a') goto yy458;
    2533             584 :                 goto yy186;
    2534          446674 : yy146:
    2535                 :                 YYDEBUG(146, *YYCURSOR);
    2536          446674 :                 yyaccept = 1;
    2537          446674 :                 yych = *(YYMARKER = ++YYCURSOR);
    2538          446674 :                 if (yych <= 'S') {
    2539          384105 :                         if (yych <= 'D') {
    2540          373542 :                                 if (yych <= ' ') {
    2541           39950 :                                         if (yych == '\t') goto yy379;
    2542           39946 :                                         if (yych <= 0x1F) goto yy138;
    2543           35035 :                                         goto yy379;
    2544                 :                                 } else {
    2545          333592 :                                         if (yych <= '@') goto yy138;
    2546             826 :                                         if (yych == 'C') goto yy138;
    2547             760 :                                         goto yy379;
    2548                 :                                 }
    2549                 :                         } else {
    2550           10563 :                                 if (yych <= 'I') {
    2551            1160 :                                         if (yych == 'F') goto yy379;
    2552             981 :                                         if (yych <= 'H') goto yy138;
    2553             112 :                                         goto yy379;
    2554                 :                                 } else {
    2555            9403 :                                         if (yych == 'O') goto yy379;
    2556            9381 :                                         if (yych <= 'Q') goto yy138;
    2557             209 :                                         goto yy379;
    2558                 :                                 }
    2559                 :                         }
    2560                 :                 } else {
    2561           62569 :                         if (yych <= 'f') {
    2562           26830 :                                 if (yych <= 'b') {
    2563           11956 :                                         if (yych == 'U') goto yy379;
    2564           11944 :                                         if (yych <= '`') goto yy138;
    2565            4002 :                                         goto yy379;
    2566                 :                                 } else {
    2567           14874 :                                         if (yych == 'd') goto yy379;
    2568            8957 :                                         if (yych <= 'e') goto yy138;
    2569            6837 :                                         goto yy379;
    2570                 :                                 }
    2571                 :                         } else {
    2572           35739 :                                 if (yych <= 'o') {
    2573           21620 :                                         if (yych == 'i') goto yy379;
    2574           10280 :                                         if (yych <= 'n') goto yy138;
    2575             916 :                                         goto yy379;
    2576                 :                                 } else {
    2577           14119 :                                         if (yych <= 's') {
    2578           10390 :                                                 if (yych <= 'q') goto yy138;
    2579            6474 :                                                 goto yy379;
    2580                 :                                         } else {
    2581            3729 :                                                 if (yych == 'u') goto yy379;
    2582            2109 :                                                 goto yy138;
    2583                 :                                         }
    2584                 :                                 }
    2585                 :                         }
    2586                 :                 }
    2587           14150 : yy147:
    2588                 :                 YYDEBUG(147, *YYCURSOR);
    2589           14150 :                 yych = *++YYCURSOR;
    2590           14150 :                 if (yych <= 'S') {
    2591              80 :                         if (yych == 'N') goto yy370;
    2592              79 :                         if (yych <= 'R') goto yy186;
    2593              13 :                         goto yy371;
    2594                 :                 } else {
    2595           14070 :                         if (yych <= 'n') {
    2596            7856 :                                 if (yych <= 'm') goto yy186;
    2597            7755 :                                 goto yy370;
    2598                 :                         } else {
    2599            6214 :                                 if (yych == 's') goto yy371;
    2600            5982 :                                 goto yy186;
    2601                 :                         }
    2602                 :                 }
    2603           12711 : yy148:
    2604                 :                 YYDEBUG(148, *YYCURSOR);
    2605           12711 :                 yych = *++YYCURSOR;
    2606           12711 :                 if (yych == '_') goto yy296;
    2607             128 :                 goto yy186;
    2608          178039 : yy149:
    2609                 :                 YYDEBUG(149, *YYCURSOR);
    2610          178039 :                 yych = *++YYCURSOR;
    2611          178039 :                 if (yych <= '<') goto yy138;
    2612           43482 :                 if (yych <= '=') goto yy290;
    2613           28807 :                 if (yych <= '>') goto yy292;
    2614             419 :                 goto yy138;
    2615            7103 : yy150:
    2616                 :                 YYDEBUG(150, *YYCURSOR);
    2617            7103 :                 yych = *++YYCURSOR;
    2618            7103 :                 if (yych == 'I') goto yy286;
    2619            7089 :                 if (yych == 'i') goto yy286;
    2620            6712 :                 goto yy186;
    2621            9752 : yy151:
    2622                 :                 YYDEBUG(151, *YYCURSOR);
    2623            9752 :                 yych = *++YYCURSOR;
    2624            9752 :                 if (yych == '+') goto yy284;
    2625            4062 :                 if (yych == '=') goto yy282;
    2626            3442 :                 goto yy138;
    2627           32462 : yy152:
    2628                 :                 YYDEBUG(152, *YYCURSOR);
    2629           32462 :                 yych = *++YYCURSOR;
    2630           32462 :                 if (yych == '=') goto yy279;
    2631           23330 :                 goto yy138;
    2632            4546 : yy153:
    2633                 :                 YYDEBUG(153, *YYCURSOR);
    2634            4546 :                 yyaccept = 1;
    2635            4546 :                 yych = *(YYMARKER = ++YYCURSOR);
    2636            4546 :                 if (yych <= ';') {
    2637            1419 :                         if (yych == '/') goto yy251;
    2638            1416 :                         goto yy138;
    2639                 :                 } else {
    2640            3127 :                         if (yych <= '<') goto yy249;
    2641            1647 :                         if (yych <= '=') goto yy252;
    2642              36 :                         if (yych <= '>') goto yy254;
    2643              33 :                         goto yy138;
    2644                 :                 }
    2645            1067 : yy154:
    2646                 :                 YYDEBUG(154, *YYCURSOR);
    2647            1067 :                 yych = *++YYCURSOR;
    2648            1067 :                 if (yych <= '<') goto yy138;
    2649             302 :                 if (yych <= '=') goto yy245;
    2650              44 :                 if (yych <= '>') goto yy243;
    2651               4 :                 goto yy138;
    2652            2397 : yy155:
    2653                 :                 YYDEBUG(155, *YYCURSOR);
    2654            2397 :                 yych = *++YYCURSOR;
    2655            2397 :                 if (yych == '=') goto yy241;
    2656            2384 :                 goto yy138;
    2657           62369 : yy156:
    2658                 :                 YYDEBUG(156, *YYCURSOR);
    2659           62369 :                 yych = *++YYCURSOR;
    2660           62369 :                 if (yych <= '.') {
    2661           23176 :                         if (yych == '*') goto yy233;
    2662             479 :                         goto yy138;
    2663                 :                 } else {
    2664           39193 :                         if (yych <= '/') goto yy235;
    2665              23 :                         if (yych == '=') goto yy236;
    2666              19 :                         goto yy138;
    2667                 :                 }
    2668           35013 : yy157:
    2669                 :                 YYDEBUG(157, *YYCURSOR);
    2670           35013 :                 yych = *++YYCURSOR;
    2671           35013 :                 if (yych <= '/') goto yy138;
    2672            5032 :                 if (yych <= '9') goto yy229;
    2673            4106 :                 if (yych == '=') goto yy231;
    2674            1690 :                 goto yy138;
    2675             118 : yy158:
    2676                 :                 YYDEBUG(158, *YYCURSOR);
    2677             118 :                 yych = *++YYCURSOR;
    2678             118 :                 if (yych <= '<') goto yy138;
    2679               3 :                 if (yych <= '=') goto yy225;
    2680               2 :                 if (yych <= '>') goto yy223;
    2681               0 :                 goto yy138;
    2682            5786 : yy159:
    2683                 :                 YYDEBUG(159, *YYCURSOR);
    2684            5786 :                 yych = *++YYCURSOR;
    2685            5786 :                 if (yych == '&') goto yy219;
    2686            2674 :                 if (yych == '=') goto yy221;
    2687            2671 :                 goto yy138;
    2688            1719 : yy160:
    2689                 :                 YYDEBUG(160, *YYCURSOR);
    2690            1719 :                 yych = *++YYCURSOR;
    2691            1719 :                 if (yych == '=') goto yy217;
    2692            1623 :                 if (yych == '|') goto yy215;
    2693             488 :                 goto yy138;
    2694              22 : yy161:
    2695                 :                 YYDEBUG(161, *YYCURSOR);
    2696              22 :                 yych = *++YYCURSOR;
    2697              22 :                 if (yych == '=') goto yy213;
    2698              20 :                 goto yy138;
    2699            7794 : yy162:
    2700                 :                 YYDEBUG(162, *YYCURSOR);
    2701            7794 :                 yych = *++YYCURSOR;
    2702            7794 :                 if (yych == 'R') goto yy211;
    2703            7792 :                 if (yych == 'r') goto yy211;
    2704            7057 :                 goto yy186;
    2705             837 : yy163:
    2706                 :                 YYDEBUG(163, *YYCURSOR);
    2707             837 :                 yych = *++YYCURSOR;
    2708             837 :                 if (yych == 'O') goto yy208;
    2709             837 :                 if (yych == 'o') goto yy208;
    2710             836 :                 goto yy186;
    2711          588918 : yy164:
    2712                 :                 YYDEBUG(164, *YYCURSOR);
    2713          588918 :                 yych = *++YYCURSOR;
    2714          588918 :                 if (yych <= '_') {
    2715           24716 :                         if (yych <= '@') goto yy138;
    2716           24561 :                         if (yych <= 'Z') goto yy205;
    2717           10170 :                         if (yych <= '^') goto yy138;
    2718           10170 :                         goto yy205;
    2719                 :                 } else {
    2720          564202 :                         if (yych <= '`') goto yy138;
    2721          564202 :                         if (yych <= 'z') goto yy205;
    2722              36 :                         if (yych <= '~') goto yy138;
    2723               7 :                         goto yy205;
    2724                 :                 }
    2725         1230008 : yy165:
    2726                 :                 YYDEBUG(165, *YYCURSOR);
    2727         1230008 :                 yych = *++YYCURSOR;
    2728         1230008 :                 goto yy138;
    2729           47556 : yy166:
    2730                 :                 YYDEBUG(166, *YYCURSOR);
    2731           47556 :                 yych = *++YYCURSOR;
    2732           47556 :                 if (yych == '>') goto yy201;
    2733           22836 :                 goto yy138;
    2734           96256 : yy167:
    2735                 :                 YYDEBUG(167, *YYCURSOR);
    2736           96256 :                 ++YYCURSOR;
    2737                 :                 YYDEBUG(168, *YYCURSOR);
    2738           96256 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2739                 : #line 1270 "Zend/zend_language_scanner.l"
    2740                 :                 {
    2741                 :         yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
    2742                 :         return '{';
    2743                 : }
    2744                 : #line 2745 "Zend/zend_language_scanner.c"
    2745           96552 : yy169:
    2746                 :                 YYDEBUG(169, *YYCURSOR);
    2747           96552 :                 ++YYCURSOR;
    2748                 :                 YYDEBUG(170, *YYCURSOR);
    2749           96552 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2750                 : #line 1282 "Zend/zend_language_scanner.l"
    2751                 :                 {
    2752                 :         RESET_DOC_COMMENT();
    2753                 :         if (!zend_stack_is_empty(&SCNG(state_stack))) {
    2754                 :                 yy_pop_state(TSRMLS_C);
    2755                 :         }
    2756                 :         return '}';
    2757                 : }
    2758                 : #line 2759 "Zend/zend_language_scanner.c"
    2759           21722 : yy171:
    2760                 :                 YYDEBUG(171, *YYCURSOR);
    2761           21722 :                 yyaccept = 2;
    2762           21722 :                 yych = *(YYMARKER = ++YYCURSOR);
    2763           21722 :                 if (yych <= 'E') {
    2764           18178 :                         if (yych <= '/') {
    2765           13123 :                                 if (yych == '.') goto yy187;
    2766                 :                         } else {
    2767            5055 :                                 if (yych <= '9') goto yy190;
    2768            3435 :                                 if (yych >= 'E') goto yy192;
    2769                 :                         }
    2770                 :                 } else {
    2771            3544 :                         if (yych <= 'd') {
    2772            2199 :                                 if (yych == 'X') goto yy197;
    2773                 :                         } else {
    2774            1345 :                                 if (yych <= 'e') goto yy192;
    2775            1341 :                                 if (yych == 'x') goto yy197;
    2776                 :                         }
    2777                 :                 }
    2778           78519 : yy172:
    2779                 :                 YYDEBUG(172, *YYCURSOR);
    2780           78519 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2781                 : #line 1308 "Zend/zend_language_scanner.l"
    2782                 :                 {
    2783                 :         if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
    2784                 :                 zendlval->value.lval = strtol(yytext, NULL, 0);
    2785                 :         } else {
    2786                 :                 errno = 0;
    2787                 :                 zendlval->value.lval = strtol(yytext, NULL, 0);
    2788                 :                 if (errno == ERANGE) { /* Overflow */
    2789                 :                         if (yytext[0] == '0') { /* octal overflow */
    2790                 :                                 zendlval->value.dval = zend_oct_strtod(yytext, NULL);
    2791                 :                         } else {
    2792                 :                                 zendlval->value.dval = zend_strtod(yytext, NULL);
    2793                 :                         }
    2794                 :                         zendlval->type = IS_DOUBLE;
    2795                 :                         return T_DNUMBER;
    2796                 :                 }
    2797                 :         }
    2798                 : 
    2799                 :         zendlval->type = IS_LONG;
    2800                 :         return T_LNUMBER;
    2801                 : }
    2802                 : #line 2803 "Zend/zend_language_scanner.c"
    2803           64304 : yy173:
    2804                 :                 YYDEBUG(173, *YYCURSOR);
    2805           64304 :                 yyaccept = 2;
    2806           64304 :                 yych = *(YYMARKER = ++YYCURSOR);
    2807           64304 :                 if (yych <= '9') {
    2808           52335 :                         if (yych == '.') goto yy187;
    2809           50724 :                         if (yych <= '/') goto yy172;
    2810           24004 :                         goto yy190;
    2811                 :                 } else {
    2812           11969 :                         if (yych <= 'E') {
    2813            6363 :                                 if (yych <= 'D') goto yy172;
    2814             101 :                                 goto yy192;
    2815                 :                         } else {
    2816            5606 :                                 if (yych == 'e') goto yy192;
    2817            5348 :                                 goto yy172;
    2818                 :                         }
    2819                 :                 }
    2820           34493 : yy174:
    2821                 :                 YYDEBUG(174, *YYCURSOR);
    2822           34493 :                 yych = *++YYCURSOR;
    2823           34493 :                 goto yy186;
    2824            1903 : yy175:
    2825                 :                 YYDEBUG(175, *YYCURSOR);
    2826            1903 :                 ++YYCURSOR;
    2827           41073 : yy176:
    2828                 :                 YYDEBUG(176, *YYCURSOR);
    2829           41073 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2830                 : #line 1679 "Zend/zend_language_scanner.l"
    2831                 :                 {
    2832                 :         while (YYCURSOR < YYLIMIT) {
    2833                 :                 switch (*YYCURSOR++) {
    2834                 :                         case '\r':
    2835                 :                                 if (*YYCURSOR == '\n') {
    2836                 :                                         YYCURSOR++;
    2837                 :                                 }
    2838                 :                                 /* fall through */
    2839                 :                         case '\n':
    2840                 :                                 CG(zend_lineno)++;
    2841                 :                                 break;
    2842                 :                         case '%':
    2843                 :                                 if (!CG(asp_tags)) {
    2844                 :                                         continue;
    2845                 :                                 }
    2846                 :                                 /* fall through */
    2847                 :                         case '?':
    2848                 :                                 if (*YYCURSOR == '>') {
    2849                 :                                         YYCURSOR--;
    2850                 :                                         break;
    2851                 :                                 }
    2852                 :                                 /* fall through */
    2853                 :                         default:
    2854                 :                                 continue;
    2855                 :                 }
    2856                 : 
    2857                 :                 break;
    2858                 :         }
    2859                 : 
    2860                 :         yyleng = YYCURSOR - SCNG(yy_text);
    2861                 : 
    2862                 :         return T_COMMENT;
    2863                 : }
    2864                 : #line 2865 "Zend/zend_language_scanner.c"
    2865          196729 : yy177:
    2866                 :                 YYDEBUG(177, *YYCURSOR);
    2867          196729 :                 ++YYCURSOR;
    2868          197348 : yy178:
    2869                 :                 YYDEBUG(178, *YYCURSOR);
    2870          197348 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2871                 : #line 1770 "Zend/zend_language_scanner.l"
    2872                 :                 {
    2873                 :         register char *s, *t;
    2874                 :         char *end;
    2875                 :         int bprefix = (yytext[0] != '\'') ? 1 : 0;
    2876                 : 
    2877                 :         while (1) {
    2878                 :                 if (YYCURSOR < YYLIMIT) {
    2879                 :                         if (*YYCURSOR == '\'') {
    2880                 :                                 YYCURSOR++;
    2881                 :                                 yyleng = YYCURSOR - SCNG(yy_text);
    2882                 : 
    2883                 :                                 break;
    2884                 :                         } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
    2885                 :                                 YYCURSOR++;
    2886                 :                         }
    2887                 :                 } else {
    2888                 :                         yyleng = YYLIMIT - SCNG(yy_text);
    2889                 : 
    2890                 :                         /* Unclosed single quotes; treat similar to double quotes, but without a separate token
    2891                 :                          * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..."
    2892                 :                          * rule, which continued in ST_IN_SCRIPTING state after the quote */
    2893                 :                         return T_ENCAPSED_AND_WHITESPACE;
    2894                 :                 }
    2895                 :         }
    2896                 : 
    2897                 :         zendlval->value.str.val = estrndup(yytext+bprefix+1, yyleng-bprefix-2);
    2898                 :         zendlval->value.str.len = yyleng-bprefix-2;
    2899                 :         zendlval->type = IS_STRING;
    2900                 : 
    2901                 :         /* convert escape sequences */
    2902                 :         s = t = zendlval->value.str.val;
    2903                 :         end = s+zendlval->value.str.len;
    2904                 :         while (s<end) {
    2905                 :                 if (*s=='\\') {
    2906                 :                         s++;
    2907                 : 
    2908                 :                         switch(*s) {
    2909                 :                                 case '\\':
    2910                 :                                 case '\'':
    2911                 :                                         *t++ = *s;
    2912                 :                                         zendlval->value.str.len--;
    2913                 :                                         break;
    2914                 :                                 default:
    2915                 :                                         *t++ = '\\';
    2916                 :                                         *t++ = *s;
    2917                 :                                         break;
    2918                 :                         }
    2919                 :                 } else {
    2920                 :                         *t++ = *s;
    2921                 :                 }
    2922                 : 
    2923                 :                 if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
    2924                 :                         CG(zend_lineno)++;
    2925                 :                 }
    2926                 :                 s++;
    2927                 :         }
    2928                 :         *t = 0;
    2929                 : 
    2930                 : #ifdef ZEND_MULTIBYTE
    2931                 :         if (SCNG(output_filter)) {
    2932                 :                 size_t sz = 0;
    2933                 :                 s = zendlval->value.str.val;
    2934                 :                 SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC);
    2935                 :                 zendlval->value.str.len = sz;
    2936                 :                 efree(s);
    2937                 :         }
    2938                 : #endif /* ZEND_MULTIBYTE */
    2939                 :         return T_CONSTANT_ENCAPSED_STRING;
    2940                 : }
    2941                 : #line 2942 "Zend/zend_language_scanner.c"
    2942          163341 : yy179:
    2943                 :                 YYDEBUG(179, *YYCURSOR);
    2944          163341 :                 ++YYCURSOR;
    2945          163782 : yy180:
    2946                 :                 YYDEBUG(180, *YYCURSOR);
    2947          163782 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2948                 : #line 1841 "Zend/zend_language_scanner.l"
    2949                 :                 {
    2950                 :         int bprefix = (yytext[0] != '"') ? 1 : 0;
    2951                 : 
    2952                 :         while (YYCURSOR < YYLIMIT) {
    2953                 :                 switch (*YYCURSOR++) {
    2954                 :                         case '"':
    2955                 :                                 yyleng = YYCURSOR - SCNG(yy_text);
    2956                 :                                 zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"' TSRMLS_CC);
    2957                 :                                 return T_CONSTANT_ENCAPSED_STRING;
    2958                 :                         case '$':
    2959                 :                                 if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
    2960                 :                                         break;
    2961                 :                                 }
    2962                 :                                 continue;
    2963                 :                         case '{':
    2964                 :                                 if (*YYCURSOR == '$') {
    2965                 :                                         break;
    2966                 :                                 }
    2967                 :                                 continue;
    2968                 :                         case '\\':
    2969                 :                                 if (YYCURSOR < YYLIMIT) {
    2970                 :                                         YYCURSOR++;
    2971                 :                                 }
    2972                 :                                 /* fall through */
    2973                 :                         default:
    2974                 :                                 continue;
    2975                 :                 }
    2976                 : 
    2977                 :                 YYCURSOR--;
    2978                 :                 break;
    2979                 :         }
    2980                 : 
    2981                 :         /* Remember how much was scanned to save rescanning */
    2982                 :         SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng);
    2983                 : 
    2984                 :         YYCURSOR = SCNG(yy_text) + yyleng;
    2985                 : 
    2986                 :         BEGIN(ST_DOUBLE_QUOTES);
    2987                 :         return '"';
    2988                 : }
    2989                 : #line 2990 "Zend/zend_language_scanner.c"
    2990             104 : yy181:
    2991                 :                 YYDEBUG(181, *YYCURSOR);
    2992             104 :                 ++YYCURSOR;
    2993                 :                 YYDEBUG(182, *YYCURSOR);
    2994             104 :                 yyleng = YYCURSOR - SCNG(yy_text);
    2995                 : #line 1932 "Zend/zend_language_scanner.l"
    2996                 :                 {
    2997                 :         BEGIN(ST_BACKQUOTE);
    2998                 :         return '`';
    2999                 : }
    3000                 : #line 3001 "Zend/zend_language_scanner.c"
    3001            1526 : yy183:
    3002                 :                 YYDEBUG(183, *YYCURSOR);
    3003            1526 :                 ++YYCURSOR;
    3004                 :                 YYDEBUG(184, *YYCURSOR);
    3005            1526 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3006                 : #line 2190 "Zend/zend_language_scanner.l"
    3007                 :                 {
    3008                 :         if (YYCURSOR > YYLIMIT) {
    3009                 :                 return 0;
    3010                 :         }
    3011                 : 
    3012                 :         zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
    3013                 :         goto restart;
    3014                 : }
    3015                 : #line 3016 "Zend/zend_language_scanner.c"
    3016        13236892 : yy185:
    3017                 :                 YYDEBUG(185, *YYCURSOR);
    3018        13236892 :                 ++YYCURSOR;
    3019        13236892 :                 YYFILL(1);
    3020        13236892 :                 yych = *YYCURSOR;
    3021        13567302 : yy186:
    3022                 :                 YYDEBUG(186, *YYCURSOR);
    3023        13567302 :                 if (yybm[0+yych] & 8) {
    3024        13186876 :                         goto yy185;
    3025                 :                 }
    3026          380426 :                 goto yy124;
    3027           26025 : yy187:
    3028                 :                 YYDEBUG(187, *YYCURSOR);
    3029           26025 :                 yyaccept = 3;
    3030           26025 :                 YYMARKER = ++YYCURSOR;
    3031           26025 :                 YYFILL(3);
    3032           26025 :                 yych = *YYCURSOR;
    3033                 :                 YYDEBUG(188, *YYCURSOR);
    3034           26025 :                 if (yybm[0+yych] & 16) {
    3035           20333 :                         goto yy187;
    3036                 :                 }
    3037            5692 :                 if (yych == 'E') goto yy192;
    3038            5157 :                 if (yych == 'e') goto yy192;
    3039            7028 : yy189:
    3040                 :                 YYDEBUG(189, *YYCURSOR);
    3041            7028 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3042                 : #line 1369 "Zend/zend_language_scanner.l"
    3043                 :                 {
    3044                 :         zendlval->value.dval = zend_strtod(yytext, NULL);
    3045                 :         zendlval->type = IS_DOUBLE;
    3046                 :         return T_DNUMBER;
    3047                 : }
    3048                 : #line 3049 "Zend/zend_language_scanner.c"
    3049           62756 : yy190:
    3050                 :                 YYDEBUG(190, *YYCURSOR);
    3051           62756 :                 yyaccept = 2;
    3052           62756 :                 YYMARKER = ++YYCURSOR;
    3053           62756 :                 YYFILL(3);
    3054           62756 :                 yych = *YYCURSOR;
    3055                 :                 YYDEBUG(191, *YYCURSOR);
    3056           62756 :                 if (yych <= '9') {
    3057           57043 :                         if (yych == '.') goto yy187;
    3058           53352 :                         if (yych <= '/') goto yy172;
    3059           37132 :                         goto yy190;
    3060                 :                 } else {
    3061            5713 :                         if (yych <= 'E') {
    3062            5656 :                                 if (yych <= 'D') goto yy172;
    3063                 :                         } else {
    3064              57 :                                 if (yych != 'e') goto yy172;
    3065                 :                         }
    3066                 :                 }
    3067            2162 : yy192:
    3068                 :                 YYDEBUG(192, *YYCURSOR);
    3069            2162 :                 yych = *++YYCURSOR;
    3070            2162 :                 if (yych <= ',') {
    3071             178 :                         if (yych == '+') goto yy194;
    3072                 :                 } else {
    3073            1984 :                         if (yych <= '-') goto yy194;
    3074            1362 :                         if (yych <= '/') goto yy193;
    3075            1362 :                         if (yych <= '9') goto yy195;
    3076                 :                 }
    3077           67278 : yy193:
    3078                 :                 YYDEBUG(193, *YYCURSOR);
    3079           67278 :                 YYCURSOR = YYMARKER;
    3080           67278 :                 if (yyaccept <= 2) {
    3081           67195 :                         if (yyaccept <= 1) {
    3082           67195 :                                 if (yyaccept <= 0) {
    3083               0 :                                         goto yy124;
    3084                 :                                 } else {
    3085           67195 :                                         goto yy138;
    3086                 :                                 }
    3087                 :                         } else {
    3088               0 :                                 goto yy172;
    3089                 :                         }
    3090                 :                 } else {
    3091              83 :                         if (yyaccept <= 4) {
    3092              82 :                                 if (yyaccept <= 3) {
    3093               0 :                                         goto yy189;
    3094                 :                                 } else {
    3095              82 :                                         goto yy234;
    3096                 :                                 }
    3097                 :                         } else {
    3098               1 :                                 goto yy250;
    3099                 :                         }
    3100                 :                 }
    3101             800 : yy194:
    3102                 :                 YYDEBUG(194, *YYCURSOR);
    3103             800 :                 yych = *++YYCURSOR;
    3104             800 :                 if (yych <= '/') goto yy193;
    3105             800 :                 if (yych >= ':') goto yy193;
    3106            3489 : yy195:
    3107                 :                 YYDEBUG(195, *YYCURSOR);
    3108            3489 :                 ++YYCURSOR;
    3109            3489 :                 YYFILL(1);
    3110            3489 :                 yych = *YYCURSOR;
    3111                 :                 YYDEBUG(196, *YYCURSOR);
    3112            3489 :                 if (yych <= '/') goto yy189;
    3113            1370 :                 if (yych <= '9') goto yy195;
    3114              43 :                 goto yy189;
    3115            1405 : yy197:
    3116                 :                 YYDEBUG(197, *YYCURSOR);
    3117            1405 :                 yych = *++YYCURSOR;
    3118            1405 :                 if (yybm[0+yych] & 32) {
    3119            1405 :                         goto yy198;
    3120                 :                 }
    3121               0 :                 goto yy193;
    3122            5668 : yy198:
    3123                 :                 YYDEBUG(198, *YYCURSOR);
    3124            5668 :                 ++YYCURSOR;
    3125            5668 :                 YYFILL(1);
    3126            5668 :                 yych = *YYCURSOR;
    3127                 :                 YYDEBUG(199, *YYCURSOR);
    3128            5668 :                 if (yybm[0+yych] & 32) {
    3129            4263 :                         goto yy198;
    3130                 :                 }
    3131                 :                 YYDEBUG(200, *YYCURSOR);
    3132            1405 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3133                 : #line 1329 "Zend/zend_language_scanner.l"
    3134                 :                 {
    3135                 :         char *hex = yytext + 2; /* Skip "0x" */
    3136                 :         int len = yyleng - 2;
    3137                 : 
    3138                 :         /* Skip any leading 0s */
    3139                 :         while (*hex == '0') {
    3140                 :                 hex++;
    3141                 :                 len--;
    3142                 :         }
    3143                 : 
    3144                 :         if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) {
    3145                 :                 zendlval->value.lval = strtol(hex, NULL, 16);
    3146                 :                 zendlval->type = IS_LONG;
    3147                 :                 return T_LNUMBER;
    3148                 :         } else {
    3149                 :                 zendlval->value.dval = zend_hex_strtod(hex, NULL);
    3150                 :                 zendlval->type = IS_DOUBLE;
    3151                 :                 return T_DNUMBER;
    3152                 :         }
    3153                 : }
    3154                 : #line 3155 "Zend/zend_language_scanner.c"
    3155           24723 : yy201:
    3156                 :                 YYDEBUG(201, *YYCURSOR);
    3157           24723 :                 ++YYCURSOR;
    3158           24723 :                 if ((yych = *YYCURSOR) == '\n') goto yy203;
    3159            5410 :                 if (yych == '\r') goto yy204;
    3160           24723 : yy202:
    3161                 :                 YYDEBUG(202, *YYCURSOR);
    3162           24723 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3163                 : #line 1747 "Zend/zend_language_scanner.l"
    3164                 :                 {
    3165                 :         zendlval->value.str.val = yytext; /* no copying - intentional */
    3166                 :         zendlval->value.str.len = yyleng;
    3167                 :         zendlval->type = IS_STRING;
    3168                 :         BEGIN(INITIAL);
    3169                 :         return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
    3170                 : }
    3171                 : #line 3172 "Zend/zend_language_scanner.c"
    3172           19436 : yy203:
    3173                 :                 YYDEBUG(203, *YYCURSOR);
    3174           19436 :                 yych = *++YYCURSOR;
    3175           19436 :                 goto yy202;
    3176             123 : yy204:
    3177                 :                 YYDEBUG(204, *YYCURSOR);
    3178             123 :                 yych = *++YYCURSOR;
    3179             123 :                 if (yych == '\n') goto yy203;
    3180               0 :                 goto yy202;
    3181         3464137 : yy205:
    3182                 :                 YYDEBUG(205, *YYCURSOR);
    3183         3464137 :                 ++YYCURSOR;
    3184         3464137 :                 YYFILL(1);
    3185         3464137 :                 yych = *YYCURSOR;
    3186                 :                 YYDEBUG(206, *YYCURSOR);
    3187         3464137 :                 if (yych <= '^') {
    3188          944786 :                         if (yych <= '9') {
    3189          694459 :                                 if (yych >= '0') goto yy205;
    3190                 :                         } else {
    3191          250327 :                                 if (yych <= '@') goto yy207;
    3192          221286 :                                 if (yych <= 'Z') goto yy205;
    3193                 :                         }
    3194                 :                 } else {
    3195         2519351 :                         if (yych <= '`') {
    3196          131711 :                                 if (yych <= '_') goto yy205;
    3197                 :                         } else {
    3198         2387640 :                                 if (yych <= 'z') goto yy205;
    3199             317 :                                 if (yych >= 0x7F) goto yy205;
    3200                 :                         }
    3201                 :                 }
    3202          588734 : yy207:
    3203                 :                 YYDEBUG(207, *YYCURSOR);
    3204          588734 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3205                 : #line 1649 "Zend/zend_language_scanner.l"
    3206                 :                 {
    3207                 :         zend_copy_value(zendlval, (yytext+1), (yyleng-1));
    3208                 :         zendlval->type = IS_STRING;
    3209                 :         return T_VARIABLE;
    3210                 : }
    3211                 : #line 3212 "Zend/zend_language_scanner.c"
    3212               1 : yy208:
    3213                 :                 YYDEBUG(208, *YYCURSOR);
    3214               1 :                 yych = *++YYCURSOR;
    3215               1 :                 if (yych == 'R') goto yy209;
    3216               1 :                 if (yych != 'r') goto yy186;
    3217               1 : yy209:
    3218                 :                 YYDEBUG(209, *YYCURSOR);
    3219               1 :                 ++YYCURSOR;
    3220               1 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    3221               0 :                         goto yy185;
    3222                 :                 }
    3223                 :                 YYDEBUG(210, *YYCURSOR);
    3224               1 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3225                 : #line 1253 "Zend/zend_language_scanner.l"
    3226                 :                 {
    3227                 :         return T_LOGICAL_XOR;
    3228                 : }
    3229                 : #line 3230 "Zend/zend_language_scanner.c"
    3230             737 : yy211:
    3231                 :                 YYDEBUG(211, *YYCURSOR);
    3232             737 :                 ++YYCURSOR;
    3233             737 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    3234              47 :                         goto yy185;
    3235                 :                 }
    3236                 :                 YYDEBUG(212, *YYCURSOR);
    3237             690 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3238                 : #line 1245 "Zend/zend_language_scanner.l"
    3239                 :                 {
    3240                 :         return T_LOGICAL_OR;
    3241                 : }
    3242                 : #line 3243 "Zend/zend_language_scanner.c"
    3243               2 : yy213:
    3244                 :                 YYDEBUG(213, *YYCURSOR);
    3245               2 :                 ++YYCURSOR;
    3246                 :                 YYDEBUG(214, *YYCURSOR);
    3247               2 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3248                 : #line 1233 "Zend/zend_language_scanner.l"
    3249                 :                 {
    3250                 :         return T_XOR_EQUAL;
    3251                 : }
    3252                 : #line 3253 "Zend/zend_language_scanner.c"
    3253            1135 : yy215:
    3254                 :                 YYDEBUG(215, *YYCURSOR);
    3255            1135 :                 ++YYCURSOR;
    3256                 :                 YYDEBUG(216, *YYCURSOR);
    3257            1135 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3258                 : #line 1237 "Zend/zend_language_scanner.l"
    3259                 :                 {
    3260                 :         return T_BOOLEAN_OR;
    3261                 : }
    3262                 : #line 3263 "Zend/zend_language_scanner.c"
    3263              96 : yy217:
    3264                 :                 YYDEBUG(217, *YYCURSOR);
    3265              96 :                 ++YYCURSOR;
    3266                 :                 YYDEBUG(218, *YYCURSOR);
    3267              96 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3268                 : #line 1229 "Zend/zend_language_scanner.l"
    3269                 :                 {
    3270                 :         return T_OR_EQUAL;
    3271                 : }
    3272                 : #line 3273 "Zend/zend_language_scanner.c"
    3273            3112 : yy219:
    3274                 :                 YYDEBUG(219, *YYCURSOR);
    3275            3112 :                 ++YYCURSOR;
    3276                 :                 YYDEBUG(220, *YYCURSOR);
    3277            3112 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3278                 : #line 1241 "Zend/zend_language_scanner.l"
    3279                 :                 {
    3280                 :         return T_BOOLEAN_AND;
    3281                 : }
    3282                 : #line 3283 "Zend/zend_language_scanner.c"
    3283               3 : yy221:
    3284                 :                 YYDEBUG(221, *YYCURSOR);
    3285               3 :                 ++YYCURSOR;
    3286                 :                 YYDEBUG(222, *YYCURSOR);
    3287               3 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3288                 : #line 1225 "Zend/zend_language_scanner.l"
    3289                 :                 {
    3290                 :         return T_AND_EQUAL;
    3291                 : }
    3292                 : #line 3293 "Zend/zend_language_scanner.c"
    3293               2 : yy223:
    3294                 :                 YYDEBUG(223, *YYCURSOR);
    3295               2 :                 ++YYCURSOR;
    3296               2 :                 if ((yych = *YYCURSOR) == '\n') goto yy227;
    3297               0 :                 if (yych == '\r') goto yy228;
    3298               2 : yy224:
    3299                 :                 YYDEBUG(224, *YYCURSOR);
    3300               2 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3301                 : #line 1756 "Zend/zend_language_scanner.l"
    3302                 :                 {
    3303                 :         if (CG(asp_tags)) {
    3304                 :                 BEGIN(INITIAL);
    3305                 :                 zendlval->value.str.len = yyleng;
    3306                 :                 zendlval->type = IS_STRING;
    3307                 :                 zendlval->value.str.val = yytext; /* no copying - intentional */
    3308                 :                 return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
    3309                 :         } else {
    3310                 :                 yyless(1);
    3311                 :                 return yytext[0];
    3312                 :         }
    3313                 : }
    3314                 : #line 3315 "Zend/zend_language_scanner.c"
    3315               1 : yy225:
    3316                 :                 YYDEBUG(225, *YYCURSOR);
    3317               1 :                 ++YYCURSOR;
    3318                 :                 YYDEBUG(226, *YYCURSOR);
    3319               1 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3320                 : #line 1213 "Zend/zend_language_scanner.l"
    3321                 :                 {
    3322                 :         return T_MOD_EQUAL;
    3323                 : }
    3324                 : #line 3325 "Zend/zend_language_scanner.c"
    3325               2 : yy227:
    3326                 :                 YYDEBUG(227, *YYCURSOR);
    3327               2 :                 yych = *++YYCURSOR;
    3328               2 :                 goto yy224;
    3329               0 : yy228:
    3330                 :                 YYDEBUG(228, *YYCURSOR);
    3331               0 :                 yych = *++YYCURSOR;
    3332               0 :                 if (yych == '\n') goto yy227;
    3333               0 :                 goto yy224;
    3334            1222 : yy229:
    3335                 :                 YYDEBUG(229, *YYCURSOR);
    3336            1222 :                 yyaccept = 3;
    3337            1222 :                 YYMARKER = ++YYCURSOR;
    3338            1222 :                 YYFILL(3);
    3339            1222 :                 yych = *YYCURSOR;
    3340                 :                 YYDEBUG(230, *YYCURSOR);
    3341            1222 :                 if (yych <= 'D') {
    3342            1060 :                         if (yych <= '/') goto yy189;
    3343             296 :                         if (yych <= '9') goto yy229;
    3344               0 :                         goto yy189;
    3345                 :                 } else {
    3346             162 :                         if (yych <= 'E') goto yy192;
    3347              79 :                         if (yych == 'e') goto yy192;
    3348               0 :                         goto yy189;
    3349                 :                 }
    3350            2416 : yy231:
    3351                 :                 YYDEBUG(231, *YYCURSOR);
    3352            2416 :                 ++YYCURSOR;
    3353                 :                 YYDEBUG(232, *YYCURSOR);
    3354            2416 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3355                 : #line 1209 "Zend/zend_language_scanner.l"
    3356                 :                 {
    3357                 :         return T_CONCAT_EQUAL;
    3358                 : }
    3359                 : #line 3360 "Zend/zend_language_scanner.c"
    3360           22697 : yy233:
    3361                 :                 YYDEBUG(233, *YYCURSOR);
    3362           22697 :                 yyaccept = 4;
    3363           22697 :                 yych = *(YYMARKER = ++YYCURSOR);
    3364           22697 :                 if (yych == '*') goto yy238;
    3365           22697 : yy234:
    3366                 :                 YYDEBUG(234, *YYCURSOR);
    3367           22697 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3368                 : #line 1713 "Zend/zend_language_scanner.l"
    3369                 :                 {
    3370                 :         int doc_com;
    3371                 : 
    3372                 :         if (yyleng > 2) {
    3373                 :                 doc_com = 1;
    3374                 :                 RESET_DOC_COMMENT();
    3375                 :         } else {
    3376                 :                 doc_com = 0;
    3377                 :         }
    3378                 : 
    3379                 :         while (YYCURSOR < YYLIMIT) {
    3380                 :                 if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
    3381                 :                         break;
    3382                 :                 }
    3383                 :         }
    3384                 : 
    3385                 :         if (YYCURSOR < YYLIMIT) {
    3386                 :                 YYCURSOR++;
    3387                 :         } else {
    3388                 :                 zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno));
    3389                 :         }
    3390                 : 
    3391                 :         yyleng = YYCURSOR - SCNG(yy_text);
    3392                 :         HANDLE_NEWLINES(yytext, yyleng);
    3393                 : 
    3394                 :         if (doc_com) {
    3395                 :                 CG(doc_comment) = estrndup(yytext, yyleng);
    3396                 :                 CG(doc_comment_len) = yyleng;
    3397                 :                 return T_DOC_COMMENT;
    3398                 :         }
    3399                 : 
    3400                 :         return T_COMMENT;
    3401                 : }
    3402                 : #line 3403 "Zend/zend_language_scanner.c"
    3403           39170 : yy235:
    3404                 :                 YYDEBUG(235, *YYCURSOR);
    3405           39170 :                 yych = *++YYCURSOR;
    3406           39170 :                 goto yy176;
    3407               4 : yy236:
    3408                 :                 YYDEBUG(236, *YYCURSOR);
    3409               4 :                 ++YYCURSOR;
    3410                 :                 YYDEBUG(237, *YYCURSOR);
    3411               4 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3412                 : #line 1205 "Zend/zend_language_scanner.l"
    3413                 :                 {
    3414                 :         return T_DIV_EQUAL;
    3415                 : }
    3416                 : #line 3417 "Zend/zend_language_scanner.c"
    3417            2130 : yy238:
    3418                 :                 YYDEBUG(238, *YYCURSOR);
    3419            2130 :                 yych = *++YYCURSOR;
    3420            2130 :                 if (yybm[0+yych] & 64) {
    3421            2048 :                         goto yy239;
    3422                 :                 }
    3423              82 :                 goto yy193;
    3424            6123 : yy239:
    3425                 :                 YYDEBUG(239, *YYCURSOR);
    3426            6123 :                 ++YYCURSOR;
    3427            6123 :                 YYFILL(1);
    3428            6123 :                 yych = *YYCURSOR;
    3429                 :                 YYDEBUG(240, *YYCURSOR);
    3430            6123 :                 if (yybm[0+yych] & 64) {
    3431            4075 :                         goto yy239;
    3432                 :                 }
    3433            2048 :                 goto yy234;
    3434              13 : yy241:
    3435                 :                 YYDEBUG(241, *YYCURSOR);
    3436              13 :                 ++YYCURSOR;
    3437                 :                 YYDEBUG(242, *YYCURSOR);
    3438              13 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3439                 : #line 1201 "Zend/zend_language_scanner.l"
    3440                 :                 {
    3441                 :         return T_MUL_EQUAL;
    3442                 : }
    3443                 : #line 3444 "Zend/zend_language_scanner.c"
    3444              40 : yy243:
    3445                 :                 YYDEBUG(243, *YYCURSOR);
    3446              40 :                 ++YYCURSOR;
    3447              40 :                 if ((yych = *YYCURSOR) == '=') goto yy247;
    3448                 :                 YYDEBUG(244, *YYCURSOR);
    3449              35 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3450                 : #line 1261 "Zend/zend_language_scanner.l"
    3451                 :                 {
    3452                 :         return T_SR;
    3453                 : }
    3454                 : #line 3455 "Zend/zend_language_scanner.c"
    3455             258 : yy245:
    3456                 :                 YYDEBUG(245, *YYCURSOR);
    3457             258 :                 ++YYCURSOR;
    3458                 :                 YYDEBUG(246, *YYCURSOR);
    3459             258 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3460                 : #line 1189 "Zend/zend_language_scanner.l"
    3461                 :                 {
    3462                 :         return T_IS_GREATER_OR_EQUAL;
    3463                 : }
    3464                 : #line 3465 "Zend/zend_language_scanner.c"
    3465               5 : yy247:
    3466                 :                 YYDEBUG(247, *YYCURSOR);
    3467               5 :                 ++YYCURSOR;
    3468                 :                 YYDEBUG(248, *YYCURSOR);
    3469               5 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3470                 : #line 1221 "Zend/zend_language_scanner.l"
    3471                 :                 {
    3472                 :         return T_SR_EQUAL;
    3473                 : }
    3474                 : #line 3475 "Zend/zend_language_scanner.c"
    3475            1480 : yy249:
    3476                 :                 YYDEBUG(249, *YYCURSOR);
    3477            1480 :                 yyaccept = 5;
    3478            1480 :                 yych = *(YYMARKER = ++YYCURSOR);
    3479            1480 :                 if (yych <= ';') goto yy250;
    3480            1371 :                 if (yych <= '<') goto yy265;
    3481               4 :                 if (yych <= '=') goto yy263;
    3482             110 : yy250:
    3483                 :                 YYDEBUG(250, *YYCURSOR);
    3484             110 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3485                 : #line 1257 "Zend/zend_language_scanner.l"
    3486                 :                 {
    3487                 :         return T_SL;
    3488                 : }
    3489                 : #line 3490 "Zend/zend_language_scanner.c"
    3490               3 : yy251:
    3491                 :                 YYDEBUG(251, *YYCURSOR);
    3492               3 :                 yych = *++YYCURSOR;
    3493               3 :                 if (yych == 'S') goto yy256;
    3494               3 :                 if (yych == 's') goto yy256;
    3495               0 :                 goto yy193;
    3496            1611 : yy252:
    3497                 :                 YYDEBUG(252, *YYCURSOR);
    3498            1611 :                 ++YYCURSOR;
    3499                 :                 YYDEBUG(253, *YYCURSOR);
    3500            1611 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3501                 : #line 1185 "Zend/zend_language_scanner.l"
    3502                 :                 {
    3503                 :         return T_IS_SMALLER_OR_EQUAL;
    3504                 : }
    3505                 : #line 3506 "Zend/zend_language_scanner.c"
    3506               3 : yy254:
    3507                 :                 YYDEBUG(254, *YYCURSOR);
    3508               3 :                 ++YYCURSOR;
    3509            2438 : yy255:
    3510                 :                 YYDEBUG(255, *YYCURSOR);
    3511            2438 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3512                 : #line 1181 "Zend/zend_language_scanner.l"
    3513                 :                 {
    3514                 :         return T_IS_NOT_EQUAL;
    3515                 : }
    3516                 : #line 3517 "Zend/zend_language_scanner.c"
    3517               3 : yy256:
    3518                 :                 YYDEBUG(256, *YYCURSOR);
    3519               3 :                 yych = *++YYCURSOR;
    3520               3 :                 if (yych == 'C') goto yy257;
    3521               3 :                 if (yych != 'c') goto yy193;
    3522               3 : yy257:
    3523                 :                 YYDEBUG(257, *YYCURSOR);
    3524               3 :                 yych = *++YYCURSOR;
    3525               3 :                 if (yych == 'R') goto yy258;
    3526               3 :                 if (yych != 'r') goto yy193;
    3527               3 : yy258:
    3528                 :                 YYDEBUG(258, *YYCURSOR);
    3529               3 :                 yych = *++YYCURSOR;
    3530               3 :                 if (yych == 'I') goto yy259;
    3531               3 :                 if (yych != 'i') goto yy193;
    3532               3 : yy259:
    3533                 :                 YYDEBUG(259, *YYCURSOR);
    3534               3 :                 yych = *++YYCURSOR;
    3535               3 :                 if (yych == 'P') goto yy260;
    3536               3 :                 if (yych != 'p') goto yy193;
    3537               3 : yy260:
    3538                 :                 YYDEBUG(260, *YYCURSOR);
    3539               3 :                 yych = *++YYCURSOR;
    3540               3 :                 if (yych == 'T') goto yy261;
    3541               3 :                 if (yych != 't') goto yy193;
    3542               3 : yy261:
    3543                 :                 YYDEBUG(261, *YYCURSOR);
    3544               3 :                 ++YYCURSOR;
    3545               3 :                 YYFILL(3);
    3546               3 :                 yych = *YYCURSOR;
    3547                 :                 YYDEBUG(262, *YYCURSOR);
    3548               3 :                 if (yych <= '\r') {
    3549               0 :                         if (yych <= 0x08) goto yy193;
    3550               0 :                         if (yych <= '\n') goto yy261;
    3551               0 :                         if (yych <= '\f') goto yy193;
    3552               0 :                         goto yy261;
    3553                 :                 } else {
    3554               3 :                         if (yych <= ' ') {
    3555               0 :                                 if (yych <= 0x1F) goto yy193;
    3556               0 :                                 goto yy261;
    3557                 :                         } else {
    3558               3 :                                 if (yych == '>') goto yy201;
    3559               0 :                                 goto yy193;
    3560                 :                         }
    3561                 :                 }
    3562               4 : yy263:
    3563                 :                 YYDEBUG(263, *YYCURSOR);
    3564               4 :                 ++YYCURSOR;
    3565                 :                 YYDEBUG(264, *YYCURSOR);
    3566               4 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3567                 : #line 1217 "Zend/zend_language_scanner.l"
    3568                 :                 {
    3569                 :         return T_SL_EQUAL;
    3570                 : }
    3571                 : #line 3572 "Zend/zend_language_scanner.c"
    3572            1427 : yy265:
    3573                 :                 YYDEBUG(265, *YYCURSOR);
    3574            1427 :                 ++YYCURSOR;
    3575            1427 :                 YYFILL(2);
    3576            1427 :                 yych = *YYCURSOR;
    3577                 :                 YYDEBUG(266, *YYCURSOR);
    3578            1427 :                 if (yybm[0+yych] & 128) {
    3579              22 :                         goto yy265;
    3580                 :                 }
    3581            1405 :                 if (yych <= 'Z') {
    3582            1398 :                         if (yych <= '&') {
    3583               8 :                                 if (yych == '"') goto yy270;
    3584               0 :                                 goto yy193;
    3585                 :                         } else {
    3586            1390 :                                 if (yych <= '\'') goto yy269;
    3587            1349 :                                 if (yych <= '@') goto yy193;
    3588                 :                         }
    3589                 :                 } else {
    3590               7 :                         if (yych <= '`') {
    3591               2 :                                 if (yych != '_') goto yy193;
    3592                 :                         } else {
    3593               5 :                                 if (yych <= 'z') goto yy267;
    3594               0 :                                 if (yych <= '~') goto yy193;
    3595                 :                         }
    3596                 :                 }
    3597            4528 : yy267:
    3598                 :                 YYDEBUG(267, *YYCURSOR);
    3599            4528 :                 ++YYCURSOR;
    3600            4528 :                 YYFILL(2);
    3601            4528 :                 yych = *YYCURSOR;
    3602                 :                 YYDEBUG(268, *YYCURSOR);
    3603            4528 :                 if (yych <= '@') {
    3604            1396 :                         if (yych <= '\f') {
    3605            1356 :                                 if (yych == '\n') goto yy274;
    3606               0 :                                 goto yy193;
    3607                 :                         } else {
    3608              40 :                                 if (yych <= '\r') goto yy276;
    3609              40 :                                 if (yych <= '/') goto yy193;
    3610              40 :                                 if (yych <= '9') goto yy267;
    3611               0 :                                 goto yy193;
    3612                 :                         }
    3613                 :                 } else {
    3614            3132 :                         if (yych <= '_') {
    3615            3048 :                                 if (yych <= 'Z') goto yy267;
    3616              16 :                                 if (yych <= '^') goto yy193;
    3617              16 :                                 goto yy267;
    3618                 :                         } else {
    3619              84 :                                 if (yych <= '`') goto yy193;
    3620              84 :                                 if (yych <= 'z') goto yy267;
    3621               0 :                                 if (yych <= '~') goto yy193;
    3622               0 :                                 goto yy267;
    3623                 :                         }
    3624                 :                 }
    3625              41 : yy269:
    3626                 :                 YYDEBUG(269, *YYCURSOR);
    3627              41 :                 yych = *++YYCURSOR;
    3628              41 :                 if (yych == '\'') goto yy193;
    3629              41 :                 if (yych <= '/') goto yy278;
    3630              41 :                 if (yych <= '9') goto yy193;
    3631              41 :                 goto yy278;
    3632               8 : yy270:
    3633                 :                 YYDEBUG(270, *YYCURSOR);
    3634               8 :                 yych = *++YYCURSOR;
    3635               8 :                 if (yych == '"') goto yy193;
    3636               8 :                 if (yych <= '/') goto yy272;
    3637               8 :                 if (yych <= '9') goto yy193;
    3638               8 :                 goto yy272;
    3639              41 : yy271:
    3640                 :                 YYDEBUG(271, *YYCURSOR);
    3641              41 :                 ++YYCURSOR;
    3642              41 :                 YYFILL(3);
    3643              41 :                 yych = *YYCURSOR;
    3644              49 : yy272:
    3645                 :                 YYDEBUG(272, *YYCURSOR);
    3646              49 :                 if (yych <= 'Z') {
    3647              49 :                         if (yych <= '/') {
    3648               8 :                                 if (yych != '"') goto yy193;
    3649                 :                         } else {
    3650              41 :                                 if (yych <= '9') goto yy271;
    3651              41 :                                 if (yych <= '@') goto yy193;
    3652              41 :                                 goto yy271;
    3653                 :                         }
    3654                 :                 } else {
    3655               0 :                         if (yych <= '`') {
    3656               0 :                                 if (yych == '_') goto yy271;
    3657               0 :                                 goto yy193;
    3658                 :                         } else {
    3659               0 :                                 if (yych <= 'z') goto yy271;
    3660               0 :                                 if (yych <= '~') goto yy193;
    3661               0 :                                 goto yy271;
    3662                 :                         }
    3663                 :                 }
    3664              48 : yy273:
    3665                 :                 YYDEBUG(273, *YYCURSOR);
    3666              48 :                 yych = *++YYCURSOR;
    3667              48 :                 if (yych == '\n') goto yy274;
    3668               0 :                 if (yych == '\r') goto yy276;
    3669               0 :                 goto yy193;
    3670            1404 : yy274:
    3671                 :                 YYDEBUG(274, *YYCURSOR);
    3672            1404 :                 ++YYCURSOR;
    3673            1404 : yy275:
    3674                 :                 YYDEBUG(275, *YYCURSOR);
    3675            1404 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3676                 : #line 1883 "Zend/zend_language_scanner.l"
    3677                 :                 {
    3678                 :         char *s;
    3679                 :         int bprefix = (yytext[0] != '<') ? 1 : 0;
    3680                 : 
    3681                 :         /* save old heredoc label */
    3682                 :         Z_STRVAL_P(zendlval) = CG(heredoc);
    3683                 :         Z_STRLEN_P(zendlval) = CG(heredoc_len);
    3684                 : 
    3685                 :         CG(zend_lineno)++;
    3686                 :         CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
    3687                 :         s = yytext+bprefix+3;
    3688                 :         while ((*s == ' ') || (*s == '\t')) {
    3689                 :                 s++;
    3690                 :                 CG(heredoc_len)--;
    3691                 :         }
    3692                 : 
    3693                 :         if (*s == '\'') {
    3694                 :                 s++;
    3695                 :                 CG(heredoc_len) -= 2;
    3696                 : 
    3697                 :                 BEGIN(ST_NOWDOC);
    3698                 :         } else {
    3699                 :                 if (*s == '"') {
    3700                 :                         s++;
    3701                 :                         CG(heredoc_len) -= 2;
    3702                 :                 }
    3703                 : 
    3704                 :                 BEGIN(ST_HEREDOC);
    3705                 :         }
    3706                 : 
    3707                 :         CG(heredoc) = estrndup(s, CG(heredoc_len));
    3708                 : 
    3709                 :         /* Check for ending label on the next line */
    3710                 :         if (CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, CG(heredoc_len))) {
    3711                 :                 YYCTYPE *end = YYCURSOR + CG(heredoc_len);
    3712                 : 
    3713                 :                 if (*end == ';') {
    3714                 :                         end++;
    3715                 :                 }
    3716                 : 
    3717                 :                 if (*end == '\n' || *end == '\r') {
    3718                 :                         BEGIN(ST_END_HEREDOC);
    3719                 :                 }
    3720                 :         }
    3721                 : 
    3722                 :         return T_START_HEREDOC;
    3723                 : }
    3724                 : #line 3725 "Zend/zend_language_scanner.c"
    3725               0 : yy276:
    3726                 :                 YYDEBUG(276, *YYCURSOR);
    3727               0 :                 yych = *++YYCURSOR;
    3728               0 :                 if (yych == '\n') goto yy274;
    3729               0 :                 goto yy275;
    3730             309 : yy277:
    3731                 :                 YYDEBUG(277, *YYCURSOR);
    3732             309 :                 ++YYCURSOR;
    3733             309 :                 YYFILL(3);
    3734             309 :                 yych = *YYCURSOR;
    3735             350 : yy278:
    3736                 :                 YYDEBUG(278, *YYCURSOR);
    3737             350 :                 if (yych <= 'Z') {
    3738             344 :                         if (yych <= '/') {
    3739              41 :                                 if (yych == '\'') goto yy273;
    3740               0 :                                 goto yy193;
    3741                 :                         } else {
    3742             303 :                                 if (yych <= '9') goto yy277;
    3743             303 :                                 if (yych <= '@') goto yy193;
    3744             303 :                                 goto yy277;
    3745                 :                         }
    3746                 :                 } else {
    3747               6 :                         if (yych <= '`') {
    3748               0 :                                 if (yych == '_') goto yy277;
    3749               0 :                                 goto yy193;
    3750                 :                         } else {
    3751               6 :                                 if (yych <= 'z') goto yy277;
    3752               0 :                                 if (yych <= '~') goto yy193;
    3753               0 :                                 goto yy277;
    3754                 :                         }
    3755                 :                 }
    3756            9132 : yy279:
    3757                 :                 YYDEBUG(279, *YYCURSOR);
    3758            9132 :                 yych = *++YYCURSOR;
    3759            9132 :                 if (yych != '=') goto yy255;
    3760                 :                 YYDEBUG(280, *YYCURSOR);
    3761            6697 :                 ++YYCURSOR;
    3762                 :                 YYDEBUG(281, *YYCURSOR);
    3763            6697 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3764                 : #line 1173 "Zend/zend_language_scanner.l"
    3765                 :                 {
    3766                 :         return T_IS_NOT_IDENTICAL;
    3767                 : }
    3768                 : #line 3769 "Zend/zend_language_scanner.c"
    3769             620 : yy282:
    3770                 :                 YYDEBUG(282, *YYCURSOR);
    3771             620 :                 ++YYCURSOR;
    3772                 :                 YYDEBUG(283, *YYCURSOR);
    3773             620 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3774                 : #line 1193 "Zend/zend_language_scanner.l"
    3775                 :                 {
    3776                 :         return T_PLUS_EQUAL;
    3777                 : }
    3778                 : #line 3779 "Zend/zend_language_scanner.c"
    3779            5690 : yy284:
    3780                 :                 YYDEBUG(284, *YYCURSOR);
    3781            5690 :                 ++YYCURSOR;
    3782                 :                 YYDEBUG(285, *YYCURSOR);
    3783            5690 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3784                 : #line 1161 "Zend/zend_language_scanner.l"
    3785                 :                 {
    3786                 :         return T_INC;
    3787                 : }
    3788                 : #line 3789 "Zend/zend_language_scanner.c"
    3789             391 : yy286:
    3790                 :                 YYDEBUG(286, *YYCURSOR);
    3791             391 :                 yych = *++YYCURSOR;
    3792             391 :                 if (yych == 'S') goto yy287;
    3793             391 :                 if (yych != 's') goto yy186;
    3794             126 : yy287:
    3795                 :                 YYDEBUG(287, *YYCURSOR);
    3796             126 :                 yych = *++YYCURSOR;
    3797             126 :                 if (yych == 'T') goto yy288;
    3798             126 :                 if (yych != 't') goto yy186;
    3799             126 : yy288:
    3800                 :                 YYDEBUG(288, *YYCURSOR);
    3801             126 :                 ++YYCURSOR;
    3802             126 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    3803              12 :                         goto yy185;
    3804                 :                 }
    3805                 :                 YYDEBUG(289, *YYCURSOR);
    3806             114 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3807                 : #line 1153 "Zend/zend_language_scanner.l"
    3808                 :                 {
    3809                 :         return T_LIST;
    3810                 : }
    3811                 : #line 3812 "Zend/zend_language_scanner.c"
    3812           14675 : yy290:
    3813                 :                 YYDEBUG(290, *YYCURSOR);
    3814           14675 :                 ++YYCURSOR;
    3815           14675 :                 if ((yych = *YYCURSOR) == '=') goto yy294;
    3816                 :                 YYDEBUG(291, *YYCURSOR);
    3817            9473 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3818                 : #line 1177 "Zend/zend_language_scanner.l"
    3819                 :                 {
    3820                 :         return T_IS_EQUAL;
    3821                 : }
    3822                 : #line 3823 "Zend/zend_language_scanner.c"
    3823           28388 : yy292:
    3824                 :                 YYDEBUG(292, *YYCURSOR);
    3825           28388 :                 ++YYCURSOR;
    3826                 :                 YYDEBUG(293, *YYCURSOR);
    3827           28388 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3828                 : #line 1149 "Zend/zend_language_scanner.l"
    3829                 :                 {
    3830                 :         return T_DOUBLE_ARROW;
    3831                 : }
    3832                 : #line 3833 "Zend/zend_language_scanner.c"
    3833            5202 : yy294:
    3834                 :                 YYDEBUG(294, *YYCURSOR);
    3835            5202 :                 ++YYCURSOR;
    3836                 :                 YYDEBUG(295, *YYCURSOR);
    3837            5202 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3838                 : #line 1169 "Zend/zend_language_scanner.l"
    3839                 :                 {
    3840                 :         return T_IS_IDENTICAL;
    3841                 : }
    3842                 : #line 3843 "Zend/zend_language_scanner.c"
    3843           12583 : yy296:
    3844                 :                 YYDEBUG(296, *YYCURSOR);
    3845           12583 :                 yych = *++YYCURSOR;
    3846                 :                 YYDEBUG(-1, yych);
    3847           12583 :                 switch (yych) {
    3848                 :                 case 'C':
    3849            2539 :                 case 'c':       goto yy298;
    3850                 :                 case 'D':
    3851             298 :                 case 'd':       goto yy302;
    3852                 :                 case 'F':
    3853            7651 :                 case 'f':       goto yy299;
    3854                 :                 case 'H':
    3855             273 :                 case 'h':       goto yy297;
    3856                 :                 case 'L':
    3857              73 :                 case 'l':       goto yy301;
    3858                 :                 case 'M':
    3859             769 :                 case 'm':       goto yy300;
    3860                 :                 case 'N':
    3861              33 :                 case 'n':       goto yy303;
    3862             947 :                 default:        goto yy186;
    3863                 :                 }
    3864             273 : yy297:
    3865                 :                 YYDEBUG(297, *YYCURSOR);
    3866             273 :                 yych = *++YYCURSOR;
    3867             273 :                 if (yych == 'A') goto yy357;
    3868              23 :                 if (yych == 'a') goto yy357;
    3869               0 :                 goto yy186;
    3870            2539 : yy298:
    3871                 :                 YYDEBUG(298, *YYCURSOR);
    3872            2539 :                 yych = *++YYCURSOR;
    3873            2539 :                 if (yych == 'L') goto yy350;
    3874            2466 :                 if (yych == 'l') goto yy350;
    3875            2444 :                 goto yy186;
    3876            7651 : yy299:
    3877                 :                 YYDEBUG(299, *YYCURSOR);
    3878            7651 :                 yych = *++YYCURSOR;
    3879            7651 :                 if (yych <= 'U') {
    3880            7649 :                         if (yych == 'I') goto yy334;
    3881              97 :                         if (yych <= 'T') goto yy186;
    3882              97 :                         goto yy335;
    3883                 :                 } else {
    3884               2 :                         if (yych <= 'i') {
    3885               1 :                                 if (yych <= 'h') goto yy186;
    3886               1 :                                 goto yy334;
    3887                 :                         } else {
    3888               1 :                                 if (yych == 'u') goto yy335;
    3889               0 :                                 goto yy186;
    3890                 :                         }
    3891                 :                 }
    3892             769 : yy300:
    3893                 :                 YYDEBUG(300, *YYCURSOR);
    3894             769 :                 yych = *++YYCURSOR;
    3895             769 :                 if (yych == 'E') goto yy326;
    3896               1 :                 if (yych == 'e') goto yy326;
    3897               0 :                 goto yy186;
    3898              73 : yy301:
    3899                 :                 YYDEBUG(301, *YYCURSOR);
    3900              73 :                 yych = *++YYCURSOR;
    3901              73 :                 if (yych == 'I') goto yy320;
    3902              58 :                 if (yych == 'i') goto yy320;
    3903              57 :                 goto yy186;
    3904             298 : yy302:
    3905                 :                 YYDEBUG(302, *YYCURSOR);
    3906             298 :                 yych = *++YYCURSOR;
    3907             298 :                 if (yych == 'I') goto yy315;
    3908             177 :                 if (yych == 'i') goto yy315;
    3909             176 :                 goto yy186;
    3910              33 : yy303:
    3911                 :                 YYDEBUG(303, *YYCURSOR);
    3912              33 :                 yych = *++YYCURSOR;
    3913              33 :                 if (yych == 'A') goto yy304;
    3914               1 :                 if (yych != 'a') goto yy186;
    3915              33 : yy304:
    3916                 :                 YYDEBUG(304, *YYCURSOR);
    3917              33 :                 yych = *++YYCURSOR;
    3918              33 :                 if (yych == 'M') goto yy305;
    3919               1 :                 if (yych != 'm') goto yy186;
    3920              33 : yy305:
    3921                 :                 YYDEBUG(305, *YYCURSOR);
    3922              33 :                 yych = *++YYCURSOR;
    3923              33 :                 if (yych == 'E') goto yy306;
    3924               1 :                 if (yych != 'e') goto yy186;
    3925              33 : yy306:
    3926                 :                 YYDEBUG(306, *YYCURSOR);
    3927              33 :                 yych = *++YYCURSOR;
    3928              33 :                 if (yych == 'S') goto yy307;
    3929               1 :                 if (yych != 's') goto yy186;
    3930              33 : yy307:
    3931                 :                 YYDEBUG(307, *YYCURSOR);
    3932              33 :                 yych = *++YYCURSOR;
    3933              33 :                 if (yych == 'P') goto yy308;
    3934               1 :                 if (yych != 'p') goto yy186;
    3935              33 : yy308:
    3936                 :                 YYDEBUG(308, *YYCURSOR);
    3937              33 :                 yych = *++YYCURSOR;
    3938              33 :                 if (yych == 'A') goto yy309;
    3939               1 :                 if (yych != 'a') goto yy186;
    3940              33 : yy309:
    3941                 :                 YYDEBUG(309, *YYCURSOR);
    3942              33 :                 yych = *++YYCURSOR;
    3943              33 :                 if (yych == 'C') goto yy310;
    3944               1 :                 if (yych != 'c') goto yy186;
    3945              33 : yy310:
    3946                 :                 YYDEBUG(310, *YYCURSOR);
    3947              33 :                 yych = *++YYCURSOR;
    3948              33 :                 if (yych == 'E') goto yy311;
    3949               1 :                 if (yych != 'e') goto yy186;
    3950              33 : yy311:
    3951                 :                 YYDEBUG(311, *YYCURSOR);
    3952              33 :                 yych = *++YYCURSOR;
    3953              33 :                 if (yych != '_') goto yy186;
    3954                 :                 YYDEBUG(312, *YYCURSOR);
    3955              33 :                 yych = *++YYCURSOR;
    3956              33 :                 if (yych != '_') goto yy186;
    3957                 :                 YYDEBUG(313, *YYCURSOR);
    3958              33 :                 ++YYCURSOR;
    3959              33 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    3960               0 :                         goto yy185;
    3961                 :                 }
    3962                 :                 YYDEBUG(314, *YYCURSOR);
    3963              33 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3964                 : #line 1473 "Zend/zend_language_scanner.l"
    3965                 :                 {
    3966                 :         if (CG(current_namespace)) {
    3967                 :                 *zendlval = *CG(current_namespace);
    3968                 :                 zval_copy_ctor(zendlval);
    3969                 :         } else {
    3970                 :                 ZVAL_EMPTY_STRING(zendlval);
    3971                 :         }
    3972                 :         return T_NS_C;
    3973                 : }
    3974                 : #line 3975 "Zend/zend_language_scanner.c"
    3975             122 : yy315:
    3976                 :                 YYDEBUG(315, *YYCURSOR);
    3977             122 :                 yych = *++YYCURSOR;
    3978             122 :                 if (yych == 'R') goto yy316;
    3979               1 :                 if (yych != 'r') goto yy186;
    3980             122 : yy316:
    3981                 :                 YYDEBUG(316, *YYCURSOR);
    3982             122 :                 yych = *++YYCURSOR;
    3983             122 :                 if (yych != '_') goto yy186;
    3984                 :                 YYDEBUG(317, *YYCURSOR);
    3985             122 :                 yych = *++YYCURSOR;
    3986             122 :                 if (yych != '_') goto yy186;
    3987                 :                 YYDEBUG(318, *YYCURSOR);
    3988             122 :                 ++YYCURSOR;
    3989             122 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    3990               0 :                         goto yy185;
    3991                 :                 }
    3992                 :                 YYDEBUG(319, *YYCURSOR);
    3993             122 :                 yyleng = YYCURSOR - SCNG(yy_text);
    3994                 : #line 1446 "Zend/zend_language_scanner.l"
    3995                 :                 {
    3996                 :         char *filename = zend_get_compiled_filename(TSRMLS_C);
    3997                 :         const size_t filename_len = strlen(filename);
    3998                 :         char *dirname;
    3999                 : 
    4000                 :         if (!filename) {
    4001                 :                 filename = "";
    4002                 :         }
    4003                 : 
    4004                 :         dirname = estrndup(filename, filename_len);
    4005                 :         zend_dirname(dirname, filename_len);
    4006                 : 
    4007                 :         if (strcmp(dirname, ".") == 0) {
    4008                 :                 dirname = erealloc(dirname, MAXPATHLEN);
    4009                 : #if HAVE_GETCWD
    4010                 :                 VCWD_GETCWD(dirname, MAXPATHLEN);
    4011                 : #elif HAVE_GETWD
    4012                 :                 VCWD_GETWD(dirname);
    4013                 : #endif
    4014                 :         }
    4015                 : 
    4016                 :         zendlval->value.str.len = strlen(dirname);
    4017                 :         zendlval->value.str.val = dirname;
    4018                 :         zendlval->type = IS_STRING;
    4019                 :         return T_DIR;
    4020                 : }
    4021                 : #line 4022 "Zend/zend_language_scanner.c"
    4022              16 : yy320:
    4023                 :                 YYDEBUG(320, *YYCURSOR);
    4024              16 :                 yych = *++YYCURSOR;
    4025              16 :                 if (yych == 'N') goto yy321;
    4026               1 :                 if (yych != 'n') goto yy186;
    4027              16 : yy321:
    4028                 :                 YYDEBUG(321, *YYCURSOR);
    4029              16 :                 yych = *++YYCURSOR;
    4030              16 :                 if (yych == 'E') goto yy322;
    4031               1 :                 if (yych != 'e') goto yy186;
    4032              16 : yy322:
    4033                 :                 YYDEBUG(322, *YYCURSOR);
    4034              16 :                 yych = *++YYCURSOR;
    4035              16 :                 if (yych != '_') goto yy186;
    4036                 :                 YYDEBUG(323, *YYCURSOR);
    4037              16 :                 yych = *++YYCURSOR;
    4038              16 :                 if (yych != '_') goto yy186;
    4039                 :                 YYDEBUG(324, *YYCURSOR);
    4040              16 :                 ++YYCURSOR;
    4041              16 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4042               0 :                         goto yy185;
    4043                 :                 }
    4044                 :                 YYDEBUG(325, *YYCURSOR);
    4045              16 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4046                 : #line 1428 "Zend/zend_language_scanner.l"
    4047                 :                 {
    4048                 :         zendlval->value.lval = CG(zend_lineno);
    4049                 :         zendlval->type = IS_LONG;
    4050                 :         return T_LINE;
    4051                 : }
    4052                 : #line 4053 "Zend/zend_language_scanner.c"
    4053             769 : yy326:
    4054                 :                 YYDEBUG(326, *YYCURSOR);
    4055             769 :                 yych = *++YYCURSOR;
    4056             769 :                 if (yych == 'T') goto yy327;
    4057               1 :                 if (yych != 't') goto yy186;
    4058             769 : yy327:
    4059                 :                 YYDEBUG(327, *YYCURSOR);
    4060             769 :                 yych = *++YYCURSOR;
    4061             769 :                 if (yych == 'H') goto yy328;
    4062               1 :                 if (yych != 'h') goto yy186;
    4063             769 : yy328:
    4064                 :                 YYDEBUG(328, *YYCURSOR);
    4065             769 :                 yych = *++YYCURSOR;
    4066             769 :                 if (yych == 'O') goto yy329;
    4067               1 :                 if (yych != 'o') goto yy186;
    4068             769 : yy329:
    4069                 :                 YYDEBUG(329, *YYCURSOR);
    4070             769 :                 yych = *++YYCURSOR;
    4071             769 :                 if (yych == 'D') goto yy330;
    4072               1 :                 if (yych != 'd') goto yy186;
    4073             769 : yy330:
    4074                 :                 YYDEBUG(330, *YYCURSOR);
    4075             769 :                 yych = *++YYCURSOR;
    4076             769 :                 if (yych != '_') goto yy186;
    4077                 :                 YYDEBUG(331, *YYCURSOR);
    4078             769 :                 yych = *++YYCURSOR;
    4079             769 :                 if (yych != '_') goto yy186;
    4080                 :                 YYDEBUG(332, *YYCURSOR);
    4081             769 :                 ++YYCURSOR;
    4082             769 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4083               0 :                         goto yy185;
    4084                 :                 }
    4085                 :                 YYDEBUG(333, *YYCURSOR);
    4086             769 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4087                 : #line 1407 "Zend/zend_language_scanner.l"
    4088                 :                 {
    4089                 :         char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
    4090                 :         char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
    4091                 :         size_t len = 0;
    4092                 : 
    4093                 :         if (class_name) {
    4094                 :                 len += strlen(class_name) + 2;
    4095                 :         }
    4096                 :         if (func_name) {
    4097                 :                 len += strlen(func_name);
    4098                 :         }
    4099                 : 
    4100                 :         zendlval->value.str.len = zend_spprintf(&zendlval->value.str.val, 0, "%s%s%s", 
    4101                 :                 class_name ? class_name : "",
    4102                 :                 class_name && func_name ? "::" : "",
    4103                 :                 func_name ? func_name : ""
    4104                 :                 );
    4105                 :         zendlval->type = IS_STRING;
    4106                 :         return T_METHOD_C;
    4107                 : }
    4108                 : #line 4109 "Zend/zend_language_scanner.c"
    4109            7553 : yy334:
    4110                 :                 YYDEBUG(334, *YYCURSOR);
    4111            7553 :                 yych = *++YYCURSOR;
    4112            7553 :                 if (yych == 'L') goto yy345;
    4113               1 :                 if (yych == 'l') goto yy345;
    4114               0 :                 goto yy186;
    4115              98 : yy335:
    4116                 :                 YYDEBUG(335, *YYCURSOR);
    4117              98 :                 yych = *++YYCURSOR;
    4118              98 :                 if (yych == 'N') goto yy336;
    4119               1 :                 if (yych != 'n') goto yy186;
    4120              98 : yy336:
    4121                 :                 YYDEBUG(336, *YYCURSOR);
    4122              98 :                 yych = *++YYCURSOR;
    4123              98 :                 if (yych == 'C') goto yy337;
    4124               1 :                 if (yych != 'c') goto yy186;
    4125              98 : yy337:
    4126                 :                 YYDEBUG(337, *YYCURSOR);
    4127              98 :                 yych = *++YYCURSOR;
    4128              98 :                 if (yych == 'T') goto yy338;
    4129               1 :                 if (yych != 't') goto yy186;
    4130              98 : yy338:
    4131                 :                 YYDEBUG(338, *YYCURSOR);
    4132              98 :                 yych = *++YYCURSOR;
    4133              98 :                 if (yych == 'I') goto yy339;
    4134               1 :                 if (yych != 'i') goto yy186;
    4135              98 : yy339:
    4136                 :                 YYDEBUG(339, *YYCURSOR);
    4137              98 :                 yych = *++YYCURSOR;
    4138              98 :                 if (yych == 'O') goto yy340;
    4139               1 :                 if (yych != 'o') goto yy186;
    4140              98 : yy340:
    4141                 :                 YYDEBUG(340, *YYCURSOR);
    4142              98 :                 yych = *++YYCURSOR;
    4143              98 :                 if (yych == 'N') goto yy341;
    4144               1 :                 if (yych != 'n') goto yy186;
    4145              98 : yy341:
    4146                 :                 YYDEBUG(341, *YYCURSOR);
    4147              98 :                 yych = *++YYCURSOR;
    4148              98 :                 if (yych != '_') goto yy186;
    4149                 :                 YYDEBUG(342, *YYCURSOR);
    4150              98 :                 yych = *++YYCURSOR;
    4151              98 :                 if (yych != '_') goto yy186;
    4152                 :                 YYDEBUG(343, *YYCURSOR);
    4153              98 :                 ++YYCURSOR;
    4154              98 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4155               0 :                         goto yy185;
    4156                 :                 }
    4157                 :                 YYDEBUG(344, *YYCURSOR);
    4158              98 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4159                 : #line 1391 "Zend/zend_language_scanner.l"
    4160                 :                 {
    4161                 :         char *func_name = NULL;
    4162                 : 
    4163                 :         if (CG(active_op_array)) {
    4164                 :                 func_name = CG(active_op_array)->function_name;
    4165                 :         }
    4166                 : 
    4167                 :         if (!func_name) {
    4168                 :                 func_name = "";
    4169                 :         }
    4170                 :         zendlval->value.str.len = strlen(func_name);
    4171                 :         zendlval->value.str.val = estrndup(func_name, zendlval->value.str.len);
    4172                 :         zendlval->type = IS_STRING;
    4173                 :         return T_FUNC_C;
    4174                 : }
    4175                 : #line 4176 "Zend/zend_language_scanner.c"
    4176            7553 : yy345:
    4177                 :                 YYDEBUG(345, *YYCURSOR);
    4178            7553 :                 yych = *++YYCURSOR;
    4179            7553 :                 if (yych == 'E') goto yy346;
    4180               1 :                 if (yych != 'e') goto yy186;
    4181            7553 : yy346:
    4182                 :                 YYDEBUG(346, *YYCURSOR);
    4183            7553 :                 yych = *++YYCURSOR;
    4184            7553 :                 if (yych != '_') goto yy186;
    4185                 :                 YYDEBUG(347, *YYCURSOR);
    4186            7553 :                 yych = *++YYCURSOR;
    4187            7553 :                 if (yych != '_') goto yy186;
    4188                 :                 YYDEBUG(348, *YYCURSOR);
    4189            7553 :                 ++YYCURSOR;
    4190            7553 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4191               0 :                         goto yy185;
    4192                 :                 }
    4193                 :                 YYDEBUG(349, *YYCURSOR);
    4194            7553 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4195                 : #line 1434 "Zend/zend_language_scanner.l"
    4196                 :                 {
    4197                 :         char *filename = zend_get_compiled_filename(TSRMLS_C);
    4198                 : 
    4199                 :         if (!filename) {
    4200                 :                 filename = "";
    4201                 :         }
    4202                 :         zendlval->value.str.len = strlen(filename);
    4203                 :         zendlval->value.str.val = estrndup(filename, zendlval->value.str.len);
    4204                 :         zendlval->type = IS_STRING;
    4205                 :         return T_FILE;
    4206                 : }
    4207                 : #line 4208 "Zend/zend_language_scanner.c"
    4208              95 : yy350:
    4209                 :                 YYDEBUG(350, *YYCURSOR);
    4210              95 :                 yych = *++YYCURSOR;
    4211              95 :                 if (yych == 'A') goto yy351;
    4212              22 :                 if (yych != 'a') goto yy186;
    4213              74 : yy351:
    4214                 :                 YYDEBUG(351, *YYCURSOR);
    4215              74 :                 yych = *++YYCURSOR;
    4216              74 :                 if (yych == 'S') goto yy352;
    4217               1 :                 if (yych != 's') goto yy186;
    4218              74 : yy352:
    4219                 :                 YYDEBUG(352, *YYCURSOR);
    4220              74 :                 yych = *++YYCURSOR;
    4221              74 :                 if (yych == 'S') goto yy353;
    4222               1 :                 if (yych != 's') goto yy186;
    4223              74 : yy353:
    4224                 :                 YYDEBUG(353, *YYCURSOR);
    4225              74 :                 yych = *++YYCURSOR;
    4226              74 :                 if (yych != '_') goto yy186;
    4227                 :                 YYDEBUG(354, *YYCURSOR);
    4228              74 :                 yych = *++YYCURSOR;
    4229              74 :                 if (yych != '_') goto yy186;
    4230                 :                 YYDEBUG(355, *YYCURSOR);
    4231              74 :                 ++YYCURSOR;
    4232              74 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4233               0 :                         goto yy185;
    4234                 :                 }
    4235                 :                 YYDEBUG(356, *YYCURSOR);
    4236              74 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4237                 : #line 1375 "Zend/zend_language_scanner.l"
    4238                 :                 {
    4239                 :         char *class_name = NULL;
    4240                 : 
    4241                 :         if (CG(active_class_entry)) {
    4242                 :                 class_name = CG(active_class_entry)->name;
    4243                 :         }
    4244                 : 
    4245                 :         if (!class_name) {
    4246                 :                 class_name = "";
    4247                 :         }
    4248                 :         zendlval->value.str.len = strlen(class_name);
    4249                 :         zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len);
    4250                 :         zendlval->type = IS_STRING;
    4251                 :         return T_CLASS_C;
    4252                 : }
    4253                 : #line 4254 "Zend/zend_language_scanner.c"
    4254             273 : yy357:
    4255                 :                 YYDEBUG(357, *YYCURSOR);
    4256             273 :                 yych = *++YYCURSOR;
    4257             273 :                 if (yych == 'L') goto yy358;
    4258              23 :                 if (yych != 'l') goto yy186;
    4259             273 : yy358:
    4260                 :                 YYDEBUG(358, *YYCURSOR);
    4261             273 :                 yych = *++YYCURSOR;
    4262             273 :                 if (yych == 'T') goto yy359;
    4263              23 :                 if (yych != 't') goto yy186;
    4264             273 : yy359:
    4265                 :                 YYDEBUG(359, *YYCURSOR);
    4266             273 :                 yych = *++YYCURSOR;
    4267             273 :                 if (yych != '_') goto yy186;
    4268                 :                 YYDEBUG(360, *YYCURSOR);
    4269             273 :                 yych = *++YYCURSOR;
    4270             273 :                 if (yych == 'C') goto yy361;
    4271              23 :                 if (yych != 'c') goto yy186;
    4272             273 : yy361:
    4273                 :                 YYDEBUG(361, *YYCURSOR);
    4274             273 :                 yych = *++YYCURSOR;
    4275             273 :                 if (yych == 'O') goto yy362;
    4276              23 :                 if (yych != 'o') goto yy186;
    4277             273 : yy362:
    4278                 :                 YYDEBUG(362, *YYCURSOR);
    4279             273 :                 yych = *++YYCURSOR;
    4280             273 :                 if (yych == 'M') goto yy363;
    4281              23 :                 if (yych != 'm') goto yy186;
    4282             273 : yy363:
    4283                 :                 YYDEBUG(363, *YYCURSOR);
    4284             273 :                 yych = *++YYCURSOR;
    4285             273 :                 if (yych == 'P') goto yy364;
    4286              23 :                 if (yych != 'p') goto yy186;
    4287             273 : yy364:
    4288                 :                 YYDEBUG(364, *YYCURSOR);
    4289             273 :                 yych = *++YYCURSOR;
    4290             273 :                 if (yych == 'I') goto yy365;
    4291              23 :                 if (yych != 'i') goto yy186;
    4292             273 : yy365:
    4293                 :                 YYDEBUG(365, *YYCURSOR);
    4294             273 :                 yych = *++YYCURSOR;
    4295             273 :                 if (yych == 'L') goto yy366;
    4296              23 :                 if (yych != 'l') goto yy186;
    4297             273 : yy366:
    4298                 :                 YYDEBUG(366, *YYCURSOR);
    4299             273 :                 yych = *++YYCURSOR;
    4300             273 :                 if (yych == 'E') goto yy367;
    4301              23 :                 if (yych != 'e') goto yy186;
    4302             273 : yy367:
    4303                 :                 YYDEBUG(367, *YYCURSOR);
    4304             273 :                 yych = *++YYCURSOR;
    4305             273 :                 if (yych == 'R') goto yy368;
    4306              23 :                 if (yych != 'r') goto yy186;
    4307             273 : yy368:
    4308                 :                 YYDEBUG(368, *YYCURSOR);
    4309             273 :                 ++YYCURSOR;
    4310             273 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4311               0 :                         goto yy185;
    4312                 :                 }
    4313                 :                 YYDEBUG(369, *YYCURSOR);
    4314             273 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4315                 : #line 1117 "Zend/zend_language_scanner.l"
    4316                 :                 {
    4317                 :         return T_HALT_COMPILER;
    4318                 : }
    4319                 : #line 4320 "Zend/zend_language_scanner.c"
    4320            7756 : yy370:
    4321                 :                 YYDEBUG(370, *YYCURSOR);
    4322            7756 :                 yych = *++YYCURSOR;
    4323            7756 :                 if (yych == 'S') goto yy374;
    4324            7756 :                 if (yych == 's') goto yy374;
    4325            5038 :                 goto yy186;
    4326             245 : yy371:
    4327                 :                 YYDEBUG(371, *YYCURSOR);
    4328             245 :                 yych = *++YYCURSOR;
    4329             245 :                 if (yych == 'E') goto yy372;
    4330             232 :                 if (yych != 'e') goto yy186;
    4331             193 : yy372:
    4332                 :                 YYDEBUG(372, *YYCURSOR);
    4333             193 :                 ++YYCURSOR;
    4334             193 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4335             125 :                         goto yy185;
    4336                 :                 }
    4337                 :                 YYDEBUG(373, *YYCURSOR);
    4338              68 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4339                 : #line 1101 "Zend/zend_language_scanner.l"
    4340                 :                 {
    4341                 :         return T_USE;
    4342                 : }
    4343                 : #line 4344 "Zend/zend_language_scanner.c"
    4344            2718 : yy374:
    4345                 :                 YYDEBUG(374, *YYCURSOR);
    4346            2718 :                 yych = *++YYCURSOR;
    4347            2718 :                 if (yych == 'E') goto yy375;
    4348            2718 :                 if (yych != 'e') goto yy186;
    4349            2718 : yy375:
    4350                 :                 YYDEBUG(375, *YYCURSOR);
    4351            2718 :                 yych = *++YYCURSOR;
    4352            2718 :                 if (yych == 'T') goto yy376;
    4353            2718 :                 if (yych != 't') goto yy186;
    4354            1434 : yy376:
    4355                 :                 YYDEBUG(376, *YYCURSOR);
    4356            1434 :                 ++YYCURSOR;
    4357            1434 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4358              15 :                         goto yy185;
    4359                 :                 }
    4360                 :                 YYDEBUG(377, *YYCURSOR);
    4361            1419 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4362                 : #line 1145 "Zend/zend_language_scanner.l"
    4363                 :                 {
    4364                 :         return T_UNSET;
    4365                 : }
    4366                 : #line 4367 "Zend/zend_language_scanner.c"
    4367           35462 : yy378:
    4368                 :                 YYDEBUG(378, *YYCURSOR);
    4369           35462 :                 ++YYCURSOR;
    4370           35462 :                 YYFILL(7);
    4371           35462 :                 yych = *YYCURSOR;
    4372          108901 : yy379:
    4373                 :                 YYDEBUG(379, *YYCURSOR);
    4374          108901 :                 if (yych <= 'S') {
    4375           64341 :                         if (yych <= 'D') {
    4376           63708 :                                 if (yych <= ' ') {
    4377           35567 :                                         if (yych == '\t') goto yy378;
    4378           35561 :                                         if (yych <= 0x1F) goto yy193;
    4379           35456 :                                         goto yy378;
    4380                 :                                 } else {
    4381           28141 :                                         if (yych <= 'A') {
    4382           27974 :                                                 if (yych <= '@') goto yy193;
    4383             633 :                                                 goto yy383;
    4384                 :                                         } else {
    4385             167 :                                                 if (yych <= 'B') goto yy381;
    4386             134 :                                                 if (yych <= 'C') goto yy193;
    4387             133 :                                                 goto yy386;
    4388                 :                                         }
    4389                 :                                 }
    4390                 :                         } else {
    4391             633 :                                 if (yych <= 'I') {
    4392             324 :                                         if (yych == 'F') goto yy387;
    4393             120 :                                         if (yych <= 'H') goto yy193;
    4394             114 :                                         goto yy388;
    4395                 :                                 } else {
    4396             309 :                                         if (yych <= 'O') {
    4397              98 :                                                 if (yych <= 'N') goto yy193;
    4398              22 :                                                 goto yy382;
    4399                 :                                         } else {
    4400             211 :                                                 if (yych <= 'Q') goto yy193;
    4401             210 :                                                 if (yych <= 'R') goto yy385;
    4402             129 :                                                 goto yy384;
    4403                 :                                         }
    4404                 :                                 }
    4405                 :                         }
    4406                 :                 } else {
    4407           44560 :                         if (yych <= 'f') {
    4408           20509 :                                 if (yych <= 'a') {
    4409            3244 :                                         if (yych == 'U') goto yy380;
    4410            3226 :                                         if (yych <= '`') goto yy193;
    4411            3193 :                                         goto yy383;
    4412                 :                                 } else {
    4413           17265 :                                         if (yych <= 'c') {
    4414            2463 :                                                 if (yych <= 'b') goto yy381;
    4415             458 :                                                 goto yy193;
    4416                 :                                         } else {
    4417           14802 :                                                 if (yych <= 'd') goto yy386;
    4418            8576 :                                                 if (yych <= 'e') goto yy193;
    4419            8404 :                                                 goto yy387;
    4420                 :                                         }
    4421                 :                                 }
    4422                 :                         } else {
    4423           24051 :                                 if (yych <= 'q') {
    4424           13800 :                                         if (yych <= 'i') {
    4425           12172 :                                                 if (yych <= 'h') goto yy193;
    4426           11776 :                                                 goto yy388;
    4427                 :                                         } else {
    4428            1628 :                                                 if (yych == 'o') goto yy382;
    4429             683 :                                                 goto yy193;
    4430                 :                                         }
    4431                 :                                 } else {
    4432           10251 :                                         if (yych <= 's') {
    4433            8002 :                                                 if (yych <= 'r') goto yy385;
    4434            6078 :                                                 goto yy384;
    4435                 :                                         } else {
    4436            2249 :                                                 if (yych != 'u') goto yy193;
    4437                 :                                         }
    4438                 :                                 }
    4439                 :                         }
    4440                 :                 }
    4441            1904 : yy380:
    4442                 :                 YYDEBUG(380, *YYCURSOR);
    4443            1904 :                 yych = *++YYCURSOR;
    4444            1904 :                 if (yych == 'N') goto yy451;
    4445            1904 :                 if (yych == 'n') goto yy451;
    4446             149 :                 goto yy193;
    4447            2038 : yy381:
    4448                 :                 YYDEBUG(381, *YYCURSOR);
    4449            2038 :                 yych = *++YYCURSOR;
    4450            2038 :                 if (yych <= 'O') {
    4451             174 :                         if (yych == 'I') goto yy434;
    4452             174 :                         if (yych <= 'N') goto yy193;
    4453               0 :                         goto yy435;
    4454                 :                 } else {
    4455            1864 :                         if (yych <= 'i') {
    4456            1542 :                                 if (yych <= 'h') goto yy193;
    4457            1327 :                                 goto yy434;
    4458                 :                         } else {
    4459             322 :                                 if (yych == 'o') goto yy435;
    4460              79 :                                 goto yy193;
    4461                 :                         }
    4462                 :                 }
    4463             967 : yy382:
    4464                 :                 YYDEBUG(382, *YYCURSOR);
    4465             967 :                 yych = *++YYCURSOR;
    4466             967 :                 if (yych == 'B') goto yy426;
    4467             967 :                 if (yych == 'b') goto yy426;
    4468             710 :                 goto yy193;
    4469            3826 : yy383:
    4470                 :                 YYDEBUG(383, *YYCURSOR);
    4471            3826 :                 yych = *++YYCURSOR;
    4472            3826 :                 if (yych == 'R') goto yy419;
    4473            3826 :                 if (yych == 'r') goto yy419;
    4474             294 :                 goto yy193;
    4475            6207 : yy384:
    4476                 :                 YYDEBUG(384, *YYCURSOR);
    4477            6207 :                 yych = *++YYCURSOR;
    4478            6207 :                 if (yych == 'T') goto yy411;
    4479            6197 :                 if (yych == 't') goto yy411;
    4480            3234 :                 goto yy193;
    4481            2005 : yy385:
    4482                 :                 YYDEBUG(385, *YYCURSOR);
    4483            2005 :                 yych = *++YYCURSOR;
    4484            2005 :                 if (yych == 'E') goto yy409;
    4485            2005 :                 if (yych == 'e') goto yy409;
    4486            1700 :                 goto yy193;
    4487            6359 : yy386:
    4488                 :                 YYDEBUG(386, *YYCURSOR);
    4489            6359 :                 yych = *++YYCURSOR;
    4490            6359 :                 if (yych == 'O') goto yy405;
    4491            6345 :                 if (yych == 'o') goto yy405;
    4492            6326 :                 goto yy193;
    4493            8608 : yy387:
    4494                 :                 YYDEBUG(387, *YYCURSOR);
    4495            8608 :                 yych = *++YYCURSOR;
    4496            8608 :                 if (yych == 'L') goto yy398;
    4497            8608 :                 if (yych == 'l') goto yy398;
    4498            8539 :                 goto yy193;
    4499           11890 : yy388:
    4500                 :                 YYDEBUG(388, *YYCURSOR);
    4501           11890 :                 yych = *++YYCURSOR;
    4502           11890 :                 if (yych == 'N') goto yy389;
    4503           11816 :                 if (yych != 'n') goto yy193;
    4504            6878 : yy389:
    4505                 :                 YYDEBUG(389, *YYCURSOR);
    4506            6878 :                 yych = *++YYCURSOR;
    4507            6878 :                 if (yych == 'T') goto yy390;
    4508            6878 :                 if (yych != 't') goto yy193;
    4509            4565 : yy390:
    4510                 :                 YYDEBUG(390, *YYCURSOR);
    4511            4565 :                 yych = *++YYCURSOR;
    4512            4565 :                 if (yych == 'E') goto yy391;
    4513            4565 :                 if (yych != 'e') goto yy393;
    4514              29 : yy391:
    4515                 :                 YYDEBUG(391, *YYCURSOR);
    4516              29 :                 yych = *++YYCURSOR;
    4517              29 :                 if (yych == 'G') goto yy396;
    4518              29 :                 if (yych == 'g') goto yy396;
    4519              28 :                 goto yy193;
    4520               1 : yy392:
    4521                 :                 YYDEBUG(392, *YYCURSOR);
    4522               1 :                 ++YYCURSOR;
    4523               1 :                 YYFILL(1);
    4524               1 :                 yych = *YYCURSOR;
    4525            4537 : yy393:
    4526                 :                 YYDEBUG(393, *YYCURSOR);
    4527            4537 :                 if (yych <= 0x1F) {
    4528               0 :                         if (yych == '\t') goto yy392;
    4529               0 :                         goto yy193;
    4530                 :                 } else {
    4531            4537 :                         if (yych <= ' ') goto yy392;
    4532            4537 :                         if (yych != ')') goto yy193;
    4533                 :                 }
    4534                 :                 YYDEBUG(394, *YYCURSOR);
    4535            4516 :                 ++YYCURSOR;
    4536                 :                 YYDEBUG(395, *YYCURSOR);
    4537            4516 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4538                 : #line 1045 "Zend/zend_language_scanner.l"
    4539                 :                 {
    4540                 :         return T_INT_CAST;
    4541                 : }
    4542                 : #line 4543 "Zend/zend_language_scanner.c"
    4543               1 : yy396:
    4544                 :                 YYDEBUG(396, *YYCURSOR);
    4545               1 :                 yych = *++YYCURSOR;
    4546               1 :                 if (yych == 'E') goto yy397;
    4547               1 :                 if (yych != 'e') goto yy193;
    4548               1 : yy397:
    4549                 :                 YYDEBUG(397, *YYCURSOR);
    4550               1 :                 yych = *++YYCURSOR;
    4551               1 :                 if (yych == 'R') goto yy392;
    4552               1 :                 if (yych == 'r') goto yy392;
    4553               0 :                 goto yy193;
    4554              69 : yy398:
    4555                 :                 YYDEBUG(398, *YYCURSOR);
    4556              69 :                 yych = *++YYCURSOR;
    4557              69 :                 if (yych == 'O') goto yy399;
    4558              69 :                 if (yych != 'o') goto yy193;
    4559              66 : yy399:
    4560                 :                 YYDEBUG(399, *YYCURSOR);
    4561              66 :                 yych = *++YYCURSOR;
    4562              66 :                 if (yych == 'A') goto yy400;
    4563              66 :                 if (yych != 'a') goto yy193;
    4564              23 : yy400:
    4565                 :                 YYDEBUG(400, *YYCURSOR);
    4566              23 :                 yych = *++YYCURSOR;
    4567              23 :                 if (yych == 'T') goto yy401;
    4568              23 :                 if (yych != 't') goto yy193;
    4569              81 : yy401:
    4570                 :                 YYDEBUG(401, *YYCURSOR);
    4571              81 :                 ++YYCURSOR;
    4572              81 :                 YYFILL(1);
    4573              81 :                 yych = *YYCURSOR;
    4574                 :                 YYDEBUG(402, *YYCURSOR);
    4575              81 :                 if (yych <= 0x1F) {
    4576               0 :                         if (yych == '\t') goto yy401;
    4577               0 :                         goto yy193;
    4578                 :                 } else {
    4579              81 :                         if (yych <= ' ') goto yy401;
    4580              81 :                         if (yych != ')') goto yy193;
    4581                 :                 }
    4582                 :                 YYDEBUG(403, *YYCURSOR);
    4583              22 :                 ++YYCURSOR;
    4584                 :                 YYDEBUG(404, *YYCURSOR);
    4585              22 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4586                 : #line 1049 "Zend/zend_language_scanner.l"
    4587                 :                 {
    4588                 :         return T_DOUBLE_CAST;
    4589                 : }
    4590                 : #line 4591 "Zend/zend_language_scanner.c"
    4591              33 : yy405:
    4592                 :                 YYDEBUG(405, *YYCURSOR);
    4593              33 :                 yych = *++YYCURSOR;
    4594              33 :                 if (yych == 'U') goto yy406;
    4595              33 :                 if (yych != 'u') goto yy193;
    4596              14 : yy406:
    4597                 :                 YYDEBUG(406, *YYCURSOR);
    4598              14 :                 yych = *++YYCURSOR;
    4599              14 :                 if (yych == 'B') goto yy407;
    4600              14 :                 if (yych != 'b') goto yy193;
    4601              14 : yy407:
    4602                 :                 YYDEBUG(407, *YYCURSOR);
    4603              14 :                 yych = *++YYCURSOR;
    4604              14 :                 if (yych == 'L') goto yy408;
    4605              14 :                 if (yych != 'l') goto yy193;
    4606              14 : yy408:
    4607                 :                 YYDEBUG(408, *YYCURSOR);
    4608              14 :                 yych = *++YYCURSOR;
    4609              14 :                 if (yych == 'E') goto yy401;
    4610              14 :                 if (yych == 'e') goto yy401;
    4611               0 :                 goto yy193;
    4612             305 : yy409:
    4613                 :                 YYDEBUG(409, *YYCURSOR);
    4614             305 :                 yych = *++YYCURSOR;
    4615             305 :                 if (yych == 'A') goto yy410;
    4616             305 :                 if (yych != 'a') goto yy193;
    4617             146 : yy410:
    4618                 :                 YYDEBUG(410, *YYCURSOR);
    4619             146 :                 yych = *++YYCURSOR;
    4620             146 :                 if (yych == 'L') goto yy401;
    4621             146 :                 if (yych == 'l') goto yy401;
    4622             102 :                 goto yy193;
    4623            2973 : yy411:
    4624                 :                 YYDEBUG(411, *YYCURSOR);
    4625            2973 :                 yych = *++YYCURSOR;
    4626            2973 :                 if (yych == 'R') goto yy412;
    4627            2968 :                 if (yych != 'r') goto yy193;
    4628            2937 : yy412:
    4629                 :                 YYDEBUG(412, *YYCURSOR);
    4630            2937 :                 yych = *++YYCURSOR;
    4631            2937 :                 if (yych == 'I') goto yy413;
    4632            2937 :                 if (yych != 'i') goto yy193;
    4633             576 : yy413:
    4634                 :                 YYDEBUG(413, *YYCURSOR);
    4635             576 :                 yych = *++YYCURSOR;
    4636             576 :                 if (yych == 'N') goto yy414;
    4637             576 :                 if (yych != 'n') goto yy193;
    4638             380 : yy414:
    4639                 :                 YYDEBUG(414, *YYCURSOR);
    4640             380 :                 yych = *++YYCURSOR;
    4641             380 :                 if (yych == 'G') goto yy415;
    4642             380 :                 if (yych != 'g') goto yy193;
    4643             380 : yy415:
    4644                 :                 YYDEBUG(415, *YYCURSOR);
    4645             380 :                 ++YYCURSOR;
    4646             380 :                 YYFILL(1);
    4647             380 :                 yych = *YYCURSOR;
    4648                 :                 YYDEBUG(416, *YYCURSOR);
    4649             380 :                 if (yych <= 0x1F) {
    4650               0 :                         if (yych == '\t') goto yy415;
    4651               0 :                         goto yy193;
    4652                 :                 } else {
    4653             380 :                         if (yych <= ' ') goto yy415;
    4654             380 :                         if (yych != ')') goto yy193;
    4655                 :                 }
    4656                 :                 YYDEBUG(417, *YYCURSOR);
    4657             380 :                 ++YYCURSOR;
    4658                 :                 YYDEBUG(418, *YYCURSOR);
    4659             380 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4660                 : #line 1053 "Zend/zend_language_scanner.l"
    4661                 :                 {
    4662                 :         return T_STRING_CAST;
    4663                 : }
    4664                 : #line 4665 "Zend/zend_language_scanner.c"
    4665            3532 : yy419:
    4666                 :                 YYDEBUG(419, *YYCURSOR);
    4667            3532 :                 yych = *++YYCURSOR;
    4668            3532 :                 if (yych == 'R') goto yy420;
    4669            3532 :                 if (yych != 'r') goto yy193;
    4670            3488 : yy420:
    4671                 :                 YYDEBUG(420, *YYCURSOR);
    4672            3488 :                 yych = *++YYCURSOR;
    4673            3488 :                 if (yych == 'A') goto yy421;
    4674            3488 :                 if (yych != 'a') goto yy193;
    4675            3488 : yy421:
    4676                 :                 YYDEBUG(421, *YYCURSOR);
    4677            3488 :                 yych = *++YYCURSOR;
    4678            3488 :                 if (yych == 'Y') goto yy422;
    4679            3488 :                 if (yych != 'y') goto yy193;
    4680            3664 : yy422:
    4681                 :                 YYDEBUG(422, *YYCURSOR);
    4682            3664 :                 ++YYCURSOR;
    4683            3664 :                 YYFILL(1);
    4684            3664 :                 yych = *YYCURSOR;
    4685                 :                 YYDEBUG(423, *YYCURSOR);
    4686            3664 :                 if (yych <= 0x1F) {
    4687               0 :                         if (yych == '\t') goto yy422;
    4688               0 :                         goto yy193;
    4689                 :                 } else {
    4690            3664 :                         if (yych <= ' ') goto yy422;
    4691            3488 :                         if (yych != ')') goto yy193;
    4692                 :                 }
    4693                 :                 YYDEBUG(424, *YYCURSOR);
    4694              10 :                 ++YYCURSOR;
    4695                 :                 YYDEBUG(425, *YYCURSOR);
    4696              10 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4697                 : #line 1061 "Zend/zend_language_scanner.l"
    4698                 :                 {
    4699                 :         return T_ARRAY_CAST;
    4700                 : }
    4701                 : #line 4702 "Zend/zend_language_scanner.c"
    4702             257 : yy426:
    4703                 :                 YYDEBUG(426, *YYCURSOR);
    4704             257 :                 yych = *++YYCURSOR;
    4705             257 :                 if (yych == 'J') goto yy427;
    4706             257 :                 if (yych != 'j') goto yy193;
    4707             147 : yy427:
    4708                 :                 YYDEBUG(427, *YYCURSOR);
    4709             147 :                 yych = *++YYCURSOR;
    4710             147 :                 if (yych == 'E') goto yy428;
    4711             147 :                 if (yych != 'e') goto yy193;
    4712             147 : yy428:
    4713                 :                 YYDEBUG(428, *YYCURSOR);
    4714             147 :                 yych = *++YYCURSOR;
    4715             147 :                 if (yych == 'C') goto yy429;
    4716             147 :                 if (yych != 'c') goto yy193;
    4717             147 : yy429:
    4718                 :                 YYDEBUG(429, *YYCURSOR);
    4719             147 :                 yych = *++YYCURSOR;
    4720             147 :                 if (yych == 'T') goto yy430;
    4721             147 :                 if (yych != 't') goto yy193;
    4722             147 : yy430:
    4723                 :                 YYDEBUG(430, *YYCURSOR);
    4724             147 :                 ++YYCURSOR;
    4725             147 :                 YYFILL(1);
    4726             147 :                 yych = *YYCURSOR;
    4727                 :                 YYDEBUG(431, *YYCURSOR);
    4728             147 :                 if (yych <= 0x1F) {
    4729               0 :                         if (yych == '\t') goto yy430;
    4730               0 :                         goto yy193;
    4731                 :                 } else {
    4732             147 :                         if (yych <= ' ') goto yy430;
    4733             147 :                         if (yych != ')') goto yy193;
    4734                 :                 }
    4735                 :                 YYDEBUG(432, *YYCURSOR);
    4736             144 :                 ++YYCURSOR;
    4737                 :                 YYDEBUG(433, *YYCURSOR);
    4738             144 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4739                 : #line 1065 "Zend/zend_language_scanner.l"
    4740                 :                 {
    4741                 :         return T_OBJECT_CAST;
    4742                 : }
    4743                 : #line 4744 "Zend/zend_language_scanner.c"
    4744            1327 : yy434:
    4745                 :                 YYDEBUG(434, *YYCURSOR);
    4746            1327 :                 yych = *++YYCURSOR;
    4747            1327 :                 if (yych == 'N') goto yy444;
    4748            1327 :                 if (yych == 'n') goto yy444;
    4749               0 :                 goto yy193;
    4750             243 : yy435:
    4751                 :                 YYDEBUG(435, *YYCURSOR);
    4752             243 :                 yych = *++YYCURSOR;
    4753             243 :                 if (yych == 'O') goto yy436;
    4754             243 :                 if (yych != 'o') goto yy193;
    4755             243 : yy436:
    4756                 :                 YYDEBUG(436, *YYCURSOR);
    4757             243 :                 yych = *++YYCURSOR;
    4758             243 :                 if (yych == 'L') goto yy437;
    4759             243 :                 if (yych != 'l') goto yy193;
    4760             242 : yy437:
    4761                 :                 YYDEBUG(437, *YYCURSOR);
    4762             242 :                 yych = *++YYCURSOR;
    4763             242 :                 if (yych == 'E') goto yy442;
    4764             242 :                 if (yych == 'e') goto yy442;
    4765             240 :                 goto yy439;
    4766               2 : yy438:
    4767                 :                 YYDEBUG(438, *YYCURSOR);
    4768               2 :                 ++YYCURSOR;
    4769               2 :                 YYFILL(1);
    4770               2 :                 yych = *YYCURSOR;
    4771             242 : yy439:
    4772                 :                 YYDEBUG(439, *YYCURSOR);
    4773             242 :                 if (yych <= 0x1F) {
    4774               0 :                         if (yych == '\t') goto yy438;
    4775               0 :                         goto yy193;
    4776                 :                 } else {
    4777             242 :                         if (yych <= ' ') goto yy438;
    4778             242 :                         if (yych != ')') goto yy193;
    4779                 :                 }
    4780                 :                 YYDEBUG(440, *YYCURSOR);
    4781             242 :                 ++YYCURSOR;
    4782                 :                 YYDEBUG(441, *YYCURSOR);
    4783             242 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4784                 : #line 1069 "Zend/zend_language_scanner.l"
    4785                 :                 {
    4786                 :         return T_BOOL_CAST;
    4787                 : }
    4788                 : #line 4789 "Zend/zend_language_scanner.c"
    4789               2 : yy442:
    4790                 :                 YYDEBUG(442, *YYCURSOR);
    4791               2 :                 yych = *++YYCURSOR;
    4792               2 :                 if (yych == 'A') goto yy443;
    4793               2 :                 if (yych != 'a') goto yy193;
    4794               2 : yy443:
    4795                 :                 YYDEBUG(443, *YYCURSOR);
    4796               2 :                 yych = *++YYCURSOR;
    4797               2 :                 if (yych == 'N') goto yy438;
    4798               2 :                 if (yych == 'n') goto yy438;
    4799               0 :                 goto yy193;
    4800            1327 : yy444:
    4801                 :                 YYDEBUG(444, *YYCURSOR);
    4802            1327 :                 yych = *++YYCURSOR;
    4803            1327 :                 if (yych == 'A') goto yy445;
    4804            1327 :                 if (yych != 'a') goto yy193;
    4805             929 : yy445:
    4806                 :                 YYDEBUG(445, *YYCURSOR);
    4807             929 :                 yych = *++YYCURSOR;
    4808             929 :                 if (yych == 'R') goto yy446;
    4809             929 :                 if (yych != 'r') goto yy193;
    4810             929 : yy446:
    4811                 :                 YYDEBUG(446, *YYCURSOR);
    4812             929 :                 yych = *++YYCURSOR;
    4813             929 :                 if (yych == 'Y') goto yy447;
    4814             929 :                 if (yych != 'y') goto yy193;
    4815             929 : yy447:
    4816                 :                 YYDEBUG(447, *YYCURSOR);
    4817             929 :                 ++YYCURSOR;
    4818             929 :                 YYFILL(1);
    4819             929 :                 yych = *YYCURSOR;
    4820                 :                 YYDEBUG(448, *YYCURSOR);
    4821             929 :                 if (yych <= 0x1F) {
    4822               0 :                         if (yych == '\t') goto yy447;
    4823               0 :                         goto yy193;
    4824                 :                 } else {
    4825             929 :                         if (yych <= ' ') goto yy447;
    4826             929 :                         if (yych != ')') goto yy193;
    4827                 :                 }
    4828                 :                 YYDEBUG(449, *YYCURSOR);
    4829             929 :                 ++YYCURSOR;
    4830                 :                 YYDEBUG(450, *YYCURSOR);
    4831             929 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4832                 : #line 1057 "Zend/zend_language_scanner.l"
    4833                 :                 {
    4834                 :         return T_STRING_CAST;
    4835                 : }
    4836                 : #line 4837 "Zend/zend_language_scanner.c"
    4837            1755 : yy451:
    4838                 :                 YYDEBUG(451, *YYCURSOR);
    4839            1755 :                 yych = *++YYCURSOR;
    4840            1755 :                 if (yych == 'S') goto yy452;
    4841            1755 :                 if (yych != 's') goto yy193;
    4842              60 : yy452:
    4843                 :                 YYDEBUG(452, *YYCURSOR);
    4844              60 :                 yych = *++YYCURSOR;
    4845              60 :                 if (yych == 'E') goto yy453;
    4846              60 :                 if (yych != 'e') goto yy193;
    4847              60 : yy453:
    4848                 :                 YYDEBUG(453, *YYCURSOR);
    4849              60 :                 yych = *++YYCURSOR;
    4850              60 :                 if (yych == 'T') goto yy454;
    4851              60 :                 if (yych != 't') goto yy193;
    4852               1 : yy454:
    4853                 :                 YYDEBUG(454, *YYCURSOR);
    4854               1 :                 ++YYCURSOR;
    4855               1 :                 YYFILL(1);
    4856               1 :                 yych = *YYCURSOR;
    4857                 :                 YYDEBUG(455, *YYCURSOR);
    4858               1 :                 if (yych <= 0x1F) {
    4859               0 :                         if (yych == '\t') goto yy454;
    4860               0 :                         goto yy193;
    4861                 :                 } else {
    4862               1 :                         if (yych <= ' ') goto yy454;
    4863               1 :                         if (yych != ')') goto yy193;
    4864                 :                 }
    4865                 :                 YYDEBUG(456, *YYCURSOR);
    4866               1 :                 ++YYCURSOR;
    4867                 :                 YYDEBUG(457, *YYCURSOR);
    4868               1 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4869                 : #line 1073 "Zend/zend_language_scanner.l"
    4870                 :                 {
    4871                 :         return T_UNSET_CAST;
    4872                 : }
    4873                 : #line 4874 "Zend/zend_language_scanner.c"
    4874           28588 : yy458:
    4875                 :                 YYDEBUG(458, *YYCURSOR);
    4876           28588 :                 yych = *++YYCURSOR;
    4877           28588 :                 if (yych == 'R') goto yy459;
    4878           28586 :                 if (yych != 'r') goto yy186;
    4879           28359 : yy459:
    4880                 :                 YYDEBUG(459, *YYCURSOR);
    4881           28359 :                 ++YYCURSOR;
    4882           28359 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4883           28236 :                         goto yy185;
    4884                 :                 }
    4885                 :                 YYDEBUG(460, *YYCURSOR);
    4886             123 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4887                 : #line 1041 "Zend/zend_language_scanner.l"
    4888                 :                 {
    4889                 :         return T_VAR;
    4890                 : }
    4891                 : #line 4892 "Zend/zend_language_scanner.c"
    4892             249 : yy461:
    4893                 :                 YYDEBUG(461, *YYCURSOR);
    4894             249 :                 yych = *++YYCURSOR;
    4895             249 :                 if (yych == 'M') goto yy465;
    4896             233 :                 if (yych == 'm') goto yy465;
    4897              31 :                 goto yy186;
    4898           10438 : yy462:
    4899                 :                 YYDEBUG(462, *YYCURSOR);
    4900           10438 :                 yych = *++YYCURSOR;
    4901           10438 :                 if (yych == 'W') goto yy463;
    4902           10438 :                 if (yych != 'w') goto yy186;
    4903           10278 : yy463:
    4904                 :                 YYDEBUG(463, *YYCURSOR);
    4905           10278 :                 ++YYCURSOR;
    4906           10278 :                 if (yybm[0+(yych = *YYCURSOR)] & 8) {
    4907              15 :                         goto yy185;
    4908                 :                 }
    4909                 :                 YYDEBUG(464, *YYCURSOR);
    4910           10263 :                 yyleng = YYCURSOR - SCNG(yy_text);
    4911                 : #line 1033 "Zend/zend_language_scanner.l"
    4912                 :                 {
    4913                 :         return T_NEW;
    4914                 : }
    4915                 : #line 4916 "Zend/zend_language_scanner.c"
    4916             218 : yy465:
    4917                 :                 YYDEBUG(465, *YYCURSOR);
    4918             218 :                 yych = *++YYCURSOR;
    4919             218 :                 if (yych == 'E') goto yy466;
    4920             202 :                 if (yych != 'e') goto yy186;
    4921             218 : yy466: