1 /* Generated by re2c 2.1.1 */
2 /*
3 +----------------------------------------------------------------------+
4 | Zend Engine |
5 +----------------------------------------------------------------------+
6 | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) |
7 +----------------------------------------------------------------------+
8 | This source file is subject to version 2.00 of the Zend license, |
9 | that is bundled with this package in the file LICENSE, and is |
10 | available through the world-wide-web at the following url: |
11 | http://www.zend.com/license/2_00.txt. |
12 | If you did not receive a copy of the Zend license and are unable to |
13 | obtain it through the world-wide-web, please send a note to |
14 | license@zend.com so we can mail you a copy immediately. |
15 +----------------------------------------------------------------------+
16 | Authors: Zeev Suraski <zeev@php.net> |
17 | Jani Taskinen <jani@php.net> |
18 | Marcus Boerger <helly@php.net> |
19 | Nuno Lopes <nlopess@php.net> |
20 | Scott MacVicar <scottmac@php.net> |
21 +----------------------------------------------------------------------+
22 */
23
24 #include <errno.h>
25 #include "zend.h"
26 #include "zend_API.h"
27 #include "zend_globals.h"
28 #include <zend_ini_parser.h>
29 #include "zend_ini_scanner.h"
30
31 #ifdef YYDEBUG
32 #undef YYDEBUG
33 #endif
34
35 #if 0
36 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
37 #else
38 # define YYDEBUG(s, c)
39 #endif
40
41 #include "zend_ini_scanner_defs.h"
42
43 #define YYCTYPE unsigned char
44 /* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD)
45 * so that if will be able to terminate to match the current token (e.g. non-enclosed string) */
46 #define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; }
47 #define YYCURSOR SCNG(yy_cursor)
48 #define YYLIMIT SCNG(yy_limit)
49 #define YYMARKER SCNG(yy_marker)
50
51 #define YYGETCONDITION() SCNG(yy_state)
52 #define YYSETCONDITION(s) SCNG(yy_state) = s
53
54 #define STATE(name) yyc##name
55
56 /* emulate flex constructs */
57 #define BEGIN(state) YYSETCONDITION(STATE(state))
58 #define YYSTATE YYGETCONDITION()
59 #define yytext ((char*)SCNG(yy_text))
60 #define yyleng SCNG(yy_leng)
61 #define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \
62 yyleng = (unsigned int)x; } while(0)
63
64 /* #define yymore() goto yymore_restart */
65
66 /* perform sanity check. If this message is triggered you should
67 increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */
68 #define YYMAXFILL 6
69
70 #if ZEND_MMAP_AHEAD < (YYMAXFILL + 1)
71 # error ZEND_MMAP_AHEAD should be greater than YYMAXFILL
72 #endif
73
74
75 /* How it works (for the core ini directives):
76 * ===========================================
77 *
78 * 1. Scanner scans file for tokens and passes them to parser.
79 * 2. Parser parses the tokens and passes the name/value pairs to the callback
80 * function which stores them in the configuration hash table.
81 * 3. Later REGISTER_INI_ENTRIES() is called which triggers the actual
82 * registering of ini entries and uses zend_get_configuration_directive()
83 * to fetch the previously stored name/value pair from configuration hash table
84 * and registers the static ini entries which match the name to the value
85 * into EG(ini_directives) hash table.
86 * 4. PATH section entries are used per-request from down to top, each overriding
87 * previous if one exists. zend_alter_ini_entry() is called for each entry.
88 * Settings in PATH section are ZEND_INI_SYSTEM accessible and thus mimics the
89 * php_admin_* directives used within Apache httpd.conf when PHP is compiled as
90 * module for Apache.
91 * 5. User defined ini files (like .htaccess for apache) are parsed for each request and
92 * stored in separate hash defined by SAPI.
93 */
94
95 /* TODO: (ordered by importance :-)
96 * ===============================================================================
97 *
98 * - Separate constant lookup totally from plain strings (using CONSTANT pattern)
99 * - Add #if .. #else .. #endif and ==, !=, <, > , <=, >= operators
100 * - Add #include "some.ini"
101 * - Allow variables to refer to options also when using parse_ini_file()
102 *
103 */
104
105 /* Globals Macros */
106 #define SCNG INI_SCNG
107 #ifdef ZTS
108 ZEND_API ts_rsrc_id ini_scanner_globals_id;
109 ZEND_API size_t ini_scanner_globals_offset;
110 #else
111 ZEND_API zend_ini_scanner_globals ini_scanner_globals;
112 #endif
113
114 #define ZEND_SYSTEM_INI CG(ini_parser_unbuffered_errors)
115
116 /* Eat leading whitespace */
117 #define EAT_LEADING_WHITESPACE() \
118 while (yyleng) { \
119 if (yytext[0] == ' ' || yytext[0] == '\t') { \
120 SCNG(yy_text)++; \
121 yyleng--; \
122 } else { \
123 break; \
124 } \
125 }
126
127 /* Eat trailing whitespace + extra char */
128 #define EAT_TRAILING_WHITESPACE_EX(ch) \
129 while (yyleng && ( \
130 (ch != 'X' && yytext[yyleng - 1] == ch) || \
131 yytext[yyleng - 1] == '\n' || \
132 yytext[yyleng - 1] == '\r' || \
133 yytext[yyleng - 1] == '\t' || \
134 yytext[yyleng - 1] == ' ') \
135 ) { \
136 yyleng--; \
137 }
138
139 /* Eat trailing whitespace */
140 #define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X')
141
142 #define zend_ini_copy_value(retval, str, len) \
143 ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI))
144
145
146 #define RETURN_TOKEN(type, str, len) { \
147 if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED && \
148 (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW))) {\
149 zend_ini_copy_typed_value(ini_lval, type, str, len); \
150 } else { \
151 zend_ini_copy_value(ini_lval, str, len); \
152 } \
153 return type; \
154 }
155
convert_to_number(zval * retval,const char * str,const int str_len)156 static inline zend_result convert_to_number(zval *retval, const char *str, const int str_len)
157 {
158 zend_uchar type;
159 int overflow;
160 zend_long lval;
161 double dval;
162
163 if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow, NULL)) != 0) {
164 if (type == IS_LONG) {
165 ZVAL_LONG(retval, lval);
166 return SUCCESS;
167 } else if (type == IS_DOUBLE && !overflow) {
168 ZVAL_DOUBLE(retval, dval);
169 return SUCCESS;
170 }
171 }
172
173 return FAILURE;
174 }
175
zend_ini_copy_typed_value(zval * retval,const int type,const char * str,int len)176 static void zend_ini_copy_typed_value(zval *retval, const int type, const char *str, int len)
177 {
178 switch (type) {
179 case BOOL_FALSE:
180 case BOOL_TRUE:
181 ZVAL_BOOL(retval, type == BOOL_TRUE);
182 break;
183
184 case NULL_NULL:
185 ZVAL_NULL(retval);
186 break;
187
188 case TC_NUMBER:
189 if (convert_to_number(retval, str, len) == SUCCESS) {
190 break;
191 }
192 ZEND_FALLTHROUGH;
193 default:
194 zend_ini_copy_value(retval, str, len);
195 }
196 }
197
_yy_push_state(int new_state)198 static void _yy_push_state(int new_state)
199 {
200 zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION());
201 YYSETCONDITION(new_state);
202 }
203
204 #define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm)
205
yy_pop_state(void)206 static void yy_pop_state(void)
207 {
208 int *stack_state = zend_stack_top(&SCNG(state_stack));
209 YYSETCONDITION(*stack_state);
210 zend_stack_del_top(&SCNG(state_stack));
211 }
212
yy_scan_buffer(char * str,unsigned int len)213 static void yy_scan_buffer(char *str, unsigned int len)
214 {
215 YYCURSOR = (YYCTYPE*)str;
216 SCNG(yy_start) = YYCURSOR;
217 YYLIMIT = YYCURSOR + len;
218 }
219
220 #define ini_filename SCNG(filename)
221
222 /* {{{ init_ini_scanner() */
init_ini_scanner(int scanner_mode,zend_file_handle * fh)223 static zend_result init_ini_scanner(int scanner_mode, zend_file_handle *fh)
224 {
225 /* Sanity check */
226 if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) {
227 zend_error(E_WARNING, "Invalid scanner mode");
228 return FAILURE;
229 }
230
231 SCNG(lineno) = 1;
232 SCNG(scanner_mode) = scanner_mode;
233 SCNG(yy_in) = fh;
234
235 if (fh != NULL) {
236 ini_filename = zend_string_copy(fh->filename);
237 } else {
238 ini_filename = NULL;
239 }
240
241 zend_stack_init(&SCNG(state_stack), sizeof(int));
242 BEGIN(INITIAL);
243
244 return SUCCESS;
245 }
246 /* }}} */
247
248 /* {{{ shutdown_ini_scanner() */
shutdown_ini_scanner(void)249 void shutdown_ini_scanner(void)
250 {
251 zend_stack_destroy(&SCNG(state_stack));
252 if (ini_filename) {
253 zend_string_release(ini_filename);
254 }
255 }
256 /* }}} */
257
258 /* {{{ zend_ini_scanner_get_lineno() */
zend_ini_scanner_get_lineno(void)259 ZEND_COLD int zend_ini_scanner_get_lineno(void)
260 {
261 return SCNG(lineno);
262 }
263 /* }}} */
264
265 /* {{{ zend_ini_scanner_get_filename() */
zend_ini_scanner_get_filename(void)266 ZEND_COLD char *zend_ini_scanner_get_filename(void)
267 {
268 return ini_filename ? ZSTR_VAL(ini_filename) : "Unknown";
269 }
270 /* }}} */
271
272 /* {{{ zend_ini_open_file_for_scanning() */
zend_ini_open_file_for_scanning(zend_file_handle * fh,int scanner_mode)273 zend_result zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode)
274 {
275 char *buf;
276 size_t size;
277
278 if (zend_stream_fixup(fh, &buf, &size) == FAILURE) {
279 return FAILURE;
280 }
281
282 if (init_ini_scanner(scanner_mode, fh) == FAILURE) {
283 return FAILURE;
284 }
285
286 yy_scan_buffer(buf, (unsigned int)size);
287
288 return SUCCESS;
289 }
290 /* }}} */
291
292 /* {{{ zend_ini_prepare_string_for_scanning() */
zend_ini_prepare_string_for_scanning(char * str,int scanner_mode)293 zend_result zend_ini_prepare_string_for_scanning(char *str, int scanner_mode)
294 {
295 int len = (int)strlen(str);
296
297 if (init_ini_scanner(scanner_mode, NULL) == FAILURE) {
298 return FAILURE;
299 }
300
301 yy_scan_buffer(str, len);
302
303 return SUCCESS;
304 }
305 /* }}} */
306
307 /* {{{ zend_ini_escape_string() */
zend_ini_escape_string(zval * lval,char * str,int len,char quote_type)308 static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type)
309 {
310 char *s, *t;
311 char *end;
312
313 zend_ini_copy_value(lval, str, len);
314
315 /* convert escape sequences */
316 s = t = Z_STRVAL_P(lval);
317 end = s + Z_STRLEN_P(lval);
318
319 while (s < end) {
320 if (*s == '\\') {
321 s++;
322 if (s >= end) {
323 *t++ = '\\';
324 continue;
325 }
326 switch (*s) {
327 case '"':
328 if (*s != quote_type) {
329 *t++ = '\\';
330 *t++ = *s;
331 break;
332 }
333 ZEND_FALLTHROUGH;
334 case '\\':
335 case '$':
336 *t++ = *s;
337 Z_STRLEN_P(lval)--;
338 break;
339 default:
340 *t++ = '\\';
341 *t++ = *s;
342 break;
343 }
344 } else {
345 *t++ = *s;
346 }
347 if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
348 SCNG(lineno)++;
349 }
350 s++;
351 }
352 *t = 0;
353 }
354 /* }}} */
355
ini_lex(zval * ini_lval)356 int ini_lex(zval *ini_lval)
357 {
358 restart:
359 SCNG(yy_text) = YYCURSOR;
360
361 /* yymore_restart: */
362 /* detect EOF */
363 if (YYCURSOR >= YYLIMIT) {
364 if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) {
365 BEGIN(INITIAL);
366 return END_OF_LINE;
367 }
368 return 0;
369 }
370
371 /* Eat any UTF-8 BOM we find in the first 3 bytes */
372 if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) {
373 if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) {
374 YYCURSOR += 3;
375 goto restart;
376 }
377 }
378
379 {
380 YYCTYPE yych;
381 unsigned int yyaccept = 0;
382 if (YYGETCONDITION() < 4) {
383 if (YYGETCONDITION() < 2) {
384 if (YYGETCONDITION() < 1) {
385 goto yyc_INITIAL;
386 } else {
387 goto yyc_ST_OFFSET;
388 }
389 } else {
390 if (YYGETCONDITION() < 3) {
391 goto yyc_ST_SECTION_VALUE;
392 } else {
393 goto yyc_ST_VALUE;
394 }
395 }
396 } else {
397 if (YYGETCONDITION() < 6) {
398 if (YYGETCONDITION() < 5) {
399 goto yyc_ST_SECTION_RAW;
400 } else {
401 goto yyc_ST_DOUBLE_QUOTES;
402 }
403 } else {
404 if (YYGETCONDITION() < 7) {
405 goto yyc_ST_VARNAME;
406 } else {
407 goto yyc_ST_RAW;
408 }
409 }
410 }
411 /* *********************************** */
412 yyc_INITIAL:
413 {
414 static const unsigned char yybm[] = {
415 144, 144, 144, 144, 144, 144, 144, 144,
416 144, 160, 0, 144, 144, 0, 144, 144,
417 144, 144, 144, 144, 144, 144, 144, 144,
418 144, 144, 144, 144, 144, 144, 144, 144,
419 240, 128, 128, 144, 128, 144, 128, 144,
420 128, 128, 144, 144, 144, 144, 144, 144,
421 144, 144, 144, 144, 144, 144, 144, 144,
422 144, 144, 144, 128, 144, 128, 144, 144,
423 144, 144, 144, 144, 144, 144, 144, 144,
424 144, 144, 144, 144, 144, 144, 144, 144,
425 144, 144, 144, 144, 144, 144, 144, 144,
426 144, 144, 144, 128, 144, 144, 128, 144,
427 144, 144, 144, 144, 144, 144, 144, 144,
428 144, 144, 144, 144, 144, 144, 144, 144,
429 144, 144, 144, 144, 144, 144, 144, 144,
430 144, 144, 144, 128, 128, 128, 128, 144,
431 144, 144, 144, 144, 144, 144, 144, 144,
432 144, 144, 144, 144, 144, 144, 144, 144,
433 144, 144, 144, 144, 144, 144, 144, 144,
434 144, 144, 144, 144, 144, 144, 144, 144,
435 144, 144, 144, 144, 144, 144, 144, 144,
436 144, 144, 144, 144, 144, 144, 144, 144,
437 144, 144, 144, 144, 144, 144, 144, 144,
438 144, 144, 144, 144, 144, 144, 144, 144,
439 144, 144, 144, 144, 144, 144, 144, 144,
440 144, 144, 144, 144, 144, 144, 144, 144,
441 144, 144, 144, 144, 144, 144, 144, 144,
442 144, 144, 144, 144, 144, 144, 144, 144,
443 144, 144, 144, 144, 144, 144, 144, 144,
444 144, 144, 144, 144, 144, 144, 144, 144,
445 144, 144, 144, 144, 144, 144, 144, 144,
446 144, 144, 144, 144, 144, 144, 144, 144,
447 };
448 YYDEBUG(0, *YYCURSOR);
449 YYFILL(5);
450 yych = *YYCURSOR;
451 if (yybm[0+yych] & 64) {
452 goto yy11;
453 }
454 switch (yych) {
455 case '\t': goto yy5;
456 case '\n': goto yy8;
457 case '\r': goto yy10;
458 case ' ':
459 case '!':
460 case '"':
461 case '$':
462 case '&':
463 case '(':
464 case ')':
465 case '^':
466 case '{':
467 case '|':
468 case '}':
469 case '~': goto yy13;
470 case ';': goto yy15;
471 case '=': goto yy17;
472 case 'F':
473 case 'f': goto yy20;
474 case 'N':
475 case 'n': goto yy21;
476 case 'O':
477 case 'o': goto yy22;
478 case 'T':
479 case 't': goto yy23;
480 case 'Y':
481 case 'y': goto yy24;
482 case '[': goto yy25;
483 default: goto yy2;
484 }
485 yy2:
486 YYDEBUG(2, *YYCURSOR);
487 ++YYCURSOR;
488 YYFILL(1);
489 yych = *YYCURSOR;
490 yy3:
491 YYDEBUG(3, *YYCURSOR);
492 if (yybm[0+yych] & 16) {
493 goto yy2;
494 }
495 if (yych <= '=') goto yy4;
496 if (yych <= '[') goto yy27;
497 yy4:
498 YYDEBUG(4, *YYCURSOR);
499 yyleng = YYCURSOR - SCNG(yy_text);
500 { /* Get option name */
501 /* Eat leading whitespace */
502 EAT_LEADING_WHITESPACE();
503
504 /* Eat trailing whitespace */
505 EAT_TRAILING_WHITESPACE();
506
507 RETURN_TOKEN(TC_LABEL, yytext, yyleng);
508 }
509 yy5:
510 YYDEBUG(5, *YYCURSOR);
511 ++YYCURSOR;
512 YYFILL(2);
513 yych = *YYCURSOR;
514 YYDEBUG(6, *YYCURSOR);
515 if (yybm[0+yych] & 32) {
516 goto yy5;
517 }
518 if (yych <= '\r') {
519 if (yych <= 0x08) goto yy7;
520 if (yych <= '\n') goto yy8;
521 if (yych >= '\r') goto yy10;
522 } else {
523 if (yych <= ';') {
524 if (yych >= ';') goto yy15;
525 } else {
526 if (yych == '=') goto yy17;
527 }
528 }
529 yy7:
530 YYDEBUG(7, *YYCURSOR);
531 yyleng = YYCURSOR - SCNG(yy_text);
532 {
533 /* eat whitespace */
534 goto restart;
535 }
536 yy8:
537 YYDEBUG(8, *YYCURSOR);
538 ++YYCURSOR;
539 yy9:
540 YYDEBUG(9, *YYCURSOR);
541 yyleng = YYCURSOR - SCNG(yy_text);
542 {
543 SCNG(lineno)++;
544 return END_OF_LINE;
545 }
546 yy10:
547 YYDEBUG(10, *YYCURSOR);
548 yych = *++YYCURSOR;
549 if (yych == '\n') goto yy8;
550 goto yy9;
551 yy11:
552 YYDEBUG(11, *YYCURSOR);
553 ++YYCURSOR;
554 YYFILL(2);
555 yych = *YYCURSOR;
556 YYDEBUG(12, *YYCURSOR);
557 if (yybm[0+yych] & 64) {
558 goto yy11;
559 }
560 if (yych <= '\'') {
561 if (yych <= 0x1F) {
562 if (yych <= '\n') {
563 if (yych <= 0x08) goto yy2;
564 if (yych <= '\t') goto yy5;
565 goto yy8;
566 } else {
567 if (yych == '\r') goto yy10;
568 goto yy2;
569 }
570 } else {
571 if (yych <= '$') {
572 if (yych == '#') goto yy2;
573 goto yy4;
574 } else {
575 if (yych == '&') goto yy4;
576 goto yy2;
577 }
578 }
579 } else {
580 if (yych <= 'Z') {
581 if (yych <= ';') {
582 if (yych <= ')') goto yy4;
583 if (yych <= ':') goto yy2;
584 goto yy15;
585 } else {
586 if (yych == '=') goto yy17;
587 goto yy2;
588 }
589 } else {
590 if (yych <= '^') {
591 if (yych <= '[') goto yy27;
592 if (yych <= ']') goto yy2;
593 goto yy4;
594 } else {
595 if (yych <= 'z') goto yy2;
596 if (yych <= '~') goto yy4;
597 goto yy2;
598 }
599 }
600 }
601 yy13:
602 YYDEBUG(13, *YYCURSOR);
603 ++YYCURSOR;
604 YYDEBUG(14, *YYCURSOR);
605 yyleng = YYCURSOR - SCNG(yy_text);
606 { /* Disallow these chars outside option values */
607 return yytext[0];
608 }
609 yy15:
610 YYDEBUG(15, *YYCURSOR);
611 ++YYCURSOR;
612 YYFILL(2);
613 yych = *YYCURSOR;
614 YYDEBUG(16, *YYCURSOR);
615 if (yybm[0+yych] & 128) {
616 goto yy15;
617 }
618 if (yych <= '\n') goto yy30;
619 goto yy32;
620 yy17:
621 YYDEBUG(17, *YYCURSOR);
622 ++YYCURSOR;
623 YYFILL(1);
624 yych = *YYCURSOR;
625 YYDEBUG(18, *YYCURSOR);
626 if (yych == '\t') goto yy17;
627 if (yych == ' ') goto yy17;
628 YYDEBUG(19, *YYCURSOR);
629 yyleng = YYCURSOR - SCNG(yy_text);
630 { /* Start option value */
631 if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
632 BEGIN(ST_RAW);
633 } else {
634 BEGIN(ST_VALUE);
635 }
636 return '=';
637 }
638 yy20:
639 YYDEBUG(20, *YYCURSOR);
640 yych = *++YYCURSOR;
641 if (yych == 'A') goto yy33;
642 if (yych == 'a') goto yy33;
643 goto yy3;
644 yy21:
645 YYDEBUG(21, *YYCURSOR);
646 yych = *++YYCURSOR;
647 if (yych <= 'U') {
648 if (yych == 'O') goto yy34;
649 if (yych <= 'T') goto yy3;
650 goto yy36;
651 } else {
652 if (yych <= 'o') {
653 if (yych <= 'n') goto yy3;
654 goto yy34;
655 } else {
656 if (yych == 'u') goto yy36;
657 goto yy3;
658 }
659 }
660 yy22:
661 YYDEBUG(22, *YYCURSOR);
662 yych = *++YYCURSOR;
663 if (yych <= 'N') {
664 if (yych == 'F') goto yy37;
665 if (yych <= 'M') goto yy3;
666 goto yy38;
667 } else {
668 if (yych <= 'f') {
669 if (yych <= 'e') goto yy3;
670 goto yy37;
671 } else {
672 if (yych == 'n') goto yy38;
673 goto yy3;
674 }
675 }
676 yy23:
677 YYDEBUG(23, *YYCURSOR);
678 yych = *++YYCURSOR;
679 if (yych == 'R') goto yy41;
680 if (yych == 'r') goto yy41;
681 goto yy3;
682 yy24:
683 YYDEBUG(24, *YYCURSOR);
684 yych = *++YYCURSOR;
685 if (yych == 'E') goto yy42;
686 if (yych == 'e') goto yy42;
687 goto yy3;
688 yy25:
689 YYDEBUG(25, *YYCURSOR);
690 ++YYCURSOR;
691 YYDEBUG(26, *YYCURSOR);
692 yyleng = YYCURSOR - SCNG(yy_text);
693 { /* Section start */
694 /* Enter section data lookup state */
695 if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) {
696 BEGIN(ST_SECTION_RAW);
697 } else {
698 BEGIN(ST_SECTION_VALUE);
699 }
700 return TC_SECTION;
701 }
702 yy27:
703 YYDEBUG(27, *YYCURSOR);
704 ++YYCURSOR;
705 YYFILL(1);
706 yych = *YYCURSOR;
707 YYDEBUG(28, *YYCURSOR);
708 if (yych == '\t') goto yy27;
709 if (yych == ' ') goto yy27;
710 YYDEBUG(29, *YYCURSOR);
711 yyleng = YYCURSOR - SCNG(yy_text);
712 { /* Start of option with offset */
713 /* Eat leading whitespace */
714 EAT_LEADING_WHITESPACE();
715
716 /* Eat trailing whitespace and [ */
717 EAT_TRAILING_WHITESPACE_EX('[');
718
719 /* Enter offset lookup state */
720 BEGIN(ST_OFFSET);
721
722 RETURN_TOKEN(TC_OFFSET, yytext, yyleng);
723 }
724 yy30:
725 YYDEBUG(30, *YYCURSOR);
726 ++YYCURSOR;
727 yy31:
728 YYDEBUG(31, *YYCURSOR);
729 yyleng = YYCURSOR - SCNG(yy_text);
730 { /* Comment */
731 BEGIN(INITIAL);
732 SCNG(lineno)++;
733 return END_OF_LINE;
734 }
735 yy32:
736 YYDEBUG(32, *YYCURSOR);
737 yych = *++YYCURSOR;
738 if (yych == '\n') goto yy30;
739 goto yy31;
740 yy33:
741 YYDEBUG(33, *YYCURSOR);
742 yych = *++YYCURSOR;
743 if (yych == 'L') goto yy43;
744 if (yych == 'l') goto yy43;
745 goto yy3;
746 yy34:
747 YYDEBUG(34, *YYCURSOR);
748 yych = *++YYCURSOR;
749 if (yych <= '\'') {
750 if (yych <= 0x1F) {
751 if (yych <= '\n') {
752 if (yych <= 0x08) goto yy3;
753 if (yych <= '\t') goto yy44;
754 } else {
755 if (yych != '\r') goto yy3;
756 }
757 } else {
758 if (yych <= '#') {
759 if (yych <= ' ') goto yy46;
760 if (yych >= '#') goto yy3;
761 } else {
762 if (yych == '%') goto yy3;
763 if (yych >= '\'') goto yy3;
764 }
765 }
766 } else {
767 if (yych <= 'N') {
768 if (yych <= ';') {
769 if (yych <= ')') goto yy35;
770 if (yych <= ':') goto yy3;
771 } else {
772 if (yych == '=') goto yy35;
773 if (yych <= 'M') goto yy3;
774 goto yy48;
775 }
776 } else {
777 if (yych <= 'm') {
778 if (yych != '^') goto yy3;
779 } else {
780 if (yych <= 'n') goto yy48;
781 if (yych <= 'z') goto yy3;
782 if (yych >= 0x7F) goto yy3;
783 }
784 }
785 }
786 yy35:
787 YYDEBUG(35, *YYCURSOR);
788 yyleng = YYCURSOR - SCNG(yy_text);
789 { /* FALSE value (when used outside option value/offset this causes parse error!)*/
790 RETURN_TOKEN(BOOL_FALSE, "", 0);
791 }
792 yy36:
793 YYDEBUG(36, *YYCURSOR);
794 yych = *++YYCURSOR;
795 if (yych == 'L') goto yy49;
796 if (yych == 'l') goto yy49;
797 goto yy3;
798 yy37:
799 YYDEBUG(37, *YYCURSOR);
800 yych = *++YYCURSOR;
801 if (yych == 'F') goto yy46;
802 if (yych == 'f') goto yy46;
803 goto yy3;
804 yy38:
805 YYDEBUG(38, *YYCURSOR);
806 ++YYCURSOR;
807 YYFILL(1);
808 yych = *YYCURSOR;
809 YYDEBUG(39, *YYCURSOR);
810 if (yych <= '&') {
811 if (yych <= 0x1F) {
812 if (yych <= '\n') {
813 if (yych <= 0x08) goto yy2;
814 if (yych <= '\t') goto yy50;
815 } else {
816 if (yych != '\r') goto yy2;
817 }
818 } else {
819 if (yych <= '#') {
820 if (yych <= ' ') goto yy38;
821 if (yych >= '#') goto yy2;
822 } else {
823 if (yych == '%') goto yy2;
824 }
825 }
826 } else {
827 if (yych <= '=') {
828 if (yych <= ':') {
829 if (yych <= '\'') goto yy2;
830 if (yych >= '*') goto yy2;
831 } else {
832 if (yych == '<') goto yy2;
833 }
834 } else {
835 if (yych <= ']') {
836 if (yych == '[') goto yy27;
837 goto yy2;
838 } else {
839 if (yych <= '^') goto yy40;
840 if (yych <= 'z') goto yy2;
841 if (yych >= 0x7F) goto yy2;
842 }
843 }
844 }
845 yy40:
846 YYDEBUG(40, *YYCURSOR);
847 yyleng = YYCURSOR - SCNG(yy_text);
848 { /* TRUE value (when used outside option value/offset this causes parse error!) */
849 RETURN_TOKEN(BOOL_TRUE, "1", 1);
850 }
851 yy41:
852 YYDEBUG(41, *YYCURSOR);
853 yych = *++YYCURSOR;
854 if (yych == 'U') goto yy52;
855 if (yych == 'u') goto yy52;
856 goto yy3;
857 yy42:
858 YYDEBUG(42, *YYCURSOR);
859 yych = *++YYCURSOR;
860 if (yych == 'S') goto yy38;
861 if (yych == 's') goto yy38;
862 goto yy3;
863 yy43:
864 YYDEBUG(43, *YYCURSOR);
865 yych = *++YYCURSOR;
866 if (yych == 'S') goto yy48;
867 if (yych == 's') goto yy48;
868 goto yy3;
869 yy44:
870 YYDEBUG(44, *YYCURSOR);
871 ++YYCURSOR;
872 YYFILL(1);
873 yych = *YYCURSOR;
874 YYDEBUG(45, *YYCURSOR);
875 if (yych == '\t') goto yy44;
876 if (yych == ' ') goto yy44;
877 goto yy35;
878 yy46:
879 YYDEBUG(46, *YYCURSOR);
880 ++YYCURSOR;
881 YYFILL(1);
882 yych = *YYCURSOR;
883 YYDEBUG(47, *YYCURSOR);
884 if (yych <= '&') {
885 if (yych <= 0x1F) {
886 if (yych <= '\n') {
887 if (yych <= 0x08) goto yy2;
888 if (yych <= '\t') goto yy44;
889 goto yy35;
890 } else {
891 if (yych == '\r') goto yy35;
892 goto yy2;
893 }
894 } else {
895 if (yych <= '#') {
896 if (yych <= ' ') goto yy46;
897 if (yych <= '"') goto yy35;
898 goto yy2;
899 } else {
900 if (yych == '%') goto yy2;
901 goto yy35;
902 }
903 }
904 } else {
905 if (yych <= '=') {
906 if (yych <= ':') {
907 if (yych <= '\'') goto yy2;
908 if (yych <= ')') goto yy35;
909 goto yy2;
910 } else {
911 if (yych == '<') goto yy2;
912 goto yy35;
913 }
914 } else {
915 if (yych <= ']') {
916 if (yych == '[') goto yy27;
917 goto yy2;
918 } else {
919 if (yych <= '^') goto yy35;
920 if (yych <= 'z') goto yy2;
921 if (yych <= '~') goto yy35;
922 goto yy2;
923 }
924 }
925 }
926 yy48:
927 YYDEBUG(48, *YYCURSOR);
928 yych = *++YYCURSOR;
929 if (yych == 'E') goto yy46;
930 if (yych == 'e') goto yy46;
931 goto yy3;
932 yy49:
933 YYDEBUG(49, *YYCURSOR);
934 yych = *++YYCURSOR;
935 if (yych == 'L') goto yy53;
936 if (yych == 'l') goto yy53;
937 goto yy3;
938 yy50:
939 YYDEBUG(50, *YYCURSOR);
940 ++YYCURSOR;
941 YYFILL(1);
942 yych = *YYCURSOR;
943 YYDEBUG(51, *YYCURSOR);
944 if (yych == '\t') goto yy50;
945 if (yych == ' ') goto yy50;
946 goto yy40;
947 yy52:
948 YYDEBUG(52, *YYCURSOR);
949 yych = *++YYCURSOR;
950 if (yych == 'E') goto yy38;
951 if (yych == 'e') goto yy38;
952 goto yy3;
953 yy53:
954 YYDEBUG(53, *YYCURSOR);
955 ++YYCURSOR;
956 YYFILL(1);
957 yych = *YYCURSOR;
958 YYDEBUG(54, *YYCURSOR);
959 if (yych <= '&') {
960 if (yych <= 0x1F) {
961 if (yych <= '\n') {
962 if (yych <= 0x08) goto yy2;
963 if (yych <= '\t') goto yy56;
964 } else {
965 if (yych != '\r') goto yy2;
966 }
967 } else {
968 if (yych <= '#') {
969 if (yych <= ' ') goto yy53;
970 if (yych >= '#') goto yy2;
971 } else {
972 if (yych == '%') goto yy2;
973 }
974 }
975 } else {
976 if (yych <= '=') {
977 if (yych <= ':') {
978 if (yych <= '\'') goto yy2;
979 if (yych >= '*') goto yy2;
980 } else {
981 if (yych == '<') goto yy2;
982 }
983 } else {
984 if (yych <= ']') {
985 if (yych == '[') goto yy27;
986 goto yy2;
987 } else {
988 if (yych <= '^') goto yy55;
989 if (yych <= 'z') goto yy2;
990 if (yych >= 0x7F) goto yy2;
991 }
992 }
993 }
994 yy55:
995 YYDEBUG(55, *YYCURSOR);
996 yyleng = YYCURSOR - SCNG(yy_text);
997 {
998 RETURN_TOKEN(NULL_NULL, "", 0);
999 }
1000 yy56:
1001 YYDEBUG(56, *YYCURSOR);
1002 ++YYCURSOR;
1003 YYFILL(1);
1004 yych = *YYCURSOR;
1005 YYDEBUG(57, *YYCURSOR);
1006 if (yych == '\t') goto yy56;
1007 if (yych == ' ') goto yy56;
1008 goto yy55;
1009 }
1010 /* *********************************** */
1011 yyc_ST_OFFSET:
1012 {
1013 static const unsigned char yybm[] = {
1014 132, 132, 132, 132, 132, 132, 132, 132,
1015 132, 140, 128, 132, 132, 128, 132, 132,
1016 132, 132, 132, 132, 132, 132, 132, 132,
1017 132, 132, 132, 132, 132, 132, 132, 132,
1018 140, 132, 128, 132, 192, 132, 132, 0,
1019 132, 132, 132, 132, 132, 132, 132, 132,
1020 180, 180, 180, 180, 180, 180, 180, 180,
1021 180, 180, 132, 128, 132, 132, 132, 132,
1022 132, 164, 164, 164, 164, 164, 164, 164,
1023 164, 164, 164, 164, 164, 164, 164, 164,
1024 164, 164, 164, 164, 164, 164, 164, 164,
1025 164, 164, 164, 132, 192, 128, 132, 164,
1026 132, 164, 164, 164, 164, 164, 164, 164,
1027 164, 164, 164, 164, 164, 164, 164, 164,
1028 164, 164, 164, 164, 164, 164, 164, 164,
1029 164, 164, 164, 132, 132, 132, 132, 132,
1030 132, 132, 132, 132, 132, 132, 132, 132,
1031 132, 132, 132, 132, 132, 132, 132, 132,
1032 132, 132, 132, 132, 132, 132, 132, 132,
1033 132, 132, 132, 132, 132, 132, 132, 132,
1034 132, 132, 132, 132, 132, 132, 132, 132,
1035 132, 132, 132, 132, 132, 132, 132, 132,
1036 132, 132, 132, 132, 132, 132, 132, 132,
1037 132, 132, 132, 132, 132, 132, 132, 132,
1038 132, 132, 132, 132, 132, 132, 132, 132,
1039 132, 132, 132, 132, 132, 132, 132, 132,
1040 132, 132, 132, 132, 132, 132, 132, 132,
1041 132, 132, 132, 132, 132, 132, 132, 132,
1042 132, 132, 132, 132, 132, 132, 132, 132,
1043 132, 132, 132, 132, 132, 132, 132, 132,
1044 132, 132, 132, 132, 132, 132, 132, 132,
1045 132, 132, 132, 132, 132, 132, 132, 132,
1046 };
1047 YYDEBUG(58, *YYCURSOR);
1048 YYFILL(2);
1049 yych = *YYCURSOR;
1050 if (yybm[0+yych] & 8) {
1051 goto yy63;
1052 }
1053 if (yych <= '/') {
1054 if (yych <= '"') {
1055 if (yych <= '\f') {
1056 if (yych <= 0x08) goto yy60;
1057 if (yych <= '\n') goto yy65;
1058 } else {
1059 if (yych <= '\r') goto yy65;
1060 if (yych >= '"') goto yy67;
1061 }
1062 } else {
1063 if (yych <= '&') {
1064 if (yych == '$') goto yy69;
1065 } else {
1066 if (yych <= '\'') goto yy70;
1067 if (yych <= ',') goto yy60;
1068 if (yych <= '.') goto yy71;
1069 }
1070 }
1071 } else {
1072 if (yych <= '[') {
1073 if (yych <= ';') {
1074 if (yych <= '9') goto yy72;
1075 if (yych >= ';') goto yy65;
1076 } else {
1077 if (yych <= '@') goto yy60;
1078 if (yych <= 'Z') goto yy75;
1079 }
1080 } else {
1081 if (yych <= '^') {
1082 if (yych <= '\\') goto yy78;
1083 if (yych <= ']') goto yy79;
1084 } else {
1085 if (yych == '`') goto yy60;
1086 if (yych <= 'z') goto yy75;
1087 }
1088 }
1089 }
1090 yy60:
1091 YYDEBUG(60, *YYCURSOR);
1092 yyaccept = 0;
1093 YYMARKER = ++YYCURSOR;
1094 YYFILL(1);
1095 yych = *YYCURSOR;
1096 yy61:
1097 YYDEBUG(61, *YYCURSOR);
1098 if (yybm[0+yych] & 4) {
1099 goto yy60;
1100 }
1101 if (yych <= '"') goto yy62;
1102 if (yych <= '$') goto yy81;
1103 if (yych <= ';') goto yy62;
1104 if (yych <= '\\') goto yy78;
1105 yy62:
1106 YYDEBUG(62, *YYCURSOR);
1107 yyleng = YYCURSOR - SCNG(yy_text);
1108 { /* Get rest as section/offset value */
1109 RETURN_TOKEN(TC_STRING, yytext, yyleng);
1110 }
1111 yy63:
1112 YYDEBUG(63, *YYCURSOR);
1113 yyaccept = 0;
1114 YYMARKER = ++YYCURSOR;
1115 YYFILL(1);
1116 yych = *YYCURSOR;
1117 YYDEBUG(64, *YYCURSOR);
1118 if (yybm[0+yych] & 8) {
1119 goto yy63;
1120 }
1121 if (yych <= '$') {
1122 if (yych <= '\r') {
1123 if (yych <= 0x08) goto yy60;
1124 if (yych <= '\n') goto yy62;
1125 if (yych <= '\f') goto yy60;
1126 goto yy62;
1127 } else {
1128 if (yych == '"') goto yy67;
1129 if (yych <= '#') goto yy60;
1130 goto yy81;
1131 }
1132 } else {
1133 if (yych <= ';') {
1134 if (yych == '\'') goto yy62;
1135 if (yych <= ':') goto yy60;
1136 goto yy62;
1137 } else {
1138 if (yych <= '[') goto yy60;
1139 if (yych <= '\\') goto yy78;
1140 if (yych <= ']') goto yy79;
1141 goto yy60;
1142 }
1143 }
1144 yy65:
1145 YYDEBUG(65, *YYCURSOR);
1146 ++YYCURSOR;
1147 yy66:
1148 YYDEBUG(66, *YYCURSOR);
1149 yyleng = YYCURSOR - SCNG(yy_text);
1150 {
1151 return 0;
1152 }
1153 yy67:
1154 YYDEBUG(67, *YYCURSOR);
1155 ++YYCURSOR;
1156 YYDEBUG(68, *YYCURSOR);
1157 yyleng = YYCURSOR - SCNG(yy_text);
1158 { /* Double quoted '"' string start */
1159 yy_push_state(ST_DOUBLE_QUOTES);
1160 return '"';
1161 }
1162 yy69:
1163 YYDEBUG(69, *YYCURSOR);
1164 yych = *++YYCURSOR;
1165 if (yych <= '\\') {
1166 if (yych <= 0x00) goto yy66;
1167 if (yych <= '[') goto yy60;
1168 goto yy83;
1169 } else {
1170 if (yych == '{') goto yy85;
1171 goto yy60;
1172 }
1173 yy70:
1174 YYDEBUG(70, *YYCURSOR);
1175 yych = *++YYCURSOR;
1176 if (yybm[0+yych] & 128) {
1177 goto yy87;
1178 }
1179 goto yy66;
1180 yy71:
1181 YYDEBUG(71, *YYCURSOR);
1182 yyaccept = 0;
1183 yych = *(YYMARKER = ++YYCURSOR);
1184 if (yych <= '/') goto yy61;
1185 if (yych <= '9') goto yy89;
1186 goto yy61;
1187 yy72:
1188 YYDEBUG(72, *YYCURSOR);
1189 yyaccept = 1;
1190 YYMARKER = ++YYCURSOR;
1191 YYFILL(1);
1192 yych = *YYCURSOR;
1193 YYDEBUG(73, *YYCURSOR);
1194 if (yybm[0+yych] & 16) {
1195 goto yy72;
1196 }
1197 if (yych <= '&') {
1198 if (yych <= '\r') {
1199 if (yych == '\n') goto yy74;
1200 if (yych <= '\f') goto yy60;
1201 } else {
1202 if (yych <= '"') {
1203 if (yych <= '!') goto yy60;
1204 } else {
1205 if (yych == '$') goto yy81;
1206 goto yy60;
1207 }
1208 }
1209 } else {
1210 if (yych <= ':') {
1211 if (yych <= '\'') goto yy74;
1212 if (yych == '.') goto yy89;
1213 goto yy60;
1214 } else {
1215 if (yych <= '[') {
1216 if (yych >= '<') goto yy60;
1217 } else {
1218 if (yych <= '\\') goto yy78;
1219 if (yych >= '^') goto yy60;
1220 }
1221 }
1222 }
1223 yy74:
1224 YYDEBUG(74, *YYCURSOR);
1225 yyleng = YYCURSOR - SCNG(yy_text);
1226 { /* Get number option value as string */
1227 RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
1228 }
1229 yy75:
1230 YYDEBUG(75, *YYCURSOR);
1231 yyaccept = 2;
1232 YYMARKER = ++YYCURSOR;
1233 YYFILL(1);
1234 yych = *YYCURSOR;
1235 YYDEBUG(76, *YYCURSOR);
1236 if (yybm[0+yych] & 32) {
1237 goto yy75;
1238 }
1239 if (yych <= '$') {
1240 if (yych <= '\r') {
1241 if (yych == '\n') goto yy77;
1242 if (yych <= '\f') goto yy60;
1243 } else {
1244 if (yych == '"') goto yy77;
1245 if (yych <= '#') goto yy60;
1246 goto yy81;
1247 }
1248 } else {
1249 if (yych <= ';') {
1250 if (yych == '\'') goto yy77;
1251 if (yych <= ':') goto yy60;
1252 } else {
1253 if (yych <= '[') goto yy60;
1254 if (yych <= '\\') goto yy78;
1255 if (yych >= '^') goto yy60;
1256 }
1257 }
1258 yy77:
1259 YYDEBUG(77, *YYCURSOR);
1260 yyleng = YYCURSOR - SCNG(yy_text);
1261 { /* Get constant option value */
1262 RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
1263 }
1264 yy78:
1265 YYDEBUG(78, *YYCURSOR);
1266 ++YYCURSOR;
1267 YYFILL(1);
1268 yych = *YYCURSOR;
1269 goto yy60;
1270 yy79:
1271 YYDEBUG(79, *YYCURSOR);
1272 ++YYCURSOR;
1273 YYDEBUG(80, *YYCURSOR);
1274 yyleng = YYCURSOR - SCNG(yy_text);
1275 { /* End of section or an option offset */
1276 BEGIN(INITIAL);
1277 return ']';
1278 }
1279 yy81:
1280 YYDEBUG(81, *YYCURSOR);
1281 ++YYCURSOR;
1282 YYFILL(1);
1283 yych = *YYCURSOR;
1284 if (yych <= '\\') {
1285 if (yych <= 0x00) goto yy82;
1286 if (yych <= '[') goto yy60;
1287 goto yy83;
1288 } else {
1289 if (yych != '{') goto yy60;
1290 }
1291 yy82:
1292 YYDEBUG(82, *YYCURSOR);
1293 YYCURSOR = YYMARKER;
1294 if (yyaccept <= 1) {
1295 if (yyaccept == 0) {
1296 goto yy62;
1297 } else {
1298 goto yy74;
1299 }
1300 } else {
1301 goto yy77;
1302 }
1303 yy83:
1304 YYDEBUG(83, *YYCURSOR);
1305 ++YYCURSOR;
1306 YYFILL(1);
1307 yych = *YYCURSOR;
1308 YYDEBUG(84, *YYCURSOR);
1309 if (yybm[0+yych] & 64) {
1310 goto yy83;
1311 }
1312 goto yy60;
1313 yy85:
1314 YYDEBUG(85, *YYCURSOR);
1315 ++YYCURSOR;
1316 YYDEBUG(86, *YYCURSOR);
1317 yyleng = YYCURSOR - SCNG(yy_text);
1318 { /* Variable start */
1319 yy_push_state(ST_VARNAME);
1320 return TC_DOLLAR_CURLY;
1321 }
1322 yy87:
1323 YYDEBUG(87, *YYCURSOR);
1324 ++YYCURSOR;
1325 YYFILL(1);
1326 yych = *YYCURSOR;
1327 YYDEBUG(88, *YYCURSOR);
1328 if (yybm[0+yych] & 128) {
1329 goto yy87;
1330 }
1331 goto yy91;
1332 yy89:
1333 YYDEBUG(89, *YYCURSOR);
1334 yyaccept = 1;
1335 YYMARKER = ++YYCURSOR;
1336 YYFILL(1);
1337 yych = *YYCURSOR;
1338 YYDEBUG(90, *YYCURSOR);
1339 if (yych <= '&') {
1340 if (yych <= '\r') {
1341 if (yych == '\n') goto yy74;
1342 if (yych <= '\f') goto yy60;
1343 goto yy74;
1344 } else {
1345 if (yych <= '"') {
1346 if (yych <= '!') goto yy60;
1347 goto yy74;
1348 } else {
1349 if (yych == '$') goto yy81;
1350 goto yy60;
1351 }
1352 }
1353 } else {
1354 if (yych <= ':') {
1355 if (yych <= '\'') goto yy74;
1356 if (yych <= '/') goto yy60;
1357 if (yych <= '9') goto yy89;
1358 goto yy60;
1359 } else {
1360 if (yych <= '[') {
1361 if (yych <= ';') goto yy74;
1362 goto yy60;
1363 } else {
1364 if (yych <= '\\') goto yy78;
1365 if (yych <= ']') goto yy74;
1366 goto yy60;
1367 }
1368 }
1369 }
1370 yy91:
1371 YYDEBUG(91, *YYCURSOR);
1372 ++YYCURSOR;
1373 YYDEBUG(92, *YYCURSOR);
1374 yyleng = YYCURSOR - SCNG(yy_text);
1375 { /* Raw string */
1376 /* Eat leading and trailing single quotes */
1377 if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
1378 SCNG(yy_text)++;
1379 yyleng = yyleng - 2;
1380 }
1381 RETURN_TOKEN(TC_RAW, yytext, yyleng);
1382 }
1383 }
1384 /* *********************************** */
1385 yyc_ST_SECTION_VALUE:
1386 {
1387 static const unsigned char yybm[] = {
1388 132, 132, 132, 132, 132, 132, 132, 132,
1389 132, 140, 128, 132, 132, 128, 132, 132,
1390 132, 132, 132, 132, 132, 132, 132, 132,
1391 132, 132, 132, 132, 132, 132, 132, 132,
1392 140, 132, 128, 132, 192, 132, 132, 0,
1393 132, 132, 132, 132, 132, 132, 132, 132,
1394 180, 180, 180, 180, 180, 180, 180, 180,
1395 180, 180, 132, 128, 132, 132, 132, 132,
1396 132, 164, 164, 164, 164, 164, 164, 164,
1397 164, 164, 164, 164, 164, 164, 164, 164,
1398 164, 164, 164, 164, 164, 164, 164, 164,
1399 164, 164, 164, 132, 192, 128, 132, 164,
1400 132, 164, 164, 164, 164, 164, 164, 164,
1401 164, 164, 164, 164, 164, 164, 164, 164,
1402 164, 164, 164, 164, 164, 164, 164, 164,
1403 164, 164, 164, 132, 132, 132, 132, 132,
1404 132, 132, 132, 132, 132, 132, 132, 132,
1405 132, 132, 132, 132, 132, 132, 132, 132,
1406 132, 132, 132, 132, 132, 132, 132, 132,
1407 132, 132, 132, 132, 132, 132, 132, 132,
1408 132, 132, 132, 132, 132, 132, 132, 132,
1409 132, 132, 132, 132, 132, 132, 132, 132,
1410 132, 132, 132, 132, 132, 132, 132, 132,
1411 132, 132, 132, 132, 132, 132, 132, 132,
1412 132, 132, 132, 132, 132, 132, 132, 132,
1413 132, 132, 132, 132, 132, 132, 132, 132,
1414 132, 132, 132, 132, 132, 132, 132, 132,
1415 132, 132, 132, 132, 132, 132, 132, 132,
1416 132, 132, 132, 132, 132, 132, 132, 132,
1417 132, 132, 132, 132, 132, 132, 132, 132,
1418 132, 132, 132, 132, 132, 132, 132, 132,
1419 132, 132, 132, 132, 132, 132, 132, 132,
1420 };
1421 YYDEBUG(93, *YYCURSOR);
1422 YYFILL(2);
1423 yych = *YYCURSOR;
1424 if (yybm[0+yych] & 8) {
1425 goto yy98;
1426 }
1427 if (yych <= '/') {
1428 if (yych <= '"') {
1429 if (yych <= '\f') {
1430 if (yych <= 0x08) goto yy95;
1431 if (yych <= '\n') goto yy100;
1432 } else {
1433 if (yych <= '\r') goto yy100;
1434 if (yych >= '"') goto yy102;
1435 }
1436 } else {
1437 if (yych <= '&') {
1438 if (yych == '$') goto yy104;
1439 } else {
1440 if (yych <= '\'') goto yy105;
1441 if (yych <= ',') goto yy95;
1442 if (yych <= '.') goto yy106;
1443 }
1444 }
1445 } else {
1446 if (yych <= '[') {
1447 if (yych <= ';') {
1448 if (yych <= '9') goto yy107;
1449 if (yych >= ';') goto yy100;
1450 } else {
1451 if (yych <= '@') goto yy95;
1452 if (yych <= 'Z') goto yy110;
1453 }
1454 } else {
1455 if (yych <= '^') {
1456 if (yych <= '\\') goto yy113;
1457 if (yych <= ']') goto yy114;
1458 } else {
1459 if (yych == '`') goto yy95;
1460 if (yych <= 'z') goto yy110;
1461 }
1462 }
1463 }
1464 yy95:
1465 YYDEBUG(95, *YYCURSOR);
1466 yyaccept = 0;
1467 YYMARKER = ++YYCURSOR;
1468 YYFILL(1);
1469 yych = *YYCURSOR;
1470 yy96:
1471 YYDEBUG(96, *YYCURSOR);
1472 if (yybm[0+yych] & 4) {
1473 goto yy95;
1474 }
1475 if (yych <= '"') goto yy97;
1476 if (yych <= '$') goto yy117;
1477 if (yych <= ';') goto yy97;
1478 if (yych <= '\\') goto yy113;
1479 yy97:
1480 YYDEBUG(97, *YYCURSOR);
1481 yyleng = YYCURSOR - SCNG(yy_text);
1482 { /* Get rest as section/offset value */
1483 RETURN_TOKEN(TC_STRING, yytext, yyleng);
1484 }
1485 yy98:
1486 YYDEBUG(98, *YYCURSOR);
1487 yyaccept = 0;
1488 YYMARKER = ++YYCURSOR;
1489 YYFILL(1);
1490 yych = *YYCURSOR;
1491 YYDEBUG(99, *YYCURSOR);
1492 if (yybm[0+yych] & 8) {
1493 goto yy98;
1494 }
1495 if (yych <= '$') {
1496 if (yych <= '\r') {
1497 if (yych <= 0x08) goto yy95;
1498 if (yych <= '\n') goto yy97;
1499 if (yych <= '\f') goto yy95;
1500 goto yy97;
1501 } else {
1502 if (yych == '"') goto yy102;
1503 if (yych <= '#') goto yy95;
1504 goto yy117;
1505 }
1506 } else {
1507 if (yych <= ';') {
1508 if (yych == '\'') goto yy97;
1509 if (yych <= ':') goto yy95;
1510 goto yy97;
1511 } else {
1512 if (yych <= '[') goto yy95;
1513 if (yych <= '\\') goto yy113;
1514 if (yych <= ']') goto yy97;
1515 goto yy95;
1516 }
1517 }
1518 yy100:
1519 YYDEBUG(100, *YYCURSOR);
1520 ++YYCURSOR;
1521 yy101:
1522 YYDEBUG(101, *YYCURSOR);
1523 yyleng = YYCURSOR - SCNG(yy_text);
1524 {
1525 return 0;
1526 }
1527 yy102:
1528 YYDEBUG(102, *YYCURSOR);
1529 ++YYCURSOR;
1530 YYDEBUG(103, *YYCURSOR);
1531 yyleng = YYCURSOR - SCNG(yy_text);
1532 { /* Double quoted '"' string start */
1533 yy_push_state(ST_DOUBLE_QUOTES);
1534 return '"';
1535 }
1536 yy104:
1537 YYDEBUG(104, *YYCURSOR);
1538 yych = *++YYCURSOR;
1539 if (yych <= '\\') {
1540 if (yych <= 0x00) goto yy101;
1541 if (yych <= '[') goto yy95;
1542 goto yy119;
1543 } else {
1544 if (yych == '{') goto yy121;
1545 goto yy95;
1546 }
1547 yy105:
1548 YYDEBUG(105, *YYCURSOR);
1549 yych = *++YYCURSOR;
1550 if (yybm[0+yych] & 128) {
1551 goto yy123;
1552 }
1553 goto yy101;
1554 yy106:
1555 YYDEBUG(106, *YYCURSOR);
1556 yyaccept = 0;
1557 yych = *(YYMARKER = ++YYCURSOR);
1558 if (yych <= '/') goto yy96;
1559 if (yych <= '9') goto yy125;
1560 goto yy96;
1561 yy107:
1562 YYDEBUG(107, *YYCURSOR);
1563 yyaccept = 1;
1564 YYMARKER = ++YYCURSOR;
1565 YYFILL(1);
1566 yych = *YYCURSOR;
1567 YYDEBUG(108, *YYCURSOR);
1568 if (yybm[0+yych] & 16) {
1569 goto yy107;
1570 }
1571 if (yych <= '&') {
1572 if (yych <= '\r') {
1573 if (yych == '\n') goto yy109;
1574 if (yych <= '\f') goto yy95;
1575 } else {
1576 if (yych <= '"') {
1577 if (yych <= '!') goto yy95;
1578 } else {
1579 if (yych == '$') goto yy117;
1580 goto yy95;
1581 }
1582 }
1583 } else {
1584 if (yych <= ':') {
1585 if (yych <= '\'') goto yy109;
1586 if (yych == '.') goto yy125;
1587 goto yy95;
1588 } else {
1589 if (yych <= '[') {
1590 if (yych >= '<') goto yy95;
1591 } else {
1592 if (yych <= '\\') goto yy113;
1593 if (yych >= '^') goto yy95;
1594 }
1595 }
1596 }
1597 yy109:
1598 YYDEBUG(109, *YYCURSOR);
1599 yyleng = YYCURSOR - SCNG(yy_text);
1600 { /* Get number option value as string */
1601 RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
1602 }
1603 yy110:
1604 YYDEBUG(110, *YYCURSOR);
1605 yyaccept = 2;
1606 YYMARKER = ++YYCURSOR;
1607 YYFILL(1);
1608 yych = *YYCURSOR;
1609 YYDEBUG(111, *YYCURSOR);
1610 if (yybm[0+yych] & 32) {
1611 goto yy110;
1612 }
1613 if (yych <= '$') {
1614 if (yych <= '\r') {
1615 if (yych == '\n') goto yy112;
1616 if (yych <= '\f') goto yy95;
1617 } else {
1618 if (yych == '"') goto yy112;
1619 if (yych <= '#') goto yy95;
1620 goto yy117;
1621 }
1622 } else {
1623 if (yych <= ';') {
1624 if (yych == '\'') goto yy112;
1625 if (yych <= ':') goto yy95;
1626 } else {
1627 if (yych <= '[') goto yy95;
1628 if (yych <= '\\') goto yy113;
1629 if (yych >= '^') goto yy95;
1630 }
1631 }
1632 yy112:
1633 YYDEBUG(112, *YYCURSOR);
1634 yyleng = YYCURSOR - SCNG(yy_text);
1635 { /* Get constant option value */
1636 RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
1637 }
1638 yy113:
1639 YYDEBUG(113, *YYCURSOR);
1640 ++YYCURSOR;
1641 YYFILL(1);
1642 yych = *YYCURSOR;
1643 goto yy95;
1644 yy114:
1645 YYDEBUG(114, *YYCURSOR);
1646 ++YYCURSOR;
1647 YYFILL(2);
1648 yych = *YYCURSOR;
1649 YYDEBUG(115, *YYCURSOR);
1650 if (yych <= '\f') {
1651 if (yych <= 0x08) goto yy116;
1652 if (yych <= '\t') goto yy114;
1653 if (yych <= '\n') goto yy127;
1654 } else {
1655 if (yych <= '\r') goto yy128;
1656 if (yych == ' ') goto yy114;
1657 }
1658 yy116:
1659 YYDEBUG(116, *YYCURSOR);
1660 yyleng = YYCURSOR - SCNG(yy_text);
1661 { /* End of section */
1662 BEGIN(INITIAL);
1663 SCNG(lineno)++;
1664 return ']';
1665 }
1666 yy117:
1667 YYDEBUG(117, *YYCURSOR);
1668 ++YYCURSOR;
1669 YYFILL(1);
1670 yych = *YYCURSOR;
1671 if (yych <= '\\') {
1672 if (yych <= 0x00) goto yy118;
1673 if (yych <= '[') goto yy95;
1674 goto yy119;
1675 } else {
1676 if (yych != '{') goto yy95;
1677 }
1678 yy118:
1679 YYDEBUG(118, *YYCURSOR);
1680 YYCURSOR = YYMARKER;
1681 if (yyaccept <= 1) {
1682 if (yyaccept == 0) {
1683 goto yy97;
1684 } else {
1685 goto yy109;
1686 }
1687 } else {
1688 goto yy112;
1689 }
1690 yy119:
1691 YYDEBUG(119, *YYCURSOR);
1692 ++YYCURSOR;
1693 YYFILL(1);
1694 yych = *YYCURSOR;
1695 YYDEBUG(120, *YYCURSOR);
1696 if (yybm[0+yych] & 64) {
1697 goto yy119;
1698 }
1699 goto yy95;
1700 yy121:
1701 YYDEBUG(121, *YYCURSOR);
1702 ++YYCURSOR;
1703 YYDEBUG(122, *YYCURSOR);
1704 yyleng = YYCURSOR - SCNG(yy_text);
1705 { /* Variable start */
1706 yy_push_state(ST_VARNAME);
1707 return TC_DOLLAR_CURLY;
1708 }
1709 yy123:
1710 YYDEBUG(123, *YYCURSOR);
1711 ++YYCURSOR;
1712 YYFILL(1);
1713 yych = *YYCURSOR;
1714 YYDEBUG(124, *YYCURSOR);
1715 if (yybm[0+yych] & 128) {
1716 goto yy123;
1717 }
1718 goto yy129;
1719 yy125:
1720 YYDEBUG(125, *YYCURSOR);
1721 yyaccept = 1;
1722 YYMARKER = ++YYCURSOR;
1723 YYFILL(1);
1724 yych = *YYCURSOR;
1725 YYDEBUG(126, *YYCURSOR);
1726 if (yych <= '&') {
1727 if (yych <= '\r') {
1728 if (yych == '\n') goto yy109;
1729 if (yych <= '\f') goto yy95;
1730 goto yy109;
1731 } else {
1732 if (yych <= '"') {
1733 if (yych <= '!') goto yy95;
1734 goto yy109;
1735 } else {
1736 if (yych == '$') goto yy117;
1737 goto yy95;
1738 }
1739 }
1740 } else {
1741 if (yych <= ':') {
1742 if (yych <= '\'') goto yy109;
1743 if (yych <= '/') goto yy95;
1744 if (yych <= '9') goto yy125;
1745 goto yy95;
1746 } else {
1747 if (yych <= '[') {
1748 if (yych <= ';') goto yy109;
1749 goto yy95;
1750 } else {
1751 if (yych <= '\\') goto yy113;
1752 if (yych <= ']') goto yy109;
1753 goto yy95;
1754 }
1755 }
1756 }
1757 yy127:
1758 YYDEBUG(127, *YYCURSOR);
1759 ++YYCURSOR;
1760 goto yy116;
1761 yy128:
1762 YYDEBUG(128, *YYCURSOR);
1763 yych = *++YYCURSOR;
1764 if (yych == '\n') goto yy127;
1765 goto yy116;
1766 yy129:
1767 YYDEBUG(129, *YYCURSOR);
1768 ++YYCURSOR;
1769 YYDEBUG(130, *YYCURSOR);
1770 yyleng = YYCURSOR - SCNG(yy_text);
1771 { /* Raw string */
1772 /* Eat leading and trailing single quotes */
1773 if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
1774 SCNG(yy_text)++;
1775 yyleng = yyleng - 2;
1776 }
1777 RETURN_TOKEN(TC_RAW, yytext, yyleng);
1778 }
1779 }
1780 /* *********************************** */
1781 yyc_ST_VALUE:
1782 {
1783 static const unsigned char yybm[] = {
1784 80, 82, 82, 82, 82, 82, 82, 82,
1785 82, 84, 64, 82, 82, 64, 82, 82,
1786 82, 82, 82, 82, 82, 82, 82, 82,
1787 82, 82, 82, 82, 82, 82, 82, 82,
1788 84, 80, 80, 82, 208, 82, 80, 16,
1789 80, 80, 82, 82, 82, 82, 82, 82,
1790 122, 122, 122, 122, 122, 122, 122, 122,
1791 122, 122, 82, 80, 82, 80, 82, 82,
1792 82, 114, 114, 114, 114, 114, 114, 114,
1793 114, 114, 114, 114, 114, 114, 114, 114,
1794 114, 114, 114, 114, 114, 114, 114, 114,
1795 114, 114, 114, 82, 82, 82, 80, 114,
1796 82, 114, 114, 114, 114, 114, 114, 114,
1797 114, 114, 114, 114, 114, 114, 114, 114,
1798 114, 114, 114, 114, 114, 114, 114, 114,
1799 114, 114, 114, 82, 80, 82, 80, 82,
1800 82, 82, 82, 82, 82, 82, 82, 82,
1801 82, 82, 82, 82, 82, 82, 82, 82,
1802 82, 82, 82, 82, 82, 82, 82, 82,
1803 82, 82, 82, 82, 82, 82, 82, 82,
1804 82, 82, 82, 82, 82, 82, 82, 82,
1805 82, 82, 82, 82, 82, 82, 82, 82,
1806 82, 82, 82, 82, 82, 82, 82, 82,
1807 82, 82, 82, 82, 82, 82, 82, 82,
1808 82, 82, 82, 82, 82, 82, 82, 82,
1809 82, 82, 82, 82, 82, 82, 82, 82,
1810 82, 82, 82, 82, 82, 82, 82, 82,
1811 82, 82, 82, 82, 82, 82, 82, 82,
1812 82, 82, 82, 82, 82, 82, 82, 82,
1813 82, 82, 82, 82, 82, 82, 82, 82,
1814 82, 82, 82, 82, 82, 82, 82, 82,
1815 82, 82, 82, 82, 82, 82, 82, 82,
1816 };
1817 YYDEBUG(131, *YYCURSOR);
1818 YYFILL(6);
1819 yych = *YYCURSOR;
1820 if (yybm[0+yych] & 4) {
1821 goto yy138;
1822 }
1823 switch (yych) {
1824 case 0x00: goto yy133;
1825 case '\t':
1826 case '\n': goto yy141;
1827 case '\r': goto yy143;
1828 case ' ':
1829 case '!':
1830 case '&':
1831 case '(':
1832 case ')':
1833 case '^':
1834 case '|':
1835 case '~': goto yy144;
1836 case '"': goto yy147;
1837 case '$': goto yy149;
1838 case '\'': goto yy150;
1839 case '-':
1840 case '.': goto yy151;
1841 case '0':
1842 case '1':
1843 case '2':
1844 case '3':
1845 case '4':
1846 case '5':
1847 case '6':
1848 case '7':
1849 case '8':
1850 case '9': goto yy152;
1851 case ';': goto yy155;
1852 case '=': goto yy157;
1853 case 'A':
1854 case 'B':
1855 case 'C':
1856 case 'D':
1857 case 'E':
1858 case 'G':
1859 case 'H':
1860 case 'I':
1861 case 'J':
1862 case 'K':
1863 case 'L':
1864 case 'M':
1865 case 'P':
1866 case 'Q':
1867 case 'R':
1868 case 'S':
1869 case 'U':
1870 case 'V':
1871 case 'W':
1872 case 'X':
1873 case 'Z':
1874 case '_':
1875 case 'a':
1876 case 'b':
1877 case 'c':
1878 case 'd':
1879 case 'e':
1880 case 'g':
1881 case 'h':
1882 case 'i':
1883 case 'j':
1884 case 'k':
1885 case 'l':
1886 case 'm':
1887 case 'p':
1888 case 'q':
1889 case 'r':
1890 case 's':
1891 case 'u':
1892 case 'v':
1893 case 'w':
1894 case 'x':
1895 case 'z': goto yy159;
1896 case 'F':
1897 case 'f': goto yy162;
1898 case 'N':
1899 case 'n': goto yy163;
1900 case 'O':
1901 case 'o': goto yy164;
1902 case 'T':
1903 case 't': goto yy165;
1904 case 'Y':
1905 case 'y': goto yy166;
1906 default: goto yy135;
1907 }
1908 yy133:
1909 YYDEBUG(133, *YYCURSOR);
1910 ++YYCURSOR;
1911 yy134:
1912 YYDEBUG(134, *YYCURSOR);
1913 yyleng = YYCURSOR - SCNG(yy_text);
1914 { /* End of option value (if EOF is reached before EOL */
1915 BEGIN(INITIAL);
1916 return END_OF_LINE;
1917 }
1918 yy135:
1919 YYDEBUG(135, *YYCURSOR);
1920 yyaccept = 0;
1921 YYMARKER = ++YYCURSOR;
1922 YYFILL(1);
1923 yych = *YYCURSOR;
1924 yy136:
1925 YYDEBUG(136, *YYCURSOR);
1926 if (yybm[0+yych] & 2) {
1927 goto yy135;
1928 }
1929 if (yych <= '"') goto yy137;
1930 if (yych <= '$') goto yy167;
1931 yy137:
1932 YYDEBUG(137, *YYCURSOR);
1933 yyleng = YYCURSOR - SCNG(yy_text);
1934 { /* Get everything else as option/offset value */
1935 RETURN_TOKEN(TC_STRING, yytext, yyleng);
1936 }
1937 yy138:
1938 YYDEBUG(138, *YYCURSOR);
1939 ++YYCURSOR;
1940 YYFILL(2);
1941 yych = *YYCURSOR;
1942 YYDEBUG(139, *YYCURSOR);
1943 if (yybm[0+yych] & 4) {
1944 goto yy138;
1945 }
1946 if (yych <= '\r') {
1947 if (yych <= 0x08) goto yy140;
1948 if (yych <= '\n') goto yy141;
1949 if (yych >= '\r') goto yy143;
1950 } else {
1951 if (yych <= '"') {
1952 if (yych >= '"') goto yy147;
1953 } else {
1954 if (yych == ';') goto yy155;
1955 }
1956 }
1957 yy140:
1958 YYDEBUG(140, *YYCURSOR);
1959 yyleng = YYCURSOR - SCNG(yy_text);
1960 {
1961 RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng);
1962 }
1963 yy141:
1964 YYDEBUG(141, *YYCURSOR);
1965 ++YYCURSOR;
1966 yy142:
1967 YYDEBUG(142, *YYCURSOR);
1968 yyleng = YYCURSOR - SCNG(yy_text);
1969 { /* End of option value */
1970 BEGIN(INITIAL);
1971 SCNG(lineno)++;
1972 return END_OF_LINE;
1973 }
1974 yy143:
1975 YYDEBUG(143, *YYCURSOR);
1976 yych = *++YYCURSOR;
1977 if (yych == '\n') goto yy141;
1978 goto yy142;
1979 yy144:
1980 YYDEBUG(144, *YYCURSOR);
1981 ++YYCURSOR;
1982 YYFILL(1);
1983 yych = *YYCURSOR;
1984 YYDEBUG(145, *YYCURSOR);
1985 if (yych == '\t') goto yy144;
1986 if (yych == ' ') goto yy144;
1987 YYDEBUG(146, *YYCURSOR);
1988 yyleng = YYCURSOR - SCNG(yy_text);
1989 { /* Boolean operators */
1990 return yytext[0];
1991 }
1992 yy147:
1993 YYDEBUG(147, *YYCURSOR);
1994 ++YYCURSOR;
1995 YYDEBUG(148, *YYCURSOR);
1996 yyleng = YYCURSOR - SCNG(yy_text);
1997 { /* Double quoted '"' string start */
1998 yy_push_state(ST_DOUBLE_QUOTES);
1999 return '"';
2000 }
2001 yy149:
2002 YYDEBUG(149, *YYCURSOR);
2003 yych = *++YYCURSOR;
2004 if (yych <= '\\') {
2005 if (yych <= 0x00) goto yy134;
2006 if (yych <= '[') goto yy135;
2007 goto yy169;
2008 } else {
2009 if (yych == '{') goto yy170;
2010 goto yy135;
2011 }
2012 yy150:
2013 YYDEBUG(150, *YYCURSOR);
2014 yych = *++YYCURSOR;
2015 if (yybm[0+yych] & 64) {
2016 goto yy172;
2017 }
2018 goto yy134;
2019 yy151:
2020 YYDEBUG(151, *YYCURSOR);
2021 yyaccept = 0;
2022 yych = *(YYMARKER = ++YYCURSOR);
2023 if (yych <= '/') goto yy136;
2024 if (yych <= '9') goto yy174;
2025 goto yy136;
2026 yy152:
2027 YYDEBUG(152, *YYCURSOR);
2028 yyaccept = 1;
2029 YYMARKER = ++YYCURSOR;
2030 YYFILL(1);
2031 yych = *YYCURSOR;
2032 YYDEBUG(153, *YYCURSOR);
2033 if (yybm[0+yych] & 8) {
2034 goto yy152;
2035 }
2036 if (yych <= '-') {
2037 if (yych <= 0x1F) {
2038 if (yych <= '\n') {
2039 if (yych <= 0x00) goto yy154;
2040 if (yych <= 0x08) goto yy135;
2041 } else {
2042 if (yych != '\r') goto yy135;
2043 }
2044 } else {
2045 if (yych <= '$') {
2046 if (yych <= '"') goto yy154;
2047 if (yych <= '#') goto yy135;
2048 goto yy167;
2049 } else {
2050 if (yych <= '%') goto yy135;
2051 if (yych >= '*') goto yy135;
2052 }
2053 }
2054 } else {
2055 if (yych <= ']') {
2056 if (yych <= ';') {
2057 if (yych <= '.') goto yy174;
2058 if (yych <= ':') goto yy135;
2059 } else {
2060 if (yych != '=') goto yy135;
2061 }
2062 } else {
2063 if (yych <= '|') {
2064 if (yych <= '^') goto yy154;
2065 if (yych <= '{') goto yy135;
2066 } else {
2067 if (yych != '~') goto yy135;
2068 }
2069 }
2070 }
2071 yy154:
2072 YYDEBUG(154, *YYCURSOR);
2073 yyleng = YYCURSOR - SCNG(yy_text);
2074 { /* Get number option value as string */
2075 RETURN_TOKEN(TC_NUMBER, yytext, yyleng);
2076 }
2077 yy155:
2078 YYDEBUG(155, *YYCURSOR);
2079 ++YYCURSOR;
2080 YYFILL(2);
2081 yych = *YYCURSOR;
2082 YYDEBUG(156, *YYCURSOR);
2083 if (yybm[0+yych] & 16) {
2084 goto yy155;
2085 }
2086 if (yych <= '\n') goto yy176;
2087 goto yy178;
2088 yy157:
2089 YYDEBUG(157, *YYCURSOR);
2090 ++YYCURSOR;
2091 YYDEBUG(158, *YYCURSOR);
2092 yyleng = YYCURSOR - SCNG(yy_text);
2093 { /* Make = used in option value to trigger error */
2094 yyless(0);
2095 BEGIN(INITIAL);
2096 return END_OF_LINE;
2097 }
2098 yy159:
2099 YYDEBUG(159, *YYCURSOR);
2100 yyaccept = 2;
2101 YYMARKER = ++YYCURSOR;
2102 YYFILL(1);
2103 yych = *YYCURSOR;
2104 YYDEBUG(160, *YYCURSOR);
2105 if (yybm[0+yych] & 32) {
2106 goto yy159;
2107 }
2108 if (yych <= ')') {
2109 if (yych <= '\r') {
2110 if (yych <= 0x08) {
2111 if (yych >= 0x01) goto yy135;
2112 } else {
2113 if (yych <= '\n') goto yy161;
2114 if (yych <= '\f') goto yy135;
2115 }
2116 } else {
2117 if (yych <= '#') {
2118 if (yych <= 0x1F) goto yy135;
2119 if (yych >= '#') goto yy135;
2120 } else {
2121 if (yych <= '$') goto yy167;
2122 if (yych <= '%') goto yy135;
2123 }
2124 }
2125 } else {
2126 if (yych <= ']') {
2127 if (yych <= ';') {
2128 if (yych <= ':') goto yy135;
2129 } else {
2130 if (yych != '=') goto yy135;
2131 }
2132 } else {
2133 if (yych <= '|') {
2134 if (yych <= '^') goto yy161;
2135 if (yych <= '{') goto yy135;
2136 } else {
2137 if (yych != '~') goto yy135;
2138 }
2139 }
2140 }
2141 yy161:
2142 YYDEBUG(161, *YYCURSOR);
2143 yyleng = YYCURSOR - SCNG(yy_text);
2144 { /* Get constant option value */
2145 RETURN_TOKEN(TC_CONSTANT, yytext, yyleng);
2146 }
2147 yy162:
2148 YYDEBUG(162, *YYCURSOR);
2149 yyaccept = 2;
2150 yych = *(YYMARKER = ++YYCURSOR);
2151 if (yych <= '<') {
2152 if (yych <= '"') {
2153 if (yych <= '\n') {
2154 if (yych <= 0x00) goto yy161;
2155 if (yych <= 0x08) goto yy136;
2156 goto yy161;
2157 } else {
2158 if (yych == '\r') goto yy161;
2159 if (yych <= 0x1F) goto yy136;
2160 goto yy161;
2161 }
2162 } else {
2163 if (yych <= '/') {
2164 if (yych <= '%') goto yy136;
2165 if (yych <= ')') goto yy161;
2166 goto yy136;
2167 } else {
2168 if (yych <= '9') goto yy159;
2169 if (yych == ';') goto yy161;
2170 goto yy136;
2171 }
2172 }
2173 } else {
2174 if (yych <= '_') {
2175 if (yych <= 'A') {
2176 if (yych <= '=') goto yy161;
2177 if (yych <= '@') goto yy136;
2178 goto yy179;
2179 } else {
2180 if (yych <= 'Z') goto yy159;
2181 if (yych <= ']') goto yy136;
2182 if (yych <= '^') goto yy161;
2183 goto yy159;
2184 }
2185 } else {
2186 if (yych <= '{') {
2187 if (yych <= '`') goto yy136;
2188 if (yych <= 'a') goto yy179;
2189 if (yych <= 'z') goto yy159;
2190 goto yy136;
2191 } else {
2192 if (yych == '}') goto yy136;
2193 if (yych <= '~') goto yy161;
2194 goto yy136;
2195 }
2196 }
2197 }
2198 yy163:
2199 YYDEBUG(163, *YYCURSOR);
2200 yyaccept = 2;
2201 yych = *(YYMARKER = ++YYCURSOR);
2202 if (yych <= 'N') {
2203 if (yych <= '%') {
2204 if (yych <= '\f') {
2205 if (yych <= 0x00) goto yy161;
2206 if (yych <= 0x08) goto yy136;
2207 if (yych <= '\n') goto yy161;
2208 goto yy136;
2209 } else {
2210 if (yych <= '\r') goto yy161;
2211 if (yych <= 0x1F) goto yy136;
2212 if (yych <= '"') goto yy161;
2213 goto yy136;
2214 }
2215 } else {
2216 if (yych <= ':') {
2217 if (yych <= ')') goto yy161;
2218 if (yych <= '/') goto yy136;
2219 if (yych <= '9') goto yy159;
2220 goto yy136;
2221 } else {
2222 if (yych <= '<') {
2223 if (yych <= ';') goto yy161;
2224 goto yy136;
2225 } else {
2226 if (yych <= '=') goto yy161;
2227 if (yych <= '@') goto yy136;
2228 goto yy159;
2229 }
2230 }
2231 }
2232 } else {
2233 if (yych <= 'n') {
2234 if (yych <= 'Z') {
2235 if (yych <= 'O') goto yy180;
2236 if (yych == 'U') goto yy182;
2237 goto yy159;
2238 } else {
2239 if (yych <= '^') {
2240 if (yych <= ']') goto yy136;
2241 goto yy161;
2242 } else {
2243 if (yych == '`') goto yy136;
2244 goto yy159;
2245 }
2246 }
2247 } else {
2248 if (yych <= 'z') {
2249 if (yych <= 'o') goto yy180;
2250 if (yych == 'u') goto yy182;
2251 goto yy159;
2252 } else {
2253 if (yych <= '|') {
2254 if (yych <= '{') goto yy136;
2255 goto yy161;
2256 } else {
2257 if (yych == '~') goto yy161;
2258 goto yy136;
2259 }
2260 }
2261 }
2262 }
2263 yy164:
2264 YYDEBUG(164, *YYCURSOR);
2265 yyaccept = 2;
2266 yych = *(YYMARKER = ++YYCURSOR);
2267 if (yych <= 'E') {
2268 if (yych <= '%') {
2269 if (yych <= '\f') {
2270 if (yych <= 0x00) goto yy161;
2271 if (yych <= 0x08) goto yy136;
2272 if (yych <= '\n') goto yy161;
2273 goto yy136;
2274 } else {
2275 if (yych <= '\r') goto yy161;
2276 if (yych <= 0x1F) goto yy136;
2277 if (yych <= '"') goto yy161;
2278 goto yy136;
2279 }
2280 } else {
2281 if (yych <= ':') {
2282 if (yych <= ')') goto yy161;
2283 if (yych <= '/') goto yy136;
2284 if (yych <= '9') goto yy159;
2285 goto yy136;
2286 } else {
2287 if (yych <= '<') {
2288 if (yych <= ';') goto yy161;
2289 goto yy136;
2290 } else {
2291 if (yych <= '=') goto yy161;
2292 if (yych <= '@') goto yy136;
2293 goto yy159;
2294 }
2295 }
2296 }
2297 } else {
2298 if (yych <= 'e') {
2299 if (yych <= 'Z') {
2300 if (yych <= 'F') goto yy183;
2301 if (yych == 'N') goto yy184;
2302 goto yy159;
2303 } else {
2304 if (yych <= '^') {
2305 if (yych <= ']') goto yy136;
2306 goto yy161;
2307 } else {
2308 if (yych == '`') goto yy136;
2309 goto yy159;
2310 }
2311 }
2312 } else {
2313 if (yych <= 'z') {
2314 if (yych <= 'f') goto yy183;
2315 if (yych == 'n') goto yy184;
2316 goto yy159;
2317 } else {
2318 if (yych <= '|') {
2319 if (yych <= '{') goto yy136;
2320 goto yy161;
2321 } else {
2322 if (yych == '~') goto yy161;
2323 goto yy136;
2324 }
2325 }
2326 }
2327 }
2328 yy165:
2329 YYDEBUG(165, *YYCURSOR);
2330 yyaccept = 2;
2331 yych = *(YYMARKER = ++YYCURSOR);
2332 if (yych <= '=') {
2333 if (yych <= '"') {
2334 if (yych <= '\n') {
2335 if (yych <= 0x00) goto yy161;
2336 if (yych <= 0x08) goto yy136;
2337 goto yy161;
2338 } else {
2339 if (yych == '\r') goto yy161;
2340 if (yych <= 0x1F) goto yy136;
2341 goto yy161;
2342 }
2343 } else {
2344 if (yych <= '9') {
2345 if (yych <= '%') goto yy136;
2346 if (yych <= ')') goto yy161;
2347 if (yych <= '/') goto yy136;
2348 goto yy159;
2349 } else {
2350 if (yych == ';') goto yy161;
2351 if (yych <= '<') goto yy136;
2352 goto yy161;
2353 }
2354 }
2355 } else {
2356 if (yych <= '`') {
2357 if (yych <= 'Z') {
2358 if (yych <= '@') goto yy136;
2359 if (yych == 'R') goto yy186;
2360 goto yy159;
2361 } else {
2362 if (yych <= ']') goto yy136;
2363 if (yych <= '^') goto yy161;
2364 if (yych <= '_') goto yy159;
2365 goto yy136;
2366 }
2367 } else {
2368 if (yych <= '{') {
2369 if (yych == 'r') goto yy186;
2370 if (yych <= 'z') goto yy159;
2371 goto yy136;
2372 } else {
2373 if (yych == '}') goto yy136;
2374 if (yych <= '~') goto yy161;
2375 goto yy136;
2376 }
2377 }
2378 }
2379 yy166:
2380 YYDEBUG(166, *YYCURSOR);
2381 yyaccept = 2;
2382 yych = *(YYMARKER = ++YYCURSOR);
2383 if (yych <= '=') {
2384 if (yych <= '"') {
2385 if (yych <= '\n') {
2386 if (yych <= 0x00) goto yy161;
2387 if (yych <= 0x08) goto yy136;
2388 goto yy161;
2389 } else {
2390 if (yych == '\r') goto yy161;
2391 if (yych <= 0x1F) goto yy136;
2392 goto yy161;
2393 }
2394 } else {
2395 if (yych <= '9') {
2396 if (yych <= '%') goto yy136;
2397 if (yych <= ')') goto yy161;
2398 if (yych <= '/') goto yy136;
2399 goto yy159;
2400 } else {
2401 if (yych == ';') goto yy161;
2402 if (yych <= '<') goto yy136;
2403 goto yy161;
2404 }
2405 }
2406 } else {
2407 if (yych <= '`') {
2408 if (yych <= 'Z') {
2409 if (yych <= '@') goto yy136;
2410 if (yych == 'E') goto yy187;
2411 goto yy159;
2412 } else {
2413 if (yych <= ']') goto yy136;
2414 if (yych <= '^') goto yy161;
2415 if (yych <= '_') goto yy159;
2416 goto yy136;
2417 }
2418 } else {
2419 if (yych <= '{') {
2420 if (yych == 'e') goto yy187;
2421 if (yych <= 'z') goto yy159;
2422 goto yy136;
2423 } else {
2424 if (yych == '}') goto yy136;
2425 if (yych <= '~') goto yy161;
2426 goto yy136;
2427 }
2428 }
2429 }
2430 yy167:
2431 YYDEBUG(167, *YYCURSOR);
2432 ++YYCURSOR;
2433 YYFILL(1);
2434 yych = *YYCURSOR;
2435 if (yych <= '\\') {
2436 if (yych <= 0x00) goto yy168;
2437 if (yych <= '[') goto yy135;
2438 goto yy169;
2439 } else {
2440 if (yych != '{') goto yy135;
2441 }
2442 yy168:
2443 YYDEBUG(168, *YYCURSOR);
2444 YYCURSOR = YYMARKER;
2445 if (yyaccept <= 2) {
2446 if (yyaccept <= 1) {
2447 if (yyaccept == 0) {
2448 goto yy137;
2449 } else {
2450 goto yy154;
2451 }
2452 } else {
2453 goto yy161;
2454 }
2455 } else {
2456 if (yyaccept <= 4) {
2457 if (yyaccept == 3) {
2458 goto yy181;
2459 } else {
2460 goto yy185;
2461 }
2462 } else {
2463 goto yy202;
2464 }
2465 }
2466 yy169:
2467 YYDEBUG(169, *YYCURSOR);
2468 ++YYCURSOR;
2469 YYFILL(1);
2470 yych = *YYCURSOR;
2471 if (yybm[0+yych] & 128) {
2472 goto yy188;
2473 }
2474 goto yy135;
2475 yy170:
2476 YYDEBUG(170, *YYCURSOR);
2477 ++YYCURSOR;
2478 YYDEBUG(171, *YYCURSOR);
2479 yyleng = YYCURSOR - SCNG(yy_text);
2480 { /* Variable start */
2481 yy_push_state(ST_VARNAME);
2482 return TC_DOLLAR_CURLY;
2483 }
2484 yy172:
2485 YYDEBUG(172, *YYCURSOR);
2486 ++YYCURSOR;
2487 YYFILL(1);
2488 yych = *YYCURSOR;
2489 YYDEBUG(173, *YYCURSOR);
2490 if (yybm[0+yych] & 64) {
2491 goto yy172;
2492 }
2493 goto yy190;
2494 yy174:
2495 YYDEBUG(174, *YYCURSOR);
2496 yyaccept = 1;
2497 YYMARKER = ++YYCURSOR;
2498 YYFILL(1);
2499 yych = *YYCURSOR;
2500 YYDEBUG(175, *YYCURSOR);
2501 if (yych <= '/') {
2502 if (yych <= 0x1F) {
2503 if (yych <= '\n') {
2504 if (yych <= 0x00) goto yy154;
2505 if (yych <= 0x08) goto yy135;
2506 goto yy154;
2507 } else {
2508 if (yych == '\r') goto yy154;
2509 goto yy135;
2510 }
2511 } else {
2512 if (yych <= '$') {
2513 if (yych <= '"') goto yy154;
2514 if (yych <= '#') goto yy135;
2515 goto yy167;
2516 } else {
2517 if (yych <= '%') goto yy135;
2518 if (yych <= ')') goto yy154;
2519 goto yy135;
2520 }
2521 }
2522 } else {
2523 if (yych <= ']') {
2524 if (yych <= ';') {
2525 if (yych <= '9') goto yy174;
2526 if (yych <= ':') goto yy135;
2527 goto yy154;
2528 } else {
2529 if (yych == '=') goto yy154;
2530 goto yy135;
2531 }
2532 } else {
2533 if (yych <= '|') {
2534 if (yych <= '^') goto yy154;
2535 if (yych <= '{') goto yy135;
2536 goto yy154;
2537 } else {
2538 if (yych == '~') goto yy154;
2539 goto yy135;
2540 }
2541 }
2542 }
2543 yy176:
2544 YYDEBUG(176, *YYCURSOR);
2545 ++YYCURSOR;
2546 yy177:
2547 YYDEBUG(177, *YYCURSOR);
2548 yyleng = YYCURSOR - SCNG(yy_text);
2549 { /* Comment */
2550 BEGIN(INITIAL);
2551 SCNG(lineno)++;
2552 return END_OF_LINE;
2553 }
2554 yy178:
2555 YYDEBUG(178, *YYCURSOR);
2556 yych = *++YYCURSOR;
2557 if (yych == '\n') goto yy176;
2558 goto yy177;
2559 yy179:
2560 YYDEBUG(179, *YYCURSOR);
2561 yyaccept = 2;
2562 yych = *(YYMARKER = ++YYCURSOR);
2563 if (yych <= '=') {
2564 if (yych <= '"') {
2565 if (yych <= '\n') {
2566 if (yych <= 0x00) goto yy161;
2567 if (yych <= 0x08) goto yy136;
2568 goto yy161;
2569 } else {
2570 if (yych == '\r') goto yy161;
2571 if (yych <= 0x1F) goto yy136;
2572 goto yy161;
2573 }
2574 } else {
2575 if (yych <= '9') {
2576 if (yych <= '%') goto yy136;
2577 if (yych <= ')') goto yy161;
2578 if (yych <= '/') goto yy136;
2579 goto yy159;
2580 } else {
2581 if (yych == ';') goto yy161;
2582 if (yych <= '<') goto yy136;
2583 goto yy161;
2584 }
2585 }
2586 } else {
2587 if (yych <= '`') {
2588 if (yych <= 'Z') {
2589 if (yych <= '@') goto yy136;
2590 if (yych == 'L') goto yy192;
2591 goto yy159;
2592 } else {
2593 if (yych <= ']') goto yy136;
2594 if (yych <= '^') goto yy161;
2595 if (yych <= '_') goto yy159;
2596 goto yy136;
2597 }
2598 } else {
2599 if (yych <= '{') {
2600 if (yych == 'l') goto yy192;
2601 if (yych <= 'z') goto yy159;
2602 goto yy136;
2603 } else {
2604 if (yych == '}') goto yy136;
2605 if (yych <= '~') goto yy161;
2606 goto yy136;
2607 }
2608 }
2609 }
2610 yy180:
2611 YYDEBUG(180, *YYCURSOR);
2612 yyaccept = 3;
2613 yych = *(YYMARKER = ++YYCURSOR);
2614 if (yych <= '<') {
2615 if (yych <= ' ') {
2616 if (yych <= '\n') {
2617 if (yych <= 0x00) goto yy181;
2618 if (yych <= 0x08) goto yy136;
2619 if (yych <= '\t') goto yy193;
2620 } else {
2621 if (yych == '\r') goto yy181;
2622 if (yych <= 0x1F) goto yy136;
2623 goto yy193;
2624 }
2625 } else {
2626 if (yych <= '/') {
2627 if (yych <= '"') goto yy181;
2628 if (yych <= '%') goto yy136;
2629 if (yych >= '*') goto yy136;
2630 } else {
2631 if (yych <= '9') goto yy159;
2632 if (yych != ';') goto yy136;
2633 }
2634 }
2635 } else {
2636 if (yych <= '_') {
2637 if (yych <= 'N') {
2638 if (yych <= '=') goto yy181;
2639 if (yych <= '@') goto yy136;
2640 if (yych <= 'M') goto yy159;
2641 goto yy195;
2642 } else {
2643 if (yych <= 'Z') goto yy159;
2644 if (yych <= ']') goto yy136;
2645 if (yych >= '_') goto yy159;
2646 }
2647 } else {
2648 if (yych <= 'z') {
2649 if (yych <= '`') goto yy136;
2650 if (yych == 'n') goto yy195;
2651 goto yy159;
2652 } else {
2653 if (yych <= '|') {
2654 if (yych <= '{') goto yy136;
2655 } else {
2656 if (yych != '~') goto yy136;
2657 }
2658 }
2659 }
2660 }
2661 yy181:
2662 YYDEBUG(181, *YYCURSOR);
2663 yyleng = YYCURSOR - SCNG(yy_text);
2664 { /* FALSE value (when used outside option value/offset this causes parse error!)*/
2665 RETURN_TOKEN(BOOL_FALSE, "", 0);
2666 }
2667 yy182:
2668 YYDEBUG(182, *YYCURSOR);
2669 yyaccept = 2;
2670 yych = *(YYMARKER = ++YYCURSOR);
2671 if (yych <= '=') {
2672 if (yych <= '"') {
2673 if (yych <= '\n') {
2674 if (yych <= 0x00) goto yy161;
2675 if (yych <= 0x08) goto yy136;
2676 goto yy161;
2677 } else {
2678 if (yych == '\r') goto yy161;
2679 if (yych <= 0x1F) goto yy136;
2680 goto yy161;
2681 }
2682 } else {
2683 if (yych <= '9') {
2684 if (yych <= '%') goto yy136;
2685 if (yych <= ')') goto yy161;
2686 if (yych <= '/') goto yy136;
2687 goto yy159;
2688 } else {
2689 if (yych == ';') goto yy161;
2690 if (yych <= '<') goto yy136;
2691 goto yy161;
2692 }
2693 }
2694 } else {
2695 if (yych <= '`') {
2696 if (yych <= 'Z') {
2697 if (yych <= '@') goto yy136;
2698 if (yych == 'L') goto yy196;
2699 goto yy159;
2700 } else {
2701 if (yych <= ']') goto yy136;
2702 if (yych <= '^') goto yy161;
2703 if (yych <= '_') goto yy159;
2704 goto yy136;
2705 }
2706 } else {
2707 if (yych <= '{') {
2708 if (yych == 'l') goto yy196;
2709 if (yych <= 'z') goto yy159;
2710 goto yy136;
2711 } else {
2712 if (yych == '}') goto yy136;
2713 if (yych <= '~') goto yy161;
2714 goto yy136;
2715 }
2716 }
2717 }
2718 yy183:
2719 YYDEBUG(183, *YYCURSOR);
2720 yyaccept = 2;
2721 yych = *(YYMARKER = ++YYCURSOR);
2722 if (yych <= '=') {
2723 if (yych <= '"') {
2724 if (yych <= '\n') {
2725 if (yych <= 0x00) goto yy161;
2726 if (yych <= 0x08) goto yy136;
2727 goto yy161;
2728 } else {
2729 if (yych == '\r') goto yy161;
2730 if (yych <= 0x1F) goto yy136;
2731 goto yy161;
2732 }
2733 } else {
2734 if (yych <= '9') {
2735 if (yych <= '%') goto yy136;
2736 if (yych <= ')') goto yy161;
2737 if (yych <= '/') goto yy136;
2738 goto yy159;
2739 } else {
2740 if (yych == ';') goto yy161;
2741 if (yych <= '<') goto yy136;
2742 goto yy161;
2743 }
2744 }
2745 } else {
2746 if (yych <= '`') {
2747 if (yych <= 'Z') {
2748 if (yych <= '@') goto yy136;
2749 if (yych == 'F') goto yy197;
2750 goto yy159;
2751 } else {
2752 if (yych <= ']') goto yy136;
2753 if (yych <= '^') goto yy161;
2754 if (yych <= '_') goto yy159;
2755 goto yy136;
2756 }
2757 } else {
2758 if (yych <= '{') {
2759 if (yych == 'f') goto yy197;
2760 if (yych <= 'z') goto yy159;
2761 goto yy136;
2762 } else {
2763 if (yych == '}') goto yy136;
2764 if (yych <= '~') goto yy161;
2765 goto yy136;
2766 }
2767 }
2768 }
2769 yy184:
2770 YYDEBUG(184, *YYCURSOR);
2771 yyaccept = 4;
2772 yych = *(YYMARKER = ++YYCURSOR);
2773 if (yybm[0+yych] & 32) {
2774 goto yy159;
2775 }
2776 if (yych <= ')') {
2777 if (yych <= '\f') {
2778 if (yych <= 0x08) {
2779 if (yych >= 0x01) goto yy136;
2780 } else {
2781 if (yych <= '\t') goto yy198;
2782 if (yych >= '\v') goto yy136;
2783 }
2784 } else {
2785 if (yych <= ' ') {
2786 if (yych <= '\r') goto yy185;
2787 if (yych <= 0x1F) goto yy136;
2788 goto yy198;
2789 } else {
2790 if (yych <= '"') goto yy185;
2791 if (yych <= '%') goto yy136;
2792 }
2793 }
2794 } else {
2795 if (yych <= ']') {
2796 if (yych <= ';') {
2797 if (yych <= ':') goto yy136;
2798 } else {
2799 if (yych != '=') goto yy136;
2800 }
2801 } else {
2802 if (yych <= '|') {
2803 if (yych <= '^') goto yy185;
2804 if (yych <= '{') goto yy136;
2805 } else {
2806 if (yych != '~') goto yy136;
2807 }
2808 }
2809 }
2810 yy185:
2811 YYDEBUG(185, *YYCURSOR);
2812 yyleng = YYCURSOR - SCNG(yy_text);
2813 { /* TRUE value (when used outside option value/offset this causes parse error!) */
2814 RETURN_TOKEN(BOOL_TRUE, "1", 1);
2815 }
2816 yy186:
2817 YYDEBUG(186, *YYCURSOR);
2818 yyaccept = 2;
2819 yych = *(YYMARKER = ++YYCURSOR);
2820 if (yych <= '=') {
2821 if (yych <= '"') {
2822 if (yych <= '\n') {
2823 if (yych <= 0x00) goto yy161;
2824 if (yych <= 0x08) goto yy136;
2825 goto yy161;
2826 } else {
2827 if (yych == '\r') goto yy161;
2828 if (yych <= 0x1F) goto yy136;
2829 goto yy161;
2830 }
2831 } else {
2832 if (yych <= '9') {
2833 if (yych <= '%') goto yy136;
2834 if (yych <= ')') goto yy161;
2835 if (yych <= '/') goto yy136;
2836 goto yy159;
2837 } else {
2838 if (yych == ';') goto yy161;
2839 if (yych <= '<') goto yy136;
2840 goto yy161;
2841 }
2842 }
2843 } else {
2844 if (yych <= '`') {
2845 if (yych <= 'Z') {
2846 if (yych <= '@') goto yy136;
2847 if (yych == 'U') goto yy200;
2848 goto yy159;
2849 } else {
2850 if (yych <= ']') goto yy136;
2851 if (yych <= '^') goto yy161;
2852 if (yych <= '_') goto yy159;
2853 goto yy136;
2854 }
2855 } else {
2856 if (yych <= '{') {
2857 if (yych == 'u') goto yy200;
2858 if (yych <= 'z') goto yy159;
2859 goto yy136;
2860 } else {
2861 if (yych == '}') goto yy136;
2862 if (yych <= '~') goto yy161;
2863 goto yy136;
2864 }
2865 }
2866 }
2867 yy187:
2868 YYDEBUG(187, *YYCURSOR);
2869 yyaccept = 2;
2870 yych = *(YYMARKER = ++YYCURSOR);
2871 if (yych <= '=') {
2872 if (yych <= '"') {
2873 if (yych <= '\n') {
2874 if (yych <= 0x00) goto yy161;
2875 if (yych <= 0x08) goto yy136;
2876 goto yy161;
2877 } else {
2878 if (yych == '\r') goto yy161;
2879 if (yych <= 0x1F) goto yy136;
2880 goto yy161;
2881 }
2882 } else {
2883 if (yych <= '9') {
2884 if (yych <= '%') goto yy136;
2885 if (yych <= ')') goto yy161;
2886 if (yych <= '/') goto yy136;
2887 goto yy159;
2888 } else {
2889 if (yych == ';') goto yy161;
2890 if (yych <= '<') goto yy136;
2891 goto yy161;
2892 }
2893 }
2894 } else {
2895 if (yych <= '`') {
2896 if (yych <= 'Z') {
2897 if (yych <= '@') goto yy136;
2898 if (yych == 'S') goto yy184;
2899 goto yy159;
2900 } else {
2901 if (yych <= ']') goto yy136;
2902 if (yych <= '^') goto yy161;
2903 if (yych <= '_') goto yy159;
2904 goto yy136;
2905 }
2906 } else {
2907 if (yych <= '{') {
2908 if (yych == 's') goto yy184;
2909 if (yych <= 'z') goto yy159;
2910 goto yy136;
2911 } else {
2912 if (yych == '}') goto yy136;
2913 if (yych <= '~') goto yy161;
2914 goto yy136;
2915 }
2916 }
2917 }
2918 yy188:
2919 YYDEBUG(188, *YYCURSOR);
2920 ++YYCURSOR;
2921 YYFILL(1);
2922 yych = *YYCURSOR;
2923 YYDEBUG(189, *YYCURSOR);
2924 if (yybm[0+yych] & 128) {
2925 goto yy188;
2926 }
2927 if (yych <= 0x00) goto yy137;
2928 if (yych == '\\') goto yy169;
2929 goto yy135;
2930 yy190:
2931 YYDEBUG(190, *YYCURSOR);
2932 ++YYCURSOR;
2933 YYDEBUG(191, *YYCURSOR);
2934 yyleng = YYCURSOR - SCNG(yy_text);
2935 { /* Raw string */
2936 /* Eat leading and trailing single quotes */
2937 if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') {
2938 SCNG(yy_text)++;
2939 yyleng = yyleng - 2;
2940 }
2941 RETURN_TOKEN(TC_RAW, yytext, yyleng);
2942 }
2943 yy192:
2944 YYDEBUG(192, *YYCURSOR);
2945 yyaccept = 2;
2946 yych = *(YYMARKER = ++YYCURSOR);
2947 if (yych <= '=') {
2948 if (yych <= '"') {
2949 if (yych <= '\n') {
2950 if (yych <= 0x00) goto yy161;
2951 if (yych <= 0x08) goto yy136;
2952 goto yy161;
2953 } else {
2954 if (yych == '\r') goto yy161;
2955 if (yych <= 0x1F) goto yy136;
2956 goto yy161;
2957 }
2958 } else {
2959 if (yych <= '9') {
2960 if (yych <= '%') goto yy136;
2961 if (yych <= ')') goto yy161;
2962 if (yych <= '/') goto yy136;
2963 goto yy159;
2964 } else {
2965 if (yych == ';') goto yy161;
2966 if (yych <= '<') goto yy136;
2967 goto yy161;
2968 }
2969 }
2970 } else {
2971 if (yych <= '`') {
2972 if (yych <= 'Z') {
2973 if (yych <= '@') goto yy136;
2974 if (yych == 'S') goto yy195;
2975 goto yy159;
2976 } else {
2977 if (yych <= ']') goto yy136;
2978 if (yych <= '^') goto yy161;
2979 if (yych <= '_') goto yy159;
2980 goto yy136;
2981 }
2982 } else {
2983 if (yych <= '{') {
2984 if (yych == 's') goto yy195;
2985 if (yych <= 'z') goto yy159;
2986 goto yy136;
2987 } else {
2988 if (yych == '}') goto yy136;
2989 if (yych <= '~') goto yy161;
2990 goto yy136;
2991 }
2992 }
2993 }
2994 yy193:
2995 YYDEBUG(193, *YYCURSOR);
2996 ++YYCURSOR;
2997 YYFILL(1);
2998 yych = *YYCURSOR;
2999 YYDEBUG(194, *YYCURSOR);
3000 if (yych == '\t') goto yy193;
3001 if (yych == ' ') goto yy193;
3002 goto yy181;
3003 yy195:
3004 YYDEBUG(195, *YYCURSOR);
3005 yyaccept = 2;
3006 yych = *(YYMARKER = ++YYCURSOR);
3007 if (yych <= '=') {
3008 if (yych <= '"') {
3009 if (yych <= '\n') {
3010 if (yych <= 0x00) goto yy161;
3011 if (yych <= 0x08) goto yy136;
3012 goto yy161;
3013 } else {
3014 if (yych == '\r') goto yy161;
3015 if (yych <= 0x1F) goto yy136;
3016 goto yy161;
3017 }
3018 } else {
3019 if (yych <= '9') {
3020 if (yych <= '%') goto yy136;
3021 if (yych <= ')') goto yy161;
3022 if (yych <= '/') goto yy136;
3023 goto yy159;
3024 } else {
3025 if (yych == ';') goto yy161;
3026 if (yych <= '<') goto yy136;
3027 goto yy161;
3028 }
3029 }
3030 } else {
3031 if (yych <= '`') {
3032 if (yych <= 'Z') {
3033 if (yych <= '@') goto yy136;
3034 if (yych == 'E') goto yy197;
3035 goto yy159;
3036 } else {
3037 if (yych <= ']') goto yy136;
3038 if (yych <= '^') goto yy161;
3039 if (yych <= '_') goto yy159;
3040 goto yy136;
3041 }
3042 } else {
3043 if (yych <= '{') {
3044 if (yych == 'e') goto yy197;
3045 if (yych <= 'z') goto yy159;
3046 goto yy136;
3047 } else {
3048 if (yych == '}') goto yy136;
3049 if (yych <= '~') goto yy161;
3050 goto yy136;
3051 }
3052 }
3053 }
3054 yy196:
3055 YYDEBUG(196, *YYCURSOR);
3056 yyaccept = 2;
3057 yych = *(YYMARKER = ++YYCURSOR);
3058 if (yych <= '=') {
3059 if (yych <= '"') {
3060 if (yych <= '\n') {
3061 if (yych <= 0x00) goto yy161;
3062 if (yych <= 0x08) goto yy136;
3063 goto yy161;
3064 } else {
3065 if (yych == '\r') goto yy161;
3066 if (yych <= 0x1F) goto yy136;
3067 goto yy161;
3068 }
3069 } else {
3070 if (yych <= '9') {
3071 if (yych <= '%') goto yy136;
3072 if (yych <= ')') goto yy161;
3073 if (yych <= '/') goto yy136;
3074 goto yy159;
3075 } else {
3076 if (yych == ';') goto yy161;
3077 if (yych <= '<') goto yy136;
3078 goto yy161;
3079 }
3080 }
3081 } else {
3082 if (yych <= '`') {
3083 if (yych <= 'Z') {
3084 if (yych <= '@') goto yy136;
3085 if (yych == 'L') goto yy201;
3086 goto yy159;
3087 } else {
3088 if (yych <= ']') goto yy136;
3089 if (yych <= '^') goto yy161;
3090 if (yych <= '_') goto yy159;
3091 goto yy136;
3092 }
3093 } else {
3094 if (yych <= '{') {
3095 if (yych == 'l') goto yy201;
3096 if (yych <= 'z') goto yy159;
3097 goto yy136;
3098 } else {
3099 if (yych == '}') goto yy136;
3100 if (yych <= '~') goto yy161;
3101 goto yy136;
3102 }
3103 }
3104 }
3105 yy197:
3106 YYDEBUG(197, *YYCURSOR);
3107 yyaccept = 3;
3108 yych = *(YYMARKER = ++YYCURSOR);
3109 if (yybm[0+yych] & 32) {
3110 goto yy159;
3111 }
3112 if (yych <= ')') {
3113 if (yych <= '\f') {
3114 if (yych <= 0x08) {
3115 if (yych <= 0x00) goto yy181;
3116 goto yy136;
3117 } else {
3118 if (yych <= '\t') goto yy193;
3119 if (yych <= '\n') goto yy181;
3120 goto yy136;
3121 }
3122 } else {
3123 if (yych <= ' ') {
3124 if (yych <= '\r') goto yy181;
3125 if (yych <= 0x1F) goto yy136;
3126 goto yy193;
3127 } else {
3128 if (yych <= '"') goto yy181;
3129 if (yych <= '%') goto yy136;
3130 goto yy181;
3131 }
3132 }
3133 } else {
3134 if (yych <= ']') {
3135 if (yych <= ';') {
3136 if (yych <= ':') goto yy136;
3137 goto yy181;
3138 } else {
3139 if (yych == '=') goto yy181;
3140 goto yy136;
3141 }
3142 } else {
3143 if (yych <= '|') {
3144 if (yych <= '^') goto yy181;
3145 if (yych <= '{') goto yy136;
3146 goto yy181;
3147 } else {
3148 if (yych == '~') goto yy181;
3149 goto yy136;
3150 }
3151 }
3152 }
3153 yy198:
3154 YYDEBUG(198, *YYCURSOR);
3155 ++YYCURSOR;
3156 YYFILL(1);
3157 yych = *YYCURSOR;
3158 YYDEBUG(199, *YYCURSOR);
3159 if (yych == '\t') goto yy198;
3160 if (yych == ' ') goto yy198;
3161 goto yy185;
3162 yy200:
3163 YYDEBUG(200, *YYCURSOR);
3164 yyaccept = 2;
3165 yych = *(YYMARKER = ++YYCURSOR);
3166 if (yych <= '=') {
3167 if (yych <= '"') {
3168 if (yych <= '\n') {
3169 if (yych <= 0x00) goto yy161;
3170 if (yych <= 0x08) goto yy136;
3171 goto yy161;
3172 } else {
3173 if (yych == '\r') goto yy161;
3174 if (yych <= 0x1F) goto yy136;
3175 goto yy161;
3176 }
3177 } else {
3178 if (yych <= '9') {
3179 if (yych <= '%') goto yy136;
3180 if (yych <= ')') goto yy161;
3181 if (yych <= '/') goto yy136;
3182 goto yy159;
3183 } else {
3184 if (yych == ';') goto yy161;
3185 if (yych <= '<') goto yy136;
3186 goto yy161;
3187 }
3188 }
3189 } else {
3190 if (yych <= '`') {
3191 if (yych <= 'Z') {
3192 if (yych <= '@') goto yy136;
3193 if (yych == 'E') goto yy184;
3194 goto yy159;
3195 } else {
3196 if (yych <= ']') goto yy136;
3197 if (yych <= '^') goto yy161;
3198 if (yych <= '_') goto yy159;
3199 goto yy136;
3200 }
3201 } else {
3202 if (yych <= '{') {
3203 if (yych == 'e') goto yy184;
3204 if (yych <= 'z') goto yy159;
3205 goto yy136;
3206 } else {
3207 if (yych == '}') goto yy136;
3208 if (yych <= '~') goto yy161;
3209 goto yy136;
3210 }
3211 }
3212 }
3213 yy201:
3214 YYDEBUG(201, *YYCURSOR);
3215 yyaccept = 5;
3216 yych = *(YYMARKER = ++YYCURSOR);
3217 if (yybm[0+yych] & 32) {
3218 goto yy159;
3219 }
3220 if (yych <= ')') {
3221 if (yych <= '\f') {
3222 if (yych <= 0x08) {
3223 if (yych >= 0x01) goto yy136;
3224 } else {
3225 if (yych <= '\t') goto yy203;
3226 if (yych >= '\v') goto yy136;
3227 }
3228 } else {
3229 if (yych <= ' ') {
3230 if (yych <= '\r') goto yy202;
3231 if (yych <= 0x1F) goto yy136;
3232 goto yy203;
3233 } else {
3234 if (yych <= '"') goto yy202;
3235 if (yych <= '%') goto yy136;
3236 }
3237 }
3238 } else {
3239 if (yych <= ']') {
3240 if (yych <= ';') {
3241 if (yych <= ':') goto yy136;
3242 } else {
3243 if (yych != '=') goto yy136;
3244 }
3245 } else {
3246 if (yych <= '|') {
3247 if (yych <= '^') goto yy202;
3248 if (yych <= '{') goto yy136;
3249 } else {
3250 if (yych != '~') goto yy136;
3251 }
3252 }
3253 }
3254 yy202:
3255 YYDEBUG(202, *YYCURSOR);
3256 yyleng = YYCURSOR - SCNG(yy_text);
3257 {
3258 RETURN_TOKEN(NULL_NULL, "", 0);
3259 }
3260 yy203:
3261 YYDEBUG(203, *YYCURSOR);
3262 ++YYCURSOR;
3263 YYFILL(1);
3264 yych = *YYCURSOR;
3265 YYDEBUG(204, *YYCURSOR);
3266 if (yych == '\t') goto yy203;
3267 if (yych == ' ') goto yy203;
3268 goto yy202;
3269 }
3270 /* *********************************** */
3271 yyc_ST_SECTION_RAW:
3272 {
3273 static const unsigned char yybm[] = {
3274 64, 64, 64, 64, 64, 64, 64, 64,
3275 64, 192, 0, 64, 64, 0, 64, 64,
3276 64, 64, 64, 64, 64, 64, 64, 64,
3277 64, 64, 64, 64, 64, 64, 64, 64,
3278 192, 64, 64, 64, 64, 64, 64, 64,
3279 64, 64, 64, 64, 64, 64, 64, 64,
3280 64, 64, 64, 64, 64, 64, 64, 64,
3281 64, 64, 64, 64, 64, 64, 64, 64,
3282 64, 64, 64, 64, 64, 64, 64, 64,
3283 64, 64, 64, 64, 64, 64, 64, 64,
3284 64, 64, 64, 64, 64, 64, 64, 64,
3285 64, 64, 64, 64, 64, 0, 64, 64,
3286 64, 64, 64, 64, 64, 64, 64, 64,
3287 64, 64, 64, 64, 64, 64, 64, 64,
3288 64, 64, 64, 64, 64, 64, 64, 64,
3289 64, 64, 64, 64, 64, 64, 64, 64,
3290 64, 64, 64, 64, 64, 64, 64, 64,
3291 64, 64, 64, 64, 64, 64, 64, 64,
3292 64, 64, 64, 64, 64, 64, 64, 64,
3293 64, 64, 64, 64, 64, 64, 64, 64,
3294 64, 64, 64, 64, 64, 64, 64, 64,
3295 64, 64, 64, 64, 64, 64, 64, 64,
3296 64, 64, 64, 64, 64, 64, 64, 64,
3297 64, 64, 64, 64, 64, 64, 64, 64,
3298 64, 64, 64, 64, 64, 64, 64, 64,
3299 64, 64, 64, 64, 64, 64, 64, 64,
3300 64, 64, 64, 64, 64, 64, 64, 64,
3301 64, 64, 64, 64, 64, 64, 64, 64,
3302 64, 64, 64, 64, 64, 64, 64, 64,
3303 64, 64, 64, 64, 64, 64, 64, 64,
3304 64, 64, 64, 64, 64, 64, 64, 64,
3305 64, 64, 64, 64, 64, 64, 64, 64,
3306 };
3307 YYDEBUG(205, *YYCURSOR);
3308 YYFILL(1);
3309 yych = *YYCURSOR;
3310 if (yybm[0+yych] & 64) {
3311 goto yy207;
3312 }
3313 if (yych <= '\r') goto yy210;
3314 goto yy212;
3315 yy207:
3316 YYDEBUG(207, *YYCURSOR);
3317 ++YYCURSOR;
3318 YYFILL(1);
3319 yych = *YYCURSOR;
3320 YYDEBUG(208, *YYCURSOR);
3321 if (yybm[0+yych] & 64) {
3322 goto yy207;
3323 }
3324 YYDEBUG(209, *YYCURSOR);
3325 yyleng = YYCURSOR - SCNG(yy_text);
3326 { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
3327 RETURN_TOKEN(TC_RAW, yytext, yyleng);
3328 }
3329 yy210:
3330 YYDEBUG(210, *YYCURSOR);
3331 ++YYCURSOR;
3332 YYDEBUG(211, *YYCURSOR);
3333 yyleng = YYCURSOR - SCNG(yy_text);
3334 {
3335 return 0;
3336 }
3337 yy212:
3338 YYDEBUG(212, *YYCURSOR);
3339 ++YYCURSOR;
3340 YYFILL(2);
3341 yych = *YYCURSOR;
3342 YYDEBUG(213, *YYCURSOR);
3343 if (yybm[0+yych] & 128) {
3344 goto yy212;
3345 }
3346 if (yych <= 0x08) goto yy214;
3347 if (yych <= '\n') goto yy215;
3348 if (yych == '\r') goto yy216;
3349 yy214:
3350 YYDEBUG(214, *YYCURSOR);
3351 yyleng = YYCURSOR - SCNG(yy_text);
3352 { /* End of section */
3353 BEGIN(INITIAL);
3354 SCNG(lineno)++;
3355 return ']';
3356 }
3357 yy215:
3358 YYDEBUG(215, *YYCURSOR);
3359 ++YYCURSOR;
3360 goto yy214;
3361 yy216:
3362 YYDEBUG(216, *YYCURSOR);
3363 yych = *++YYCURSOR;
3364 if (yych == '\n') goto yy215;
3365 goto yy214;
3366 }
3367 /* *********************************** */
3368 yyc_ST_DOUBLE_QUOTES:
3369 {
3370 static const unsigned char yybm[] = {
3371 0, 0, 0, 0, 0, 0, 0, 0,
3372 0, 128, 0, 0, 0, 0, 0, 0,
3373 0, 0, 0, 0, 0, 0, 0, 0,
3374 0, 0, 0, 0, 0, 0, 0, 0,
3375 128, 0, 0, 0, 0, 0, 0, 0,
3376 0, 0, 0, 0, 0, 0, 0, 0,
3377 0, 0, 0, 0, 0, 0, 0, 0,
3378 0, 0, 0, 0, 0, 0, 0, 0,
3379 0, 0, 0, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 0, 0, 0, 0,
3381 0, 0, 0, 0, 0, 0, 0, 0,
3382 0, 0, 0, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 0, 0, 0, 0,
3384 0, 0, 0, 0, 0, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0, 0, 0,
3386 0, 0, 0, 0, 0, 0, 0, 0,
3387 0, 0, 0, 0, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0, 0,
3389 0, 0, 0, 0, 0, 0, 0, 0,
3390 0, 0, 0, 0, 0, 0, 0, 0,
3391 0, 0, 0, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, 0, 0, 0, 0,
3393 0, 0, 0, 0, 0, 0, 0, 0,
3394 0, 0, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, 0, 0, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0,
3398 0, 0, 0, 0, 0, 0, 0, 0,
3399 0, 0, 0, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 0, 0, 0, 0,
3402 0, 0, 0, 0, 0, 0, 0, 0,
3403 };
3404 YYDEBUG(217, *YYCURSOR);
3405 YYFILL(2);
3406 yych = *YYCURSOR;
3407 if (yych == '"') goto yy221;
3408 if (yych == '$') goto yy224;
3409 YYDEBUG(219, *YYCURSOR);
3410 ++YYCURSOR;
3411 yy220:
3412 YYDEBUG(220, *YYCURSOR);
3413 yyleng = YYCURSOR - SCNG(yy_text);
3414 { /* Escape double quoted string contents */
3415 if (YYCURSOR > YYLIMIT) {
3416 return 0;
3417 }
3418
3419 unsigned char *s = SCNG(yy_text);
3420
3421 while (s < YYLIMIT) {
3422 switch (*s++) {
3423 case '"':
3424 break;
3425 case '$':
3426 if (s < YYLIMIT && *s == '{') {
3427 break;
3428 }
3429 continue;
3430 case '\\':
3431 if (s < YYLIMIT) {
3432 unsigned char escaped = *s++;
3433 /* A special case for Windows paths, e.g. key="C:\path\" */
3434 if (escaped == '"' && (s >= YYLIMIT || *s == '\n' || *s == '\r')) {
3435 break;
3436 }
3437 }
3438 ZEND_FALLTHROUGH;
3439 default:
3440 continue;
3441 }
3442
3443 s--;
3444 break;
3445 }
3446
3447 YYCURSOR = s;
3448 yyleng = YYCURSOR - SCNG(yy_text);
3449
3450 zend_ini_escape_string(ini_lval, yytext, yyleng, '"');
3451 return TC_QUOTED_STRING;
3452 }
3453 yy221:
3454 YYDEBUG(221, *YYCURSOR);
3455 ++YYCURSOR;
3456 YYFILL(1);
3457 yych = *YYCURSOR;
3458 YYDEBUG(222, *YYCURSOR);
3459 if (yybm[0+yych] & 128) {
3460 goto yy221;
3461 }
3462 YYDEBUG(223, *YYCURSOR);
3463 yyleng = YYCURSOR - SCNG(yy_text);
3464 { /* Double quoted '"' string ends */
3465 yy_pop_state();
3466 return '"';
3467 }
3468 yy224:
3469 YYDEBUG(224, *YYCURSOR);
3470 yych = *++YYCURSOR;
3471 if (yych != '{') goto yy220;
3472 YYDEBUG(225, *YYCURSOR);
3473 ++YYCURSOR;
3474 YYDEBUG(226, *YYCURSOR);
3475 yyleng = YYCURSOR - SCNG(yy_text);
3476 { /* Variable start */
3477 yy_push_state(ST_VARNAME);
3478 return TC_DOLLAR_CURLY;
3479 }
3480 }
3481 /* *********************************** */
3482 yyc_ST_VARNAME:
3483 {
3484 static const unsigned char yybm[] = {
3485 128, 128, 128, 128, 128, 128, 128, 128,
3486 128, 0, 0, 128, 128, 0, 128, 128,
3487 128, 128, 128, 128, 128, 128, 128, 128,
3488 128, 128, 128, 128, 128, 128, 128, 128,
3489 128, 0, 0, 128, 0, 128, 0, 128,
3490 0, 0, 128, 128, 128, 128, 128, 128,
3491 128, 128, 128, 128, 128, 128, 128, 128,
3492 128, 128, 128, 0, 128, 0, 128, 128,
3493 128, 128, 128, 128, 128, 128, 128, 128,
3494 128, 128, 128, 128, 128, 128, 128, 128,
3495 128, 128, 128, 128, 128, 128, 128, 128,
3496 128, 128, 128, 0, 128, 128, 0, 128,
3497 128, 128, 128, 128, 128, 128, 128, 128,
3498 128, 128, 128, 128, 128, 128, 128, 128,
3499 128, 128, 128, 128, 128, 128, 128, 128,
3500 128, 128, 128, 0, 0, 0, 0, 128,
3501 128, 128, 128, 128, 128, 128, 128, 128,
3502 128, 128, 128, 128, 128, 128, 128, 128,
3503 128, 128, 128, 128, 128, 128, 128, 128,
3504 128, 128, 128, 128, 128, 128, 128, 128,
3505 128, 128, 128, 128, 128, 128, 128, 128,
3506 128, 128, 128, 128, 128, 128, 128, 128,
3507 128, 128, 128, 128, 128, 128, 128, 128,
3508 128, 128, 128, 128, 128, 128, 128, 128,
3509 128, 128, 128, 128, 128, 128, 128, 128,
3510 128, 128, 128, 128, 128, 128, 128, 128,
3511 128, 128, 128, 128, 128, 128, 128, 128,
3512 128, 128, 128, 128, 128, 128, 128, 128,
3513 128, 128, 128, 128, 128, 128, 128, 128,
3514 128, 128, 128, 128, 128, 128, 128, 128,
3515 128, 128, 128, 128, 128, 128, 128, 128,
3516 128, 128, 128, 128, 128, 128, 128, 128,
3517 };
3518 YYDEBUG(227, *YYCURSOR);
3519 YYFILL(1);
3520 yych = *YYCURSOR;
3521 if (yybm[0+yych] & 128) {
3522 goto yy229;
3523 }
3524 if (yych == '}') goto yy234;
3525 goto yy232;
3526 yy229:
3527 YYDEBUG(229, *YYCURSOR);
3528 ++YYCURSOR;
3529 YYFILL(1);
3530 yych = *YYCURSOR;
3531 YYDEBUG(230, *YYCURSOR);
3532 if (yybm[0+yych] & 128) {
3533 goto yy229;
3534 }
3535 YYDEBUG(231, *YYCURSOR);
3536 yyleng = YYCURSOR - SCNG(yy_text);
3537 { /* Variable name */
3538 /* Eat leading whitespace */
3539 EAT_LEADING_WHITESPACE();
3540
3541 /* Eat trailing whitespace */
3542 EAT_TRAILING_WHITESPACE();
3543
3544 RETURN_TOKEN(TC_VARNAME, yytext, yyleng);
3545 }
3546 yy232:
3547 YYDEBUG(232, *YYCURSOR);
3548 ++YYCURSOR;
3549 YYDEBUG(233, *YYCURSOR);
3550 yyleng = YYCURSOR - SCNG(yy_text);
3551 {
3552 return 0;
3553 }
3554 yy234:
3555 YYDEBUG(234, *YYCURSOR);
3556 ++YYCURSOR;
3557 YYDEBUG(235, *YYCURSOR);
3558 yyleng = YYCURSOR - SCNG(yy_text);
3559 { /* Variable end */
3560 yy_pop_state();
3561 return '}';
3562 }
3563 }
3564 /* *********************************** */
3565 yyc_ST_RAW:
3566 {
3567 static const unsigned char yybm[] = {
3568 64, 64, 64, 64, 64, 64, 64, 64,
3569 64, 192, 0, 64, 64, 0, 64, 64,
3570 64, 64, 64, 64, 64, 64, 64, 64,
3571 64, 64, 64, 64, 64, 64, 64, 64,
3572 192, 64, 64, 64, 64, 64, 64, 64,
3573 64, 64, 64, 64, 64, 64, 64, 64,
3574 64, 64, 64, 64, 64, 64, 64, 64,
3575 64, 64, 64, 64, 64, 64, 64, 64,
3576 64, 64, 64, 64, 64, 64, 64, 64,
3577 64, 64, 64, 64, 64, 64, 64, 64,
3578 64, 64, 64, 64, 64, 64, 64, 64,
3579 64, 64, 64, 64, 64, 64, 64, 64,
3580 64, 64, 64, 64, 64, 64, 64, 64,
3581 64, 64, 64, 64, 64, 64, 64, 64,
3582 64, 64, 64, 64, 64, 64, 64, 64,
3583 64, 64, 64, 64, 64, 64, 64, 64,
3584 64, 64, 64, 64, 64, 64, 64, 64,
3585 64, 64, 64, 64, 64, 64, 64, 64,
3586 64, 64, 64, 64, 64, 64, 64, 64,
3587 64, 64, 64, 64, 64, 64, 64, 64,
3588 64, 64, 64, 64, 64, 64, 64, 64,
3589 64, 64, 64, 64, 64, 64, 64, 64,
3590 64, 64, 64, 64, 64, 64, 64, 64,
3591 64, 64, 64, 64, 64, 64, 64, 64,
3592 64, 64, 64, 64, 64, 64, 64, 64,
3593 64, 64, 64, 64, 64, 64, 64, 64,
3594 64, 64, 64, 64, 64, 64, 64, 64,
3595 64, 64, 64, 64, 64, 64, 64, 64,
3596 64, 64, 64, 64, 64, 64, 64, 64,
3597 64, 64, 64, 64, 64, 64, 64, 64,
3598 64, 64, 64, 64, 64, 64, 64, 64,
3599 64, 64, 64, 64, 64, 64, 64, 64,
3600 };
3601 YYDEBUG(236, *YYCURSOR);
3602 YYFILL(3);
3603 yych = *YYCURSOR;
3604 if (yych <= '\f') {
3605 if (yych <= 0x08) {
3606 if (yych >= 0x01) goto yy240;
3607 } else {
3608 if (yych <= '\t') goto yy242;
3609 if (yych <= '\n') goto yy243;
3610 goto yy240;
3611 }
3612 } else {
3613 if (yych <= ' ') {
3614 if (yych <= '\r') goto yy245;
3615 if (yych <= 0x1F) goto yy240;
3616 goto yy242;
3617 } else {
3618 if (yych == ';') goto yy246;
3619 goto yy240;
3620 }
3621 }
3622 YYDEBUG(238, *YYCURSOR);
3623 ++YYCURSOR;
3624 YYDEBUG(239, *YYCURSOR);
3625 yyleng = YYCURSOR - SCNG(yy_text);
3626 { /* End of option value (if EOF is reached before EOL */
3627 BEGIN(INITIAL);
3628 return END_OF_LINE;
3629 }
3630 yy240:
3631 YYDEBUG(240, *YYCURSOR);
3632 ++YYCURSOR;
3633 yy241:
3634 YYDEBUG(241, *YYCURSOR);
3635 yyleng = YYCURSOR - SCNG(yy_text);
3636 { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */
3637 unsigned char *sc = NULL;
3638 EAT_LEADING_WHITESPACE();
3639 while (YYCURSOR < YYLIMIT) {
3640 switch (*YYCURSOR) {
3641 case '\n':
3642 case '\r':
3643 goto end_raw_value_chars;
3644 break;
3645 case ';':
3646 if (sc == NULL) {
3647 sc = YYCURSOR;
3648 }
3649 YYCURSOR++;
3650 break;
3651 case '"':
3652 if (yytext[0] == '"') {
3653 sc = NULL;
3654 }
3655 YYCURSOR++;
3656 break;
3657 default:
3658 YYCURSOR++;
3659 break;
3660 }
3661 }
3662 end_raw_value_chars:
3663 if (sc) {
3664 yyleng = sc - SCNG(yy_text);
3665 } else {
3666 yyleng = YYCURSOR - SCNG(yy_text);
3667 }
3668
3669 EAT_TRAILING_WHITESPACE();
3670
3671 /* Eat leading and trailing double quotes */
3672 if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') {
3673 SCNG(yy_text)++;
3674 yyleng = yyleng - 2;
3675 }
3676
3677 RETURN_TOKEN(TC_RAW, yytext, yyleng);
3678 }
3679 yy242:
3680 YYDEBUG(242, *YYCURSOR);
3681 yych = *++YYCURSOR;
3682 if (yych <= '\r') {
3683 if (yych <= 0x08) goto yy241;
3684 if (yych <= '\n') goto yy249;
3685 if (yych <= '\f') goto yy241;
3686 goto yy249;
3687 } else {
3688 if (yych <= ' ') {
3689 if (yych <= 0x1F) goto yy241;
3690 goto yy249;
3691 } else {
3692 if (yych == ';') goto yy249;
3693 goto yy241;
3694 }
3695 }
3696 yy243:
3697 YYDEBUG(243, *YYCURSOR);
3698 ++YYCURSOR;
3699 yy244:
3700 YYDEBUG(244, *YYCURSOR);
3701 yyleng = YYCURSOR - SCNG(yy_text);
3702 { /* End of option value */
3703 BEGIN(INITIAL);
3704 SCNG(lineno)++;
3705 return END_OF_LINE;
3706 }
3707 yy245:
3708 YYDEBUG(245, *YYCURSOR);
3709 yych = *++YYCURSOR;
3710 if (yych == '\n') goto yy243;
3711 goto yy244;
3712 yy246:
3713 YYDEBUG(246, *YYCURSOR);
3714 ++YYCURSOR;
3715 YYFILL(2);
3716 yych = *YYCURSOR;
3717 YYDEBUG(247, *YYCURSOR);
3718 if (yybm[0+yych] & 64) {
3719 goto yy246;
3720 }
3721 if (yych <= '\n') goto yy251;
3722 goto yy253;
3723 yy248:
3724 YYDEBUG(248, *YYCURSOR);
3725 ++YYCURSOR;
3726 YYFILL(2);
3727 yych = *YYCURSOR;
3728 yy249:
3729 YYDEBUG(249, *YYCURSOR);
3730 if (yybm[0+yych] & 128) {
3731 goto yy248;
3732 }
3733 if (yych <= '\f') {
3734 if (yych <= 0x08) goto yy250;
3735 if (yych <= '\n') goto yy243;
3736 } else {
3737 if (yych <= '\r') goto yy245;
3738 if (yych == ';') goto yy246;
3739 }
3740 yy250:
3741 YYDEBUG(250, *YYCURSOR);
3742 yyleng = YYCURSOR - SCNG(yy_text);
3743 {
3744 /* eat whitespace */
3745 goto restart;
3746 }
3747 yy251:
3748 YYDEBUG(251, *YYCURSOR);
3749 ++YYCURSOR;
3750 yy252:
3751 YYDEBUG(252, *YYCURSOR);
3752 yyleng = YYCURSOR - SCNG(yy_text);
3753 { /* Comment */
3754 BEGIN(INITIAL);
3755 SCNG(lineno)++;
3756 return END_OF_LINE;
3757 }
3758 yy253:
3759 YYDEBUG(253, *YYCURSOR);
3760 yych = *++YYCURSOR;
3761 if (yych == '\n') goto yy251;
3762 goto yy252;
3763 }
3764 }
3765
3766 }
3767