Back to index

php5  5.3.10
zend_language_scanner.c
Go to the documentation of this file.
00001 /* Generated by re2c 0.13.5 on Sun Jan  1 17:48:17 2012 */
00002 #line 1 "Zend/zend_language_scanner.l"
00003 /*
00004    +----------------------------------------------------------------------+
00005    | Zend Engine                                                          |
00006    +----------------------------------------------------------------------+
00007    | Copyright (c) 1998-2012 Zend Technologies Ltd. (http://www.zend.com) |
00008    +----------------------------------------------------------------------+
00009    | This source file is subject to version 2.00 of the Zend license,     |
00010    | that is bundled with this package in the file LICENSE, and is        |
00011    | available through the world-wide-web at the following url:           |
00012    | http://www.zend.com/license/2_00.txt.                                |
00013    | If you did not receive a copy of the Zend license and are unable to  |
00014    | obtain it through the world-wide-web, please send a note to          |
00015    | license@zend.com so we can mail you a copy immediately.              |
00016    +----------------------------------------------------------------------+
00017    | Authors: Marcus Boerger <helly@php.net>                              |
00018    |          Nuno Lopes <nlopess@php.net>                                |
00019    |          Scott MacVicar <scottmac@php.net>                           |
00020    | Flex version authors:                                                |
00021    |          Andi Gutmans <andi@zend.com>                                |
00022    |          Zeev Suraski <zeev@zend.com>                                |
00023    +----------------------------------------------------------------------+
00024 */
00025 
00026 /* $Id: zend_language_scanner.c 321657 2012-01-01 22:52:23Z nlopess $ */
00027 
00028 #if 0
00029 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
00030 #else
00031 # define YYDEBUG(s, c)
00032 #endif
00033 
00034 #include "zend_language_scanner_defs.h"
00035 
00036 #include <errno.h>
00037 #include "zend.h"
00038 #include "zend_alloc.h"
00039 #include <zend_language_parser.h>
00040 #include "zend_compile.h"
00041 #include "zend_language_scanner.h"
00042 #include "zend_highlight.h"
00043 #include "zend_constants.h"
00044 #include "zend_variables.h"
00045 #include "zend_operators.h"
00046 #include "zend_API.h"
00047 #include "zend_strtod.h"
00048 #include "zend_exceptions.h"
00049 #include "tsrm_virtual_cwd.h"
00050 #include "tsrm_config_common.h"
00051 
00052 #define YYCTYPE   unsigned char
00053 #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } }
00054 #define YYCURSOR  SCNG(yy_cursor)
00055 #define YYLIMIT   SCNG(yy_limit)
00056 #define YYMARKER  SCNG(yy_marker)
00057 
00058 #define YYGETCONDITION()  SCNG(yy_state)
00059 #define YYSETCONDITION(s) SCNG(yy_state) = s
00060 
00061 #define STATE(name)  yyc##name
00062 
00063 /* emulate flex constructs */
00064 #define BEGIN(state) YYSETCONDITION(STATE(state))
00065 #define YYSTATE      YYGETCONDITION()
00066 #define yytext       ((char*)SCNG(yy_text))
00067 #define yyleng       SCNG(yy_leng)
00068 #define yyless(x)    do { YYCURSOR = (unsigned char*)yytext + x; \
00069                           yyleng   = (unsigned int)x; } while(0)
00070 #define yymore()     goto yymore_restart
00071 
00072 /* perform sanity check. If this message is triggered you should
00073    increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
00074 #define YYMAXFILL 16
00075 #if ZEND_MMAP_AHEAD < YYMAXFILL
00076 # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL
00077 #endif
00078 
00079 #ifdef HAVE_STDARG_H
00080 # include <stdarg.h>
00081 #endif
00082 
00083 #ifdef HAVE_UNISTD_H
00084 # include <unistd.h>
00085 #endif
00086 
00087 /* Globals Macros */
00088 #define SCNG  LANG_SCNG
00089 #ifdef ZTS
00090 ZEND_API ts_rsrc_id language_scanner_globals_id;
00091 #else
00092 ZEND_API zend_php_scanner_globals language_scanner_globals;
00093 #endif
00094 
00095 #define HANDLE_NEWLINES(s, l)                                                                                          \
00096 do {                                                                                                                                 \
00097        char *p = (s), *boundary = p+(l);                                                                        \
00098                                                                                                                                             \
00099        while (p<boundary) {                                                                                            \
00100               if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) {                               \
00101                      CG(zend_lineno)++;                                                                                       \
00102               }                                                                                                                             \
00103               p++;                                                                                                                   \
00104        }                                                                                                                                    \
00105 } while (0)
00106 
00107 #define HANDLE_NEWLINE(c) \
00108 { \
00109        if (c == '\n' || c == '\r') { \
00110               CG(zend_lineno)++; \
00111        } \
00112 }
00113 
00114 /* To save initial string length after scanning to first variable, CG(doc_comment_len) can be reused */
00115 #define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) CG(doc_comment_len) = (len)
00116 #define GET_DOUBLE_QUOTES_SCANNED_LENGTH()    CG(doc_comment_len)
00117 
00118 #define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x7F)
00119 
00120 #define ZEND_IS_OCT(c)  ((c)>='0' && (c)<='7')
00121 #define ZEND_IS_HEX(c)  (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F'))
00122 
00123 BEGIN_EXTERN_C()
00124 
00125 static void _yy_push_state(int new_state TSRMLS_DC)
00126 {
00127        zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int));
00128        YYSETCONDITION(new_state);
00129 }
00130 
00131 #define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
00132 
00133 static void yy_pop_state(TSRMLS_D)
00134 {
00135        int *stack_state;
00136        zend_stack_top(&SCNG(state_stack), (void **) &stack_state);
00137        YYSETCONDITION(*stack_state);
00138        zend_stack_del_top(&SCNG(state_stack));
00139 }
00140 
00141 static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC)
00142 {
00143        YYCURSOR       = (YYCTYPE*)str;
00144        YYLIMIT        = YYCURSOR + len;
00145        if (!SCNG(yy_start)) {
00146               SCNG(yy_start) = YYCURSOR;
00147        }
00148 }
00149 
00150 void startup_scanner(TSRMLS_D)
00151 {
00152        CG(heredoc) = NULL;
00153        CG(heredoc_len) = 0;
00154        CG(doc_comment) = NULL;
00155        CG(doc_comment_len) = 0;
00156        zend_stack_init(&SCNG(state_stack));
00157 }
00158 
00159 void shutdown_scanner(TSRMLS_D)
00160 {
00161        if (CG(heredoc)) {
00162               efree(CG(heredoc));
00163               CG(heredoc_len)=0;
00164        }
00165        zend_stack_destroy(&SCNG(state_stack));
00166        RESET_DOC_COMMENT();
00167 }
00168 
00169 ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC)
00170 {
00171        lex_state->yy_leng   = SCNG(yy_leng);
00172        lex_state->yy_start  = SCNG(yy_start);
00173        lex_state->yy_text   = SCNG(yy_text);
00174        lex_state->yy_cursor = SCNG(yy_cursor);
00175        lex_state->yy_marker = SCNG(yy_marker);
00176        lex_state->yy_limit  = SCNG(yy_limit);
00177 
00178        lex_state->state_stack = SCNG(state_stack);
00179        zend_stack_init(&SCNG(state_stack));
00180 
00181        lex_state->in = SCNG(yy_in);
00182        lex_state->yy_state = YYSTATE;
00183        lex_state->filename = zend_get_compiled_filename(TSRMLS_C);
00184        lex_state->lineno = CG(zend_lineno);
00185 
00186 #ifdef ZEND_MULTIBYTE
00187        lex_state->script_org = SCNG(script_org);
00188        lex_state->script_org_size = SCNG(script_org_size);
00189        lex_state->script_filtered = SCNG(script_filtered);
00190        lex_state->script_filtered_size = SCNG(script_filtered_size);
00191        lex_state->input_filter = SCNG(input_filter);
00192        lex_state->output_filter = SCNG(output_filter);
00193        lex_state->script_encoding = SCNG(script_encoding);
00194        lex_state->internal_encoding = SCNG(internal_encoding);
00195 #endif /* ZEND_MULTIBYTE */
00196 }
00197 
00198 ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC)
00199 {
00200        SCNG(yy_leng)   = lex_state->yy_leng;
00201        SCNG(yy_start)  = lex_state->yy_start;
00202        SCNG(yy_text)   = lex_state->yy_text;
00203        SCNG(yy_cursor) = lex_state->yy_cursor;
00204        SCNG(yy_marker) = lex_state->yy_marker;
00205        SCNG(yy_limit)  = lex_state->yy_limit;
00206 
00207        zend_stack_destroy(&SCNG(state_stack));
00208        SCNG(state_stack) = lex_state->state_stack;
00209 
00210        SCNG(yy_in) = lex_state->in;
00211        YYSETCONDITION(lex_state->yy_state);
00212        CG(zend_lineno) = lex_state->lineno;
00213        zend_restore_compiled_filename(lex_state->filename TSRMLS_CC);
00214 #ifdef ZEND_MULTIBYTE
00215        if (SCNG(script_org)) {
00216               efree(SCNG(script_org));
00217               SCNG(script_org) = NULL;
00218        }
00219        if (SCNG(script_filtered)) {
00220               efree(SCNG(script_filtered));
00221               SCNG(script_filtered) = NULL;
00222        }
00223        SCNG(script_org) = lex_state->script_org;
00224        SCNG(script_org_size) = lex_state->script_org_size;
00225        SCNG(script_filtered) = lex_state->script_filtered;
00226        SCNG(script_filtered_size) = lex_state->script_filtered_size;
00227        SCNG(input_filter) = lex_state->input_filter;
00228        SCNG(output_filter) = lex_state->output_filter;
00229        SCNG(script_encoding) = lex_state->script_encoding;
00230        SCNG(internal_encoding) = lex_state->internal_encoding;
00231 #endif /* ZEND_MULTIBYTE */
00232 
00233        if (CG(heredoc)) {
00234               efree(CG(heredoc));
00235               CG(heredoc) = NULL;
00236               CG(heredoc_len) = 0;
00237        }
00238 }
00239 
00240 ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC)
00241 {
00242        zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles);
00243        /* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */
00244        file_handle->opened_path = NULL;
00245        if (file_handle->free_filename) {
00246               file_handle->filename = NULL;
00247        }
00248 }
00249 
00250 
00251 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC)
00252 {
00253        char *file_path = NULL, *buf;
00254        size_t size, offset = 0;
00255        
00256        /* The shebang line was read, get the current position to obtain the buffer start */
00257        if (CG(start_lineno) == 2 && file_handle->type == ZEND_HANDLE_FP && file_handle->handle.fp) {
00258               if ((offset = ftell(file_handle->handle.fp)) == -1) {
00259                      offset = 0;
00260               }
00261        }
00262 
00263        if (zend_stream_fixup(file_handle, &buf, &size TSRMLS_CC) == FAILURE) {
00264               return FAILURE;
00265        }
00266 
00267        zend_llist_add_element(&CG(open_files), file_handle);
00268        if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) {
00269               zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files));
00270               size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle;
00271               fh->handle.stream.handle = (void*)(((char*)fh) + diff);
00272               file_handle->handle.stream.handle = fh->handle.stream.handle;
00273        }
00274 
00275        /* Reset the scanner for scanning the new file */
00276        SCNG(yy_in) = file_handle;
00277        SCNG(yy_start) = NULL;
00278 
00279        if (size != -1) {
00280 #ifdef ZEND_MULTIBYTE
00281               if (zend_multibyte_read_script((unsigned char *)buf, size TSRMLS_CC) != 0) {
00282                      return FAILURE;
00283               }
00284 
00285               SCNG(yy_in) = NULL;
00286 
00287               zend_multibyte_set_filter(NULL TSRMLS_CC);
00288 
00289               if (!SCNG(input_filter)) {
00290                      SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1);
00291                      memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1);
00292                      SCNG(script_filtered_size) = SCNG(script_org_size);
00293               } else {
00294                      SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC);
00295                      if (SCNG(script_filtered) == NULL) {
00296                             zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected "
00297                                           "encoding \"%s\" to a compatible encoding", LANG_SCNG(script_encoding)->name);
00298                      }
00299               }
00300               SCNG(yy_start) = SCNG(script_filtered) - offset;
00301               yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC);
00302 #else /* !ZEND_MULTIBYTE */
00303               SCNG(yy_start) = buf - offset;
00304               yy_scan_buffer(buf, size TSRMLS_CC);
00305 #endif /* ZEND_MULTIBYTE */
00306        } else {
00307               zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed");
00308        }
00309 
00310        BEGIN(INITIAL);
00311 
00312        if (file_handle->opened_path) {
00313               file_path = file_handle->opened_path;
00314        } else {
00315               file_path = file_handle->filename;
00316        }
00317 
00318        zend_set_compiled_filename(file_path TSRMLS_CC);
00319 
00320        if (CG(start_lineno)) {
00321               CG(zend_lineno) = CG(start_lineno);
00322               CG(start_lineno) = 0;
00323        } else {
00324               CG(zend_lineno) = 1;
00325        }
00326 
00327        CG(increment_lineno) = 0;
00328        return SUCCESS;
00329 }
00330 END_EXTERN_C()
00331 
00332 
00333 ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC)
00334 {
00335        zend_lex_state original_lex_state;
00336        zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
00337        zend_op_array *original_active_op_array = CG(active_op_array);
00338        zend_op_array *retval=NULL;
00339        int compiler_result;
00340        zend_bool compilation_successful=0;
00341        znode retval_znode;
00342        zend_bool original_in_compilation = CG(in_compilation);
00343 
00344        retval_znode.op_type = IS_CONST;
00345        retval_znode.u.constant.type = IS_LONG;
00346        retval_znode.u.constant.value.lval = 1;
00347        Z_UNSET_ISREF(retval_znode.u.constant);
00348        Z_SET_REFCOUNT(retval_znode.u.constant, 1);
00349 
00350        zend_save_lexical_state(&original_lex_state TSRMLS_CC);
00351 
00352        retval = op_array; /* success oriented */
00353 
00354        if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) {
00355               if (type==ZEND_REQUIRE) {
00356                      zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC);
00357                      zend_bailout();
00358               } else {
00359                      zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC);
00360               }
00361               compilation_successful=0;
00362        } else {
00363               init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC);
00364               CG(in_compilation) = 1;
00365               CG(active_op_array) = op_array;
00366               compiler_result = zendparse(TSRMLS_C);
00367               zend_do_return(&retval_znode, 0 TSRMLS_CC);
00368               CG(in_compilation) = original_in_compilation;
00369               if (compiler_result==1) { /* parser error */
00370                      zend_bailout();
00371               }
00372               compilation_successful=1;
00373        }
00374 
00375        if (retval) {
00376               CG(active_op_array) = original_active_op_array;
00377               if (compilation_successful) {
00378                      pass_two(op_array TSRMLS_CC);
00379                      zend_release_labels(TSRMLS_C);
00380               } else {
00381                      efree(op_array);
00382                      retval = NULL;
00383               }
00384        }
00385        zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
00386        return retval;
00387 }
00388 
00389 
00390 zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC)
00391 {
00392        zend_file_handle file_handle;
00393        zval tmp;
00394        zend_op_array *retval;
00395        char *opened_path = NULL;
00396 
00397        if (filename->type != IS_STRING) {
00398               tmp = *filename;
00399               zval_copy_ctor(&tmp);
00400               convert_to_string(&tmp);
00401               filename = &tmp;
00402        }
00403        file_handle.filename = filename->value.str.val;
00404        file_handle.free_filename = 0;
00405        file_handle.type = ZEND_HANDLE_FILENAME;
00406        file_handle.opened_path = NULL;
00407        file_handle.handle.fp = NULL;
00408 
00409        retval = zend_compile_file(&file_handle, type TSRMLS_CC);
00410        if (retval && file_handle.handle.stream.handle) {
00411               int dummy = 1;
00412 
00413               if (!file_handle.opened_path) {
00414                      file_handle.opened_path = opened_path = estrndup(filename->value.str.val, filename->value.str.len);
00415               }
00416 
00417               zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL);
00418 
00419               if (opened_path) {
00420                      efree(opened_path);
00421               }
00422        }
00423        zend_destroy_file_handle(&file_handle TSRMLS_CC);
00424 
00425        if (filename==&tmp) {
00426               zval_dtor(&tmp);
00427        }
00428        return retval;
00429 }
00430 
00431 ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC)
00432 {
00433        /* enforce two trailing NULLs for flex... */
00434        str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD);
00435 
00436        memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD);
00437 
00438        SCNG(yy_in)=NULL;
00439        SCNG(yy_start) = NULL;
00440 
00441 #ifdef ZEND_MULTIBYTE
00442        SCNG(script_org) = (unsigned char *)estrdup(str->value.str.val);
00443        SCNG(script_org_size) = str->value.str.len;
00444 
00445        zend_multibyte_set_filter(CG(internal_encoding) TSRMLS_CC);
00446 
00447        if (!SCNG(input_filter)) {
00448               SCNG(script_filtered) = (unsigned char*)emalloc(SCNG(script_org_size)+1);
00449               memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1);
00450               SCNG(script_filtered_size) = SCNG(script_org_size);
00451        } else {
00452               SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC);
00453        }
00454 
00455        yy_scan_buffer((char *)SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC);       
00456 #else /* !ZEND_MULTIBYTE */
00457        yy_scan_buffer(str->value.str.val, str->value.str.len TSRMLS_CC);
00458 #endif /* ZEND_MULTIBYTE */
00459 
00460        zend_set_compiled_filename(filename TSRMLS_CC);
00461        CG(zend_lineno) = 1;
00462        CG(increment_lineno) = 0;
00463        return SUCCESS;
00464 }
00465 
00466 
00467 ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D)
00468 {
00469        size_t offset = SCNG(yy_cursor) - SCNG(yy_start);
00470 #ifdef ZEND_MULTIBYTE
00471        if (SCNG(input_filter)) {
00472               size_t original_offset = offset, length = 0; do {
00473                      unsigned char *p = NULL;
00474                      SCNG(input_filter)(&p, &length, SCNG(script_org), offset TSRMLS_CC);
00475                      if (!p) {
00476                             break;
00477                      }
00478                      efree(p);
00479                      if (length > original_offset) {
00480                             offset--;
00481                      } else if (length < original_offset) {
00482                             offset++;
00483                      }
00484               } while (original_offset != length);
00485        }
00486 #endif
00487        return offset;
00488 }
00489 
00490 
00491 zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC)
00492 {
00493        zend_lex_state original_lex_state;
00494        zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array));
00495        zend_op_array *original_active_op_array = CG(active_op_array);
00496        zend_op_array *retval;
00497        zval tmp;
00498        int compiler_result;
00499        zend_bool original_in_compilation = CG(in_compilation);
00500 
00501        if (source_string->value.str.len==0) {
00502               efree(op_array);
00503               return NULL;
00504        }
00505 
00506        CG(in_compilation) = 1;
00507 
00508        tmp = *source_string;
00509        zval_copy_ctor(&tmp);
00510        convert_to_string(&tmp);
00511        source_string = &tmp;
00512 
00513        zend_save_lexical_state(&original_lex_state TSRMLS_CC);
00514        if (zend_prepare_string_for_scanning(source_string, filename TSRMLS_CC)==FAILURE) {
00515               efree(op_array);
00516               retval = NULL;
00517        } else {
00518               zend_bool orig_interactive = CG(interactive);
00519 
00520               CG(interactive) = 0;
00521               init_op_array(op_array, ZEND_EVAL_CODE, INITIAL_OP_ARRAY_SIZE TSRMLS_CC);
00522               CG(interactive) = orig_interactive;
00523               CG(active_op_array) = op_array;
00524               BEGIN(ST_IN_SCRIPTING);
00525               compiler_result = zendparse(TSRMLS_C);
00526 
00527 #ifdef ZEND_MULTIBYTE
00528               if (SCNG(script_org)) {
00529                      efree(SCNG(script_org));
00530                      SCNG(script_org) = NULL;
00531               }
00532               if (SCNG(script_filtered)) {
00533                      efree(SCNG(script_filtered));
00534                      SCNG(script_filtered) = NULL;
00535               }
00536 #endif /* ZEND_MULTIBYTE */
00537 
00538               if (compiler_result==1) {
00539                      CG(active_op_array) = original_active_op_array;
00540                      CG(unclean_shutdown)=1;
00541                      destroy_op_array(op_array TSRMLS_CC);
00542                      efree(op_array);
00543                      retval = NULL;
00544               } else {
00545                      zend_do_return(NULL, 0 TSRMLS_CC);
00546                      CG(active_op_array) = original_active_op_array;
00547                      pass_two(op_array TSRMLS_CC);
00548                      zend_release_labels(TSRMLS_C);
00549                      retval = op_array;
00550               }
00551        }
00552        zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
00553        zval_dtor(&tmp);
00554        CG(in_compilation) = original_in_compilation;
00555        return retval;
00556 }
00557 
00558 
00559 BEGIN_EXTERN_C()
00560 int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC)
00561 {
00562        zend_lex_state original_lex_state;
00563        zend_file_handle file_handle;
00564 
00565        file_handle.type = ZEND_HANDLE_FILENAME;
00566        file_handle.filename = filename;
00567        file_handle.free_filename = 0;
00568        file_handle.opened_path = NULL;
00569        zend_save_lexical_state(&original_lex_state TSRMLS_CC);
00570        if (open_file_for_scanning(&file_handle TSRMLS_CC)==FAILURE) {
00571               zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename TSRMLS_CC);
00572               zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
00573               return FAILURE;
00574        }
00575        zend_highlight(syntax_highlighter_ini TSRMLS_CC);
00576 #ifdef ZEND_MULTIBYTE
00577        if (SCNG(script_org)) {
00578               efree(SCNG(script_org));
00579               SCNG(script_org) = NULL;
00580        }
00581        if (SCNG(script_filtered)) {
00582               efree(SCNG(script_filtered));
00583               SCNG(script_filtered) = NULL;
00584        }
00585 #endif /* ZEND_MULTIBYTE */
00586        zend_destroy_file_handle(&file_handle TSRMLS_CC);
00587        zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
00588        return SUCCESS;
00589 }
00590 
00591 int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name TSRMLS_DC)
00592 {
00593        zend_lex_state original_lex_state;
00594        zval tmp = *str;
00595 
00596        str = &tmp;
00597        zval_copy_ctor(str);
00598        zend_save_lexical_state(&original_lex_state TSRMLS_CC);
00599        if (zend_prepare_string_for_scanning(str, str_name TSRMLS_CC)==FAILURE) {
00600               zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
00601               return FAILURE;
00602        }
00603        BEGIN(INITIAL);
00604        zend_highlight(syntax_highlighter_ini TSRMLS_CC);
00605 #ifdef ZEND_MULTIBYTE
00606        if (SCNG(script_org)) {
00607               efree(SCNG(script_org));
00608               SCNG(script_org) = NULL;
00609        }
00610        if (SCNG(script_filtered)) {
00611               efree(SCNG(script_filtered));
00612               SCNG(script_filtered) = NULL;
00613        }
00614 #endif /* ZEND_MULTIBYTE */
00615        zend_restore_lexical_state(&original_lex_state TSRMLS_CC);
00616        zval_dtor(str);
00617        return SUCCESS;
00618 }
00619 END_EXTERN_C()
00620 
00621 #ifdef ZEND_MULTIBYTE
00622 
00623 BEGIN_EXTERN_C()
00624 ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, zend_encoding *old_encoding TSRMLS_DC)
00625 {
00626        size_t original_offset, offset, free_flag, new_len, length;
00627        unsigned char *p;
00628 
00629        /* calculate current position */
00630        offset = original_offset = YYCURSOR - SCNG(yy_start);
00631        if (old_input_filter && offset > 0) {
00632               zend_encoding *new_encoding = SCNG(script_encoding);
00633               zend_encoding_filter new_filter = SCNG(input_filter);
00634               SCNG(script_encoding) = old_encoding;
00635               SCNG(input_filter) = old_input_filter;
00636               offset = zend_get_scanned_file_offset(TSRMLS_C);
00637               SCNG(script_encoding) = new_encoding;
00638               SCNG(input_filter) = new_filter;
00639        }
00640 
00641        /* convert and set */
00642        if (!SCNG(input_filter)) {
00643               length = SCNG(script_org_size) - offset;
00644               p = SCNG(script_org) + offset;
00645               free_flag = 0;
00646        } else {
00647               SCNG(input_filter)(&p, &length, SCNG(script_org) + offset, SCNG(script_org_size) - offset TSRMLS_CC);
00648               free_flag = 1;
00649        }
00650 
00651        new_len = original_offset + length;
00652 
00653        if (new_len > YYLIMIT - SCNG(yy_start)) {
00654               unsigned char *new_yy_start = erealloc(SCNG(yy_start), new_len);
00655               SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start));
00656               SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start));
00657               SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start));
00658               SCNG(yy_start) = new_yy_start;
00659               SCNG(script_filtered) = new_yy_start;
00660               SCNG(script_filtered_size) = new_len;
00661        }
00662 
00663        SCNG(yy_limit) = SCNG(yy_start) + new_len;
00664        memmove(SCNG(yy_start) + original_offset, p, length);
00665 
00666        if (free_flag) {
00667               efree(p);
00668        }
00669 }
00670 
00671 
00672 ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC)
00673 {
00674        size_t n;
00675 
00676        if (CG(interactive) == 0) {
00677               if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) {
00678                      return FAILURE;
00679               }
00680               n = len;
00681               return n;
00682        }
00683 
00684        /* interactive */
00685        if (SCNG(script_org)) {
00686               efree(SCNG(script_org));
00687        }
00688        if (SCNG(script_filtered)) {
00689               efree(SCNG(script_filtered));
00690        }
00691        SCNG(script_org) = NULL;
00692        SCNG(script_org_size) = 0;
00693 
00694        /* TODO: support widechars */
00695        if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) {
00696               return FAILURE;
00697        }
00698        n = len;
00699 
00700        SCNG(script_org_size) = n;
00701        SCNG(script_org) = (unsigned char*)emalloc(SCNG(script_org_size) + 1);
00702        memcpy(SCNG(script_org), buf, n);
00703 
00704        return n;
00705 }
00706 
00707 
00708 ZEND_API int zend_multibyte_read_script(unsigned char *buf, size_t n TSRMLS_DC)
00709 {
00710        if (SCNG(script_org)) {
00711               efree(SCNG(script_org));
00712               SCNG(script_org) = NULL;
00713        }
00714        SCNG(script_org_size) = n;  
00715        
00716        SCNG(script_org) = (unsigned char*)emalloc(SCNG(script_org_size) + 1);
00717        memcpy(SCNG(script_org), buf, n);
00718        *(SCNG(script_org)+SCNG(script_org_size)) = '\0';
00719 
00720        return 0;
00721 }
00722 
00723 
00724 # define zend_copy_value(zendlval, yytext, yyleng) \
00725        if (SCNG(output_filter)) { \
00726               size_t sz = 0; \
00727               SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \
00728               zendlval->value.str.len = sz; \
00729        } else { \
00730               zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \
00731               zendlval->value.str.len = yyleng; \
00732        }
00733 #else /* ZEND_MULTIBYTE */
00734 # define zend_copy_value(zendlval, yytext, yyleng) \
00735        zendlval->value.str.val = (char *)estrndup(yytext, yyleng); \
00736        zendlval->value.str.len = yyleng;
00737 #endif /* ZEND_MULTIBYTE */
00738 
00739 static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC)
00740 {
00741        register char *s, *t;
00742        char *end;
00743 
00744        ZVAL_STRINGL(zendlval, str, len, 1);
00745 
00746        /* convert escape sequences */
00747        s = t = zendlval->value.str.val;
00748        end = s+zendlval->value.str.len;
00749        while (s<end) {
00750               if (*s=='\\') {
00751                      s++;
00752                      if (s >= end) {
00753                             *t++ = '\\';
00754                             break;
00755                      }
00756 
00757                      switch(*s) {
00758                             case 'n':
00759                                    *t++ = '\n';
00760                                    zendlval->value.str.len--;
00761                                    break;
00762                             case 'r':
00763                                    *t++ = '\r';
00764                                    zendlval->value.str.len--;
00765                                    break;
00766                             case 't':
00767                                    *t++ = '\t';
00768                                    zendlval->value.str.len--;
00769                                    break;
00770                             case 'f':
00771                                    *t++ = '\f';
00772                                    zendlval->value.str.len--;
00773                                    break;
00774                             case 'v':
00775                                    *t++ = '\v';
00776                                    zendlval->value.str.len--;
00777                                    break;
00778                             case '"':
00779                             case '`':
00780                                    if (*s != quote_type) {
00781                                           *t++ = '\\';
00782                                           *t++ = *s;
00783                                           break;
00784                                    }
00785                             case '\\':
00786                             case '$':
00787                                    *t++ = *s;
00788                                    zendlval->value.str.len--;
00789                                    break;
00790                             case 'x':
00791                             case 'X':
00792                                    if (ZEND_IS_HEX(*(s+1))) {
00793                                           char hex_buf[3] = { 0, 0, 0 };
00794 
00795                                           zendlval->value.str.len--; /* for the 'x' */
00796 
00797                                           hex_buf[0] = *(++s);
00798                                           zendlval->value.str.len--;
00799                                           if (ZEND_IS_HEX(*(s+1))) {
00800                                                  hex_buf[1] = *(++s);
00801                                                  zendlval->value.str.len--;
00802                                           }
00803                                           *t++ = (char) strtol(hex_buf, NULL, 16);
00804                                    } else {
00805                                           *t++ = '\\';
00806                                           *t++ = *s;
00807                                    }
00808                                    break;
00809                             default:
00810                                    /* check for an octal */
00811                                    if (ZEND_IS_OCT(*s)) {
00812                                           char octal_buf[4] = { 0, 0, 0, 0 };
00813 
00814                                           octal_buf[0] = *s;
00815                                           zendlval->value.str.len--;
00816                                           if (ZEND_IS_OCT(*(s+1))) {
00817                                                  octal_buf[1] = *(++s);
00818                                                  zendlval->value.str.len--;
00819                                                  if (ZEND_IS_OCT(*(s+1))) {
00820                                                         octal_buf[2] = *(++s);
00821                                                         zendlval->value.str.len--;
00822                                                  }
00823                                           }
00824                                           *t++ = (char) strtol(octal_buf, NULL, 8);
00825                                    } else {
00826                                           *t++ = '\\';
00827                                           *t++ = *s;
00828                                    }
00829                                    break;
00830                      }
00831               } else {
00832                      *t++ = *s;
00833               }
00834 
00835               if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
00836                      CG(zend_lineno)++;
00837               }
00838               s++;
00839        }
00840        *t = 0;
00841 #ifdef ZEND_MULTIBYTE
00842        if (SCNG(output_filter)) {
00843               size_t sz = 0;
00844               s = zendlval->value.str.val;
00845               SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC);
00846               zendlval->value.str.len = sz;
00847               efree(s);
00848        }
00849 #endif /* ZEND_MULTIBYTE */
00850 }
00851 
00852 
00853 int lex_scan(zval *zendlval TSRMLS_DC)
00854 {
00855 restart:
00856        SCNG(yy_text) = YYCURSOR;
00857 
00858 yymore_restart:
00859 
00860 
00861 #line 862 "Zend/zend_language_scanner.c"
00862 {
00863        YYCTYPE yych;
00864        unsigned int yyaccept = 0;
00865        if (YYGETCONDITION() < 5) {
00866               if (YYGETCONDITION() < 2) {
00867                      if (YYGETCONDITION() < 1) {
00868                             goto yyc_ST_IN_SCRIPTING;
00869                      } else {
00870                             goto yyc_ST_LOOKING_FOR_PROPERTY;
00871                      }
00872               } else {
00873                      if (YYGETCONDITION() < 3) {
00874                             goto yyc_ST_BACKQUOTE;
00875                      } else {
00876                             if (YYGETCONDITION() < 4) {
00877                                    goto yyc_ST_DOUBLE_QUOTES;
00878                             } else {
00879                                    goto yyc_ST_HEREDOC;
00880                             }
00881                      }
00882               }
00883        } else {
00884               if (YYGETCONDITION() < 7) {
00885                      if (YYGETCONDITION() < 6) {
00886                             goto yyc_ST_LOOKING_FOR_VARNAME;
00887                      } else {
00888                             goto yyc_ST_VAR_OFFSET;
00889                      }
00890               } else {
00891                      if (YYGETCONDITION() < 8) {
00892                             goto yyc_INITIAL;
00893                      } else {
00894                             if (YYGETCONDITION() < 9) {
00895                                    goto yyc_ST_END_HEREDOC;
00896                             } else {
00897                                    goto yyc_ST_NOWDOC;
00898                             }
00899                      }
00900               }
00901        }
00902 /* *********************************** */
00903 yyc_INITIAL:
00904        {
00905               static const unsigned char yybm[] = {
00906                        0,   0,   0,   0,   0,   0,   0,   0, 
00907                        0, 128, 128,   0,   0, 128,   0,   0, 
00908                        0,   0,   0,   0,   0,   0,   0,   0, 
00909                        0,   0,   0,   0,   0,   0,   0,   0, 
00910                      128,   0,   0,   0,   0,   0,   0,   0, 
00911                        0,   0,   0,   0,   0,   0,   0,   0, 
00912                        0,   0,   0,   0,   0,   0,   0,   0, 
00913                        0,   0,   0,   0,   0,   0,   0,   0, 
00914                        0,   0,   0,   0,   0,   0,   0,   0, 
00915                        0,   0,   0,   0,   0,   0,   0,   0, 
00916                        0,   0,   0,   0,   0,   0,   0,   0, 
00917                        0,   0,   0,   0,   0,   0,   0,   0, 
00918                        0,   0,   0,   0,   0,   0,   0,   0, 
00919                        0,   0,   0,   0,   0,   0,   0,   0, 
00920                        0,   0,   0,   0,   0,   0,   0,   0, 
00921                        0,   0,   0,   0,   0,   0,   0,   0, 
00922                        0,   0,   0,   0,   0,   0,   0,   0, 
00923                        0,   0,   0,   0,   0,   0,   0,   0, 
00924                        0,   0,   0,   0,   0,   0,   0,   0, 
00925                        0,   0,   0,   0,   0,   0,   0,   0, 
00926                        0,   0,   0,   0,   0,   0,   0,   0, 
00927                        0,   0,   0,   0,   0,   0,   0,   0, 
00928                        0,   0,   0,   0,   0,   0,   0,   0, 
00929                        0,   0,   0,   0,   0,   0,   0,   0, 
00930                        0,   0,   0,   0,   0,   0,   0,   0, 
00931                        0,   0,   0,   0,   0,   0,   0,   0, 
00932                        0,   0,   0,   0,   0,   0,   0,   0, 
00933                        0,   0,   0,   0,   0,   0,   0,   0, 
00934                        0,   0,   0,   0,   0,   0,   0,   0, 
00935                        0,   0,   0,   0,   0,   0,   0,   0, 
00936                        0,   0,   0,   0,   0,   0,   0,   0, 
00937                        0,   0,   0,   0,   0,   0,   0,   0, 
00938               };
00939 
00940               YYDEBUG(0, *YYCURSOR);
00941               YYFILL(8);
00942               yych = *YYCURSOR;
00943               if (yych != '<') goto yy4;
00944               YYDEBUG(2, *YYCURSOR);
00945               yyaccept = 0;
00946               yych = *(YYMARKER = ++YYCURSOR);
00947               if (yych <= '?') {
00948                      if (yych == '%') goto yy7;
00949                      if (yych >= '?') goto yy5;
00950               } else {
00951                      if (yych <= 'S') {
00952                             if (yych >= 'S') goto yy9;
00953                      } else {
00954                             if (yych == 's') goto yy9;
00955                      }
00956               }
00957 yy3:
00958               YYDEBUG(3, *YYCURSOR);
00959               yyleng = YYCURSOR - SCNG(yy_text);
00960 #line 1586 "Zend/zend_language_scanner.l"
00961               {
00962        if (YYCURSOR > YYLIMIT) {
00963               return 0;
00964        }
00965 
00966 inline_char_handler:
00967 
00968        while (1) {
00969               YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR);
00970 
00971               YYCURSOR = ptr ? ptr + 1 : YYLIMIT;
00972 
00973               if (YYCURSOR < YYLIMIT) {
00974                      switch (*YYCURSOR) {
00975                             case '?':
00976                                    if (CG(short_tags) || !strncasecmp(YYCURSOR + 1, "php", 3)) { /* Assume [ \t\n\r] follows "php" */
00977                                           break;
00978                                    }
00979                                    continue;
00980                             case '%':
00981                                    if (CG(asp_tags)) {
00982                                           break;
00983                                    }
00984                                    continue;
00985                             case 's':
00986                             case 'S':
00987                                    /* Probably NOT an opening PHP <script> tag, so don't end the HTML chunk yet
00988                                     * If it is, the PHP <script> tag rule checks for any HTML scanned before it */
00989                                    YYCURSOR--;
00990                                    yymore();
00991                             default:
00992                                    continue;
00993                      }
00994 
00995                      YYCURSOR--;
00996               }
00997 
00998               break;
00999        }
01000 
01001 inline_html:
01002        yyleng = YYCURSOR - SCNG(yy_text);
01003 
01004 #ifdef ZEND_MULTIBYTE
01005        if (SCNG(output_filter)) {
01006               int readsize;
01007               size_t sz = 0;
01008               readsize = SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC);
01009               zendlval->value.str.len = sz;
01010               if (readsize < yyleng) {
01011                      yyless(readsize);
01012               }
01013        } else {
01014          zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
01015          zendlval->value.str.len = yyleng;
01016        }
01017 #else /* !ZEND_MULTIBYTE */
01018        zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
01019        zendlval->value.str.len = yyleng;
01020 #endif
01021        zendlval->type = IS_STRING;
01022        HANDLE_NEWLINES(yytext, yyleng);
01023        return T_INLINE_HTML;
01024 }
01025 #line 1026 "Zend/zend_language_scanner.c"
01026 yy4:
01027               YYDEBUG(4, *YYCURSOR);
01028               yych = *++YYCURSOR;
01029               goto yy3;
01030 yy5:
01031               YYDEBUG(5, *YYCURSOR);
01032               yyaccept = 1;
01033               yych = *(YYMARKER = ++YYCURSOR);
01034               if (yych <= 'O') {
01035                      if (yych == '=') goto yy45;
01036               } else {
01037                      if (yych <= 'P') goto yy47;
01038                      if (yych == 'p') goto yy47;
01039               }
01040 yy6:
01041               YYDEBUG(6, *YYCURSOR);
01042               yyleng = YYCURSOR - SCNG(yy_text);
01043 #line 1574 "Zend/zend_language_scanner.l"
01044               {
01045        if (CG(short_tags)) {
01046               zendlval->value.str.val = yytext; /* no copying - intentional */
01047               zendlval->value.str.len = yyleng;
01048               zendlval->type = IS_STRING;
01049               BEGIN(ST_IN_SCRIPTING);
01050               return T_OPEN_TAG;
01051        } else {
01052               goto inline_char_handler;
01053        }
01054 }
01055 #line 1056 "Zend/zend_language_scanner.c"
01056 yy7:
01057               YYDEBUG(7, *YYCURSOR);
01058               ++YYCURSOR;
01059               if ((yych = *YYCURSOR) == '=') goto yy43;
01060               YYDEBUG(8, *YYCURSOR);
01061               yyleng = YYCURSOR - SCNG(yy_text);
01062 #line 1551 "Zend/zend_language_scanner.l"
01063               {
01064        if (CG(asp_tags)) {
01065               zendlval->value.str.val = yytext; /* no copying - intentional */
01066               zendlval->value.str.len = yyleng;
01067               zendlval->type = IS_STRING;
01068               BEGIN(ST_IN_SCRIPTING);
01069               return T_OPEN_TAG;
01070        } else {
01071               goto inline_char_handler;
01072        }
01073 }
01074 #line 1075 "Zend/zend_language_scanner.c"
01075 yy9:
01076               YYDEBUG(9, *YYCURSOR);
01077               yych = *++YYCURSOR;
01078               if (yych == 'C') goto yy11;
01079               if (yych == 'c') goto yy11;
01080 yy10:
01081               YYDEBUG(10, *YYCURSOR);
01082               YYCURSOR = YYMARKER;
01083               if (yyaccept <= 0) {
01084                      goto yy3;
01085               } else {
01086                      goto yy6;
01087               }
01088 yy11:
01089               YYDEBUG(11, *YYCURSOR);
01090               yych = *++YYCURSOR;
01091               if (yych == 'R') goto yy12;
01092               if (yych != 'r') goto yy10;
01093 yy12:
01094               YYDEBUG(12, *YYCURSOR);
01095               yych = *++YYCURSOR;
01096               if (yych == 'I') goto yy13;
01097               if (yych != 'i') goto yy10;
01098 yy13:
01099               YYDEBUG(13, *YYCURSOR);
01100               yych = *++YYCURSOR;
01101               if (yych == 'P') goto yy14;
01102               if (yych != 'p') goto yy10;
01103 yy14:
01104               YYDEBUG(14, *YYCURSOR);
01105               yych = *++YYCURSOR;
01106               if (yych == 'T') goto yy15;
01107               if (yych != 't') goto yy10;
01108 yy15:
01109               YYDEBUG(15, *YYCURSOR);
01110               yych = *++YYCURSOR;
01111               if (yych == 'L') goto yy10;
01112               if (yych == 'l') goto yy10;
01113               goto yy17;
01114 yy16:
01115               YYDEBUG(16, *YYCURSOR);
01116               ++YYCURSOR;
01117               YYFILL(8);
01118               yych = *YYCURSOR;
01119 yy17:
01120               YYDEBUG(17, *YYCURSOR);
01121               if (yybm[0+yych] & 128) {
01122                      goto yy16;
01123               }
01124               if (yych == 'L') goto yy18;
01125               if (yych != 'l') goto yy10;
01126 yy18:
01127               YYDEBUG(18, *YYCURSOR);
01128               yych = *++YYCURSOR;
01129               if (yych == 'A') goto yy19;
01130               if (yych != 'a') goto yy10;
01131 yy19:
01132               YYDEBUG(19, *YYCURSOR);
01133               yych = *++YYCURSOR;
01134               if (yych == 'N') goto yy20;
01135               if (yych != 'n') goto yy10;
01136 yy20:
01137               YYDEBUG(20, *YYCURSOR);
01138               yych = *++YYCURSOR;
01139               if (yych == 'G') goto yy21;
01140               if (yych != 'g') goto yy10;
01141 yy21:
01142               YYDEBUG(21, *YYCURSOR);
01143               yych = *++YYCURSOR;
01144               if (yych == 'U') goto yy22;
01145               if (yych != 'u') goto yy10;
01146 yy22:
01147               YYDEBUG(22, *YYCURSOR);
01148               yych = *++YYCURSOR;
01149               if (yych == 'A') goto yy23;
01150               if (yych != 'a') goto yy10;
01151 yy23:
01152               YYDEBUG(23, *YYCURSOR);
01153               yych = *++YYCURSOR;
01154               if (yych == 'G') goto yy24;
01155               if (yych != 'g') goto yy10;
01156 yy24:
01157               YYDEBUG(24, *YYCURSOR);
01158               yych = *++YYCURSOR;
01159               if (yych == 'E') goto yy25;
01160               if (yych != 'e') goto yy10;
01161 yy25:
01162               YYDEBUG(25, *YYCURSOR);
01163               ++YYCURSOR;
01164               YYFILL(1);
01165               yych = *YYCURSOR;
01166               YYDEBUG(26, *YYCURSOR);
01167               if (yych <= '\r') {
01168                      if (yych <= 0x08) goto yy10;
01169                      if (yych <= '\n') goto yy25;
01170                      if (yych <= '\f') goto yy10;
01171                      goto yy25;
01172               } else {
01173                      if (yych <= ' ') {
01174                             if (yych <= 0x1F) goto yy10;
01175                             goto yy25;
01176                      } else {
01177                             if (yych != '=') goto yy10;
01178                      }
01179               }
01180 yy27:
01181               YYDEBUG(27, *YYCURSOR);
01182               ++YYCURSOR;
01183               YYFILL(5);
01184               yych = *YYCURSOR;
01185               YYDEBUG(28, *YYCURSOR);
01186               if (yych <= '!') {
01187                      if (yych <= '\f') {
01188                             if (yych <= 0x08) goto yy10;
01189                             if (yych <= '\n') goto yy27;
01190                             goto yy10;
01191                      } else {
01192                             if (yych <= '\r') goto yy27;
01193                             if (yych == ' ') goto yy27;
01194                             goto yy10;
01195                      }
01196               } else {
01197                      if (yych <= 'O') {
01198                             if (yych <= '"') goto yy30;
01199                             if (yych == '\'') goto yy31;
01200                             goto yy10;
01201                      } else {
01202                             if (yych <= 'P') goto yy29;
01203                             if (yych != 'p') goto yy10;
01204                      }
01205               }
01206 yy29:
01207               YYDEBUG(29, *YYCURSOR);
01208               yych = *++YYCURSOR;
01209               if (yych == 'H') goto yy42;
01210               if (yych == 'h') goto yy42;
01211               goto yy10;
01212 yy30:
01213               YYDEBUG(30, *YYCURSOR);
01214               yych = *++YYCURSOR;
01215               if (yych == 'P') goto yy39;
01216               if (yych == 'p') goto yy39;
01217               goto yy10;
01218 yy31:
01219               YYDEBUG(31, *YYCURSOR);
01220               yych = *++YYCURSOR;
01221               if (yych == 'P') goto yy32;
01222               if (yych != 'p') goto yy10;
01223 yy32:
01224               YYDEBUG(32, *YYCURSOR);
01225               yych = *++YYCURSOR;
01226               if (yych == 'H') goto yy33;
01227               if (yych != 'h') goto yy10;
01228 yy33:
01229               YYDEBUG(33, *YYCURSOR);
01230               yych = *++YYCURSOR;
01231               if (yych == 'P') goto yy34;
01232               if (yych != 'p') goto yy10;
01233 yy34:
01234               YYDEBUG(34, *YYCURSOR);
01235               yych = *++YYCURSOR;
01236               if (yych != '\'') goto yy10;
01237 yy35:
01238               YYDEBUG(35, *YYCURSOR);
01239               ++YYCURSOR;
01240               YYFILL(1);
01241               yych = *YYCURSOR;
01242               YYDEBUG(36, *YYCURSOR);
01243               if (yych <= '\r') {
01244                      if (yych <= 0x08) goto yy10;
01245                      if (yych <= '\n') goto yy35;
01246                      if (yych <= '\f') goto yy10;
01247                      goto yy35;
01248               } else {
01249                      if (yych <= ' ') {
01250                             if (yych <= 0x1F) goto yy10;
01251                             goto yy35;
01252                      } else {
01253                             if (yych != '>') goto yy10;
01254                      }
01255               }
01256               YYDEBUG(37, *YYCURSOR);
01257               ++YYCURSOR;
01258               YYDEBUG(38, *YYCURSOR);
01259               yyleng = YYCURSOR - SCNG(yy_text);
01260 #line 1507 "Zend/zend_language_scanner.l"
01261               {
01262        YYCTYPE *bracket = zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
01263 
01264        if (bracket != SCNG(yy_text)) {
01265               /* Handle previously scanned HTML, as possible <script> tags found are assumed to not be PHP's */
01266               YYCURSOR = bracket;
01267               goto inline_html;
01268        }
01269 
01270        HANDLE_NEWLINES(yytext, yyleng);
01271        zendlval->value.str.val = yytext; /* no copying - intentional */
01272        zendlval->value.str.len = yyleng;
01273        zendlval->type = IS_STRING;
01274        BEGIN(ST_IN_SCRIPTING);
01275        return T_OPEN_TAG;
01276 }
01277 #line 1278 "Zend/zend_language_scanner.c"
01278 yy39:
01279               YYDEBUG(39, *YYCURSOR);
01280               yych = *++YYCURSOR;
01281               if (yych == 'H') goto yy40;
01282               if (yych != 'h') goto yy10;
01283 yy40:
01284               YYDEBUG(40, *YYCURSOR);
01285               yych = *++YYCURSOR;
01286               if (yych == 'P') goto yy41;
01287               if (yych != 'p') goto yy10;
01288 yy41:
01289               YYDEBUG(41, *YYCURSOR);
01290               yych = *++YYCURSOR;
01291               if (yych == '"') goto yy35;
01292               goto yy10;
01293 yy42:
01294               YYDEBUG(42, *YYCURSOR);
01295               yych = *++YYCURSOR;
01296               if (yych == 'P') goto yy35;
01297               if (yych == 'p') goto yy35;
01298               goto yy10;
01299 yy43:
01300               YYDEBUG(43, *YYCURSOR);
01301               ++YYCURSOR;
01302               YYDEBUG(44, *YYCURSOR);
01303               yyleng = YYCURSOR - SCNG(yy_text);
01304 #line 1525 "Zend/zend_language_scanner.l"
01305               {
01306        if (CG(asp_tags)) {
01307               zendlval->value.str.val = yytext; /* no copying - intentional */
01308               zendlval->value.str.len = yyleng;
01309               zendlval->type = IS_STRING;
01310               BEGIN(ST_IN_SCRIPTING);
01311               return T_OPEN_TAG_WITH_ECHO;
01312        } else {
01313               goto inline_char_handler;
01314        }
01315 }
01316 #line 1317 "Zend/zend_language_scanner.c"
01317 yy45:
01318               YYDEBUG(45, *YYCURSOR);
01319               ++YYCURSOR;
01320               YYDEBUG(46, *YYCURSOR);
01321               yyleng = YYCURSOR - SCNG(yy_text);
01322 #line 1538 "Zend/zend_language_scanner.l"
01323               {
01324        if (CG(short_tags)) {
01325               zendlval->value.str.val = yytext; /* no copying - intentional */
01326               zendlval->value.str.len = yyleng;
01327               zendlval->type = IS_STRING;
01328               BEGIN(ST_IN_SCRIPTING);
01329               return T_OPEN_TAG_WITH_ECHO;
01330        } else {
01331               goto inline_char_handler;
01332        }
01333 }
01334 #line 1335 "Zend/zend_language_scanner.c"
01335 yy47:
01336               YYDEBUG(47, *YYCURSOR);
01337               yych = *++YYCURSOR;
01338               if (yych == 'H') goto yy48;
01339               if (yych != 'h') goto yy10;
01340 yy48:
01341               YYDEBUG(48, *YYCURSOR);
01342               yych = *++YYCURSOR;
01343               if (yych == 'P') goto yy49;
01344               if (yych != 'p') goto yy10;
01345 yy49:
01346               YYDEBUG(49, *YYCURSOR);
01347               yych = *++YYCURSOR;
01348               if (yych <= '\f') {
01349                      if (yych <= 0x08) goto yy10;
01350                      if (yych >= '\v') goto yy10;
01351               } else {
01352                      if (yych <= '\r') goto yy52;
01353                      if (yych != ' ') goto yy10;
01354               }
01355 yy50:
01356               YYDEBUG(50, *YYCURSOR);
01357               ++YYCURSOR;
01358 yy51:
01359               YYDEBUG(51, *YYCURSOR);
01360               yyleng = YYCURSOR - SCNG(yy_text);
01361 #line 1564 "Zend/zend_language_scanner.l"
01362               {
01363        zendlval->value.str.val = yytext; /* no copying - intentional */
01364        zendlval->value.str.len = yyleng;
01365        zendlval->type = IS_STRING;
01366        HANDLE_NEWLINE(yytext[yyleng-1]);
01367        BEGIN(ST_IN_SCRIPTING);
01368        return T_OPEN_TAG;
01369 }
01370 #line 1371 "Zend/zend_language_scanner.c"
01371 yy52:
01372               YYDEBUG(52, *YYCURSOR);
01373               ++YYCURSOR;
01374               if ((yych = *YYCURSOR) == '\n') goto yy50;
01375               goto yy51;
01376        }
01377 /* *********************************** */
01378 yyc_ST_BACKQUOTE:
01379        {
01380               static const unsigned char yybm[] = {
01381                        0,   0,   0,   0,   0,   0,   0,   0, 
01382                        0,   0,   0,   0,   0,   0,   0,   0, 
01383                        0,   0,   0,   0,   0,   0,   0,   0, 
01384                        0,   0,   0,   0,   0,   0,   0,   0, 
01385                        0,   0,   0,   0,   0,   0,   0,   0, 
01386                        0,   0,   0,   0,   0,   0,   0,   0, 
01387                      128, 128, 128, 128, 128, 128, 128, 128, 
01388                      128, 128,   0,   0,   0,   0,   0,   0, 
01389                        0, 128, 128, 128, 128, 128, 128, 128, 
01390                      128, 128, 128, 128, 128, 128, 128, 128, 
01391                      128, 128, 128, 128, 128, 128, 128, 128, 
01392                      128, 128, 128,   0,   0,   0,   0, 128, 
01393                        0, 128, 128, 128, 128, 128, 128, 128, 
01394                      128, 128, 128, 128, 128, 128, 128, 128, 
01395                      128, 128, 128, 128, 128, 128, 128, 128, 
01396                      128, 128, 128,   0,   0,   0,   0, 128, 
01397                      128, 128, 128, 128, 128, 128, 128, 128, 
01398                      128, 128, 128, 128, 128, 128, 128, 128, 
01399                      128, 128, 128, 128, 128, 128, 128, 128, 
01400                      128, 128, 128, 128, 128, 128, 128, 128, 
01401                      128, 128, 128, 128, 128, 128, 128, 128, 
01402                      128, 128, 128, 128, 128, 128, 128, 128, 
01403                      128, 128, 128, 128, 128, 128, 128, 128, 
01404                      128, 128, 128, 128, 128, 128, 128, 128, 
01405                      128, 128, 128, 128, 128, 128, 128, 128, 
01406                      128, 128, 128, 128, 128, 128, 128, 128, 
01407                      128, 128, 128, 128, 128, 128, 128, 128, 
01408                      128, 128, 128, 128, 128, 128, 128, 128, 
01409                      128, 128, 128, 128, 128, 128, 128, 128, 
01410                      128, 128, 128, 128, 128, 128, 128, 128, 
01411                      128, 128, 128, 128, 128, 128, 128, 128, 
01412                      128, 128, 128, 128, 128, 128, 128, 128, 
01413               };
01414               YYDEBUG(53, *YYCURSOR);
01415               YYFILL(2);
01416               yych = *YYCURSOR;
01417               if (yych <= '_') {
01418                      if (yych != '$') goto yy60;
01419               } else {
01420                      if (yych <= '`') goto yy58;
01421                      if (yych == '{') goto yy57;
01422                      goto yy60;
01423               }
01424               YYDEBUG(55, *YYCURSOR);
01425               ++YYCURSOR;
01426               if ((yych = *YYCURSOR) <= '_') {
01427                      if (yych <= '@') goto yy56;
01428                      if (yych <= 'Z') goto yy63;
01429                      if (yych >= '_') goto yy63;
01430               } else {
01431                      if (yych <= 'z') {
01432                             if (yych >= 'a') goto yy63;
01433                      } else {
01434                             if (yych <= '{') goto yy66;
01435                             if (yych >= 0x7F) goto yy63;
01436                      }
01437               }
01438 yy56:
01439               YYDEBUG(56, *YYCURSOR);
01440               yyleng = YYCURSOR - SCNG(yy_text);
01441 #line 2044 "Zend/zend_language_scanner.l"
01442               {
01443        if (YYCURSOR > YYLIMIT) {
01444               return 0;
01445        }
01446        if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
01447               YYCURSOR++;
01448        }
01449 
01450        while (YYCURSOR < YYLIMIT) {
01451               switch (*YYCURSOR++) {
01452                      case '`':
01453                             break;
01454                      case '$':
01455                             if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
01456                                    break;
01457                             }
01458                             continue;
01459                      case '{':
01460                             if (*YYCURSOR == '$') {
01461                                    break;
01462                             }
01463                             continue;
01464                      case '\\':
01465                             if (YYCURSOR < YYLIMIT) {
01466                                    YYCURSOR++;
01467                             }
01468                             /* fall through */
01469                      default:
01470                             continue;
01471               }
01472 
01473               YYCURSOR--;
01474               break;
01475        }
01476 
01477        yyleng = YYCURSOR - SCNG(yy_text);
01478 
01479        zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
01480        return T_ENCAPSED_AND_WHITESPACE;
01481 }
01482 #line 1483 "Zend/zend_language_scanner.c"
01483 yy57:
01484               YYDEBUG(57, *YYCURSOR);
01485               yych = *++YYCURSOR;
01486               if (yych == '$') goto yy61;
01487               goto yy56;
01488 yy58:
01489               YYDEBUG(58, *YYCURSOR);
01490               ++YYCURSOR;
01491               YYDEBUG(59, *YYCURSOR);
01492               yyleng = YYCURSOR - SCNG(yy_text);
01493 #line 1988 "Zend/zend_language_scanner.l"
01494               {
01495        BEGIN(ST_IN_SCRIPTING);
01496        return '`';
01497 }
01498 #line 1499 "Zend/zend_language_scanner.c"
01499 yy60:
01500               YYDEBUG(60, *YYCURSOR);
01501               yych = *++YYCURSOR;
01502               goto yy56;
01503 yy61:
01504               YYDEBUG(61, *YYCURSOR);
01505               ++YYCURSOR;
01506               YYDEBUG(62, *YYCURSOR);
01507               yyleng = YYCURSOR - SCNG(yy_text);
01508 #line 1975 "Zend/zend_language_scanner.l"
01509               {
01510        zendlval->value.lval = (long) '{';
01511        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
01512        yyless(1);
01513        return T_CURLY_OPEN;
01514 }
01515 #line 1516 "Zend/zend_language_scanner.c"
01516 yy63:
01517               YYDEBUG(63, *YYCURSOR);
01518               yyaccept = 0;
01519               YYMARKER = ++YYCURSOR;
01520               YYFILL(3);
01521               yych = *YYCURSOR;
01522               YYDEBUG(64, *YYCURSOR);
01523               if (yybm[0+yych] & 128) {
01524                      goto yy63;
01525               }
01526               if (yych == '-') goto yy68;
01527               if (yych == '[') goto yy70;
01528 yy65:
01529               YYDEBUG(65, *YYCURSOR);
01530               yyleng = YYCURSOR - SCNG(yy_text);
01531 #line 1673 "Zend/zend_language_scanner.l"
01532               {
01533        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
01534        zendlval->type = IS_STRING;
01535        return T_VARIABLE;
01536 }
01537 #line 1538 "Zend/zend_language_scanner.c"
01538 yy66:
01539               YYDEBUG(66, *YYCURSOR);
01540               ++YYCURSOR;
01541               YYDEBUG(67, *YYCURSOR);
01542               yyleng = YYCURSOR - SCNG(yy_text);
01543 #line 1300 "Zend/zend_language_scanner.l"
01544               {
01545        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
01546        return T_DOLLAR_OPEN_CURLY_BRACES;
01547 }
01548 #line 1549 "Zend/zend_language_scanner.c"
01549 yy68:
01550               YYDEBUG(68, *YYCURSOR);
01551               yych = *++YYCURSOR;
01552               if (yych == '>') goto yy72;
01553 yy69:
01554               YYDEBUG(69, *YYCURSOR);
01555               YYCURSOR = YYMARKER;
01556               goto yy65;
01557 yy70:
01558               YYDEBUG(70, *YYCURSOR);
01559               ++YYCURSOR;
01560               YYDEBUG(71, *YYCURSOR);
01561               yyleng = YYCURSOR - SCNG(yy_text);
01562 #line 1665 "Zend/zend_language_scanner.l"
01563               {
01564        yyless(yyleng - 1);
01565        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
01566        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
01567        zendlval->type = IS_STRING;
01568        return T_VARIABLE;
01569 }
01570 #line 1571 "Zend/zend_language_scanner.c"
01571 yy72:
01572               YYDEBUG(72, *YYCURSOR);
01573               yych = *++YYCURSOR;
01574               if (yych <= '_') {
01575                      if (yych <= '@') goto yy69;
01576                      if (yych <= 'Z') goto yy73;
01577                      if (yych <= '^') goto yy69;
01578               } else {
01579                      if (yych <= '`') goto yy69;
01580                      if (yych <= 'z') goto yy73;
01581                      if (yych <= '~') goto yy69;
01582               }
01583 yy73:
01584               YYDEBUG(73, *YYCURSOR);
01585               ++YYCURSOR;
01586               YYDEBUG(74, *YYCURSOR);
01587               yyleng = YYCURSOR - SCNG(yy_text);
01588 #line 1655 "Zend/zend_language_scanner.l"
01589               {
01590        yyless(yyleng - 3);
01591        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
01592        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
01593        zendlval->type = IS_STRING;
01594        return T_VARIABLE;
01595 }
01596 #line 1597 "Zend/zend_language_scanner.c"
01597        }
01598 /* *********************************** */
01599 yyc_ST_DOUBLE_QUOTES:
01600        {
01601               static const unsigned char yybm[] = {
01602                        0,   0,   0,   0,   0,   0,   0,   0, 
01603                        0,   0,   0,   0,   0,   0,   0,   0, 
01604                        0,   0,   0,   0,   0,   0,   0,   0, 
01605                        0,   0,   0,   0,   0,   0,   0,   0, 
01606                        0,   0,   0,   0,   0,   0,   0,   0, 
01607                        0,   0,   0,   0,   0,   0,   0,   0, 
01608                      128, 128, 128, 128, 128, 128, 128, 128, 
01609                      128, 128,   0,   0,   0,   0,   0,   0, 
01610                        0, 128, 128, 128, 128, 128, 128, 128, 
01611                      128, 128, 128, 128, 128, 128, 128, 128, 
01612                      128, 128, 128, 128, 128, 128, 128, 128, 
01613                      128, 128, 128,   0,   0,   0,   0, 128, 
01614                        0, 128, 128, 128, 128, 128, 128, 128, 
01615                      128, 128, 128, 128, 128, 128, 128, 128, 
01616                      128, 128, 128, 128, 128, 128, 128, 128, 
01617                      128, 128, 128,   0,   0,   0,   0, 128, 
01618                      128, 128, 128, 128, 128, 128, 128, 128, 
01619                      128, 128, 128, 128, 128, 128, 128, 128, 
01620                      128, 128, 128, 128, 128, 128, 128, 128, 
01621                      128, 128, 128, 128, 128, 128, 128, 128, 
01622                      128, 128, 128, 128, 128, 128, 128, 128, 
01623                      128, 128, 128, 128, 128, 128, 128, 128, 
01624                      128, 128, 128, 128, 128, 128, 128, 128, 
01625                      128, 128, 128, 128, 128, 128, 128, 128, 
01626                      128, 128, 128, 128, 128, 128, 128, 128, 
01627                      128, 128, 128, 128, 128, 128, 128, 128, 
01628                      128, 128, 128, 128, 128, 128, 128, 128, 
01629                      128, 128, 128, 128, 128, 128, 128, 128, 
01630                      128, 128, 128, 128, 128, 128, 128, 128, 
01631                      128, 128, 128, 128, 128, 128, 128, 128, 
01632                      128, 128, 128, 128, 128, 128, 128, 128, 
01633                      128, 128, 128, 128, 128, 128, 128, 128, 
01634               };
01635               YYDEBUG(75, *YYCURSOR);
01636               YYFILL(2);
01637               yych = *YYCURSOR;
01638               if (yych <= '#') {
01639                      if (yych == '"') goto yy80;
01640                      goto yy82;
01641               } else {
01642                      if (yych <= '$') goto yy77;
01643                      if (yych == '{') goto yy79;
01644                      goto yy82;
01645               }
01646 yy77:
01647               YYDEBUG(77, *YYCURSOR);
01648               ++YYCURSOR;
01649               if ((yych = *YYCURSOR) <= '_') {
01650                      if (yych <= '@') goto yy78;
01651                      if (yych <= 'Z') goto yy85;
01652                      if (yych >= '_') goto yy85;
01653               } else {
01654                      if (yych <= 'z') {
01655                             if (yych >= 'a') goto yy85;
01656                      } else {
01657                             if (yych <= '{') goto yy88;
01658                             if (yych >= 0x7F) goto yy85;
01659                      }
01660               }
01661 yy78:
01662               YYDEBUG(78, *YYCURSOR);
01663               yyleng = YYCURSOR - SCNG(yy_text);
01664 #line 1994 "Zend/zend_language_scanner.l"
01665               {
01666        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
01667               YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
01668               SET_DOUBLE_QUOTES_SCANNED_LENGTH(0);
01669 
01670               goto double_quotes_scan_done;
01671        }
01672 
01673        if (YYCURSOR > YYLIMIT) {
01674               return 0;
01675        }
01676        if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) {
01677               YYCURSOR++;
01678        }
01679 
01680        while (YYCURSOR < YYLIMIT) {
01681               switch (*YYCURSOR++) {
01682                      case '"':
01683                             break;
01684                      case '$':
01685                             if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
01686                                    break;
01687                             }
01688                             continue;
01689                      case '{':
01690                             if (*YYCURSOR == '$') {
01691                                    break;
01692                             }
01693                             continue;
01694                      case '\\':
01695                             if (YYCURSOR < YYLIMIT) {
01696                                    YYCURSOR++;
01697                             }
01698                             /* fall through */
01699                      default:
01700                             continue;
01701               }
01702 
01703               YYCURSOR--;
01704               break;
01705        }
01706 
01707 double_quotes_scan_done:
01708        yyleng = YYCURSOR - SCNG(yy_text);
01709 
01710        zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
01711        return T_ENCAPSED_AND_WHITESPACE;
01712 }
01713 #line 1714 "Zend/zend_language_scanner.c"
01714 yy79:
01715               YYDEBUG(79, *YYCURSOR);
01716               yych = *++YYCURSOR;
01717               if (yych == '$') goto yy83;
01718               goto yy78;
01719 yy80:
01720               YYDEBUG(80, *YYCURSOR);
01721               ++YYCURSOR;
01722               YYDEBUG(81, *YYCURSOR);
01723               yyleng = YYCURSOR - SCNG(yy_text);
01724 #line 1983 "Zend/zend_language_scanner.l"
01725               {
01726        BEGIN(ST_IN_SCRIPTING);
01727        return '"';
01728 }
01729 #line 1730 "Zend/zend_language_scanner.c"
01730 yy82:
01731               YYDEBUG(82, *YYCURSOR);
01732               yych = *++YYCURSOR;
01733               goto yy78;
01734 yy83:
01735               YYDEBUG(83, *YYCURSOR);
01736               ++YYCURSOR;
01737               YYDEBUG(84, *YYCURSOR);
01738               yyleng = YYCURSOR - SCNG(yy_text);
01739 #line 1975 "Zend/zend_language_scanner.l"
01740               {
01741        zendlval->value.lval = (long) '{';
01742        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
01743        yyless(1);
01744        return T_CURLY_OPEN;
01745 }
01746 #line 1747 "Zend/zend_language_scanner.c"
01747 yy85:
01748               YYDEBUG(85, *YYCURSOR);
01749               yyaccept = 0;
01750               YYMARKER = ++YYCURSOR;
01751               YYFILL(3);
01752               yych = *YYCURSOR;
01753               YYDEBUG(86, *YYCURSOR);
01754               if (yybm[0+yych] & 128) {
01755                      goto yy85;
01756               }
01757               if (yych == '-') goto yy90;
01758               if (yych == '[') goto yy92;
01759 yy87:
01760               YYDEBUG(87, *YYCURSOR);
01761               yyleng = YYCURSOR - SCNG(yy_text);
01762 #line 1673 "Zend/zend_language_scanner.l"
01763               {
01764        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
01765        zendlval->type = IS_STRING;
01766        return T_VARIABLE;
01767 }
01768 #line 1769 "Zend/zend_language_scanner.c"
01769 yy88:
01770               YYDEBUG(88, *YYCURSOR);
01771               ++YYCURSOR;
01772               YYDEBUG(89, *YYCURSOR);
01773               yyleng = YYCURSOR - SCNG(yy_text);
01774 #line 1300 "Zend/zend_language_scanner.l"
01775               {
01776        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
01777        return T_DOLLAR_OPEN_CURLY_BRACES;
01778 }
01779 #line 1780 "Zend/zend_language_scanner.c"
01780 yy90:
01781               YYDEBUG(90, *YYCURSOR);
01782               yych = *++YYCURSOR;
01783               if (yych == '>') goto yy94;
01784 yy91:
01785               YYDEBUG(91, *YYCURSOR);
01786               YYCURSOR = YYMARKER;
01787               goto yy87;
01788 yy92:
01789               YYDEBUG(92, *YYCURSOR);
01790               ++YYCURSOR;
01791               YYDEBUG(93, *YYCURSOR);
01792               yyleng = YYCURSOR - SCNG(yy_text);
01793 #line 1665 "Zend/zend_language_scanner.l"
01794               {
01795        yyless(yyleng - 1);
01796        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
01797        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
01798        zendlval->type = IS_STRING;
01799        return T_VARIABLE;
01800 }
01801 #line 1802 "Zend/zend_language_scanner.c"
01802 yy94:
01803               YYDEBUG(94, *YYCURSOR);
01804               yych = *++YYCURSOR;
01805               if (yych <= '_') {
01806                      if (yych <= '@') goto yy91;
01807                      if (yych <= 'Z') goto yy95;
01808                      if (yych <= '^') goto yy91;
01809               } else {
01810                      if (yych <= '`') goto yy91;
01811                      if (yych <= 'z') goto yy95;
01812                      if (yych <= '~') goto yy91;
01813               }
01814 yy95:
01815               YYDEBUG(95, *YYCURSOR);
01816               ++YYCURSOR;
01817               YYDEBUG(96, *YYCURSOR);
01818               yyleng = YYCURSOR - SCNG(yy_text);
01819 #line 1655 "Zend/zend_language_scanner.l"
01820               {
01821        yyless(yyleng - 3);
01822        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
01823        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
01824        zendlval->type = IS_STRING;
01825        return T_VARIABLE;
01826 }
01827 #line 1828 "Zend/zend_language_scanner.c"
01828        }
01829 /* *********************************** */
01830 yyc_ST_END_HEREDOC:
01831        YYDEBUG(97, *YYCURSOR);
01832        YYFILL(1);
01833        yych = *YYCURSOR;
01834        YYDEBUG(99, *YYCURSOR);
01835        ++YYCURSOR;
01836        YYDEBUG(100, *YYCURSOR);
01837        yyleng = YYCURSOR - SCNG(yy_text);
01838 #line 1962 "Zend/zend_language_scanner.l"
01839        {
01840        YYCURSOR += CG(heredoc_len) - 1;
01841        yyleng = CG(heredoc_len);
01842 
01843        Z_STRVAL_P(zendlval) = CG(heredoc);
01844        Z_STRLEN_P(zendlval) = CG(heredoc_len);
01845        CG(heredoc) = NULL;
01846        CG(heredoc_len) = 0;
01847        BEGIN(ST_IN_SCRIPTING);
01848        return T_END_HEREDOC;
01849 }
01850 #line 1851 "Zend/zend_language_scanner.c"
01851 /* *********************************** */
01852 yyc_ST_HEREDOC:
01853        {
01854               static const unsigned char yybm[] = {
01855                        0,   0,   0,   0,   0,   0,   0,   0, 
01856                        0,   0,   0,   0,   0,   0,   0,   0, 
01857                        0,   0,   0,   0,   0,   0,   0,   0, 
01858                        0,   0,   0,   0,   0,   0,   0,   0, 
01859                        0,   0,   0,   0,   0,   0,   0,   0, 
01860                        0,   0,   0,   0,   0,   0,   0,   0, 
01861                      128, 128, 128, 128, 128, 128, 128, 128, 
01862                      128, 128,   0,   0,   0,   0,   0,   0, 
01863                        0, 128, 128, 128, 128, 128, 128, 128, 
01864                      128, 128, 128, 128, 128, 128, 128, 128, 
01865                      128, 128, 128, 128, 128, 128, 128, 128, 
01866                      128, 128, 128,   0,   0,   0,   0, 128, 
01867                        0, 128, 128, 128, 128, 128, 128, 128, 
01868                      128, 128, 128, 128, 128, 128, 128, 128, 
01869                      128, 128, 128, 128, 128, 128, 128, 128, 
01870                      128, 128, 128,   0,   0,   0,   0, 128, 
01871                      128, 128, 128, 128, 128, 128, 128, 128, 
01872                      128, 128, 128, 128, 128, 128, 128, 128, 
01873                      128, 128, 128, 128, 128, 128, 128, 128, 
01874                      128, 128, 128, 128, 128, 128, 128, 128, 
01875                      128, 128, 128, 128, 128, 128, 128, 128, 
01876                      128, 128, 128, 128, 128, 128, 128, 128, 
01877                      128, 128, 128, 128, 128, 128, 128, 128, 
01878                      128, 128, 128, 128, 128, 128, 128, 128, 
01879                      128, 128, 128, 128, 128, 128, 128, 128, 
01880                      128, 128, 128, 128, 128, 128, 128, 128, 
01881                      128, 128, 128, 128, 128, 128, 128, 128, 
01882                      128, 128, 128, 128, 128, 128, 128, 128, 
01883                      128, 128, 128, 128, 128, 128, 128, 128, 
01884                      128, 128, 128, 128, 128, 128, 128, 128, 
01885                      128, 128, 128, 128, 128, 128, 128, 128, 
01886                      128, 128, 128, 128, 128, 128, 128, 128, 
01887               };
01888               YYDEBUG(101, *YYCURSOR);
01889               YYFILL(2);
01890               yych = *YYCURSOR;
01891               if (yych == '$') goto yy103;
01892               if (yych == '{') goto yy105;
01893               goto yy106;
01894 yy103:
01895               YYDEBUG(103, *YYCURSOR);
01896               ++YYCURSOR;
01897               if ((yych = *YYCURSOR) <= '_') {
01898                      if (yych <= '@') goto yy104;
01899                      if (yych <= 'Z') goto yy109;
01900                      if (yych >= '_') goto yy109;
01901               } else {
01902                      if (yych <= 'z') {
01903                             if (yych >= 'a') goto yy109;
01904                      } else {
01905                             if (yych <= '{') goto yy112;
01906                             if (yych >= 0x7F) goto yy109;
01907                      }
01908               }
01909 yy104:
01910               YYDEBUG(104, *YYCURSOR);
01911               yyleng = YYCURSOR - SCNG(yy_text);
01912 #line 2086 "Zend/zend_language_scanner.l"
01913               {
01914        int newline = 0;
01915 
01916        if (YYCURSOR > YYLIMIT) {
01917               return 0;
01918        }
01919 
01920        YYCURSOR--;
01921 
01922        while (YYCURSOR < YYLIMIT) {
01923               switch (*YYCURSOR++) {
01924                      case '\r':
01925                             if (*YYCURSOR == '\n') {
01926                                    YYCURSOR++;
01927                             }
01928                             /* fall through */
01929                      case '\n':
01930                             /* Check for ending label on the next line */
01931                             if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) {
01932                                    YYCTYPE *end = YYCURSOR + CG(heredoc_len);
01933 
01934                                    if (*end == ';') {
01935                                           end++;
01936                                    }
01937 
01938                                    if (*end == '\n' || *end == '\r') {
01939                                           /* newline before label will be subtracted from returned text, but
01940                                            * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
01941                                           if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') {
01942                                                  newline = 2; /* Windows newline */
01943                                           } else {
01944                                                  newline = 1;
01945                                           }
01946 
01947                                           CG(increment_lineno) = 1; /* For newline before label */
01948                                           BEGIN(ST_END_HEREDOC);
01949 
01950                                           goto heredoc_scan_done;
01951                                    }
01952                             }
01953                             continue;
01954                      case '$':
01955                             if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
01956                                    break;
01957                             }
01958                             continue;
01959                      case '{':
01960                             if (*YYCURSOR == '$') {
01961                                    break;
01962                             }
01963                             continue;
01964                      case '\\':
01965                             if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') {
01966                                    YYCURSOR++;
01967                             }
01968                             /* fall through */
01969                      default:
01970                             continue;
01971               }
01972 
01973               YYCURSOR--;
01974               break;
01975        }
01976 
01977 heredoc_scan_done:
01978        yyleng = YYCURSOR - SCNG(yy_text);
01979 
01980        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0 TSRMLS_CC);
01981        return T_ENCAPSED_AND_WHITESPACE;
01982 }
01983 #line 1984 "Zend/zend_language_scanner.c"
01984 yy105:
01985               YYDEBUG(105, *YYCURSOR);
01986               yych = *++YYCURSOR;
01987               if (yych == '$') goto yy107;
01988               goto yy104;
01989 yy106:
01990               YYDEBUG(106, *YYCURSOR);
01991               yych = *++YYCURSOR;
01992               goto yy104;
01993 yy107:
01994               YYDEBUG(107, *YYCURSOR);
01995               ++YYCURSOR;
01996               YYDEBUG(108, *YYCURSOR);
01997               yyleng = YYCURSOR - SCNG(yy_text);
01998 #line 1975 "Zend/zend_language_scanner.l"
01999               {
02000        zendlval->value.lval = (long) '{';
02001        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
02002        yyless(1);
02003        return T_CURLY_OPEN;
02004 }
02005 #line 2006 "Zend/zend_language_scanner.c"
02006 yy109:
02007               YYDEBUG(109, *YYCURSOR);
02008               yyaccept = 0;
02009               YYMARKER = ++YYCURSOR;
02010               YYFILL(3);
02011               yych = *YYCURSOR;
02012               YYDEBUG(110, *YYCURSOR);
02013               if (yybm[0+yych] & 128) {
02014                      goto yy109;
02015               }
02016               if (yych == '-') goto yy114;
02017               if (yych == '[') goto yy116;
02018 yy111:
02019               YYDEBUG(111, *YYCURSOR);
02020               yyleng = YYCURSOR - SCNG(yy_text);
02021 #line 1673 "Zend/zend_language_scanner.l"
02022               {
02023        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
02024        zendlval->type = IS_STRING;
02025        return T_VARIABLE;
02026 }
02027 #line 2028 "Zend/zend_language_scanner.c"
02028 yy112:
02029               YYDEBUG(112, *YYCURSOR);
02030               ++YYCURSOR;
02031               YYDEBUG(113, *YYCURSOR);
02032               yyleng = YYCURSOR - SCNG(yy_text);
02033 #line 1300 "Zend/zend_language_scanner.l"
02034               {
02035        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
02036        return T_DOLLAR_OPEN_CURLY_BRACES;
02037 }
02038 #line 2039 "Zend/zend_language_scanner.c"
02039 yy114:
02040               YYDEBUG(114, *YYCURSOR);
02041               yych = *++YYCURSOR;
02042               if (yych == '>') goto yy118;
02043 yy115:
02044               YYDEBUG(115, *YYCURSOR);
02045               YYCURSOR = YYMARKER;
02046               goto yy111;
02047 yy116:
02048               YYDEBUG(116, *YYCURSOR);
02049               ++YYCURSOR;
02050               YYDEBUG(117, *YYCURSOR);
02051               yyleng = YYCURSOR - SCNG(yy_text);
02052 #line 1665 "Zend/zend_language_scanner.l"
02053               {
02054        yyless(yyleng - 1);
02055        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
02056        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
02057        zendlval->type = IS_STRING;
02058        return T_VARIABLE;
02059 }
02060 #line 2061 "Zend/zend_language_scanner.c"
02061 yy118:
02062               YYDEBUG(118, *YYCURSOR);
02063               yych = *++YYCURSOR;
02064               if (yych <= '_') {
02065                      if (yych <= '@') goto yy115;
02066                      if (yych <= 'Z') goto yy119;
02067                      if (yych <= '^') goto yy115;
02068               } else {
02069                      if (yych <= '`') goto yy115;
02070                      if (yych <= 'z') goto yy119;
02071                      if (yych <= '~') goto yy115;
02072               }
02073 yy119:
02074               YYDEBUG(119, *YYCURSOR);
02075               ++YYCURSOR;
02076               YYDEBUG(120, *YYCURSOR);
02077               yyleng = YYCURSOR - SCNG(yy_text);
02078 #line 1655 "Zend/zend_language_scanner.l"
02079               {
02080        yyless(yyleng - 3);
02081        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
02082        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
02083        zendlval->type = IS_STRING;
02084        return T_VARIABLE;
02085 }
02086 #line 2087 "Zend/zend_language_scanner.c"
02087        }
02088 /* *********************************** */
02089 yyc_ST_IN_SCRIPTING:
02090        {
02091               static const unsigned char yybm[] = {
02092                        0,   0,   0,   0,   0,   0,   0,   0, 
02093                        0, 192,  64,   0,   0,  64,   0,   0, 
02094                        0,   0,   0,   0,   0,   0,   0,   0, 
02095                        0,   0,   0,   0,   0,   0,   0,   0, 
02096                      192,   0,   0,   0,   0,   0,   0,   0, 
02097                        0,   0,   0,   0,   0,   0,   0,   0, 
02098                       56,  56,  56,  56,  56,  56,  56,  56, 
02099                       56,  56,   0,   0,   0,   0,   0,   0, 
02100                        0,  40,  40,  40,  40,  40,  40,   8, 
02101                        8,   8,   8,   8,   8,   8,   8,   8, 
02102                        8,   8,   8,   8,   8,   8,   8,   8, 
02103                        8,   8,   8,   0,   0,   0,   0,   8, 
02104                        0,  40,  40,  40,  40,  40,  40,   8, 
02105                        8,   8,   8,   8,   8,   8,   8,   8, 
02106                        8,   8,   8,   8,   8,   8,   8,   8, 
02107                        8,   8,   8,   0,   0,   0,   0,   8, 
02108                        8,   8,   8,   8,   8,   8,   8,   8, 
02109                        8,   8,   8,   8,   8,   8,   8,   8, 
02110                        8,   8,   8,   8,   8,   8,   8,   8, 
02111                        8,   8,   8,   8,   8,   8,   8,   8, 
02112                        8,   8,   8,   8,   8,   8,   8,   8, 
02113                        8,   8,   8,   8,   8,   8,   8,   8, 
02114                        8,   8,   8,   8,   8,   8,   8,   8, 
02115                        8,   8,   8,   8,   8,   8,   8,   8, 
02116                        8,   8,   8,   8,   8,   8,   8,   8, 
02117                        8,   8,   8,   8,   8,   8,   8,   8, 
02118                        8,   8,   8,   8,   8,   8,   8,   8, 
02119                        8,   8,   8,   8,   8,   8,   8,   8, 
02120                        8,   8,   8,   8,   8,   8,   8,   8, 
02121                        8,   8,   8,   8,   8,   8,   8,   8, 
02122                        8,   8,   8,   8,   8,   8,   8,   8, 
02123                        8,   8,   8,   8,   8,   8,   8,   8, 
02124               };
02125               YYDEBUG(121, *YYCURSOR);
02126               YYFILL(16);
02127               yych = *YYCURSOR;
02128               YYDEBUG(-1, yych);
02129               switch (yych) {
02130               case 0x00:
02131               case 0x01:
02132               case 0x02:
02133               case 0x03:
02134               case 0x04:
02135               case 0x05:
02136               case 0x06:
02137               case 0x07:
02138               case 0x08:
02139               case '\v':
02140               case '\f':
02141               case 0x0E:
02142               case 0x0F:
02143               case 0x10:
02144               case 0x11:
02145               case 0x12:
02146               case 0x13:
02147               case 0x14:
02148               case 0x15:
02149               case 0x16:
02150               case 0x17:
02151               case 0x18:
02152               case 0x19:
02153               case 0x1A:
02154               case 0x1B:
02155               case 0x1C:
02156               case 0x1D:
02157               case 0x1E:
02158               case 0x1F:    goto yy183;
02159               case '\t':
02160               case '\n':
02161               case '\r':
02162               case ' ':     goto yy139;
02163               case '!':     goto yy152;
02164               case '"':     goto yy179;
02165               case '#':     goto yy175;
02166               case '$':     goto yy164;
02167               case '%':     goto yy158;
02168               case '&':     goto yy159;
02169               case '\'':    goto yy177;
02170               case '(':     goto yy146;
02171               case ')':
02172               case ',':
02173               case ';':
02174               case '@':
02175               case '[':
02176               case ']':
02177               case '~':     goto yy165;
02178               case '*':     goto yy155;
02179               case '+':     goto yy151;
02180               case '-':     goto yy137;
02181               case '.':     goto yy157;
02182               case '/':     goto yy156;
02183               case '0':     goto yy171;
02184               case '1':
02185               case '2':
02186               case '3':
02187               case '4':
02188               case '5':
02189               case '6':
02190               case '7':
02191               case '8':
02192               case '9':     goto yy173;
02193               case ':':     goto yy141;
02194               case '<':     goto yy153;
02195               case '=':     goto yy149;
02196               case '>':     goto yy154;
02197               case '?':     goto yy166;
02198               case 'A':
02199               case 'a':     goto yy132;
02200               case 'B':
02201               case 'b':     goto yy134;
02202               case 'C':
02203               case 'c':     goto yy127;
02204               case 'D':
02205               case 'd':     goto yy125;
02206               case 'E':
02207               case 'e':     goto yy123;
02208               case 'F':
02209               case 'f':     goto yy126;
02210               case 'G':
02211               case 'g':     goto yy135;
02212               case 'I':
02213               case 'i':     goto yy130;
02214               case 'L':
02215               case 'l':     goto yy150;
02216               case 'N':
02217               case 'n':     goto yy144;
02218               case 'O':
02219               case 'o':     goto yy162;
02220               case 'P':
02221               case 'p':     goto yy136;
02222               case 'R':
02223               case 'r':     goto yy128;
02224               case 'S':
02225               case 's':     goto yy133;
02226               case 'T':
02227               case 't':     goto yy129;
02228               case 'U':
02229               case 'u':     goto yy147;
02230               case 'V':
02231               case 'v':     goto yy145;
02232               case 'W':
02233               case 'w':     goto yy131;
02234               case 'X':
02235               case 'x':     goto yy163;
02236               case '\\':    goto yy142;
02237               case '^':     goto yy161;
02238               case '_':     goto yy148;
02239               case '`':     goto yy181;
02240               case '{':     goto yy167;
02241               case '|':     goto yy160;
02242               case '}':     goto yy169;
02243               default:      goto yy174;
02244               }
02245 yy123:
02246               YYDEBUG(123, *YYCURSOR);
02247               ++YYCURSOR;
02248               YYDEBUG(-1, yych);
02249               switch ((yych = *YYCURSOR)) {
02250               case 'C':
02251               case 'c':     goto yy701;
02252               case 'L':
02253               case 'l':     goto yy702;
02254               case 'M':
02255               case 'm':     goto yy703;
02256               case 'N':
02257               case 'n':     goto yy704;
02258               case 'V':
02259               case 'v':     goto yy705;
02260               case 'X':
02261               case 'x':     goto yy706;
02262               default:      goto yy186;
02263               }
02264 yy124:
02265               YYDEBUG(124, *YYCURSOR);
02266               yyleng = YYCURSOR - SCNG(yy_text);
02267 #line 1696 "Zend/zend_language_scanner.l"
02268               {
02269        zend_copy_value(zendlval, yytext, yyleng);
02270        zendlval->type = IS_STRING;
02271        return T_STRING;
02272 }
02273 #line 2274 "Zend/zend_language_scanner.c"
02274 yy125:
02275               YYDEBUG(125, *YYCURSOR);
02276               yych = *++YYCURSOR;
02277               if (yych <= 'O') {
02278                      if (yych <= 'H') {
02279                             if (yych == 'E') goto yy683;
02280                             goto yy186;
02281                      } else {
02282                             if (yych <= 'I') goto yy684;
02283                             if (yych <= 'N') goto yy186;
02284                             goto yy685;
02285                      }
02286               } else {
02287                      if (yych <= 'h') {
02288                             if (yych == 'e') goto yy683;
02289                             goto yy186;
02290                      } else {
02291                             if (yych <= 'i') goto yy684;
02292                             if (yych == 'o') goto yy685;
02293                             goto yy186;
02294                      }
02295               }
02296 yy126:
02297               YYDEBUG(126, *YYCURSOR);
02298               yych = *++YYCURSOR;
02299               if (yych <= 'U') {
02300                      if (yych <= 'N') {
02301                             if (yych == 'I') goto yy662;
02302                             goto yy186;
02303                      } else {
02304                             if (yych <= 'O') goto yy663;
02305                             if (yych <= 'T') goto yy186;
02306                             goto yy664;
02307                      }
02308               } else {
02309                      if (yych <= 'n') {
02310                             if (yych == 'i') goto yy662;
02311                             goto yy186;
02312                      } else {
02313                             if (yych <= 'o') goto yy663;
02314                             if (yych == 'u') goto yy664;
02315                             goto yy186;
02316                      }
02317               }
02318 yy127:
02319               YYDEBUG(127, *YYCURSOR);
02320               yych = *++YYCURSOR;
02321               if (yych <= 'O') {
02322                      if (yych <= 'K') {
02323                             if (yych == 'A') goto yy634;
02324                             goto yy186;
02325                      } else {
02326                             if (yych <= 'L') goto yy635;
02327                             if (yych <= 'N') goto yy186;
02328                             goto yy636;
02329                      }
02330               } else {
02331                      if (yych <= 'k') {
02332                             if (yych == 'a') goto yy634;
02333                             goto yy186;
02334                      } else {
02335                             if (yych <= 'l') goto yy635;
02336                             if (yych == 'o') goto yy636;
02337                             goto yy186;
02338                      }
02339               }
02340 yy128:
02341               YYDEBUG(128, *YYCURSOR);
02342               yych = *++YYCURSOR;
02343               if (yych == 'E') goto yy616;
02344               if (yych == 'e') goto yy616;
02345               goto yy186;
02346 yy129:
02347               YYDEBUG(129, *YYCURSOR);
02348               yych = *++YYCURSOR;
02349               if (yych <= 'R') {
02350                      if (yych == 'H') goto yy608;
02351                      if (yych <= 'Q') goto yy186;
02352                      goto yy609;
02353               } else {
02354                      if (yych <= 'h') {
02355                             if (yych <= 'g') goto yy186;
02356                             goto yy608;
02357                      } else {
02358                             if (yych == 'r') goto yy609;
02359                             goto yy186;
02360                      }
02361               }
02362 yy130:
02363               YYDEBUG(130, *YYCURSOR);
02364               yych = *++YYCURSOR;
02365               if (yych <= 'S') {
02366                      if (yych <= 'L') {
02367                             if (yych == 'F') goto yy561;
02368                             goto yy186;
02369                      } else {
02370                             if (yych <= 'M') goto yy563;
02371                             if (yych <= 'N') goto yy564;
02372                             if (yych <= 'R') goto yy186;
02373                             goto yy565;
02374                      }
02375               } else {
02376                      if (yych <= 'm') {
02377                             if (yych == 'f') goto yy561;
02378                             if (yych <= 'l') goto yy186;
02379                             goto yy563;
02380                      } else {
02381                             if (yych <= 'n') goto yy564;
02382                             if (yych == 's') goto yy565;
02383                             goto yy186;
02384                      }
02385               }
02386 yy131:
02387               YYDEBUG(131, *YYCURSOR);
02388               yych = *++YYCURSOR;
02389               if (yych == 'H') goto yy556;
02390               if (yych == 'h') goto yy556;
02391               goto yy186;
02392 yy132:
02393               YYDEBUG(132, *YYCURSOR);
02394               yych = *++YYCURSOR;
02395               if (yych <= 'S') {
02396                      if (yych <= 'M') {
02397                             if (yych == 'B') goto yy538;
02398                             goto yy186;
02399                      } else {
02400                             if (yych <= 'N') goto yy539;
02401                             if (yych <= 'Q') goto yy186;
02402                             if (yych <= 'R') goto yy540;
02403                             goto yy541;
02404                      }
02405               } else {
02406                      if (yych <= 'n') {
02407                             if (yych == 'b') goto yy538;
02408                             if (yych <= 'm') goto yy186;
02409                             goto yy539;
02410                      } else {
02411                             if (yych <= 'q') goto yy186;
02412                             if (yych <= 'r') goto yy540;
02413                             if (yych <= 's') goto yy541;
02414                             goto yy186;
02415                      }
02416               }
02417 yy133:
02418               YYDEBUG(133, *YYCURSOR);
02419               yych = *++YYCURSOR;
02420               if (yych <= 'W') {
02421                      if (yych == 'T') goto yy526;
02422                      if (yych <= 'V') goto yy186;
02423                      goto yy527;
02424               } else {
02425                      if (yych <= 't') {
02426                             if (yych <= 's') goto yy186;
02427                             goto yy526;
02428                      } else {
02429                             if (yych == 'w') goto yy527;
02430                             goto yy186;
02431                      }
02432               }
02433 yy134:
02434               YYDEBUG(134, *YYCURSOR);
02435               yyaccept = 0;
02436               yych = *(YYMARKER = ++YYCURSOR);
02437               if (yych <= ';') {
02438                      if (yych <= '"') {
02439                             if (yych <= '!') goto yy186;
02440                             goto yy518;
02441                      } else {
02442                             if (yych == '\'') goto yy519;
02443                             goto yy186;
02444                      }
02445               } else {
02446                      if (yych <= 'R') {
02447                             if (yych <= '<') goto yy517;
02448                             if (yych <= 'Q') goto yy186;
02449                             goto yy520;
02450                      } else {
02451                             if (yych == 'r') goto yy520;
02452                             goto yy186;
02453                      }
02454               }
02455 yy135:
02456               YYDEBUG(135, *YYCURSOR);
02457               yych = *++YYCURSOR;
02458               if (yych <= 'O') {
02459                      if (yych == 'L') goto yy507;
02460                      if (yych <= 'N') goto yy186;
02461                      goto yy508;
02462               } else {
02463                      if (yych <= 'l') {
02464                             if (yych <= 'k') goto yy186;
02465                             goto yy507;
02466                      } else {
02467                             if (yych == 'o') goto yy508;
02468                             goto yy186;
02469                      }
02470               }
02471 yy136:
02472               YYDEBUG(136, *YYCURSOR);
02473               yych = *++YYCURSOR;
02474               if (yych <= 'U') {
02475                      if (yych == 'R') goto yy483;
02476                      if (yych <= 'T') goto yy186;
02477                      goto yy484;
02478               } else {
02479                      if (yych <= 'r') {
02480                             if (yych <= 'q') goto yy186;
02481                             goto yy483;
02482                      } else {
02483                             if (yych == 'u') goto yy484;
02484                             goto yy186;
02485                      }
02486               }
02487 yy137:
02488               YYDEBUG(137, *YYCURSOR);
02489               ++YYCURSOR;
02490               if ((yych = *YYCURSOR) <= '<') {
02491                      if (yych == '-') goto yy479;
02492               } else {
02493                      if (yych <= '=') goto yy477;
02494                      if (yych <= '>') goto yy481;
02495               }
02496 yy138:
02497               YYDEBUG(138, *YYCURSOR);
02498               yyleng = YYCURSOR - SCNG(yy_text);
02499 #line 1289 "Zend/zend_language_scanner.l"
02500               {
02501        return yytext[0];
02502 }
02503 #line 2504 "Zend/zend_language_scanner.c"
02504 yy139:
02505               YYDEBUG(139, *YYCURSOR);
02506               ++YYCURSOR;
02507               yych = *YYCURSOR;
02508               goto yy476;
02509 yy140:
02510               YYDEBUG(140, *YYCURSOR);
02511               yyleng = YYCURSOR - SCNG(yy_text);
02512 #line 1024 "Zend/zend_language_scanner.l"
02513               {
02514        zendlval->value.str.val = yytext; /* no copying - intentional */
02515        zendlval->value.str.len = yyleng;
02516        zendlval->type = IS_STRING;
02517        HANDLE_NEWLINES(yytext, yyleng);
02518        return T_WHITESPACE;
02519 }
02520 #line 2521 "Zend/zend_language_scanner.c"
02521 yy141:
02522               YYDEBUG(141, *YYCURSOR);
02523               yych = *++YYCURSOR;
02524               if (yych == ':') goto yy473;
02525               goto yy138;
02526 yy142:
02527               YYDEBUG(142, *YYCURSOR);
02528               ++YYCURSOR;
02529               YYDEBUG(143, *YYCURSOR);
02530               yyleng = YYCURSOR - SCNG(yy_text);
02531 #line 1053 "Zend/zend_language_scanner.l"
02532               {
02533        return T_NS_SEPARATOR;
02534 }
02535 #line 2536 "Zend/zend_language_scanner.c"
02536 yy144:
02537               YYDEBUG(144, *YYCURSOR);
02538               yych = *++YYCURSOR;
02539               if (yych <= 'E') {
02540                      if (yych == 'A') goto yy461;
02541                      if (yych <= 'D') goto yy186;
02542                      goto yy462;
02543               } else {
02544                      if (yych <= 'a') {
02545                             if (yych <= '`') goto yy186;
02546                             goto yy461;
02547                      } else {
02548                             if (yych == 'e') goto yy462;
02549                             goto yy186;
02550                      }
02551               }
02552 yy145:
02553               YYDEBUG(145, *YYCURSOR);
02554               yych = *++YYCURSOR;
02555               if (yych == 'A') goto yy458;
02556               if (yych == 'a') goto yy458;
02557               goto yy186;
02558 yy146:
02559               YYDEBUG(146, *YYCURSOR);
02560               yyaccept = 1;
02561               yych = *(YYMARKER = ++YYCURSOR);
02562               if (yych <= 'S') {
02563                      if (yych <= 'D') {
02564                             if (yych <= ' ') {
02565                                    if (yych == '\t') goto yy379;
02566                                    if (yych <= 0x1F) goto yy138;
02567                                    goto yy379;
02568                             } else {
02569                                    if (yych <= '@') goto yy138;
02570                                    if (yych == 'C') goto yy138;
02571                                    goto yy379;
02572                             }
02573                      } else {
02574                             if (yych <= 'I') {
02575                                    if (yych == 'F') goto yy379;
02576                                    if (yych <= 'H') goto yy138;
02577                                    goto yy379;
02578                             } else {
02579                                    if (yych == 'O') goto yy379;
02580                                    if (yych <= 'Q') goto yy138;
02581                                    goto yy379;
02582                             }
02583                      }
02584               } else {
02585                      if (yych <= 'f') {
02586                             if (yych <= 'b') {
02587                                    if (yych == 'U') goto yy379;
02588                                    if (yych <= '`') goto yy138;
02589                                    goto yy379;
02590                             } else {
02591                                    if (yych == 'd') goto yy379;
02592                                    if (yych <= 'e') goto yy138;
02593                                    goto yy379;
02594                             }
02595                      } else {
02596                             if (yych <= 'o') {
02597                                    if (yych == 'i') goto yy379;
02598                                    if (yych <= 'n') goto yy138;
02599                                    goto yy379;
02600                             } else {
02601                                    if (yych <= 's') {
02602                                           if (yych <= 'q') goto yy138;
02603                                           goto yy379;
02604                                    } else {
02605                                           if (yych == 'u') goto yy379;
02606                                           goto yy138;
02607                                    }
02608                             }
02609                      }
02610               }
02611 yy147:
02612               YYDEBUG(147, *YYCURSOR);
02613               yych = *++YYCURSOR;
02614               if (yych <= 'S') {
02615                      if (yych == 'N') goto yy370;
02616                      if (yych <= 'R') goto yy186;
02617                      goto yy371;
02618               } else {
02619                      if (yych <= 'n') {
02620                             if (yych <= 'm') goto yy186;
02621                             goto yy370;
02622                      } else {
02623                             if (yych == 's') goto yy371;
02624                             goto yy186;
02625                      }
02626               }
02627 yy148:
02628               YYDEBUG(148, *YYCURSOR);
02629               yych = *++YYCURSOR;
02630               if (yych == '_') goto yy296;
02631               goto yy186;
02632 yy149:
02633               YYDEBUG(149, *YYCURSOR);
02634               yych = *++YYCURSOR;
02635               if (yych <= '<') goto yy138;
02636               if (yych <= '=') goto yy290;
02637               if (yych <= '>') goto yy292;
02638               goto yy138;
02639 yy150:
02640               YYDEBUG(150, *YYCURSOR);
02641               yych = *++YYCURSOR;
02642               if (yych == 'I') goto yy286;
02643               if (yych == 'i') goto yy286;
02644               goto yy186;
02645 yy151:
02646               YYDEBUG(151, *YYCURSOR);
02647               yych = *++YYCURSOR;
02648               if (yych == '+') goto yy284;
02649               if (yych == '=') goto yy282;
02650               goto yy138;
02651 yy152:
02652               YYDEBUG(152, *YYCURSOR);
02653               yych = *++YYCURSOR;
02654               if (yych == '=') goto yy279;
02655               goto yy138;
02656 yy153:
02657               YYDEBUG(153, *YYCURSOR);
02658               yyaccept = 1;
02659               yych = *(YYMARKER = ++YYCURSOR);
02660               if (yych <= ';') {
02661                      if (yych == '/') goto yy251;
02662                      goto yy138;
02663               } else {
02664                      if (yych <= '<') goto yy249;
02665                      if (yych <= '=') goto yy252;
02666                      if (yych <= '>') goto yy254;
02667                      goto yy138;
02668               }
02669 yy154:
02670               YYDEBUG(154, *YYCURSOR);
02671               yych = *++YYCURSOR;
02672               if (yych <= '<') goto yy138;
02673               if (yych <= '=') goto yy245;
02674               if (yych <= '>') goto yy243;
02675               goto yy138;
02676 yy155:
02677               YYDEBUG(155, *YYCURSOR);
02678               yych = *++YYCURSOR;
02679               if (yych == '=') goto yy241;
02680               goto yy138;
02681 yy156:
02682               YYDEBUG(156, *YYCURSOR);
02683               yych = *++YYCURSOR;
02684               if (yych <= '.') {
02685                      if (yych == '*') goto yy233;
02686                      goto yy138;
02687               } else {
02688                      if (yych <= '/') goto yy235;
02689                      if (yych == '=') goto yy236;
02690                      goto yy138;
02691               }
02692 yy157:
02693               YYDEBUG(157, *YYCURSOR);
02694               yych = *++YYCURSOR;
02695               if (yych <= '/') goto yy138;
02696               if (yych <= '9') goto yy229;
02697               if (yych == '=') goto yy231;
02698               goto yy138;
02699 yy158:
02700               YYDEBUG(158, *YYCURSOR);
02701               yych = *++YYCURSOR;
02702               if (yych <= '<') goto yy138;
02703               if (yych <= '=') goto yy225;
02704               if (yych <= '>') goto yy223;
02705               goto yy138;
02706 yy159:
02707               YYDEBUG(159, *YYCURSOR);
02708               yych = *++YYCURSOR;
02709               if (yych == '&') goto yy219;
02710               if (yych == '=') goto yy221;
02711               goto yy138;
02712 yy160:
02713               YYDEBUG(160, *YYCURSOR);
02714               yych = *++YYCURSOR;
02715               if (yych == '=') goto yy217;
02716               if (yych == '|') goto yy215;
02717               goto yy138;
02718 yy161:
02719               YYDEBUG(161, *YYCURSOR);
02720               yych = *++YYCURSOR;
02721               if (yych == '=') goto yy213;
02722               goto yy138;
02723 yy162:
02724               YYDEBUG(162, *YYCURSOR);
02725               yych = *++YYCURSOR;
02726               if (yych == 'R') goto yy211;
02727               if (yych == 'r') goto yy211;
02728               goto yy186;
02729 yy163:
02730               YYDEBUG(163, *YYCURSOR);
02731               yych = *++YYCURSOR;
02732               if (yych == 'O') goto yy208;
02733               if (yych == 'o') goto yy208;
02734               goto yy186;
02735 yy164:
02736               YYDEBUG(164, *YYCURSOR);
02737               yych = *++YYCURSOR;
02738               if (yych <= '_') {
02739                      if (yych <= '@') goto yy138;
02740                      if (yych <= 'Z') goto yy205;
02741                      if (yych <= '^') goto yy138;
02742                      goto yy205;
02743               } else {
02744                      if (yych <= '`') goto yy138;
02745                      if (yych <= 'z') goto yy205;
02746                      if (yych <= '~') goto yy138;
02747                      goto yy205;
02748               }
02749 yy165:
02750               YYDEBUG(165, *YYCURSOR);
02751               yych = *++YYCURSOR;
02752               goto yy138;
02753 yy166:
02754               YYDEBUG(166, *YYCURSOR);
02755               yych = *++YYCURSOR;
02756               if (yych == '>') goto yy201;
02757               goto yy138;
02758 yy167:
02759               YYDEBUG(167, *YYCURSOR);
02760               ++YYCURSOR;
02761               YYDEBUG(168, *YYCURSOR);
02762               yyleng = YYCURSOR - SCNG(yy_text);
02763 #line 1294 "Zend/zend_language_scanner.l"
02764               {
02765        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
02766        return '{';
02767 }
02768 #line 2769 "Zend/zend_language_scanner.c"
02769 yy169:
02770               YYDEBUG(169, *YYCURSOR);
02771               ++YYCURSOR;
02772               YYDEBUG(170, *YYCURSOR);
02773               yyleng = YYCURSOR - SCNG(yy_text);
02774 #line 1306 "Zend/zend_language_scanner.l"
02775               {
02776        RESET_DOC_COMMENT();
02777        if (!zend_stack_is_empty(&SCNG(state_stack))) {
02778               yy_pop_state(TSRMLS_C);
02779        }
02780        return '}';
02781 }
02782 #line 2783 "Zend/zend_language_scanner.c"
02783 yy171:
02784               YYDEBUG(171, *YYCURSOR);
02785               yyaccept = 2;
02786               yych = *(YYMARKER = ++YYCURSOR);
02787               if (yych <= 'E') {
02788                      if (yych <= '/') {
02789                             if (yych == '.') goto yy187;
02790                      } else {
02791                             if (yych <= '9') goto yy190;
02792                             if (yych >= 'E') goto yy192;
02793                      }
02794               } else {
02795                      if (yych <= 'd') {
02796                             if (yych == 'X') goto yy197;
02797                      } else {
02798                             if (yych <= 'e') goto yy192;
02799                             if (yych == 'x') goto yy197;
02800                      }
02801               }
02802 yy172:
02803               YYDEBUG(172, *YYCURSOR);
02804               yyleng = YYCURSOR - SCNG(yy_text);
02805 #line 1332 "Zend/zend_language_scanner.l"
02806               {
02807        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
02808               zendlval->value.lval = strtol(yytext, NULL, 0);
02809        } else {
02810               errno = 0;
02811               zendlval->value.lval = strtol(yytext, NULL, 0);
02812               if (errno == ERANGE) { /* Overflow */
02813                      if (yytext[0] == '0') { /* octal overflow */
02814                             zendlval->value.dval = zend_oct_strtod(yytext, NULL);
02815                      } else {
02816                             zendlval->value.dval = zend_strtod(yytext, NULL);
02817                      }
02818                      zendlval->type = IS_DOUBLE;
02819                      return T_DNUMBER;
02820               }
02821        }
02822 
02823        zendlval->type = IS_LONG;
02824        return T_LNUMBER;
02825 }
02826 #line 2827 "Zend/zend_language_scanner.c"
02827 yy173:
02828               YYDEBUG(173, *YYCURSOR);
02829               yyaccept = 2;
02830               yych = *(YYMARKER = ++YYCURSOR);
02831               if (yych <= '9') {
02832                      if (yych == '.') goto yy187;
02833                      if (yych <= '/') goto yy172;
02834                      goto yy190;
02835               } else {
02836                      if (yych <= 'E') {
02837                             if (yych <= 'D') goto yy172;
02838                             goto yy192;
02839                      } else {
02840                             if (yych == 'e') goto yy192;
02841                             goto yy172;
02842                      }
02843               }
02844 yy174:
02845               YYDEBUG(174, *YYCURSOR);
02846               yych = *++YYCURSOR;
02847               goto yy186;
02848 yy175:
02849               YYDEBUG(175, *YYCURSOR);
02850               ++YYCURSOR;
02851 yy176:
02852               YYDEBUG(176, *YYCURSOR);
02853               yyleng = YYCURSOR - SCNG(yy_text);
02854 #line 1703 "Zend/zend_language_scanner.l"
02855               {
02856        while (YYCURSOR < YYLIMIT) {
02857               switch (*YYCURSOR++) {
02858                      case '\r':
02859                             if (*YYCURSOR == '\n') {
02860                                    YYCURSOR++;
02861                             }
02862                             /* fall through */
02863                      case '\n':
02864                             CG(zend_lineno)++;
02865                             break;
02866                      case '%':
02867                             if (!CG(asp_tags)) {
02868                                    continue;
02869                             }
02870                             /* fall through */
02871                      case '?':
02872                             if (*YYCURSOR == '>') {
02873                                    YYCURSOR--;
02874                                    break;
02875                             }
02876                             /* fall through */
02877                      default:
02878                             continue;
02879               }
02880 
02881               break;
02882        }
02883 
02884        yyleng = YYCURSOR - SCNG(yy_text);
02885 
02886        return T_COMMENT;
02887 }
02888 #line 2889 "Zend/zend_language_scanner.c"
02889 yy177:
02890               YYDEBUG(177, *YYCURSOR);
02891               ++YYCURSOR;
02892 yy178:
02893               YYDEBUG(178, *YYCURSOR);
02894               yyleng = YYCURSOR - SCNG(yy_text);
02895 #line 1794 "Zend/zend_language_scanner.l"
02896               {
02897        register char *s, *t;
02898        char *end;
02899        int bprefix = (yytext[0] != '\'') ? 1 : 0;
02900 
02901        while (1) {
02902               if (YYCURSOR < YYLIMIT) {
02903                      if (*YYCURSOR == '\'') {
02904                             YYCURSOR++;
02905                             yyleng = YYCURSOR - SCNG(yy_text);
02906 
02907                             break;
02908                      } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
02909                             YYCURSOR++;
02910                      }
02911               } else {
02912                      yyleng = YYLIMIT - SCNG(yy_text);
02913 
02914                      /* Unclosed single quotes; treat similar to double quotes, but without a separate token
02915                       * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..."
02916                       * rule, which continued in ST_IN_SCRIPTING state after the quote */
02917                      return T_ENCAPSED_AND_WHITESPACE;
02918               }
02919        }
02920 
02921        zendlval->value.str.val = estrndup(yytext+bprefix+1, yyleng-bprefix-2);
02922        zendlval->value.str.len = yyleng-bprefix-2;
02923        zendlval->type = IS_STRING;
02924 
02925        /* convert escape sequences */
02926        s = t = zendlval->value.str.val;
02927        end = s+zendlval->value.str.len;
02928        while (s<end) {
02929               if (*s=='\\') {
02930                      s++;
02931 
02932                      switch(*s) {
02933                             case '\\':
02934                             case '\'':
02935                                    *t++ = *s;
02936                                    zendlval->value.str.len--;
02937                                    break;
02938                             default:
02939                                    *t++ = '\\';
02940                                    *t++ = *s;
02941                                    break;
02942                      }
02943               } else {
02944                      *t++ = *s;
02945               }
02946 
02947               if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
02948                      CG(zend_lineno)++;
02949               }
02950               s++;
02951        }
02952        *t = 0;
02953 
02954 #ifdef ZEND_MULTIBYTE
02955        if (SCNG(output_filter)) {
02956               size_t sz = 0;
02957               s = zendlval->value.str.val;
02958               SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC);
02959               zendlval->value.str.len = sz;
02960               efree(s);
02961        }
02962 #endif /* ZEND_MULTIBYTE */
02963        return T_CONSTANT_ENCAPSED_STRING;
02964 }
02965 #line 2966 "Zend/zend_language_scanner.c"
02966 yy179:
02967               YYDEBUG(179, *YYCURSOR);
02968               ++YYCURSOR;
02969 yy180:
02970               YYDEBUG(180, *YYCURSOR);
02971               yyleng = YYCURSOR - SCNG(yy_text);
02972 #line 1865 "Zend/zend_language_scanner.l"
02973               {
02974        int bprefix = (yytext[0] != '"') ? 1 : 0;
02975 
02976        while (YYCURSOR < YYLIMIT) {
02977               switch (*YYCURSOR++) {
02978                      case '"':
02979                             yyleng = YYCURSOR - SCNG(yy_text);
02980                             zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"' TSRMLS_CC);
02981                             return T_CONSTANT_ENCAPSED_STRING;
02982                      case '$':
02983                             if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
02984                                    break;
02985                             }
02986                             continue;
02987                      case '{':
02988                             if (*YYCURSOR == '$') {
02989                                    break;
02990                             }
02991                             continue;
02992                      case '\\':
02993                             if (YYCURSOR < YYLIMIT) {
02994                                    YYCURSOR++;
02995                             }
02996                             /* fall through */
02997                      default:
02998                             continue;
02999               }
03000 
03001               YYCURSOR--;
03002               break;
03003        }
03004 
03005        /* Remember how much was scanned to save rescanning */
03006        SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng);
03007 
03008        YYCURSOR = SCNG(yy_text) + yyleng;
03009 
03010        BEGIN(ST_DOUBLE_QUOTES);
03011        return '"';
03012 }
03013 #line 3014 "Zend/zend_language_scanner.c"
03014 yy181:
03015               YYDEBUG(181, *YYCURSOR);
03016               ++YYCURSOR;
03017               YYDEBUG(182, *YYCURSOR);
03018               yyleng = YYCURSOR - SCNG(yy_text);
03019 #line 1956 "Zend/zend_language_scanner.l"
03020               {
03021        BEGIN(ST_BACKQUOTE);
03022        return '`';
03023 }
03024 #line 3025 "Zend/zend_language_scanner.c"
03025 yy183:
03026               YYDEBUG(183, *YYCURSOR);
03027               ++YYCURSOR;
03028               YYDEBUG(184, *YYCURSOR);
03029               yyleng = YYCURSOR - SCNG(yy_text);
03030 #line 2214 "Zend/zend_language_scanner.l"
03031               {
03032        if (YYCURSOR > YYLIMIT) {
03033               return 0;
03034        }
03035 
03036        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
03037        goto restart;
03038 }
03039 #line 3040 "Zend/zend_language_scanner.c"
03040 yy185:
03041               YYDEBUG(185, *YYCURSOR);
03042               ++YYCURSOR;
03043               YYFILL(1);
03044               yych = *YYCURSOR;
03045 yy186:
03046               YYDEBUG(186, *YYCURSOR);
03047               if (yybm[0+yych] & 8) {
03048                      goto yy185;
03049               }
03050               goto yy124;
03051 yy187:
03052               YYDEBUG(187, *YYCURSOR);
03053               yyaccept = 3;
03054               YYMARKER = ++YYCURSOR;
03055               YYFILL(3);
03056               yych = *YYCURSOR;
03057               YYDEBUG(188, *YYCURSOR);
03058               if (yybm[0+yych] & 16) {
03059                      goto yy187;
03060               }
03061               if (yych == 'E') goto yy192;
03062               if (yych == 'e') goto yy192;
03063 yy189:
03064               YYDEBUG(189, *YYCURSOR);
03065               yyleng = YYCURSOR - SCNG(yy_text);
03066 #line 1393 "Zend/zend_language_scanner.l"
03067               {
03068        zendlval->value.dval = zend_strtod(yytext, NULL);
03069        zendlval->type = IS_DOUBLE;
03070        return T_DNUMBER;
03071 }
03072 #line 3073 "Zend/zend_language_scanner.c"
03073 yy190:
03074               YYDEBUG(190, *YYCURSOR);
03075               yyaccept = 2;
03076               YYMARKER = ++YYCURSOR;
03077               YYFILL(3);
03078               yych = *YYCURSOR;
03079               YYDEBUG(191, *YYCURSOR);
03080               if (yych <= '9') {
03081                      if (yych == '.') goto yy187;
03082                      if (yych <= '/') goto yy172;
03083                      goto yy190;
03084               } else {
03085                      if (yych <= 'E') {
03086                             if (yych <= 'D') goto yy172;
03087                      } else {
03088                             if (yych != 'e') goto yy172;
03089                      }
03090               }
03091 yy192:
03092               YYDEBUG(192, *YYCURSOR);
03093               yych = *++YYCURSOR;
03094               if (yych <= ',') {
03095                      if (yych == '+') goto yy194;
03096               } else {
03097                      if (yych <= '-') goto yy194;
03098                      if (yych <= '/') goto yy193;
03099                      if (yych <= '9') goto yy195;
03100               }
03101 yy193:
03102               YYDEBUG(193, *YYCURSOR);
03103               YYCURSOR = YYMARKER;
03104               if (yyaccept <= 2) {
03105                      if (yyaccept <= 1) {
03106                             if (yyaccept <= 0) {
03107                                    goto yy124;
03108                             } else {
03109                                    goto yy138;
03110                             }
03111                      } else {
03112                             goto yy172;
03113                      }
03114               } else {
03115                      if (yyaccept <= 4) {
03116                             if (yyaccept <= 3) {
03117                                    goto yy189;
03118                             } else {
03119                                    goto yy234;
03120                             }
03121                      } else {
03122                             goto yy250;
03123                      }
03124               }
03125 yy194:
03126               YYDEBUG(194, *YYCURSOR);
03127               yych = *++YYCURSOR;
03128               if (yych <= '/') goto yy193;
03129               if (yych >= ':') goto yy193;
03130 yy195:
03131               YYDEBUG(195, *YYCURSOR);
03132               ++YYCURSOR;
03133               YYFILL(1);
03134               yych = *YYCURSOR;
03135               YYDEBUG(196, *YYCURSOR);
03136               if (yych <= '/') goto yy189;
03137               if (yych <= '9') goto yy195;
03138               goto yy189;
03139 yy197:
03140               YYDEBUG(197, *YYCURSOR);
03141               yych = *++YYCURSOR;
03142               if (yybm[0+yych] & 32) {
03143                      goto yy198;
03144               }
03145               goto yy193;
03146 yy198:
03147               YYDEBUG(198, *YYCURSOR);
03148               ++YYCURSOR;
03149               YYFILL(1);
03150               yych = *YYCURSOR;
03151               YYDEBUG(199, *YYCURSOR);
03152               if (yybm[0+yych] & 32) {
03153                      goto yy198;
03154               }
03155               YYDEBUG(200, *YYCURSOR);
03156               yyleng = YYCURSOR - SCNG(yy_text);
03157 #line 1353 "Zend/zend_language_scanner.l"
03158               {
03159        char *hex = yytext + 2; /* Skip "0x" */
03160        int len = yyleng - 2;
03161 
03162        /* Skip any leading 0s */
03163        while (*hex == '0') {
03164               hex++;
03165               len--;
03166        }
03167 
03168        if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) {
03169               zendlval->value.lval = strtol(hex, NULL, 16);
03170               zendlval->type = IS_LONG;
03171               return T_LNUMBER;
03172        } else {
03173               zendlval->value.dval = zend_hex_strtod(hex, NULL);
03174               zendlval->type = IS_DOUBLE;
03175               return T_DNUMBER;
03176        }
03177 }
03178 #line 3179 "Zend/zend_language_scanner.c"
03179 yy201:
03180               YYDEBUG(201, *YYCURSOR);
03181               ++YYCURSOR;
03182               if ((yych = *YYCURSOR) == '\n') goto yy203;
03183               if (yych == '\r') goto yy204;
03184 yy202:
03185               YYDEBUG(202, *YYCURSOR);
03186               yyleng = YYCURSOR - SCNG(yy_text);
03187 #line 1771 "Zend/zend_language_scanner.l"
03188               {
03189        zendlval->value.str.val = yytext; /* no copying - intentional */
03190        zendlval->value.str.len = yyleng;
03191        zendlval->type = IS_STRING;
03192        BEGIN(INITIAL);
03193        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
03194 }
03195 #line 3196 "Zend/zend_language_scanner.c"
03196 yy203:
03197               YYDEBUG(203, *YYCURSOR);
03198               yych = *++YYCURSOR;
03199               goto yy202;
03200 yy204:
03201               YYDEBUG(204, *YYCURSOR);
03202               yych = *++YYCURSOR;
03203               if (yych == '\n') goto yy203;
03204               goto yy202;
03205 yy205:
03206               YYDEBUG(205, *YYCURSOR);
03207               ++YYCURSOR;
03208               YYFILL(1);
03209               yych = *YYCURSOR;
03210               YYDEBUG(206, *YYCURSOR);
03211               if (yych <= '^') {
03212                      if (yych <= '9') {
03213                             if (yych >= '0') goto yy205;
03214                      } else {
03215                             if (yych <= '@') goto yy207;
03216                             if (yych <= 'Z') goto yy205;
03217                      }
03218               } else {
03219                      if (yych <= '`') {
03220                             if (yych <= '_') goto yy205;
03221                      } else {
03222                             if (yych <= 'z') goto yy205;
03223                             if (yych >= 0x7F) goto yy205;
03224                      }
03225               }
03226 yy207:
03227               YYDEBUG(207, *YYCURSOR);
03228               yyleng = YYCURSOR - SCNG(yy_text);
03229 #line 1673 "Zend/zend_language_scanner.l"
03230               {
03231        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
03232        zendlval->type = IS_STRING;
03233        return T_VARIABLE;
03234 }
03235 #line 3236 "Zend/zend_language_scanner.c"
03236 yy208:
03237               YYDEBUG(208, *YYCURSOR);
03238               yych = *++YYCURSOR;
03239               if (yych == 'R') goto yy209;
03240               if (yych != 'r') goto yy186;
03241 yy209:
03242               YYDEBUG(209, *YYCURSOR);
03243               ++YYCURSOR;
03244               if (yybm[0+(yych = *YYCURSOR)] & 8) {
03245                      goto yy185;
03246               }
03247               YYDEBUG(210, *YYCURSOR);
03248               yyleng = YYCURSOR - SCNG(yy_text);
03249 #line 1277 "Zend/zend_language_scanner.l"
03250               {
03251        return T_LOGICAL_XOR;
03252 }
03253 #line 3254 "Zend/zend_language_scanner.c"
03254 yy211:
03255               YYDEBUG(211, *YYCURSOR);
03256               ++YYCURSOR;
03257               if (yybm[0+(yych = *YYCURSOR)] & 8) {
03258                      goto yy185;
03259               }
03260               YYDEBUG(212, *YYCURSOR);
03261               yyleng = YYCURSOR - SCNG(yy_text);
03262 #line 1269 "Zend/zend_language_scanner.l"
03263               {
03264        return T_LOGICAL_OR;
03265 }
03266 #line 3267 "Zend/zend_language_scanner.c"
03267 yy213:
03268               YYDEBUG(213, *YYCURSOR);
03269               ++YYCURSOR;
03270               YYDEBUG(214, *YYCURSOR);
03271               yyleng = YYCURSOR - SCNG(yy_text);
03272 #line 1257 "Zend/zend_language_scanner.l"
03273               {
03274        return T_XOR_EQUAL;
03275 }
03276 #line 3277 "Zend/zend_language_scanner.c"
03277 yy215:
03278               YYDEBUG(215, *YYCURSOR);
03279               ++YYCURSOR;
03280               YYDEBUG(216, *YYCURSOR);
03281               yyleng = YYCURSOR - SCNG(yy_text);
03282 #line 1261 "Zend/zend_language_scanner.l"
03283               {
03284        return T_BOOLEAN_OR;
03285 }
03286 #line 3287 "Zend/zend_language_scanner.c"
03287 yy217:
03288               YYDEBUG(217, *YYCURSOR);
03289               ++YYCURSOR;
03290               YYDEBUG(218, *YYCURSOR);
03291               yyleng = YYCURSOR - SCNG(yy_text);
03292 #line 1253 "Zend/zend_language_scanner.l"
03293               {
03294        return T_OR_EQUAL;
03295 }
03296 #line 3297 "Zend/zend_language_scanner.c"
03297 yy219:
03298               YYDEBUG(219, *YYCURSOR);
03299               ++YYCURSOR;
03300               YYDEBUG(220, *YYCURSOR);
03301               yyleng = YYCURSOR - SCNG(yy_text);
03302 #line 1265 "Zend/zend_language_scanner.l"
03303               {
03304        return T_BOOLEAN_AND;
03305 }
03306 #line 3307 "Zend/zend_language_scanner.c"
03307 yy221:
03308               YYDEBUG(221, *YYCURSOR);
03309               ++YYCURSOR;
03310               YYDEBUG(222, *YYCURSOR);
03311               yyleng = YYCURSOR - SCNG(yy_text);
03312 #line 1249 "Zend/zend_language_scanner.l"
03313               {
03314        return T_AND_EQUAL;
03315 }
03316 #line 3317 "Zend/zend_language_scanner.c"
03317 yy223:
03318               YYDEBUG(223, *YYCURSOR);
03319               ++YYCURSOR;
03320               if ((yych = *YYCURSOR) == '\n') goto yy227;
03321               if (yych == '\r') goto yy228;
03322 yy224:
03323               YYDEBUG(224, *YYCURSOR);
03324               yyleng = YYCURSOR - SCNG(yy_text);
03325 #line 1780 "Zend/zend_language_scanner.l"
03326               {
03327        if (CG(asp_tags)) {
03328               BEGIN(INITIAL);
03329               zendlval->value.str.len = yyleng;
03330               zendlval->type = IS_STRING;
03331               zendlval->value.str.val = yytext; /* no copying - intentional */
03332               return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
03333        } else {
03334               yyless(1);
03335               return yytext[0];
03336        }
03337 }
03338 #line 3339 "Zend/zend_language_scanner.c"
03339 yy225:
03340               YYDEBUG(225, *YYCURSOR);
03341               ++YYCURSOR;
03342               YYDEBUG(226, *YYCURSOR);
03343               yyleng = YYCURSOR - SCNG(yy_text);
03344 #line 1237 "Zend/zend_language_scanner.l"
03345               {
03346        return T_MOD_EQUAL;
03347 }
03348 #line 3349 "Zend/zend_language_scanner.c"
03349 yy227:
03350               YYDEBUG(227, *YYCURSOR);
03351               yych = *++YYCURSOR;
03352               goto yy224;
03353 yy228:
03354               YYDEBUG(228, *YYCURSOR);
03355               yych = *++YYCURSOR;
03356               if (yych == '\n') goto yy227;
03357               goto yy224;
03358 yy229:
03359               YYDEBUG(229, *YYCURSOR);
03360               yyaccept = 3;
03361               YYMARKER = ++YYCURSOR;
03362               YYFILL(3);
03363               yych = *YYCURSOR;
03364               YYDEBUG(230, *YYCURSOR);
03365               if (yych <= 'D') {
03366                      if (yych <= '/') goto yy189;
03367                      if (yych <= '9') goto yy229;
03368                      goto yy189;
03369               } else {
03370                      if (yych <= 'E') goto yy192;
03371                      if (yych == 'e') goto yy192;
03372                      goto yy189;
03373               }
03374 yy231:
03375               YYDEBUG(231, *YYCURSOR);
03376               ++YYCURSOR;
03377               YYDEBUG(232, *YYCURSOR);
03378               yyleng = YYCURSOR - SCNG(yy_text);
03379 #line 1233 "Zend/zend_language_scanner.l"
03380               {
03381        return T_CONCAT_EQUAL;
03382 }
03383 #line 3384 "Zend/zend_language_scanner.c"
03384 yy233:
03385               YYDEBUG(233, *YYCURSOR);
03386               yyaccept = 4;
03387               yych = *(YYMARKER = ++YYCURSOR);
03388               if (yych == '*') goto yy238;
03389 yy234:
03390               YYDEBUG(234, *YYCURSOR);
03391               yyleng = YYCURSOR - SCNG(yy_text);
03392 #line 1737 "Zend/zend_language_scanner.l"
03393               {
03394        int doc_com;
03395 
03396        if (yyleng > 2) {
03397               doc_com = 1;
03398               RESET_DOC_COMMENT();
03399        } else {
03400               doc_com = 0;
03401        }
03402 
03403        while (YYCURSOR < YYLIMIT) {
03404               if (*YYCURSOR++ == '*' && *YYCURSOR == '/') {
03405                      break;
03406               }
03407        }
03408 
03409        if (YYCURSOR < YYLIMIT) {
03410               YYCURSOR++;
03411        } else {
03412               zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno));
03413        }
03414 
03415        yyleng = YYCURSOR - SCNG(yy_text);
03416        HANDLE_NEWLINES(yytext, yyleng);
03417 
03418        if (doc_com) {
03419               CG(doc_comment) = estrndup(yytext, yyleng);
03420               CG(doc_comment_len) = yyleng;
03421               return T_DOC_COMMENT;
03422        }
03423 
03424        return T_COMMENT;
03425 }
03426 #line 3427 "Zend/zend_language_scanner.c"
03427 yy235:
03428               YYDEBUG(235, *YYCURSOR);
03429               yych = *++YYCURSOR;
03430               goto yy176;
03431 yy236:
03432               YYDEBUG(236, *YYCURSOR);
03433               ++YYCURSOR;
03434               YYDEBUG(237, *YYCURSOR);
03435               yyleng = YYCURSOR - SCNG(yy_text);
03436 #line 1229 "Zend/zend_language_scanner.l"
03437               {
03438        return T_DIV_EQUAL;
03439 }
03440 #line 3441 "Zend/zend_language_scanner.c"
03441 yy238:
03442               YYDEBUG(238, *YYCURSOR);
03443               yych = *++YYCURSOR;
03444               if (yybm[0+yych] & 64) {
03445                      goto yy239;
03446               }
03447               goto yy193;
03448 yy239:
03449               YYDEBUG(239, *YYCURSOR);
03450               ++YYCURSOR;
03451               YYFILL(1);
03452               yych = *YYCURSOR;
03453               YYDEBUG(240, *YYCURSOR);
03454               if (yybm[0+yych] & 64) {
03455                      goto yy239;
03456               }
03457               goto yy234;
03458 yy241:
03459               YYDEBUG(241, *YYCURSOR);
03460               ++YYCURSOR;
03461               YYDEBUG(242, *YYCURSOR);
03462               yyleng = YYCURSOR - SCNG(yy_text);
03463 #line 1225 "Zend/zend_language_scanner.l"
03464               {
03465        return T_MUL_EQUAL;
03466 }
03467 #line 3468 "Zend/zend_language_scanner.c"
03468 yy243:
03469               YYDEBUG(243, *YYCURSOR);
03470               ++YYCURSOR;
03471               if ((yych = *YYCURSOR) == '=') goto yy247;
03472               YYDEBUG(244, *YYCURSOR);
03473               yyleng = YYCURSOR - SCNG(yy_text);
03474 #line 1285 "Zend/zend_language_scanner.l"
03475               {
03476        return T_SR;
03477 }
03478 #line 3479 "Zend/zend_language_scanner.c"
03479 yy245:
03480               YYDEBUG(245, *YYCURSOR);
03481               ++YYCURSOR;
03482               YYDEBUG(246, *YYCURSOR);
03483               yyleng = YYCURSOR - SCNG(yy_text);
03484 #line 1213 "Zend/zend_language_scanner.l"
03485               {
03486        return T_IS_GREATER_OR_EQUAL;
03487 }
03488 #line 3489 "Zend/zend_language_scanner.c"
03489 yy247:
03490               YYDEBUG(247, *YYCURSOR);
03491               ++YYCURSOR;
03492               YYDEBUG(248, *YYCURSOR);
03493               yyleng = YYCURSOR - SCNG(yy_text);
03494 #line 1245 "Zend/zend_language_scanner.l"
03495               {
03496        return T_SR_EQUAL;
03497 }
03498 #line 3499 "Zend/zend_language_scanner.c"
03499 yy249:
03500               YYDEBUG(249, *YYCURSOR);
03501               yyaccept = 5;
03502               yych = *(YYMARKER = ++YYCURSOR);
03503               if (yych <= ';') goto yy250;
03504               if (yych <= '<') goto yy265;
03505               if (yych <= '=') goto yy263;
03506 yy250:
03507               YYDEBUG(250, *YYCURSOR);
03508               yyleng = YYCURSOR - SCNG(yy_text);
03509 #line 1281 "Zend/zend_language_scanner.l"
03510               {
03511        return T_SL;
03512 }
03513 #line 3514 "Zend/zend_language_scanner.c"
03514 yy251:
03515               YYDEBUG(251, *YYCURSOR);
03516               yych = *++YYCURSOR;
03517               if (yych == 'S') goto yy256;
03518               if (yych == 's') goto yy256;
03519               goto yy193;
03520 yy252:
03521               YYDEBUG(252, *YYCURSOR);
03522               ++YYCURSOR;
03523               YYDEBUG(253, *YYCURSOR);
03524               yyleng = YYCURSOR - SCNG(yy_text);
03525 #line 1209 "Zend/zend_language_scanner.l"
03526               {
03527        return T_IS_SMALLER_OR_EQUAL;
03528 }
03529 #line 3530 "Zend/zend_language_scanner.c"
03530 yy254:
03531               YYDEBUG(254, *YYCURSOR);
03532               ++YYCURSOR;
03533 yy255:
03534               YYDEBUG(255, *YYCURSOR);
03535               yyleng = YYCURSOR - SCNG(yy_text);
03536 #line 1205 "Zend/zend_language_scanner.l"
03537               {
03538        return T_IS_NOT_EQUAL;
03539 }
03540 #line 3541 "Zend/zend_language_scanner.c"
03541 yy256:
03542               YYDEBUG(256, *YYCURSOR);
03543               yych = *++YYCURSOR;
03544               if (yych == 'C') goto yy257;
03545               if (yych != 'c') goto yy193;
03546 yy257:
03547               YYDEBUG(257, *YYCURSOR);
03548               yych = *++YYCURSOR;
03549               if (yych == 'R') goto yy258;
03550               if (yych != 'r') goto yy193;
03551 yy258:
03552               YYDEBUG(258, *YYCURSOR);
03553               yych = *++YYCURSOR;
03554               if (yych == 'I') goto yy259;
03555               if (yych != 'i') goto yy193;
03556 yy259:
03557               YYDEBUG(259, *YYCURSOR);
03558               yych = *++YYCURSOR;
03559               if (yych == 'P') goto yy260;
03560               if (yych != 'p') goto yy193;
03561 yy260:
03562               YYDEBUG(260, *YYCURSOR);
03563               yych = *++YYCURSOR;
03564               if (yych == 'T') goto yy261;
03565               if (yych != 't') goto yy193;
03566 yy261:
03567               YYDEBUG(261, *YYCURSOR);
03568               ++YYCURSOR;
03569               YYFILL(3);
03570               yych = *YYCURSOR;
03571               YYDEBUG(262, *YYCURSOR);
03572               if (yych <= '\r') {
03573                      if (yych <= 0x08) goto yy193;
03574                      if (yych <= '\n') goto yy261;
03575                      if (yych <= '\f') goto yy193;
03576                      goto yy261;
03577               } else {
03578                      if (yych <= ' ') {
03579                             if (yych <= 0x1F) goto yy193;
03580                             goto yy261;
03581                      } else {
03582                             if (yych == '>') goto yy201;
03583                             goto yy193;
03584                      }
03585               }
03586 yy263:
03587               YYDEBUG(263, *YYCURSOR);
03588               ++YYCURSOR;
03589               YYDEBUG(264, *YYCURSOR);
03590               yyleng = YYCURSOR - SCNG(yy_text);
03591 #line 1241 "Zend/zend_language_scanner.l"
03592               {
03593        return T_SL_EQUAL;
03594 }
03595 #line 3596 "Zend/zend_language_scanner.c"
03596 yy265:
03597               YYDEBUG(265, *YYCURSOR);
03598               ++YYCURSOR;
03599               YYFILL(2);
03600               yych = *YYCURSOR;
03601               YYDEBUG(266, *YYCURSOR);
03602               if (yybm[0+yych] & 128) {
03603                      goto yy265;
03604               }
03605               if (yych <= 'Z') {
03606                      if (yych <= '&') {
03607                             if (yych == '"') goto yy270;
03608                             goto yy193;
03609                      } else {
03610                             if (yych <= '\'') goto yy269;
03611                             if (yych <= '@') goto yy193;
03612                      }
03613               } else {
03614                      if (yych <= '`') {
03615                             if (yych != '_') goto yy193;
03616                      } else {
03617                             if (yych <= 'z') goto yy267;
03618                             if (yych <= '~') goto yy193;
03619                      }
03620               }
03621 yy267:
03622               YYDEBUG(267, *YYCURSOR);
03623               ++YYCURSOR;
03624               YYFILL(2);
03625               yych = *YYCURSOR;
03626               YYDEBUG(268, *YYCURSOR);
03627               if (yych <= '@') {
03628                      if (yych <= '\f') {
03629                             if (yych == '\n') goto yy274;
03630                             goto yy193;
03631                      } else {
03632                             if (yych <= '\r') goto yy276;
03633                             if (yych <= '/') goto yy193;
03634                             if (yych <= '9') goto yy267;
03635                             goto yy193;
03636                      }
03637               } else {
03638                      if (yych <= '_') {
03639                             if (yych <= 'Z') goto yy267;
03640                             if (yych <= '^') goto yy193;
03641                             goto yy267;
03642                      } else {
03643                             if (yych <= '`') goto yy193;
03644                             if (yych <= 'z') goto yy267;
03645                             if (yych <= '~') goto yy193;
03646                             goto yy267;
03647                      }
03648               }
03649 yy269:
03650               YYDEBUG(269, *YYCURSOR);
03651               yych = *++YYCURSOR;
03652               if (yych == '\'') goto yy193;
03653               if (yych <= '/') goto yy278;
03654               if (yych <= '9') goto yy193;
03655               goto yy278;
03656 yy270:
03657               YYDEBUG(270, *YYCURSOR);
03658               yych = *++YYCURSOR;
03659               if (yych == '"') goto yy193;
03660               if (yych <= '/') goto yy272;
03661               if (yych <= '9') goto yy193;
03662               goto yy272;
03663 yy271:
03664               YYDEBUG(271, *YYCURSOR);
03665               ++YYCURSOR;
03666               YYFILL(3);
03667               yych = *YYCURSOR;
03668 yy272:
03669               YYDEBUG(272, *YYCURSOR);
03670               if (yych <= 'Z') {
03671                      if (yych <= '/') {
03672                             if (yych != '"') goto yy193;
03673                      } else {
03674                             if (yych <= '9') goto yy271;
03675                             if (yych <= '@') goto yy193;
03676                             goto yy271;
03677                      }
03678               } else {
03679                      if (yych <= '`') {
03680                             if (yych == '_') goto yy271;
03681                             goto yy193;
03682                      } else {
03683                             if (yych <= 'z') goto yy271;
03684                             if (yych <= '~') goto yy193;
03685                             goto yy271;
03686                      }
03687               }
03688 yy273:
03689               YYDEBUG(273, *YYCURSOR);
03690               yych = *++YYCURSOR;
03691               if (yych == '\n') goto yy274;
03692               if (yych == '\r') goto yy276;
03693               goto yy193;
03694 yy274:
03695               YYDEBUG(274, *YYCURSOR);
03696               ++YYCURSOR;
03697 yy275:
03698               YYDEBUG(275, *YYCURSOR);
03699               yyleng = YYCURSOR - SCNG(yy_text);
03700 #line 1907 "Zend/zend_language_scanner.l"
03701               {
03702        char *s;
03703        int bprefix = (yytext[0] != '<') ? 1 : 0;
03704 
03705        /* save old heredoc label */
03706        Z_STRVAL_P(zendlval) = CG(heredoc);
03707        Z_STRLEN_P(zendlval) = CG(heredoc_len);
03708 
03709        CG(zend_lineno)++;
03710        CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
03711        s = yytext+bprefix+3;
03712        while ((*s == ' ') || (*s == '\t')) {
03713               s++;
03714               CG(heredoc_len)--;
03715        }
03716 
03717        if (*s == '\'') {
03718               s++;
03719               CG(heredoc_len) -= 2;
03720 
03721               BEGIN(ST_NOWDOC);
03722        } else {
03723               if (*s == '"') {
03724                      s++;
03725                      CG(heredoc_len) -= 2;
03726               }
03727 
03728               BEGIN(ST_HEREDOC);
03729        }
03730 
03731        CG(heredoc) = estrndup(s, CG(heredoc_len));
03732 
03733        /* Check for ending label on the next line */
03734        if (CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, CG(heredoc_len))) {
03735               YYCTYPE *end = YYCURSOR + CG(heredoc_len);
03736 
03737               if (*end == ';') {
03738                      end++;
03739               }
03740 
03741               if (*end == '\n' || *end == '\r') {
03742                      BEGIN(ST_END_HEREDOC);
03743               }
03744        }
03745 
03746        return T_START_HEREDOC;
03747 }
03748 #line 3749 "Zend/zend_language_scanner.c"
03749 yy276:
03750               YYDEBUG(276, *YYCURSOR);
03751               yych = *++YYCURSOR;
03752               if (yych == '\n') goto yy274;
03753               goto yy275;
03754 yy277:
03755               YYDEBUG(277, *YYCURSOR);
03756               ++YYCURSOR;
03757               YYFILL(3);
03758               yych = *YYCURSOR;
03759 yy278:
03760               YYDEBUG(278, *YYCURSOR);
03761               if (yych <= 'Z') {
03762                      if (yych <= '/') {
03763                             if (yych == '\'') goto yy273;
03764                             goto yy193;
03765                      } else {
03766                             if (yych <= '9') goto yy277;
03767                             if (yych <= '@') goto yy193;
03768                             goto yy277;
03769                      }
03770               } else {
03771                      if (yych <= '`') {
03772                             if (yych == '_') goto yy277;
03773                             goto yy193;
03774                      } else {
03775                             if (yych <= 'z') goto yy277;
03776                             if (yych <= '~') goto yy193;
03777                             goto yy277;
03778                      }
03779               }
03780 yy279:
03781               YYDEBUG(279, *YYCURSOR);
03782               yych = *++YYCURSOR;
03783               if (yych != '=') goto yy255;
03784               YYDEBUG(280, *YYCURSOR);
03785               ++YYCURSOR;
03786               YYDEBUG(281, *YYCURSOR);
03787               yyleng = YYCURSOR - SCNG(yy_text);
03788 #line 1197 "Zend/zend_language_scanner.l"
03789               {
03790        return T_IS_NOT_IDENTICAL;
03791 }
03792 #line 3793 "Zend/zend_language_scanner.c"
03793 yy282:
03794               YYDEBUG(282, *YYCURSOR);
03795               ++YYCURSOR;
03796               YYDEBUG(283, *YYCURSOR);
03797               yyleng = YYCURSOR - SCNG(yy_text);
03798 #line 1217 "Zend/zend_language_scanner.l"
03799               {
03800        return T_PLUS_EQUAL;
03801 }
03802 #line 3803 "Zend/zend_language_scanner.c"
03803 yy284:
03804               YYDEBUG(284, *YYCURSOR);
03805               ++YYCURSOR;
03806               YYDEBUG(285, *YYCURSOR);
03807               yyleng = YYCURSOR - SCNG(yy_text);
03808 #line 1185 "Zend/zend_language_scanner.l"
03809               {
03810        return T_INC;
03811 }
03812 #line 3813 "Zend/zend_language_scanner.c"
03813 yy286:
03814               YYDEBUG(286, *YYCURSOR);
03815               yych = *++YYCURSOR;
03816               if (yych == 'S') goto yy287;
03817               if (yych != 's') goto yy186;
03818 yy287:
03819               YYDEBUG(287, *YYCURSOR);
03820               yych = *++YYCURSOR;
03821               if (yych == 'T') goto yy288;
03822               if (yych != 't') goto yy186;
03823 yy288:
03824               YYDEBUG(288, *YYCURSOR);
03825               ++YYCURSOR;
03826               if (yybm[0+(yych = *YYCURSOR)] & 8) {
03827                      goto yy185;
03828               }
03829               YYDEBUG(289, *YYCURSOR);
03830               yyleng = YYCURSOR - SCNG(yy_text);
03831 #line 1177 "Zend/zend_language_scanner.l"
03832               {
03833        return T_LIST;
03834 }
03835 #line 3836 "Zend/zend_language_scanner.c"
03836 yy290:
03837               YYDEBUG(290, *YYCURSOR);
03838               ++YYCURSOR;
03839               if ((yych = *YYCURSOR) == '=') goto yy294;
03840               YYDEBUG(291, *YYCURSOR);
03841               yyleng = YYCURSOR - SCNG(yy_text);
03842 #line 1201 "Zend/zend_language_scanner.l"
03843               {
03844        return T_IS_EQUAL;
03845 }
03846 #line 3847 "Zend/zend_language_scanner.c"
03847 yy292:
03848               YYDEBUG(292, *YYCURSOR);
03849               ++YYCURSOR;
03850               YYDEBUG(293, *YYCURSOR);
03851               yyleng = YYCURSOR - SCNG(yy_text);
03852 #line 1173 "Zend/zend_language_scanner.l"
03853               {
03854        return T_DOUBLE_ARROW;
03855 }
03856 #line 3857 "Zend/zend_language_scanner.c"
03857 yy294:
03858               YYDEBUG(294, *YYCURSOR);
03859               ++YYCURSOR;
03860               YYDEBUG(295, *YYCURSOR);
03861               yyleng = YYCURSOR - SCNG(yy_text);
03862 #line 1193 "Zend/zend_language_scanner.l"
03863               {
03864        return T_IS_IDENTICAL;
03865 }
03866 #line 3867 "Zend/zend_language_scanner.c"
03867 yy296:
03868               YYDEBUG(296, *YYCURSOR);
03869               yych = *++YYCURSOR;
03870               YYDEBUG(-1, yych);
03871               switch (yych) {
03872               case 'C':
03873               case 'c':     goto yy298;
03874               case 'D':
03875               case 'd':     goto yy302;
03876               case 'F':
03877               case 'f':     goto yy299;
03878               case 'H':
03879               case 'h':     goto yy297;
03880               case 'L':
03881               case 'l':     goto yy301;
03882               case 'M':
03883               case 'm':     goto yy300;
03884               case 'N':
03885               case 'n':     goto yy303;
03886               default:      goto yy186;
03887               }
03888 yy297:
03889               YYDEBUG(297, *YYCURSOR);
03890               yych = *++YYCURSOR;
03891               if (yych == 'A') goto yy357;
03892               if (yych == 'a') goto yy357;
03893               goto yy186;
03894 yy298:
03895               YYDEBUG(298, *YYCURSOR);
03896               yych = *++YYCURSOR;
03897               if (yych == 'L') goto yy350;
03898               if (yych == 'l') goto yy350;
03899               goto yy186;
03900 yy299:
03901               YYDEBUG(299, *YYCURSOR);
03902               yych = *++YYCURSOR;
03903               if (yych <= 'U') {
03904                      if (yych == 'I') goto yy334;
03905                      if (yych <= 'T') goto yy186;
03906                      goto yy335;
03907               } else {
03908                      if (yych <= 'i') {
03909                             if (yych <= 'h') goto yy186;
03910                             goto yy334;
03911                      } else {
03912                             if (yych == 'u') goto yy335;
03913                             goto yy186;
03914                      }
03915               }
03916 yy300:
03917               YYDEBUG(300, *YYCURSOR);
03918               yych = *++YYCURSOR;
03919               if (yych == 'E') goto yy326;
03920               if (yych == 'e') goto yy326;
03921               goto yy186;
03922 yy301:
03923               YYDEBUG(301, *YYCURSOR);
03924               yych = *++YYCURSOR;
03925               if (yych == 'I') goto yy320;
03926               if (yych == 'i') goto yy320;
03927               goto yy186;
03928 yy302:
03929               YYDEBUG(302, *YYCURSOR);
03930               yych = *++YYCURSOR;
03931               if (yych == 'I') goto yy315;
03932               if (yych == 'i') goto yy315;
03933               goto yy186;
03934 yy303:
03935               YYDEBUG(303, *YYCURSOR);
03936               yych = *++YYCURSOR;
03937               if (yych == 'A') goto yy304;
03938               if (yych != 'a') goto yy186;
03939 yy304:
03940               YYDEBUG(304, *YYCURSOR);
03941               yych = *++YYCURSOR;
03942               if (yych == 'M') goto yy305;
03943               if (yych != 'm') goto yy186;
03944 yy305:
03945               YYDEBUG(305, *YYCURSOR);
03946               yych = *++YYCURSOR;
03947               if (yych == 'E') goto yy306;
03948               if (yych != 'e') goto yy186;
03949 yy306:
03950               YYDEBUG(306, *YYCURSOR);
03951               yych = *++YYCURSOR;
03952               if (yych == 'S') goto yy307;
03953               if (yych != 's') goto yy186;
03954 yy307:
03955               YYDEBUG(307, *YYCURSOR);
03956               yych = *++YYCURSOR;
03957               if (yych == 'P') goto yy308;
03958               if (yych != 'p') goto yy186;
03959 yy308:
03960               YYDEBUG(308, *YYCURSOR);
03961               yych = *++YYCURSOR;
03962               if (yych == 'A') goto yy309;
03963               if (yych != 'a') goto yy186;
03964 yy309:
03965               YYDEBUG(309, *YYCURSOR);
03966               yych = *++YYCURSOR;
03967               if (yych == 'C') goto yy310;
03968               if (yych != 'c') goto yy186;
03969 yy310:
03970               YYDEBUG(310, *YYCURSOR);
03971               yych = *++YYCURSOR;
03972               if (yych == 'E') goto yy311;
03973               if (yych != 'e') goto yy186;
03974 yy311:
03975               YYDEBUG(311, *YYCURSOR);
03976               yych = *++YYCURSOR;
03977               if (yych != '_') goto yy186;
03978               YYDEBUG(312, *YYCURSOR);
03979               yych = *++YYCURSOR;
03980               if (yych != '_') goto yy186;
03981               YYDEBUG(313, *YYCURSOR);
03982               ++YYCURSOR;
03983               if (yybm[0+(yych = *YYCURSOR)] & 8) {
03984                      goto yy185;
03985               }
03986               YYDEBUG(314, *YYCURSOR);
03987               yyleng = YYCURSOR - SCNG(yy_text);
03988 #line 1497 "Zend/zend_language_scanner.l"
03989               {
03990        if (CG(current_namespace)) {
03991               *zendlval = *CG(current_namespace);
03992               zval_copy_ctor(zendlval);
03993        } else {
03994               ZVAL_EMPTY_STRING(zendlval);
03995        }
03996        return T_NS_C;
03997 }
03998 #line 3999 "Zend/zend_language_scanner.c"
03999 yy315:
04000               YYDEBUG(315, *YYCURSOR);
04001               yych = *++YYCURSOR;
04002               if (yych == 'R') goto yy316;
04003               if (yych != 'r') goto yy186;
04004 yy316:
04005               YYDEBUG(316, *YYCURSOR);
04006               yych = *++YYCURSOR;
04007               if (yych != '_') goto yy186;
04008               YYDEBUG(317, *YYCURSOR);
04009               yych = *++YYCURSOR;
04010               if (yych != '_') goto yy186;
04011               YYDEBUG(318, *YYCURSOR);
04012               ++YYCURSOR;
04013               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04014                      goto yy185;
04015               }
04016               YYDEBUG(319, *YYCURSOR);
04017               yyleng = YYCURSOR - SCNG(yy_text);
04018 #line 1470 "Zend/zend_language_scanner.l"
04019               {
04020        char *filename = zend_get_compiled_filename(TSRMLS_C);
04021        const size_t filename_len = strlen(filename);
04022        char *dirname;
04023 
04024        if (!filename) {
04025               filename = "";
04026        }
04027 
04028        dirname = estrndup(filename, filename_len);
04029        zend_dirname(dirname, filename_len);
04030 
04031        if (strcmp(dirname, ".") == 0) {
04032               dirname = erealloc(dirname, MAXPATHLEN);
04033 #if HAVE_GETCWD
04034               VCWD_GETCWD(dirname, MAXPATHLEN);
04035 #elif HAVE_GETWD
04036               VCWD_GETWD(dirname);
04037 #endif
04038        }
04039 
04040        zendlval->value.str.len = strlen(dirname);
04041        zendlval->value.str.val = dirname;
04042        zendlval->type = IS_STRING;
04043        return T_DIR;
04044 }
04045 #line 4046 "Zend/zend_language_scanner.c"
04046 yy320:
04047               YYDEBUG(320, *YYCURSOR);
04048               yych = *++YYCURSOR;
04049               if (yych == 'N') goto yy321;
04050               if (yych != 'n') goto yy186;
04051 yy321:
04052               YYDEBUG(321, *YYCURSOR);
04053               yych = *++YYCURSOR;
04054               if (yych == 'E') goto yy322;
04055               if (yych != 'e') goto yy186;
04056 yy322:
04057               YYDEBUG(322, *YYCURSOR);
04058               yych = *++YYCURSOR;
04059               if (yych != '_') goto yy186;
04060               YYDEBUG(323, *YYCURSOR);
04061               yych = *++YYCURSOR;
04062               if (yych != '_') goto yy186;
04063               YYDEBUG(324, *YYCURSOR);
04064               ++YYCURSOR;
04065               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04066                      goto yy185;
04067               }
04068               YYDEBUG(325, *YYCURSOR);
04069               yyleng = YYCURSOR - SCNG(yy_text);
04070 #line 1452 "Zend/zend_language_scanner.l"
04071               {
04072        zendlval->value.lval = CG(zend_lineno);
04073        zendlval->type = IS_LONG;
04074        return T_LINE;
04075 }
04076 #line 4077 "Zend/zend_language_scanner.c"
04077 yy326:
04078               YYDEBUG(326, *YYCURSOR);
04079               yych = *++YYCURSOR;
04080               if (yych == 'T') goto yy327;
04081               if (yych != 't') goto yy186;
04082 yy327:
04083               YYDEBUG(327, *YYCURSOR);
04084               yych = *++YYCURSOR;
04085               if (yych == 'H') goto yy328;
04086               if (yych != 'h') goto yy186;
04087 yy328:
04088               YYDEBUG(328, *YYCURSOR);
04089               yych = *++YYCURSOR;
04090               if (yych == 'O') goto yy329;
04091               if (yych != 'o') goto yy186;
04092 yy329:
04093               YYDEBUG(329, *YYCURSOR);
04094               yych = *++YYCURSOR;
04095               if (yych == 'D') goto yy330;
04096               if (yych != 'd') goto yy186;
04097 yy330:
04098               YYDEBUG(330, *YYCURSOR);
04099               yych = *++YYCURSOR;
04100               if (yych != '_') goto yy186;
04101               YYDEBUG(331, *YYCURSOR);
04102               yych = *++YYCURSOR;
04103               if (yych != '_') goto yy186;
04104               YYDEBUG(332, *YYCURSOR);
04105               ++YYCURSOR;
04106               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04107                      goto yy185;
04108               }
04109               YYDEBUG(333, *YYCURSOR);
04110               yyleng = YYCURSOR - SCNG(yy_text);
04111 #line 1431 "Zend/zend_language_scanner.l"
04112               {
04113        char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
04114        char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
04115        size_t len = 0;
04116 
04117        if (class_name) {
04118               len += strlen(class_name) + 2;
04119        }
04120        if (func_name) {
04121               len += strlen(func_name);
04122        }
04123 
04124        zendlval->value.str.len = zend_spprintf(&zendlval->value.str.val, 0, "%s%s%s", 
04125               class_name ? class_name : "",
04126               class_name && func_name ? "::" : "",
04127               func_name ? func_name : ""
04128               );
04129        zendlval->type = IS_STRING;
04130        return T_METHOD_C;
04131 }
04132 #line 4133 "Zend/zend_language_scanner.c"
04133 yy334:
04134               YYDEBUG(334, *YYCURSOR);
04135               yych = *++YYCURSOR;
04136               if (yych == 'L') goto yy345;
04137               if (yych == 'l') goto yy345;
04138               goto yy186;
04139 yy335:
04140               YYDEBUG(335, *YYCURSOR);
04141               yych = *++YYCURSOR;
04142               if (yych == 'N') goto yy336;
04143               if (yych != 'n') goto yy186;
04144 yy336:
04145               YYDEBUG(336, *YYCURSOR);
04146               yych = *++YYCURSOR;
04147               if (yych == 'C') goto yy337;
04148               if (yych != 'c') goto yy186;
04149 yy337:
04150               YYDEBUG(337, *YYCURSOR);
04151               yych = *++YYCURSOR;
04152               if (yych == 'T') goto yy338;
04153               if (yych != 't') goto yy186;
04154 yy338:
04155               YYDEBUG(338, *YYCURSOR);
04156               yych = *++YYCURSOR;
04157               if (yych == 'I') goto yy339;
04158               if (yych != 'i') goto yy186;
04159 yy339:
04160               YYDEBUG(339, *YYCURSOR);
04161               yych = *++YYCURSOR;
04162               if (yych == 'O') goto yy340;
04163               if (yych != 'o') goto yy186;
04164 yy340:
04165               YYDEBUG(340, *YYCURSOR);
04166               yych = *++YYCURSOR;
04167               if (yych == 'N') goto yy341;
04168               if (yych != 'n') goto yy186;
04169 yy341:
04170               YYDEBUG(341, *YYCURSOR);
04171               yych = *++YYCURSOR;
04172               if (yych != '_') goto yy186;
04173               YYDEBUG(342, *YYCURSOR);
04174               yych = *++YYCURSOR;
04175               if (yych != '_') goto yy186;
04176               YYDEBUG(343, *YYCURSOR);
04177               ++YYCURSOR;
04178               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04179                      goto yy185;
04180               }
04181               YYDEBUG(344, *YYCURSOR);
04182               yyleng = YYCURSOR - SCNG(yy_text);
04183 #line 1415 "Zend/zend_language_scanner.l"
04184               {
04185        char *func_name = NULL;
04186 
04187        if (CG(active_op_array)) {
04188               func_name = CG(active_op_array)->function_name;
04189        }
04190 
04191        if (!func_name) {
04192               func_name = "";
04193        }
04194        zendlval->value.str.len = strlen(func_name);
04195        zendlval->value.str.val = estrndup(func_name, zendlval->value.str.len);
04196        zendlval->type = IS_STRING;
04197        return T_FUNC_C;
04198 }
04199 #line 4200 "Zend/zend_language_scanner.c"
04200 yy345:
04201               YYDEBUG(345, *YYCURSOR);
04202               yych = *++YYCURSOR;
04203               if (yych == 'E') goto yy346;
04204               if (yych != 'e') goto yy186;
04205 yy346:
04206               YYDEBUG(346, *YYCURSOR);
04207               yych = *++YYCURSOR;
04208               if (yych != '_') goto yy186;
04209               YYDEBUG(347, *YYCURSOR);
04210               yych = *++YYCURSOR;
04211               if (yych != '_') goto yy186;
04212               YYDEBUG(348, *YYCURSOR);
04213               ++YYCURSOR;
04214               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04215                      goto yy185;
04216               }
04217               YYDEBUG(349, *YYCURSOR);
04218               yyleng = YYCURSOR - SCNG(yy_text);
04219 #line 1458 "Zend/zend_language_scanner.l"
04220               {
04221        char *filename = zend_get_compiled_filename(TSRMLS_C);
04222 
04223        if (!filename) {
04224               filename = "";
04225        }
04226        zendlval->value.str.len = strlen(filename);
04227        zendlval->value.str.val = estrndup(filename, zendlval->value.str.len);
04228        zendlval->type = IS_STRING;
04229        return T_FILE;
04230 }
04231 #line 4232 "Zend/zend_language_scanner.c"
04232 yy350:
04233               YYDEBUG(350, *YYCURSOR);
04234               yych = *++YYCURSOR;
04235               if (yych == 'A') goto yy351;
04236               if (yych != 'a') goto yy186;
04237 yy351:
04238               YYDEBUG(351, *YYCURSOR);
04239               yych = *++YYCURSOR;
04240               if (yych == 'S') goto yy352;
04241               if (yych != 's') goto yy186;
04242 yy352:
04243               YYDEBUG(352, *YYCURSOR);
04244               yych = *++YYCURSOR;
04245               if (yych == 'S') goto yy353;
04246               if (yych != 's') goto yy186;
04247 yy353:
04248               YYDEBUG(353, *YYCURSOR);
04249               yych = *++YYCURSOR;
04250               if (yych != '_') goto yy186;
04251               YYDEBUG(354, *YYCURSOR);
04252               yych = *++YYCURSOR;
04253               if (yych != '_') goto yy186;
04254               YYDEBUG(355, *YYCURSOR);
04255               ++YYCURSOR;
04256               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04257                      goto yy185;
04258               }
04259               YYDEBUG(356, *YYCURSOR);
04260               yyleng = YYCURSOR - SCNG(yy_text);
04261 #line 1399 "Zend/zend_language_scanner.l"
04262               {
04263        char *class_name = NULL;
04264 
04265        if (CG(active_class_entry)) {
04266               class_name = CG(active_class_entry)->name;
04267        }
04268 
04269        if (!class_name) {
04270               class_name = "";
04271        }
04272        zendlval->value.str.len = strlen(class_name);
04273        zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len);
04274        zendlval->type = IS_STRING;
04275        return T_CLASS_C;
04276 }
04277 #line 4278 "Zend/zend_language_scanner.c"
04278 yy357:
04279               YYDEBUG(357, *YYCURSOR);
04280               yych = *++YYCURSOR;
04281               if (yych == 'L') goto yy358;
04282               if (yych != 'l') goto yy186;
04283 yy358:
04284               YYDEBUG(358, *YYCURSOR);
04285               yych = *++YYCURSOR;
04286               if (yych == 'T') goto yy359;
04287               if (yych != 't') goto yy186;
04288 yy359:
04289               YYDEBUG(359, *YYCURSOR);
04290               yych = *++YYCURSOR;
04291               if (yych != '_') goto yy186;
04292               YYDEBUG(360, *YYCURSOR);
04293               yych = *++YYCURSOR;
04294               if (yych == 'C') goto yy361;
04295               if (yych != 'c') goto yy186;
04296 yy361:
04297               YYDEBUG(361, *YYCURSOR);
04298               yych = *++YYCURSOR;
04299               if (yych == 'O') goto yy362;
04300               if (yych != 'o') goto yy186;
04301 yy362:
04302               YYDEBUG(362, *YYCURSOR);
04303               yych = *++YYCURSOR;
04304               if (yych == 'M') goto yy363;
04305               if (yych != 'm') goto yy186;
04306 yy363:
04307               YYDEBUG(363, *YYCURSOR);
04308               yych = *++YYCURSOR;
04309               if (yych == 'P') goto yy364;
04310               if (yych != 'p') goto yy186;
04311 yy364:
04312               YYDEBUG(364, *YYCURSOR);
04313               yych = *++YYCURSOR;
04314               if (yych == 'I') goto yy365;
04315               if (yych != 'i') goto yy186;
04316 yy365:
04317               YYDEBUG(365, *YYCURSOR);
04318               yych = *++YYCURSOR;
04319               if (yych == 'L') goto yy366;
04320               if (yych != 'l') goto yy186;
04321 yy366:
04322               YYDEBUG(366, *YYCURSOR);
04323               yych = *++YYCURSOR;
04324               if (yych == 'E') goto yy367;
04325               if (yych != 'e') goto yy186;
04326 yy367:
04327               YYDEBUG(367, *YYCURSOR);
04328               yych = *++YYCURSOR;
04329               if (yych == 'R') goto yy368;
04330               if (yych != 'r') goto yy186;
04331 yy368:
04332               YYDEBUG(368, *YYCURSOR);
04333               ++YYCURSOR;
04334               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04335                      goto yy185;
04336               }
04337               YYDEBUG(369, *YYCURSOR);
04338               yyleng = YYCURSOR - SCNG(yy_text);
04339 #line 1141 "Zend/zend_language_scanner.l"
04340               {
04341        return T_HALT_COMPILER;
04342 }
04343 #line 4344 "Zend/zend_language_scanner.c"
04344 yy370:
04345               YYDEBUG(370, *YYCURSOR);
04346               yych = *++YYCURSOR;
04347               if (yych == 'S') goto yy374;
04348               if (yych == 's') goto yy374;
04349               goto yy186;
04350 yy371:
04351               YYDEBUG(371, *YYCURSOR);
04352               yych = *++YYCURSOR;
04353               if (yych == 'E') goto yy372;
04354               if (yych != 'e') goto yy186;
04355 yy372:
04356               YYDEBUG(372, *YYCURSOR);
04357               ++YYCURSOR;
04358               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04359                      goto yy185;
04360               }
04361               YYDEBUG(373, *YYCURSOR);
04362               yyleng = YYCURSOR - SCNG(yy_text);
04363 #line 1125 "Zend/zend_language_scanner.l"
04364               {
04365        return T_USE;
04366 }
04367 #line 4368 "Zend/zend_language_scanner.c"
04368 yy374:
04369               YYDEBUG(374, *YYCURSOR);
04370               yych = *++YYCURSOR;
04371               if (yych == 'E') goto yy375;
04372               if (yych != 'e') goto yy186;
04373 yy375:
04374               YYDEBUG(375, *YYCURSOR);
04375               yych = *++YYCURSOR;
04376               if (yych == 'T') goto yy376;
04377               if (yych != 't') goto yy186;
04378 yy376:
04379               YYDEBUG(376, *YYCURSOR);
04380               ++YYCURSOR;
04381               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04382                      goto yy185;
04383               }
04384               YYDEBUG(377, *YYCURSOR);
04385               yyleng = YYCURSOR - SCNG(yy_text);
04386 #line 1169 "Zend/zend_language_scanner.l"
04387               {
04388        return T_UNSET;
04389 }
04390 #line 4391 "Zend/zend_language_scanner.c"
04391 yy378:
04392               YYDEBUG(378, *YYCURSOR);
04393               ++YYCURSOR;
04394               YYFILL(7);
04395               yych = *YYCURSOR;
04396 yy379:
04397               YYDEBUG(379, *YYCURSOR);
04398               if (yych <= 'S') {
04399                      if (yych <= 'D') {
04400                             if (yych <= ' ') {
04401                                    if (yych == '\t') goto yy378;
04402                                    if (yych <= 0x1F) goto yy193;
04403                                    goto yy378;
04404                             } else {
04405                                    if (yych <= 'A') {
04406                                           if (yych <= '@') goto yy193;
04407                                           goto yy383;
04408                                    } else {
04409                                           if (yych <= 'B') goto yy381;
04410                                           if (yych <= 'C') goto yy193;
04411                                           goto yy386;
04412                                    }
04413                             }
04414                      } else {
04415                             if (yych <= 'I') {
04416                                    if (yych == 'F') goto yy387;
04417                                    if (yych <= 'H') goto yy193;
04418                                    goto yy388;
04419                             } else {
04420                                    if (yych <= 'O') {
04421                                           if (yych <= 'N') goto yy193;
04422                                           goto yy382;
04423                                    } else {
04424                                           if (yych <= 'Q') goto yy193;
04425                                           if (yych <= 'R') goto yy385;
04426                                           goto yy384;
04427                                    }
04428                             }
04429                      }
04430               } else {
04431                      if (yych <= 'f') {
04432                             if (yych <= 'a') {
04433                                    if (yych == 'U') goto yy380;
04434                                    if (yych <= '`') goto yy193;
04435                                    goto yy383;
04436                             } else {
04437                                    if (yych <= 'c') {
04438                                           if (yych <= 'b') goto yy381;
04439                                           goto yy193;
04440                                    } else {
04441                                           if (yych <= 'd') goto yy386;
04442                                           if (yych <= 'e') goto yy193;
04443                                           goto yy387;
04444                                    }
04445                             }
04446                      } else {
04447                             if (yych <= 'q') {
04448                                    if (yych <= 'i') {
04449                                           if (yych <= 'h') goto yy193;
04450                                           goto yy388;
04451                                    } else {
04452                                           if (yych == 'o') goto yy382;
04453                                           goto yy193;
04454                                    }
04455                             } else {
04456                                    if (yych <= 's') {
04457                                           if (yych <= 'r') goto yy385;
04458                                           goto yy384;
04459                                    } else {
04460                                           if (yych != 'u') goto yy193;
04461                                    }
04462                             }
04463                      }
04464               }
04465 yy380:
04466               YYDEBUG(380, *YYCURSOR);
04467               yych = *++YYCURSOR;
04468               if (yych == 'N') goto yy451;
04469               if (yych == 'n') goto yy451;
04470               goto yy193;
04471 yy381:
04472               YYDEBUG(381, *YYCURSOR);
04473               yych = *++YYCURSOR;
04474               if (yych <= 'O') {
04475                      if (yych == 'I') goto yy434;
04476                      if (yych <= 'N') goto yy193;
04477                      goto yy435;
04478               } else {
04479                      if (yych <= 'i') {
04480                             if (yych <= 'h') goto yy193;
04481                             goto yy434;
04482                      } else {
04483                             if (yych == 'o') goto yy435;
04484                             goto yy193;
04485                      }
04486               }
04487 yy382:
04488               YYDEBUG(382, *YYCURSOR);
04489               yych = *++YYCURSOR;
04490               if (yych == 'B') goto yy426;
04491               if (yych == 'b') goto yy426;
04492               goto yy193;
04493 yy383:
04494               YYDEBUG(383, *YYCURSOR);
04495               yych = *++YYCURSOR;
04496               if (yych == 'R') goto yy419;
04497               if (yych == 'r') goto yy419;
04498               goto yy193;
04499 yy384:
04500               YYDEBUG(384, *YYCURSOR);
04501               yych = *++YYCURSOR;
04502               if (yych == 'T') goto yy411;
04503               if (yych == 't') goto yy411;
04504               goto yy193;
04505 yy385:
04506               YYDEBUG(385, *YYCURSOR);
04507               yych = *++YYCURSOR;
04508               if (yych == 'E') goto yy409;
04509               if (yych == 'e') goto yy409;
04510               goto yy193;
04511 yy386:
04512               YYDEBUG(386, *YYCURSOR);
04513               yych = *++YYCURSOR;
04514               if (yych == 'O') goto yy405;
04515               if (yych == 'o') goto yy405;
04516               goto yy193;
04517 yy387:
04518               YYDEBUG(387, *YYCURSOR);
04519               yych = *++YYCURSOR;
04520               if (yych == 'L') goto yy398;
04521               if (yych == 'l') goto yy398;
04522               goto yy193;
04523 yy388:
04524               YYDEBUG(388, *YYCURSOR);
04525               yych = *++YYCURSOR;
04526               if (yych == 'N') goto yy389;
04527               if (yych != 'n') goto yy193;
04528 yy389:
04529               YYDEBUG(389, *YYCURSOR);
04530               yych = *++YYCURSOR;
04531               if (yych == 'T') goto yy390;
04532               if (yych != 't') goto yy193;
04533 yy390:
04534               YYDEBUG(390, *YYCURSOR);
04535               yych = *++YYCURSOR;
04536               if (yych == 'E') goto yy391;
04537               if (yych != 'e') goto yy393;
04538 yy391:
04539               YYDEBUG(391, *YYCURSOR);
04540               yych = *++YYCURSOR;
04541               if (yych == 'G') goto yy396;
04542               if (yych == 'g') goto yy396;
04543               goto yy193;
04544 yy392:
04545               YYDEBUG(392, *YYCURSOR);
04546               ++YYCURSOR;
04547               YYFILL(1);
04548               yych = *YYCURSOR;
04549 yy393:
04550               YYDEBUG(393, *YYCURSOR);
04551               if (yych <= 0x1F) {
04552                      if (yych == '\t') goto yy392;
04553                      goto yy193;
04554               } else {
04555                      if (yych <= ' ') goto yy392;
04556                      if (yych != ')') goto yy193;
04557               }
04558               YYDEBUG(394, *YYCURSOR);
04559               ++YYCURSOR;
04560               YYDEBUG(395, *YYCURSOR);
04561               yyleng = YYCURSOR - SCNG(yy_text);
04562 #line 1069 "Zend/zend_language_scanner.l"
04563               {
04564        return T_INT_CAST;
04565 }
04566 #line 4567 "Zend/zend_language_scanner.c"
04567 yy396:
04568               YYDEBUG(396, *YYCURSOR);
04569               yych = *++YYCURSOR;
04570               if (yych == 'E') goto yy397;
04571               if (yych != 'e') goto yy193;
04572 yy397:
04573               YYDEBUG(397, *YYCURSOR);
04574               yych = *++YYCURSOR;
04575               if (yych == 'R') goto yy392;
04576               if (yych == 'r') goto yy392;
04577               goto yy193;
04578 yy398:
04579               YYDEBUG(398, *YYCURSOR);
04580               yych = *++YYCURSOR;
04581               if (yych == 'O') goto yy399;
04582               if (yych != 'o') goto yy193;
04583 yy399:
04584               YYDEBUG(399, *YYCURSOR);
04585               yych = *++YYCURSOR;
04586               if (yych == 'A') goto yy400;
04587               if (yych != 'a') goto yy193;
04588 yy400:
04589               YYDEBUG(400, *YYCURSOR);
04590               yych = *++YYCURSOR;
04591               if (yych == 'T') goto yy401;
04592               if (yych != 't') goto yy193;
04593 yy401:
04594               YYDEBUG(401, *YYCURSOR);
04595               ++YYCURSOR;
04596               YYFILL(1);
04597               yych = *YYCURSOR;
04598               YYDEBUG(402, *YYCURSOR);
04599               if (yych <= 0x1F) {
04600                      if (yych == '\t') goto yy401;
04601                      goto yy193;
04602               } else {
04603                      if (yych <= ' ') goto yy401;
04604                      if (yych != ')') goto yy193;
04605               }
04606               YYDEBUG(403, *YYCURSOR);
04607               ++YYCURSOR;
04608               YYDEBUG(404, *YYCURSOR);
04609               yyleng = YYCURSOR - SCNG(yy_text);
04610 #line 1073 "Zend/zend_language_scanner.l"
04611               {
04612        return T_DOUBLE_CAST;
04613 }
04614 #line 4615 "Zend/zend_language_scanner.c"
04615 yy405:
04616               YYDEBUG(405, *YYCURSOR);
04617               yych = *++YYCURSOR;
04618               if (yych == 'U') goto yy406;
04619               if (yych != 'u') goto yy193;
04620 yy406:
04621               YYDEBUG(406, *YYCURSOR);
04622               yych = *++YYCURSOR;
04623               if (yych == 'B') goto yy407;
04624               if (yych != 'b') goto yy193;
04625 yy407:
04626               YYDEBUG(407, *YYCURSOR);
04627               yych = *++YYCURSOR;
04628               if (yych == 'L') goto yy408;
04629               if (yych != 'l') goto yy193;
04630 yy408:
04631               YYDEBUG(408, *YYCURSOR);
04632               yych = *++YYCURSOR;
04633               if (yych == 'E') goto yy401;
04634               if (yych == 'e') goto yy401;
04635               goto yy193;
04636 yy409:
04637               YYDEBUG(409, *YYCURSOR);
04638               yych = *++YYCURSOR;
04639               if (yych == 'A') goto yy410;
04640               if (yych != 'a') goto yy193;
04641 yy410:
04642               YYDEBUG(410, *YYCURSOR);
04643               yych = *++YYCURSOR;
04644               if (yych == 'L') goto yy401;
04645               if (yych == 'l') goto yy401;
04646               goto yy193;
04647 yy411:
04648               YYDEBUG(411, *YYCURSOR);
04649               yych = *++YYCURSOR;
04650               if (yych == 'R') goto yy412;
04651               if (yych != 'r') goto yy193;
04652 yy412:
04653               YYDEBUG(412, *YYCURSOR);
04654               yych = *++YYCURSOR;
04655               if (yych == 'I') goto yy413;
04656               if (yych != 'i') goto yy193;
04657 yy413:
04658               YYDEBUG(413, *YYCURSOR);
04659               yych = *++YYCURSOR;
04660               if (yych == 'N') goto yy414;
04661               if (yych != 'n') goto yy193;
04662 yy414:
04663               YYDEBUG(414, *YYCURSOR);
04664               yych = *++YYCURSOR;
04665               if (yych == 'G') goto yy415;
04666               if (yych != 'g') goto yy193;
04667 yy415:
04668               YYDEBUG(415, *YYCURSOR);
04669               ++YYCURSOR;
04670               YYFILL(1);
04671               yych = *YYCURSOR;
04672               YYDEBUG(416, *YYCURSOR);
04673               if (yych <= 0x1F) {
04674                      if (yych == '\t') goto yy415;
04675                      goto yy193;
04676               } else {
04677                      if (yych <= ' ') goto yy415;
04678                      if (yych != ')') goto yy193;
04679               }
04680               YYDEBUG(417, *YYCURSOR);
04681               ++YYCURSOR;
04682               YYDEBUG(418, *YYCURSOR);
04683               yyleng = YYCURSOR - SCNG(yy_text);
04684 #line 1077 "Zend/zend_language_scanner.l"
04685               {
04686        return T_STRING_CAST;
04687 }
04688 #line 4689 "Zend/zend_language_scanner.c"
04689 yy419:
04690               YYDEBUG(419, *YYCURSOR);
04691               yych = *++YYCURSOR;
04692               if (yych == 'R') goto yy420;
04693               if (yych != 'r') goto yy193;
04694 yy420:
04695               YYDEBUG(420, *YYCURSOR);
04696               yych = *++YYCURSOR;
04697               if (yych == 'A') goto yy421;
04698               if (yych != 'a') goto yy193;
04699 yy421:
04700               YYDEBUG(421, *YYCURSOR);
04701               yych = *++YYCURSOR;
04702               if (yych == 'Y') goto yy422;
04703               if (yych != 'y') goto yy193;
04704 yy422:
04705               YYDEBUG(422, *YYCURSOR);
04706               ++YYCURSOR;
04707               YYFILL(1);
04708               yych = *YYCURSOR;
04709               YYDEBUG(423, *YYCURSOR);
04710               if (yych <= 0x1F) {
04711                      if (yych == '\t') goto yy422;
04712                      goto yy193;
04713               } else {
04714                      if (yych <= ' ') goto yy422;
04715                      if (yych != ')') goto yy193;
04716               }
04717               YYDEBUG(424, *YYCURSOR);
04718               ++YYCURSOR;
04719               YYDEBUG(425, *YYCURSOR);
04720               yyleng = YYCURSOR - SCNG(yy_text);
04721 #line 1085 "Zend/zend_language_scanner.l"
04722               {
04723        return T_ARRAY_CAST;
04724 }
04725 #line 4726 "Zend/zend_language_scanner.c"
04726 yy426:
04727               YYDEBUG(426, *YYCURSOR);
04728               yych = *++YYCURSOR;
04729               if (yych == 'J') goto yy427;
04730               if (yych != 'j') goto yy193;
04731 yy427:
04732               YYDEBUG(427, *YYCURSOR);
04733               yych = *++YYCURSOR;
04734               if (yych == 'E') goto yy428;
04735               if (yych != 'e') goto yy193;
04736 yy428:
04737               YYDEBUG(428, *YYCURSOR);
04738               yych = *++YYCURSOR;
04739               if (yych == 'C') goto yy429;
04740               if (yych != 'c') goto yy193;
04741 yy429:
04742               YYDEBUG(429, *YYCURSOR);
04743               yych = *++YYCURSOR;
04744               if (yych == 'T') goto yy430;
04745               if (yych != 't') goto yy193;
04746 yy430:
04747               YYDEBUG(430, *YYCURSOR);
04748               ++YYCURSOR;
04749               YYFILL(1);
04750               yych = *YYCURSOR;
04751               YYDEBUG(431, *YYCURSOR);
04752               if (yych <= 0x1F) {
04753                      if (yych == '\t') goto yy430;
04754                      goto yy193;
04755               } else {
04756                      if (yych <= ' ') goto yy430;
04757                      if (yych != ')') goto yy193;
04758               }
04759               YYDEBUG(432, *YYCURSOR);
04760               ++YYCURSOR;
04761               YYDEBUG(433, *YYCURSOR);
04762               yyleng = YYCURSOR - SCNG(yy_text);
04763 #line 1089 "Zend/zend_language_scanner.l"
04764               {
04765        return T_OBJECT_CAST;
04766 }
04767 #line 4768 "Zend/zend_language_scanner.c"
04768 yy434:
04769               YYDEBUG(434, *YYCURSOR);
04770               yych = *++YYCURSOR;
04771               if (yych == 'N') goto yy444;
04772               if (yych == 'n') goto yy444;
04773               goto yy193;
04774 yy435:
04775               YYDEBUG(435, *YYCURSOR);
04776               yych = *++YYCURSOR;
04777               if (yych == 'O') goto yy436;
04778               if (yych != 'o') goto yy193;
04779 yy436:
04780               YYDEBUG(436, *YYCURSOR);
04781               yych = *++YYCURSOR;
04782               if (yych == 'L') goto yy437;
04783               if (yych != 'l') goto yy193;
04784 yy437:
04785               YYDEBUG(437, *YYCURSOR);
04786               yych = *++YYCURSOR;
04787               if (yych == 'E') goto yy442;
04788               if (yych == 'e') goto yy442;
04789               goto yy439;
04790 yy438:
04791               YYDEBUG(438, *YYCURSOR);
04792               ++YYCURSOR;
04793               YYFILL(1);
04794               yych = *YYCURSOR;
04795 yy439:
04796               YYDEBUG(439, *YYCURSOR);
04797               if (yych <= 0x1F) {
04798                      if (yych == '\t') goto yy438;
04799                      goto yy193;
04800               } else {
04801                      if (yych <= ' ') goto yy438;
04802                      if (yych != ')') goto yy193;
04803               }
04804               YYDEBUG(440, *YYCURSOR);
04805               ++YYCURSOR;
04806               YYDEBUG(441, *YYCURSOR);
04807               yyleng = YYCURSOR - SCNG(yy_text);
04808 #line 1093 "Zend/zend_language_scanner.l"
04809               {
04810        return T_BOOL_CAST;
04811 }
04812 #line 4813 "Zend/zend_language_scanner.c"
04813 yy442:
04814               YYDEBUG(442, *YYCURSOR);
04815               yych = *++YYCURSOR;
04816               if (yych == 'A') goto yy443;
04817               if (yych != 'a') goto yy193;
04818 yy443:
04819               YYDEBUG(443, *YYCURSOR);
04820               yych = *++YYCURSOR;
04821               if (yych == 'N') goto yy438;
04822               if (yych == 'n') goto yy438;
04823               goto yy193;
04824 yy444:
04825               YYDEBUG(444, *YYCURSOR);
04826               yych = *++YYCURSOR;
04827               if (yych == 'A') goto yy445;
04828               if (yych != 'a') goto yy193;
04829 yy445:
04830               YYDEBUG(445, *YYCURSOR);
04831               yych = *++YYCURSOR;
04832               if (yych == 'R') goto yy446;
04833               if (yych != 'r') goto yy193;
04834 yy446:
04835               YYDEBUG(446, *YYCURSOR);
04836               yych = *++YYCURSOR;
04837               if (yych == 'Y') goto yy447;
04838               if (yych != 'y') goto yy193;
04839 yy447:
04840               YYDEBUG(447, *YYCURSOR);
04841               ++YYCURSOR;
04842               YYFILL(1);
04843               yych = *YYCURSOR;
04844               YYDEBUG(448, *YYCURSOR);
04845               if (yych <= 0x1F) {
04846                      if (yych == '\t') goto yy447;
04847                      goto yy193;
04848               } else {
04849                      if (yych <= ' ') goto yy447;
04850                      if (yych != ')') goto yy193;
04851               }
04852               YYDEBUG(449, *YYCURSOR);
04853               ++YYCURSOR;
04854               YYDEBUG(450, *YYCURSOR);
04855               yyleng = YYCURSOR - SCNG(yy_text);
04856 #line 1081 "Zend/zend_language_scanner.l"
04857               {
04858        return T_STRING_CAST;
04859 }
04860 #line 4861 "Zend/zend_language_scanner.c"
04861 yy451:
04862               YYDEBUG(451, *YYCURSOR);
04863               yych = *++YYCURSOR;
04864               if (yych == 'S') goto yy452;
04865               if (yych != 's') goto yy193;
04866 yy452:
04867               YYDEBUG(452, *YYCURSOR);
04868               yych = *++YYCURSOR;
04869               if (yych == 'E') goto yy453;
04870               if (yych != 'e') goto yy193;
04871 yy453:
04872               YYDEBUG(453, *YYCURSOR);
04873               yych = *++YYCURSOR;
04874               if (yych == 'T') goto yy454;
04875               if (yych != 't') goto yy193;
04876 yy454:
04877               YYDEBUG(454, *YYCURSOR);
04878               ++YYCURSOR;
04879               YYFILL(1);
04880               yych = *YYCURSOR;
04881               YYDEBUG(455, *YYCURSOR);
04882               if (yych <= 0x1F) {
04883                      if (yych == '\t') goto yy454;
04884                      goto yy193;
04885               } else {
04886                      if (yych <= ' ') goto yy454;
04887                      if (yych != ')') goto yy193;
04888               }
04889               YYDEBUG(456, *YYCURSOR);
04890               ++YYCURSOR;
04891               YYDEBUG(457, *YYCURSOR);
04892               yyleng = YYCURSOR - SCNG(yy_text);
04893 #line 1097 "Zend/zend_language_scanner.l"
04894               {
04895        return T_UNSET_CAST;
04896 }
04897 #line 4898 "Zend/zend_language_scanner.c"
04898 yy458:
04899               YYDEBUG(458, *YYCURSOR);
04900               yych = *++YYCURSOR;
04901               if (yych == 'R') goto yy459;
04902               if (yych != 'r') goto yy186;
04903 yy459:
04904               YYDEBUG(459, *YYCURSOR);
04905               ++YYCURSOR;
04906               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04907                      goto yy185;
04908               }
04909               YYDEBUG(460, *YYCURSOR);
04910               yyleng = YYCURSOR - SCNG(yy_text);
04911 #line 1065 "Zend/zend_language_scanner.l"
04912               {
04913        return T_VAR;
04914 }
04915 #line 4916 "Zend/zend_language_scanner.c"
04916 yy461:
04917               YYDEBUG(461, *YYCURSOR);
04918               yych = *++YYCURSOR;
04919               if (yych == 'M') goto yy465;
04920               if (yych == 'm') goto yy465;
04921               goto yy186;
04922 yy462:
04923               YYDEBUG(462, *YYCURSOR);
04924               yych = *++YYCURSOR;
04925               if (yych == 'W') goto yy463;
04926               if (yych != 'w') goto yy186;
04927 yy463:
04928               YYDEBUG(463, *YYCURSOR);
04929               ++YYCURSOR;
04930               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04931                      goto yy185;
04932               }
04933               YYDEBUG(464, *YYCURSOR);
04934               yyleng = YYCURSOR - SCNG(yy_text);
04935 #line 1057 "Zend/zend_language_scanner.l"
04936               {
04937        return T_NEW;
04938 }
04939 #line 4940 "Zend/zend_language_scanner.c"
04940 yy465:
04941               YYDEBUG(465, *YYCURSOR);
04942               yych = *++YYCURSOR;
04943               if (yych == 'E') goto yy466;
04944               if (yych != 'e') goto yy186;
04945 yy466:
04946               YYDEBUG(466, *YYCURSOR);
04947               yych = *++YYCURSOR;
04948               if (yych == 'S') goto yy467;
04949               if (yych != 's') goto yy186;
04950 yy467:
04951               YYDEBUG(467, *YYCURSOR);
04952               yych = *++YYCURSOR;
04953               if (yych == 'P') goto yy468;
04954               if (yych != 'p') goto yy186;
04955 yy468:
04956               YYDEBUG(468, *YYCURSOR);
04957               yych = *++YYCURSOR;
04958               if (yych == 'A') goto yy469;
04959               if (yych != 'a') goto yy186;
04960 yy469:
04961               YYDEBUG(469, *YYCURSOR);
04962               yych = *++YYCURSOR;
04963               if (yych == 'C') goto yy470;
04964               if (yych != 'c') goto yy186;
04965 yy470:
04966               YYDEBUG(470, *YYCURSOR);
04967               yych = *++YYCURSOR;
04968               if (yych == 'E') goto yy471;
04969               if (yych != 'e') goto yy186;
04970 yy471:
04971               YYDEBUG(471, *YYCURSOR);
04972               ++YYCURSOR;
04973               if (yybm[0+(yych = *YYCURSOR)] & 8) {
04974                      goto yy185;
04975               }
04976               YYDEBUG(472, *YYCURSOR);
04977               yyleng = YYCURSOR - SCNG(yy_text);
04978 #line 1121 "Zend/zend_language_scanner.l"
04979               {
04980        return T_NAMESPACE;
04981 }
04982 #line 4983 "Zend/zend_language_scanner.c"
04983 yy473:
04984               YYDEBUG(473, *YYCURSOR);
04985               ++YYCURSOR;
04986               YYDEBUG(474, *YYCURSOR);
04987               yyleng = YYCURSOR - SCNG(yy_text);
04988 #line 1049 "Zend/zend_language_scanner.l"
04989               {
04990        return T_PAAMAYIM_NEKUDOTAYIM;
04991 }
04992 #line 4993 "Zend/zend_language_scanner.c"
04993 yy475:
04994               YYDEBUG(475, *YYCURSOR);
04995               ++YYCURSOR;
04996               YYFILL(1);
04997               yych = *YYCURSOR;
04998 yy476:
04999               YYDEBUG(476, *YYCURSOR);
05000               if (yych <= '\f') {
05001                      if (yych <= 0x08) goto yy140;
05002                      if (yych <= '\n') goto yy475;
05003                      goto yy140;
05004               } else {
05005                      if (yych <= '\r') goto yy475;
05006                      if (yych == ' ') goto yy475;
05007                      goto yy140;
05008               }
05009 yy477:
05010               YYDEBUG(477, *YYCURSOR);
05011               ++YYCURSOR;
05012               YYDEBUG(478, *YYCURSOR);
05013               yyleng = YYCURSOR - SCNG(yy_text);
05014 #line 1221 "Zend/zend_language_scanner.l"
05015               {
05016        return T_MINUS_EQUAL;
05017 }
05018 #line 5019 "Zend/zend_language_scanner.c"
05019 yy479:
05020               YYDEBUG(479, *YYCURSOR);
05021               ++YYCURSOR;
05022               YYDEBUG(480, *YYCURSOR);
05023               yyleng = YYCURSOR - SCNG(yy_text);
05024 #line 1189 "Zend/zend_language_scanner.l"
05025               {
05026        return T_DEC;
05027 }
05028 #line 5029 "Zend/zend_language_scanner.c"
05029 yy481:
05030               YYDEBUG(481, *YYCURSOR);
05031               ++YYCURSOR;
05032               YYDEBUG(482, *YYCURSOR);
05033               yyleng = YYCURSOR - SCNG(yy_text);
05034 #line 1019 "Zend/zend_language_scanner.l"
05035               {
05036        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
05037        return T_OBJECT_OPERATOR;
05038 }
05039 #line 5040 "Zend/zend_language_scanner.c"
05040 yy483:
05041               YYDEBUG(483, *YYCURSOR);
05042               yych = *++YYCURSOR;
05043               if (yych <= 'O') {
05044                      if (yych == 'I') goto yy490;
05045                      if (yych <= 'N') goto yy186;
05046                      goto yy491;
05047               } else {
05048                      if (yych <= 'i') {
05049                             if (yych <= 'h') goto yy186;
05050                             goto yy490;
05051                      } else {
05052                             if (yych == 'o') goto yy491;
05053                             goto yy186;
05054                      }
05055               }
05056 yy484:
05057               YYDEBUG(484, *YYCURSOR);
05058               yych = *++YYCURSOR;
05059               if (yych == 'B') goto yy485;
05060               if (yych != 'b') goto yy186;
05061 yy485:
05062               YYDEBUG(485, *YYCURSOR);
05063               yych = *++YYCURSOR;
05064               if (yych == 'L') goto yy486;
05065               if (yych != 'l') goto yy186;
05066 yy486:
05067               YYDEBUG(486, *YYCURSOR);
05068               yych = *++YYCURSOR;
05069               if (yych == 'I') goto yy487;
05070               if (yych != 'i') goto yy186;
05071 yy487:
05072               YYDEBUG(487, *YYCURSOR);
05073               yych = *++YYCURSOR;
05074               if (yych == 'C') goto yy488;
05075               if (yych != 'c') goto yy186;
05076 yy488:
05077               YYDEBUG(488, *YYCURSOR);
05078               ++YYCURSOR;
05079               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05080                      goto yy185;
05081               }
05082               YYDEBUG(489, *YYCURSOR);
05083               yyleng = YYCURSOR - SCNG(yy_text);
05084 #line 1165 "Zend/zend_language_scanner.l"
05085               {
05086        return T_PUBLIC;
05087 }
05088 #line 5089 "Zend/zend_language_scanner.c"
05089 yy490:
05090               YYDEBUG(490, *YYCURSOR);
05091               yych = *++YYCURSOR;
05092               if (yych <= 'V') {
05093                      if (yych == 'N') goto yy499;
05094                      if (yych <= 'U') goto yy186;
05095                      goto yy500;
05096               } else {
05097                      if (yych <= 'n') {
05098                             if (yych <= 'm') goto yy186;
05099                             goto yy499;
05100                      } else {
05101                             if (yych == 'v') goto yy500;
05102                             goto yy186;
05103                      }
05104               }
05105 yy491:
05106               YYDEBUG(491, *YYCURSOR);
05107               yych = *++YYCURSOR;
05108               if (yych == 'T') goto yy492;
05109               if (yych != 't') goto yy186;
05110 yy492:
05111               YYDEBUG(492, *YYCURSOR);
05112               yych = *++YYCURSOR;
05113               if (yych == 'E') goto yy493;
05114               if (yych != 'e') goto yy186;
05115 yy493:
05116               YYDEBUG(493, *YYCURSOR);
05117               yych = *++YYCURSOR;
05118               if (yych == 'C') goto yy494;
05119               if (yych != 'c') goto yy186;
05120 yy494:
05121               YYDEBUG(494, *YYCURSOR);
05122               yych = *++YYCURSOR;
05123               if (yych == 'T') goto yy495;
05124               if (yych != 't') goto yy186;
05125 yy495:
05126               YYDEBUG(495, *YYCURSOR);
05127               yych = *++YYCURSOR;
05128               if (yych == 'E') goto yy496;
05129               if (yych != 'e') goto yy186;
05130 yy496:
05131               YYDEBUG(496, *YYCURSOR);
05132               yych = *++YYCURSOR;
05133               if (yych == 'D') goto yy497;
05134               if (yych != 'd') goto yy186;
05135 yy497:
05136               YYDEBUG(497, *YYCURSOR);
05137               ++YYCURSOR;
05138               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05139                      goto yy185;
05140               }
05141               YYDEBUG(498, *YYCURSOR);
05142               yyleng = YYCURSOR - SCNG(yy_text);
05143 #line 1161 "Zend/zend_language_scanner.l"
05144               {
05145        return T_PROTECTED;
05146 }
05147 #line 5148 "Zend/zend_language_scanner.c"
05148 yy499:
05149               YYDEBUG(499, *YYCURSOR);
05150               yych = *++YYCURSOR;
05151               if (yych == 'T') goto yy505;
05152               if (yych == 't') goto yy505;
05153               goto yy186;
05154 yy500:
05155               YYDEBUG(500, *YYCURSOR);
05156               yych = *++YYCURSOR;
05157               if (yych == 'A') goto yy501;
05158               if (yych != 'a') goto yy186;
05159 yy501:
05160               YYDEBUG(501, *YYCURSOR);
05161               yych = *++YYCURSOR;
05162               if (yych == 'T') goto yy502;
05163               if (yych != 't') goto yy186;
05164 yy502:
05165               YYDEBUG(502, *YYCURSOR);
05166               yych = *++YYCURSOR;
05167               if (yych == 'E') goto yy503;
05168               if (yych != 'e') goto yy186;
05169 yy503:
05170               YYDEBUG(503, *YYCURSOR);
05171               ++YYCURSOR;
05172               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05173                      goto yy185;
05174               }
05175               YYDEBUG(504, *YYCURSOR);
05176               yyleng = YYCURSOR - SCNG(yy_text);
05177 #line 1157 "Zend/zend_language_scanner.l"
05178               {
05179        return T_PRIVATE;
05180 }
05181 #line 5182 "Zend/zend_language_scanner.c"
05182 yy505:
05183               YYDEBUG(505, *YYCURSOR);
05184               ++YYCURSOR;
05185               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05186                      goto yy185;
05187               }
05188               YYDEBUG(506, *YYCURSOR);
05189               yyleng = YYCURSOR - SCNG(yy_text);
05190 #line 999 "Zend/zend_language_scanner.l"
05191               {
05192        return T_PRINT;
05193 }
05194 #line 5195 "Zend/zend_language_scanner.c"
05195 yy507:
05196               YYDEBUG(507, *YYCURSOR);
05197               yych = *++YYCURSOR;
05198               if (yych == 'O') goto yy512;
05199               if (yych == 'o') goto yy512;
05200               goto yy186;
05201 yy508:
05202               YYDEBUG(508, *YYCURSOR);
05203               yych = *++YYCURSOR;
05204               if (yych == 'T') goto yy509;
05205               if (yych != 't') goto yy186;
05206 yy509:
05207               YYDEBUG(509, *YYCURSOR);
05208               yych = *++YYCURSOR;
05209               if (yych == 'O') goto yy510;
05210               if (yych != 'o') goto yy186;
05211 yy510:
05212               YYDEBUG(510, *YYCURSOR);
05213               ++YYCURSOR;
05214               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05215                      goto yy185;
05216               }
05217               YYDEBUG(511, *YYCURSOR);
05218               yyleng = YYCURSOR - SCNG(yy_text);
05219 #line 991 "Zend/zend_language_scanner.l"
05220               {
05221        return T_GOTO;
05222 }
05223 #line 5224 "Zend/zend_language_scanner.c"
05224 yy512:
05225               YYDEBUG(512, *YYCURSOR);
05226               yych = *++YYCURSOR;
05227               if (yych == 'B') goto yy513;
05228               if (yych != 'b') goto yy186;
05229 yy513:
05230               YYDEBUG(513, *YYCURSOR);
05231               yych = *++YYCURSOR;
05232               if (yych == 'A') goto yy514;
05233               if (yych != 'a') goto yy186;
05234 yy514:
05235               YYDEBUG(514, *YYCURSOR);
05236               yych = *++YYCURSOR;
05237               if (yych == 'L') goto yy515;
05238               if (yych != 'l') goto yy186;
05239 yy515:
05240               YYDEBUG(515, *YYCURSOR);
05241               ++YYCURSOR;
05242               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05243                      goto yy185;
05244               }
05245               YYDEBUG(516, *YYCURSOR);
05246               yyleng = YYCURSOR - SCNG(yy_text);
05247 #line 1129 "Zend/zend_language_scanner.l"
05248               {
05249        return T_GLOBAL;
05250 }
05251 #line 5252 "Zend/zend_language_scanner.c"
05252 yy517:
05253               YYDEBUG(517, *YYCURSOR);
05254               yych = *++YYCURSOR;
05255               if (yych == '<') goto yy525;
05256               goto yy193;
05257 yy518:
05258               YYDEBUG(518, *YYCURSOR);
05259               yych = *++YYCURSOR;
05260               goto yy180;
05261 yy519:
05262               YYDEBUG(519, *YYCURSOR);
05263               yych = *++YYCURSOR;
05264               goto yy178;
05265 yy520:
05266               YYDEBUG(520, *YYCURSOR);
05267               yych = *++YYCURSOR;
05268               if (yych == 'E') goto yy521;
05269               if (yych != 'e') goto yy186;
05270 yy521:
05271               YYDEBUG(521, *YYCURSOR);
05272               yych = *++YYCURSOR;
05273               if (yych == 'A') goto yy522;
05274               if (yych != 'a') goto yy186;
05275 yy522:
05276               YYDEBUG(522, *YYCURSOR);
05277               yych = *++YYCURSOR;
05278               if (yych == 'K') goto yy523;
05279               if (yych != 'k') goto yy186;
05280 yy523:
05281               YYDEBUG(523, *YYCURSOR);
05282               ++YYCURSOR;
05283               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05284                      goto yy185;
05285               }
05286               YYDEBUG(524, *YYCURSOR);
05287               yyleng = YYCURSOR - SCNG(yy_text);
05288 #line 983 "Zend/zend_language_scanner.l"
05289               {
05290        return T_BREAK;
05291 }
05292 #line 5293 "Zend/zend_language_scanner.c"
05293 yy525:
05294               YYDEBUG(525, *YYCURSOR);
05295               yych = *++YYCURSOR;
05296               if (yych == '<') goto yy265;
05297               goto yy193;
05298 yy526:
05299               YYDEBUG(526, *YYCURSOR);
05300               yych = *++YYCURSOR;
05301               if (yych == 'A') goto yy533;
05302               if (yych == 'a') goto yy533;
05303               goto yy186;
05304 yy527:
05305               YYDEBUG(527, *YYCURSOR);
05306               yych = *++YYCURSOR;
05307               if (yych == 'I') goto yy528;
05308               if (yych != 'i') goto yy186;
05309 yy528:
05310               YYDEBUG(528, *YYCURSOR);
05311               yych = *++YYCURSOR;
05312               if (yych == 'T') goto yy529;
05313               if (yych != 't') goto yy186;
05314 yy529:
05315               YYDEBUG(529, *YYCURSOR);
05316               yych = *++YYCURSOR;
05317               if (yych == 'C') goto yy530;
05318               if (yych != 'c') goto yy186;
05319 yy530:
05320               YYDEBUG(530, *YYCURSOR);
05321               yych = *++YYCURSOR;
05322               if (yych == 'H') goto yy531;
05323               if (yych != 'h') goto yy186;
05324 yy531:
05325               YYDEBUG(531, *YYCURSOR);
05326               ++YYCURSOR;
05327               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05328                      goto yy185;
05329               }
05330               YYDEBUG(532, *YYCURSOR);
05331               yyleng = YYCURSOR - SCNG(yy_text);
05332 #line 967 "Zend/zend_language_scanner.l"
05333               {
05334        return T_SWITCH;
05335 }
05336 #line 5337 "Zend/zend_language_scanner.c"
05337 yy533:
05338               YYDEBUG(533, *YYCURSOR);
05339               yych = *++YYCURSOR;
05340               if (yych == 'T') goto yy534;
05341               if (yych != 't') goto yy186;
05342 yy534:
05343               YYDEBUG(534, *YYCURSOR);
05344               yych = *++YYCURSOR;
05345               if (yych == 'I') goto yy535;
05346               if (yych != 'i') goto yy186;
05347 yy535:
05348               YYDEBUG(535, *YYCURSOR);
05349               yych = *++YYCURSOR;
05350               if (yych == 'C') goto yy536;
05351               if (yych != 'c') goto yy186;
05352 yy536:
05353               YYDEBUG(536, *YYCURSOR);
05354               ++YYCURSOR;
05355               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05356                      goto yy185;
05357               }
05358               YYDEBUG(537, *YYCURSOR);
05359               yyleng = YYCURSOR - SCNG(yy_text);
05360 #line 1145 "Zend/zend_language_scanner.l"
05361               {
05362        return T_STATIC;
05363 }
05364 #line 5365 "Zend/zend_language_scanner.c"
05365 yy538:
05366               YYDEBUG(538, *YYCURSOR);
05367               yych = *++YYCURSOR;
05368               if (yych == 'S') goto yy549;
05369               if (yych == 's') goto yy549;
05370               goto yy186;
05371 yy539:
05372               YYDEBUG(539, *YYCURSOR);
05373               yych = *++YYCURSOR;
05374               if (yych == 'D') goto yy547;
05375               if (yych == 'd') goto yy547;
05376               goto yy186;
05377 yy540:
05378               YYDEBUG(540, *YYCURSOR);
05379               yych = *++YYCURSOR;
05380               if (yych == 'R') goto yy543;
05381               if (yych == 'r') goto yy543;
05382               goto yy186;
05383 yy541:
05384               YYDEBUG(541, *YYCURSOR);
05385               ++YYCURSOR;
05386               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05387                      goto yy185;
05388               }
05389               YYDEBUG(542, *YYCURSOR);
05390               yyleng = YYCURSOR - SCNG(yy_text);
05391 #line 963 "Zend/zend_language_scanner.l"
05392               {
05393        return T_AS;
05394 }
05395 #line 5396 "Zend/zend_language_scanner.c"
05396 yy543:
05397               YYDEBUG(543, *YYCURSOR);
05398               yych = *++YYCURSOR;
05399               if (yych == 'A') goto yy544;
05400               if (yych != 'a') goto yy186;
05401 yy544:
05402               YYDEBUG(544, *YYCURSOR);
05403               yych = *++YYCURSOR;
05404               if (yych == 'Y') goto yy545;
05405               if (yych != 'y') goto yy186;
05406 yy545:
05407               YYDEBUG(545, *YYCURSOR);
05408               ++YYCURSOR;
05409               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05410                      goto yy185;
05411               }
05412               YYDEBUG(546, *YYCURSOR);
05413               yyleng = YYCURSOR - SCNG(yy_text);
05414 #line 1181 "Zend/zend_language_scanner.l"
05415               {
05416        return T_ARRAY;
05417 }
05418 #line 5419 "Zend/zend_language_scanner.c"
05419 yy547:
05420               YYDEBUG(547, *YYCURSOR);
05421               ++YYCURSOR;
05422               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05423                      goto yy185;
05424               }
05425               YYDEBUG(548, *YYCURSOR);
05426               yyleng = YYCURSOR - SCNG(yy_text);
05427 #line 1273 "Zend/zend_language_scanner.l"
05428               {
05429        return T_LOGICAL_AND;
05430 }
05431 #line 5432 "Zend/zend_language_scanner.c"
05432 yy549:
05433               YYDEBUG(549, *YYCURSOR);
05434               yych = *++YYCURSOR;
05435               if (yych == 'T') goto yy550;
05436               if (yych != 't') goto yy186;
05437 yy550:
05438               YYDEBUG(550, *YYCURSOR);
05439               yych = *++YYCURSOR;
05440               if (yych == 'R') goto yy551;
05441               if (yych != 'r') goto yy186;
05442 yy551:
05443               YYDEBUG(551, *YYCURSOR);
05444               yych = *++YYCURSOR;
05445               if (yych == 'A') goto yy552;
05446               if (yych != 'a') goto yy186;
05447 yy552:
05448               YYDEBUG(552, *YYCURSOR);
05449               yych = *++YYCURSOR;
05450               if (yych == 'C') goto yy553;
05451               if (yych != 'c') goto yy186;
05452 yy553:
05453               YYDEBUG(553, *YYCURSOR);
05454               yych = *++YYCURSOR;
05455               if (yych == 'T') goto yy554;
05456               if (yych != 't') goto yy186;
05457 yy554:
05458               YYDEBUG(554, *YYCURSOR);
05459               ++YYCURSOR;
05460               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05461                      goto yy185;
05462               }
05463               YYDEBUG(555, *YYCURSOR);
05464               yyleng = YYCURSOR - SCNG(yy_text);
05465 #line 1149 "Zend/zend_language_scanner.l"
05466               {
05467        return T_ABSTRACT;
05468 }
05469 #line 5470 "Zend/zend_language_scanner.c"
05470 yy556:
05471               YYDEBUG(556, *YYCURSOR);
05472               yych = *++YYCURSOR;
05473               if (yych == 'I') goto yy557;
05474               if (yych != 'i') goto yy186;
05475 yy557:
05476               YYDEBUG(557, *YYCURSOR);
05477               yych = *++YYCURSOR;
05478               if (yych == 'L') goto yy558;
05479               if (yych != 'l') goto yy186;
05480 yy558:
05481               YYDEBUG(558, *YYCURSOR);
05482               yych = *++YYCURSOR;
05483               if (yych == 'E') goto yy559;
05484               if (yych != 'e') goto yy186;
05485 yy559:
05486               YYDEBUG(559, *YYCURSOR);
05487               ++YYCURSOR;
05488               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05489                      goto yy185;
05490               }
05491               YYDEBUG(560, *YYCURSOR);
05492               yyleng = YYCURSOR - SCNG(yy_text);
05493 #line 923 "Zend/zend_language_scanner.l"
05494               {
05495        return T_WHILE;
05496 }
05497 #line 5498 "Zend/zend_language_scanner.c"
05498 yy561:
05499               YYDEBUG(561, *YYCURSOR);
05500               ++YYCURSOR;
05501               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05502                      goto yy185;
05503               }
05504               YYDEBUG(562, *YYCURSOR);
05505               yyleng = YYCURSOR - SCNG(yy_text);
05506 #line 907 "Zend/zend_language_scanner.l"
05507               {
05508        return T_IF;
05509 }
05510 #line 5511 "Zend/zend_language_scanner.c"
05511 yy563:
05512               YYDEBUG(563, *YYCURSOR);
05513               yych = *++YYCURSOR;
05514               if (yych == 'P') goto yy599;
05515               if (yych == 'p') goto yy599;
05516               goto yy186;
05517 yy564:
05518               YYDEBUG(564, *YYCURSOR);
05519               yych = *++YYCURSOR;
05520               if (yych <= 'T') {
05521                      if (yych <= 'C') {
05522                             if (yych <= 'B') goto yy186;
05523                             goto yy572;
05524                      } else {
05525                             if (yych <= 'R') goto yy186;
05526                             if (yych <= 'S') goto yy570;
05527                             goto yy571;
05528                      }
05529               } else {
05530                      if (yych <= 'r') {
05531                             if (yych == 'c') goto yy572;
05532                             goto yy186;
05533                      } else {
05534                             if (yych <= 's') goto yy570;
05535                             if (yych <= 't') goto yy571;
05536                             goto yy186;
05537                      }
05538               }
05539 yy565:
05540               YYDEBUG(565, *YYCURSOR);
05541               yych = *++YYCURSOR;
05542               if (yych == 'S') goto yy566;
05543               if (yych != 's') goto yy186;
05544 yy566:
05545               YYDEBUG(566, *YYCURSOR);
05546               yych = *++YYCURSOR;
05547               if (yych == 'E') goto yy567;
05548               if (yych != 'e') goto yy186;
05549 yy567:
05550               YYDEBUG(567, *YYCURSOR);
05551               yych = *++YYCURSOR;
05552               if (yych == 'T') goto yy568;
05553               if (yych != 't') goto yy186;
05554 yy568:
05555               YYDEBUG(568, *YYCURSOR);
05556               ++YYCURSOR;
05557               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05558                      goto yy185;
05559               }
05560               YYDEBUG(569, *YYCURSOR);
05561               yyleng = YYCURSOR - SCNG(yy_text);
05562 #line 1133 "Zend/zend_language_scanner.l"
05563               {
05564        return T_ISSET;
05565 }
05566 #line 5567 "Zend/zend_language_scanner.c"
05567 yy570:
05568               YYDEBUG(570, *YYCURSOR);
05569               yych = *++YYCURSOR;
05570               if (yych == 'T') goto yy591;
05571               if (yych == 't') goto yy591;
05572               goto yy186;
05573 yy571:
05574               YYDEBUG(571, *YYCURSOR);
05575               yych = *++YYCURSOR;
05576               if (yych == 'E') goto yy584;
05577               if (yych == 'e') goto yy584;
05578               goto yy186;
05579 yy572:
05580               YYDEBUG(572, *YYCURSOR);
05581               yych = *++YYCURSOR;
05582               if (yych == 'L') goto yy573;
05583               if (yych != 'l') goto yy186;
05584 yy573:
05585               YYDEBUG(573, *YYCURSOR);
05586               yych = *++YYCURSOR;
05587               if (yych == 'U') goto yy574;
05588               if (yych != 'u') goto yy186;
05589 yy574:
05590               YYDEBUG(574, *YYCURSOR);
05591               yych = *++YYCURSOR;
05592               if (yych == 'D') goto yy575;
05593               if (yych != 'd') goto yy186;
05594 yy575:
05595               YYDEBUG(575, *YYCURSOR);
05596               yych = *++YYCURSOR;
05597               if (yych == 'E') goto yy576;
05598               if (yych != 'e') goto yy186;
05599 yy576:
05600               YYDEBUG(576, *YYCURSOR);
05601               ++YYCURSOR;
05602               if ((yych = *YYCURSOR) <= '^') {
05603                      if (yych <= '9') {
05604                             if (yych >= '0') goto yy185;
05605                      } else {
05606                             if (yych <= '@') goto yy577;
05607                             if (yych <= 'Z') goto yy185;
05608                      }
05609               } else {
05610                      if (yych <= '`') {
05611                             if (yych <= '_') goto yy578;
05612                      } else {
05613                             if (yych <= 'z') goto yy185;
05614                             if (yych >= 0x7F) goto yy185;
05615                      }
05616               }
05617 yy577:
05618               YYDEBUG(577, *YYCURSOR);
05619               yyleng = YYCURSOR - SCNG(yy_text);
05620 #line 1105 "Zend/zend_language_scanner.l"
05621               {
05622        return T_INCLUDE;
05623 }
05624 #line 5625 "Zend/zend_language_scanner.c"
05625 yy578:
05626               YYDEBUG(578, *YYCURSOR);
05627               yych = *++YYCURSOR;
05628               if (yych == 'O') goto yy579;
05629               if (yych != 'o') goto yy186;
05630 yy579:
05631               YYDEBUG(579, *YYCURSOR);
05632               yych = *++YYCURSOR;
05633               if (yych == 'N') goto yy580;
05634               if (yych != 'n') goto yy186;
05635 yy580:
05636               YYDEBUG(580, *YYCURSOR);
05637               yych = *++YYCURSOR;
05638               if (yych == 'C') goto yy581;
05639               if (yych != 'c') goto yy186;
05640 yy581:
05641               YYDEBUG(581, *YYCURSOR);
05642               yych = *++YYCURSOR;
05643               if (yych == 'E') goto yy582;
05644               if (yych != 'e') goto yy186;
05645 yy582:
05646               YYDEBUG(582, *YYCURSOR);
05647               ++YYCURSOR;
05648               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05649                      goto yy185;
05650               }
05651               YYDEBUG(583, *YYCURSOR);
05652               yyleng = YYCURSOR - SCNG(yy_text);
05653 #line 1109 "Zend/zend_language_scanner.l"
05654               {
05655        return T_INCLUDE_ONCE;
05656 }
05657 #line 5658 "Zend/zend_language_scanner.c"
05658 yy584:
05659               YYDEBUG(584, *YYCURSOR);
05660               yych = *++YYCURSOR;
05661               if (yych == 'R') goto yy585;
05662               if (yych != 'r') goto yy186;
05663 yy585:
05664               YYDEBUG(585, *YYCURSOR);
05665               yych = *++YYCURSOR;
05666               if (yych == 'F') goto yy586;
05667               if (yych != 'f') goto yy186;
05668 yy586:
05669               YYDEBUG(586, *YYCURSOR);
05670               yych = *++YYCURSOR;
05671               if (yych == 'A') goto yy587;
05672               if (yych != 'a') goto yy186;
05673 yy587:
05674               YYDEBUG(587, *YYCURSOR);
05675               yych = *++YYCURSOR;
05676               if (yych == 'C') goto yy588;
05677               if (yych != 'c') goto yy186;
05678 yy588:
05679               YYDEBUG(588, *YYCURSOR);
05680               yych = *++YYCURSOR;
05681               if (yych == 'E') goto yy589;
05682               if (yych != 'e') goto yy186;
05683 yy589:
05684               YYDEBUG(589, *YYCURSOR);
05685               ++YYCURSOR;
05686               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05687                      goto yy185;
05688               }
05689               YYDEBUG(590, *YYCURSOR);
05690               yyleng = YYCURSOR - SCNG(yy_text);
05691 #line 1007 "Zend/zend_language_scanner.l"
05692               {
05693        return T_INTERFACE;
05694 }
05695 #line 5696 "Zend/zend_language_scanner.c"
05696 yy591:
05697               YYDEBUG(591, *YYCURSOR);
05698               yych = *++YYCURSOR;
05699               if (yych == 'A') goto yy592;
05700               if (yych != 'a') goto yy186;
05701 yy592:
05702               YYDEBUG(592, *YYCURSOR);
05703               yych = *++YYCURSOR;
05704               if (yych == 'N') goto yy593;
05705               if (yych != 'n') goto yy186;
05706 yy593:
05707               YYDEBUG(593, *YYCURSOR);
05708               yych = *++YYCURSOR;
05709               if (yych == 'C') goto yy594;
05710               if (yych != 'c') goto yy186;
05711 yy594:
05712               YYDEBUG(594, *YYCURSOR);
05713               yych = *++YYCURSOR;
05714               if (yych == 'E') goto yy595;
05715               if (yych != 'e') goto yy186;
05716 yy595:
05717               YYDEBUG(595, *YYCURSOR);
05718               yych = *++YYCURSOR;
05719               if (yych == 'O') goto yy596;
05720               if (yych != 'o') goto yy186;
05721 yy596:
05722               YYDEBUG(596, *YYCURSOR);
05723               yych = *++YYCURSOR;
05724               if (yych == 'F') goto yy597;
05725               if (yych != 'f') goto yy186;
05726 yy597:
05727               YYDEBUG(597, *YYCURSOR);
05728               ++YYCURSOR;
05729               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05730                      goto yy185;
05731               }
05732               YYDEBUG(598, *YYCURSOR);
05733               yyleng = YYCURSOR - SCNG(yy_text);
05734 #line 959 "Zend/zend_language_scanner.l"
05735               {
05736        return T_INSTANCEOF;
05737 }
05738 #line 5739 "Zend/zend_language_scanner.c"
05739 yy599:
05740               YYDEBUG(599, *YYCURSOR);
05741               yych = *++YYCURSOR;
05742               if (yych == 'L') goto yy600;
05743               if (yych != 'l') goto yy186;
05744 yy600:
05745               YYDEBUG(600, *YYCURSOR);
05746               yych = *++YYCURSOR;
05747               if (yych == 'E') goto yy601;
05748               if (yych != 'e') goto yy186;
05749 yy601:
05750               YYDEBUG(601, *YYCURSOR);
05751               yych = *++YYCURSOR;
05752               if (yych == 'M') goto yy602;
05753               if (yych != 'm') goto yy186;
05754 yy602:
05755               YYDEBUG(602, *YYCURSOR);
05756               yych = *++YYCURSOR;
05757               if (yych == 'E') goto yy603;
05758               if (yych != 'e') goto yy186;
05759 yy603:
05760               YYDEBUG(603, *YYCURSOR);
05761               yych = *++YYCURSOR;
05762               if (yych == 'N') goto yy604;
05763               if (yych != 'n') goto yy186;
05764 yy604:
05765               YYDEBUG(604, *YYCURSOR);
05766               yych = *++YYCURSOR;
05767               if (yych == 'T') goto yy605;
05768               if (yych != 't') goto yy186;
05769 yy605:
05770               YYDEBUG(605, *YYCURSOR);
05771               yych = *++YYCURSOR;
05772               if (yych == 'S') goto yy606;
05773               if (yych != 's') goto yy186;
05774 yy606:
05775               YYDEBUG(606, *YYCURSOR);
05776               ++YYCURSOR;
05777               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05778                      goto yy185;
05779               }
05780               YYDEBUG(607, *YYCURSOR);
05781               yyleng = YYCURSOR - SCNG(yy_text);
05782 #line 1015 "Zend/zend_language_scanner.l"
05783               {
05784        return T_IMPLEMENTS;
05785 }
05786 #line 5787 "Zend/zend_language_scanner.c"
05787 yy608:
05788               YYDEBUG(608, *YYCURSOR);
05789               yych = *++YYCURSOR;
05790               if (yych == 'R') goto yy612;
05791               if (yych == 'r') goto yy612;
05792               goto yy186;
05793 yy609:
05794               YYDEBUG(609, *YYCURSOR);
05795               yych = *++YYCURSOR;
05796               if (yych == 'Y') goto yy610;
05797               if (yych != 'y') goto yy186;
05798 yy610:
05799               YYDEBUG(610, *YYCURSOR);
05800               ++YYCURSOR;
05801               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05802                      goto yy185;
05803               }
05804               YYDEBUG(611, *YYCURSOR);
05805               yyleng = YYCURSOR - SCNG(yy_text);
05806 #line 895 "Zend/zend_language_scanner.l"
05807               {
05808        return T_TRY;
05809 }
05810 #line 5811 "Zend/zend_language_scanner.c"
05811 yy612:
05812               YYDEBUG(612, *YYCURSOR);
05813               yych = *++YYCURSOR;
05814               if (yych == 'O') goto yy613;
05815               if (yych != 'o') goto yy186;
05816 yy613:
05817               YYDEBUG(613, *YYCURSOR);
05818               yych = *++YYCURSOR;
05819               if (yych == 'W') goto yy614;
05820               if (yych != 'w') goto yy186;
05821 yy614:
05822               YYDEBUG(614, *YYCURSOR);
05823               ++YYCURSOR;
05824               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05825                      goto yy185;
05826               }
05827               YYDEBUG(615, *YYCURSOR);
05828               yyleng = YYCURSOR - SCNG(yy_text);
05829 #line 903 "Zend/zend_language_scanner.l"
05830               {
05831        return T_THROW;
05832 }
05833 #line 5834 "Zend/zend_language_scanner.c"
05834 yy616:
05835               YYDEBUG(616, *YYCURSOR);
05836               yych = *++YYCURSOR;
05837               if (yych <= 'T') {
05838                      if (yych == 'Q') goto yy618;
05839                      if (yych <= 'S') goto yy186;
05840               } else {
05841                      if (yych <= 'q') {
05842                             if (yych <= 'p') goto yy186;
05843                             goto yy618;
05844                      } else {
05845                             if (yych != 't') goto yy186;
05846                      }
05847               }
05848               YYDEBUG(617, *YYCURSOR);
05849               yych = *++YYCURSOR;
05850               if (yych == 'U') goto yy630;
05851               if (yych == 'u') goto yy630;
05852               goto yy186;
05853 yy618:
05854               YYDEBUG(618, *YYCURSOR);
05855               yych = *++YYCURSOR;
05856               if (yych == 'U') goto yy619;
05857               if (yych != 'u') goto yy186;
05858 yy619:
05859               YYDEBUG(619, *YYCURSOR);
05860               yych = *++YYCURSOR;
05861               if (yych == 'I') goto yy620;
05862               if (yych != 'i') goto yy186;
05863 yy620:
05864               YYDEBUG(620, *YYCURSOR);
05865               yych = *++YYCURSOR;
05866               if (yych == 'R') goto yy621;
05867               if (yych != 'r') goto yy186;
05868 yy621:
05869               YYDEBUG(621, *YYCURSOR);
05870               yych = *++YYCURSOR;
05871               if (yych == 'E') goto yy622;
05872               if (yych != 'e') goto yy186;
05873 yy622:
05874               YYDEBUG(622, *YYCURSOR);
05875               ++YYCURSOR;
05876               if ((yych = *YYCURSOR) <= '^') {
05877                      if (yych <= '9') {
05878                             if (yych >= '0') goto yy185;
05879                      } else {
05880                             if (yych <= '@') goto yy623;
05881                             if (yych <= 'Z') goto yy185;
05882                      }
05883               } else {
05884                      if (yych <= '`') {
05885                             if (yych <= '_') goto yy624;
05886                      } else {
05887                             if (yych <= 'z') goto yy185;
05888                             if (yych >= 0x7F) goto yy185;
05889                      }
05890               }
05891 yy623:
05892               YYDEBUG(623, *YYCURSOR);
05893               yyleng = YYCURSOR - SCNG(yy_text);
05894 #line 1113 "Zend/zend_language_scanner.l"
05895               {
05896        return T_REQUIRE;
05897 }
05898 #line 5899 "Zend/zend_language_scanner.c"
05899 yy624:
05900               YYDEBUG(624, *YYCURSOR);
05901               yych = *++YYCURSOR;
05902               if (yych == 'O') goto yy625;
05903               if (yych != 'o') goto yy186;
05904 yy625:
05905               YYDEBUG(625, *YYCURSOR);
05906               yych = *++YYCURSOR;
05907               if (yych == 'N') goto yy626;
05908               if (yych != 'n') goto yy186;
05909 yy626:
05910               YYDEBUG(626, *YYCURSOR);
05911               yych = *++YYCURSOR;
05912               if (yych == 'C') goto yy627;
05913               if (yych != 'c') goto yy186;
05914 yy627:
05915               YYDEBUG(627, *YYCURSOR);
05916               yych = *++YYCURSOR;
05917               if (yych == 'E') goto yy628;
05918               if (yych != 'e') goto yy186;
05919 yy628:
05920               YYDEBUG(628, *YYCURSOR);
05921               ++YYCURSOR;
05922               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05923                      goto yy185;
05924               }
05925               YYDEBUG(629, *YYCURSOR);
05926               yyleng = YYCURSOR - SCNG(yy_text);
05927 #line 1117 "Zend/zend_language_scanner.l"
05928               {
05929        return T_REQUIRE_ONCE;
05930 }
05931 #line 5932 "Zend/zend_language_scanner.c"
05932 yy630:
05933               YYDEBUG(630, *YYCURSOR);
05934               yych = *++YYCURSOR;
05935               if (yych == 'R') goto yy631;
05936               if (yych != 'r') goto yy186;
05937 yy631:
05938               YYDEBUG(631, *YYCURSOR);
05939               yych = *++YYCURSOR;
05940               if (yych == 'N') goto yy632;
05941               if (yych != 'n') goto yy186;
05942 yy632:
05943               YYDEBUG(632, *YYCURSOR);
05944               ++YYCURSOR;
05945               if (yybm[0+(yych = *YYCURSOR)] & 8) {
05946                      goto yy185;
05947               }
05948               YYDEBUG(633, *YYCURSOR);
05949               yyleng = YYCURSOR - SCNG(yy_text);
05950 #line 891 "Zend/zend_language_scanner.l"
05951               {
05952        return T_RETURN;
05953 }
05954 #line 5955 "Zend/zend_language_scanner.c"
05955 yy634:
05956               YYDEBUG(634, *YYCURSOR);
05957               yych = *++YYCURSOR;
05958               if (yych <= 'T') {
05959                      if (yych <= 'R') goto yy186;
05960                      if (yych <= 'S') goto yy656;
05961                      goto yy655;
05962               } else {
05963                      if (yych <= 'r') goto yy186;
05964                      if (yych <= 's') goto yy656;
05965                      if (yych <= 't') goto yy655;
05966                      goto yy186;
05967               }
05968 yy635:
05969               YYDEBUG(635, *YYCURSOR);
05970               yych = *++YYCURSOR;
05971               if (yych <= 'O') {
05972                      if (yych == 'A') goto yy647;
05973                      if (yych <= 'N') goto yy186;
05974                      goto yy648;
05975               } else {
05976                      if (yych <= 'a') {
05977                             if (yych <= '`') goto yy186;
05978                             goto yy647;
05979                      } else {
05980                             if (yych == 'o') goto yy648;
05981                             goto yy186;
05982                      }
05983               }
05984 yy636:
05985               YYDEBUG(636, *YYCURSOR);
05986               yych = *++YYCURSOR;
05987               if (yych == 'N') goto yy637;
05988               if (yych != 'n') goto yy186;
05989 yy637:
05990               YYDEBUG(637, *YYCURSOR);
05991               yych = *++YYCURSOR;
05992               if (yych <= 'T') {
05993                      if (yych <= 'R') goto yy186;
05994                      if (yych >= 'T') goto yy639;
05995               } else {
05996                      if (yych <= 'r') goto yy186;
05997                      if (yych <= 's') goto yy638;
05998                      if (yych <= 't') goto yy639;
05999                      goto yy186;
06000               }
06001 yy638:
06002               YYDEBUG(638, *YYCURSOR);
06003               yych = *++YYCURSOR;
06004               if (yych == 'T') goto yy645;
06005               if (yych == 't') goto yy645;
06006               goto yy186;
06007 yy639:
06008               YYDEBUG(639, *YYCURSOR);
06009               yych = *++YYCURSOR;
06010               if (yych == 'I') goto yy640;
06011               if (yych != 'i') goto yy186;
06012 yy640:
06013               YYDEBUG(640, *YYCURSOR);
06014               yych = *++YYCURSOR;
06015               if (yych == 'N') goto yy641;
06016               if (yych != 'n') goto yy186;
06017 yy641:
06018               YYDEBUG(641, *YYCURSOR);
06019               yych = *++YYCURSOR;
06020               if (yych == 'U') goto yy642;
06021               if (yych != 'u') goto yy186;
06022 yy642:
06023               YYDEBUG(642, *YYCURSOR);
06024               yych = *++YYCURSOR;
06025               if (yych == 'E') goto yy643;
06026               if (yych != 'e') goto yy186;
06027 yy643:
06028               YYDEBUG(643, *YYCURSOR);
06029               ++YYCURSOR;
06030               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06031                      goto yy185;
06032               }
06033               YYDEBUG(644, *YYCURSOR);
06034               yyleng = YYCURSOR - SCNG(yy_text);
06035 #line 987 "Zend/zend_language_scanner.l"
06036               {
06037        return T_CONTINUE;
06038 }
06039 #line 6040 "Zend/zend_language_scanner.c"
06040 yy645:
06041               YYDEBUG(645, *YYCURSOR);
06042               ++YYCURSOR;
06043               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06044                      goto yy185;
06045               }
06046               YYDEBUG(646, *YYCURSOR);
06047               yyleng = YYCURSOR - SCNG(yy_text);
06048 #line 887 "Zend/zend_language_scanner.l"
06049               {
06050        return T_CONST;
06051 }
06052 #line 6053 "Zend/zend_language_scanner.c"
06053 yy647:
06054               YYDEBUG(647, *YYCURSOR);
06055               yych = *++YYCURSOR;
06056               if (yych == 'S') goto yy652;
06057               if (yych == 's') goto yy652;
06058               goto yy186;
06059 yy648:
06060               YYDEBUG(648, *YYCURSOR);
06061               yych = *++YYCURSOR;
06062               if (yych == 'N') goto yy649;
06063               if (yych != 'n') goto yy186;
06064 yy649:
06065               YYDEBUG(649, *YYCURSOR);
06066               yych = *++YYCURSOR;
06067               if (yych == 'E') goto yy650;
06068               if (yych != 'e') goto yy186;
06069 yy650:
06070               YYDEBUG(650, *YYCURSOR);
06071               ++YYCURSOR;
06072               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06073                      goto yy185;
06074               }
06075               YYDEBUG(651, *YYCURSOR);
06076               yyleng = YYCURSOR - SCNG(yy_text);
06077 #line 1061 "Zend/zend_language_scanner.l"
06078               {
06079        return T_CLONE;
06080 }
06081 #line 6082 "Zend/zend_language_scanner.c"
06082 yy652:
06083               YYDEBUG(652, *YYCURSOR);
06084               yych = *++YYCURSOR;
06085               if (yych == 'S') goto yy653;
06086               if (yych != 's') goto yy186;
06087 yy653:
06088               YYDEBUG(653, *YYCURSOR);
06089               ++YYCURSOR;
06090               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06091                      goto yy185;
06092               }
06093               YYDEBUG(654, *YYCURSOR);
06094               yyleng = YYCURSOR - SCNG(yy_text);
06095 #line 1003 "Zend/zend_language_scanner.l"
06096               {
06097        return T_CLASS;
06098 }
06099 #line 6100 "Zend/zend_language_scanner.c"
06100 yy655:
06101               YYDEBUG(655, *YYCURSOR);
06102               yych = *++YYCURSOR;
06103               if (yych == 'C') goto yy659;
06104               if (yych == 'c') goto yy659;
06105               goto yy186;
06106 yy656:
06107               YYDEBUG(656, *YYCURSOR);
06108               yych = *++YYCURSOR;
06109               if (yych == 'E') goto yy657;
06110               if (yych != 'e') goto yy186;
06111 yy657:
06112               YYDEBUG(657, *YYCURSOR);
06113               ++YYCURSOR;
06114               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06115                      goto yy185;
06116               }
06117               YYDEBUG(658, *YYCURSOR);
06118               yyleng = YYCURSOR - SCNG(yy_text);
06119 #line 975 "Zend/zend_language_scanner.l"
06120               {
06121        return T_CASE;
06122 }
06123 #line 6124 "Zend/zend_language_scanner.c"
06124 yy659:
06125               YYDEBUG(659, *YYCURSOR);
06126               yych = *++YYCURSOR;
06127               if (yych == 'H') goto yy660;
06128               if (yych != 'h') goto yy186;
06129 yy660:
06130               YYDEBUG(660, *YYCURSOR);
06131               ++YYCURSOR;
06132               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06133                      goto yy185;
06134               }
06135               YYDEBUG(661, *YYCURSOR);
06136               yyleng = YYCURSOR - SCNG(yy_text);
06137 #line 899 "Zend/zend_language_scanner.l"
06138               {
06139        return T_CATCH;
06140 }
06141 #line 6142 "Zend/zend_language_scanner.c"
06142 yy662:
06143               YYDEBUG(662, *YYCURSOR);
06144               yych = *++YYCURSOR;
06145               if (yych == 'N') goto yy679;
06146               if (yych == 'n') goto yy679;
06147               goto yy186;
06148 yy663:
06149               YYDEBUG(663, *YYCURSOR);
06150               yych = *++YYCURSOR;
06151               if (yych == 'R') goto yy672;
06152               if (yych == 'r') goto yy672;
06153               goto yy186;
06154 yy664:
06155               YYDEBUG(664, *YYCURSOR);
06156               yych = *++YYCURSOR;
06157               if (yych == 'N') goto yy665;
06158               if (yych != 'n') goto yy186;
06159 yy665:
06160               YYDEBUG(665, *YYCURSOR);
06161               yych = *++YYCURSOR;
06162               if (yych == 'C') goto yy666;
06163               if (yych != 'c') goto yy186;
06164 yy666:
06165               YYDEBUG(666, *YYCURSOR);
06166               yych = *++YYCURSOR;
06167               if (yych == 'T') goto yy667;
06168               if (yych != 't') goto yy186;
06169 yy667:
06170               YYDEBUG(667, *YYCURSOR);
06171               yych = *++YYCURSOR;
06172               if (yych == 'I') goto yy668;
06173               if (yych != 'i') goto yy186;
06174 yy668:
06175               YYDEBUG(668, *YYCURSOR);
06176               yych = *++YYCURSOR;
06177               if (yych == 'O') goto yy669;
06178               if (yych != 'o') goto yy186;
06179 yy669:
06180               YYDEBUG(669, *YYCURSOR);
06181               yych = *++YYCURSOR;
06182               if (yych == 'N') goto yy670;
06183               if (yych != 'n') goto yy186;
06184 yy670:
06185               YYDEBUG(670, *YYCURSOR);
06186               ++YYCURSOR;
06187               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06188                      goto yy185;
06189               }
06190               YYDEBUG(671, *YYCURSOR);
06191               yyleng = YYCURSOR - SCNG(yy_text);
06192 #line 883 "Zend/zend_language_scanner.l"
06193               {
06194        return T_FUNCTION;
06195 }
06196 #line 6197 "Zend/zend_language_scanner.c"
06197 yy672:
06198               YYDEBUG(672, *YYCURSOR);
06199               ++YYCURSOR;
06200               if ((yych = *YYCURSOR) <= '^') {
06201                      if (yych <= '@') {
06202                             if (yych <= '/') goto yy673;
06203                             if (yych <= '9') goto yy185;
06204                      } else {
06205                             if (yych == 'E') goto yy674;
06206                             if (yych <= 'Z') goto yy185;
06207                      }
06208               } else {
06209                      if (yych <= 'd') {
06210                             if (yych != '`') goto yy185;
06211                      } else {
06212                             if (yych <= 'e') goto yy674;
06213                             if (yych <= 'z') goto yy185;
06214                             if (yych >= 0x7F) goto yy185;
06215                      }
06216               }
06217 yy673:
06218               YYDEBUG(673, *YYCURSOR);
06219               yyleng = YYCURSOR - SCNG(yy_text);
06220 #line 935 "Zend/zend_language_scanner.l"
06221               {
06222        return T_FOR;
06223 }
06224 #line 6225 "Zend/zend_language_scanner.c"
06225 yy674:
06226               YYDEBUG(674, *YYCURSOR);
06227               yych = *++YYCURSOR;
06228               if (yych == 'A') goto yy675;
06229               if (yych != 'a') goto yy186;
06230 yy675:
06231               YYDEBUG(675, *YYCURSOR);
06232               yych = *++YYCURSOR;
06233               if (yych == 'C') goto yy676;
06234               if (yych != 'c') goto yy186;
06235 yy676:
06236               YYDEBUG(676, *YYCURSOR);
06237               yych = *++YYCURSOR;
06238               if (yych == 'H') goto yy677;
06239               if (yych != 'h') goto yy186;
06240 yy677:
06241               YYDEBUG(677, *YYCURSOR);
06242               ++YYCURSOR;
06243               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06244                      goto yy185;
06245               }
06246               YYDEBUG(678, *YYCURSOR);
06247               yyleng = YYCURSOR - SCNG(yy_text);
06248 #line 943 "Zend/zend_language_scanner.l"
06249               {
06250        return T_FOREACH;
06251 }
06252 #line 6253 "Zend/zend_language_scanner.c"
06253 yy679:
06254               YYDEBUG(679, *YYCURSOR);
06255               yych = *++YYCURSOR;
06256               if (yych == 'A') goto yy680;
06257               if (yych != 'a') goto yy186;
06258 yy680:
06259               YYDEBUG(680, *YYCURSOR);
06260               yych = *++YYCURSOR;
06261               if (yych == 'L') goto yy681;
06262               if (yych != 'l') goto yy186;
06263 yy681:
06264               YYDEBUG(681, *YYCURSOR);
06265               ++YYCURSOR;
06266               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06267                      goto yy185;
06268               }
06269               YYDEBUG(682, *YYCURSOR);
06270               yyleng = YYCURSOR - SCNG(yy_text);
06271 #line 1153 "Zend/zend_language_scanner.l"
06272               {
06273        return T_FINAL;
06274 }
06275 #line 6276 "Zend/zend_language_scanner.c"
06276 yy683:
06277               YYDEBUG(683, *YYCURSOR);
06278               yych = *++YYCURSOR;
06279               if (yych <= 'F') {
06280                      if (yych == 'C') goto yy689;
06281                      if (yych <= 'E') goto yy186;
06282                      goto yy690;
06283               } else {
06284                      if (yych <= 'c') {
06285                             if (yych <= 'b') goto yy186;
06286                             goto yy689;
06287                      } else {
06288                             if (yych == 'f') goto yy690;
06289                             goto yy186;
06290                      }
06291               }
06292 yy684:
06293               YYDEBUG(684, *YYCURSOR);
06294               yych = *++YYCURSOR;
06295               if (yych == 'E') goto yy687;
06296               if (yych == 'e') goto yy687;
06297               goto yy186;
06298 yy685:
06299               YYDEBUG(685, *YYCURSOR);
06300               ++YYCURSOR;
06301               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06302                      goto yy185;
06303               }
06304               YYDEBUG(686, *YYCURSOR);
06305               yyleng = YYCURSOR - SCNG(yy_text);
06306 #line 931 "Zend/zend_language_scanner.l"
06307               {
06308        return T_DO;
06309 }
06310 #line 6311 "Zend/zend_language_scanner.c"
06311 yy687:
06312               YYDEBUG(687, *YYCURSOR);
06313               ++YYCURSOR;
06314               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06315                      goto yy185;
06316               }
06317               YYDEBUG(688, *YYCURSOR);
06318               yyleng = YYCURSOR - SCNG(yy_text);
06319 #line 879 "Zend/zend_language_scanner.l"
06320               {
06321        return T_EXIT;
06322 }
06323 #line 6324 "Zend/zend_language_scanner.c"
06324 yy689:
06325               YYDEBUG(689, *YYCURSOR);
06326               yych = *++YYCURSOR;
06327               if (yych == 'L') goto yy696;
06328               if (yych == 'l') goto yy696;
06329               goto yy186;
06330 yy690:
06331               YYDEBUG(690, *YYCURSOR);
06332               yych = *++YYCURSOR;
06333               if (yych == 'A') goto yy691;
06334               if (yych != 'a') goto yy186;
06335 yy691:
06336               YYDEBUG(691, *YYCURSOR);
06337               yych = *++YYCURSOR;
06338               if (yych == 'U') goto yy692;
06339               if (yych != 'u') goto yy186;
06340 yy692:
06341               YYDEBUG(692, *YYCURSOR);
06342               yych = *++YYCURSOR;
06343               if (yych == 'L') goto yy693;
06344               if (yych != 'l') goto yy186;
06345 yy693:
06346               YYDEBUG(693, *YYCURSOR);
06347               yych = *++YYCURSOR;
06348               if (yych == 'T') goto yy694;
06349               if (yych != 't') goto yy186;
06350 yy694:
06351               YYDEBUG(694, *YYCURSOR);
06352               ++YYCURSOR;
06353               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06354                      goto yy185;
06355               }
06356               YYDEBUG(695, *YYCURSOR);
06357               yyleng = YYCURSOR - SCNG(yy_text);
06358 #line 979 "Zend/zend_language_scanner.l"
06359               {
06360        return T_DEFAULT;
06361 }
06362 #line 6363 "Zend/zend_language_scanner.c"
06363 yy696:
06364               YYDEBUG(696, *YYCURSOR);
06365               yych = *++YYCURSOR;
06366               if (yych == 'A') goto yy697;
06367               if (yych != 'a') goto yy186;
06368 yy697:
06369               YYDEBUG(697, *YYCURSOR);
06370               yych = *++YYCURSOR;
06371               if (yych == 'R') goto yy698;
06372               if (yych != 'r') goto yy186;
06373 yy698:
06374               YYDEBUG(698, *YYCURSOR);
06375               yych = *++YYCURSOR;
06376               if (yych == 'E') goto yy699;
06377               if (yych != 'e') goto yy186;
06378 yy699:
06379               YYDEBUG(699, *YYCURSOR);
06380               ++YYCURSOR;
06381               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06382                      goto yy185;
06383               }
06384               YYDEBUG(700, *YYCURSOR);
06385               yyleng = YYCURSOR - SCNG(yy_text);
06386 #line 951 "Zend/zend_language_scanner.l"
06387               {
06388        return T_DECLARE;
06389 }
06390 #line 6391 "Zend/zend_language_scanner.c"
06391 yy701:
06392               YYDEBUG(701, *YYCURSOR);
06393               yych = *++YYCURSOR;
06394               if (yych == 'H') goto yy763;
06395               if (yych == 'h') goto yy763;
06396               goto yy186;
06397 yy702:
06398               YYDEBUG(702, *YYCURSOR);
06399               yych = *++YYCURSOR;
06400               if (yych == 'S') goto yy757;
06401               if (yych == 's') goto yy757;
06402               goto yy186;
06403 yy703:
06404               YYDEBUG(703, *YYCURSOR);
06405               yych = *++YYCURSOR;
06406               if (yych == 'P') goto yy753;
06407               if (yych == 'p') goto yy753;
06408               goto yy186;
06409 yy704:
06410               YYDEBUG(704, *YYCURSOR);
06411               yych = *++YYCURSOR;
06412               if (yych == 'D') goto yy719;
06413               if (yych == 'd') goto yy719;
06414               goto yy186;
06415 yy705:
06416               YYDEBUG(705, *YYCURSOR);
06417               yych = *++YYCURSOR;
06418               if (yych == 'A') goto yy716;
06419               if (yych == 'a') goto yy716;
06420               goto yy186;
06421 yy706:
06422               YYDEBUG(706, *YYCURSOR);
06423               yych = *++YYCURSOR;
06424               if (yych <= 'T') {
06425                      if (yych == 'I') goto yy707;
06426                      if (yych <= 'S') goto yy186;
06427                      goto yy708;
06428               } else {
06429                      if (yych <= 'i') {
06430                             if (yych <= 'h') goto yy186;
06431                      } else {
06432                             if (yych == 't') goto yy708;
06433                             goto yy186;
06434                      }
06435               }
06436 yy707:
06437               YYDEBUG(707, *YYCURSOR);
06438               yych = *++YYCURSOR;
06439               if (yych == 'T') goto yy714;
06440               if (yych == 't') goto yy714;
06441               goto yy186;
06442 yy708:
06443               YYDEBUG(708, *YYCURSOR);
06444               yych = *++YYCURSOR;
06445               if (yych == 'E') goto yy709;
06446               if (yych != 'e') goto yy186;
06447 yy709:
06448               YYDEBUG(709, *YYCURSOR);
06449               yych = *++YYCURSOR;
06450               if (yych == 'N') goto yy710;
06451               if (yych != 'n') goto yy186;
06452 yy710:
06453               YYDEBUG(710, *YYCURSOR);
06454               yych = *++YYCURSOR;
06455               if (yych == 'D') goto yy711;
06456               if (yych != 'd') goto yy186;
06457 yy711:
06458               YYDEBUG(711, *YYCURSOR);
06459               yych = *++YYCURSOR;
06460               if (yych == 'S') goto yy712;
06461               if (yych != 's') goto yy186;
06462 yy712:
06463               YYDEBUG(712, *YYCURSOR);
06464               ++YYCURSOR;
06465               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06466                      goto yy185;
06467               }
06468               YYDEBUG(713, *YYCURSOR);
06469               yyleng = YYCURSOR - SCNG(yy_text);
06470 #line 1011 "Zend/zend_language_scanner.l"
06471               {
06472        return T_EXTENDS;
06473 }
06474 #line 6475 "Zend/zend_language_scanner.c"
06475 yy714:
06476               YYDEBUG(714, *YYCURSOR);
06477               ++YYCURSOR;
06478               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06479                      goto yy185;
06480               }
06481               YYDEBUG(715, *YYCURSOR);
06482               yyleng = YYCURSOR - SCNG(yy_text);
06483 #line 875 "Zend/zend_language_scanner.l"
06484               {
06485        return T_EXIT;
06486 }
06487 #line 6488 "Zend/zend_language_scanner.c"
06488 yy716:
06489               YYDEBUG(716, *YYCURSOR);
06490               yych = *++YYCURSOR;
06491               if (yych == 'L') goto yy717;
06492               if (yych != 'l') goto yy186;
06493 yy717:
06494               YYDEBUG(717, *YYCURSOR);
06495               ++YYCURSOR;
06496               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06497                      goto yy185;
06498               }
06499               YYDEBUG(718, *YYCURSOR);
06500               yyleng = YYCURSOR - SCNG(yy_text);
06501 #line 1101 "Zend/zend_language_scanner.l"
06502               {
06503        return T_EVAL;
06504 }
06505 #line 6506 "Zend/zend_language_scanner.c"
06506 yy719:
06507               YYDEBUG(719, *YYCURSOR);
06508               yych = *++YYCURSOR;
06509               YYDEBUG(-1, yych);
06510               switch (yych) {
06511               case 'D':
06512               case 'd':     goto yy720;
06513               case 'F':
06514               case 'f':     goto yy721;
06515               case 'I':
06516               case 'i':     goto yy722;
06517               case 'S':
06518               case 's':     goto yy723;
06519               case 'W':
06520               case 'w':     goto yy724;
06521               default:      goto yy186;
06522               }
06523 yy720:
06524               YYDEBUG(720, *YYCURSOR);
06525               yych = *++YYCURSOR;
06526               if (yych == 'E') goto yy746;
06527               if (yych == 'e') goto yy746;
06528               goto yy186;
06529 yy721:
06530               YYDEBUG(721, *YYCURSOR);
06531               yych = *++YYCURSOR;
06532               if (yych == 'O') goto yy738;
06533               if (yych == 'o') goto yy738;
06534               goto yy186;
06535 yy722:
06536               YYDEBUG(722, *YYCURSOR);
06537               yych = *++YYCURSOR;
06538               if (yych == 'F') goto yy736;
06539               if (yych == 'f') goto yy736;
06540               goto yy186;
06541 yy723:
06542               YYDEBUG(723, *YYCURSOR);
06543               yych = *++YYCURSOR;
06544               if (yych == 'W') goto yy730;
06545               if (yych == 'w') goto yy730;
06546               goto yy186;
06547 yy724:
06548               YYDEBUG(724, *YYCURSOR);
06549               yych = *++YYCURSOR;
06550               if (yych == 'H') goto yy725;
06551               if (yych != 'h') goto yy186;
06552 yy725:
06553               YYDEBUG(725, *YYCURSOR);
06554               yych = *++YYCURSOR;
06555               if (yych == 'I') goto yy726;
06556               if (yych != 'i') goto yy186;
06557 yy726:
06558               YYDEBUG(726, *YYCURSOR);
06559               yych = *++YYCURSOR;
06560               if (yych == 'L') goto yy727;
06561               if (yych != 'l') goto yy186;
06562 yy727:
06563               YYDEBUG(727, *YYCURSOR);
06564               yych = *++YYCURSOR;
06565               if (yych == 'E') goto yy728;
06566               if (yych != 'e') goto yy186;
06567 yy728:
06568               YYDEBUG(728, *YYCURSOR);
06569               ++YYCURSOR;
06570               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06571                      goto yy185;
06572               }
06573               YYDEBUG(729, *YYCURSOR);
06574               yyleng = YYCURSOR - SCNG(yy_text);
06575 #line 927 "Zend/zend_language_scanner.l"
06576               {
06577        return T_ENDWHILE;
06578 }
06579 #line 6580 "Zend/zend_language_scanner.c"
06580 yy730:
06581               YYDEBUG(730, *YYCURSOR);
06582               yych = *++YYCURSOR;
06583               if (yych == 'I') goto yy731;
06584               if (yych != 'i') goto yy186;
06585 yy731:
06586               YYDEBUG(731, *YYCURSOR);
06587               yych = *++YYCURSOR;
06588               if (yych == 'T') goto yy732;
06589               if (yych != 't') goto yy186;
06590 yy732:
06591               YYDEBUG(732, *YYCURSOR);
06592               yych = *++YYCURSOR;
06593               if (yych == 'C') goto yy733;
06594               if (yych != 'c') goto yy186;
06595 yy733:
06596               YYDEBUG(733, *YYCURSOR);
06597               yych = *++YYCURSOR;
06598               if (yych == 'H') goto yy734;
06599               if (yych != 'h') goto yy186;
06600 yy734:
06601               YYDEBUG(734, *YYCURSOR);
06602               ++YYCURSOR;
06603               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06604                      goto yy185;
06605               }
06606               YYDEBUG(735, *YYCURSOR);
06607               yyleng = YYCURSOR - SCNG(yy_text);
06608 #line 971 "Zend/zend_language_scanner.l"
06609               {
06610        return T_ENDSWITCH;
06611 }
06612 #line 6613 "Zend/zend_language_scanner.c"
06613 yy736:
06614               YYDEBUG(736, *YYCURSOR);
06615               ++YYCURSOR;
06616               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06617                      goto yy185;
06618               }
06619               YYDEBUG(737, *YYCURSOR);
06620               yyleng = YYCURSOR - SCNG(yy_text);
06621 #line 915 "Zend/zend_language_scanner.l"
06622               {
06623        return T_ENDIF;
06624 }
06625 #line 6626 "Zend/zend_language_scanner.c"
06626 yy738:
06627               YYDEBUG(738, *YYCURSOR);
06628               yych = *++YYCURSOR;
06629               if (yych == 'R') goto yy739;
06630               if (yych != 'r') goto yy186;
06631 yy739:
06632               YYDEBUG(739, *YYCURSOR);
06633               ++YYCURSOR;
06634               if ((yych = *YYCURSOR) <= '^') {
06635                      if (yych <= '@') {
06636                             if (yych <= '/') goto yy740;
06637                             if (yych <= '9') goto yy185;
06638                      } else {
06639                             if (yych == 'E') goto yy741;
06640                             if (yych <= 'Z') goto yy185;
06641                      }
06642               } else {
06643                      if (yych <= 'd') {
06644                             if (yych != '`') goto yy185;
06645                      } else {
06646                             if (yych <= 'e') goto yy741;
06647                             if (yych <= 'z') goto yy185;
06648                             if (yych >= 0x7F) goto yy185;
06649                      }
06650               }
06651 yy740:
06652               YYDEBUG(740, *YYCURSOR);
06653               yyleng = YYCURSOR - SCNG(yy_text);
06654 #line 939 "Zend/zend_language_scanner.l"
06655               {
06656        return T_ENDFOR;
06657 }
06658 #line 6659 "Zend/zend_language_scanner.c"
06659 yy741:
06660               YYDEBUG(741, *YYCURSOR);
06661               yych = *++YYCURSOR;
06662               if (yych == 'A') goto yy742;
06663               if (yych != 'a') goto yy186;
06664 yy742:
06665               YYDEBUG(742, *YYCURSOR);
06666               yych = *++YYCURSOR;
06667               if (yych == 'C') goto yy743;
06668               if (yych != 'c') goto yy186;
06669 yy743:
06670               YYDEBUG(743, *YYCURSOR);
06671               yych = *++YYCURSOR;
06672               if (yych == 'H') goto yy744;
06673               if (yych != 'h') goto yy186;
06674 yy744:
06675               YYDEBUG(744, *YYCURSOR);
06676               ++YYCURSOR;
06677               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06678                      goto yy185;
06679               }
06680               YYDEBUG(745, *YYCURSOR);
06681               yyleng = YYCURSOR - SCNG(yy_text);
06682 #line 947 "Zend/zend_language_scanner.l"
06683               {
06684        return T_ENDFOREACH;
06685 }
06686 #line 6687 "Zend/zend_language_scanner.c"
06687 yy746:
06688               YYDEBUG(746, *YYCURSOR);
06689               yych = *++YYCURSOR;
06690               if (yych == 'C') goto yy747;
06691               if (yych != 'c') goto yy186;
06692 yy747:
06693               YYDEBUG(747, *YYCURSOR);
06694               yych = *++YYCURSOR;
06695               if (yych == 'L') goto yy748;
06696               if (yych != 'l') goto yy186;
06697 yy748:
06698               YYDEBUG(748, *YYCURSOR);
06699               yych = *++YYCURSOR;
06700               if (yych == 'A') goto yy749;
06701               if (yych != 'a') goto yy186;
06702 yy749:
06703               YYDEBUG(749, *YYCURSOR);
06704               yych = *++YYCURSOR;
06705               if (yych == 'R') goto yy750;
06706               if (yych != 'r') goto yy186;
06707 yy750:
06708               YYDEBUG(750, *YYCURSOR);
06709               yych = *++YYCURSOR;
06710               if (yych == 'E') goto yy751;
06711               if (yych != 'e') goto yy186;
06712 yy751:
06713               YYDEBUG(751, *YYCURSOR);
06714               ++YYCURSOR;
06715               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06716                      goto yy185;
06717               }
06718               YYDEBUG(752, *YYCURSOR);
06719               yyleng = YYCURSOR - SCNG(yy_text);
06720 #line 955 "Zend/zend_language_scanner.l"
06721               {
06722        return T_ENDDECLARE;
06723 }
06724 #line 6725 "Zend/zend_language_scanner.c"
06725 yy753:
06726               YYDEBUG(753, *YYCURSOR);
06727               yych = *++YYCURSOR;
06728               if (yych == 'T') goto yy754;
06729               if (yych != 't') goto yy186;
06730 yy754:
06731               YYDEBUG(754, *YYCURSOR);
06732               yych = *++YYCURSOR;
06733               if (yych == 'Y') goto yy755;
06734               if (yych != 'y') goto yy186;
06735 yy755:
06736               YYDEBUG(755, *YYCURSOR);
06737               ++YYCURSOR;
06738               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06739                      goto yy185;
06740               }
06741               YYDEBUG(756, *YYCURSOR);
06742               yyleng = YYCURSOR - SCNG(yy_text);
06743 #line 1137 "Zend/zend_language_scanner.l"
06744               {
06745        return T_EMPTY;
06746 }
06747 #line 6748 "Zend/zend_language_scanner.c"
06748 yy757:
06749               YYDEBUG(757, *YYCURSOR);
06750               yych = *++YYCURSOR;
06751               if (yych == 'E') goto yy758;
06752               if (yych != 'e') goto yy186;
06753 yy758:
06754               YYDEBUG(758, *YYCURSOR);
06755               ++YYCURSOR;
06756               if ((yych = *YYCURSOR) <= '^') {
06757                      if (yych <= '@') {
06758                             if (yych <= '/') goto yy759;
06759                             if (yych <= '9') goto yy185;
06760                      } else {
06761                             if (yych == 'I') goto yy760;
06762                             if (yych <= 'Z') goto yy185;
06763                      }
06764               } else {
06765                      if (yych <= 'h') {
06766                             if (yych != '`') goto yy185;
06767                      } else {
06768                             if (yych <= 'i') goto yy760;
06769                             if (yych <= 'z') goto yy185;
06770                             if (yych >= 0x7F) goto yy185;
06771                      }
06772               }
06773 yy759:
06774               YYDEBUG(759, *YYCURSOR);
06775               yyleng = YYCURSOR - SCNG(yy_text);
06776 #line 919 "Zend/zend_language_scanner.l"
06777               {
06778        return T_ELSE;
06779 }
06780 #line 6781 "Zend/zend_language_scanner.c"
06781 yy760:
06782               YYDEBUG(760, *YYCURSOR);
06783               yych = *++YYCURSOR;
06784               if (yych == 'F') goto yy761;
06785               if (yych != 'f') goto yy186;
06786 yy761:
06787               YYDEBUG(761, *YYCURSOR);
06788               ++YYCURSOR;
06789               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06790                      goto yy185;
06791               }
06792               YYDEBUG(762, *YYCURSOR);
06793               yyleng = YYCURSOR - SCNG(yy_text);
06794 #line 911 "Zend/zend_language_scanner.l"
06795               {
06796        return T_ELSEIF;
06797 }
06798 #line 6799 "Zend/zend_language_scanner.c"
06799 yy763:
06800               YYDEBUG(763, *YYCURSOR);
06801               yych = *++YYCURSOR;
06802               if (yych == 'O') goto yy764;
06803               if (yych != 'o') goto yy186;
06804 yy764:
06805               YYDEBUG(764, *YYCURSOR);
06806               ++YYCURSOR;
06807               if (yybm[0+(yych = *YYCURSOR)] & 8) {
06808                      goto yy185;
06809               }
06810               YYDEBUG(765, *YYCURSOR);
06811               yyleng = YYCURSOR - SCNG(yy_text);
06812 #line 995 "Zend/zend_language_scanner.l"
06813               {
06814        return T_ECHO;
06815 }
06816 #line 6817 "Zend/zend_language_scanner.c"
06817        }
06818 /* *********************************** */
06819 yyc_ST_LOOKING_FOR_PROPERTY:
06820        {
06821               static const unsigned char yybm[] = {
06822                        0,   0,   0,   0,   0,   0,   0,   0, 
06823                        0, 128, 128,   0,   0, 128,   0,   0, 
06824                        0,   0,   0,   0,   0,   0,   0,   0, 
06825                        0,   0,   0,   0,   0,   0,   0,   0, 
06826                      128,   0,   0,   0,   0,   0,   0,   0, 
06827                        0,   0,   0,   0,   0,   0,   0,   0, 
06828                       64,  64,  64,  64,  64,  64,  64,  64, 
06829                       64,  64,   0,   0,   0,   0,   0,   0, 
06830                        0,  64,  64,  64,  64,  64,  64,  64, 
06831                       64,  64,  64,  64,  64,  64,  64,  64, 
06832                       64,  64,  64,  64,  64,  64,  64,  64, 
06833                       64,  64,  64,   0,   0,   0,   0,  64, 
06834                        0,  64,  64,  64,  64,  64,  64,  64, 
06835                       64,  64,  64,  64,  64,  64,  64,  64, 
06836                       64,  64,  64,  64,  64,  64,  64,  64, 
06837                       64,  64,  64,   0,   0,   0,   0,  64, 
06838                       64,  64,  64,  64,  64,  64,  64,  64, 
06839                       64,  64,  64,  64,  64,  64,  64,  64, 
06840                       64,  64,  64,  64,  64,  64,  64,  64, 
06841                       64,  64,  64,  64,  64,  64,  64,  64, 
06842                       64,  64,  64,  64,  64,  64,  64,  64, 
06843                       64,  64,  64,  64,  64,  64,  64,  64, 
06844                       64,  64,  64,  64,  64,  64,  64,  64, 
06845                       64,  64,  64,  64,  64,  64,  64,  64, 
06846                       64,  64,  64,  64,  64,  64,  64,  64, 
06847                       64,  64,  64,  64,  64,  64,  64,  64, 
06848                       64,  64,  64,  64,  64,  64,  64,  64, 
06849                       64,  64,  64,  64,  64,  64,  64,  64, 
06850                       64,  64,  64,  64,  64,  64,  64,  64, 
06851                       64,  64,  64,  64,  64,  64,  64,  64, 
06852                       64,  64,  64,  64,  64,  64,  64,  64, 
06853                       64,  64,  64,  64,  64,  64,  64,  64, 
06854               };
06855               YYDEBUG(766, *YYCURSOR);
06856               YYFILL(2);
06857               yych = *YYCURSOR;
06858               if (yych <= '-') {
06859                      if (yych <= '\r') {
06860                             if (yych <= 0x08) goto yy774;
06861                             if (yych <= '\n') goto yy768;
06862                             if (yych <= '\f') goto yy774;
06863                      } else {
06864                             if (yych == ' ') goto yy768;
06865                             if (yych <= ',') goto yy774;
06866                             goto yy770;
06867                      }
06868               } else {
06869                      if (yych <= '_') {
06870                             if (yych <= '@') goto yy774;
06871                             if (yych <= 'Z') goto yy772;
06872                             if (yych <= '^') goto yy774;
06873                             goto yy772;
06874                      } else {
06875                             if (yych <= '`') goto yy774;
06876                             if (yych <= 'z') goto yy772;
06877                             if (yych <= '~') goto yy774;
06878                             goto yy772;
06879                      }
06880               }
06881 yy768:
06882               YYDEBUG(768, *YYCURSOR);
06883               ++YYCURSOR;
06884               yych = *YYCURSOR;
06885               goto yy780;
06886 yy769:
06887               YYDEBUG(769, *YYCURSOR);
06888               yyleng = YYCURSOR - SCNG(yy_text);
06889 #line 1024 "Zend/zend_language_scanner.l"
06890               {
06891        zendlval->value.str.val = yytext; /* no copying - intentional */
06892        zendlval->value.str.len = yyleng;
06893        zendlval->type = IS_STRING;
06894        HANDLE_NEWLINES(yytext, yyleng);
06895        return T_WHITESPACE;
06896 }
06897 #line 6898 "Zend/zend_language_scanner.c"
06898 yy770:
06899               YYDEBUG(770, *YYCURSOR);
06900               ++YYCURSOR;
06901               if ((yych = *YYCURSOR) == '>') goto yy777;
06902 yy771:
06903               YYDEBUG(771, *YYCURSOR);
06904               yyleng = YYCURSOR - SCNG(yy_text);
06905 #line 1043 "Zend/zend_language_scanner.l"
06906               {
06907        yyless(0);
06908        yy_pop_state(TSRMLS_C);
06909        goto restart;
06910 }
06911 #line 6912 "Zend/zend_language_scanner.c"
06912 yy772:
06913               YYDEBUG(772, *YYCURSOR);
06914               ++YYCURSOR;
06915               yych = *YYCURSOR;
06916               goto yy776;
06917 yy773:
06918               YYDEBUG(773, *YYCURSOR);
06919               yyleng = YYCURSOR - SCNG(yy_text);
06920 #line 1036 "Zend/zend_language_scanner.l"
06921               {
06922        yy_pop_state(TSRMLS_C);
06923        zend_copy_value(zendlval, yytext, yyleng);
06924        zendlval->type = IS_STRING;
06925        return T_STRING;
06926 }
06927 #line 6928 "Zend/zend_language_scanner.c"
06928 yy774:
06929               YYDEBUG(774, *YYCURSOR);
06930               yych = *++YYCURSOR;
06931               goto yy771;
06932 yy775:
06933               YYDEBUG(775, *YYCURSOR);
06934               ++YYCURSOR;
06935               YYFILL(1);
06936               yych = *YYCURSOR;
06937 yy776:
06938               YYDEBUG(776, *YYCURSOR);
06939               if (yybm[0+yych] & 64) {
06940                      goto yy775;
06941               }
06942               goto yy773;
06943 yy777:
06944               YYDEBUG(777, *YYCURSOR);
06945               ++YYCURSOR;
06946               YYDEBUG(778, *YYCURSOR);
06947               yyleng = YYCURSOR - SCNG(yy_text);
06948 #line 1032 "Zend/zend_language_scanner.l"
06949               {
06950        return T_OBJECT_OPERATOR;
06951 }
06952 #line 6953 "Zend/zend_language_scanner.c"
06953 yy779:
06954               YYDEBUG(779, *YYCURSOR);
06955               ++YYCURSOR;
06956               YYFILL(1);
06957               yych = *YYCURSOR;
06958 yy780:
06959               YYDEBUG(780, *YYCURSOR);
06960               if (yybm[0+yych] & 128) {
06961                      goto yy779;
06962               }
06963               goto yy769;
06964        }
06965 /* *********************************** */
06966 yyc_ST_LOOKING_FOR_VARNAME:
06967        {
06968               static const unsigned char yybm[] = {
06969                        0,   0,   0,   0,   0,   0,   0,   0, 
06970                        0,   0,   0,   0,   0,   0,   0,   0, 
06971                        0,   0,   0,   0,   0,   0,   0,   0, 
06972                        0,   0,   0,   0,   0,   0,   0,   0, 
06973                        0,   0,   0,   0,   0,   0,   0,   0, 
06974                        0,   0,   0,   0,   0,   0,   0,   0, 
06975                      128, 128, 128, 128, 128, 128, 128, 128, 
06976                      128, 128,   0,   0,   0,   0,   0,   0, 
06977                        0, 128, 128, 128, 128, 128, 128, 128, 
06978                      128, 128, 128, 128, 128, 128, 128, 128, 
06979                      128, 128, 128, 128, 128, 128, 128, 128, 
06980                      128, 128, 128,   0,   0,   0,   0, 128, 
06981                        0, 128, 128, 128, 128, 128, 128, 128, 
06982                      128, 128, 128, 128, 128, 128, 128, 128, 
06983                      128, 128, 128, 128, 128, 128, 128, 128, 
06984                      128, 128, 128,   0,   0,   0,   0, 128, 
06985                      128, 128, 128, 128, 128, 128, 128, 128, 
06986                      128, 128, 128, 128, 128, 128, 128, 128, 
06987                      128, 128, 128, 128, 128, 128, 128, 128, 
06988                      128, 128, 128, 128, 128, 128, 128, 128, 
06989                      128, 128, 128, 128, 128, 128, 128, 128, 
06990                      128, 128, 128, 128, 128, 128, 128, 128, 
06991                      128, 128, 128, 128, 128, 128, 128, 128, 
06992                      128, 128, 128, 128, 128, 128, 128, 128, 
06993                      128, 128, 128, 128, 128, 128, 128, 128, 
06994                      128, 128, 128, 128, 128, 128, 128, 128, 
06995                      128, 128, 128, 128, 128, 128, 128, 128, 
06996                      128, 128, 128, 128, 128, 128, 128, 128, 
06997                      128, 128, 128, 128, 128, 128, 128, 128, 
06998                      128, 128, 128, 128, 128, 128, 128, 128, 
06999                      128, 128, 128, 128, 128, 128, 128, 128, 
07000                      128, 128, 128, 128, 128, 128, 128, 128, 
07001               };
07002               YYDEBUG(781, *YYCURSOR);
07003               YYFILL(2);
07004               yych = *YYCURSOR;
07005               if (yych <= '_') {
07006                      if (yych <= '@') goto yy785;
07007                      if (yych <= 'Z') goto yy783;
07008                      if (yych <= '^') goto yy785;
07009               } else {
07010                      if (yych <= '`') goto yy785;
07011                      if (yych <= 'z') goto yy783;
07012                      if (yych <= '~') goto yy785;
07013               }
07014 yy783:
07015               YYDEBUG(783, *YYCURSOR);
07016               ++YYCURSOR;
07017               yych = *YYCURSOR;
07018               goto yy788;
07019 yy784:
07020               YYDEBUG(784, *YYCURSOR);
07021               yyleng = YYCURSOR - SCNG(yy_text);
07022 #line 1315 "Zend/zend_language_scanner.l"
07023               {
07024        zend_copy_value(zendlval, yytext, yyleng);
07025        zendlval->type = IS_STRING;
07026        yy_pop_state(TSRMLS_C);
07027        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
07028        return T_STRING_VARNAME;
07029 }
07030 #line 7031 "Zend/zend_language_scanner.c"
07031 yy785:
07032               YYDEBUG(785, *YYCURSOR);
07033               ++YYCURSOR;
07034               YYDEBUG(786, *YYCURSOR);
07035               yyleng = YYCURSOR - SCNG(yy_text);
07036 #line 1324 "Zend/zend_language_scanner.l"
07037               {
07038        yyless(0);
07039        yy_pop_state(TSRMLS_C);
07040        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
07041        goto restart;
07042 }
07043 #line 7044 "Zend/zend_language_scanner.c"
07044 yy787:
07045               YYDEBUG(787, *YYCURSOR);
07046               ++YYCURSOR;
07047               YYFILL(1);
07048               yych = *YYCURSOR;
07049 yy788:
07050               YYDEBUG(788, *YYCURSOR);
07051               if (yybm[0+yych] & 128) {
07052                      goto yy787;
07053               }
07054               goto yy784;
07055        }
07056 /* *********************************** */
07057 yyc_ST_NOWDOC:
07058        YYDEBUG(789, *YYCURSOR);
07059        YYFILL(1);
07060        yych = *YYCURSOR;
07061        YYDEBUG(791, *YYCURSOR);
07062        ++YYCURSOR;
07063        YYDEBUG(792, *YYCURSOR);
07064        yyleng = YYCURSOR - SCNG(yy_text);
07065 #line 2158 "Zend/zend_language_scanner.l"
07066        {
07067        int newline = 0;
07068 
07069        if (YYCURSOR > YYLIMIT) {
07070               return 0;
07071        }
07072 
07073        YYCURSOR--;
07074 
07075        while (YYCURSOR < YYLIMIT) {
07076               switch (*YYCURSOR++) {
07077                      case '\r':
07078                             if (*YYCURSOR == '\n') {
07079                                    YYCURSOR++;
07080                             }
07081                             /* fall through */
07082                      case '\n':
07083                             /* Check for ending label on the next line */
07084                             if (IS_LABEL_START(*YYCURSOR) && CG(heredoc_len) < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, CG(heredoc), CG(heredoc_len))) {
07085                                    YYCTYPE *end = YYCURSOR + CG(heredoc_len);
07086 
07087                                    if (*end == ';') {
07088                                           end++;
07089                                    }
07090 
07091                                    if (*end == '\n' || *end == '\r') {
07092                                           /* newline before label will be subtracted from returned text, but
07093                                            * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */
07094                                           if (YYCURSOR[-2] == '\r' && YYCURSOR[-1] == '\n') {
07095                                                  newline = 2; /* Windows newline */
07096                                           } else {
07097                                                  newline = 1;
07098                                           }
07099 
07100                                           CG(increment_lineno) = 1; /* For newline before label */
07101                                           BEGIN(ST_END_HEREDOC);
07102 
07103                                           goto nowdoc_scan_done;
07104                                    }
07105                             }
07106                             /* fall through */
07107                      default:
07108                             continue;
07109               }
07110        }
07111 
07112 nowdoc_scan_done:
07113        yyleng = YYCURSOR - SCNG(yy_text);
07114 
07115        zend_copy_value(zendlval, yytext, yyleng - newline);
07116        zendlval->type = IS_STRING;
07117        HANDLE_NEWLINES(yytext, yyleng - newline);
07118        return T_ENCAPSED_AND_WHITESPACE;
07119 }
07120 #line 7121 "Zend/zend_language_scanner.c"
07121 /* *********************************** */
07122 yyc_ST_VAR_OFFSET:
07123        {
07124               static const unsigned char yybm[] = {
07125                        0,   0,   0,   0,   0,   0,   0,   0, 
07126                        0,   0,   0,   0,   0,   0,   0,   0, 
07127                        0,   0,   0,   0,   0,   0,   0,   0, 
07128                        0,   0,   0,   0,   0,   0,   0,   0, 
07129                        0,   0,   0,   0,   0,   0,   0,   0, 
07130                        0,   0,   0,   0,   0,   0,   0,   0, 
07131                      224, 224, 224, 224, 224, 224, 224, 224, 
07132                      224, 224,   0,   0,   0,   0,   0,   0, 
07133                        0, 160, 160, 160, 160, 160, 160,  32, 
07134                       32,  32,  32,  32,  32,  32,  32,  32, 
07135                       32,  32,  32,  32,  32,  32,  32,  32, 
07136                       32,  32,  32,   0,   0,   0,   0,  32, 
07137                        0, 160, 160, 160, 160, 160, 160,  32, 
07138                       32,  32,  32,  32,  32,  32,  32,  32, 
07139                       32,  32,  32,  32,  32,  32,  32,  32, 
07140                       32,  32,  32,   0,   0,   0,   0,  32, 
07141                       32,  32,  32,  32,  32,  32,  32,  32, 
07142                       32,  32,  32,  32,  32,  32,  32,  32, 
07143                       32,  32,  32,  32,  32,  32,  32,  32, 
07144                       32,  32,  32,  32,  32,  32,  32,  32, 
07145                       32,  32,  32,  32,  32,  32,  32,  32, 
07146                       32,  32,  32,  32,  32,  32,  32,  32, 
07147                       32,  32,  32,  32,  32,  32,  32,  32, 
07148                       32,  32,  32,  32,  32,  32,  32,  32, 
07149                       32,  32,  32,  32,  32,  32,  32,  32, 
07150                       32,  32,  32,  32,  32,  32,  32,  32, 
07151                       32,  32,  32,  32,  32,  32,  32,  32, 
07152                       32,  32,  32,  32,  32,  32,  32,  32, 
07153                       32,  32,  32,  32,  32,  32,  32,  32, 
07154                       32,  32,  32,  32,  32,  32,  32,  32, 
07155                       32,  32,  32,  32,  32,  32,  32,  32, 
07156                       32,  32,  32,  32,  32,  32,  32,  32, 
07157               };
07158               YYDEBUG(793, *YYCURSOR);
07159               YYFILL(3);
07160               yych = *YYCURSOR;
07161               if (yych <= '/') {
07162                      if (yych <= ' ') {
07163                             if (yych <= '\f') {
07164                                    if (yych <= 0x08) goto yy807;
07165                                    if (yych <= '\n') goto yy803;
07166                                    goto yy807;
07167                             } else {
07168                                    if (yych <= '\r') goto yy803;
07169                                    if (yych <= 0x1F) goto yy807;
07170                                    goto yy803;
07171                             }
07172                      } else {
07173                             if (yych <= '$') {
07174                                    if (yych <= '"') goto yy802;
07175                                    if (yych <= '#') goto yy803;
07176                                    goto yy798;
07177                             } else {
07178                                    if (yych == '\'') goto yy803;
07179                                    goto yy802;
07180                             }
07181                      }
07182               } else {
07183                      if (yych <= '\\') {
07184                             if (yych <= '@') {
07185                                    if (yych <= '0') goto yy795;
07186                                    if (yych <= '9') goto yy797;
07187                                    goto yy802;
07188                             } else {
07189                                    if (yych <= 'Z') goto yy805;
07190                                    if (yych <= '[') goto yy802;
07191                                    goto yy803;
07192                             }
07193                      } else {
07194                             if (yych <= '_') {
07195                                    if (yych <= ']') goto yy800;
07196                                    if (yych <= '^') goto yy802;
07197                                    goto yy805;
07198                             } else {
07199                                    if (yych <= '`') goto yy802;
07200                                    if (yych <= 'z') goto yy805;
07201                                    if (yych <= '~') goto yy802;
07202                                    goto yy805;
07203                             }
07204                      }
07205               }
07206 yy795:
07207               YYDEBUG(795, *YYCURSOR);
07208               yyaccept = 0;
07209               yych = *(YYMARKER = ++YYCURSOR);
07210               if (yych <= 'W') {
07211                      if (yych <= '/') goto yy796;
07212                      if (yych <= '9') goto yy818;
07213               } else {
07214                      if (yych <= 'X') goto yy816;
07215                      if (yych == 'x') goto yy816;
07216               }
07217 yy796:
07218               YYDEBUG(796, *YYCURSOR);
07219               yyleng = YYCURSOR - SCNG(yy_text);
07220 #line 1374 "Zend/zend_language_scanner.l"
07221               { /* Offset could be treated as a long */
07222        if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
07223               zendlval->value.lval = strtol(yytext, NULL, 10);
07224               zendlval->type = IS_LONG;
07225        } else {
07226               zendlval->value.str.val = (char *)estrndup(yytext, yyleng);
07227               zendlval->value.str.len = yyleng;
07228               zendlval->type = IS_STRING;
07229        }
07230        return T_NUM_STRING;
07231 }
07232 #line 7233 "Zend/zend_language_scanner.c"
07233 yy797:
07234               YYDEBUG(797, *YYCURSOR);
07235               yych = *++YYCURSOR;
07236               goto yy815;
07237 yy798:
07238               YYDEBUG(798, *YYCURSOR);
07239               ++YYCURSOR;
07240               if ((yych = *YYCURSOR) <= '_') {
07241                      if (yych <= '@') goto yy799;
07242                      if (yych <= 'Z') goto yy811;
07243                      if (yych >= '_') goto yy811;
07244               } else {
07245                      if (yych <= '`') goto yy799;
07246                      if (yych <= 'z') goto yy811;
07247                      if (yych >= 0x7F) goto yy811;
07248               }
07249 yy799:
07250               YYDEBUG(799, *YYCURSOR);
07251               yyleng = YYCURSOR - SCNG(yy_text);
07252 #line 1684 "Zend/zend_language_scanner.l"
07253               {
07254        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
07255        return