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