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