Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_3) / Zend.m4 zend.c zend_compile.c zend_globals.h zend_highlight.c zend_language_scanner.c
zend_language_scanner.h zend_language_scanner.l zend_language_scanner_defs.h zend_multibyte.h

From: Date: Sat, 05 Jul 2008 18:40:16 +0000
Subject: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_3) / Zend.m4 zend.c zend_compile.c zend_globals.h zend_highlight.c zend_language_scanner.c
zend_language_scanner.h zend_language_scanner.l zend_language_scanner_defs.h zend_multibyte.h
References: 1  Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-6842@lists.php.net to get a copy of this message
Hello Rui, awesome work. Thanks for doing it and sorry I never found the time to finish my patch on this. You just brought as pretty close to 5.3 releasing soon :-) marcus Sunday, June 29, 2008, 10:21:36 AM, you wrote: > > http://cvs.php.net/viewvc.cgi/ZendEngine2/Zend.m4?r1=1.58.4.4.2.3&r2=1.58.4.4.2.4&diff_format=u > Index: ZendEngine2/Zend.m4 > diff -u ZendEngine2/Zend.m4:1.58.4.4.2.3 ZendEngine2/Zend.m4:1.58.4.4.2.4 > --- ZendEngine2/Zend.m4:1.58.4.4.2.3 Tue Mar 18 21:14:27 2008 > +++ ZendEngine2/Zend.m4 Sun Jun 29 08:21:34 2008 > @@ -1,5 +1,5 @@ > dnl > -dnl $Id: Zend.m4,v 1.58.4.4.2.3 2008/03/18 21:14:27 rasmus Exp $ > +dnl $Id: Zend.m4,v 1.58.4.4.2.4 2008/06/29 08:21:34 hirokawa Exp $ > dnl > dnl This file contains Zend specific autoconf functions. > dnl > @@ -154,6 +154,13 @@ > ZEND_INLINE_OPTIMIZATION=yes > ]) > > +AC_ARG_ENABLE(zend-multibyte, > +[ --enable-zend-multibyte Compile with zend multibyte support], [ > + ZEND_MULTIBYTE=$enableval > +],[ > + ZEND_MULTIBYTE=no > +]) > + > AC_MSG_CHECKING([virtual machine dispatch method]) > AC_MSG_RESULT($PHP_ZEND_VM) > > @@ -166,6 +173,9 @@ > AC_MSG_CHECKING(whether to enable Zend debugging) > AC_MSG_RESULT($ZEND_DEBUG) > > +AC_MSG_CHECKING(whether to enable Zend multibyte) > +AC_MSG_RESULT($ZEND_MULTIBYTE) > + > case $PHP_ZEND_VM in > SWITCH) > AC_DEFINE(ZEND_VM_KIND,ZEND_VM_KIND_SWITCH,[virtual machine dispatch method]) > @@ -200,6 +210,10 @@ > LIBZEND_CPLUSPLUS_CHECKS > fi > > +if test "$ZEND_MULTIBYTE" = "yes"; then > + AC_DEFINE(ZEND_MULTIBYTE, 1, [ ]) > +fi > + > changequote({,}) > if test -n "$GCC" && test "$ZEND_INLINE_OPTIMIZATION" != > "yes"; then > INLINE_CFLAGS=echo $ac_n "$CFLAGS $ac_c" | sed > s/-O[0-9s]*// > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.c?r1=1.308.2.12.2.35.2.18&r2=1.308.2.12.2.35.2.19&diff_format=u > Index: ZendEngine2/zend.c > diff -u ZendEngine2/zend.c:1.308.2.12.2.35.2.18 > ZendEngine2/zend.c:1.308.2.12.2.35.2.19 > --- ZendEngine2/zend.c:1.308.2.12.2.35.2.18 Tue Apr 29 08:15:16 2008 > +++ ZendEngine2/zend.c Sun Jun 29 08:21:34 2008 > @@ -17,7 +17,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend.c,v 1.308.2.12.2.35.2.18 2008/04/29 08:15:16 dmitry Exp $ */ > +/* $Id: zend.c,v 1.308.2.12.2.35.2.19 2008/06/29 08:21:34 hirokawa Exp $ */ > > #include "zend.h" > #include "zend_extensions.h" > @@ -91,6 +91,9 @@ > ZEND_INI_BEGIN() > ZEND_INI_ENTRY("error_reporting", > NULL, ZEND_INI_ALL, OnUpdateErrorReporting) > STD_ZEND_INI_BOOLEAN("zend.enable_gc", > "1", ZEND_INI_ALL, OnUpdateGCEnabled, gc_enabled, > zend_gc_globals, gc_globals) > +#ifdef ZEND_MULTIBYTE > + STD_ZEND_INI_BOOLEAN("detect_unicode", "1", ZEND_INI_ALL, > OnUpdateBool, detect_unicode, zend_compiler_globals, compiler_globals) > +#endif > ZEND_INI_END() > > > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_compile.c?r1=1.647.2.27.2.41.2.69&r2=1.647.2.27.2.41.2.70&diff_format=u5cZ3MN > Æ…c§Z > Index: ZendEngine2/zend_compile.c > diff -u ZendEngine2/zend_compile.c:1.647.2.27.2.41.2.69 > ZendEngine2/zend_compile.c:1.647.2.27.2.41.2.70 > --- ZendEngine2/zend_compile.c:1.647.2.27.2.41.2.69 Fri Jun 20 17:17:05 2008 > +++ ZendEngine2/zend_compile.c Sun Jun 29 08:21:34 2008 > @@ -17,7 +17,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_compile.c,v 1.647.2.27.2.41.2.69 2008/06/20 17:17:05 dmitry Exp $ */ > +/* $Id: zend_compile.c,v 1.647.2.27.2.41.2.70 2008/06/29 08:21:34 hirokawa Exp $ */ > > #include <zend_language_parser.h> > #include "zend.h" > @@ -28,6 +28,10 @@ > #include "zend_exceptions.h" > #include "tsrm_virtual_cwd.h" > > +#ifdef ZEND_MULTIBYTE > +#include "zend_multibyte.h" > +#endif /* ZEND_MULTIBYTE */ > + > ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type > TSRMLS_DC); > ZEND_API zend_op_array *(*zend_compile_string)(zval *source_string, char *filename TSRMLS_DC); > > @@ -80,7 +84,14 @@ > > /* NULL, name length, filename length, last accepting char position length */ > result->value.str.len = > 1+name_length+strlen(filename)+char_pos_len; > +#ifdef ZEND_MULTIBYTE > + /* must be binary safe */ > + result->value.str.val = (char *) > safe_emalloc(result->value.str.len, 1, 1); > + result->value.str.val[0] = '\0'; > + sprintf(result->value.str.val+1, "%s%s%s", name, filename, char_pos_buf); > +#else > zend_spprintf(&result->value.str.val, 0, "%c%s%s%s", '\0', > name, filename, char_pos_buf); > +#endif /* ZEND_MULTIBYTE */ > result->type = IS_STRING; > Z_SET_REFCOUNT_P(result, 1); > } > @@ -132,6 +143,15 @@ > zend_hash_apply(CG(auto_globals), (apply_func_t) zend_auto_global_arm TSRMLS_CC); > zend_stack_init(&CG(labels_stack)); > CG(labels) = NULL; > + > +#ifdef ZEND_MULTIBYTE > + CG(script_encoding_list) = NULL; > + CG(script_encoding_list_size) = 0; > + CG(internal_encoding) = NULL; > + CG(encoding_detector) = NULL; > + CG(encoding_converter) = NULL; > + CG(encoding_oddlen) = NULL; > +#endif /* ZEND_MULTIBYTE */ > } > > > @@ -166,6 +186,12 @@ > zend_hash_destroy(&CG(filenames_table)); > zend_llist_destroy(&CG(open_files)); > zend_stack_destroy(&CG(labels_stack)); > + > +#ifdef ZEND_MULTIBYTE > + if (CG(script_encoding_list)) { > + efree(CG(script_encoding_list)); > + } > +#endif /* ZEND_MULTIBYTE */ > } > > > @@ -4512,9 +4538,55 @@ > if (!zend_binary_strcasecmp(var->u.constant.value.str.val, > var->u.constant.value.str.len, "ticks", sizeof("ticks")-1)) { > convert_to_long(&val->u.constant); > CG(declarables).ticks = val->u.constant; > +#ifdef ZEND_MULTIBYTE > + } else if > (!zend_binary_strcasecmp(var->u.constant.value.str.val, > var->u.constant.value.str.len, "encoding", sizeof("encoding")-1)) { > + zend_encoding *new_encoding, *old_encoding; > + zend_encoding_filter old_input_filter; > + > + if (Z_TYPE(val->u.constant) == IS_CONSTANT) { > + zend_error(E_COMPILE_ERROR, "Cannot use constants as > encoding"); > + } > + > + /* > + * Check that the pragma comes before any opcodes. If the compilation > + * got as far as this, the previous portion of the script must have been > + * parseable according to the .ini script_encoding setting. We still > + * want to tell them to put declare() at the top. > + */ > + if (CG(active_op_array)->last > 0) { > + /* ignore ZEND_EXT_STMT and ZEND_TICKS */ > + int num = CG(active_op_array)->last; > + while (num > 0 && > + > (CG(active_op_array)->opcodes[num-1].opcode == ZEND_EXT_STMT || > + > CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) { > + --num; > + } > + if (num > 0) { > + zend_error(E_COMPILE_ERROR, "Encoding > declaration pragma has to be the very first statement in the script"); > + } > + } > + > + convert_to_string(&val->u.constant); > + new_encoding = > zend_multibyte_fetch_encoding(val->u.constant.value.str.val); > + if (!new_encoding) { > + zend_error(E_COMPILE_WARNING, "Unsupported > encoding [%s]", val->u.constant.value.str.val); > + } else { > + old_input_filter = LANG_SCNG(input_filter); > + old_encoding = LANG_SCNG(script_encoding); > + zend_multibyte_set_filter(new_encoding TSRMLS_CC); > + > + /* need to re-scan if input filter changed */ > + if (old_input_filter != LANG_SCNG(input_filter) || > + ((old_input_filter == > zend_multibyte_script_encoding_filter) && > + (new_encoding != old_encoding))) { > + > zend_multibyte_yyinput_again(old_input_filter, old_encoding TSRMLS_CC); > + } > + } > +#else /* !ZEND_MULTIBYTE */ > } else if > (!zend_binary_strcasecmp(var->u.constant.value.str.val, > var->u.constant.value.str.len, "encoding", sizeof("encoding")-1)) { > /* Do not generate any kind of warning for encoding declares */ > /* zend_error(E_COMPILE_WARNING, "Declare encoding [%s] > not supported", val->u.constant.value.str.val); */ > +#endif /* ZEND_MULTIBYTE */ > efree(val->u.constant.value.str.val); > } else { > zend_error(E_COMPILE_WARNING, "Unsupported declare > '%s'", var->u.constant.value.str.val); > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_globals.h?r1=1.141.2.3.2.7.2.15&r2=1.141.2.3.2.7.2.16&diff_format=u > Index: ZendEngine2/zend_globals.h > diff -u ZendEngine2/zend_globals.h:1.141.2.3.2.7.2.15 > ZendEngine2/zend_globals.h:1.141.2.3.2.7.2.16 > --- ZendEngine2/zend_globals.h:1.141.2.3.2.7.2.15 Wed Apr 9 20:50:58 2008 > +++ ZendEngine2/zend_globals.h Sun Jun 29 08:21:34 2008 > @@ -17,7 +17,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_globals.h,v 1.141.2.3.2.7.2.15 2008/04/09 20:50:58 scottmac Exp $ */ > +/* $Id: zend_globals.h,v 1.141.2.3.2.7.2.16 2008/06/29 08:21:34 hirokawa Exp $ */ > > #ifndef ZEND_GLOBALS_H > #define ZEND_GLOBALS_H > @@ -35,6 +35,10 @@ > #include "zend_objects_API.h" > #include "zend_modules.h" > > +#ifdef ZEND_MULTIBYTE > +#include "zend_multibyte.h" > +#endif /* ZEND_MULTIBYTE */ > + > /* Define ZTS if you want a thread-safe Zend */ > /*#undef ZTS*/ > > @@ -134,6 +138,19 @@ > HashTable *labels; > zend_stack labels_stack; > > +#ifdef ZEND_MULTIBYTE > + zend_encoding **script_encoding_list; > + int script_encoding_list_size; > + zend_bool detect_unicode; > + > + zend_encoding *internal_encoding; > + > + /* multibyte utility functions */ > + zend_encoding_detector encoding_detector; > + zend_encoding_converter encoding_converter; > + zend_encoding_oddlen encoding_oddlen; > +#endif /* ZEND_MULTIBYTE */ > + > #ifdef ZTS > HashTable **static_members; > int last_static_member; > @@ -271,6 +288,22 @@ > zend_stack state_stack; > > zend_llist used_state_stacks; > + > +#ifdef ZEND_MULTIBYTE > + /* original (unfiltered) script */ > + char *script_org; > + int script_org_size; > + > + /* filtered script */ > + char *script_filtered; > + int script_filtered_size; > + > + /* input/ouput filters */ > + zend_encoding_filter input_filter; > + zend_encoding_filter output_filter; > + zend_encoding *script_encoding; > + zend_encoding *internal_encoding; > +#endif /* ZEND_MULTIBYTE */ > }; > > #endif /* ZEND_GLOBALS_H */ > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_highlight.c?r1=1.49.2.3.2.2.2.3&r2=1.49.2.3.2.2.2.4&diff_format=u > Index: ZendEngine2/zend_highlight.c > diff -u ZendEngine2/zend_highlight.c:1.49.2.3.2.2.2.3 > ZendEngine2/zend_highlight.c:1.49.2.3.2.2.2.4 > --- ZendEngine2/zend_highlight.c:1.49.2.3.2.2.2.3 Sun Mar 16 21:05:33 2008 > +++ ZendEngine2/zend_highlight.c Sun Jun 29 08:21:34 2008 > @@ -17,7 +17,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_highlight.c,v 1.49.2.3.2.2.2.3 2008/03/16 21:05:33 helly Exp $ */ > +/* $Id: zend_highlight.c,v 1.49.2.3.2.2.2.4 2008/06/29 08:21:34 hirokawa Exp $ */ > > #include "zend.h" > #include <zend_language_parser.h> > @@ -58,6 +58,17 @@ > { > const char *ptr=s, *end=s+len; > > +#ifdef ZEND_MULTIBYTE > + char *filtered; > + int filtered_len; > + > + if (LANG_SCNG(output_filter)) { > + LANG_SCNG(output_filter)(&filtered, &filtered_len, s, len TSRMLS_CC); > + ptr = filtered; > + end = filtered + filtered_len; > + } > +#endif /* ZEND_MULTIBYTE */ > + > while (ptr<end) { > if (*ptr==' ') { > do { > @@ -67,6 +78,12 @@ > zend_html_putc(*ptr++); > } > } > + > +#ifdef ZEND_MULTIBYTE > + if (LANG_SCNG(output_filter)) { > + efree(filtered); > + } > +#endif /* ZEND_MULTIBYTE */ > } > > > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.c?r1=1.1.2.12&r2=1.1.2.13&diff_format=u > Index: ZendEngine2/zend_language_scanner.c > diff -u ZendEngine2/zend_language_scanner.c:1.1.2.12 > ZendEngine2/zend_language_scanner.c:1.1.2.13 > --- ZendEngine2/zend_language_scanner.c:1.1.2.12 Sat May 10 09:17:28 2008 > +++ ZendEngine2/zend_language_scanner.c Sun Jun 29 08:21:35 2008 > @@ -1,4 +1,4 @@ > -/* Generated by re2c 0.13.4 on Sat May 10 03:48:00 2008 */ > +/* Generated by re2c 0.13.5 on Sun Jun 29 17:06:51 2008 */ > #line 1 "Zend/zend_language_scanner.l" > /* > > +----------------------------------------------------------------------+ > @@ -23,7 +23,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_language_scanner.c,v 1.1.2.12 2008/05/10 09:17:28 mattwil Exp $ */ > +/* $Id: zend_language_scanner.c,v 1.1.2.13 2008/06/29 08:21:35 hirokawa Exp $ */ > > #if 0 > # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) > @@ -182,6 +182,17 @@ > lex_state->yy_state = YYSTATE; > lex_state->filename = zend_get_compiled_filename(TSRMLS_C); > lex_state->lineno = CG(zend_lineno); > + > +#ifdef ZEND_MULTIBYTE > + lex_state->script_org = SCNG(script_org); > + lex_state->script_org_size = SCNG(script_org_size); > + lex_state->script_filtered = SCNG(script_filtered); > + lex_state->script_filtered_size = SCNG(script_filtered_size); > + lex_state->input_filter = SCNG(input_filter); > + lex_state->output_filter = SCNG(output_filter); > + lex_state->script_encoding = SCNG(script_encoding); > + lex_state->internal_encoding = SCNG(internal_encoding); > +#endif /* ZEND_MULTIBYTE */ > } > > ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) > @@ -200,6 +211,24 @@ > YYSETCONDITION(lex_state->yy_state); > CG(zend_lineno) = lex_state->lineno; > zend_restore_compiled_filename(lex_state->filename TSRMLS_CC); > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > + SCNG(script_org) = lex_state->script_org; > + SCNG(script_org_size) = lex_state->script_org_size; > + SCNG(script_filtered) = lex_state->script_filtered; > + SCNG(script_filtered_size) = lex_state->script_filtered_size; > + SCNG(input_filter) = lex_state->input_filter; > + SCNG(output_filter) = lex_state->output_filter; > + SCNG(script_encoding) = lex_state->script_encoding; > + SCNG(internal_encoding) = lex_state->internal_encoding; > +#endif /* ZEND_MULTIBYTE */ > } > > ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) > @@ -234,8 +263,27 @@ > SCNG(yy_in) = file_handle; > > if (size != -1) { > - /* TODO: For MULTIBYTE we need to do some clever re-encoding */ > +#ifdef ZEND_MULTIBYTE > + if (zend_multibyte_read_script(buf, size TSRMLS_CC) != 0) { > + return FAILURE; > + } > + > + SCNG(yy_in) = NULL; > + > + zend_multibyte_set_filter(NULL TSRMLS_CC); > + > + if (!SCNG(input_filter)) { > + SCNG(script_filtered) = > (char*)emalloc(SCNG(script_org_size)+1); > + memcpy(SCNG(script_filtered), SCNG(script_org), > SCNG(script_org_size)+1); > + SCNG(script_filtered_size) = SCNG(script_org_size); > + } else { > + SCNG(input_filter)(&SCNG(script_filtered), > &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); > + } > + > + yy_scan_buffer(SCNG(script_filtered), > SCNG(script_filtered_size) TSRMLS_CC); > +#else /* !ZEND_MULTIBYTE */ > yy_scan_buffer(buf, size TSRMLS_CC); > +#endif /* ZEND_MULTIBYTE */ > } else { > zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); > } > @@ -372,8 +420,24 @@ > > SCNG(yy_in)=NULL; > > - /* TODO: For MULTIBYTE we need to do some clever re-encoding */ > +#ifdef ZEND_MULTIBYTE > + SCNG(script_org) = estrdup(str->value.str.val); > + SCNG(script_org_size) = str->value.str.len; > + > + zend_multibyte_set_filter(CG(internal_encoding) TSRMLS_CC); > + > + if (!SCNG(input_filter)) { > + SCNG(script_filtered) = > (char*)emalloc(SCNG(script_org_size)+1); > + memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); > + SCNG(script_filtered_size) = SCNG(script_org_size); > + } else { > + SCNG(input_filter)(&SCNG(script_filtered), > &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); > + } > + > + yy_scan_buffer(SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); > +#else /* !ZEND_MULTIBYTE */ > yy_scan_buffer(str->value.str.val, str->value.str.len TSRMLS_CC); > +#endif /* ZEND_MULTIBYTE */ > > zend_set_compiled_filename(filename TSRMLS_CC); > CG(zend_lineno) = 1; > @@ -424,6 +488,17 @@ > BEGIN(ST_IN_SCRIPTING); > compiler_result = zendparse(TSRMLS_C); > > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > +#endif /* ZEND_MULTIBYTE */ > + > if (compiler_result==1) { > CG(active_op_array) = original_active_op_array; > CG(unclean_shutdown)=1; > @@ -459,6 +534,16 @@ > return FAILURE; > } > zend_highlight(syntax_highlighter_ini TSRMLS_CC); > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > +#endif /* ZEND_MULTIBYTE */ > zend_destroy_file_handle(&file_handle TSRMLS_CC); > zend_restore_lexical_state(&original_lex_state TSRMLS_CC); > return SUCCESS; > @@ -477,15 +562,147 @@ > } > BEGIN(INITIAL); > zend_highlight(syntax_highlighter_ini TSRMLS_CC); > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > +#endif /* ZEND_MULTIBYTE */ > zend_restore_lexical_state(&original_lex_state TSRMLS_CC); > zval_dtor(str); > return SUCCESS; > } > END_EXTERN_C() > > +#ifdef ZEND_MULTIBYTE > +BEGIN_EXTERN_C() > +ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter > old_input_filter, zend_encoding *old_encoding TSRMLS_DC) > +{ > + int offset, original_offset, length, free_flag, new_len; > + char *p; > + zend_encoding *new_encoding; > + unsigned char *yy_c_buf_p; > + > + /* calculate current position */ > + offset = original_offset = YYCURSOR - SCNG(yy_start); > + if (old_input_filter && original_offset > 0) { > + new_encoding = SCNG(script_encoding); > + SCNG(script_encoding) = old_encoding; > + do { > + (old_input_filter)(&p, &length, > SCNG(script_org), offset TSRMLS_CC); > + if (!p) { > + SCNG(script_encoding) = new_encoding; > + return; > + } > + efree(p); > + if (length > original_offset) { > + offset--; > + } else if (length < original_offset) { > + offset++; > + } > + } while (original_offset != length); > + SCNG(script_encoding) = new_encoding; > + } > + > + /* convert and set */ > + if (!SCNG(input_filter)) { > + length = SCNG(script_org_size)-offset-1; > + p = SCNG(script_org)+offset+1; > + free_flag = 0; > + } else { > + SCNG(input_filter)(&p, &length, > SCNG(script_org)+offset+1, SCNG(script_org_size)-offset-1 TSRMLS_CC); > + free_flag = 1; > + } > + > + new_len = original_offset+length+1; > + > + if (new_len > YYLIMIT-SCNG(yy_start)) { > + YYLIMIT = SCNG(yy_start) + new_len; > + SCNG(yy_start) = erealloc(SCNG(yy_start), new_len); > + SCNG(script_filtered) = SCNG(yy_start); > + SCNG(script_filtered_size) = new_len; > + } > + > + yy_c_buf_p = SCNG(yy_start) + original_offset; > + strncpy(yy_c_buf_p+1, p, length); > + > + if (free_flag) { > + efree(p); > + } > +} > + > + > +ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len > TSRMLS_DC) > +{ > + int c = '*', n; > + > + if (CG(interactive) == 0) { > + if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) { > + return FAILURE; > + } > + n = len; > + return n; > + } > + > + /* interactive */ > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + } > + SCNG(script_org) = NULL; > + SCNG(script_org_size) = 0; > + > + /* TODO: support widechars */ > + if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) { > + return FAILURE; > + } > + n = len; > + > + SCNG(script_org_size) = n; > + SCNG(script_org) = (char*)emalloc(SCNG(script_org_size) + 1); > + memcpy(SCNG(script_org), buf, n); > + > + return n; > +} > + > + > +ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC) > +{ > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + } > + if (n<0) { > + return -1; > + } > + SCNG(script_org_size) = n; > + SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size)); > + memcpy(SCNG(script_org) + SCNG(script_org_size) - n, buf, n); > + > + SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); > + *(SCNG(script_org)+SCNG(script_org_size)) = '\0'; > + > + return 0; > +} > + > + > +# define zend_copy_value(zendlval, yytext, yyleng) \ > + if (SCNG(output_filter)) { \ > + SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); \ > + } else { \ > + zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ > + zendlval->value.str.len = yyleng; \ > + } > +#else /* ZEND_MULTIBYTE */ > # define zend_copy_value(zendlval, yytext, yyleng) \ > zendlval->value.str.val = (char *)estrndup(yytext, yyleng); \ > zendlval->value.str.len = yyleng; > +#endif /* ZEND_MULTIBYTE */ > > static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type > TSRMLS_DC) > { > @@ -589,6 +806,13 @@ > s++; > } > *t = 0; > +#ifdef ZEND_MULTIBYTE > + if (SCNG(output_filter)) { > + s = zendlval->value.str.val; > + SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); > + efree(s); > + } > +#endif /* ZEND_MULTIBYTE */ > } > > > @@ -610,7 +834,7 @@ > } > > > -#line 614 "Zend/zend_language_scanner.c" > +#line 838 "Zend/zend_language_scanner.c" > { > YYCTYPE yych; > unsigned int yyaccept = 0; > @@ -734,7 +958,7 @@ > yy3: > YYDEBUG(3, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1402 "Zend/zend_language_scanner.l" > +#line 1626 "Zend/zend_language_scanner.l" > { > > while (1) { > @@ -759,13 +983,26 @@ > > inline_char_handler: > > +#ifdef ZEND_MULTIBYTE > + if (SCNG(output_filter)) { > + int readsize; > + readsize = > SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); > + if (readsize < yyleng) { > + yyless(readsize); > + } > + } else { > + zendlval->value.str.val = (char *) estrndup(yytext, yyleng); > + zendlval->value.str.len = yyleng; > + } > +#else /* !ZEND_MULTIBYTE */ > zendlval->value.str.val = (char *) estrndup(yytext, yyleng); > - zendlval->value.str.len = yyleng; > + zendlval->value.str.len = yyleng; > +#endif > zendlval->type = IS_STRING; > HANDLE_NEWLINES(yytext, yyleng); > return T_INLINE_HTML; > } > -#line 769 "Zend/zend_language_scanner.c" > +#line 1006 "Zend/zend_language_scanner.c" > yy4: > YYDEBUG(4, *YYCURSOR); > yyaccept = 0; > @@ -792,7 +1029,7 @@ > yy9: > YYDEBUG(9, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1393 "Zend/zend_language_scanner.l" > +#line 1617 "Zend/zend_language_scanner.l" > { > if ((YYCTYPE*)yytext == SCNG(yy_start)) { > /* ignore first line when it's started with a # */ > @@ -801,7 +1038,7 @@ > goto inline_char_handler; > } > } > -#line 805 "Zend/zend_language_scanner.c" > +#line 1042 "Zend/zend_language_scanner.c" > yy10: > YYDEBUG(10, *YYCURSOR); > yyaccept = 1; > @@ -827,7 +1064,7 @@ > yy13: > YYDEBUG(13, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1377 "Zend/zend_language_scanner.l" > +#line 1601 "Zend/zend_language_scanner.l" > { > HANDLE_NEWLINES(yytext, yyleng); > if (CG(short_tags)) { > @@ -843,14 +1080,14 @@ > return T_INLINE_HTML; > } > } > -#line 847 "Zend/zend_language_scanner.c" > +#line 1084 "Zend/zend_language_scanner.c" > yy14: > YYDEBUG(14, *YYCURSOR); > ++YYCURSOR; > if ((yych = *YYCURSOR) == '=') goto yy50; > YYDEBUG(15, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1351 "Zend/zend_language_scanner.l" > +#line 1575 "Zend/zend_language_scanner.l" > { > if (CG(asp_tags)) { > zendlval->value.str.val = yytext; /* no copying - intentional */ > @@ -865,7 +1102,7 @@ > return T_INLINE_HTML; > } > } > -#line 869 "Zend/zend_language_scanner.c" > +#line 1106 "Zend/zend_language_scanner.c" > yy16: > YYDEBUG(16, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1055,7 +1292,7 @@ > ++YYCURSOR; > YYDEBUG(45, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1309 "Zend/zend_language_scanner.l" > +#line 1533 "Zend/zend_language_scanner.l" > { > HANDLE_NEWLINES(yytext, yyleng); > zendlval->value.str.val = yytext; /* no copying - intentional */ > @@ -1064,7 +1301,7 @@ > BEGIN(ST_IN_SCRIPTING); > return T_OPEN_TAG; > } > -#line 1068 "Zend/zend_language_scanner.c" > +#line 1305 "Zend/zend_language_scanner.c" > yy46: > YYDEBUG(46, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1091,7 +1328,7 @@ > ++YYCURSOR; > YYDEBUG(51, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1319 "Zend/zend_language_scanner.l" > +#line 1543 "Zend/zend_language_scanner.l" > { > if (CG(asp_tags)) { > zendlval->value.str.val = yytext; /* no copying - intentional */ > @@ -1106,13 +1343,13 @@ > return T_INLINE_HTML; > } > } > -#line 1110 "Zend/zend_language_scanner.c" > +#line 1347 "Zend/zend_language_scanner.c" > yy52: > YYDEBUG(52, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(53, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1335 "Zend/zend_language_scanner.l" > +#line 1559 "Zend/zend_language_scanner.l" > { > if (CG(short_tags)) { > zendlval->value.str.val = yytext; /* no copying - intentional */ > @@ -1127,7 +1364,7 @@ > return T_INLINE_HTML; > } > } > -#line 1131 "Zend/zend_language_scanner.c" > +#line 1368 "Zend/zend_language_scanner.c" > yy54: > YYDEBUG(54, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1154,7 +1391,7 @@ > yy58: > YYDEBUG(58, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1367 "Zend/zend_language_scanner.l" > +#line 1591 "Zend/zend_language_scanner.l" > { > zendlval->value.str.val = yytext; /* no copying - intentional */ > zendlval->value.str.len = yyleng; > @@ -1163,7 +1400,7 @@ > BEGIN(ST_IN_SCRIPTING); > return T_OPEN_TAG; > } > -#line 1167 "Zend/zend_language_scanner.c" > +#line 1404 "Zend/zend_language_scanner.c" > yy59: > YYDEBUG(59, *YYCURSOR); > ++YYCURSOR; > @@ -1254,13 +1491,13 @@ > yy64: > YYDEBUG(64, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1763 "Zend/zend_language_scanner.l" > +#line 2007 "Zend/zend_language_scanner.l" > { > zendlval->value.lval = (long) '{'; > yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); > return T_CURLY_OPEN; > } > -#line 1264 "Zend/zend_language_scanner.c" > +#line 1501 "Zend/zend_language_scanner.c" > yy65: > YYDEBUG(65, *YYCURSOR); > yyaccept = 1; > @@ -1278,12 +1515,12 @@ > yy67: > YYDEBUG(67, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1788 "Zend/zend_language_scanner.l" > +#line 2032 "Zend/zend_language_scanner.l" > { > zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 1287 "Zend/zend_language_scanner.c" > +#line 1524 "Zend/zend_language_scanner.c" > yy68: > YYDEBUG(68, *YYCURSOR); > ++YYCURSOR; > @@ -1295,12 +1532,12 @@ > ++YYCURSOR; > YYDEBUG(70, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1924 "Zend/zend_language_scanner.l" > +#line 2168 "Zend/zend_language_scanner.l" > { > BEGIN(ST_IN_SCRIPTING); > return '`'; > } > -#line 1304 "Zend/zend_language_scanner.c" > +#line 1541 "Zend/zend_language_scanner.c" > yy71: > YYDEBUG(71, *YYCURSOR); > ++YYCURSOR; > @@ -1388,13 +1625,13 @@ > yy77: > YYDEBUG(77, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1793 "Zend/zend_language_scanner.l" > +#line 2037 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 1); > zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC); > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 1398 "Zend/zend_language_scanner.c" > +#line 1635 "Zend/zend_language_scanner.c" > yy78: > YYDEBUG(78, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1428,24 +1665,24 @@ > yy83: > YYDEBUG(83, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1455 "Zend/zend_language_scanner.l" > +#line 1692 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, (yytext+1), (yyleng-1)); > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 1438 "Zend/zend_language_scanner.c" > +#line 1675 "Zend/zend_language_scanner.c" > yy84: > YYDEBUG(84, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(85, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1102 "Zend/zend_language_scanner.l" > +#line 1326 "Zend/zend_language_scanner.l" > { > yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); > return T_DOLLAR_OPEN_CURLY_BRACES; > } > -#line 1449 "Zend/zend_language_scanner.c" > +#line 1686 "Zend/zend_language_scanner.c" > yy86: > YYDEBUG(86, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1456,7 +1693,7 @@ > ++YYCURSOR; > YYDEBUG(88, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1447 "Zend/zend_language_scanner.l" > +#line 1684 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 1); > yy_push_state(ST_VAR_OFFSET TSRMLS_CC); > @@ -1464,7 +1701,7 @@ > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 1468 "Zend/zend_language_scanner.c" > +#line 1705 "Zend/zend_language_scanner.c" > yy89: > YYDEBUG(89, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1482,7 +1719,7 @@ > ++YYCURSOR; > YYDEBUG(91, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1437 "Zend/zend_language_scanner.l" > +#line 1674 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 3); > yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); > @@ -1490,7 +1727,7 @@ > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 1494 "Zend/zend_language_scanner.c" > +#line 1731 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_COMMENT: > @@ -1547,34 +1784,34 @@ > } > YYDEBUG(96, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1547 "Zend/zend_language_scanner.l" > +#line 1784 "Zend/zend_language_scanner.l" > { > yymore(); > } > -#line 1555 "Zend/zend_language_scanner.c" > +#line 1792 "Zend/zend_language_scanner.c" > yy97: > YYDEBUG(97, *YYCURSOR); > ++YYCURSOR; > if ((yych = *YYCURSOR) == '/') goto yy99; > YYDEBUG(98, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1565 "Zend/zend_language_scanner.l" > +#line 1802 "Zend/zend_language_scanner.l" > { > yymore(); > } > -#line 1566 "Zend/zend_language_scanner.c" > +#line 1803 "Zend/zend_language_scanner.c" > yy99: > YYDEBUG(99, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(100, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1559 "Zend/zend_language_scanner.l" > +#line 1796 "Zend/zend_language_scanner.l" > { > HANDLE_NEWLINES(yytext, yyleng); > BEGIN(ST_IN_SCRIPTING); > return T_COMMENT; > } > -#line 1578 "Zend/zend_language_scanner.c" > +#line 1815 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_DOC_COMMENT: > @@ -1631,28 +1868,28 @@ > } > YYDEBUG(105, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1547 "Zend/zend_language_scanner.l" > +#line 1784 "Zend/zend_language_scanner.l" > { > yymore(); > } > -#line 1639 "Zend/zend_language_scanner.c" > +#line 1876 "Zend/zend_language_scanner.c" > yy106: > YYDEBUG(106, *YYCURSOR); > ++YYCURSOR; > if ((yych = *YYCURSOR) == '/') goto yy108; > YYDEBUG(107, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1565 "Zend/zend_language_scanner.l" > +#line 1802 "Zend/zend_language_scanner.l" > { > yymore(); > } > -#line 1650 "Zend/zend_language_scanner.c" > +#line 1887 "Zend/zend_language_scanner.c" > yy108: > YYDEBUG(108, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(109, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1551 "Zend/zend_language_scanner.l" > +#line 1788 "Zend/zend_language_scanner.l" > { > CG(doc_comment) = estrndup(yytext, yyleng); > CG(doc_comment_len) = yyleng; > @@ -1660,7 +1897,7 @@ > BEGIN(ST_IN_SCRIPTING); > return T_DOC_COMMENT; > } > -#line 1664 "Zend/zend_language_scanner.c" > +#line 1901 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_DOUBLE_QUOTES: > @@ -1747,13 +1984,13 @@ > yy114: > YYDEBUG(114, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1763 "Zend/zend_language_scanner.l" > +#line 2007 "Zend/zend_language_scanner.l" > { > zendlval->value.lval = (long) '{'; > yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); > return T_CURLY_OPEN; > } > -#line 1757 "Zend/zend_language_scanner.c" > +#line 1994 "Zend/zend_language_scanner.c" > yy115: > YYDEBUG(115, *YYCURSOR); > yyaccept = 1; > @@ -1772,12 +2009,12 @@ > yy117: > YYDEBUG(117, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1770 "Zend/zend_language_scanner.l" > +#line 2014 "Zend/zend_language_scanner.l" > { > zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 1781 "Zend/zend_language_scanner.c" > +#line 2018 "Zend/zend_language_scanner.c" > yy118: > YYDEBUG(118, *YYCURSOR); > ++YYCURSOR; > @@ -1789,12 +2026,12 @@ > ++YYCURSOR; > YYDEBUG(120, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1918 "Zend/zend_language_scanner.l" > +#line 2162 "Zend/zend_language_scanner.l" > { > BEGIN(ST_IN_SCRIPTING); > return '"'; > } > -#line 1798 "Zend/zend_language_scanner.c" > +#line 2035 "Zend/zend_language_scanner.c" > yy121: > YYDEBUG(121, *YYCURSOR); > ++YYCURSOR; > @@ -1885,13 +2122,13 @@ > yy127: > YYDEBUG(127, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1781 "Zend/zend_language_scanner.l" > +#line 2025 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 1); > zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC); > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 1895 "Zend/zend_language_scanner.c" > +#line 2132 "Zend/zend_language_scanner.c" > yy128: > YYDEBUG(128, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1925,24 +2162,24 @@ > yy133: > YYDEBUG(133, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1455 "Zend/zend_language_scanner.l" > +#line 1692 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, (yytext+1), (yyleng-1)); > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 1935 "Zend/zend_language_scanner.c" > +#line 2172 "Zend/zend_language_scanner.c" > yy134: > YYDEBUG(134, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(135, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1102 "Zend/zend_language_scanner.l" > +#line 1326 "Zend/zend_language_scanner.l" > { > yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); > return T_DOLLAR_OPEN_CURLY_BRACES; > } > -#line 1946 "Zend/zend_language_scanner.c" > +#line 2183 "Zend/zend_language_scanner.c" > yy136: > YYDEBUG(136, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1953,7 +2190,7 @@ > ++YYCURSOR; > YYDEBUG(138, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1447 "Zend/zend_language_scanner.l" > +#line 1684 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 1); > yy_push_state(ST_VAR_OFFSET TSRMLS_CC); > @@ -1961,7 +2198,7 @@ > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 1965 "Zend/zend_language_scanner.c" > +#line 2202 "Zend/zend_language_scanner.c" > yy139: > YYDEBUG(139, *YYCURSOR); > yych = *++YYCURSOR; > @@ -1979,7 +2216,7 @@ > ++YYCURSOR; > YYDEBUG(141, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1437 "Zend/zend_language_scanner.l" > +#line 1674 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 3); > yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); > @@ -1987,7 +2224,7 @@ > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 1991 "Zend/zend_language_scanner.c" > +#line 2228 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_END_HEREDOC: > @@ -1998,7 +2235,7 @@ > ++YYCURSOR; > YYDEBUG(145, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1752 "Zend/zend_language_scanner.l" > +#line 1996 "Zend/zend_language_scanner.l" > { > SCNG(yy_text) = Z_STRVAL_P(zendlval) = CG(heredoc); > SCNG(yy_leng) = Z_STRLEN_P(zendlval) = CG(heredoc_len); > @@ -2007,7 +2244,7 @@ > BEGIN(ST_IN_SCRIPTING); > return T_END_HEREDOC; > } > -#line 2011 "Zend/zend_language_scanner.c" > +#line 2248 "Zend/zend_language_scanner.c" > /* *********************************** */ > yyc_ST_END_NOWDOC: > YYDEBUG(146, *YYCURSOR); > @@ -2017,7 +2254,7 @@ > ++YYCURSOR; > YYDEBUG(149, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1907 "Zend/zend_language_scanner.l" > +#line 2151 "Zend/zend_language_scanner.l" > { > SCNG(yy_text) = Z_STRVAL_P(zendlval) = CG(heredoc); > SCNG(yy_leng) = Z_STRLEN_P(zendlval) = CG(heredoc_len); > @@ -2026,7 +2263,7 @@ > BEGIN(ST_IN_SCRIPTING); > return T_END_NOWDOC; > } > -#line 2030 "Zend/zend_language_scanner.c" > +#line 2267 "Zend/zend_language_scanner.c" > /* *********************************** */ > yyc_ST_HEREDOC: > { > @@ -2083,12 +2320,12 @@ > yy152: > YYDEBUG(152, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1807 "Zend/zend_language_scanner.l" > +#line 2051 "Zend/zend_language_scanner.l" > { > zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 2092 "Zend/zend_language_scanner.c" > +#line 2329 "Zend/zend_language_scanner.c" > yy153: > YYDEBUG(153, *YYCURSOR); > yych = *++YYCURSOR; > @@ -2134,13 +2371,13 @@ > yy155: > YYDEBUG(155, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1763 "Zend/zend_language_scanner.l" > +#line 2007 "Zend/zend_language_scanner.l" > { > zendlval->value.lval = (long) '{'; > yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); > return T_CURLY_OPEN; > } > -#line 2144 "Zend/zend_language_scanner.c" > +#line 2381 "Zend/zend_language_scanner.c" > yy156: > YYDEBUG(156, *YYCURSOR); > yyaccept = 0; > @@ -2391,13 +2628,13 @@ > yy174: > YYDEBUG(174, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1812 "Zend/zend_language_scanner.l" > +#line 2056 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 1); > zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC); > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 2401 "Zend/zend_language_scanner.c" > +#line 2638 "Zend/zend_language_scanner.c" > yy175: > YYDEBUG(175, *YYCURSOR); > yyaccept = 2; > @@ -2496,7 +2733,7 @@ > ++YYCURSOR; > YYDEBUG(182, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1712 "Zend/zend_language_scanner.l" > +#line 1956 "Zend/zend_language_scanner.l" > { > char *end = yytext + yyleng - 1; > > @@ -2536,7 +2773,7 @@ > yymore(); > } > } > -#line 2540 "Zend/zend_language_scanner.c" > +#line 2777 "Zend/zend_language_scanner.c" > yy183: > YYDEBUG(183, *YYCURSOR); > yyaccept = 2; > @@ -2796,24 +3033,24 @@ > yy204: > YYDEBUG(204, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1455 "Zend/zend_language_scanner.l" > +#line 1692 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, (yytext+1), (yyleng-1)); > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 2806 "Zend/zend_language_scanner.c" > +#line 3043 "Zend/zend_language_scanner.c" > yy205: > YYDEBUG(205, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(206, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1102 "Zend/zend_language_scanner.l" > +#line 1326 "Zend/zend_language_scanner.l" > { > yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); > return T_DOLLAR_OPEN_CURLY_BRACES; > } > -#line 2817 "Zend/zend_language_scanner.c" > +#line 3054 "Zend/zend_language_scanner.c" > yy207: > YYDEBUG(207, *YYCURSOR); > yych = *++YYCURSOR; > @@ -2824,7 +3061,7 @@ > ++YYCURSOR; > YYDEBUG(209, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1447 "Zend/zend_language_scanner.l" > +#line 1684 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 1); > yy_push_state(ST_VAR_OFFSET TSRMLS_CC); > @@ -2832,7 +3069,7 @@ > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 2836 "Zend/zend_language_scanner.c" > +#line 3073 "Zend/zend_language_scanner.c" > yy210: > YYDEBUG(210, *YYCURSOR); > yych = *++YYCURSOR; > @@ -2850,7 +3087,7 @@ > ++YYCURSOR; > YYDEBUG(212, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1437 "Zend/zend_language_scanner.l" > +#line 1674 "Zend/zend_language_scanner.l" > { > yyless(yyleng - 3); > yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); > @@ -2858,7 +3095,7 @@ > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 2862 "Zend/zend_language_scanner.c" > +#line 3099 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_IN_SCRIPTING: > @@ -3073,13 +3310,13 @@ > yy216: > YYDEBUG(216, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1479 "Zend/zend_language_scanner.l" > +#line 1716 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, yytext, yyleng); > zendlval->type = IS_STRING; > return T_STRING; > } > -#line 3083 "Zend/zend_language_scanner.c" > +#line 3320 "Zend/zend_language_scanner.c" > yy217: > YYDEBUG(217, *YYCURSOR); > yych = *++YYCURSOR; > @@ -3326,11 +3563,11 @@ > yy230: > YYDEBUG(230, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1091 "Zend/zend_language_scanner.l" > +#line 1315 "Zend/zend_language_scanner.l" > { > return yytext[0]; > } > -#line 3334 "Zend/zend_language_scanner.c" > +#line 3571 "Zend/zend_language_scanner.c" > yy231: > YYDEBUG(231, *YYCURSOR); > ++YYCURSOR; > @@ -3339,7 +3576,7 @@ > yy232: > YYDEBUG(232, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 830 "Zend/zend_language_scanner.l" > +#line 1054 "Zend/zend_language_scanner.l" > { > zendlval->value.str.val = yytext; /* no copying - intentional */ > zendlval->value.str.len = yyleng; > @@ -3347,7 +3584,7 @@ > HANDLE_NEWLINES(yytext, yyleng); > return T_WHITESPACE; > } > -#line 3351 "Zend/zend_language_scanner.c" > +#line 3588 "Zend/zend_language_scanner.c" > yy233: > YYDEBUG(233, *YYCURSOR); > yych = *++YYCURSOR; > @@ -3580,18 +3817,18 @@ > ++YYCURSOR; > YYDEBUG(258, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1096 "Zend/zend_language_scanner.l" > +#line 1320 "Zend/zend_language_scanner.l" > { > yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); > return '{'; > } > -#line 3589 "Zend/zend_language_scanner.c" > +#line 3826 "Zend/zend_language_scanner.c" > yy259: > YYDEBUG(259, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(260, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1108 "Zend/zend_language_scanner.l" > +#line 1332 "Zend/zend_language_scanner.l" > { > RESET_DOC_COMMENT(); > if (!zend_stack_is_empty(&SCNG(state_stack))) { > @@ -3599,7 +3836,7 @@ > } > return '}'; > } > -#line 3603 "Zend/zend_language_scanner.c" > +#line 3840 "Zend/zend_language_scanner.c" > yy261: > YYDEBUG(261, *YYCURSOR); > yyaccept = 2; > @@ -3622,7 +3859,7 @@ > yy262: > YYDEBUG(262, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1134 "Zend/zend_language_scanner.l" > +#line 1358 "Zend/zend_language_scanner.l" > { > if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ > zendlval->value.lval = strtol(yytext, NULL, 0); > @@ -3643,7 +3880,7 @@ > zendlval->type = IS_LONG; > return T_LNUMBER; > } > -#line 3647 "Zend/zend_language_scanner.c" > +#line 3884 "Zend/zend_language_scanner.c" > yy263: > YYDEBUG(263, *YYCURSOR); > yyaccept = 2; > @@ -3671,12 +3908,12 @@ > yy266: > YYDEBUG(266, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1486 "Zend/zend_language_scanner.l" > +#line 1723 "Zend/zend_language_scanner.l" > { > BEGIN(ST_ONE_LINE_COMMENT); > yymore(); > } > -#line 3680 "Zend/zend_language_scanner.c" > +#line 3917 "Zend/zend_language_scanner.c" > yy267: > YYDEBUG(267, *YYCURSOR); > yyaccept = 3; > @@ -3685,12 +3922,12 @@ > yy268: > YYDEBUG(268, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1644 "Zend/zend_language_scanner.l" > +#line 1888 "Zend/zend_language_scanner.l" > { > BEGIN(ST_DOUBLE_QUOTES); > return '"'; > } > -#line 3694 "Zend/zend_language_scanner.c" > +#line 3931 "Zend/zend_language_scanner.c" > yy269: > YYDEBUG(269, *YYCURSOR); > yyaccept = 4; > @@ -3699,23 +3936,23 @@ > yy270: > YYDEBUG(270, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1930 "Zend/zend_language_scanner.l" > +#line 2174 "Zend/zend_language_scanner.l" > { > zend_error(E_COMPILE_WARNING,"Unexpected character in input: > '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); > goto restart; > } > -#line 3708 "Zend/zend_language_scanner.c" > +#line 3945 "Zend/zend_language_scanner.c" > yy271: > YYDEBUG(271, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(272, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1672 "Zend/zend_language_scanner.l" > +#line 1916 "Zend/zend_language_scanner.l" > { > BEGIN(ST_BACKQUOTE); > return '`'; > } > -#line 3719 "Zend/zend_language_scanner.c" > +#line 3956 "Zend/zend_language_scanner.c" > yy273: > YYDEBUG(273, *YYCURSOR); > yych = *++YYCURSOR; > @@ -3741,7 +3978,7 @@ > ++YYCURSOR; > YYDEBUG(278, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1602 "Zend/zend_language_scanner.l" > +#line 1839 "Zend/zend_language_scanner.l" > { > register char *s, *t; > char *end; > @@ -3780,9 +4017,16 @@ > } > *t = 0; > > +#ifdef ZEND_MULTIBYTE > + if (SCNG(output_filter)) { > + s = zendlval->value.str.val; > + SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); > + efree(s); > + } > +#endif /* ZEND_MULTIBYTE */ > return T_CONSTANT_ENCAPSED_STRING; > } > -#line 3786 "Zend/zend_language_scanner.c" > +#line 4030 "Zend/zend_language_scanner.c" > yy279: > YYDEBUG(279, *YYCURSOR); > ++YYCURSOR; > @@ -3879,14 +4123,14 @@ > ++YYCURSOR; > YYDEBUG(288, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1594 "Zend/zend_language_scanner.l" > +#line 1831 "Zend/zend_language_scanner.l" > { > int bprefix = (yytext[0] != '"') ? 1 : 0; > > zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, > '"' TSRMLS_CC); > return T_CONSTANT_ENCAPSED_STRING; > } > -#line 3890 "Zend/zend_language_scanner.c" > +#line 4134 "Zend/zend_language_scanner.c" > yy289: > YYDEBUG(289, *YYCURSOR); > ++YYCURSOR; > @@ -3919,13 +4163,13 @@ > yy294: > YYDEBUG(294, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1195 "Zend/zend_language_scanner.l" > +#line 1419 "Zend/zend_language_scanner.l" > { > zendlval->value.dval = zend_strtod(yytext, NULL); > zendlval->type = IS_DOUBLE; > return T_DNUMBER; > } > -#line 3929 "Zend/zend_language_scanner.c" > +#line 4173 "Zend/zend_language_scanner.c" > yy295: > YYDEBUG(295, *YYCURSOR); > yyaccept = 2; > @@ -3987,7 +4231,7 @@ > } > YYDEBUG(304, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1155 "Zend/zend_language_scanner.l" > +#line 1379 "Zend/zend_language_scanner.l" > { > char *hex = yytext + 2; /* Skip "0x" */ > int len = yyleng - 2; > @@ -4008,7 +4252,7 @@ > return T_DNUMBER; > } > } > -#line 4012 "Zend/zend_language_scanner.c" > +#line 4256 "Zend/zend_language_scanner.c" > yy305: > YYDEBUG(305, *YYCURSOR); > ++YYCURSOR; > @@ -4017,7 +4261,7 @@ > yy306: > YYDEBUG(306, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1569 "Zend/zend_language_scanner.l" > +#line 1806 "Zend/zend_language_scanner.l" > { > zendlval->value.str.val = yytext; /* no copying - intentional */ > zendlval->value.str.len = yyleng; > @@ -4025,7 +4269,7 @@ > BEGIN(INITIAL); > return T_CLOSE_TAG; /* implicit ';' at php-end tag */ > } > -#line 4029 "Zend/zend_language_scanner.c" > +#line 4273 "Zend/zend_language_scanner.c" > yy307: > YYDEBUG(307, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4059,13 +4303,13 @@ > yy311: > YYDEBUG(311, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1455 "Zend/zend_language_scanner.l" > +#line 1692 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, (yytext+1), (yyleng-1)); > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 4069 "Zend/zend_language_scanner.c" > +#line 4313 "Zend/zend_language_scanner.c" > yy312: > YYDEBUG(312, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4079,11 +4323,11 @@ > } > YYDEBUG(314, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1079 "Zend/zend_language_scanner.l" > +#line 1303 "Zend/zend_language_scanner.l" > { > return T_LOGICAL_XOR; > } > -#line 4087 "Zend/zend_language_scanner.c" > +#line 4331 "Zend/zend_language_scanner.c" > yy315: > YYDEBUG(315, *YYCURSOR); > ++YYCURSOR; > @@ -4092,61 +4336,61 @@ > } > YYDEBUG(316, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1071 "Zend/zend_language_scanner.l" > +#line 1295 "Zend/zend_language_scanner.l" > { > return T_LOGICAL_OR; > } > -#line 4100 "Zend/zend_language_scanner.c" > +#line 4344 "Zend/zend_language_scanner.c" > yy317: > YYDEBUG(317, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(318, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1059 "Zend/zend_language_scanner.l" > +#line 1283 "Zend/zend_language_scanner.l" > { > return T_XOR_EQUAL; > } > -#line 4110 "Zend/zend_language_scanner.c" > +#line 4354 "Zend/zend_language_scanner.c" > yy319: > YYDEBUG(319, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(320, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1063 "Zend/zend_language_scanner.l" > +#line 1287 "Zend/zend_language_scanner.l" > { > return T_BOOLEAN_OR; > } > -#line 4120 "Zend/zend_language_scanner.c" > +#line 4364 "Zend/zend_language_scanner.c" > yy321: > YYDEBUG(321, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(322, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1055 "Zend/zend_language_scanner.l" > +#line 1279 "Zend/zend_language_scanner.l" > { > return T_OR_EQUAL; > } > -#line 4130 "Zend/zend_language_scanner.c" > +#line 4374 "Zend/zend_language_scanner.c" > yy323: > YYDEBUG(323, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(324, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1067 "Zend/zend_language_scanner.l" > +#line 1291 "Zend/zend_language_scanner.l" > { > return T_BOOLEAN_AND; > } > -#line 4140 "Zend/zend_language_scanner.c" > +#line 4384 "Zend/zend_language_scanner.c" > yy325: > YYDEBUG(325, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(326, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1051 "Zend/zend_language_scanner.l" > +#line 1275 "Zend/zend_language_scanner.l" > { > return T_AND_EQUAL; > } > -#line 4150 "Zend/zend_language_scanner.c" > +#line 4394 "Zend/zend_language_scanner.c" > yy327: > YYDEBUG(327, *YYCURSOR); > ++YYCURSOR; > @@ -4155,7 +4399,7 @@ > yy328: > YYDEBUG(328, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1578 "Zend/zend_language_scanner.l" > +#line 1815 "Zend/zend_language_scanner.l" > { > if (CG(asp_tags)) { > BEGIN(INITIAL); > @@ -4168,17 +4412,17 @@ > return yytext[0]; > } > } > -#line 4172 "Zend/zend_language_scanner.c" > +#line 4416 "Zend/zend_language_scanner.c" > yy329: > YYDEBUG(329, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(330, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1039 "Zend/zend_language_scanner.l" > +#line 1263 "Zend/zend_language_scanner.l" > { > return T_MOD_EQUAL; > } > -#line 4182 "Zend/zend_language_scanner.c" > +#line 4426 "Zend/zend_language_scanner.c" > yy331: > YYDEBUG(331, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4209,11 +4453,11 @@ > ++YYCURSOR; > YYDEBUG(336, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1035 "Zend/zend_language_scanner.l" > +#line 1259 "Zend/zend_language_scanner.l" > { > return T_CONCAT_EQUAL; > } > -#line 4217 "Zend/zend_language_scanner.c" > +#line 4461 "Zend/zend_language_scanner.c" > yy337: > YYDEBUG(337, *YYCURSOR); > yyaccept = 6; > @@ -4222,12 +4466,12 @@ > yy338: > YYDEBUG(338, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1541 "Zend/zend_language_scanner.l" > +#line 1778 "Zend/zend_language_scanner.l" > { > BEGIN(ST_COMMENT); > yymore(); > } > -#line 4231 "Zend/zend_language_scanner.c" > +#line 4475 "Zend/zend_language_scanner.c" > yy339: > YYDEBUG(339, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4237,11 +4481,11 @@ > ++YYCURSOR; > YYDEBUG(341, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1031 "Zend/zend_language_scanner.l" > +#line 1255 "Zend/zend_language_scanner.l" > { > return T_DIV_EQUAL; > } > -#line 4245 "Zend/zend_language_scanner.c" > +#line 4489 "Zend/zend_language_scanner.c" > yy342: > YYDEBUG(342, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4260,54 +4504,54 @@ > } > YYDEBUG(345, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1535 "Zend/zend_language_scanner.l" > +#line 1772 "Zend/zend_language_scanner.l" > { > RESET_DOC_COMMENT(); > BEGIN(ST_DOC_COMMENT); > yymore(); > } > -#line 4270 "Zend/zend_language_scanner.c" > +#line 4514 "Zend/zend_language_scanner.c" > yy346: > YYDEBUG(346, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(347, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1027 "Zend/zend_language_scanner.l" > +#line 1251 "Zend/zend_language_scanner.l" > { > return T_MUL_EQUAL; > } > -#line 4280 "Zend/zend_language_scanner.c" > +#line 4524 "Zend/zend_language_scanner.c" > yy348: > YYDEBUG(348, *YYCURSOR); > ++YYCURSOR; > if ((yych = *YYCURSOR) == '=') goto yy352; > YYDEBUG(349, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1087 "Zend/zend_language_scanner.l" > +#line 1311 "Zend/zend_language_scanner.l" > { > return T_SR; > } > -#line 4291 "Zend/zend_language_scanner.c" > +#line 4535 "Zend/zend_language_scanner.c" > yy350: > YYDEBUG(350, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(351, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1015 "Zend/zend_language_scanner.l" > +#line 1239 "Zend/zend_language_scanner.l" > { > return T_IS_GREATER_OR_EQUAL; > } > -#line 4301 "Zend/zend_language_scanner.c" > +#line 4545 "Zend/zend_language_scanner.c" > yy352: > YYDEBUG(352, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(353, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1047 "Zend/zend_language_scanner.l" > +#line 1271 "Zend/zend_language_scanner.l" > { > return T_SR_EQUAL; > } > -#line 4311 "Zend/zend_language_scanner.c" > +#line 4555 "Zend/zend_language_scanner.c" > yy354: > YYDEBUG(354, *YYCURSOR); > yyaccept = 7; > @@ -4318,11 +4562,11 @@ > yy355: > YYDEBUG(355, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1083 "Zend/zend_language_scanner.l" > +#line 1307 "Zend/zend_language_scanner.l" > { > return T_SL; > } > -#line 4326 "Zend/zend_language_scanner.c" > +#line 4570 "Zend/zend_language_scanner.c" > yy356: > YYDEBUG(356, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4334,22 +4578,22 @@ > ++YYCURSOR; > YYDEBUG(358, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1011 "Zend/zend_language_scanner.l" > +#line 1235 "Zend/zend_language_scanner.l" > { > return T_IS_SMALLER_OR_EQUAL; > } > -#line 4342 "Zend/zend_language_scanner.c" > +#line 4586 "Zend/zend_language_scanner.c" > yy359: > YYDEBUG(359, *YYCURSOR); > ++YYCURSOR; > yy360: > YYDEBUG(360, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1007 "Zend/zend_language_scanner.l" > +#line 1231 "Zend/zend_language_scanner.l" > { > return T_IS_NOT_EQUAL; > } > -#line 4353 "Zend/zend_language_scanner.c" > +#line 4597 "Zend/zend_language_scanner.c" > yy361: > YYDEBUG(361, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4400,11 +4644,11 @@ > ++YYCURSOR; > YYDEBUG(369, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1043 "Zend/zend_language_scanner.l" > +#line 1267 "Zend/zend_language_scanner.l" > { > return T_SL_EQUAL; > } > -#line 4408 "Zend/zend_language_scanner.c" > +#line 4652 "Zend/zend_language_scanner.c" > yy370: > YYDEBUG(370, *YYCURSOR); > ++YYCURSOR; > @@ -4511,7 +4755,7 @@ > yy380: > YYDEBUG(380, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1650 "Zend/zend_language_scanner.l" > +#line 1894 "Zend/zend_language_scanner.l" > { > char *s; > int bprefix = (yytext[0] != '<') ? 1 : 0; > @@ -4532,7 +4776,7 @@ > BEGIN(ST_START_HEREDOC); > return T_START_HEREDOC; > } > -#line 4536 "Zend/zend_language_scanner.c" > +#line 4780 "Zend/zend_language_scanner.c" > yy381: > YYDEBUG(381, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4574,7 +4818,7 @@ > yy386: > YYDEBUG(386, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1821 "Zend/zend_language_scanner.l" > +#line 2065 "Zend/zend_language_scanner.l" > { > int bprefix = (yytext[0] != '<') ? 1 : 0; > char *s; > @@ -4591,7 +4835,7 @@ > BEGIN(ST_START_NOWDOC); > return T_START_NOWDOC; > } > -#line 4595 "Zend/zend_language_scanner.c" > +#line 4839 "Zend/zend_language_scanner.c" > yy387: > YYDEBUG(387, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4605,31 +4849,31 @@ > ++YYCURSOR; > YYDEBUG(390, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 999 "Zend/zend_language_scanner.l" > +#line 1223 "Zend/zend_language_scanner.l" > { > return T_IS_NOT_IDENTICAL; > } > -#line 4613 "Zend/zend_language_scanner.c" > +#line 4857 "Zend/zend_language_scanner.c" > yy391: > YYDEBUG(391, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(392, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1019 "Zend/zend_language_scanner.l" > +#line 1243 "Zend/zend_language_scanner.l" > { > return T_PLUS_EQUAL; > } > -#line 4623 "Zend/zend_language_scanner.c" > +#line 4867 "Zend/zend_language_scanner.c" > yy393: > YYDEBUG(393, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(394, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 987 "Zend/zend_language_scanner.l" > +#line 1211 "Zend/zend_language_scanner.l" > { > return T_INC; > } > -#line 4633 "Zend/zend_language_scanner.c" > +#line 4877 "Zend/zend_language_scanner.c" > yy395: > YYDEBUG(395, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4648,42 +4892,42 @@ > } > YYDEBUG(398, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 979 "Zend/zend_language_scanner.l" > +#line 1203 "Zend/zend_language_scanner.l" > { > return T_LIST; > } > -#line 4656 "Zend/zend_language_scanner.c" > +#line 4900 "Zend/zend_language_scanner.c" > yy399: > YYDEBUG(399, *YYCURSOR); > ++YYCURSOR; > if ((yych = *YYCURSOR) == '=') goto yy403; > YYDEBUG(400, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1003 "Zend/zend_language_scanner.l" > +#line 1227 "Zend/zend_language_scanner.l" > { > return T_IS_EQUAL; > } > -#line 4667 "Zend/zend_language_scanner.c" > +#line 4911 "Zend/zend_language_scanner.c" > yy401: > YYDEBUG(401, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(402, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 975 "Zend/zend_language_scanner.l" > +#line 1199 "Zend/zend_language_scanner.l" > { > return T_DOUBLE_ARROW; > } > -#line 4677 "Zend/zend_language_scanner.c" > +#line 4921 "Zend/zend_language_scanner.c" > yy403: > YYDEBUG(403, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(404, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 995 "Zend/zend_language_scanner.l" > +#line 1219 "Zend/zend_language_scanner.l" > { > return T_IS_IDENTICAL; > } > -#line 4687 "Zend/zend_language_scanner.c" > +#line 4931 "Zend/zend_language_scanner.c" > yy405: > YYDEBUG(405, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4775,7 +5019,7 @@ > } > YYDEBUG(423, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1299 "Zend/zend_language_scanner.l" > +#line 1523 "Zend/zend_language_scanner.l" > { > if (CG(current_namespace)) { > *zendlval = *CG(current_namespace); > @@ -4785,7 +5029,7 @@ > } > return T_NS_C; > } > -#line 4789 "Zend/zend_language_scanner.c" > +#line 5033 "Zend/zend_language_scanner.c" > yy424: > YYDEBUG(424, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4803,7 +5047,7 @@ > } > YYDEBUG(428, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1272 "Zend/zend_language_scanner.l" > +#line 1496 "Zend/zend_language_scanner.l" > { > char *filename = zend_get_compiled_filename(TSRMLS_C); > const size_t filename_len = strlen(filename); > @@ -4830,7 +5074,7 @@ > zendlval->type = IS_STRING; > return T_DIR; > } > -#line 4834 "Zend/zend_language_scanner.c" > +#line 5078 "Zend/zend_language_scanner.c" > yy429: > YYDEBUG(429, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4851,13 +5095,13 @@ > } > YYDEBUG(434, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1254 "Zend/zend_language_scanner.l" > +#line 1478 "Zend/zend_language_scanner.l" > { > zendlval->value.lval = CG(zend_lineno); > zendlval->type = IS_LONG; > return T_LINE; > } > -#line 4861 "Zend/zend_language_scanner.c" > +#line 5105 "Zend/zend_language_scanner.c" > yy435: > YYDEBUG(435, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4884,7 +5128,7 @@ > } > YYDEBUG(442, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1233 "Zend/zend_language_scanner.l" > +#line 1457 "Zend/zend_language_scanner.l" > { > char *class_name = CG(active_class_entry) ? > CG(active_class_entry)->name : NULL; > char *func_name = CG(active_op_array)? > CG(active_op_array)->function_name : NULL; > @@ -4905,7 +5149,7 @@ > zendlval->type = IS_STRING; > return T_METHOD_C; > } > -#line 4909 "Zend/zend_language_scanner.c" > +#line 5153 "Zend/zend_language_scanner.c" > yy443: > YYDEBUG(443, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4943,7 +5187,7 @@ > } > YYDEBUG(453, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1217 "Zend/zend_language_scanner.l" > +#line 1441 "Zend/zend_language_scanner.l" > { > char *func_name = NULL; > > @@ -4959,7 +5203,7 @@ > zendlval->type = IS_STRING; > return T_FUNC_C; > } > -#line 4963 "Zend/zend_language_scanner.c" > +#line 5207 "Zend/zend_language_scanner.c" > yy454: > YYDEBUG(454, *YYCURSOR); > yych = *++YYCURSOR; > @@ -4977,7 +5221,7 @@ > } > YYDEBUG(458, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1260 "Zend/zend_language_scanner.l" > +#line 1484 "Zend/zend_language_scanner.l" > { > char *filename = zend_get_compiled_filename(TSRMLS_C); > > @@ -4989,7 +5233,7 @@ > zendlval->type = IS_STRING; > return T_FILE; > } > -#line 4993 "Zend/zend_language_scanner.c" > +#line 5237 "Zend/zend_language_scanner.c" > yy459: > YYDEBUG(459, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5013,7 +5257,7 @@ > } > YYDEBUG(465, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1201 "Zend/zend_language_scanner.l" > +#line 1425 "Zend/zend_language_scanner.l" > { > char *class_name = NULL; > > @@ -5029,7 +5273,7 @@ > zendlval->type = IS_STRING; > return T_CLASS_C; > } > -#line 5033 "Zend/zend_language_scanner.c" > +#line 5277 "Zend/zend_language_scanner.c" > yy466: > YYDEBUG(466, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5091,11 +5335,11 @@ > } > YYDEBUG(478, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 943 "Zend/zend_language_scanner.l" > +#line 1167 "Zend/zend_language_scanner.l" > { > return T_HALT_COMPILER; > } > -#line 5099 "Zend/zend_language_scanner.c" > +#line 5343 "Zend/zend_language_scanner.c" > yy479: > YYDEBUG(479, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5115,11 +5359,11 @@ > } > YYDEBUG(482, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 927 "Zend/zend_language_scanner.l" > +#line 1151 "Zend/zend_language_scanner.l" > { > return T_USE; > } > -#line 5123 "Zend/zend_language_scanner.c" > +#line 5367 "Zend/zend_language_scanner.c" > yy483: > YYDEBUG(483, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5138,11 +5382,11 @@ > } > YYDEBUG(486, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 971 "Zend/zend_language_scanner.l" > +#line 1195 "Zend/zend_language_scanner.l" > { > return T_UNSET; > } > -#line 5146 "Zend/zend_language_scanner.c" > +#line 5390 "Zend/zend_language_scanner.c" > yy487: > YYDEBUG(487, *YYCURSOR); > ++YYCURSOR; > @@ -5314,11 +5558,11 @@ > ++YYCURSOR; > YYDEBUG(504, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 871 "Zend/zend_language_scanner.l" > +#line 1095 "Zend/zend_language_scanner.l" > { > return T_INT_CAST; > } > -#line 5322 "Zend/zend_language_scanner.c" > +#line 5566 "Zend/zend_language_scanner.c" > yy505: > YYDEBUG(505, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5362,11 +5606,11 @@ > ++YYCURSOR; > YYDEBUG(513, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 875 "Zend/zend_language_scanner.l" > +#line 1099 "Zend/zend_language_scanner.l" > { > return T_DOUBLE_CAST; > } > -#line 5370 "Zend/zend_language_scanner.c" > +#line 5614 "Zend/zend_language_scanner.c" > yy514: > YYDEBUG(514, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5436,11 +5680,11 @@ > ++YYCURSOR; > YYDEBUG(527, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 879 "Zend/zend_language_scanner.l" > +#line 1103 "Zend/zend_language_scanner.l" > { > return T_STRING_CAST; > } > -#line 5444 "Zend/zend_language_scanner.c" > +#line 5688 "Zend/zend_language_scanner.c" > yy528: > YYDEBUG(528, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5473,11 +5717,11 @@ > ++YYCURSOR; > YYDEBUG(534, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 887 "Zend/zend_language_scanner.l" > +#line 1111 "Zend/zend_language_scanner.l" > { > return T_ARRAY_CAST; > } > -#line 5481 "Zend/zend_language_scanner.c" > +#line 5725 "Zend/zend_language_scanner.c" > yy535: > YYDEBUG(535, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5515,11 +5759,11 @@ > ++YYCURSOR; > YYDEBUG(542, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 891 "Zend/zend_language_scanner.l" > +#line 1115 "Zend/zend_language_scanner.l" > { > return T_OBJECT_CAST; > } > -#line 5523 "Zend/zend_language_scanner.c" > +#line 5767 "Zend/zend_language_scanner.c" > yy543: > YYDEBUG(543, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5560,11 +5804,11 @@ > ++YYCURSOR; > YYDEBUG(550, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 895 "Zend/zend_language_scanner.l" > +#line 1119 "Zend/zend_language_scanner.l" > { > return T_BOOL_CAST; > } > -#line 5568 "Zend/zend_language_scanner.c" > +#line 5812 "Zend/zend_language_scanner.c" > yy551: > YYDEBUG(551, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5608,11 +5852,11 @@ > ++YYCURSOR; > YYDEBUG(559, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 883 "Zend/zend_language_scanner.l" > +#line 1107 "Zend/zend_language_scanner.l" > { > return T_STRING_CAST; > } > -#line 5616 "Zend/zend_language_scanner.c" > +#line 5860 "Zend/zend_language_scanner.c" > yy560: > YYDEBUG(560, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5645,11 +5889,11 @@ > ++YYCURSOR; > YYDEBUG(566, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 899 "Zend/zend_language_scanner.l" > +#line 1123 "Zend/zend_language_scanner.l" > { > return T_UNSET_CAST; > } > -#line 5653 "Zend/zend_language_scanner.c" > +#line 5897 "Zend/zend_language_scanner.c" > yy567: > YYDEBUG(567, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5663,11 +5907,11 @@ > } > YYDEBUG(569, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 867 "Zend/zend_language_scanner.l" > +#line 1091 "Zend/zend_language_scanner.l" > { > return T_VAR; > } > -#line 5671 "Zend/zend_language_scanner.c" > +#line 5915 "Zend/zend_language_scanner.c" > yy570: > YYDEBUG(570, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5687,11 +5931,11 @@ > } > YYDEBUG(573, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 859 "Zend/zend_language_scanner.l" > +#line 1083 "Zend/zend_language_scanner.l" > { > return T_NEW; > } > -#line 5695 "Zend/zend_language_scanner.c" > +#line 5939 "Zend/zend_language_scanner.c" > yy574: > YYDEBUG(574, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5730,21 +5974,21 @@ > } > YYDEBUG(581, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 923 "Zend/zend_language_scanner.l" > +#line 1147 "Zend/zend_language_scanner.l" > { > return T_NAMESPACE; > } > -#line 5738 "Zend/zend_language_scanner.c" > +#line 5982 "Zend/zend_language_scanner.c" > yy582: > YYDEBUG(582, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(583, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 855 "Zend/zend_language_scanner.l" > +#line 1079 "Zend/zend_language_scanner.l" > { > return T_PAAMAYIM_NEKUDOTAYIM; > } > -#line 5748 "Zend/zend_language_scanner.c" > +#line 5992 "Zend/zend_language_scanner.c" > yy584: > YYDEBUG(584, *YYCURSOR); > ++YYCURSOR; > @@ -5766,32 +6010,32 @@ > ++YYCURSOR; > YYDEBUG(587, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1023 "Zend/zend_language_scanner.l" > +#line 1247 "Zend/zend_language_scanner.l" > { > return T_MINUS_EQUAL; > } > -#line 5774 "Zend/zend_language_scanner.c" > +#line 6018 "Zend/zend_language_scanner.c" > yy588: > YYDEBUG(588, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(589, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 991 "Zend/zend_language_scanner.l" > +#line 1215 "Zend/zend_language_scanner.l" > { > return T_DEC; > } > -#line 5784 "Zend/zend_language_scanner.c" > +#line 6028 "Zend/zend_language_scanner.c" > yy590: > YYDEBUG(590, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(591, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 825 "Zend/zend_language_scanner.l" > +#line 1049 "Zend/zend_language_scanner.l" > { > yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); > return T_OBJECT_OPERATOR; > } > -#line 5795 "Zend/zend_language_scanner.c" > +#line 6039 "Zend/zend_language_scanner.c" > yy592: > YYDEBUG(592, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5836,11 +6080,11 @@ > } > YYDEBUG(598, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 967 "Zend/zend_language_scanner.l" > +#line 1191 "Zend/zend_language_scanner.l" > { > return T_PUBLIC; > } > -#line 5844 "Zend/zend_language_scanner.c" > +#line 6088 "Zend/zend_language_scanner.c" > yy599: > YYDEBUG(599, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5895,11 +6139,11 @@ > } > YYDEBUG(607, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 963 "Zend/zend_language_scanner.l" > +#line 1187 "Zend/zend_language_scanner.l" > { > return T_PROTECTED; > } > -#line 5903 "Zend/zend_language_scanner.c" > +#line 6147 "Zend/zend_language_scanner.c" > yy608: > YYDEBUG(608, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5929,11 +6173,11 @@ > } > YYDEBUG(613, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 959 "Zend/zend_language_scanner.l" > +#line 1183 "Zend/zend_language_scanner.l" > { > return T_PRIVATE; > } > -#line 5937 "Zend/zend_language_scanner.c" > +#line 6181 "Zend/zend_language_scanner.c" > yy614: > YYDEBUG(614, *YYCURSOR); > ++YYCURSOR; > @@ -5942,11 +6186,11 @@ > } > YYDEBUG(615, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 805 "Zend/zend_language_scanner.l" > +#line 1029 "Zend/zend_language_scanner.l" > { > return T_PRINT; > } > -#line 5950 "Zend/zend_language_scanner.c" > +#line 6194 "Zend/zend_language_scanner.c" > yy616: > YYDEBUG(616, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5971,11 +6215,11 @@ > } > YYDEBUG(620, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 797 "Zend/zend_language_scanner.l" > +#line 1021 "Zend/zend_language_scanner.l" > { > return T_GOTO; > } > -#line 5979 "Zend/zend_language_scanner.c" > +#line 6223 "Zend/zend_language_scanner.c" > yy621: > YYDEBUG(621, *YYCURSOR); > yych = *++YYCURSOR; > @@ -5999,11 +6243,11 @@ > } > YYDEBUG(625, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 931 "Zend/zend_language_scanner.l" > +#line 1155 "Zend/zend_language_scanner.l" > { > return T_GLOBAL; > } > -#line 6007 "Zend/zend_language_scanner.c" > +#line 6251 "Zend/zend_language_scanner.c" > yy626: > YYDEBUG(626, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6037,11 +6281,11 @@ > } > YYDEBUG(632, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 789 "Zend/zend_language_scanner.l" > +#line 1013 "Zend/zend_language_scanner.l" > { > return T_BREAK; > } > -#line 6045 "Zend/zend_language_scanner.c" > +#line 6289 "Zend/zend_language_scanner.c" > yy633: > YYDEBUG(633, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6081,11 +6325,11 @@ > } > YYDEBUG(640, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 773 "Zend/zend_language_scanner.l" > +#line 997 "Zend/zend_language_scanner.l" > { > return T_SWITCH; > } > -#line 6089 "Zend/zend_language_scanner.c" > +#line 6333 "Zend/zend_language_scanner.c" > yy641: > YYDEBUG(641, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6109,11 +6353,11 @@ > } > YYDEBUG(645, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 947 "Zend/zend_language_scanner.l" > +#line 1171 "Zend/zend_language_scanner.l" > { > return T_STATIC; > } > -#line 6117 "Zend/zend_language_scanner.c" > +#line 6361 "Zend/zend_language_scanner.c" > yy646: > YYDEBUG(646, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6140,11 +6384,11 @@ > } > YYDEBUG(650, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 769 "Zend/zend_language_scanner.l" > +#line 993 "Zend/zend_language_scanner.l" > { > return T_AS; > } > -#line 6148 "Zend/zend_language_scanner.c" > +#line 6392 "Zend/zend_language_scanner.c" > yy651: > YYDEBUG(651, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6163,11 +6407,11 @@ > } > YYDEBUG(654, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 983 "Zend/zend_language_scanner.l" > +#line 1207 "Zend/zend_language_scanner.l" > { > return T_ARRAY; > } > -#line 6171 "Zend/zend_language_scanner.c" > +#line 6415 "Zend/zend_language_scanner.c" > yy655: > YYDEBUG(655, *YYCURSOR); > ++YYCURSOR; > @@ -6176,11 +6420,11 @@ > } > YYDEBUG(656, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1075 "Zend/zend_language_scanner.l" > +#line 1299 "Zend/zend_language_scanner.l" > { > return T_LOGICAL_AND; > } > -#line 6184 "Zend/zend_language_scanner.c" > +#line 6428 "Zend/zend_language_scanner.c" > yy657: > YYDEBUG(657, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6214,11 +6458,11 @@ > } > YYDEBUG(663, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 951 "Zend/zend_language_scanner.l" > +#line 1175 "Zend/zend_language_scanner.l" > { > return T_ABSTRACT; > } > -#line 6222 "Zend/zend_language_scanner.c" > +#line 6466 "Zend/zend_language_scanner.c" > yy664: > YYDEBUG(664, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6242,11 +6486,11 @@ > } > YYDEBUG(668, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 729 "Zend/zend_language_scanner.l" > +#line 953 "Zend/zend_language_scanner.l" > { > return T_WHILE; > } > -#line 6250 "Zend/zend_language_scanner.c" > +#line 6494 "Zend/zend_language_scanner.c" > yy669: > YYDEBUG(669, *YYCURSOR); > ++YYCURSOR; > @@ -6255,11 +6499,11 @@ > } > YYDEBUG(670, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 713 "Zend/zend_language_scanner.l" > +#line 937 "Zend/zend_language_scanner.l" > { > return T_IF; > } > -#line 6263 "Zend/zend_language_scanner.c" > +#line 6507 "Zend/zend_language_scanner.c" > yy671: > YYDEBUG(671, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6311,11 +6555,11 @@ > } > YYDEBUG(677, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 935 "Zend/zend_language_scanner.l" > +#line 1159 "Zend/zend_language_scanner.l" > { > return T_ISSET; > } > -#line 6319 "Zend/zend_language_scanner.c" > +#line 6563 "Zend/zend_language_scanner.c" > yy678: > YYDEBUG(678, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6369,11 +6613,11 @@ > yy685: > YYDEBUG(685, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 907 "Zend/zend_language_scanner.l" > +#line 1131 "Zend/zend_language_scanner.l" > { > return T_INCLUDE; > } > -#line 6377 "Zend/zend_language_scanner.c" > +#line 6621 "Zend/zend_language_scanner.c" > yy686: > YYDEBUG(686, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6402,11 +6646,11 @@ > } > YYDEBUG(691, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 911 "Zend/zend_language_scanner.l" > +#line 1135 "Zend/zend_language_scanner.l" > { > return T_INCLUDE_ONCE; > } > -#line 6410 "Zend/zend_language_scanner.c" > +#line 6654 "Zend/zend_language_scanner.c" > yy692: > YYDEBUG(692, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6440,11 +6684,11 @@ > } > YYDEBUG(698, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 813 "Zend/zend_language_scanner.l" > +#line 1037 "Zend/zend_language_scanner.l" > { > return T_INTERFACE; > } > -#line 6448 "Zend/zend_language_scanner.c" > +#line 6692 "Zend/zend_language_scanner.c" > yy699: > YYDEBUG(699, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6483,11 +6727,11 @@ > } > YYDEBUG(706, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 765 "Zend/zend_language_scanner.l" > +#line 989 "Zend/zend_language_scanner.l" > { > return T_INSTANCEOF; > } > -#line 6491 "Zend/zend_language_scanner.c" > +#line 6735 "Zend/zend_language_scanner.c" > yy707: > YYDEBUG(707, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6531,11 +6775,11 @@ > } > YYDEBUG(715, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 821 "Zend/zend_language_scanner.l" > +#line 1045 "Zend/zend_language_scanner.l" > { > return T_IMPLEMENTS; > } > -#line 6539 "Zend/zend_language_scanner.c" > +#line 6783 "Zend/zend_language_scanner.c" > yy716: > YYDEBUG(716, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6555,11 +6799,11 @@ > } > YYDEBUG(719, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 701 "Zend/zend_language_scanner.l" > +#line 925 "Zend/zend_language_scanner.l" > { > return T_TRY; > } > -#line 6563 "Zend/zend_language_scanner.c" > +#line 6807 "Zend/zend_language_scanner.c" > yy720: > YYDEBUG(720, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6578,11 +6822,11 @@ > } > YYDEBUG(723, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 709 "Zend/zend_language_scanner.l" > +#line 933 "Zend/zend_language_scanner.l" > { > return T_THROW; > } > -#line 6586 "Zend/zend_language_scanner.c" > +#line 6830 "Zend/zend_language_scanner.c" > yy724: > YYDEBUG(724, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6643,11 +6887,11 @@ > yy731: > YYDEBUG(731, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 915 "Zend/zend_language_scanner.l" > +#line 1139 "Zend/zend_language_scanner.l" > { > return T_REQUIRE; > } > -#line 6651 "Zend/zend_language_scanner.c" > +#line 6895 "Zend/zend_language_scanner.c" > yy732: > YYDEBUG(732, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6676,11 +6920,11 @@ > } > YYDEBUG(737, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 919 "Zend/zend_language_scanner.l" > +#line 1143 "Zend/zend_language_scanner.l" > { > return T_REQUIRE_ONCE; > } > -#line 6684 "Zend/zend_language_scanner.c" > +#line 6928 "Zend/zend_language_scanner.c" > yy738: > YYDEBUG(738, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6699,11 +6943,11 @@ > } > YYDEBUG(741, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 697 "Zend/zend_language_scanner.l" > +#line 921 "Zend/zend_language_scanner.l" > { > return T_RETURN; > } > -#line 6707 "Zend/zend_language_scanner.c" > +#line 6951 "Zend/zend_language_scanner.c" > yy742: > YYDEBUG(742, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6784,11 +7028,11 @@ > } > YYDEBUG(752, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 793 "Zend/zend_language_scanner.l" > +#line 1017 "Zend/zend_language_scanner.l" > { > return T_CONTINUE; > } > -#line 6792 "Zend/zend_language_scanner.c" > +#line 7036 "Zend/zend_language_scanner.c" > yy753: > YYDEBUG(753, *YYCURSOR); > ++YYCURSOR; > @@ -6797,11 +7041,11 @@ > } > YYDEBUG(754, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 693 "Zend/zend_language_scanner.l" > +#line 917 "Zend/zend_language_scanner.l" > { > return T_CONST; > } > -#line 6805 "Zend/zend_language_scanner.c" > +#line 7049 "Zend/zend_language_scanner.c" > yy755: > YYDEBUG(755, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6826,11 +7070,11 @@ > } > YYDEBUG(759, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 863 "Zend/zend_language_scanner.l" > +#line 1087 "Zend/zend_language_scanner.l" > { > return T_CLONE; > } > -#line 6834 "Zend/zend_language_scanner.c" > +#line 7078 "Zend/zend_language_scanner.c" > yy760: > YYDEBUG(760, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6844,11 +7088,11 @@ > } > YYDEBUG(762, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 809 "Zend/zend_language_scanner.l" > +#line 1033 "Zend/zend_language_scanner.l" > { > return T_CLASS; > } > -#line 6852 "Zend/zend_language_scanner.c" > +#line 7096 "Zend/zend_language_scanner.c" > yy763: > YYDEBUG(763, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6868,11 +7112,11 @@ > } > YYDEBUG(766, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 781 "Zend/zend_language_scanner.l" > +#line 1005 "Zend/zend_language_scanner.l" > { > return T_CASE; > } > -#line 6876 "Zend/zend_language_scanner.c" > +#line 7120 "Zend/zend_language_scanner.c" > yy767: > YYDEBUG(767, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6886,11 +7130,11 @@ > } > YYDEBUG(769, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 705 "Zend/zend_language_scanner.l" > +#line 929 "Zend/zend_language_scanner.l" > { > return T_CATCH; > } > -#line 6894 "Zend/zend_language_scanner.c" > +#line 7138 "Zend/zend_language_scanner.c" > yy770: > YYDEBUG(770, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6941,11 +7185,11 @@ > } > YYDEBUG(779, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 689 "Zend/zend_language_scanner.l" > +#line 913 "Zend/zend_language_scanner.l" > { > return T_FUNCTION; > } > -#line 6949 "Zend/zend_language_scanner.c" > +#line 7193 "Zend/zend_language_scanner.c" > yy780: > YYDEBUG(780, *YYCURSOR); > ++YYCURSOR; > @@ -6969,11 +7213,11 @@ > yy781: > YYDEBUG(781, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 741 "Zend/zend_language_scanner.l" > +#line 965 "Zend/zend_language_scanner.l" > { > return T_FOR; > } > -#line 6977 "Zend/zend_language_scanner.c" > +#line 7221 "Zend/zend_language_scanner.c" > yy782: > YYDEBUG(782, *YYCURSOR); > yych = *++YYCURSOR; > @@ -6997,11 +7241,11 @@ > } > YYDEBUG(786, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 749 "Zend/zend_language_scanner.l" > +#line 973 "Zend/zend_language_scanner.l" > { > return T_FOREACH; > } > -#line 7005 "Zend/zend_language_scanner.c" > +#line 7249 "Zend/zend_language_scanner.c" > yy787: > YYDEBUG(787, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7020,11 +7264,11 @@ > } > YYDEBUG(790, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 955 "Zend/zend_language_scanner.l" > +#line 1179 "Zend/zend_language_scanner.l" > { > return T_FINAL; > } > -#line 7028 "Zend/zend_language_scanner.c" > +#line 7272 "Zend/zend_language_scanner.c" > yy791: > YYDEBUG(791, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7055,11 +7299,11 @@ > } > YYDEBUG(794, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 737 "Zend/zend_language_scanner.l" > +#line 961 "Zend/zend_language_scanner.l" > { > return T_DO; > } > -#line 7063 "Zend/zend_language_scanner.c" > +#line 7307 "Zend/zend_language_scanner.c" > yy795: > YYDEBUG(795, *YYCURSOR); > ++YYCURSOR; > @@ -7068,11 +7312,11 @@ > } > YYDEBUG(796, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 685 "Zend/zend_language_scanner.l" > +#line 909 "Zend/zend_language_scanner.l" > { > return T_EXIT; > } > -#line 7076 "Zend/zend_language_scanner.c" > +#line 7320 "Zend/zend_language_scanner.c" > yy797: > YYDEBUG(797, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7107,11 +7351,11 @@ > } > YYDEBUG(803, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 785 "Zend/zend_language_scanner.l" > +#line 1009 "Zend/zend_language_scanner.l" > { > return T_DEFAULT; > } > -#line 7115 "Zend/zend_language_scanner.c" > +#line 7359 "Zend/zend_language_scanner.c" > yy804: > YYDEBUG(804, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7135,11 +7379,11 @@ > } > YYDEBUG(808, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 757 "Zend/zend_language_scanner.l" > +#line 981 "Zend/zend_language_scanner.l" > { > return T_DECLARE; > } > -#line 7143 "Zend/zend_language_scanner.c" > +#line 7387 "Zend/zend_language_scanner.c" > yy809: > YYDEBUG(809, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7219,11 +7463,11 @@ > } > YYDEBUG(821, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 817 "Zend/zend_language_scanner.l" > +#line 1041 "Zend/zend_language_scanner.l" > { > return T_EXTENDS; > } > -#line 7227 "Zend/zend_language_scanner.c" > +#line 7471 "Zend/zend_language_scanner.c" > yy822: > YYDEBUG(822, *YYCURSOR); > ++YYCURSOR; > @@ -7232,11 +7476,11 @@ > } > YYDEBUG(823, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 681 "Zend/zend_language_scanner.l" > +#line 905 "Zend/zend_language_scanner.l" > { > return T_EXIT; > } > -#line 7240 "Zend/zend_language_scanner.c" > +#line 7484 "Zend/zend_language_scanner.c" > yy824: > YYDEBUG(824, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7250,11 +7494,11 @@ > } > YYDEBUG(826, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 903 "Zend/zend_language_scanner.l" > +#line 1127 "Zend/zend_language_scanner.l" > { > return T_EVAL; > } > -#line 7258 "Zend/zend_language_scanner.c" > +#line 7502 "Zend/zend_language_scanner.c" > yy827: > YYDEBUG(827, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7324,11 +7568,11 @@ > } > YYDEBUG(837, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 733 "Zend/zend_language_scanner.l" > +#line 957 "Zend/zend_language_scanner.l" > { > return T_ENDWHILE; > } > -#line 7332 "Zend/zend_language_scanner.c" > +#line 7576 "Zend/zend_language_scanner.c" > yy838: > YYDEBUG(838, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7357,11 +7601,11 @@ > } > YYDEBUG(843, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 777 "Zend/zend_language_scanner.l" > +#line 1001 "Zend/zend_language_scanner.l" > { > return T_ENDSWITCH; > } > -#line 7365 "Zend/zend_language_scanner.c" > +#line 7609 "Zend/zend_language_scanner.c" > yy844: > YYDEBUG(844, *YYCURSOR); > ++YYCURSOR; > @@ -7370,11 +7614,11 @@ > } > YYDEBUG(845, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 721 "Zend/zend_language_scanner.l" > +#line 945 "Zend/zend_language_scanner.l" > { > return T_ENDIF; > } > -#line 7378 "Zend/zend_language_scanner.c" > +#line 7622 "Zend/zend_language_scanner.c" > yy846: > YYDEBUG(846, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7403,11 +7647,11 @@ > yy848: > YYDEBUG(848, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 745 "Zend/zend_language_scanner.l" > +#line 969 "Zend/zend_language_scanner.l" > { > return T_ENDFOR; > } > -#line 7411 "Zend/zend_language_scanner.c" > +#line 7655 "Zend/zend_language_scanner.c" > yy849: > YYDEBUG(849, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7431,11 +7675,11 @@ > } > YYDEBUG(853, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 753 "Zend/zend_language_scanner.l" > +#line 977 "Zend/zend_language_scanner.l" > { > return T_ENDFOREACH; > } > -#line 7439 "Zend/zend_language_scanner.c" > +#line 7683 "Zend/zend_language_scanner.c" > yy854: > YYDEBUG(854, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7469,11 +7713,11 @@ > } > YYDEBUG(860, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 761 "Zend/zend_language_scanner.l" > +#line 985 "Zend/zend_language_scanner.l" > { > return T_ENDDECLARE; > } > -#line 7477 "Zend/zend_language_scanner.c" > +#line 7721 "Zend/zend_language_scanner.c" > yy861: > YYDEBUG(861, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7492,11 +7736,11 @@ > } > YYDEBUG(864, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 939 "Zend/zend_language_scanner.l" > +#line 1163 "Zend/zend_language_scanner.l" > { > return T_EMPTY; > } > -#line 7500 "Zend/zend_language_scanner.c" > +#line 7744 "Zend/zend_language_scanner.c" > yy865: > YYDEBUG(865, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7525,11 +7769,11 @@ > yy867: > YYDEBUG(867, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 725 "Zend/zend_language_scanner.l" > +#line 949 "Zend/zend_language_scanner.l" > { > return T_ELSE; > } > -#line 7533 "Zend/zend_language_scanner.c" > +#line 7777 "Zend/zend_language_scanner.c" > yy868: > YYDEBUG(868, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7543,11 +7787,11 @@ > } > YYDEBUG(870, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 717 "Zend/zend_language_scanner.l" > +#line 941 "Zend/zend_language_scanner.l" > { > return T_ELSEIF; > } > -#line 7551 "Zend/zend_language_scanner.c" > +#line 7795 "Zend/zend_language_scanner.c" > yy871: > YYDEBUG(871, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7561,11 +7805,11 @@ > } > YYDEBUG(873, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 801 "Zend/zend_language_scanner.l" > +#line 1025 "Zend/zend_language_scanner.l" > { > return T_ECHO; > } > -#line 7569 "Zend/zend_language_scanner.c" > +#line 7813 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_LOOKING_FOR_PROPERTY: > @@ -7638,7 +7882,7 @@ > yy877: > YYDEBUG(877, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 830 "Zend/zend_language_scanner.l" > +#line 1054 "Zend/zend_language_scanner.l" > { > zendlval->value.str.val = yytext; /* no copying - intentional */ > zendlval->value.str.len = yyleng; > @@ -7646,7 +7890,7 @@ > HANDLE_NEWLINES(yytext, yyleng); > return T_WHITESPACE; > } > -#line 7650 "Zend/zend_language_scanner.c" > +#line 7894 "Zend/zend_language_scanner.c" > yy878: > YYDEBUG(878, *YYCURSOR); > ++YYCURSOR; > @@ -7654,13 +7898,13 @@ > yy879: > YYDEBUG(879, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 849 "Zend/zend_language_scanner.l" > +#line 1073 "Zend/zend_language_scanner.l" > { > yyless(0); > yy_pop_state(TSRMLS_C); > goto restart; > } > -#line 7664 "Zend/zend_language_scanner.c" > +#line 7908 "Zend/zend_language_scanner.c" > yy880: > YYDEBUG(880, *YYCURSOR); > ++YYCURSOR; > @@ -7669,14 +7913,14 @@ > yy881: > YYDEBUG(881, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 842 "Zend/zend_language_scanner.l" > +#line 1066 "Zend/zend_language_scanner.l" > { > yy_pop_state(TSRMLS_C); > zend_copy_value(zendlval, yytext, yyleng); > zendlval->type = IS_STRING; > return T_STRING; > } > -#line 7680 "Zend/zend_language_scanner.c" > +#line 7924 "Zend/zend_language_scanner.c" > yy882: > YYDEBUG(882, *YYCURSOR); > yych = *++YYCURSOR; > @@ -7697,11 +7941,11 @@ > ++YYCURSOR; > YYDEBUG(886, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 838 "Zend/zend_language_scanner.l" > +#line 1062 "Zend/zend_language_scanner.l" > { > return T_OBJECT_OPERATOR; > } > -#line 7705 "Zend/zend_language_scanner.c" > +#line 7949 "Zend/zend_language_scanner.c" > yy887: > YYDEBUG(887, *YYCURSOR); > ++YYCURSOR; > @@ -7771,7 +8015,7 @@ > yy892: > YYDEBUG(892, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1117 "Zend/zend_language_scanner.l" > +#line 1341 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, yytext, yyleng); > zendlval->type = IS_STRING; > @@ -7779,20 +8023,20 @@ > yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); > return T_STRING_VARNAME; > } > -#line 7783 "Zend/zend_language_scanner.c" > +#line 8027 "Zend/zend_language_scanner.c" > yy893: > YYDEBUG(893, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(894, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1126 "Zend/zend_language_scanner.l" > +#line 1350 "Zend/zend_language_scanner.l" > { > yyless(0); > yy_pop_state(TSRMLS_C); > yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); > goto restart; > } > -#line 7796 "Zend/zend_language_scanner.c" > +#line 8040 "Zend/zend_language_scanner.c" > yy895: > YYDEBUG(895, *YYCURSOR); > ++YYCURSOR; > @@ -8254,7 +8498,7 @@ > ++YYCURSOR; > YYDEBUG(933, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1864 "Zend/zend_language_scanner.l" > +#line 2108 "Zend/zend_language_scanner.l" > { > char *end = yytext + yyleng - 1; > > @@ -8297,7 +8541,7 @@ > yymore(); > } > } > -#line 8301 "Zend/zend_language_scanner.c" > +#line 8545 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_ONE_LINE_COMMENT: > @@ -8354,11 +8598,11 @@ > yy937: > YYDEBUG(937, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1491 "Zend/zend_language_scanner.l" > +#line 1728 "Zend/zend_language_scanner.l" > { > yymore(); > } > -#line 8362 "Zend/zend_language_scanner.c" > +#line 8606 "Zend/zend_language_scanner.c" > yy938: > YYDEBUG(938, *YYCURSOR); > yych = *++YYCURSOR; > @@ -8381,7 +8625,7 @@ > yy942: > YYDEBUG(942, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1495 "Zend/zend_language_scanner.l" > +#line 1732 "Zend/zend_language_scanner.l" > { > switch (yytext[yyleng-1]) { > case '?': case '%': case '>': > @@ -8399,7 +8643,7 @@ > return T_COMMENT; > } > } > -#line 8403 "Zend/zend_language_scanner.c" > +#line 8647 "Zend/zend_language_scanner.c" > yy943: > YYDEBUG(943, *YYCURSOR); > yych = *++YYCURSOR; > @@ -8412,7 +8656,7 @@ > ++YYCURSOR; > YYDEBUG(946, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1513 "Zend/zend_language_scanner.l" > +#line 1750 "Zend/zend_language_scanner.l" > { > zendlval->value.str.val = yytext; /* no copying - intentional */ > zendlval->value.str.len = yyleng; > @@ -8421,7 +8665,7 @@ > CG(zend_lineno)++; > return T_COMMENT; > } > -#line 8425 "Zend/zend_language_scanner.c" > +#line 8669 "Zend/zend_language_scanner.c" > yy947: > YYDEBUG(947, *YYCURSOR); > yych = *++YYCURSOR; > @@ -8431,7 +8675,7 @@ > ++YYCURSOR; > YYDEBUG(949, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1522 "Zend/zend_language_scanner.l" > +#line 1759 "Zend/zend_language_scanner.l" > { > if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ > zendlval->value.str.val = yytext; /* no copying - intentional */ > @@ -8444,7 +8688,7 @@ > yymore(); > } > } > -#line 8448 "Zend/zend_language_scanner.c" > +#line 8692 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_START_HEREDOC: > @@ -8501,13 +8745,13 @@ > yy953: > YYDEBUG(953, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1678 "Zend/zend_language_scanner.l" > +#line 1922 "Zend/zend_language_scanner.l" > { > yyless(0); > BEGIN(ST_HEREDOC); > goto restart; > } > -#line 8511 "Zend/zend_language_scanner.c" > +#line 8755 "Zend/zend_language_scanner.c" > yy954: > YYDEBUG(954, *YYCURSOR); > yyaccept = 0; > @@ -8552,7 +8796,7 @@ > ++YYCURSOR; > YYDEBUG(960, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1684 "Zend/zend_language_scanner.l" > +#line 1928 "Zend/zend_language_scanner.l" > { > int label_len = yyleng - 1; > > @@ -8574,7 +8818,7 @@ > yymore(); > } > } > -#line 8578 "Zend/zend_language_scanner.c" > +#line 8822 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_START_NOWDOC: > @@ -8631,13 +8875,13 @@ > yy964: > YYDEBUG(964, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1838 "Zend/zend_language_scanner.l" > +#line 2082 "Zend/zend_language_scanner.l" > { > yyless(0); > BEGIN(ST_NOWDOC); > goto restart; > } > -#line 8641 "Zend/zend_language_scanner.c" > +#line 8885 "Zend/zend_language_scanner.c" > yy965: > YYDEBUG(965, *YYCURSOR); > yyaccept = 0; > @@ -8682,7 +8926,7 @@ > ++YYCURSOR; > YYDEBUG(971, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1844 "Zend/zend_language_scanner.l" > +#line 2088 "Zend/zend_language_scanner.l" > { > int label_len = yyleng - 1; > > @@ -8702,7 +8946,7 @@ > yymore(); > } > } > -#line 8706 "Zend/zend_language_scanner.c" > +#line 8950 "Zend/zend_language_scanner.c" > } > /* *********************************** */ > yyc_ST_VAR_OFFSET: > @@ -8803,7 +9047,7 @@ > yy975: > YYDEBUG(975, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1176 "Zend/zend_language_scanner.l" > +#line 1400 "Zend/zend_language_scanner.l" > { /* Offset could be treated as a long */ > if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == > MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { > zendlval->value.lval = strtol(yytext, NULL, 10); > @@ -8815,7 +9059,7 @@ > } > return T_NUM_STRING; > } > -#line 8819 "Zend/zend_language_scanner.c" > +#line 9063 "Zend/zend_language_scanner.c" > yy976: > YYDEBUG(976, *YYCURSOR); > yych = *++YYCURSOR; > @@ -8835,23 +9079,23 @@ > yy978: > YYDEBUG(978, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1466 "Zend/zend_language_scanner.l" > +#line 1703 "Zend/zend_language_scanner.l" > { > /* Only '[' can be valid, but returning other tokens will allow a more > explicit parse error */ > return yytext[0]; > } > -#line 8844 "Zend/zend_language_scanner.c" > +#line 9088 "Zend/zend_language_scanner.c" > yy979: > YYDEBUG(979, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(980, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1461 "Zend/zend_language_scanner.l" > +#line 1698 "Zend/zend_language_scanner.l" > { > yy_pop_state(TSRMLS_C); > return ']'; > } > -#line 8855 "Zend/zend_language_scanner.c" > +#line 9099 "Zend/zend_language_scanner.c" > yy981: > YYDEBUG(981, *YYCURSOR); > yych = *++YYCURSOR; > @@ -8861,7 +9105,7 @@ > ++YYCURSOR; > YYDEBUG(983, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1471 "Zend/zend_language_scanner.l" > +#line 1708 "Zend/zend_language_scanner.l" > { > /* Invalid rule to return a more explicit parse error with proper line number */ > yyless(0); > @@ -8869,7 +9113,7 @@ > ZVAL_EMPTY_STRING(zendlval); /* Empty since it won't be used */ > return T_ENCAPSED_AND_WHITESPACE; > } > -#line 8873 "Zend/zend_language_scanner.c" > +#line 9117 "Zend/zend_language_scanner.c" > yy984: > YYDEBUG(984, *YYCURSOR); > ++YYCURSOR; > @@ -8878,24 +9122,24 @@ > yy985: > YYDEBUG(985, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1479 "Zend/zend_language_scanner.l" > +#line 1716 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, yytext, yyleng); > zendlval->type = IS_STRING; > return T_STRING; > } > -#line 8888 "Zend/zend_language_scanner.c" > +#line 9132 "Zend/zend_language_scanner.c" > yy986: > YYDEBUG(986, *YYCURSOR); > ++YYCURSOR; > YYDEBUG(987, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1930 "Zend/zend_language_scanner.l" > +#line 2174 "Zend/zend_language_scanner.l" > { > zend_error(E_COMPILE_WARNING,"Unexpected character in input: > '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); > goto restart; > } > -#line 8899 "Zend/zend_language_scanner.c" > +#line 9143 "Zend/zend_language_scanner.c" > yy988: > YYDEBUG(988, *YYCURSOR); > ++YYCURSOR; > @@ -8931,13 +9175,13 @@ > yy992: > YYDEBUG(992, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1455 "Zend/zend_language_scanner.l" > +#line 1692 "Zend/zend_language_scanner.l" > { > zend_copy_value(zendlval, (yytext+1), (yyleng-1)); > zendlval->type = IS_STRING; > return T_VARIABLE; > } > -#line 8941 "Zend/zend_language_scanner.c" > +#line 9185 "Zend/zend_language_scanner.c" > yy993: > YYDEBUG(993, *YYCURSOR); > ++YYCURSOR; > @@ -8969,14 +9213,14 @@ > yy999: > YYDEBUG(999, *YYCURSOR); > yyleng = YYCURSOR - SCNG(yy_text); > -#line 1188 "Zend/zend_language_scanner.l" > +#line 1412 "Zend/zend_language_scanner.l" > { /* Offset must be treated as a string */ > zendlval->value.str.val = (char *)estrndup(yytext, yyleng); > zendlval->value.str.len = yyleng; > zendlval->type = IS_STRING; > return T_NUM_STRING; > } > -#line 8980 "Zend/zend_language_scanner.c" > +#line 9224 "Zend/zend_language_scanner.c" > yy1000: > YYDEBUG(1000, *YYCURSOR); > ++YYCURSOR; > @@ -8989,6 +9233,6 @@ > goto yy999; > } > } > -#line 1935 "Zend/zend_language_scanner.l" > +#line 2179 "Zend/zend_language_scanner.l" > > } > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.h?r1=1.19.2.1.2.1.2.2&r2=1.19.2.1.2.1.2.3&diff_format=u > Index: ZendEngine2/zend_language_scanner.h > diff -u ZendEngine2/zend_language_scanner.h:1.19.2.1.2.1.2.2 > ZendEngine2/zend_language_scanner.h:1.19.2.1.2.1.2.3 > --- ZendEngine2/zend_language_scanner.h:1.19.2.1.2.1.2.2 Sun Mar 16 21:05:33 2008 > +++ ZendEngine2/zend_language_scanner.h Sun Jun 29 08:21:35 2008 > @@ -17,7 +17,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_language_scanner.h,v 1.19.2.1.2.1.2.2 2008/03/16 21:05:33 helly Exp $ */ > +/* $Id: zend_language_scanner.h,v 1.19.2.1.2.1.2.3 2008/06/29 08:21:35 hirokawa Exp $ */ > > #ifndef ZEND_SCANNER_H > #define ZEND_SCANNER_H > @@ -35,6 +35,22 @@ > zend_file_handle *in; > uint lineno; > char *filename; > + > +#ifdef ZEND_MULTIBYTE > + /* original (unfiltered) script */ > + char *script_org; > + int script_org_size; > + > + /* filtered script */ > + char *script_filtered; > + int script_filtered_size; > + > + /* input/ouput filters */ > + zend_encoding_filter input_filter; > + zend_encoding_filter output_filter; > + zend_encoding *script_encoding; > + zend_encoding *internal_encoding; > +#endif /* ZEND_MULTIBYTE */ > } zend_lex_state; > > > —ªÔ > ʃyŒX&�,êê§http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.l?r1=1.131.2.11.2.13.2.17&r2=1.131.2.11.2.13.2.18&diff_format=u > Index: ZendEngine2/zend_language_scanner.l > diff -u ZendEngine2/zend_language_scanner.l:1.131.2.11.2.13.2.17 > ZendEngine2/zend_language_scanner.l:1.131.2.11.2.13.2.18 > --- ZendEngine2/zend_language_scanner.l:1.131.2.11.2.13.2.17 Sat May 10 09:17:29 2008 > +++ ZendEngine2/zend_language_scanner.l Sun Jun 29 08:21:35 2008 > @@ -21,7 +21,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_language_scanner.l,v 1.131.2.11.2.13.2.17 2008/05/10 09:17:29 mattwil Exp $ */ > +/* $Id: zend_language_scanner.l,v 1.131.2.11.2.13.2.18 2008/06/29 08:21:35 hirokawa Exp $ */ > > #if 0 > # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) > @@ -180,6 +180,17 @@ > lex_state->yy_state = YYSTATE; > lex_state->filename = zend_get_compiled_filename(TSRMLS_C); > lex_state->lineno = CG(zend_lineno); > + > +#ifdef ZEND_MULTIBYTE > + lex_state->script_org = SCNG(script_org); > + lex_state->script_org_size = SCNG(script_org_size); > + lex_state->script_filtered = SCNG(script_filtered); > + lex_state->script_filtered_size = SCNG(script_filtered_size); > + lex_state->input_filter = SCNG(input_filter); > + lex_state->output_filter = SCNG(output_filter); > + lex_state->script_encoding = SCNG(script_encoding); > + lex_state->internal_encoding = SCNG(internal_encoding); > +#endif /* ZEND_MULTIBYTE */ > } > > ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) > @@ -198,6 +209,24 @@ > YYSETCONDITION(lex_state->yy_state); > CG(zend_lineno) = lex_state->lineno; > zend_restore_compiled_filename(lex_state->filename TSRMLS_CC); > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > + SCNG(script_org) = lex_state->script_org; > + SCNG(script_org_size) = lex_state->script_org_size; > + SCNG(script_filtered) = lex_state->script_filtered; > + SCNG(script_filtered_size) = lex_state->script_filtered_size; > + SCNG(input_filter) = lex_state->input_filter; > + SCNG(output_filter) = lex_state->output_filter; > + SCNG(script_encoding) = lex_state->script_encoding; > + SCNG(internal_encoding) = lex_state->internal_encoding; > +#endif /* ZEND_MULTIBYTE */ > } > > ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) > @@ -232,8 +261,27 @@ > SCNG(yy_in) = file_handle; > > if (size != -1) { > - /* TODO: For MULTIBYTE we need to do some clever re-encoding */ > +#ifdef ZEND_MULTIBYTE > + if (zend_multibyte_read_script(buf, size TSRMLS_CC) != 0) { > + return FAILURE; > + } > + > + SCNG(yy_in) = NULL; > + > + zend_multibyte_set_filter(NULL TSRMLS_CC); > + > + if (!SCNG(input_filter)) { > + SCNG(script_filtered) = > (char*)emalloc(SCNG(script_org_size)+1); > + memcpy(SCNG(script_filtered), SCNG(script_org), > SCNG(script_org_size)+1); > + SCNG(script_filtered_size) = SCNG(script_org_size); > + } else { > + SCNG(input_filter)(&SCNG(script_filtered), > &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); > + } > + > + yy_scan_buffer(SCNG(script_filtered), > SCNG(script_filtered_size) TSRMLS_CC); > +#else /* !ZEND_MULTIBYTE */ > yy_scan_buffer(buf, size TSRMLS_CC); > +#endif /* ZEND_MULTIBYTE */ > } else { > zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); > } > @@ -370,8 +418,24 @@ > > SCNG(yy_in)=NULL; > > - /* TODO: For MULTIBYTE we need to do some clever re-encoding */ > +#ifdef ZEND_MULTIBYTE > + SCNG(script_org) = estrdup(str->value.str.val); > + SCNG(script_org_size) = str->value.str.len; > + > + zend_multibyte_set_filter(CG(internal_encoding) TSRMLS_CC); > + > + if (!SCNG(input_filter)) { > + SCNG(script_filtered) = > (char*)emalloc(SCNG(script_org_size)+1); > + memcpy(SCNG(script_filtered), SCNG(script_org), SCNG(script_org_size)+1); > + SCNG(script_filtered_size) = SCNG(script_org_size); > + } else { > + SCNG(input_filter)(&SCNG(script_filtered), > &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC); > + } > + > + yy_scan_buffer(SCNG(script_filtered), SCNG(script_filtered_size) TSRMLS_CC); > +#else /* !ZEND_MULTIBYTE */ > yy_scan_buffer(str->value.str.val, str->value.str.len TSRMLS_CC); > +#endif /* ZEND_MULTIBYTE */ > > zend_set_compiled_filename(filename TSRMLS_CC); > CG(zend_lineno) = 1; > @@ -422,6 +486,17 @@ > BEGIN(ST_IN_SCRIPTING); > compiler_result = zendparse(TSRMLS_C); > > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > +#endif /* ZEND_MULTIBYTE */ > + > if (compiler_result==1) { > CG(active_op_array) = original_active_op_array; > CG(unclean_shutdown)=1; > @@ -457,6 +532,16 @@ > return FAILURE; > } > zend_highlight(syntax_highlighter_ini TSRMLS_CC); > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > +#endif /* ZEND_MULTIBYTE */ > zend_destroy_file_handle(&file_handle TSRMLS_CC); > zend_restore_lexical_state(&original_lex_state TSRMLS_CC); > return SUCCESS; > @@ -475,15 +560,147 @@ > } > BEGIN(INITIAL); > zend_highlight(syntax_highlighter_ini TSRMLS_CC); > +#ifdef ZEND_MULTIBYTE > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + SCNG(script_org) = NULL; > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + SCNG(script_filtered) = NULL; > + } > +#endif /* ZEND_MULTIBYTE */ > zend_restore_lexical_state(&original_lex_state TSRMLS_CC); > zval_dtor(str); > return SUCCESS; > } > END_EXTERN_C() > > +#ifdef ZEND_MULTIBYTE > +BEGIN_EXTERN_C() > +ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter > old_input_filter, zend_encoding *old_encoding TSRMLS_DC) > +{ > + int offset, original_offset, length, free_flag, new_len; > + char *p; > + zend_encoding *new_encoding; > + unsigned char *yy_c_buf_p; > + > + /* calculate current position */ > + offset = original_offset = YYCURSOR - SCNG(yy_start); > + if (old_input_filter && original_offset > 0) { > + new_encoding = SCNG(script_encoding); > + SCNG(script_encoding) = old_encoding; > + do { > + (old_input_filter)(&p, &length, > SCNG(script_org), offset TSRMLS_CC); > + if (!p) { > + SCNG(script_encoding) = new_encoding; > + return; > + } > + efree(p); > + if (length > original_offset) { > + offset--; > + } else if (length < original_offset) { > + offset++; > + } > + } while (original_offset != length); > + SCNG(script_encoding) = new_encoding; > + } > + > + /* convert and set */ > + if (!SCNG(input_filter)) { > + length = SCNG(script_org_size)-offset-1; > + p = SCNG(script_org)+offset+1; > + free_flag = 0; > + } else { > + SCNG(input_filter)(&p, &length, > SCNG(script_org)+offset+1, SCNG(script_org_size)-offset-1 TSRMLS_CC); > + free_flag = 1; > + } > + > + new_len = original_offset+length+1; > + > + if (new_len > YYLIMIT-SCNG(yy_start)) { > + YYLIMIT = SCNG(yy_start) + new_len; > + SCNG(yy_start) = erealloc(SCNG(yy_start), new_len); > + SCNG(script_filtered) = SCNG(yy_start); > + SCNG(script_filtered_size) = new_len; > + } > + > + yy_c_buf_p = SCNG(yy_start) + original_offset; > + strncpy(yy_c_buf_p+1, p, length); > + > + if (free_flag) { > + efree(p); > + } > +} > + > + > +ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len > TSRMLS_DC) > +{ > + int c = '*', n; > + > + if (CG(interactive) == 0) { > + if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) { > + return FAILURE; > + } > + n = len; > + return n; > + } > + > + /* interactive */ > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + } > + if (SCNG(script_filtered)) { > + efree(SCNG(script_filtered)); > + } > + SCNG(script_org) = NULL; > + SCNG(script_org_size) = 0; > + > + /* TODO: support widechars */ > + if (zend_stream_fixup(file_handle, &buf, &len TSRMLS_CC) == FAILURE) { > + return FAILURE; > + } > + n = len; > + > + SCNG(script_org_size) = n; > + SCNG(script_org) = (char*)emalloc(SCNG(script_org_size) + 1); > + memcpy(SCNG(script_org), buf, n); > + > + return n; > +} > + > + > +ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC) > +{ > + if (SCNG(script_org)) { > + efree(SCNG(script_org)); > + } > + if (n<0) { > + return -1; > + } > + SCNG(script_org_size) = n; > + SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size)); > + memcpy(SCNG(script_org) + SCNG(script_org_size) - n, buf, n); > + > + SCNG(script_org) = (char*)erealloc(SCNG(script_org), SCNG(script_org_size) + 1); > + *(SCNG(script_org)+SCNG(script_org_size)) = '\0'; > + > + return 0; > +} > + > + > +# define zend_copy_value(zendlval, yytext, yyleng) \ > + if (SCNG(output_filter)) { \ > + SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); \ > + } else { \ > + zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ > + zendlval->value.str.len = yyleng; \ > + } > +#else /* ZEND_MULTIBYTE */ > # define zend_copy_value(zendlval, yytext, yyleng) \ > zendlval->value.str.val = (char *)estrndup(yytext, yyleng); \ > zendlval->value.str.len = yyleng; > +#endif /* ZEND_MULTIBYTE */ > > static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type > TSRMLS_DC) > { > @@ -587,6 +804,13 @@ > s++; > } > *t = 0; > +#ifdef ZEND_MULTIBYTE > + if (SCNG(output_filter)) { > + s = zendlval->value.str.val; > + SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); > + efree(s); > + } > +#endif /* ZEND_MULTIBYTE */ > } > > > @@ -1423,8 +1647,21 @@ > > inline_char_handler: > > +#ifdef ZEND_MULTIBYTE > + if (SCNG(output_filter)) { > + int readsize; > + readsize = > SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), yytext, yyleng TSRMLS_CC); > + if (readsize < yyleng) { > + yyless(readsize); > + } > + } else { > + zendlval->value.str.val = (char *) estrndup(yytext, yyleng); > + zendlval->value.str.len = yyleng; > + } > +#else /* !ZEND_MULTIBYTE */ > zendlval->value.str.val = (char *) estrndup(yytext, yyleng); > - zendlval->value.str.len = yyleng; > + zendlval->value.str.len = yyleng; > +#endif > zendlval->type = IS_STRING; > HANDLE_NEWLINES(yytext, yyleng); > return T_INLINE_HTML; > @@ -1637,6 +1874,13 @@ > } > *t = 0; > > +#ifdef ZEND_MULTIBYTE > + if (SCNG(output_filter)) { > + s = zendlval->value.str.val; > + SCNG(output_filter)(&(zendlval->value.str.val), > &(zendlval->value.str.len), s, zendlval->value.str.len TSRMLS_CC); > + efree(s); > + } > +#endif /* ZEND_MULTIBYTE */ > return T_CONSTANT_ENCAPSED_STRING; > } > > »jÒ¿oSlž¤� > l‹ß'http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner_defs.h?r1=1.1.2.8&r2=1.1.2.9&diff_format=u > Index: ZendEngine2/zend_language_scanner_defs.h > diff -u ZendEngine2/zend_language_scanner_defs.h:1.1.2.8 > ZendEngine2/zend_language_scanner_defs.h:1.1.2.9 > --- ZendEngine2/zend_language_scanner_defs.h:1.1.2.8 Thu Apr 10 19:19:04 2008 > +++ ZendEngine2/zend_language_scanner_defs.h Sun Jun 29 08:21:35 2008 > @@ -1,4 +1,4 @@ > -/* Generated by re2c 0.13.5.dev on Thu Apr 10 20:01:41 2008 */ > +/* Generated by re2c 0.13.5 on Sun Jun 29 17:06:51 2008 */ > #line 3 "Zend/zend_language_scanner_defs.h" > > enum YYCONDTYPE { > > http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_multibyte.h?r1=1.3.2.3.2.1.2.1&r2=1.3.2.3.2.1.2.2&diff_format=u > Index: ZendEngine2/zend_multibyte.h > diff -u ZendEngine2/zend_multibyte.h:1.3.2.3.2.1.2.1 > ZendEngine2/zend_multibyte.h:1.3.2.3.2.1.2.2 > --- ZendEngine2/zend_multibyte.h:1.3.2.3.2.1.2.1 Mon Dec 31 07:17:04 2007 > +++ ZendEngine2/zend_multibyte.h Sun Jun 29 08:21:35 2008 > @@ -17,7 +17,7 @@ > > +----------------------------------------------------------------------+ > */ > > -/* $Id: zend_multibyte.h,v 1.3.2.3.2.1.2.1 2007/12/31 07:17:04 sebastian Exp $ */ > +/* $Id: zend_multibyte.h,v 1.3.2.3.2.1.2.2 2008/06/29 08:21:35 hirokawa Exp $ */ > > #ifndef ZEND_MULTIBYTE_H > #define ZEND_MULTIBYTE_H > @@ -62,7 +62,7 @@ > /* in zend_language_scanner.l */ > ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter > old_input_filter, zend_encoding *old_encoding TSRMLS_DC); > ZEND_API int zend_multibyte_yyinput(zend_file_handle *file_handle, char *buf, size_t len > TSRMLS_DC); > -ZEND_API int zend_multibyte_read_script(TSRMLS_D); > +ZEND_API int zend_multibyte_read_script(char *buf, int n TSRMLS_DC); > END_EXTERN_C() > > #endif /* ZEND_MULTIBYTE */ Best regards, Marcus

« previous php.zend-engine.cvs (#6842) next »