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