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