aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-08-05 02:18:25 +0000
committerEric Andersen <andersen@codepoet.org>2003-08-05 02:18:25 +0000
commit72d8e444f0e9e002b16328e73464ef9015979048 (patch)
treed1d99e668617e95836a1f767257e1263963feaa5
parent461c279ac176a28dec40d1e40ebaffe4f0ac688d (diff)
downloadbusybox-w32-72d8e444f0e9e002b16328e73464ef9015979048.tar.gz
busybox-w32-72d8e444f0e9e002b16328e73464ef9015979048.tar.bz2
busybox-w32-72d8e444f0e9e002b16328e73464ef9015979048.zip
Merge/rework config system per the latest from linux-2.6.0-test2.
Fix the config bugs revealed by the updated config system. -Erik
-rw-r--r--scripts/config/conf.c226
-rw-r--r--scripts/config/confdata.c245
-rw-r--r--scripts/config/expr.c37
-rw-r--r--scripts/config/expr.h82
-rw-r--r--scripts/config/lex.zconf.c_shipped2978
-rw-r--r--scripts/config/lkc.h19
-rw-r--r--scripts/config/lkc_proto.h9
-rw-r--r--scripts/config/mconf.c50
-rw-r--r--scripts/config/menu.c194
-rw-r--r--scripts/config/symbol.c518
-rw-r--r--scripts/config/zconf.l58
-rw-r--r--scripts/config/zconf.tab.c_shipped1346
-rw-r--r--scripts/config/zconf.y232
-rw-r--r--shell/Config.in2
-rw-r--r--sysdeps/linux/Config.in2
15 files changed, 3447 insertions, 2551 deletions
diff --git a/scripts/config/conf.c b/scripts/config/conf.c
index 884175e54..013a679dd 100644
--- a/scripts/config/conf.c
+++ b/scripts/config/conf.c
@@ -35,50 +35,12 @@ static struct menu *rootEntry;
35 35
36static char nohelp_text[] = "Sorry, no help available for this option yet.\n"; 36static char nohelp_text[] = "Sorry, no help available for this option yet.\n";
37 37
38#if 0
39static void printc(int ch)
40{
41 static int sep = 0;
42
43 if (!sep) {
44 putchar('[');
45 sep = 1;
46 } else if (ch)
47 putchar('/');
48 if (!ch) {
49 putchar(']');
50 putchar(' ');
51 sep = 0;
52 } else
53 putchar(ch);
54}
55#endif
56
57static void printo(const char *o)
58{
59 static int sep = 0;
60
61 if (!sep) {
62 putchar('(');
63 sep = 1;
64 } else if (o) {
65 putchar(',');
66 putchar(' ');
67 }
68 if (!o) {
69 putchar(')');
70 putchar(' ');
71 sep = 0;
72 } else
73 printf("%s", o);
74}
75
76static void strip(char *str) 38static void strip(char *str)
77{ 39{
78 char *p = str; 40 char *p = str;
79 int l; 41 int l;
80 42
81 while ((isspace((int)*p))) 43 while ((isspace(*p)))
82 p++; 44 p++;
83 l = strlen(p); 45 l = strlen(p);
84 if (p != str) 46 if (p != str)
@@ -86,10 +48,20 @@ static void strip(char *str)
86 if (!l) 48 if (!l)
87 return; 49 return;
88 p = str + l - 1; 50 p = str + l - 1;
89 while ((isspace((int)*p))) 51 while ((isspace(*p)))
90 *p-- = 0; 52 *p-- = 0;
91} 53}
92 54
55static void check_stdin(void)
56{
57 if (!valid_stdin && input_mode == ask_silent) {
58 printf("aborted!\n\n");
59 printf("Console input/output is redirected. ");
60 printf("Run 'make oldconfig' to update configuration.\n\n");
61 exit(1);
62 }
63}
64
93static void conf_askvalue(struct symbol *sym, const char *def) 65static void conf_askvalue(struct symbol *sym, const char *def)
94{ 66{
95 enum symbol_type type = sym_get_type(sym); 67 enum symbol_type type = sym_get_type(sym);
@@ -101,6 +73,13 @@ static void conf_askvalue(struct symbol *sym, const char *def)
101 line[0] = '\n'; 73 line[0] = '\n';
102 line[1] = 0; 74 line[1] = 0;
103 75
76 if (!sym_is_changable(sym)) {
77 printf("%s\n", def);
78 line[0] = '\n';
79 line[1] = 0;
80 return;
81 }
82
104 switch (input_mode) { 83 switch (input_mode) {
105 case ask_new: 84 case ask_new:
106 case ask_silent: 85 case ask_silent:
@@ -108,12 +87,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
108 printf("%s\n", def); 87 printf("%s\n", def);
109 return; 88 return;
110 } 89 }
111 if (!valid_stdin && input_mode == ask_silent) { 90 check_stdin();
112 printf("aborted!\n\n");
113 printf("Console input/output is redirected. ");
114 printf("Run 'make oldconfig' to update configuration.\n\n");
115 exit(1);
116 }
117 case ask_all: 91 case ask_all:
118 fflush(stdout); 92 fflush(stdout);
119 fgets(line, 128, stdin); 93 fgets(line, 128, stdin);
@@ -294,9 +268,8 @@ help:
294static int conf_choice(struct menu *menu) 268static int conf_choice(struct menu *menu)
295{ 269{
296 struct symbol *sym, *def_sym; 270 struct symbol *sym, *def_sym;
297 struct menu *cmenu, *def_menu; 271 struct menu *child;
298 const char *help; 272 int type;
299 int type, len;
300 bool is_new; 273 bool is_new;
301 274
302 sym = menu->sym; 275 sym = menu->sym;
@@ -314,72 +287,111 @@ static int conf_choice(struct menu *menu)
314 break; 287 break;
315 } 288 }
316 } else { 289 } else {
317 sym->def = sym->curr; 290 switch (sym_get_tristate_value(sym)) {
318 if (S_TRI(sym->curr) == mod) { 291 case no:
292 return 1;
293 case mod:
319 printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu)); 294 printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
320 return 0; 295 return 0;
296 case yes:
297 break;
321 } 298 }
322 } 299 }
323 300
324 while (1) { 301 while (1) {
325 printf("%*s%s ", indent - 1, "", menu_get_prompt(menu)); 302 int cnt, def;
303
304 printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
326 def_sym = sym_get_choice_value(sym); 305 def_sym = sym_get_choice_value(sym);
327 def_menu = NULL; 306 cnt = def = 0;
328 for (cmenu = menu->list; cmenu; cmenu = cmenu->next) { 307 line[0] = '0';
329 if (!menu_is_visible(cmenu)) 308 line[1] = 0;
309 for (child = menu->list; child; child = child->next) {
310 if (!menu_is_visible(child))
330 continue; 311 continue;
331 printo(menu_get_prompt(cmenu)); 312 if (!child->sym) {
332 if (cmenu->sym == def_sym) 313 printf("%*c %s\n", indent, '*', menu_get_prompt(child));
333 def_menu = cmenu; 314 continue;
334 } 315 }
335 printo(NULL); 316 cnt++;
336 if (def_menu) 317 if (child->sym == def_sym) {
337 printf("[%s] ", menu_get_prompt(def_menu)); 318 def = cnt;
338 else { 319 printf("%*c", indent, '>');
320 } else
321 printf("%*c", indent, ' ');
322 printf(" %d. %s", cnt, menu_get_prompt(child));
323 if (child->sym->name)
324 printf(" (%s)", child->sym->name);
325 if (!sym_has_value(child->sym))
326 printf(" (NEW)");
339 printf("\n"); 327 printf("\n");
340 return 1;
341 } 328 }
329 printf("%*schoice", indent - 1, "");
330 if (cnt == 1) {
331 printf("[1]: 1\n");
332 goto conf_childs;
333 }
334 printf("[1-%d", cnt);
335 if (sym->help)
336 printf("?");
337 printf("]: ");
342 switch (input_mode) { 338 switch (input_mode) {
343 case ask_new: 339 case ask_new:
344 case ask_silent: 340 case ask_silent:
341 if (!is_new) {
342 cnt = def;
343 printf("%d\n", cnt);
344 break;
345 }
346 check_stdin();
345 case ask_all: 347 case ask_all:
346 conf_askvalue(sym, menu_get_prompt(def_menu)); 348 fflush(stdout);
349 fgets(line, 128, stdin);
347 strip(line); 350 strip(line);
351 if (line[0] == '?') {
352 printf("\n%s\n", menu->sym->help ?
353 menu->sym->help : nohelp_text);
354 continue;
355 }
356 if (!line[0])
357 cnt = def;
358 else if (isdigit(line[0]))
359 cnt = atoi(line);
360 else
361 continue;
362 break;
363 case set_random:
364 def = (random() % cnt) + 1;
365 case set_default:
366 case set_yes:
367 case set_mod:
368 case set_no:
369 cnt = def;
370 printf("%d\n", cnt);
348 break; 371 break;
349 default:
350 line[0] = 0;
351 printf("\n");
352 } 372 }
353 if (line[0] == '?' && !line[1]) { 373
354 help = nohelp_text; 374 conf_childs:
355 if (menu->sym->help) 375 for (child = menu->list; child; child = child->next) {
356 help = menu->sym->help; 376 if (!child->sym || !menu_is_visible(child))
357 printf("\n%s\n", help); 377 continue;
358 continue; 378 if (!--cnt)
379 break;
359 } 380 }
360 if (line[0]) { 381 if (!child)
361 len = strlen(line); 382 continue;
362 line[len] = 0; 383 if (line[strlen(line) - 1] == '?') {
363 384 printf("\n%s\n", child->sym->help ?
364 def_menu = NULL; 385 child->sym->help : nohelp_text);
365 for (cmenu = menu->list; cmenu; cmenu = cmenu->next) { 386 continue;
366 if (!cmenu->sym || !menu_is_visible(cmenu))
367 continue;
368 if (!strncasecmp(line, menu_get_prompt(cmenu), len)) {
369 def_menu = cmenu;
370 break;
371 }
372 }
373 } 387 }
374 if (def_menu) { 388 sym_set_choice_value(sym, child->sym);
375 sym_set_choice_value(sym, def_menu->sym); 389 if (child->list) {
376 if (def_menu->list) { 390 indent += 2;
377 indent += 2; 391 conf(child->list);
378 conf(def_menu->list); 392 indent -= 2;
379 indent -= 2;
380 }
381 return 1;
382 } 393 }
394 return 1;
383 } 395 }
384} 396}
385 397
@@ -420,7 +432,7 @@ static void conf(struct menu *menu)
420 432
421 if (sym_is_choice(sym)) { 433 if (sym_is_choice(sym)) {
422 conf_choice(menu); 434 conf_choice(menu);
423 if (S_TRI(sym->curr) != mod) 435 if (sym->curr.tri != mod)
424 return; 436 return;
425 goto conf_childs; 437 goto conf_childs;
426 } 438 }
@@ -454,29 +466,17 @@ static void check_conf(struct menu *menu)
454 return; 466 return;
455 467
456 sym = menu->sym; 468 sym = menu->sym;
457 if (!sym) 469 if (sym) {
458 goto conf_childs; 470 if (sym_is_changable(sym) && !sym_has_value(sym)) {
459
460 if (sym_is_choice(sym)) {
461 if (!sym_has_value(sym)) {
462 if (!conf_cnt++) 471 if (!conf_cnt++)
463 printf("*\n* Restart config...\n*\n"); 472 printf("*\n* Restart config...\n*\n");
464 rootEntry = menu_get_parent_menu(menu); 473 rootEntry = menu_get_parent_menu(menu);
465 conf(rootEntry); 474 conf(rootEntry);
466 } 475 }
467 if (sym_get_tristate_value(sym) != mod) 476 if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod)
468 return; 477 return;
469 goto conf_childs;
470 } 478 }
471 479
472 if (!sym_has_value(sym)) {
473 if (!conf_cnt++)
474 printf("*\n* Restart config...\n*\n");
475 rootEntry = menu_get_parent_menu(menu);
476 conf(rootEntry);
477 }
478
479conf_childs:
480 for (child = menu->list; child; child = child->next) 480 for (child = menu->list; child; child = child->next)
481 check_conf(child); 481 check_conf(child);
482} 482}
@@ -536,8 +536,8 @@ int main(int ac, char **av)
536 printf("***\n" 536 printf("***\n"
537 "*** You have not yet configured BusyBox!\n" 537 "*** You have not yet configured BusyBox!\n"
538 "***\n" 538 "***\n"
539 "*** Please run some configurator (e.g. \"make oldconfig\"\n" 539 "*** Please run some configurator (e.g. \"make config\" or\n"
540 "*** or \"make menuconfig\").\n" 540 "*** \"make oldconfig\" or \"make menuconfig\").\n"
541 "***\n"); 541 "***\n");
542 exit(1); 542 exit(1);
543 } 543 }
diff --git a/scripts/config/confdata.c b/scripts/config/confdata.c
index 0d24ac52f..c6a2864dc 100644
--- a/scripts/config/confdata.c
+++ b/scripts/config/confdata.c
@@ -1,11 +1,9 @@
1/* 1/*
2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 2 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
3 * Released under the terms of the GNU GPL v2.0. 3 * Released under the terms of the GNU GPL v2.0.
4 *
5 * Allow 'n' as a symbol value.
6 * 2002-11-05 Petr Baudis <pasky@ucw.cz>
7 */ 4 */
8 5
6#include <sys/stat.h>
9#include <ctype.h> 7#include <ctype.h>
10#include <stdio.h> 8#include <stdio.h>
11#include <stdlib.h> 9#include <stdlib.h>
@@ -38,7 +36,7 @@ static char *conf_expand_value(const char *in)
38 strncat(res_value, in, src - in); 36 strncat(res_value, in, src - in);
39 src++; 37 src++;
40 dst = name; 38 dst = name;
41 while (isalnum((int)*src) || *src == '_') 39 while (isalnum(*src) || *src == '_')
42 *dst++ = *src++; 40 *dst++ = *src++;
43 *dst = 0; 41 *dst = 0;
44 sym = sym_lookup(name, 0); 42 sym = sym_lookup(name, 0);
@@ -53,7 +51,18 @@ static char *conf_expand_value(const char *in)
53 51
54char *conf_get_default_confname(void) 52char *conf_get_default_confname(void)
55{ 53{
56 return conf_expand_value(conf_defname); 54 struct stat buf;
55 static char fullname[4096+1];
56 char *env, *name;
57
58 name = conf_expand_value(conf_defname);
59 env = getenv(SRCTREE);
60 if (env) {
61 sprintf(fullname, "%s/%s", env, name);
62 if (!stat(fullname, &buf))
63 return fullname;
64 }
65 return name;
57} 66}
58 67
59int conf_read(const char *name) 68int conf_read(const char *name)
@@ -68,12 +77,12 @@ int conf_read(const char *name)
68 int i; 77 int i;
69 78
70 if (name) { 79 if (name) {
71 in = fopen(name, "r"); 80 in = zconf_fopen(name);
72 } else { 81 } else {
73 const char **names = conf_confnames; 82 const char **names = conf_confnames;
74 while ((name = *names++)) { 83 while ((name = *names++)) {
75 name = conf_expand_value(name); 84 name = conf_expand_value(name);
76 in = fopen(name, "r"); 85 in = zconf_fopen(name);
77 if (in) { 86 if (in) {
78 printf("#\n" 87 printf("#\n"
79 "# using defaults found in %s\n" 88 "# using defaults found in %s\n"
@@ -93,44 +102,43 @@ int conf_read(const char *name)
93 case S_INT: 102 case S_INT:
94 case S_HEX: 103 case S_HEX:
95 case S_STRING: 104 case S_STRING:
96 if (S_VAL(sym->def)) 105 if (sym->user.val)
97 free(S_VAL(sym->def)); 106 free(sym->user.val);
98 default: 107 default:
99 S_VAL(sym->def) = NULL; 108 sym->user.val = NULL;
100 S_TRI(sym->def) = no; 109 sym->user.tri = no;
101 ;
102 } 110 }
103 } 111 }
104 112
105 while (fgets(line, sizeof(line), in)) { 113 while (fgets(line, sizeof(line), in)) {
106 lineno++; 114 lineno++;
115 sym = NULL;
107 switch (line[0]) { 116 switch (line[0]) {
108 case '\n':
109 break;
110 case ' ':
111 break;
112 case '#': 117 case '#':
113 p = strchr(line, ' '); 118 if (line[1]!=' ')
114 if (!p)
115 continue; 119 continue;
116 *p++ = 0; 120 p = strchr(line + 2, ' ');
117 p = strchr(p, ' ');
118 if (!p) 121 if (!p)
119 continue; 122 continue;
120 *p++ = 0; 123 *p++ = 0;
121 if (strncmp(p, "is not set", 10)) 124 if (strncmp(p, "is not set", 10))
122 continue; 125 continue;
123 sym = sym_lookup(line+2, 0); 126 sym = sym_find(line + 2);
127 if (!sym) {
128 fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 2);
129 break;
130 }
124 switch (sym->type) { 131 switch (sym->type) {
125 case S_BOOLEAN: 132 case S_BOOLEAN:
126 case S_TRISTATE: 133 case S_TRISTATE:
127 sym->def = symbol_no.curr; 134 sym->user.tri = no;
128 sym->flags &= ~SYMBOL_NEW; 135 sym->flags &= ~SYMBOL_NEW;
129 break; 136 break;
130 default: 137 default:
131 ; 138 ;
132 } 139 }
133 break; 140 break;
141
134 case 'A' ... 'Z': 142 case 'A' ... 'Z':
135 p = strchr(line, '='); 143 p = strchr(line, '=');
136 if (!p) 144 if (!p)
@@ -145,24 +153,24 @@ int conf_read(const char *name)
145 break; 153 break;
146 } 154 }
147 switch (sym->type) { 155 switch (sym->type) {
148 case S_TRISTATE: 156 case S_TRISTATE:
149 if (p[0] == 'm') { 157 if (p[0] == 'm') {
150 S_TRI(sym->def) = mod; 158 sym->user.tri = mod;
151 sym->flags &= ~SYMBOL_NEW; 159 sym->flags &= ~SYMBOL_NEW;
152 break; 160 break;
153 } 161 }
154 case S_BOOLEAN: 162 case S_BOOLEAN:
155 if (p[0] == 'y') { 163 if (p[0] == 'y') {
156 S_TRI(sym->def) = yes; 164 sym->user.tri = yes;
157 sym->flags &= ~SYMBOL_NEW; 165 sym->flags &= ~SYMBOL_NEW;
158 break; 166 break;
159 } 167 }
160 if (p[0] == 'n') { 168 if (p[0] == 'n') {
161 S_TRI(sym->def) = no; 169 sym->user.tri = no;
162 sym->flags &= ~SYMBOL_NEW; 170 sym->flags &= ~SYMBOL_NEW;
163 break; 171 break;
164 } 172 }
165 break; 173 break;
166 case S_STRING: 174 case S_STRING:
167 if (*p++ != '"') 175 if (*p++ != '"')
168 break; 176 break;
@@ -173,48 +181,71 @@ int conf_read(const char *name)
173 } 181 }
174 memmove(p2, p2 + 1, strlen(p2)); 182 memmove(p2, p2 + 1, strlen(p2));
175 } 183 }
184 if (!p2) {
185 fprintf(stderr, "%s:%d: invalid string found\n", name, lineno);
186 exit(1);
187 }
176 case S_INT: 188 case S_INT:
177 case S_HEX: 189 case S_HEX:
178 if (sym_string_valid(sym, p)) { 190 if (sym_string_valid(sym, p)) {
179 S_VAL(sym->def) = strdup(p); 191 sym->user.val = strdup(p);
180 sym->flags &= ~SYMBOL_NEW; 192 sym->flags &= ~SYMBOL_NEW;
181 } else 193 } else {
182 fprintf(stderr, "%s:%d:symbol value '%s' invalid for %s\n", name, lineno, p, sym->name); 194 fprintf(stderr, "%s:%d: symbol value '%s' invalid for %s\n", name, lineno, p, sym->name);
195 exit(1);
196 }
183 break; 197 break;
184 default: 198 default:
185 ; 199 ;
186 } 200 }
187 if (sym_is_choice_value(sym)) { 201 break;
188 prop = sym_get_choice_prop(sym); 202 case '\n':
189 switch (S_TRI(sym->def)) {
190 case mod:
191 if (S_TRI(prop->def->def) == yes)
192 /* warn? */;
193 break;
194 case yes:
195 if (S_TRI(prop->def->def) != no)
196 /* warn? */;
197 S_VAL(prop->def->def) = sym;
198 break;
199 case no:
200 break;
201 }
202 S_TRI(prop->def->def) = S_TRI(sym->def);
203 }
204 break; 203 break;
205 default: 204 default:
206 continue; 205 continue;
207 } 206 }
207 if (sym && sym_is_choice_value(sym)) {
208 struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
209 switch (sym->user.tri) {
210 case no:
211 break;
212 case mod:
213 if (cs->user.tri == yes)
214 /* warn? */;
215 break;
216 case yes:
217 if (cs->user.tri != no)
218 /* warn? */;
219 cs->user.val = sym;
220 break;
221 }
222 cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
223 cs->flags &= ~SYMBOL_NEW;
224 }
208 } 225 }
209 fclose(in); 226 fclose(in);
210 227
211 for_all_symbols(i, sym) { 228 for_all_symbols(i, sym) {
229 sym_calc_value(sym);
230 if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
231 if (sym->visible == no)
232 sym->flags |= SYMBOL_NEW;
233 switch (sym->type) {
234 case S_STRING:
235 case S_INT:
236 case S_HEX:
237 if (!sym_string_within_range(sym, sym->user.val))
238 sym->flags |= SYMBOL_NEW;
239 default:
240 break;
241 }
242 }
212 if (!sym_is_choice(sym)) 243 if (!sym_is_choice(sym))
213 continue; 244 continue;
214 prop = sym_get_choice_prop(sym); 245 prop = sym_get_choice_prop(sym);
215 for (e = prop->dep; e; e = e->left.expr) 246 for (e = prop->expr; e; e = e->left.expr)
216 sym->flags |= e->right.sym->flags & SYMBOL_NEW; 247 if (e->right.sym->visible != no)
217 sym->flags &= ~SYMBOL_NEW; 248 sym->flags |= e->right.sym->flags & SYMBOL_NEW;
218 } 249 }
219 250
220 sym_change_count = 1; 251 sym_change_count = 1;
@@ -227,29 +258,50 @@ int conf_write(const char *name)
227 FILE *out, *out_h; 258 FILE *out, *out_h;
228 struct symbol *sym; 259 struct symbol *sym;
229 struct menu *menu; 260 struct menu *menu;
230 char oldname[128]; 261 const char *basename;
262 char dirname[128], tmpname[128], newname[128];
231 int type, l; 263 int type, l;
232 const char *str; 264 const char *str;
233 265
234 out = fopen(".tmpconfig", "w"); 266 dirname[0] = 0;
267 if (name && name[0]) {
268 char *slash = strrchr(name, '/');
269 if (slash) {
270 int size = slash - name + 1;
271 memcpy(dirname, name, size);
272 dirname[size] = 0;
273 if (slash[1])
274 basename = slash + 1;
275 else
276 basename = conf_def_filename;
277 } else
278 basename = name;
279 } else
280 basename = conf_def_filename;
281
282 sprintf(newname, "%s.tmpconfig.%d", dirname, getpid());
283 out = fopen(newname, "w");
235 if (!out) 284 if (!out)
236 return 1; 285 return 1;
237 out_h = fopen(".tmpconfig.h", "w"); 286 out_h = NULL;
238 if (!out_h) 287 if (!name) {
239 return 1; 288 out_h = fopen(".tmpconfig.h", "w");
289 if (!out_h)
290 return 1;
291 }
240 fprintf(out, "#\n" 292 fprintf(out, "#\n"
241 "# Automatically generated make config: don't edit\n" 293 "# Automatically generated make config: don't edit\n"
242 "#\n"); 294 "#\n");
243 fprintf(out_h, "/*\n" 295 if (out_h)
244 " * Automatically generated header file: don't edit\n" 296 fprintf(out_h, "/*\n"
245 " */\n\n" 297 " * Automatically generated header file: don't edit\n"
246 "#define AUTOCONF_INCLUDED\n\n" 298 " */\n\n"
247 "/* Version Number */\n" 299 "#define AUTOCONF_INCLUDED\n\n"
248 "#define BB_VER \"%s\"\n" 300 "/* Version Number */\n"
249 "#define BB_BT \"%s\"\n\n", 301 "#define BB_VER \"%s\"\n"
250 getenv("VERSION"), 302 "#define BB_BT \"%s\"\n\n",
251 getenv("BUILDTIME") 303 getenv("VERSION"),
252 ); 304 getenv("BUILDTIME"));
253 305
254 if (!sym_change_count) 306 if (!sym_change_count)
255 sym_clear_all_valid(); 307 sym_clear_all_valid();
@@ -265,10 +317,11 @@ int conf_write(const char *name)
265 "#\n" 317 "#\n"
266 "# %s\n" 318 "# %s\n"
267 "#\n", str); 319 "#\n", str);
268 fprintf(out_h, "\n" 320 if (out_h)
269 "/*\n" 321 fprintf(out_h, "\n"
270 " * %s\n" 322 "/*\n"
271 " */\n", str); 323 " * %s\n"
324 " */\n", str);
272 } else if (!(sym->flags & SYMBOL_CHOICE)) { 325 } else if (!(sym->flags & SYMBOL_CHOICE)) {
273 sym_calc_value(sym); 326 sym_calc_value(sym);
274 if (!(sym->flags & SYMBOL_WRITE)) 327 if (!(sym->flags & SYMBOL_WRITE))
@@ -277,7 +330,7 @@ int conf_write(const char *name)
277 type = sym->type; 330 type = sym->type;
278 if (type == S_TRISTATE) { 331 if (type == S_TRISTATE) {
279 sym_calc_value(modules_sym); 332 sym_calc_value(modules_sym);
280 if (S_TRI(modules_sym->curr) == no) 333 if (modules_sym->curr.tri == no)
281 type = S_BOOLEAN; 334 type = S_BOOLEAN;
282 } 335 }
283 switch (type) { 336 switch (type) {
@@ -286,17 +339,20 @@ int conf_write(const char *name)
286 switch (sym_get_tristate_value(sym)) { 339 switch (sym_get_tristate_value(sym)) {
287 case no: 340 case no:
288 fprintf(out, "# %s is not set\n", sym->name); 341 fprintf(out, "# %s is not set\n", sym->name);
289 fprintf(out_h, "#undef %s\n", sym->name); 342 if (out_h)
343 fprintf(out_h, "#undef %s\n", sym->name);
290 break; 344 break;
291 case mod:
292#if 0 345#if 0
346 case mod:
293 fprintf(out, "%s=m\n", sym->name); 347 fprintf(out, "%s=m\n", sym->name);
294 fprintf(out_h, "#define __%s__MODULE 1\n", sym->name); 348 if (out_h)
295#endif 349 fprintf(out_h, "#define %s_MODULE 1\n", sym->name);
296 break; 350 break;
351#endif
297 case yes: 352 case yes:
298 fprintf(out, "%s=y\n", sym->name); 353 fprintf(out, "%s=y\n", sym->name);
299 fprintf(out_h, "#define %s 1\n", sym->name); 354 if (out_h)
355 fprintf(out_h, "#define %s 1\n", sym->name);
300 break; 356 break;
301 } 357 }
302 break; 358 break;
@@ -304,34 +360,40 @@ int conf_write(const char *name)
304 // fix me 360 // fix me
305 str = sym_get_string_value(sym); 361 str = sym_get_string_value(sym);
306 fprintf(out, "%s=\"", sym->name); 362 fprintf(out, "%s=\"", sym->name);
307 fprintf(out_h, "#define %s \"", sym->name); 363 if (out_h)
364 fprintf(out_h, "#define %s \"", sym->name);
308 do { 365 do {
309 l = strcspn(str, "\"\\"); 366 l = strcspn(str, "\"\\");
310 if (l) { 367 if (l) {
311 fwrite(str, l, 1, out); 368 fwrite(str, l, 1, out);
312 fwrite(str, l, 1, out_h); 369 if (out_h)
370 fwrite(str, l, 1, out_h);
313 } 371 }
314 str += l; 372 str += l;
315 while (*str == '\\' || *str == '"') { 373 while (*str == '\\' || *str == '"') {
316 fprintf(out, "\\%c", *str); 374 fprintf(out, "\\%c", *str);
317 fprintf(out_h, "\\%c", *str); 375 if (out_h)
376 fprintf(out_h, "\\%c", *str);
318 str++; 377 str++;
319 } 378 }
320 } while (*str); 379 } while (*str);
321 fputs("\"\n", out); 380 fputs("\"\n", out);
322 fputs("\"\n", out_h); 381 if (out_h)
382 fputs("\"\n", out_h);
323 break; 383 break;
324 case S_HEX: 384 case S_HEX:
325 str = sym_get_string_value(sym); 385 str = sym_get_string_value(sym);
326 if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) { 386 if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
327 fprintf(out, "%s=%s\n", sym->name, str); 387 fprintf(out, "%s=%s\n", sym->name, str);
328 fprintf(out_h, "#define %s 0x%s\n", sym->name, str); 388 if (out_h)
389 fprintf(out_h, "#define %s 0x%s\n", sym->name, str);
329 break; 390 break;
330 } 391 }
331 case S_INT: 392 case S_INT:
332 str = sym_get_string_value(sym); 393 str = sym_get_string_value(sym);
333 fprintf(out, "%s=%s\n", sym->name, str); 394 fprintf(out, "%s=%s\n", sym->name, str);
334 fprintf(out_h, "#define %s %s\n", sym->name, str); 395 if (out_h)
396 fprintf(out_h, "#define %s %s\n", sym->name, str);
335 break; 397 break;
336 } 398 }
337 } 399 }
@@ -351,18 +413,19 @@ int conf_write(const char *name)
351 } 413 }
352 } 414 }
353 fclose(out); 415 fclose(out);
354 fclose(out_h); 416 if (out_h) {
355 417 fclose(out_h);
356 if (!name) {
357 rename(".tmpconfig.h", "include/config.h"); 418 rename(".tmpconfig.h", "include/config.h");
358 name = conf_def_filename;
359 file_write_dep(NULL); 419 file_write_dep(NULL);
360 } else 420 }
361 unlink(".tmpconfig.h"); 421 if (!name || basename != conf_def_filename) {
362 422 if (!name)
363 sprintf(oldname, "%s.old", name); 423 name = conf_def_filename;
364 rename(name, oldname); 424 sprintf(tmpname, "%s.old", name);
365 if (rename(".tmpconfig", name)) 425 rename(name, tmpname);
426 }
427 sprintf(tmpname, "%s%s", dirname, basename);
428 if (rename(newname, tmpname))
366 return 1; 429 return 1;
367 430
368 sym_change_count = 0; 431 sym_change_count = 0;
diff --git a/scripts/config/expr.c b/scripts/config/expr.c
index d1af2a581..3f15ae859 100644
--- a/scripts/config/expr.c
+++ b/scripts/config/expr.c
@@ -55,6 +55,13 @@ struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
55 return e2 ? expr_alloc_two(E_AND, e1, e2) : e1; 55 return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
56} 56}
57 57
58struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
59{
60 if (!e1)
61 return e2;
62 return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
63}
64
58struct expr *expr_copy(struct expr *org) 65struct expr *expr_copy(struct expr *org)
59{ 66{
60 struct expr *e; 67 struct expr *e;
@@ -158,9 +165,22 @@ static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct e
158 165
159void expr_eliminate_eq(struct expr **ep1, struct expr **ep2) 166void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
160{ 167{
161 if (!e1 || !e2 || e1->type != e2->type) 168 if (!e1 || !e2)
162 return; 169 return;
163 __expr_eliminate_eq(e1->type, ep1, ep2); 170 switch (e1->type) {
171 case E_OR:
172 case E_AND:
173 __expr_eliminate_eq(e1->type, ep1, ep2);
174 default:
175 ;
176 }
177 if (e1->type != e2->type) switch (e2->type) {
178 case E_OR:
179 case E_AND:
180 __expr_eliminate_eq(e2->type, ep1, ep2);
181 default:
182 ;
183 }
164 e1 = expr_eliminate_yn(e1); 184 e1 = expr_eliminate_yn(e1);
165 e2 = expr_eliminate_yn(e2); 185 e2 = expr_eliminate_yn(e2);
166} 186}
@@ -195,6 +215,7 @@ int expr_eq(struct expr *e1, struct expr *e2)
195 trans_count = old_count; 215 trans_count = old_count;
196 return res; 216 return res;
197 case E_CHOICE: 217 case E_CHOICE:
218 case E_RANGE:
198 case E_NONE: 219 case E_NONE:
199 /* panic */; 220 /* panic */;
200 } 221 }
@@ -897,6 +918,7 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb
897 case E_SYMBOL: 918 case E_SYMBOL:
898 return expr_alloc_comp(type, e->left.sym, sym); 919 return expr_alloc_comp(type, e->left.sym, sym);
899 case E_CHOICE: 920 case E_CHOICE:
921 case E_RANGE:
900 case E_NONE: 922 case E_NONE:
901 /* panic */; 923 /* panic */;
902 } 924 }
@@ -914,7 +936,7 @@ tristate expr_calc_value(struct expr *e)
914 switch (e->type) { 936 switch (e->type) {
915 case E_SYMBOL: 937 case E_SYMBOL:
916 sym_calc_value(e->left.sym); 938 sym_calc_value(e->left.sym);
917 return S_TRI(e->left.sym->curr); 939 return e->left.sym->curr.tri;
918 case E_AND: 940 case E_AND:
919 val1 = expr_calc_value(e->left.expr); 941 val1 = expr_calc_value(e->left.expr);
920 val2 = expr_calc_value(e->right.expr); 942 val2 = expr_calc_value(e->right.expr);
@@ -1017,11 +1039,18 @@ void expr_print(struct expr *e, void (*fn)(void *, const char *), void *data, in
1017 expr_print(e->right.expr, fn, data, E_AND); 1039 expr_print(e->right.expr, fn, data, E_AND);
1018 break; 1040 break;
1019 case E_CHOICE: 1041 case E_CHOICE:
1042 fn(data, e->right.sym->name);
1020 if (e->left.expr) { 1043 if (e->left.expr) {
1021 expr_print(e->left.expr, fn, data, E_CHOICE);
1022 fn(data, " ^ "); 1044 fn(data, " ^ ");
1045 expr_print(e->left.expr, fn, data, E_CHOICE);
1023 } 1046 }
1047 break;
1048 case E_RANGE:
1049 fn(data, "[");
1050 fn(data, e->left.sym->name);
1051 fn(data, " ");
1024 fn(data, e->right.sym->name); 1052 fn(data, e->right.sym->name);
1053 fn(data, "]");
1025 break; 1054 break;
1026 default: 1055 default:
1027 { 1056 {
diff --git a/scripts/config/expr.h b/scripts/config/expr.h
index e96d03b5a..cc616f1f8 100644
--- a/scripts/config/expr.h
+++ b/scripts/config/expr.h
@@ -18,10 +18,6 @@ extern "C" {
18struct file { 18struct file {
19 struct file *next; 19 struct file *next;
20 struct file *parent; 20 struct file *parent;
21#ifdef CML1
22 struct statement *stmt;
23 struct statement *last_stmt;
24#endif
25 char *name; 21 char *name;
26 int lineno; 22 int lineno;
27 int flags; 23 int flags;
@@ -36,7 +32,7 @@ typedef enum tristate {
36} tristate; 32} tristate;
37 33
38enum expr_type { 34enum expr_type {
39 E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL 35 E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
40}; 36};
41 37
42union expr_data { 38union expr_data {
@@ -45,18 +41,10 @@ union expr_data {
45}; 41};
46 42
47struct expr { 43struct expr {
48#ifdef CML1
49 int token;
50#else
51 enum expr_type type; 44 enum expr_type type;
52#endif
53 union expr_data left, right; 45 union expr_data left, right;
54}; 46};
55 47
56#define E_TRI(ev) ((ev).tri)
57#define E_EXPR(ev) ((ev).expr)
58#define E_CALC(ev) (E_TRI(ev) = expr_calc_value(E_EXPR(ev)))
59
60#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2)) 48#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
61#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2)) 49#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
62#define E_NOT(dep) (2-(dep)) 50#define E_NOT(dep) (2-(dep))
@@ -66,12 +54,8 @@ struct expr_value {
66 tristate tri; 54 tristate tri;
67}; 55};
68 56
69#define S_VAL(sv) ((sv).value)
70#define S_TRI(sv) ((sv).tri)
71#define S_EQ(sv1, sv2) (S_VAL(sv1) == S_VAL(sv2) || !strcmp(S_VAL(sv1), S_VAL(sv2)))
72
73struct symbol_value { 57struct symbol_value {
74 void *value; 58 void *val;
75 tristate tri; 59 tristate tri;
76}; 60};
77 61
@@ -83,31 +67,17 @@ struct symbol {
83 struct symbol *next; 67 struct symbol *next;
84 char *name; 68 char *name;
85 char *help; 69 char *help;
86#ifdef CML1
87 int type;
88#else
89 enum symbol_type type; 70 enum symbol_type type;
90#endif 71 struct symbol_value curr, user;
91 struct symbol_value curr, def;
92 tristate visible; 72 tristate visible;
93 int flags; 73 int flags;
94 struct property *prop; 74 struct property *prop;
95 struct expr *dep, *dep2; 75 struct expr *dep, *dep2;
96 struct menu *menu; 76 struct expr_value rev_dep;
97}; 77};
98 78
99#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER) 79#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
100 80
101#ifdef CML1
102#define SYMBOL_UNKNOWN S_UNKNOWN
103#define SYMBOL_BOOLEAN S_BOOLEAN
104#define SYMBOL_TRISTATE S_TRISTATE
105#define SYMBOL_INT S_INT
106#define SYMBOL_HEX S_HEX
107#define SYMBOL_STRING S_STRING
108#define SYMBOL_OTHER S_OTHER
109#endif
110
111#define SYMBOL_YES 0x0001 81#define SYMBOL_YES 0x0001
112#define SYMBOL_MOD 0x0002 82#define SYMBOL_MOD 0x0002
113#define SYMBOL_NO 0x0004 83#define SYMBOL_NO 0x0004
@@ -122,42 +92,38 @@ struct symbol {
122#define SYMBOL_CHANGED 0x0400 92#define SYMBOL_CHANGED 0x0400
123#define SYMBOL_NEW 0x0800 93#define SYMBOL_NEW 0x0800
124#define SYMBOL_AUTO 0x1000 94#define SYMBOL_AUTO 0x1000
95#define SYMBOL_CHECKED 0x2000
96#define SYMBOL_CHECK_DONE 0x4000
97#define SYMBOL_WARNED 0x8000
125 98
126#define SYMBOL_MAXLENGTH 256 99#define SYMBOL_MAXLENGTH 256
127#define SYMBOL_HASHSIZE 257 100#define SYMBOL_HASHSIZE 257
128#define SYMBOL_HASHMASK 0xff 101#define SYMBOL_HASHMASK 0xff
129 102
130enum prop_type { 103enum prop_type {
131 P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_ROOTMENU, P_DEFAULT, P_CHOICE 104 P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
132}; 105};
133 106
134struct property { 107struct property {
135 struct property *next; 108 struct property *next;
136 struct symbol *sym; 109 struct symbol *sym;
137#ifdef CML1
138 int token;
139#else
140 enum prop_type type; 110 enum prop_type type;
141#endif
142 const char *text; 111 const char *text;
143 struct symbol *def;
144 struct expr_value visible; 112 struct expr_value visible;
145 struct expr *dep; 113 struct expr *expr;
146 struct expr *dep2;
147 struct menu *menu; 114 struct menu *menu;
148 struct file *file; 115 struct file *file;
149 int lineno; 116 int lineno;
150#ifdef CML1
151 struct property *next_pos;
152#endif
153}; 117};
154 118
155#define for_all_properties(sym, st, tok) \ 119#define for_all_properties(sym, st, tok) \
156 for (st = sym->prop; st; st = st->next) \ 120 for (st = sym->prop; st; st = st->next) \
157 if (st->type == (tok)) 121 if (st->type == (tok))
158#define for_all_prompts(sym, st) for_all_properties(sym, st, P_PROMPT)
159#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT) 122#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)
160#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE) 123#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE)
124#define for_all_prompts(sym, st) \
125 for (st = sym->prop; st; st = st->next) \
126 if (st->text)
161 127
162struct menu { 128struct menu {
163 struct menu *next; 129 struct menu *next;
@@ -166,12 +132,16 @@ struct menu {
166 struct symbol *sym; 132 struct symbol *sym;
167 struct property *prompt; 133 struct property *prompt;
168 struct expr *dep; 134 struct expr *dep;
135 unsigned int flags;
169 //char *help; 136 //char *help;
170 struct file *file; 137 struct file *file;
171 int lineno; 138 int lineno;
172 void *data; 139 void *data;
173}; 140};
174 141
142#define MENU_CHANGED 0x0001
143#define MENU_ROOT 0x0002
144
175#ifndef SWIG 145#ifndef SWIG
176 146
177extern struct file *file_list; 147extern struct file *file_list;
@@ -181,18 +151,12 @@ struct file *lookup_file(const char *name);
181extern struct symbol symbol_yes, symbol_no, symbol_mod; 151extern struct symbol symbol_yes, symbol_no, symbol_mod;
182extern struct symbol *modules_sym; 152extern struct symbol *modules_sym;
183extern int cdebug; 153extern int cdebug;
184extern int print_type;
185struct expr *expr_alloc_symbol(struct symbol *sym); 154struct expr *expr_alloc_symbol(struct symbol *sym);
186#ifdef CML1
187struct expr *expr_alloc_one(int token, struct expr *ce);
188struct expr *expr_alloc_two(int token, struct expr *e1, struct expr *e2);
189struct expr *expr_alloc_comp(int token, struct symbol *s1, struct symbol *s2);
190#else
191struct expr *expr_alloc_one(enum expr_type type, struct expr *ce); 155struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
192struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2); 156struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
193struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2); 157struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
194#endif
195struct expr *expr_alloc_and(struct expr *e1, struct expr *e2); 158struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
159struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
196struct expr *expr_copy(struct expr *org); 160struct expr *expr_copy(struct expr *org);
197void expr_free(struct expr *e); 161void expr_free(struct expr *e);
198int expr_eq(struct expr *e1, struct expr *e2); 162int expr_eq(struct expr *e1, struct expr *e2);
@@ -212,17 +176,6 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb
212void expr_fprint(struct expr *e, FILE *out); 176void expr_fprint(struct expr *e, FILE *out);
213void print_expr(int mask, struct expr *e, int prevtoken); 177void print_expr(int mask, struct expr *e, int prevtoken);
214 178
215#ifdef CML1
216static inline int expr_is_yes(struct expr *e)
217{
218 return !e || (e->token == WORD && e->left.sym == &symbol_yes);
219}
220
221static inline int expr_is_no(struct expr *e)
222{
223 return e && (e->token == WORD && e->left.sym == &symbol_no);
224}
225#else
226static inline int expr_is_yes(struct expr *e) 179static inline int expr_is_yes(struct expr *e)
227{ 180{
228 return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes); 181 return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);
@@ -233,7 +186,6 @@ static inline int expr_is_no(struct expr *e)
233 return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no); 186 return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
234} 187}
235#endif 188#endif
236#endif
237 189
238#ifdef __cplusplus 190#ifdef __cplusplus
239} 191}
diff --git a/scripts/config/lex.zconf.c_shipped b/scripts/config/lex.zconf.c_shipped
index df102812f..22dda11f7 100644
--- a/scripts/config/lex.zconf.c_shipped
+++ b/scripts/config/lex.zconf.c_shipped
@@ -1,50 +1,84 @@
1#define yy_create_buffer zconf_create_buffer
2#define yy_delete_buffer zconf_delete_buffer
3#define yy_scan_buffer zconf_scan_buffer
4#define yy_scan_string zconf_scan_string
5#define yy_scan_bytes zconf_scan_bytes
6#define yy_flex_debug zconf_flex_debug
7#define yy_init_buffer zconf_init_buffer
8#define yy_flush_buffer zconf_flush_buffer
9#define yy_load_buffer_state zconf_load_buffer_state
10#define yy_switch_to_buffer zconf_switch_to_buffer
11#define yyin zconfin
12#define yyleng zconfleng
13#define yylex zconflex
14#define yyout zconfout
15#define yyrestart zconfrestart
16#define yytext zconftext
17 1
18/* A lexical scanner generated by flex */ 2#line 3 "lex.zconf.c"
19 3
20/* Scanner skeleton version: 4#define YY_INT_ALIGNED short int
21 * $Header: /var/cvs/busybox/scripts/config/lex.zconf.c_shipped,v 1.1 2002/12/05 08:41:07 andersen Exp $ 5
22 */ 6/* A lexical scanner generated by flex */
23 7
24#define FLEX_SCANNER 8#define FLEX_SCANNER
25#define YY_FLEX_MAJOR_VERSION 2 9#define YY_FLEX_MAJOR_VERSION 2
26#define YY_FLEX_MINOR_VERSION 5 10#define YY_FLEX_MINOR_VERSION 5
11#define YY_FLEX_SUBMINOR_VERSION 31
12#if YY_FLEX_SUBMINOR_VERSION > 0
13#define FLEX_BETA
14#endif
15
16/* First, we deal with platform-specific or compiler-specific issues. */
27 17
18/* begin standard C headers. */
28#include <stdio.h> 19#include <stdio.h>
20#include <string.h>
29#include <errno.h> 21#include <errno.h>
22#include <stdlib.h>
30 23
31/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ 24/* end standard C headers. */
32#ifdef c_plusplus
33#ifndef __cplusplus
34#define __cplusplus
35#endif
36#endif
37 25
26/* flex integer type definitions */
38 27
39#ifdef __cplusplus 28#ifndef FLEXINT_H
29#define FLEXINT_H
40 30
41#include <stdlib.h> 31/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
42#ifndef _WIN32 32
43#include <unistd.h> 33#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
34#include <inttypes.h>
35typedef int8_t flex_int8_t;
36typedef uint8_t flex_uint8_t;
37typedef int16_t flex_int16_t;
38typedef uint16_t flex_uint16_t;
39typedef int32_t flex_int32_t;
40typedef uint32_t flex_uint32_t;
41#else
42typedef signed char flex_int8_t;
43typedef short int flex_int16_t;
44typedef int flex_int32_t;
45typedef unsigned char flex_uint8_t;
46typedef unsigned short int flex_uint16_t;
47typedef unsigned int flex_uint32_t;
48#endif /* ! C99 */
49
50/* Limits of integral types. */
51#ifndef INT8_MIN
52#define INT8_MIN (-128)
53#endif
54#ifndef INT16_MIN
55#define INT16_MIN (-32767-1)
56#endif
57#ifndef INT32_MIN
58#define INT32_MIN (-2147483647-1)
59#endif
60#ifndef INT8_MAX
61#define INT8_MAX (127)
62#endif
63#ifndef INT16_MAX
64#define INT16_MAX (32767)
65#endif
66#ifndef INT32_MAX
67#define INT32_MAX (2147483647)
68#endif
69#ifndef UINT8_MAX
70#define UINT8_MAX (255U)
44#endif 71#endif
72#ifndef UINT16_MAX
73#define UINT16_MAX (65535U)
74#endif
75#ifndef UINT32_MAX
76#define UINT32_MAX (4294967295U)
77#endif
78
79#endif /* ! FLEXINT_H */
45 80
46/* Use prototypes in function declarations. */ 81#ifdef __cplusplus
47#define YY_USE_PROTOS
48 82
49/* The "const" storage-class-modifier is valid. */ 83/* The "const" storage-class-modifier is valid. */
50#define YY_USE_CONST 84#define YY_USE_CONST
@@ -53,34 +87,17 @@
53 87
54#if __STDC__ 88#if __STDC__
55 89
56#define YY_USE_PROTOS
57#define YY_USE_CONST 90#define YY_USE_CONST
58 91
59#endif /* __STDC__ */ 92#endif /* __STDC__ */
60#endif /* ! __cplusplus */ 93#endif /* ! __cplusplus */
61 94
62#ifdef __TURBOC__
63 #pragma warn -rch
64 #pragma warn -use
65#include <io.h>
66#include <stdlib.h>
67#define YY_USE_CONST
68#define YY_USE_PROTOS
69#endif
70
71#ifdef YY_USE_CONST 95#ifdef YY_USE_CONST
72#define yyconst const 96#define yyconst const
73#else 97#else
74#define yyconst 98#define yyconst
75#endif 99#endif
76 100
77
78#ifdef YY_USE_PROTOS
79#define YY_PROTO(proto) proto
80#else
81#define YY_PROTO(proto) ()
82#endif
83
84/* Returned upon end-of-file. */ 101/* Returned upon end-of-file. */
85#define YY_NULL 0 102#define YY_NULL 0
86 103
@@ -95,71 +112,71 @@
95 * but we do it the disgusting crufty way forced on us by the ()-less 112 * but we do it the disgusting crufty way forced on us by the ()-less
96 * definition of BEGIN. 113 * definition of BEGIN.
97 */ 114 */
98#define BEGIN yy_start = 1 + 2 * 115#define BEGIN (yy_start) = 1 + 2 *
99 116
100/* Translate the current start state into a value that can be later handed 117/* Translate the current start state into a value that can be later handed
101 * to BEGIN to return to the state. The YYSTATE alias is for lex 118 * to BEGIN to return to the state. The YYSTATE alias is for lex
102 * compatibility. 119 * compatibility.
103 */ 120 */
104#define YY_START ((yy_start - 1) / 2) 121#define YY_START (((yy_start) - 1) / 2)
105#define YYSTATE YY_START 122#define YYSTATE YY_START
106 123
107/* Action number for EOF rule of a given start state. */ 124/* Action number for EOF rule of a given start state. */
108#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 125#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
109 126
110/* Special action meaning "start processing a new file". */ 127/* Special action meaning "start processing a new file". */
111#define YY_NEW_FILE yyrestart( yyin ) 128#define YY_NEW_FILE zconfrestart(zconfin )
112 129
113#define YY_END_OF_BUFFER_CHAR 0 130#define YY_END_OF_BUFFER_CHAR 0
114 131
115/* Size of default input buffer. */ 132/* Size of default input buffer. */
133#ifndef YY_BUF_SIZE
116#define YY_BUF_SIZE 16384 134#define YY_BUF_SIZE 16384
135#endif
117 136
137#ifndef YY_TYPEDEF_YY_BUFFER_STATE
138#define YY_TYPEDEF_YY_BUFFER_STATE
118typedef struct yy_buffer_state *YY_BUFFER_STATE; 139typedef struct yy_buffer_state *YY_BUFFER_STATE;
140#endif
119 141
120extern int yyleng; 142extern int zconfleng;
121extern FILE *yyin, *yyout; 143
144extern FILE *zconfin, *zconfout;
122 145
123#define EOB_ACT_CONTINUE_SCAN 0 146#define EOB_ACT_CONTINUE_SCAN 0
124#define EOB_ACT_END_OF_FILE 1 147#define EOB_ACT_END_OF_FILE 1
125#define EOB_ACT_LAST_MATCH 2 148#define EOB_ACT_LAST_MATCH 2
126 149
127/* The funky do-while in the following #define is used to turn the definition 150 #define YY_LESS_LINENO(n)
128 * int a single C statement (which needs a semi-colon terminator). This 151
129 * avoids problems with code like: 152/* Return all but the first "n" matched characters back to the input stream. */
130 *
131 * if ( condition_holds )
132 * yyless( 5 );
133 * else
134 * do_something_else();
135 *
136 * Prior to using the do-while the compiler would get upset at the
137 * "else" because it interpreted the "if" statement as being all
138 * done when it reached the ';' after the yyless() call.
139 */
140
141/* Return all but the first 'n' matched characters back to the input stream. */
142
143#define yyless(n) \ 153#define yyless(n) \
144 do \ 154 do \
145 { \ 155 { \
146 /* Undo effects of setting up yytext. */ \ 156 /* Undo effects of setting up zconftext. */ \
147 *yy_cp = yy_hold_char; \ 157 int yyless_macro_arg = (n); \
158 YY_LESS_LINENO(yyless_macro_arg);\
159 *yy_cp = (yy_hold_char); \
148 YY_RESTORE_YY_MORE_OFFSET \ 160 YY_RESTORE_YY_MORE_OFFSET \
149 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ 161 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
150 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 162 YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
151 } \ 163 } \
152 while ( 0 ) 164 while ( 0 )
153 165
154#define unput(c) yyunput( c, yytext_ptr ) 166#define unput(c) yyunput( c, (yytext_ptr) )
155 167
156/* The following is because we cannot portably get our hands on size_t 168/* The following is because we cannot portably get our hands on size_t
157 * (without autoconf's help, which isn't available because we want 169 * (without autoconf's help, which isn't available because we want
158 * flex-generated scanners to compile on their own). 170 * flex-generated scanners to compile on their own).
159 */ 171 */
160typedef unsigned int yy_size_t;
161 172
173#ifndef YY_TYPEDEF_YY_SIZE_T
174#define YY_TYPEDEF_YY_SIZE_T
175typedef unsigned int yy_size_t;
176#endif
162 177
178#ifndef YY_STRUCT_YY_BUFFER_STATE
179#define YY_STRUCT_YY_BUFFER_STATE
163struct yy_buffer_state 180struct yy_buffer_state
164 { 181 {
165 FILE *yy_input_file; 182 FILE *yy_input_file;
@@ -196,12 +213,16 @@ struct yy_buffer_state
196 */ 213 */
197 int yy_at_bol; 214 int yy_at_bol;
198 215
216 int yy_bs_lineno; /**< The line count. */
217 int yy_bs_column; /**< The column count. */
218
199 /* Whether to try to fill the input buffer when we reach the 219 /* Whether to try to fill the input buffer when we reach the
200 * end of it. 220 * end of it.
201 */ 221 */
202 int yy_fill_buffer; 222 int yy_fill_buffer;
203 223
204 int yy_buffer_status; 224 int yy_buffer_status;
225
205#define YY_BUFFER_NEW 0 226#define YY_BUFFER_NEW 0
206#define YY_BUFFER_NORMAL 1 227#define YY_BUFFER_NORMAL 1
207 /* When an EOF's been seen but there's still some text to process 228 /* When an EOF's been seen but there's still some text to process
@@ -211,97 +232,126 @@ struct yy_buffer_state
211 * possible backing-up. 232 * possible backing-up.
212 * 233 *
213 * When we actually see the EOF, we change the status to "new" 234 * When we actually see the EOF, we change the status to "new"
214 * (via yyrestart()), so that the user can continue scanning by 235 * (via zconfrestart()), so that the user can continue scanning by
215 * just pointing yyin at a new input file. 236 * just pointing zconfin at a new input file.
216 */ 237 */
217#define YY_BUFFER_EOF_PENDING 2 238#define YY_BUFFER_EOF_PENDING 2
239
218 }; 240 };
241#endif /* !YY_STRUCT_YY_BUFFER_STATE */
219 242
220static YY_BUFFER_STATE yy_current_buffer = 0; 243/* Stack of input buffers. */
244static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
245static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
246static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
221 247
222/* We provide macros for accessing buffer states in case in the 248/* We provide macros for accessing buffer states in case in the
223 * future we want to put the buffer states in a more general 249 * future we want to put the buffer states in a more general
224 * "scanner state". 250 * "scanner state".
251 *
252 * Returns the top of the stack, or NULL.
225 */ 253 */
226#define YY_CURRENT_BUFFER yy_current_buffer 254#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
255 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
256 : NULL)
227 257
258/* Same as previous macro, but useful when we know that the buffer stack is not
259 * NULL or when we need an lvalue. For internal use only.
260 */
261#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
228 262
229/* yy_hold_char holds the character lost when yytext is formed. */ 263/* yy_hold_char holds the character lost when zconftext is formed. */
230static char yy_hold_char; 264static char yy_hold_char;
231
232static int yy_n_chars; /* number of characters read into yy_ch_buf */ 265static int yy_n_chars; /* number of characters read into yy_ch_buf */
233 266int zconfleng;
234
235int yyleng;
236 267
237/* Points to current character in buffer. */ 268/* Points to current character in buffer. */
238static char *yy_c_buf_p = (char *) 0; 269static char *yy_c_buf_p = (char *) 0;
239static int yy_init = 1; /* whether we need to initialize */ 270static int yy_init = 1; /* whether we need to initialize */
240static int yy_start = 0; /* start state number */ 271static int yy_start = 0; /* start state number */
241 272
242/* Flag which is used to allow yywrap()'s to do buffer switches 273/* Flag which is used to allow zconfwrap()'s to do buffer switches
243 * instead of setting up a fresh yyin. A bit of a hack ... 274 * instead of setting up a fresh zconfin. A bit of a hack ...
244 */ 275 */
245static int yy_did_buffer_switch_on_eof; 276static int yy_did_buffer_switch_on_eof;
246 277
247void yyrestart YY_PROTO(( FILE *input_file )); 278void zconfrestart (FILE *input_file );
279void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
280YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
281void zconf_delete_buffer (YY_BUFFER_STATE b );
282void zconf_flush_buffer (YY_BUFFER_STATE b );
283void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
284void zconfpop_buffer_state (void );
285
286static void zconfensure_buffer_stack (void );
287static void zconf_load_buffer_state (void );
288static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
248 289
249void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); 290#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
250void yy_load_buffer_state YY_PROTO(( void ));
251YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
252void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
253void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
254void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
255#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
256 291
257YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); 292YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
258YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); 293YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
259YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); 294YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
260 295
261static void *yy_flex_alloc YY_PROTO(( yy_size_t )); 296void *zconfalloc (yy_size_t );
262static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); 297void *zconfrealloc (void *,yy_size_t );
263static void yy_flex_free YY_PROTO(( void * )); 298void zconffree (void * );
264 299
265#define yy_new_buffer yy_create_buffer 300#define yy_new_buffer zconf_create_buffer
266 301
267#define yy_set_interactive(is_interactive) \ 302#define yy_set_interactive(is_interactive) \
268 { \ 303 { \
269 if ( ! yy_current_buffer ) \ 304 if ( ! YY_CURRENT_BUFFER ){ \
270 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ 305 zconfensure_buffer_stack (); \
271 yy_current_buffer->yy_is_interactive = is_interactive; \ 306 YY_CURRENT_BUFFER_LVALUE = \
307 zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
308 } \
309 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
272 } 310 }
273 311
274#define yy_set_bol(at_bol) \ 312#define yy_set_bol(at_bol) \
275 { \ 313 { \
276 if ( ! yy_current_buffer ) \ 314 if ( ! YY_CURRENT_BUFFER ){\
277 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ 315 zconfensure_buffer_stack (); \
278 yy_current_buffer->yy_at_bol = at_bol; \ 316 YY_CURRENT_BUFFER_LVALUE = \
317 zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
318 } \
319 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
279 } 320 }
280 321
281#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) 322#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
282 323
324/* Begin user sect3 */
283 325
284#define yywrap() 1 326#define zconfwrap(n) 1
285#define YY_SKIP_YYWRAP 327#define YY_SKIP_YYWRAP
328
286typedef unsigned char YY_CHAR; 329typedef unsigned char YY_CHAR;
287FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 330
331FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
332
288typedef int yy_state_type; 333typedef int yy_state_type;
289extern char *yytext; 334
290#define yytext_ptr yytext 335extern int zconflineno;
291static yyconst short yy_nxt[][37] = 336
337int zconflineno = 1;
338
339extern char *zconftext;
340#define yytext_ptr zconftext
341static yyconst flex_int16_t yy_nxt[][38] =
292 { 342 {
293 { 343 {
294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
297 0, 0, 0, 0, 0, 0, 0 347 0, 0, 0, 0, 0, 0, 0, 0
298 }, 348 },
299 349
300 { 350 {
301 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, 351 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
302 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 352 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
303 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 353 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
304 12, 12, 12, 12, 12, 12, 12 354 12, 12, 12, 12, 12, 12, 12, 12
305 }, 355 },
306 356
307 { 357 {
@@ -309,21 +359,21 @@ static yyconst short yy_nxt[][37] =
309 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 359 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
310 360
311 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 361 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
312 12, 12, 12, 12, 12, 12, 12 362 12, 12, 12, 12, 12, 12, 12, 12
313 }, 363 },
314 364
315 { 365 {
316 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, 366 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
317 16, 16, 16, 18, 16, 16, 18, 19, 20, 21, 367 16, 16, 16, 18, 16, 16, 18, 18, 19, 20,
318 22, 18, 18, 23, 24, 18, 25, 18, 26, 27, 368 21, 22, 18, 18, 23, 24, 18, 25, 18, 26,
319 18, 28, 29, 30, 18, 18, 16 369 27, 18, 28, 29, 30, 18, 18, 16
320 }, 370 },
321 371
322 { 372 {
323 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, 373 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
324 16, 16, 16, 18, 16, 16, 18, 19, 20, 21, 374 16, 16, 16, 18, 16, 16, 18, 18, 19, 20,
325 22, 18, 18, 23, 24, 18, 25, 18, 26, 27, 375 21, 22, 18, 18, 23, 24, 18, 25, 18, 26,
326 18, 28, 29, 30, 18, 18, 16 376 27, 18, 28, 29, 30, 18, 18, 16
327 377
328 }, 378 },
329 379
@@ -331,14 +381,14 @@ static yyconst short yy_nxt[][37] =
331 11, 31, 32, 33, 31, 31, 31, 31, 31, 31, 381 11, 31, 32, 33, 31, 31, 31, 31, 31, 31,
332 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 382 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
333 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 383 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
334 31, 31, 31, 31, 31, 31, 31 384 31, 31, 31, 31, 31, 31, 31, 31
335 }, 385 },
336 386
337 { 387 {
338 11, 31, 32, 33, 31, 31, 31, 31, 31, 31, 388 11, 31, 32, 33, 31, 31, 31, 31, 31, 31,
339 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 389 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
340 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 390 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
341 31, 31, 31, 31, 31, 31, 31 391 31, 31, 31, 31, 31, 31, 31, 31
342 }, 392 },
343 393
344 { 394 {
@@ -346,36 +396,36 @@ static yyconst short yy_nxt[][37] =
346 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 396 34, 34, 34, 34, 34, 37, 34, 34, 34, 34,
347 397
348 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 398 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
349 34, 34, 34, 34, 34, 34, 34 399 34, 34, 34, 34, 34, 34, 34, 34
350 }, 400 },
351 401
352 { 402 {
353 11, 34, 34, 35, 34, 36, 34, 34, 36, 34, 403 11, 34, 34, 35, 34, 36, 34, 34, 36, 34,
354 34, 34, 34, 34, 34, 37, 34, 34, 34, 34, 404 34, 34, 34, 34, 34, 37, 34, 34, 34, 34,
355 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 405 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
356 34, 34, 34, 34, 34, 34, 34 406 34, 34, 34, 34, 34, 34, 34, 34
357 }, 407 },
358 408
359 { 409 {
360 11, 38, 38, 39, 40, 41, 38, 42, 41, 43, 410 11, 38, 38, 39, 40, 41, 42, 43, 41, 44,
361 44, 45, 46, 46, 47, 38, 46, 46, 46, 46, 411 45, 46, 47, 47, 48, 49, 47, 47, 47, 47,
362 46, 46, 46, 46, 48, 46, 46, 46, 49, 46, 412 47, 47, 47, 47, 47, 50, 47, 47, 47, 51,
363 46, 46, 46, 46, 46, 46, 50 413 47, 47, 47, 47, 47, 47, 47, 52
364 414
365 }, 415 },
366 416
367 { 417 {
368 11, 38, 38, 39, 40, 41, 38, 42, 41, 43, 418 11, 38, 38, 39, 40, 41, 42, 43, 41, 44,
369 44, 45, 46, 46, 47, 38, 46, 46, 46, 46, 419 45, 46, 47, 47, 48, 49, 47, 47, 47, 47,
370 46, 46, 46, 46, 48, 46, 46, 46, 49, 46, 420 47, 47, 47, 47, 47, 50, 47, 47, 47, 51,
371 46, 46, 46, 46, 46, 46, 50 421 47, 47, 47, 47, 47, 47, 47, 52
372 }, 422 },
373 423
374 { 424 {
375 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 425 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
376 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 426 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
377 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 427 -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
378 -11, -11, -11, -11, -11, -11, -11 428 -11, -11, -11, -11, -11, -11, -11, -11
379 }, 429 },
380 430
381 { 431 {
@@ -383,36 +433,36 @@ static yyconst short yy_nxt[][37] =
383 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 433 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
384 434
385 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, 435 -12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
386 -12, -12, -12, -12, -12, -12, -12 436 -12, -12, -12, -12, -12, -12, -12, -12
387 }, 437 },
388 438
389 { 439 {
390 11, -13, 51, 52, -13, -13, 53, -13, -13, -13, 440 11, -13, 53, 54, -13, -13, 55, -13, -13, -13,
391 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 441 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13,
392 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, 442 -13, -13, -13, -13, -13, -13, -13, -13, -13, -13,
393 -13, -13, -13, -13, -13, -13, -13 443 -13, -13, -13, -13, -13, -13, -13, -13
394 }, 444 },
395 445
396 { 446 {
397 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, 447 11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
398 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 448 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
399 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14, 449 -14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
400 -14, -14, -14, -14, -14, -14, -14 450 -14, -14, -14, -14, -14, -14, -14, -14
401 451
402 }, 452 },
403 453
404 { 454 {
405 11, 54, 54, 55, 54, 54, 54, 54, 54, 54, 455 11, 56, 56, 57, 56, 56, 56, 56, 56, 56,
406 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 456 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
407 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 457 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
408 54, 54, 54, 54, 54, 54, 54 458 56, 56, 56, 56, 56, 56, 56, 56
409 }, 459 },
410 460
411 { 461 {
412 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, 462 11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
413 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 463 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
414 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, 464 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
415 -16, -16, -16, -16, -16, -16, -16 465 -16, -16, -16, -16, -16, -16, -16, -16
416 }, 466 },
417 467
418 { 468 {
@@ -420,132 +470,132 @@ static yyconst short yy_nxt[][37] =
420 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 470 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
421 471
422 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 472 -17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
423 -17, -17, -17, -17, -17, -17, -17 473 -17, -17, -17, -17, -17, -17, -17, -17
424 }, 474 },
425 475
426 { 476 {
427 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, 477 11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
428 -18, -18, -18, 56, -18, -18, 56, 56, 56, 56, 478 -18, -18, -18, 58, -18, -18, 58, 58, 58, 58,
429 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 479 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
430 56, 56, 56, 56, 56, 56, -18 480 58, 58, 58, 58, 58, 58, 58, -18
431 }, 481 },
432 482
433 { 483 {
434 11, -19, -19, -19, -19, -19, -19, -19, -19, -19, 484 11, -19, -19, -19, -19, -19, -19, -19, -19, -19,
435 -19, -19, -19, 56, -19, -19, 56, 56, 56, 56, 485 -19, -19, -19, 58, -19, -19, 58, 58, 58, 58,
436 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 486 58, 58, 58, 58, 58, 58, 58, 58, 58, 59,
437 56, 56, 56, 56, 56, 56, -19 487 58, 58, 58, 58, 58, 58, 58, -19
438 488
439 }, 489 },
440 490
441 { 491 {
442 11, -20, -20, -20, -20, -20, -20, -20, -20, -20, 492 11, -20, -20, -20, -20, -20, -20, -20, -20, -20,
443 -20, -20, -20, 56, -20, -20, 56, 56, 56, 56, 493 -20, -20, -20, 58, -20, -20, 58, 58, 58, 58,
444 56, 56, 56, 58, 56, 56, 56, 56, 59, 56, 494 58, 58, 58, 58, 60, 58, 58, 58, 58, 61,
445 56, 56, 56, 56, 56, 56, -20 495 58, 58, 58, 58, 58, 58, 58, -20
446 }, 496 },
447 497
448 { 498 {
449 11, -21, -21, -21, -21, -21, -21, -21, -21, -21, 499 11, -21, -21, -21, -21, -21, -21, -21, -21, -21,
450 -21, -21, -21, 56, -21, -21, 56, 56, 56, 56, 500 -21, -21, -21, 58, -21, -21, 58, 58, 58, 58,
451 60, 56, 56, 56, 56, 56, 56, 56, 56, 56, 501 58, 62, 58, 58, 58, 58, 58, 58, 58, 58,
452 56, 56, 56, 56, 56, 56, -21 502 58, 58, 58, 58, 58, 58, 58, -21
453 }, 503 },
454 504
455 { 505 {
456 11, -22, -22, -22, -22, -22, -22, -22, -22, -22, 506 11, -22, -22, -22, -22, -22, -22, -22, -22, -22,
457 -22, -22, -22, 56, -22, -22, 56, 56, 56, 56, 507 -22, -22, -22, 58, -22, -22, 58, 58, 58, 58,
458 508
459 56, 56, 56, 56, 56, 56, 56, 61, 56, 56, 509 58, 58, 58, 58, 58, 58, 58, 58, 63, 58,
460 56, 56, 56, 56, 56, 56, -22 510 58, 58, 58, 58, 58, 58, 58, -22
461 }, 511 },
462 512
463 { 513 {
464 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, 514 11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
465 -23, -23, -23, 56, -23, -23, 56, 56, 56, 56, 515 -23, -23, -23, 58, -23, -23, 58, 58, 58, 58,
466 62, 56, 56, 56, 56, 56, 56, 56, 56, 56, 516 58, 64, 58, 58, 58, 58, 58, 58, 58, 58,
467 56, 56, 56, 56, 56, 56, -23 517 58, 58, 58, 58, 58, 58, 58, -23
468 }, 518 },
469 519
470 { 520 {
471 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, 521 11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
472 -24, -24, -24, 56, -24, -24, 56, 56, 56, 56, 522 -24, -24, -24, 58, -24, -24, 58, 58, 58, 58,
473 56, 63, 56, 56, 56, 56, 56, 64, 56, 56, 523 58, 58, 65, 58, 58, 58, 58, 58, 66, 58,
474 56, 56, 56, 56, 56, 56, -24 524 58, 58, 58, 58, 58, 58, 58, -24
475 525
476 }, 526 },
477 527
478 { 528 {
479 11, -25, -25, -25, -25, -25, -25, -25, -25, -25, 529 11, -25, -25, -25, -25, -25, -25, -25, -25, -25,
480 -25, -25, -25, 56, -25, -25, 65, 56, 56, 56, 530 -25, -25, -25, 58, -25, -25, 58, 67, 58, 58,
481 66, 56, 56, 56, 56, 56, 56, 56, 56, 56, 531 58, 68, 58, 58, 58, 58, 58, 58, 58, 58,
482 56, 56, 56, 56, 56, 56, -25 532 58, 58, 58, 58, 58, 58, 58, -25
483 }, 533 },
484 534
485 { 535 {
486 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, 536 11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
487 -26, -26, -26, 56, -26, -26, 56, 56, 56, 56, 537 -26, -26, -26, 58, -26, -26, 58, 58, 58, 58,
488 56, 56, 56, 56, 56, 56, 56, 56, 56, 67, 538 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
489 56, 56, 56, 56, 56, 56, -26 539 69, 58, 58, 58, 58, 58, 58, -26
490 }, 540 },
491 541
492 { 542 {
493 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, 543 11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
494 -27, -27, -27, 56, -27, -27, 56, 56, 56, 56, 544 -27, -27, -27, 58, -27, -27, 58, 58, 58, 58,
495 545
496 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 546 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
497 56, 68, 56, 56, 56, 56, -27 547 58, 58, 70, 58, 58, 58, 58, -27
498 }, 548 },
499 549
500 { 550 {
501 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, 551 11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
502 -28, -28, -28, 56, -28, -28, 56, 56, 56, 56, 552 -28, -28, -28, 58, -28, -28, 58, 71, 58, 58,
503 69, 56, 56, 56, 56, 56, 56, 56, 56, 56, 553 58, 72, 58, 58, 58, 58, 58, 58, 58, 58,
504 56, 56, 56, 56, 56, 56, -28 554 58, 58, 58, 58, 58, 58, 58, -28
505 }, 555 },
506 556
507 { 557 {
508 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, 558 11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
509 -29, -29, -29, 56, -29, -29, 56, 56, 56, 56, 559 -29, -29, -29, 58, -29, -29, 58, 58, 58, 58,
510 56, 56, 56, 56, 56, 56, 56, 56, 70, 56, 560 58, 73, 58, 58, 58, 58, 58, 58, 58, 74,
511 56, 56, 56, 71, 56, 56, -29 561 58, 58, 58, 58, 75, 58, 58, -29
512 562
513 }, 563 },
514 564
515 { 565 {
516 11, -30, -30, -30, -30, -30, -30, -30, -30, -30, 566 11, -30, -30, -30, -30, -30, -30, -30, -30, -30,
517 -30, -30, -30, 56, -30, -30, 56, 56, 56, 56, 567 -30, -30, -30, 58, -30, -30, 58, 58, 58, 58,
518 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 568 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
519 56, 72, 56, 56, 56, 56, -30 569 58, 58, 76, 58, 58, 58, 58, -30
520 }, 570 },
521 571
522 { 572 {
523 11, 73, 73, -31, 73, 73, 73, 73, 73, 73, 573 11, 77, 77, -31, 77, 77, 77, 77, 77, 77,
524 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 574 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
525 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 575 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
526 73, 73, 73, 73, 73, 73, 73 576 77, 77, 77, 77, 77, 77, 77, 77
527 }, 577 },
528 578
529 { 579 {
530 11, -32, 74, 75, -32, -32, -32, -32, -32, -32, 580 11, -32, 78, 79, -32, -32, -32, -32, -32, -32,
531 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, 581 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
532 582
533 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, 583 -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
534 -32, -32, -32, -32, -32, -32, -32 584 -32, -32, -32, -32, -32, -32, -32, -32
535 }, 585 },
536 586
537 { 587 {
538 11, 76, -33, -33, 76, 76, 76, 76, 76, 76, 588 11, 80, -33, -33, 80, 80, 80, 80, 80, 80,
539 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 589 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
540 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 590 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
541 76, 76, 76, 76, 76, 76, 76 591 80, 80, 80, 80, 80, 80, 80, 80
542 }, 592 },
543 593
544 { 594 {
545 11, 77, 77, 78, 77, -34, 77, 77, -34, 77, 595 11, 81, 81, 82, 81, -34, 81, 81, -34, 81,
546 77, 77, 77, 77, 77, -34, 77, 77, 77, 77, 596 81, 81, 81, 81, 81, -34, 81, 81, 81, 81,
547 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 597 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
548 77, 77, 77, 77, 77, 77, 77 598 81, 81, 81, 81, 81, 81, 81, 81
549 599
550 }, 600 },
551 601
@@ -553,125 +603,125 @@ static yyconst short yy_nxt[][37] =
553 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, 603 11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
554 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, 604 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
555 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, 605 -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
556 -35, -35, -35, -35, -35, -35, -35 606 -35, -35, -35, -35, -35, -35, -35, -35
557 }, 607 },
558 608
559 { 609 {
560 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, 610 11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
561 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 611 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
562 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36, 612 -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
563 -36, -36, -36, -36, -36, -36, -36 613 -36, -36, -36, -36, -36, -36, -36, -36
564 }, 614 },
565 615
566 { 616 {
567 11, 79, 79, 80, 79, 79, 79, 79, 79, 79, 617 11, 83, 83, 84, 83, 83, 83, 83, 83, 83,
568 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 618 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
569 619
570 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 620 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
571 79, 79, 79, 79, 79, 79, 79 621 83, 83, 83, 83, 83, 83, 83, 83
572 }, 622 },
573 623
574 { 624 {
575 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, 625 11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
576 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, 626 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
577 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, 627 -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
578 -38, -38, -38, -38, -38, -38, -38 628 -38, -38, -38, -38, -38, -38, -38, -38
579 }, 629 },
580 630
581 { 631 {
582 11, -39, -39, -39, -39, -39, -39, -39, -39, -39, 632 11, -39, -39, -39, -39, -39, -39, -39, -39, -39,
583 -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, 633 -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
584 -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, 634 -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
585 -39, -39, -39, -39, -39, -39, -39 635 -39, -39, -39, -39, -39, -39, -39, -39
586 636
587 }, 637 },
588 638
589 { 639 {
590 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, 640 11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
591 -40, -40, -40, -40, 81, -40, -40, -40, -40, -40, 641 -40, -40, -40, -40, 85, -40, -40, -40, -40, -40,
592 -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, 642 -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
593 -40, -40, -40, -40, -40, -40, -40 643 -40, -40, -40, -40, -40, -40, -40, -40
594 }, 644 },
595 645
596 { 646 {
597 11, -41, -41, -41, -41, -41, -41, -41, -41, -41, 647 11, -41, -41, -41, -41, -41, -41, -41, -41, -41,
598 -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, 648 -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
599 -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, 649 -41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
600 -41, -41, -41, -41, -41, -41, -41 650 -41, -41, -41, -41, -41, -41, -41, -41
601 }, 651 },
602 652
603 { 653 {
604 11, -42, -42, -42, -42, -42, -42, 82, -42, -42, 654 11, 86, 86, -42, 86, 86, 86, 86, 86, 86,
605 -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 655 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
606 656
607 -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 657 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
608 -42, -42, -42, -42, -42, -42, -42 658 86, 86, 86, 86, 86, 86, 86, 86
609 }, 659 },
610 660
611 { 661 {
612 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, 662 11, -43, -43, -43, -43, -43, -43, 87, -43, -43,
613 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 663 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
614 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 664 -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
615 -43, -43, -43, -43, -43, -43, -43 665 -43, -43, -43, -43, -43, -43, -43, -43
616 }, 666 },
617 667
618 { 668 {
619 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, 669 11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
620 -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, 670 -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
621 -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, 671 -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
622 -44, -44, -44, -44, -44, -44, -44 672 -44, -44, -44, -44, -44, -44, -44, -44
623 673
624 }, 674 },
625 675
626 { 676 {
627 11, -45, -45, -45, -45, -45, -45, -45, -45, -45, 677 11, -45, -45, -45, -45, -45, -45, -45, -45, -45,
628 -45, 83, 84, 84, -45, -45, 84, 84, 84, 84, 678 -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
629 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 679 -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
630 84, 84, 84, 84, 84, 84, -45 680 -45, -45, -45, -45, -45, -45, -45, -45
631 }, 681 },
632 682
633 { 683 {
634 11, -46, -46, -46, -46, -46, -46, -46, -46, -46, 684 11, -46, -46, -46, -46, -46, -46, -46, -46, -46,
635 -46, 84, 84, 84, -46, -46, 84, 84, 84, 84, 685 -46, 88, 89, 89, -46, -46, 89, 89, 89, 89,
636 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 686 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
637 84, 84, 84, 84, 84, 84, -46 687 89, 89, 89, 89, 89, 89, 89, -46
638 }, 688 },
639 689
640 { 690 {
641 11, -47, -47, -47, -47, -47, -47, -47, -47, -47, 691 11, -47, -47, -47, -47, -47, -47, -47, -47, -47,
642 -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, 692 -47, 89, 89, 89, -47, -47, 89, 89, 89, 89,
643 693
644 -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, 694 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
645 -47, -47, -47, -47, -47, -47, -47 695 89, 89, 89, 89, 89, 89, 89, -47
646 }, 696 },
647 697
648 { 698 {
649 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, 699 11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
650 -48, 84, 84, 84, -48, -48, 84, 84, 84, 84, 700 -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
651 84, 85, 84, 84, 84, 84, 84, 84, 84, 84, 701 -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
652 84, 84, 84, 84, 84, 84, -48 702 -48, -48, -48, -48, -48, -48, -48, -48
653 }, 703 },
654 704
655 { 705 {
656 11, -49, -49, -49, -49, -49, -49, -49, -49, -49, 706 11, -49, -49, 90, -49, -49, -49, -49, -49, -49,
657 -49, 84, 84, 84, -49, -49, 84, 84, 84, 84, 707 -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
658 84, 84, 84, 84, 84, 84, 84, 86, 84, 84, 708 -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
659 84, 84, 84, 84, 84, 84, -49 709 -49, -49, -49, -49, -49, -49, -49, -49
660 710
661 }, 711 },
662 712
663 { 713 {
664 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, 714 11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
665 -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, 715 -50, 89, 89, 89, -50, -50, 89, 89, 89, 89,
666 -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, 716 89, 89, 91, 89, 89, 89, 89, 89, 89, 89,
667 -50, -50, -50, -50, -50, -50, 87 717 89, 89, 89, 89, 89, 89, 89, -50
668 }, 718 },
669 719
670 { 720 {
671 11, -51, 51, 52, -51, -51, 53, -51, -51, -51, 721 11, -51, -51, -51, -51, -51, -51, -51, -51, -51,
672 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, 722 -51, 89, 89, 89, -51, -51, 89, 89, 89, 89,
673 -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, 723 89, 89, 89, 89, 89, 89, 89, 89, 92, 89,
674 -51, -51, -51, -51, -51, -51, -51 724 89, 89, 89, 89, 89, 89, 89, -51
675 }, 725 },
676 726
677 { 727 {
@@ -679,206 +729,206 @@ static yyconst short yy_nxt[][37] =
679 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 729 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
680 730
681 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 731 -52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
682 -52, -52, -52, -52, -52, -52, -52 732 -52, -52, -52, -52, -52, -52, -52, 93
683 }, 733 },
684 734
685 { 735 {
686 11, 54, 54, 55, 54, 54, 54, 54, 54, 54, 736 11, -53, 53, 54, -53, -53, 55, -53, -53, -53,
687 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 737 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
688 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 738 -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
689 54, 54, 54, 54, 54, 54, 54 739 -53, -53, -53, -53, -53, -53, -53, -53
690 }, 740 },
691 741
692 { 742 {
693 11, 54, 54, 55, 54, 54, 54, 54, 54, 54, 743 11, -54, -54, -54, -54, -54, -54, -54, -54, -54,
694 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 744 -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
695 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 745 -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
696 54, 54, 54, 54, 54, 54, 54 746 -54, -54, -54, -54, -54, -54, -54, -54
697 747
698 }, 748 },
699 749
700 { 750 {
701 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, 751 11, 56, 56, 57, 56, 56, 56, 56, 56, 56,
702 -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, 752 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
703 -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, 753 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
704 -55, -55, -55, -55, -55, -55, -55 754 56, 56, 56, 56, 56, 56, 56, 56
705 }, 755 },
706 756
707 { 757 {
708 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, 758 11, 56, 56, 57, 56, 56, 56, 56, 56, 56,
709 -56, -56, -56, 56, -56, -56, 56, 56, 56, 56,
710 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 759 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
711 56, 56, 56, 56, 56, 56, -56 760 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
761 56, 56, 56, 56, 56, 56, 56, 56
712 }, 762 },
713 763
714 { 764 {
715 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, 765 11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
716 -57, -57, -57, 56, -57, -57, 56, 56, 56, 56, 766 -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
717 767
718 56, 56, 56, 56, 56, 56, 56, 56, 88, 56, 768 -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
719 56, 56, 56, 56, 56, 56, -57 769 -57, -57, -57, -57, -57, -57, -57, -57
720 }, 770 },
721 771
722 { 772 {
723 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, 773 11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
724 -58, -58, -58, 56, -58, -58, 56, 56, 56, 56, 774 -58, -58, -58, 58, -58, -58, 58, 58, 58, 58,
725 56, 56, 56, 56, 56, 56, 56, 56, 89, 56, 775 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
726 56, 56, 56, 56, 56, 56, -58 776 58, 58, 58, 58, 58, 58, 58, -58
727 }, 777 },
728 778
729 { 779 {
730 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, 780 11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
731 -59, -59, -59, 56, -59, -59, 56, 56, 56, 56, 781 -59, -59, -59, 58, -59, -59, 58, 58, 58, 58,
732 56, 56, 56, 56, 56, 56, 90, 91, 56, 56, 782 58, 58, 58, 58, 58, 58, 58, 58, 58, 94,
733 56, 56, 56, 56, 56, 56, -59 783 58, 58, 58, 58, 58, 58, 58, -59
734 784
735 }, 785 },
736 786
737 { 787 {
738 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, 788 11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
739 -60, -60, -60, 56, -60, -60, 56, 56, 56, 56, 789 -60, -60, -60, 58, -60, -60, 58, 58, 58, 58,
740 56, 92, 56, 56, 56, 56, 56, 56, 56, 93, 790 58, 58, 58, 58, 58, 58, 58, 58, 58, 95,
741 56, 56, 56, 56, 56, 56, -60 791 58, 58, 58, 58, 58, 58, 58, -60
742 }, 792 },
743 793
744 { 794 {
745 11, -61, -61, -61, -61, -61, -61, -61, -61, -61, 795 11, -61, -61, -61, -61, -61, -61, -61, -61, -61,
746 -61, -61, -61, 56, -61, -61, 56, 56, 56, 94, 796 -61, -61, -61, 58, -61, -61, 58, 58, 58, 58,
747 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 797 58, 58, 58, 58, 58, 58, 58, 96, 97, 58,
748 56, 56, 56, 56, 56, 56, -61 798 58, 58, 58, 58, 58, 58, 58, -61
749 }, 799 },
750 800
751 { 801 {
752 11, -62, -62, -62, -62, -62, -62, -62, -62, -62, 802 11, -62, -62, -62, -62, -62, -62, -62, -62, -62,
753 -62, -62, -62, 56, -62, -62, 56, 56, 56, 56, 803 -62, -62, -62, 58, -62, -62, 58, 58, 58, 58,
754 804
755 56, 56, 56, 56, 56, 95, 56, 56, 56, 56, 805 58, 58, 98, 58, 58, 58, 58, 58, 58, 58,
756 56, 56, 56, 56, 56, 96, -62 806 99, 58, 58, 58, 58, 58, 58, -62
757 }, 807 },
758 808
759 { 809 {
760 11, -63, -63, -63, -63, -63, -63, -63, -63, -63, 810 11, -63, -63, -63, -63, -63, -63, -63, -63, -63,
761 -63, -63, -63, 56, -63, -63, 56, 56, 56, 56, 811 -63, -63, -63, 58, -63, -63, 58, 100, 58, 58,
762 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 812 101, 58, 58, 58, 58, 58, 58, 58, 58, 58,
763 56, 56, 56, 56, 56, 56, -63 813 58, 58, 58, 58, 58, 58, 58, -63
764 }, 814 },
765 815
766 { 816 {
767 11, -64, -64, -64, -64, -64, -64, -64, -64, -64, 817 11, -64, -64, -64, -64, -64, -64, -64, -64, -64,
768 -64, -64, -64, 56, -64, -64, 56, 56, 56, 56, 818 -64, -64, -64, 58, -64, -64, 58, 58, 58, 58,
769 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 819 58, 58, 58, 58, 58, 58, 102, 58, 58, 58,
770 56, 56, 56, 97, 56, 56, -64 820 58, 58, 58, 58, 58, 58, 103, -64
771 821
772 }, 822 },
773 823
774 { 824 {
775 11, -65, -65, -65, -65, -65, -65, -65, -65, -65, 825 11, -65, -65, -65, -65, -65, -65, -65, -65, -65,
776 -65, -65, -65, 56, -65, -65, 56, 56, 56, 56, 826 -65, -65, -65, 58, -65, -65, 58, 58, 58, 58,
777 56, 56, 56, 56, 98, 56, 56, 56, 56, 56, 827 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
778 56, 56, 56, 56, 56, 56, -65 828 58, 58, 58, 58, 58, 58, 58, -65
779 }, 829 },
780 830
781 { 831 {
782 11, -66, -66, -66, -66, -66, -66, -66, -66, -66, 832 11, -66, -66, -66, -66, -66, -66, -66, -66, -66,
783 -66, -66, -66, 56, -66, -66, 56, 56, 56, 56, 833 -66, -66, -66, 58, -66, -66, 58, 58, 58, 58,
784 56, 56, 56, 56, 56, 56, 56, 99, 56, 56, 834 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
785 56, 56, 56, 56, 56, 56, -66 835 58, 58, 58, 58, 104, 58, 58, -66
786 }, 836 },
787 837
788 { 838 {
789 11, -67, -67, -67, -67, -67, -67, -67, -67, -67, 839 11, -67, -67, -67, -67, -67, -67, -67, -67, -67,
790 -67, -67, -67, 56, -67, -67, 56, 56, 56, 56, 840 -67, -67, -67, 58, -67, -67, 58, 58, 58, 58,
791 841
792 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 842 58, 58, 58, 58, 58, 105, 58, 58, 58, 58,
793 56, 56, 56, 100, 56, 56, -67 843 58, 58, 58, 58, 58, 58, 58, -67
794 }, 844 },
795 845
796 { 846 {
797 11, -68, -68, -68, -68, -68, -68, -68, -68, -68, 847 11, -68, -68, -68, -68, -68, -68, -68, -68, -68,
798 -68, -68, -68, 56, -68, -68, 56, 56, 56, 56, 848 -68, -68, -68, 58, -68, -68, 58, 58, 58, 58,
799 56, 56, 56, 56, 56, 56, 56, 56, 101, 56, 849 58, 58, 58, 58, 58, 58, 58, 58, 106, 58,
800 56, 56, 56, 56, 56, 56, -68 850 58, 58, 58, 58, 58, 58, 58, -68
801 }, 851 },
802 852
803 { 853 {
804 11, -69, -69, -69, -69, -69, -69, -69, -69, -69, 854 11, -69, -69, -69, -69, -69, -69, -69, -69, -69,
805 -69, -69, -69, 56, -69, -69, 56, 56, 56, 56, 855 -69, -69, -69, 58, -69, -69, 58, 58, 58, 58,
806 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 856 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
807 102, 56, 56, 56, 56, 56, -69 857 58, 58, 58, 58, 107, 58, 58, -69
808 858
809 }, 859 },
810 860
811 { 861 {
812 11, -70, -70, -70, -70, -70, -70, -70, -70, -70, 862 11, -70, -70, -70, -70, -70, -70, -70, -70, -70,
813 -70, -70, -70, 56, -70, -70, 56, 56, 56, 56, 863 -70, -70, -70, 58, -70, -70, 58, 58, 58, 58,
814 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 864 58, 58, 58, 58, 58, 58, 58, 58, 58, 108,
815 56, 56, 56, 56, 103, 56, -70 865 58, 58, 58, 58, 58, 58, 58, -70
816 }, 866 },
817 867
818 { 868 {
819 11, -71, -71, -71, -71, -71, -71, -71, -71, -71, 869 11, -71, -71, -71, -71, -71, -71, -71, -71, -71,
820 -71, -71, -71, 56, -71, -71, 56, 56, 56, 56, 870 -71, -71, -71, 58, -71, -71, 58, 58, 58, 58,
821 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 871 58, 58, 58, 58, 58, 58, 58, 58, 109, 58,
822 56, 104, 56, 56, 56, 56, -71 872 58, 58, 58, 58, 58, 58, 58, -71
823 }, 873 },
824 874
825 { 875 {
826 11, -72, -72, -72, -72, -72, -72, -72, -72, -72, 876 11, -72, -72, -72, -72, -72, -72, -72, -72, -72,
827 -72, -72, -72, 56, -72, -72, 56, 56, 56, 56, 877 -72, -72, -72, 58, -72, -72, 58, 58, 58, 58,
828 878
829 56, 56, 56, 56, 105, 56, 56, 56, 56, 56, 879 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
830 56, 56, 56, 56, 56, 56, -72 880 58, 110, 58, 58, 58, 58, 58, -72
831 }, 881 },
832 882
833 { 883 {
834 11, 73, 73, -73, 73, 73, 73, 73, 73, 73, 884 11, -73, -73, -73, -73, -73, -73, -73, -73, -73,
835 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 885 -73, -73, -73, 58, -73, -73, 58, 58, 58, 58,
836 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 886 58, 58, 58, 58, 58, 58, 111, 58, 58, 58,
837 73, 73, 73, 73, 73, 73, 73 887 58, 58, 58, 58, 58, 58, 58, -73
838 }, 888 },
839 889
840 { 890 {
841 11, -74, 74, 75, -74, -74, -74, -74, -74, -74, 891 11, -74, -74, -74, -74, -74, -74, -74, -74, -74,
842 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, 892 -74, -74, -74, 58, -74, -74, 58, 58, 58, 58,
843 -74, -74, -74, -74, -74, -74, -74, -74, -74, -74, 893 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
844 -74, -74, -74, -74, -74, -74, -74 894 58, 58, 58, 58, 58, 112, 58, -74
845 895
846 }, 896 },
847 897
848 { 898 {
849 11, -75, -75, -75, -75, -75, -75, -75, -75, -75, 899 11, -75, -75, -75, -75, -75, -75, -75, -75, -75,
850 -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, 900 -75, -75, -75, 58, -75, -75, 58, 58, 58, 58,
851 -75, -75, -75, -75, -75, -75, -75, -75, -75, -75, 901 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
852 -75, -75, -75, -75, -75, -75, -75 902 58, 58, 113, 58, 58, 58, 58, -75
853 }, 903 },
854 904
855 { 905 {
856 11, -76, -76, -76, -76, -76, -76, -76, -76, -76, 906 11, -76, -76, -76, -76, -76, -76, -76, -76, -76,
857 -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, 907 -76, -76, -76, 58, -76, -76, 58, 58, 58, 58,
858 -76, -76, -76, -76, -76, -76, -76, -76, -76, -76, 908 58, 58, 58, 58, 58, 114, 58, 58, 58, 58,
859 -76, -76, -76, -76, -76, -76, -76 909 58, 58, 58, 58, 58, 58, 58, -76
860 }, 910 },
861 911
862 { 912 {
863 11, 77, 77, 78, 77, -77, 77, 77, -77, 77, 913 11, 77, 77, -77, 77, 77, 77, 77, 77, 77,
864 77, 77, 77, 77, 77, -77, 77, 77, 77, 77, 914 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
865 915
866 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 916 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
867 77, 77, 77, 77, 77, 77, 77 917 77, 77, 77, 77, 77, 77, 77, 77
868 }, 918 },
869 919
870 { 920 {
871 11, -78, -78, -78, -78, -78, -78, -78, -78, -78, 921 11, -78, 78, 79, -78, -78, -78, -78, -78, -78,
872 -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, 922 -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
873 -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, 923 -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
874 -78, -78, -78, -78, -78, -78, -78 924 -78, -78, -78, -78, -78, -78, -78, -78
875 }, 925 },
876 926
877 { 927 {
878 11, -79, -79, 80, -79, -79, -79, -79, -79, -79, 928 11, 80, -79, -79, 80, 80, 80, 80, 80, 80,
879 -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, 929 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
880 -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, 930 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
881 -79, -79, -79, -79, -79, -79, -79 931 80, 80, 80, 80, 80, 80, 80, 80
882 932
883 }, 933 },
884 934
@@ -886,14 +936,14 @@ static yyconst short yy_nxt[][37] =
886 11, -80, -80, -80, -80, -80, -80, -80, -80, -80, 936 11, -80, -80, -80, -80, -80, -80, -80, -80, -80,
887 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, 937 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
888 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80, 938 -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
889 -80, -80, -80, -80, -80, -80, -80 939 -80, -80, -80, -80, -80, -80, -80, -80
890 }, 940 },
891 941
892 { 942 {
893 11, -81, -81, -81, -81, -81, -81, -81, -81, -81, 943 11, 81, 81, 82, 81, -81, 81, 81, -81, 81,
894 -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, 944 81, 81, 81, 81, 81, -81, 81, 81, 81, 81,
895 -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, 945 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
896 -81, -81, -81, -81, -81, -81, -81 946 81, 81, 81, 81, 81, 81, 81, 81
897 }, 947 },
898 948
899 { 949 {
@@ -901,36 +951,36 @@ static yyconst short yy_nxt[][37] =
901 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, 951 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
902 952
903 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, 953 -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
904 -82, -82, -82, -82, -82, -82, -82 954 -82, -82, -82, -82, -82, -82, -82, -82
905 }, 955 },
906 956
907 { 957 {
908 11, -83, -83, -83, -83, -83, -83, -83, -83, -83, 958 11, -83, -83, 84, -83, -83, -83, -83, -83, -83,
909 -83, 106, 84, 84, -83, -83, 84, 84, 84, 84, 959 -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
910 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 960 -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
911 84, 84, 84, 84, 84, 84, -83 961 -83, -83, -83, -83, -83, -83, -83, -83
912 }, 962 },
913 963
914 { 964 {
915 11, -84, -84, -84, -84, -84, -84, -84, -84, -84, 965 11, -84, -84, -84, -84, -84, -84, -84, -84, -84,
916 -84, 84, 84, 84, -84, -84, 84, 84, 84, 84, 966 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
917 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 967 -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
918 84, 84, 84, 84, 84, 84, -84 968 -84, -84, -84, -84, -84, -84, -84, -84
919 969
920 }, 970 },
921 971
922 { 972 {
923 11, -85, -85, -85, -85, -85, -85, -85, -85, -85, 973 11, -85, -85, -85, -85, -85, -85, -85, -85, -85,
924 -85, 84, 84, 84, -85, -85, 84, 84, 84, 84, 974 -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
925 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 975 -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
926 84, 84, 84, 84, 84, 84, -85 976 -85, -85, -85, -85, -85, -85, -85, -85
927 }, 977 },
928 978
929 { 979 {
930 11, -86, -86, -86, -86, -86, -86, -86, -86, -86, 980 11, 86, 86, -86, 86, 86, 86, 86, 86, 86,
931 -86, 84, 84, 84, -86, -86, 84, 84, 84, 84, 981 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
932 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 982 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
933 84, 84, 84, 84, 84, 84, -86 983 86, 86, 86, 86, 86, 86, 86, 86
934 }, 984 },
935 985
936 { 986 {
@@ -938,674 +988,973 @@ static yyconst short yy_nxt[][37] =
938 -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, 988 -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
939 989
940 -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, 990 -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
941 -87, -87, -87, -87, -87, -87, -87 991 -87, -87, -87, -87, -87, -87, -87, -87
942 }, 992 },
943 993
944 { 994 {
945 11, -88, -88, -88, -88, -88, -88, -88, -88, -88, 995 11, -88, -88, -88, -88, -88, -88, -88, -88, -88,
946 -88, -88, -88, 56, -88, -88, 56, 56, 56, 56, 996 -88, 115, 89, 89, -88, -88, 89, 89, 89, 89,
947 56, 56, 56, 56, 56, 107, 56, 56, 56, 56, 997 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
948 56, 56, 56, 56, 56, 56, -88 998 89, 89, 89, 89, 89, 89, 89, -88
949 }, 999 },
950 1000
951 { 1001 {
952 11, -89, -89, -89, -89, -89, -89, -89, -89, -89, 1002 11, -89, -89, -89, -89, -89, -89, -89, -89, -89,
953 -89, -89, -89, 56, -89, -89, 56, 56, 56, 56, 1003 -89, 89, 89, 89, -89, -89, 89, 89, 89, 89,
954 56, 56, 56, 56, 108, 56, 56, 56, 56, 56, 1004 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
955 56, 56, 56, 56, 56, 56, -89 1005 89, 89, 89, 89, 89, 89, 89, -89
956 1006
957 }, 1007 },
958 1008
959 { 1009 {
960 11, -90, -90, -90, -90, -90, -90, -90, -90, -90, 1010 11, -90, -90, -90, -90, -90, -90, -90, -90, -90,
961 -90, -90, -90, 56, -90, -90, 56, 56, 56, 56, 1011 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
962 56, 56, 56, 56, 56, 56, 109, 56, 56, 56, 1012 -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
963 56, 56, 56, 56, 56, 56, -90 1013 -90, -90, -90, -90, -90, -90, -90, -90
964 }, 1014 },
965 1015
966 { 1016 {
967 11, -91, -91, -91, -91, -91, -91, -91, -91, -91, 1017 11, -91, -91, -91, -91, -91, -91, -91, -91, -91,
968 -91, -91, -91, 56, -91, -91, 56, 56, 56, 56, 1018 -91, 89, 89, 89, -91, -91, 89, 89, 89, 89,
969 56, 110, 56, 56, 56, 56, 56, 56, 56, 56, 1019 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
970 56, 56, 56, 56, 56, 56, -91 1020 89, 89, 89, 89, 89, 89, 89, -91
971 }, 1021 },
972 1022
973 { 1023 {
974 11, -92, -92, -92, -92, -92, -92, -92, -92, -92, 1024 11, -92, -92, -92, -92, -92, -92, -92, -92, -92,
975 -92, -92, -92, 56, -92, -92, 111, 56, 56, 56, 1025 -92, 89, 89, 89, -92, -92, 89, 89, 89, 89,
976 1026
977 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1027 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
978 56, 56, 56, 56, 56, 56, -92 1028 89, 89, 89, 89, 89, 89, 89, -92
979 }, 1029 },
980 1030
981 { 1031 {
982 11, -93, -93, -93, -93, -93, -93, -93, -93, -93, 1032 11, -93, -93, -93, -93, -93, -93, -93, -93, -93,
983 -93, -93, -93, 56, -93, -93, 56, 56, 56, 56, 1033 -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
984 112, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1034 -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
985 56, 56, 56, 56, 56, 56, -93 1035 -93, -93, -93, -93, -93, -93, -93, -93
986 }, 1036 },
987 1037
988 { 1038 {
989 11, -94, -94, -94, -94, -94, -94, -94, -94, -94, 1039 11, -94, -94, -94, -94, -94, -94, -94, -94, -94,
990 -94, -94, -94, 56, -94, -94, 56, 56, 113, 56, 1040 -94, -94, -94, 58, -94, -94, 58, 58, 58, 58,
991 56, 56, 56, 56, 114, 56, 115, 56, 56, 56, 1041 58, 58, 58, 58, 58, 58, 116, 58, 58, 58,
992 56, 56, 56, 56, 56, 56, -94 1042 58, 58, 58, 58, 58, 58, 58, -94
993 1043
994 }, 1044 },
995 1045
996 { 1046 {
997 11, -95, -95, -95, -95, -95, -95, -95, -95, -95, 1047 11, -95, -95, -95, -95, -95, -95, -95, -95, -95,
998 -95, -95, -95, 56, -95, -95, 56, 56, 56, 56, 1048 -95, -95, -95, 58, -95, -95, 58, 58, 58, 58,
999 56, 56, 56, 56, 56, 56, 56, 56, 56, 116, 1049 58, 58, 58, 58, 58, 117, 58, 58, 58, 58,
1000 56, 56, 56, 56, 56, 56, -95 1050 58, 58, 58, 58, 58, 58, 58, -95
1001 }, 1051 },
1002 1052
1003 { 1053 {
1004 11, -96, -96, -96, -96, -96, -96, -96, -96, -96, 1054 11, -96, -96, -96, -96, -96, -96, -96, -96, -96,
1005 -96, -96, -96, 56, -96, -96, 56, 56, 56, 56, 1055 -96, -96, -96, 58, -96, -96, 58, 58, 58, 58,
1006 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1056 58, 58, 58, 58, 58, 58, 58, 118, 58, 58,
1007 56, 56, 56, 56, 56, 56, -96 1057 58, 58, 58, 58, 58, 58, 58, -96
1008 }, 1058 },
1009 1059
1010 { 1060 {
1011 11, -97, -97, -97, -97, -97, -97, -97, -97, -97, 1061 11, -97, -97, -97, -97, -97, -97, -97, -97, -97,
1012 -97, -97, -97, 56, -97, -97, 56, 56, 56, 56, 1062 -97, -97, -97, 58, -97, -97, 58, 58, 58, 58,
1013 1063
1014 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1064 58, 58, 119, 58, 58, 58, 58, 58, 58, 58,
1015 56, 56, 56, 56, 56, 56, -97 1065 58, 58, 58, 58, 58, 58, 58, -97
1016 }, 1066 },
1017 1067
1018 { 1068 {
1019 11, -98, -98, -98, -98, -98, -98, -98, -98, -98, 1069 11, -98, -98, -98, -98, -98, -98, -98, -98, -98,
1020 -98, -98, -98, 56, -98, -98, 56, 56, 56, 56, 1070 -98, -98, -98, 58, -98, -98, 120, 121, 58, 58,
1021 56, 56, 56, 56, 56, 56, 56, 117, 56, 56, 1071 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1022 56, 56, 56, 56, 56, 56, -98 1072 58, 58, 58, 58, 58, 58, 58, -98
1023 }, 1073 },
1024 1074
1025 { 1075 {
1026 11, -99, -99, -99, -99, -99, -99, -99, -99, -99, 1076 11, -99, -99, -99, -99, -99, -99, -99, -99, -99,
1027 -99, -99, -99, 56, -99, -99, 56, 56, 56, 56, 1077 -99, -99, -99, 58, -99, -99, 58, 58, 58, 58,
1028 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1078 58, 122, 58, 58, 58, 58, 58, 58, 58, 58,
1029 56, 56, 56, 56, 118, 56, -99 1079 58, 58, 58, 58, 58, 58, 58, -99
1030 1080
1031 }, 1081 },
1032 1082
1033 { 1083 {
1034 11, -100, -100, -100, -100, -100, -100, -100, -100, -100, 1084 11, -100, -100, -100, -100, -100, -100, -100, -100, -100,
1035 -100, -100, -100, 56, -100, -100, 56, 56, 56, 56, 1085 -100, -100, -100, 58, -100, -100, 58, 58, 123, 58,
1036 56, 56, 56, 56, 119, 56, 56, 56, 56, 56, 1086 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1037 56, 56, 56, 56, 56, 56, -100 1087 58, 58, 58, 58, 58, 58, 58, -100
1038 }, 1088 },
1039 1089
1040 { 1090 {
1041 11, -101, -101, -101, -101, -101, -101, -101, -101, -101, 1091 11, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1042 -101, -101, -101, 56, -101, -101, 56, 56, 56, 56, 1092 -101, -101, -101, 58, -101, -101, 58, 58, 58, 124,
1043 56, 56, 56, 56, 56, 56, 120, 56, 56, 56, 1093 58, 58, 58, 58, 58, 125, 58, 126, 58, 58,
1044 56, 56, 56, 56, 56, 56, -101 1094 58, 58, 58, 58, 58, 58, 58, -101
1045 }, 1095 },
1046 1096
1047 { 1097 {
1048 11, -102, -102, -102, -102, -102, -102, -102, -102, -102, 1098 11, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1049 -102, -102, -102, 56, -102, -102, 56, 56, 56, 56, 1099 -102, -102, -102, 58, -102, -102, 58, 58, 58, 58,
1050 1100
1051 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1101 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1052 56, 56, 56, 56, 121, 56, -102 1102 127, 58, 58, 58, 58, 58, 58, -102
1053 }, 1103 },
1054 1104
1055 { 1105 {
1056 11, -103, -103, -103, -103, -103, -103, -103, -103, -103, 1106 11, -103, -103, -103, -103, -103, -103, -103, -103, -103,
1057 -103, -103, -103, 56, -103, -103, 56, 56, 56, 56, 1107 -103, -103, -103, 58, -103, -103, 58, 58, 58, 58,
1058 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1108 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1059 56, 122, 56, 56, 56, 56, -103 1109 58, 58, 58, 58, 58, 58, 58, -103
1060 }, 1110 },
1061 1111
1062 { 1112 {
1063 11, -104, -104, -104, -104, -104, -104, -104, -104, -104, 1113 11, -104, -104, -104, -104, -104, -104, -104, -104, -104,
1064 -104, -104, -104, 56, -104, -104, 56, 56, 56, 56, 1114 -104, -104, -104, 58, -104, -104, 58, 58, 58, 58,
1065 56, 56, 56, 56, 123, 56, 56, 56, 56, 56, 1115 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1066 56, 56, 56, 56, 56, 56, -104 1116 58, 58, 58, 58, 58, 58, 58, -104
1067 1117
1068 }, 1118 },
1069 1119
1070 { 1120 {
1071 11, -105, -105, -105, -105, -105, -105, -105, -105, -105, 1121 11, -105, -105, -105, -105, -105, -105, -105, -105, -105,
1072 -105, -105, -105, 56, -105, -105, 56, 56, 56, 56, 1122 -105, -105, -105, 58, -105, -105, 58, 58, 58, 58,
1073 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1123 58, 58, 58, 58, 58, 58, 58, 58, 128, 58,
1074 56, 56, 124, 56, 56, 56, -105 1124 58, 58, 58, 58, 58, 58, 58, -105
1075 }, 1125 },
1076 1126
1077 { 1127 {
1078 11, -106, -106, -106, -106, -106, -106, -106, -106, -106, 1128 11, -106, -106, -106, -106, -106, -106, -106, -106, -106,
1079 -106, 84, 84, 84, -106, -106, 84, 84, 84, 84, 1129 -106, -106, -106, 58, -106, -106, 58, 58, 58, 58,
1080 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 1130 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1081 84, 84, 84, 84, 84, 84, -106 1131 58, 58, 58, 58, 58, 129, 58, -106
1082 }, 1132 },
1083 1133
1084 { 1134 {
1085 11, -107, -107, -107, -107, -107, -107, -107, -107, -107, 1135 11, -107, -107, -107, -107, -107, -107, -107, -107, -107,
1086 -107, -107, -107, 56, -107, -107, 56, 56, 56, 56, 1136 -107, -107, -107, 58, -107, -107, 58, 58, 58, 58,
1087 1137
1088 125, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1138 58, 58, 58, 58, 58, 130, 58, 58, 58, 58,
1089 56, 56, 56, 56, 56, 56, -107 1139 58, 58, 58, 58, 58, 58, 58, -107
1090 }, 1140 },
1091 1141
1092 { 1142 {
1093 11, -108, -108, -108, -108, -108, -108, -108, -108, -108, 1143 11, -108, -108, -108, -108, -108, -108, -108, -108, -108,
1094 -108, -108, -108, 56, -108, -108, 56, 56, 126, 56, 1144 -108, -108, -108, 58, -108, -108, 58, 58, 58, 58,
1095 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1145 58, 58, 58, 58, 58, 58, 58, 131, 58, 58,
1096 56, 56, 56, 56, 56, 56, -108 1146 58, 58, 58, 58, 58, 58, 58, -108
1097 }, 1147 },
1098 1148
1099 { 1149 {
1100 11, -109, -109, -109, -109, -109, -109, -109, -109, -109, 1150 11, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1101 -109, -109, -109, 56, -109, -109, 56, 56, 56, 56, 1151 -109, -109, -109, 58, -109, -109, 58, 58, 58, 58,
1102 127, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1152 58, 58, 58, 132, 58, 58, 58, 58, 58, 58,
1103 56, 56, 56, 56, 56, 56, -109 1153 58, 58, 58, 58, 58, 58, 58, -109
1104 1154
1105 }, 1155 },
1106 1156
1107 { 1157 {
1108 11, -110, -110, -110, -110, -110, -110, -110, -110, -110, 1158 11, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1109 -110, -110, -110, 56, -110, -110, 56, 56, 56, 56, 1159 -110, -110, -110, 58, -110, -110, 58, 58, 58, 58,
1110 56, 56, 56, 56, 128, 56, 56, 56, 56, 56, 1160 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1111 56, 56, 56, 56, 56, 56, -110 1161 58, 58, 58, 58, 58, 133, 58, -110
1112 }, 1162 },
1113 1163
1114 { 1164 {
1115 11, -111, -111, -111, -111, -111, -111, -111, -111, -111, 1165 11, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1116 -111, -111, -111, 56, -111, -111, 56, 56, 56, 56, 1166 -111, -111, -111, 58, -111, -111, 58, 58, 58, 58,
1117 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1167 58, 134, 58, 58, 58, 58, 58, 58, 58, 58,
1118 56, 56, 56, 56, 129, 56, -111 1168 58, 58, 58, 58, 58, 58, 58, -111
1119 }, 1169 },
1120 1170
1121 { 1171 {
1122 11, -112, -112, -112, -112, -112, -112, -112, -112, -112, 1172 11, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1123 -112, -112, -112, 56, -112, -112, 56, 56, 56, 56, 1173 -112, -112, -112, 58, -112, -112, 58, 58, 58, 58,
1124 1174
1125 56, 56, 56, 56, 56, 56, 56, 130, 56, 56, 1175 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1126 56, 56, 56, 56, 56, 56, -112 1176 58, 58, 135, 58, 58, 58, 58, -112
1127 }, 1177 },
1128 1178
1129 { 1179 {
1130 11, -113, -113, -113, -113, -113, -113, -113, -113, -113, 1180 11, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1131 -113, -113, -113, 56, -113, -113, 56, 56, 56, 56, 1181 -113, -113, -113, 58, -113, -113, 58, 58, 58, 58,
1132 56, 56, 56, 131, 56, 56, 56, 56, 56, 56, 1182 58, 58, 58, 58, 58, 136, 58, 58, 58, 58,
1133 56, 56, 56, 56, 56, 56, -113 1183 58, 58, 58, 58, 58, 58, 58, -113
1134 }, 1184 },
1135 1185
1136 { 1186 {
1137 11, -114, -114, -114, -114, -114, -114, -114, -114, -114, 1187 11, -114, -114, -114, -114, -114, -114, -114, -114, -114,
1138 -114, -114, -114, 56, -114, -114, 56, 56, 56, 56, 1188 -114, -114, -114, 58, -114, -114, 58, 58, 58, 58,
1139 56, 132, 56, 56, 56, 56, 56, 56, 56, 56, 1189 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1140 56, 56, 56, 56, 56, 56, -114 1190 58, 58, 58, 137, 58, 58, 58, -114
1141 1191
1142 }, 1192 },
1143 1193
1144 { 1194 {
1145 11, -115, -115, -115, -115, -115, -115, -115, -115, -115, 1195 11, -115, -115, -115, -115, -115, -115, -115, -115, -115,
1146 -115, -115, -115, 56, -115, -115, 56, 56, 56, 56, 1196 -115, 89, 89, 89, -115, -115, 89, 89, 89, 89,
1147 133, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1197 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
1148 56, 56, 56, 56, 56, 56, -115 1198 89, 89, 89, 89, 89, 89, 89, -115
1149 }, 1199 },
1150 1200
1151 { 1201 {
1152 11, -116, -116, -116, -116, -116, -116, -116, -116, -116, 1202 11, -116, -116, -116, -116, -116, -116, -116, -116, -116,
1153 -116, -116, -116, 56, -116, -116, 56, 56, 56, 56, 1203 -116, -116, -116, 58, -116, -116, 58, 58, 58, 58,
1154 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1204 58, 138, 58, 58, 58, 58, 58, 58, 58, 58,
1155 56, 56, 56, 56, 56, 56, -116 1205 58, 58, 58, 58, 58, 58, 58, -116
1156 }, 1206 },
1157 1207
1158 { 1208 {
1159 11, -117, -117, -117, -117, -117, -117, -117, -117, -117, 1209 11, -117, -117, -117, -117, -117, -117, -117, -117, -117,
1160 -117, -117, -117, 56, -117, -117, 56, 56, 56, 56, 1210 -117, -117, -117, 58, -117, -117, 58, 58, 58, 139,
1161 1211
1162 56, 56, 56, 56, 56, 56, 134, 56, 56, 56, 1212 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1163 56, 56, 56, 56, 56, 56, -117 1213 58, 58, 58, 58, 58, 58, 58, -117
1164 }, 1214 },
1165 1215
1166 { 1216 {
1167 11, -118, -118, -118, -118, -118, -118, -118, -118, -118, 1217 11, -118, -118, -118, -118, -118, -118, -118, -118, -118,
1168 -118, -118, -118, 56, -118, -118, 56, 56, 56, 56, 1218 -118, -118, -118, 58, -118, -118, 58, 58, 58, 58,
1169 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1219 58, 140, 58, 58, 58, 58, 58, 58, 58, 58,
1170 56, 56, 56, 56, 56, 56, -118 1220 58, 58, 58, 58, 58, 58, 58, -118
1171 }, 1221 },
1172 1222
1173 { 1223 {
1174 11, -119, -119, -119, -119, -119, -119, -119, -119, -119, 1224 11, -119, -119, -119, -119, -119, -119, -119, -119, -119,
1175 -119, -119, -119, 56, -119, -119, 56, 56, 56, 56, 1225 -119, -119, -119, 58, -119, -119, 58, 58, 58, 58,
1176 56, 56, 56, 56, 56, 56, 56, 56, 135, 56, 1226 58, 58, 58, 58, 58, 141, 58, 58, 58, 58,
1177 56, 56, 56, 56, 56, 56, -119 1227 58, 58, 58, 58, 58, 58, 58, -119
1178 1228
1179 }, 1229 },
1180 1230
1181 { 1231 {
1182 11, -120, -120, -120, -120, -120, -120, -120, -120, -120, 1232 11, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1183 -120, -120, -120, 56, -120, -120, 56, 56, 56, 56, 1233 -120, -120, -120, 58, -120, -120, 58, 58, 142, 58,
1184 56, 56, 56, 56, 56, 56, 56, 56, 56, 136, 1234 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1185 56, 56, 56, 56, 56, 56, -120 1235 58, 58, 58, 58, 143, 58, 58, -120
1186 }, 1236 },
1187 1237
1188 { 1238 {
1189 11, -121, -121, -121, -121, -121, -121, -121, -121, -121, 1239 11, -121, -121, -121, -121, -121, -121, -121, -121, -121,
1190 -121, -121, -121, 56, -121, -121, 56, 56, 56, 56, 1240 -121, -121, -121, 58, -121, -121, 58, 58, 58, 58,
1191 56, 56, 56, 56, 137, 56, 56, 56, 56, 56, 1241 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1192 56, 56, 56, 56, 56, 56, -121 1242 58, 58, 58, 58, 58, 144, 58, -121
1193 }, 1243 },
1194 1244
1195 { 1245 {
1196 11, -122, -122, -122, -122, -122, -122, -122, -122, -122, 1246 11, -122, -122, -122, -122, -122, -122, -122, -122, -122,
1197 -122, -122, -122, 56, -122, -122, 56, 56, 138, 56, 1247 -122, -122, -122, 58, -122, -122, 58, 58, 58, 58,
1198 1248
1199 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1249 58, 58, 58, 58, 58, 58, 58, 58, 145, 58,
1200 56, 56, 56, 56, 56, 56, -122 1250 58, 58, 58, 58, 58, 58, 58, -122
1201 }, 1251 },
1202 1252
1203 { 1253 {
1204 11, -123, -123, -123, -123, -123, -123, -123, -123, -123, 1254 11, -123, -123, -123, -123, -123, -123, -123, -123, -123,
1205 -123, -123, -123, 56, -123, -123, 56, 56, 56, 56, 1255 -123, -123, -123, 58, -123, -123, 58, 58, 58, 58,
1206 56, 56, 56, 56, 56, 56, 56, 139, 56, 56, 1256 58, 58, 58, 58, 58, 58, 146, 58, 58, 58,
1207 56, 56, 56, 56, 56, 56, -123 1257 58, 58, 58, 58, 58, 58, 58, -123
1208 }, 1258 },
1209 1259
1210 { 1260 {
1211 11, -124, -124, -124, -124, -124, -124, -124, -124, -124, 1261 11, -124, -124, -124, -124, -124, -124, -124, -124, -124,
1212 -124, -124, -124, 56, -124, -124, 56, 56, 56, 56, 1262 -124, -124, -124, 58, -124, -124, 58, 58, 58, 58,
1213 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1263 58, 58, 58, 58, 147, 58, 58, 58, 58, 58,
1214 56, 56, 56, 140, 56, 56, -124 1264 58, 58, 58, 58, 58, 58, 58, -124
1215 1265
1216 }, 1266 },
1217 1267
1218 { 1268 {
1219 11, -125, -125, -125, -125, -125, -125, -125, -125, -125, 1269 11, -125, -125, -125, -125, -125, -125, -125, -125, -125,
1220 -125, -125, -125, 56, -125, -125, 141, 56, 56, 56, 1270 -125, -125, -125, 58, -125, -125, 58, 58, 58, 58,
1221 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1271 58, 58, 148, 58, 58, 58, 58, 58, 58, 58,
1222 56, 56, 56, 56, 56, 56, -125 1272 58, 58, 58, 58, 58, 58, 58, -125
1223 }, 1273 },
1224 1274
1225 { 1275 {
1226 11, -126, -126, -126, -126, -126, -126, -126, -126, -126, 1276 11, -126, -126, -126, -126, -126, -126, -126, -126, -126,
1227 -126, -126, -126, 56, -126, -126, 56, 56, 56, 56, 1277 -126, -126, -126, 58, -126, -126, 58, 58, 58, 58,
1228 142, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1278 58, 149, 58, 58, 58, 58, 58, 58, 58, 58,
1229 56, 56, 56, 56, 56, 56, -126 1279 58, 58, 58, 58, 58, 58, 58, -126
1230 }, 1280 },
1231 1281
1232 { 1282 {
1233 11, -127, -127, -127, -127, -127, -127, -127, -127, -127, 1283 11, -127, -127, -127, -127, -127, -127, -127, -127, -127,
1234 -127, -127, -127, 56, -127, -127, 56, 56, 56, 56, 1284 -127, -127, -127, 58, -127, -127, 58, 58, 58, 58,
1235 1285
1236 56, 56, 56, 56, 56, 56, 56, 143, 56, 56, 1286 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1237 56, 56, 56, 56, 56, 56, -127 1287 58, 58, 58, 58, 58, 58, 58, -127
1238 }, 1288 },
1239 1289
1240 { 1290 {
1241 11, -128, -128, -128, -128, -128, -128, -128, -128, -128, 1291 11, -128, -128, -128, -128, -128, -128, -128, -128, -128,
1242 -128, -128, -128, 56, -128, -128, 56, 56, 56, 56, 1292 -128, -128, -128, 58, -128, -128, 58, 58, 58, 58,
1243 56, 56, 144, 56, 56, 56, 56, 56, 56, 56, 1293 58, 58, 58, 58, 58, 58, 58, 150, 58, 58,
1244 56, 56, 56, 56, 56, 56, -128 1294 58, 58, 58, 58, 58, 58, 58, -128
1245 }, 1295 },
1246 1296
1247 { 1297 {
1248 11, -129, -129, -129, -129, -129, -129, -129, -129, -129, 1298 11, -129, -129, -129, -129, -129, -129, -129, -129, -129,
1249 -129, -129, -129, 56, -129, -129, 56, 56, 56, 56, 1299 -129, -129, -129, 58, -129, -129, 58, 58, 58, 151,
1250 56, 56, 56, 56, 56, 145, 56, 56, 56, 56, 1300 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1251 56, 56, 56, 56, 56, 56, -129 1301 58, 58, 58, 58, 58, 58, 58, -129
1252 1302
1253 }, 1303 },
1254 1304
1255 { 1305 {
1256 11, -130, -130, -130, -130, -130, -130, -130, -130, -130, 1306 11, -130, -130, -130, -130, -130, -130, -130, -130, -130,
1257 -130, -130, -130, 56, -130, -130, 56, 56, 56, 146, 1307 -130, -130, -130, 58, -130, -130, 58, 58, 58, 58,
1258 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1308 58, 58, 58, 58, 58, 58, 58, 58, 58, 152,
1259 56, 56, 56, 56, 56, 56, -130 1309 58, 58, 58, 58, 58, 58, 58, -130
1260 }, 1310 },
1261 1311
1262 { 1312 {
1263 11, -131, -131, -131, -131, -131, -131, -131, -131, -131, 1313 11, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1264 -131, -131, -131, 56, -131, -131, 56, 56, 56, 56, 1314 -131, -131, -131, 58, -131, -131, 58, 58, 58, 58,
1265 56, 56, 56, 56, 56, 56, 56, 56, 147, 56, 1315 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1266 56, 56, 56, 56, 56, 56, -131 1316 153, 58, 58, 58, 58, 58, 58, -131
1267 }, 1317 },
1268 1318
1269 { 1319 {
1270 11, -132, -132, -132, -132, -132, -132, -132, -132, -132, 1320 11, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1271 -132, -132, -132, 56, -132, -132, 56, 56, 56, 56, 1321 -132, -132, -132, 58, -132, -132, 58, 58, 58, 58,
1272 1322
1273 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1323 58, 154, 58, 58, 58, 58, 58, 58, 58, 58,
1274 56, 56, 56, 56, 56, 56, -132 1324 58, 58, 58, 58, 58, 58, 58, -132
1275 }, 1325 },
1276 1326
1277 { 1327 {
1278 11, -133, -133, -133, -133, -133, -133, -133, -133, -133, 1328 11, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1279 -133, -133, -133, 56, -133, -133, 56, 56, 56, 56, 1329 -133, -133, -133, 58, -133, -133, 58, 58, 58, 58,
1280 56, 56, 56, 56, 56, 56, 56, 148, 56, 56, 1330 58, 58, 58, 58, 58, 155, 58, 58, 58, 58,
1281 56, 56, 56, 56, 56, 56, -133 1331 58, 58, 58, 58, 58, 58, 58, -133
1282 }, 1332 },
1283 1333
1284 { 1334 {
1285 11, -134, -134, -134, -134, -134, -134, -134, -134, -134, 1335 11, -134, -134, -134, -134, -134, -134, -134, -134, -134,
1286 -134, -134, -134, 56, -134, -134, 56, 56, 56, 56, 1336 -134, -134, -134, 58, -134, -134, 58, 58, 58, 156,
1287 149, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1337 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1288 56, 56, 56, 56, 56, 56, -134 1338 58, 58, 58, 58, 58, 58, 58, -134
1289 1339
1290 }, 1340 },
1291 1341
1292 { 1342 {
1293 11, -135, -135, -135, -135, -135, -135, -135, -135, -135, 1343 11, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1294 -135, -135, -135, 56, -135, -135, 56, 56, 56, 56, 1344 -135, -135, -135, 58, -135, -135, 58, 58, 58, 157,
1295 56, 56, 56, 56, 56, 56, 56, 150, 56, 56, 1345 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1296 56, 56, 56, 56, 56, 56, -135 1346 58, 58, 58, 58, 58, 58, 58, -135
1297 }, 1347 },
1298 1348
1299 { 1349 {
1300 11, -136, -136, -136, -136, -136, -136, -136, -136, -136, 1350 11, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1301 -136, -136, -136, 56, -136, -136, 56, 56, 56, 56, 1351 -136, -136, -136, 58, -136, -136, 58, 58, 58, 58,
1302 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1352 58, 58, 58, 58, 58, 58, 58, 58, 158, 58,
1303 56, 56, 56, 151, 56, 56, -136 1353 58, 58, 58, 58, 58, 58, 58, -136
1304 }, 1354 },
1305 1355
1306 { 1356 {
1307 11, -137, -137, -137, -137, -137, -137, -137, -137, -137, 1357 11, -137, -137, -137, -137, -137, -137, -137, -137, -137,
1308 -137, -137, -137, 56, -137, -137, 56, 56, 56, 56, 1358 -137, -137, -137, 58, -137, -137, 58, 58, 58, 58,
1309 1359
1310 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1360 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1311 56, 152, 56, 56, 56, 56, -137 1361 58, 58, 58, 58, 159, 58, 58, -137
1312 }, 1362 },
1313 1363
1314 { 1364 {
1315 11, -138, -138, -138, -138, -138, -138, -138, -138, -138, 1365 11, -138, -138, -138, -138, -138, -138, -138, -138, -138,
1316 -138, -138, -138, 56, -138, -138, 56, 56, 56, 56, 1366 -138, -138, -138, 58, -138, -138, 58, 160, 58, 58,
1317 153, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1367 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1318 56, 56, 56, 56, 56, 56, -138 1368 58, 58, 58, 58, 58, 58, 58, -138
1319 }, 1369 },
1320 1370
1321 { 1371 {
1322 11, -139, -139, -139, -139, -139, -139, -139, -139, -139, 1372 11, -139, -139, -139, -139, -139, -139, -139, -139, -139,
1323 -139, -139, -139, 56, -139, -139, 56, 56, 56, 56, 1373 -139, -139, -139, 58, -139, -139, 58, 58, 58, 58,
1324 56, 56, 154, 56, 56, 56, 56, 56, 56, 56, 1374 58, 161, 58, 58, 58, 58, 58, 58, 58, 58,
1325 56, 56, 56, 56, 56, 56, -139 1375 58, 58, 58, 58, 58, 58, 58, -139
1326 1376
1327 }, 1377 },
1328 1378
1329 { 1379 {
1330 11, -140, -140, -140, -140, -140, -140, -140, -140, -140, 1380 11, -140, -140, -140, -140, -140, -140, -140, -140, -140,
1331 -140, -140, -140, 56, -140, -140, 155, 56, 56, 56, 1381 -140, -140, -140, 58, -140, -140, 58, 58, 58, 58,
1332 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1382 58, 58, 58, 58, 58, 58, 58, 58, 162, 58,
1333 56, 56, 56, 56, 56, 56, -140 1383 58, 58, 58, 58, 58, 58, 58, -140
1334 }, 1384 },
1335 1385
1336 { 1386 {
1337 11, -141, -141, -141, -141, -141, -141, -141, -141, -141, 1387 11, -141, -141, -141, -141, -141, -141, -141, -141, -141,
1338 -141, -141, -141, 56, -141, -141, 56, 56, 56, 56, 1388 -141, -141, -141, 58, -141, -141, 58, 58, 58, 58,
1339 56, 56, 56, 56, 56, 56, 56, 156, 56, 56, 1389 58, 58, 58, 163, 58, 58, 58, 58, 58, 58,
1340 56, 56, 56, 56, 56, 56, -141 1390 58, 58, 58, 58, 58, 58, 58, -141
1341 }, 1391 },
1342 1392
1343 { 1393 {
1344 11, -142, -142, -142, -142, -142, -142, -142, -142, -142, 1394 11, -142, -142, -142, -142, -142, -142, -142, -142, -142,
1345 -142, -142, -142, 56, -142, -142, 56, 56, 56, 56, 1395 -142, -142, -142, 58, -142, -142, 58, 58, 58, 58,
1346 1396
1347 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1397 58, 58, 58, 58, 58, 58, 58, 58, 58, 164,
1348 56, 56, 56, 56, 56, 56, -142 1398 58, 58, 58, 58, 58, 58, 58, -142
1349 }, 1399 },
1350 1400
1351 { 1401 {
1352 11, -143, -143, -143, -143, -143, -143, -143, -143, -143, 1402 11, -143, -143, -143, -143, -143, -143, -143, -143, -143,
1353 -143, -143, -143, 56, -143, -143, 56, 56, 56, 56, 1403 -143, -143, -143, 58, -143, -143, 58, 58, 58, 58,
1354 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1404 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1355 56, 56, 56, 157, 56, 56, -143 1405 58, 58, 165, 58, 58, 58, 58, -143
1356 }, 1406 },
1357 1407
1358 { 1408 {
1359 11, -144, -144, -144, -144, -144, -144, -144, -144, -144, 1409 11, -144, -144, -144, -144, -144, -144, -144, -144, -144,
1360 -144, -144, -144, 56, -144, -144, 56, 56, 56, 56, 1410 -144, -144, -144, 58, -144, -144, 58, 58, 58, 58,
1361 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1411 58, 58, 58, 58, 58, 58, 166, 58, 58, 58,
1362 56, 56, 56, 56, 56, 56, -144 1412 58, 58, 58, 58, 58, 58, 58, -144
1363 1413
1364 }, 1414 },
1365 1415
1366 { 1416 {
1367 11, -145, -145, -145, -145, -145, -145, -145, -145, -145, 1417 11, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1368 -145, -145, -145, 56, -145, -145, 56, 56, 56, 56, 1418 -145, -145, -145, 58, -145, -145, 58, 58, 58, 58,
1369 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1419 167, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1370 56, 56, 56, 158, 56, 56, -145 1420 58, 58, 58, 58, 58, 58, 58, -145
1371 }, 1421 },
1372 1422
1373 { 1423 {
1374 11, -146, -146, -146, -146, -146, -146, -146, -146, -146, 1424 11, -146, -146, -146, -146, -146, -146, -146, -146, -146,
1375 -146, -146, -146, 56, -146, -146, 56, 56, 56, 56, 1425 -146, -146, -146, 58, -146, -146, 58, 58, 58, 58,
1376 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1426 58, 168, 58, 58, 58, 58, 58, 58, 58, 58,
1377 56, 56, 159, 56, 56, 56, -146 1427 58, 58, 58, 58, 58, 58, 58, -146
1378 }, 1428 },
1379 1429
1380 { 1430 {
1381 11, -147, -147, -147, -147, -147, -147, -147, -147, -147, 1431 11, -147, -147, -147, -147, -147, -147, -147, -147, -147,
1382 -147, -147, -147, 56, -147, -147, 56, 56, 56, 56, 1432 -147, -147, -147, 58, -147, -147, 58, 58, 58, 58,
1383 1433
1384 56, 56, 56, 56, 160, 56, 56, 56, 56, 56, 1434 58, 58, 58, 58, 58, 58, 58, 58, 58, 169,
1385 56, 56, 56, 56, 56, 56, -147 1435 58, 58, 58, 58, 58, 58, 58, -147
1386 }, 1436 },
1387 1437
1388 { 1438 {
1389 11, -148, -148, -148, -148, -148, -148, -148, -148, -148, 1439 11, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1390 -148, -148, -148, 56, -148, -148, 56, 56, 56, 56, 1440 -148, -148, -148, 58, -148, -148, 58, 58, 58, 58,
1391 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1441 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1392 56, 56, 56, 56, 161, 56, -148 1442 58, 58, 58, 58, 58, 58, 58, -148
1393 }, 1443 },
1394 1444
1395 { 1445 {
1396 11, -149, -149, -149, -149, -149, -149, -149, -149, -149, 1446 11, -149, -149, -149, -149, -149, -149, -149, -149, -149,
1397 -149, -149, -149, 56, -149, -149, 56, 56, 56, 56, 1447 -149, -149, -149, 58, -149, -149, 58, 58, 58, 58,
1398 56, 56, 56, 56, 56, 56, 56, 162, 56, 56, 1448 58, 58, 58, 58, 58, 58, 58, 58, 170, 58,
1399 56, 56, 56, 56, 56, 56, -149 1449 58, 58, 58, 58, 58, 58, 58, -149
1400 1450
1401 }, 1451 },
1402 1452
1403 { 1453 {
1404 11, -150, -150, -150, -150, -150, -150, -150, -150, -150, 1454 11, -150, -150, -150, -150, -150, -150, -150, -150, -150,
1405 -150, -150, -150, 56, -150, -150, 163, 56, 56, 56, 1455 -150, -150, -150, 58, -150, -150, 58, 58, 58, 58,
1406 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1456 58, 171, 58, 58, 58, 58, 58, 58, 58, 58,
1407 56, 56, 56, 56, 56, 56, -150 1457 58, 58, 58, 58, 58, 58, 58, -150
1408 }, 1458 },
1409 1459
1410 { 1460 {
1411 11, -151, -151, -151, -151, -151, -151, -151, -151, -151, 1461 11, -151, -151, -151, -151, -151, -151, -151, -151, -151,
1412 -151, -151, -151, 56, -151, -151, 56, 56, 56, 56, 1462 -151, -151, -151, 58, -151, -151, 58, 58, 58, 58,
1413 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1463 58, 58, 58, 58, 58, 58, 58, 58, 58, 172,
1414 56, 56, 56, 56, 56, 56, -151 1464 58, 58, 58, 58, 58, 58, 58, -151
1415 }, 1465 },
1416 1466
1417 { 1467 {
1418 11, -152, -152, -152, -152, -152, -152, -152, -152, -152, 1468 11, -152, -152, -152, -152, -152, -152, -152, -152, -152,
1419 -152, -152, -152, 56, -152, -152, 56, 56, 56, 56, 1469 -152, -152, -152, 58, -152, -152, 58, 58, 58, 58,
1420 1470
1421 164, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1471 58, 58, 58, 58, 58, 58, 58, 58, 173, 58,
1422 56, 56, 56, 56, 56, 56, -152 1472 58, 58, 58, 58, 58, 58, 58, -152
1423 }, 1473 },
1424 1474
1425 { 1475 {
1426 11, -153, -153, -153, -153, -153, -153, -153, -153, -153, 1476 11, -153, -153, -153, -153, -153, -153, -153, -153, -153,
1427 -153, -153, -153, 56, -153, -153, 56, 56, 56, 56, 1477 -153, -153, -153, 58, -153, -153, 58, 58, 58, 58,
1428 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1478 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1429 56, 56, 56, 56, 56, 56, -153 1479 58, 58, 58, 58, 174, 58, 58, -153
1430 }, 1480 },
1431 1481
1432 { 1482 {
1433 11, -154, -154, -154, -154, -154, -154, -154, -154, -154, 1483 11, -154, -154, -154, -154, -154, -154, -154, -154, -154,
1434 -154, -154, -154, 56, -154, -154, 56, 56, 56, 56, 1484 -154, -154, -154, 58, -154, -154, 58, 58, 58, 58,
1435 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1485 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1436 56, 56, 56, 56, 56, 56, -154 1486 58, 58, 58, 58, 58, 58, 58, -154
1437 1487
1438 }, 1488 },
1439 1489
1440 { 1490 {
1441 11, -155, -155, -155, -155, -155, -155, -155, -155, -155, 1491 11, -155, -155, -155, -155, -155, -155, -155, -155, -155,
1442 -155, -155, -155, 56, -155, -155, 56, 56, 56, 56, 1492 -155, -155, -155, 58, -155, -155, 58, 58, 58, 58,
1443 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1493 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1444 56, 56, 56, 165, 56, 56, -155 1494 58, 58, 175, 58, 58, 58, 58, -155
1445 }, 1495 },
1446 1496
1447 { 1497 {
1448 11, -156, -156, -156, -156, -156, -156, -156, -156, -156, 1498 11, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1449 -156, -156, -156, 56, -156, -156, 56, 56, 56, 56, 1499 -156, -156, -156, 58, -156, -156, 58, 58, 58, 58,
1450 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1500 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1451 56, 56, 56, 56, 56, 56, -156 1501 58, 58, 58, 58, 176, 58, 58, -156
1452 }, 1502 },
1453 1503
1454 { 1504 {
1455 11, -157, -157, -157, -157, -157, -157, -157, -157, -157, 1505 11, -157, -157, -157, -157, -157, -157, -157, -157, -157,
1456 -157, -157, -157, 56, -157, -157, 56, 56, 56, 56, 1506 -157, -157, -157, 58, -157, -157, 58, 58, 58, 58,
1457 1507
1458 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1508 58, 177, 58, 58, 58, 58, 58, 58, 58, 58,
1459 56, 56, 56, 56, 56, 56, -157 1509 58, 58, 58, 58, 58, 58, 58, -157
1460 }, 1510 },
1461 1511
1462 { 1512 {
1463 11, -158, -158, -158, -158, -158, -158, -158, -158, -158, 1513 11, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1464 -158, -158, -158, 56, -158, -158, 56, 56, 56, 56, 1514 -158, -158, -158, 58, -158, -158, 58, 58, 58, 58,
1465 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1515 58, 58, 58, 178, 58, 58, 58, 58, 58, 58,
1466 56, 56, 56, 56, 56, 56, -158 1516 58, 58, 58, 58, 58, 58, 58, -158
1467 }, 1517 },
1468 1518
1469 { 1519 {
1470 11, -159, -159, -159, -159, -159, -159, -159, -159, -159, 1520 11, -159, -159, -159, -159, -159, -159, -159, -159, -159,
1471 -159, -159, -159, 56, -159, -159, 56, 56, 56, 56, 1521 -159, -159, -159, 58, -159, -159, 58, 179, 58, 58,
1472 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1522 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1473 56, 56, 56, 56, 56, 56, -159 1523 58, 58, 58, 58, 58, 58, 58, -159
1474 1524
1475 }, 1525 },
1476 1526
1477 { 1527 {
1478 11, -160, -160, -160, -160, -160, -160, -160, -160, -160, 1528 11, -160, -160, -160, -160, -160, -160, -160, -160, -160,
1479 -160, -160, -160, 56, -160, -160, 56, 56, 166, 56, 1529 -160, -160, -160, 58, -160, -160, 58, 58, 58, 58,
1480 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1530 58, 58, 58, 58, 58, 58, 58, 58, 180, 58,
1481 56, 56, 56, 56, 56, 56, -160 1531 58, 58, 58, 58, 58, 58, 58, -160
1482 }, 1532 },
1483 1533
1484 { 1534 {
1485 11, -161, -161, -161, -161, -161, -161, -161, -161, -161, 1535 11, -161, -161, -161, -161, -161, -161, -161, -161, -161,
1486 -161, -161, -161, 56, -161, -161, 56, 56, 56, 56, 1536 -161, -161, -161, 58, -161, -161, 58, 58, 58, 58,
1487 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1537 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1488 56, 56, 56, 56, 56, 56, -161 1538 58, 58, 58, 58, 58, 58, 58, -161
1489 }, 1539 },
1490 1540
1491 { 1541 {
1492 11, -162, -162, -162, -162, -162, -162, -162, -162, -162, 1542 11, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1493 -162, -162, -162, 56, -162, -162, 56, 56, 56, 56, 1543 -162, -162, -162, 58, -162, -162, 58, 58, 58, 58,
1494 1544
1495 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1545 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1496 56, 56, 56, 56, 167, 56, -162 1546 58, 58, 58, 58, 181, 58, 58, -162
1497 }, 1547 },
1498 1548
1499 { 1549 {
1500 11, -163, -163, -163, -163, -163, -163, -163, -163, -163, 1550 11, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1501 -163, -163, -163, 56, -163, -163, 56, 56, 56, 56, 1551 -163, -163, -163, 58, -163, -163, 58, 58, 58, 58,
1502 56, 56, 56, 56, 56, 168, 56, 56, 56, 56, 1552 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1503 56, 56, 56, 56, 56, 56, -163 1553 58, 58, 58, 58, 58, 58, 58, -163
1504 }, 1554 },
1505 1555
1506 { 1556 {
1507 11, -164, -164, -164, -164, -164, -164, -164, -164, -164, 1557 11, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1508 -164, -164, -164, 56, -164, -164, 56, 56, 56, 56, 1558 -164, -164, -164, 58, -164, -164, 58, 58, 58, 58,
1509 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1559 58, 58, 58, 58, 58, 58, 58, 58, 58, 182,
1510 56, 56, 169, 56, 56, 56, -164 1560 58, 58, 58, 58, 58, 58, 58, -164
1511 1561
1512 }, 1562 },
1513 1563
1514 { 1564 {
1515 11, -165, -165, -165, -165, -165, -165, -165, -165, -165, 1565 11, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1516 -165, -165, -165, 56, -165, -165, 56, 56, 56, 56, 1566 -165, -165, -165, 58, -165, -165, 58, 58, 58, 58,
1517 170, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1567 58, 58, 58, 58, 58, 183, 58, 58, 58, 58,
1518 56, 56, 56, 56, 56, 56, -165 1568 58, 58, 58, 58, 58, 58, 58, -165
1519 }, 1569 },
1520 1570
1521 { 1571 {
1522 11, -166, -166, -166, -166, -166, -166, -166, -166, -166, 1572 11, -166, -166, -166, -166, -166, -166, -166, -166, -166,
1523 -166, -166, -166, 56, -166, -166, 56, 56, 56, 56, 1573 -166, -166, -166, 58, -166, -166, 58, 58, 58, 58,
1524 171, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1574 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1525 56, 56, 56, 56, 56, 56, -166 1575 58, 58, 58, 58, 184, 58, 58, -166
1526 }, 1576 },
1527 1577
1528 { 1578 {
1529 11, -167, -167, -167, -167, -167, -167, -167, -167, -167, 1579 11, -167, -167, -167, -167, -167, -167, -167, -167, -167,
1530 -167, -167, -167, 56, -167, -167, 56, 56, 56, 56, 1580 -167, -167, -167, 58, -167, -167, 58, 58, 58, 58,
1531 1581
1532 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1582 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1533 56, 56, 56, 56, 56, 56, -167 1583 58, 58, 58, 185, 58, 58, 58, -167
1534 }, 1584 },
1535 1585
1536 { 1586 {
1537 11, -168, -168, -168, -168, -168, -168, -168, -168, -168, 1587 11, -168, -168, -168, -168, -168, -168, -168, -168, -168,
1538 -168, -168, -168, 56, -168, -168, 56, 56, 56, 56, 1588 -168, -168, -168, 58, -168, -168, 58, 58, 58, 58,
1539 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1589 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1540 56, 56, 56, 56, 56, 56, -168 1590 58, 58, 58, 58, 58, 58, 58, -168
1541 }, 1591 },
1542 1592
1543 { 1593 {
1544 11, -169, -169, -169, -169, -169, -169, -169, -169, -169, 1594 11, -169, -169, -169, -169, -169, -169, -169, -169, -169,
1545 -169, -169, -169, 56, -169, -169, 56, 56, 56, 56, 1595 -169, -169, -169, 58, -169, -169, 58, 58, 58, 58,
1546 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1596 58, 58, 58, 58, 58, 186, 58, 58, 58, 58,
1547 56, 56, 56, 56, 56, 56, -169 1597 58, 58, 58, 58, 58, 58, 58, -169
1548 1598
1549 }, 1599 },
1550 1600
1551 { 1601 {
1552 11, -170, -170, -170, -170, -170, -170, -170, -170, -170, 1602 11, -170, -170, -170, -170, -170, -170, -170, -170, -170,
1553 -170, -170, -170, 56, -170, -170, 56, 56, 56, 56, 1603 -170, -170, -170, 58, -170, -170, 58, 58, 58, 58,
1554 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1604 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1555 56, 56, 56, 56, 56, 56, -170 1605 58, 58, 58, 58, 58, 187, 58, -170
1556 }, 1606 },
1557 1607
1558 { 1608 {
1559 11, -171, -171, -171, -171, -171, -171, -171, -171, -171, 1609 11, -171, -171, -171, -171, -171, -171, -171, -171, -171,
1560 -171, -171, -171, 56, -171, -171, 56, 56, 56, 56, 1610 -171, -171, -171, 58, -171, -171, 58, 58, 58, 58,
1561 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 1611 58, 58, 58, 58, 58, 58, 58, 58, 188, 58,
1562 56, 56, 56, 56, 56, 56, -171 1612 58, 58, 58, 58, 58, 58, 58, -171
1563 }, 1613 },
1564 1614
1565 } ; 1615 {
1616 11, -172, -172, -172, -172, -172, -172, -172, -172, -172,
1617 -172, -172, -172, 58, -172, -172, 58, 58, 58, 58,
1618
1619 58, 58, 58, 58, 58, 58, 58, 58, 189, 58,
1620 58, 58, 58, 58, 58, 58, 58, -172
1621 },
1622
1623 {
1624 11, -173, -173, -173, -173, -173, -173, -173, -173, -173,
1625 -173, -173, -173, 58, -173, -173, 58, 190, 58, 58,
1626 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1627 58, 58, 58, 58, 58, 58, 58, -173
1628 },
1629
1630 {
1631 11, -174, -174, -174, -174, -174, -174, -174, -174, -174,
1632 -174, -174, -174, 58, -174, -174, 58, 58, 58, 58,
1633 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1634 58, 58, 58, 58, 58, 58, 58, -174
1635
1636 },
1637
1638 {
1639 11, -175, -175, -175, -175, -175, -175, -175, -175, -175,
1640 -175, -175, -175, 58, -175, -175, 58, 58, 58, 58,
1641 58, 191, 58, 58, 58, 58, 58, 58, 58, 58,
1642 58, 58, 58, 58, 58, 58, 58, -175
1643 },
1644
1645 {
1646 11, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1647 -176, -176, -176, 58, -176, -176, 58, 58, 58, 58,
1648 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1649 58, 58, 58, 58, 58, 58, 58, -176
1650 },
1651
1652 {
1653 11, -177, -177, -177, -177, -177, -177, -177, -177, -177,
1654 -177, -177, -177, 58, -177, -177, 58, 58, 58, 58,
1655
1656 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1657 58, 58, 58, 58, 58, 58, 58, -177
1658 },
1659
1660 {
1661 11, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1662 -178, -178, -178, 58, -178, -178, 58, 58, 58, 58,
1663 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1664 58, 58, 58, 58, 58, 58, 58, -178
1665 },
1666
1667 {
1668 11, -179, -179, -179, -179, -179, -179, -179, -179, -179,
1669 -179, -179, -179, 58, -179, -179, 58, 58, 58, 58,
1670 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1671 58, 58, 58, 58, 192, 58, 58, -179
1672
1673 },
1674
1675 {
1676 11, -180, -180, -180, -180, -180, -180, -180, -180, -180,
1677 -180, -180, -180, 58, -180, -180, 58, 58, 58, 58,
1678 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1679 58, 58, 58, 58, 58, 58, 58, -180
1680 },
1681
1682 {
1683 11, -181, -181, -181, -181, -181, -181, -181, -181, -181,
1684 -181, -181, -181, 58, -181, -181, 58, 58, 58, 58,
1685 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1686 58, 58, 58, 58, 58, 58, 58, -181
1687 },
1688
1689 {
1690 11, -182, -182, -182, -182, -182, -182, -182, -182, -182,
1691 -182, -182, -182, 58, -182, -182, 58, 58, 58, 58,
1692
1693 58, 58, 58, 58, 58, 58, 193, 58, 58, 58,
1694 58, 58, 58, 58, 58, 58, 58, -182
1695 },
1696
1697 {
1698 11, -183, -183, -183, -183, -183, -183, -183, -183, -183,
1699 -183, -183, -183, 58, -183, -183, 58, 58, 58, 58,
1700 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1701 58, 58, 58, 194, 58, 58, 58, -183
1702 },
1703
1704 {
1705 11, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1706 -184, -184, -184, 58, -184, -184, 58, 58, 58, 58,
1707 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1708 58, 58, 58, 58, 58, 58, 58, -184
1709
1710 },
1711
1712 {
1713 11, -185, -185, -185, -185, -185, -185, -185, -185, -185,
1714 -185, -185, -185, 58, -185, -185, 58, 58, 58, 58,
1715 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1716 58, 58, 58, 58, 58, 58, 58, -185
1717 },
1718
1719 {
1720 11, -186, -186, -186, -186, -186, -186, -186, -186, -186,
1721 -186, -186, -186, 58, -186, -186, 58, 58, 58, 195,
1722 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1723 58, 58, 58, 58, 58, 58, 58, -186
1724 },
1725
1726 {
1727 11, -187, -187, -187, -187, -187, -187, -187, -187, -187,
1728 -187, -187, -187, 58, -187, -187, 58, 58, 58, 58,
1729
1730 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1731 58, 58, 58, 58, 58, 58, 58, -187
1732 },
1733
1734 {
1735 11, -188, -188, -188, -188, -188, -188, -188, -188, -188,
1736 -188, -188, -188, 58, -188, -188, 58, 58, 58, 58,
1737 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1738 58, 58, 58, 58, 58, 196, 58, -188
1739 },
1740
1741 {
1742 11, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1743 -189, -189, -189, 58, -189, -189, 58, 58, 58, 58,
1744 58, 58, 197, 58, 58, 58, 58, 58, 58, 58,
1745 58, 58, 58, 58, 58, 58, 58, -189
1746
1747 },
1748
1749 {
1750 11, -190, -190, -190, -190, -190, -190, -190, -190, -190,
1751 -190, -190, -190, 58, -190, -190, 58, 58, 58, 58,
1752 58, 58, 58, 58, 58, 58, 198, 58, 58, 58,
1753 58, 58, 58, 58, 58, 58, 58, -190
1754 },
1755
1756 {
1757 11, -191, -191, -191, -191, -191, -191, -191, -191, -191,
1758 -191, -191, -191, 58, -191, -191, 58, 58, 58, 58,
1759 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1760 58, 58, 58, 199, 58, 58, 58, -191
1761 },
1762
1763 {
1764 11, -192, -192, -192, -192, -192, -192, -192, -192, -192,
1765 -192, -192, -192, 58, -192, -192, 58, 58, 58, 58,
1766
1767 58, 200, 58, 58, 58, 58, 58, 58, 58, 58,
1768 58, 58, 58, 58, 58, 58, 58, -192
1769 },
1770
1771 {
1772 11, -193, -193, -193, -193, -193, -193, -193, -193, -193,
1773 -193, -193, -193, 58, -193, -193, 58, 58, 58, 58,
1774 58, 201, 58, 58, 58, 58, 58, 58, 58, 58,
1775 58, 58, 58, 58, 58, 58, 58, -193
1776 },
1777
1778 {
1779 11, -194, -194, -194, -194, -194, -194, -194, -194, -194,
1780 -194, -194, -194, 58, -194, -194, 58, 58, 58, 58,
1781 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1782 58, 58, 58, 58, 202, 58, 58, -194
1783
1784 },
1785
1786 {
1787 11, -195, -195, -195, -195, -195, -195, -195, -195, -195,
1788 -195, -195, -195, 58, -195, -195, 58, 58, 58, 58,
1789 58, 203, 58, 58, 58, 58, 58, 58, 58, 58,
1790 58, 58, 58, 58, 58, 58, 58, -195
1791 },
1792
1793 {
1794 11, -196, -196, -196, -196, -196, -196, -196, -196, -196,
1795 -196, -196, -196, 58, -196, -196, 58, 58, 58, 58,
1796 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1797 58, 58, 58, 58, 58, 58, 58, -196
1798 },
1799
1800 {
1801 11, -197, -197, -197, -197, -197, -197, -197, -197, -197,
1802 -197, -197, -197, 58, -197, -197, 58, 58, 58, 58,
1803
1804 58, 58, 58, 58, 58, 204, 58, 58, 58, 58,
1805 58, 58, 58, 58, 58, 58, 58, -197
1806 },
1807
1808 {
1809 11, -198, -198, -198, -198, -198, -198, -198, -198, -198,
1810 -198, -198, -198, 58, -198, -198, 58, 58, 58, 58,
1811 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1812 58, 58, 58, 58, 58, 58, 58, -198
1813 },
1814
1815 {
1816 11, -199, -199, -199, -199, -199, -199, -199, -199, -199,
1817 -199, -199, -199, 58, -199, -199, 58, 58, 58, 58,
1818 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1819 58, 58, 58, 58, 58, 58, 58, -199
1820
1821 },
1822
1823 {
1824 11, -200, -200, -200, -200, -200, -200, -200, -200, -200,
1825 -200, -200, -200, 58, -200, -200, 58, 58, 58, 58,
1826 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1827 58, 58, 58, 58, 58, 58, 58, -200
1828 },
1829
1830 {
1831 11, -201, -201, -201, -201, -201, -201, -201, -201, -201,
1832 -201, -201, -201, 58, -201, -201, 58, 205, 58, 58,
1833 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1834 58, 58, 58, 58, 58, 58, 58, -201
1835 },
1836
1837 {
1838 11, -202, -202, -202, -202, -202, -202, -202, -202, -202,
1839 -202, -202, -202, 58, -202, -202, 58, 206, 58, 58,
1840
1841 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1842 58, 58, 58, 58, 58, 58, 58, -202
1843 },
1844
1845 {
1846 11, -203, -203, -203, -203, -203, -203, -203, -203, -203,
1847 -203, -203, -203, 58, -203, -203, 58, 58, 58, 58,
1848 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1849 58, 58, 58, 58, 58, 58, 58, -203
1850 },
1851
1852 {
1853 11, -204, -204, -204, -204, -204, -204, -204, -204, -204,
1854 -204, -204, -204, 58, -204, -204, 58, 58, 58, 58,
1855 58, 58, 58, 207, 58, 58, 58, 58, 58, 58,
1856 58, 58, 58, 58, 58, 58, 58, -204
1857
1858 },
1859
1860 {
1861 11, -205, -205, -205, -205, -205, -205, -205, -205, -205,
1862 -205, -205, -205, 58, -205, -205, 58, 58, 58, 58,
1863 58, 58, 58, 58, 58, 58, 58, 58, 208, 58,
1864 58, 58, 58, 58, 58, 58, 58, -205
1865 },
1866
1867 {
1868 11, -206, -206, -206, -206, -206, -206, -206, -206, -206,
1869 -206, -206, -206, 58, -206, -206, 58, 58, 58, 58,
1870 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1871 58, 58, 58, 58, 209, 58, 58, -206
1872 },
1873
1874 {
1875 11, -207, -207, -207, -207, -207, -207, -207, -207, -207,
1876 -207, -207, -207, 58, -207, -207, 58, 58, 58, 58,
1877
1878 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1879 58, 58, 58, 58, 58, 58, 58, -207
1880 },
1881
1882 {
1883 11, -208, -208, -208, -208, -208, -208, -208, -208, -208,
1884 -208, -208, -208, 58, -208, -208, 58, 58, 58, 58,
1885 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1886 58, 58, 58, 58, 58, 58, 58, -208
1887 },
1888
1889 {
1890 11, -209, -209, -209, -209, -209, -209, -209, -209, -209,
1891 -209, -209, -209, 58, -209, -209, 58, 58, 58, 58,
1892 58, 210, 58, 58, 58, 58, 58, 58, 58, 58,
1893 58, 58, 58, 58, 58, 58, 58, -209
1894
1895 },
1896
1897 {
1898 11, -210, -210, -210, -210, -210, -210, -210, -210, -210,
1899 -210, -210, -210, 58, -210, -210, 58, 58, 58, 58,
1900 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
1901 58, 58, 58, 58, 58, 58, 58, -210
1902 },
1566 1903
1904 } ;
1567 1905
1568static yy_state_type yy_get_previous_state YY_PROTO(( void )); 1906static yy_state_type yy_get_previous_state (void );
1569static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); 1907static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
1570static int yy_get_next_buffer YY_PROTO(( void )); 1908static int yy_get_next_buffer (void );
1571static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); 1909static void yy_fatal_error (yyconst char msg[] );
1572 1910
1573/* Done after the current pattern has been matched and before the 1911/* Done after the current pattern has been matched and before the
1574 * corresponding action - sets up yytext. 1912 * corresponding action - sets up zconftext.
1575 */ 1913 */
1576#define YY_DO_BEFORE_ACTION \ 1914#define YY_DO_BEFORE_ACTION \
1577 yytext_ptr = yy_bp; \ 1915 (yytext_ptr) = yy_bp; \
1578 yyleng = (int) (yy_cp - yy_bp); \ 1916 zconfleng = (size_t) (yy_cp - yy_bp); \
1579 yy_hold_char = *yy_cp; \ 1917 (yy_hold_char) = *yy_cp; \
1580 *yy_cp = '\0'; \ 1918 *yy_cp = '\0'; \
1581 yy_c_buf_p = yy_cp; 1919 (yy_c_buf_p) = yy_cp;
1582 1920
1583#define YY_NUM_RULES 55 1921#define YY_NUM_RULES 64
1584#define YY_END_OF_BUFFER 56 1922#define YY_END_OF_BUFFER 65
1585static yyconst short int yy_accept[172] = 1923/* This struct is not used in this scanner,
1924 but its presence is necessary. */
1925struct yy_trans_info
1926 {
1927 flex_int32_t yy_verify;
1928 flex_int32_t yy_nxt;
1929 };
1930static yyconst flex_int16_t yy_accept[211] =
1586 { 0, 1931 { 0,
1587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1588 56, 5, 4, 3, 2, 29, 30, 28, 28, 28, 1933 65, 5, 4, 3, 2, 36, 37, 35, 35, 35,
1589 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1934 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1590 54, 51, 53, 46, 50, 49, 48, 44, 41, 35, 1935 63, 60, 62, 55, 59, 58, 57, 53, 48, 42,
1591 40, 44, 33, 34, 43, 43, 36, 43, 43, 44, 1936 47, 51, 53, 40, 41, 50, 50, 43, 53, 50,
1592 4, 3, 2, 2, 1, 28, 28, 28, 28, 28, 1937 50, 53, 4, 3, 2, 2, 1, 35, 35, 35,
1593 28, 28, 15, 28, 28, 28, 28, 28, 28, 28, 1938 35, 35, 35, 35, 16, 35, 35, 35, 35, 35,
1594 28, 28, 54, 51, 53, 52, 46, 45, 48, 47, 1939 35, 35, 35, 35, 35, 35, 63, 60, 62, 61,
1595 37, 31, 43, 43, 38, 39, 32, 28, 28, 28, 1940 55, 54, 57, 56, 44, 51, 38, 50, 50, 52,
1596 28, 28, 28, 28, 28, 26, 25, 28, 28, 28, 1941 45, 46, 39, 35, 35, 35, 35, 35, 35, 35,
1597 1942
1598 28, 28, 28, 28, 28, 42, 23, 28, 28, 28, 1943 35, 35, 30, 29, 35, 35, 35, 35, 35, 35,
1599 28, 28, 28, 28, 28, 14, 28, 7, 28, 28, 1944 35, 35, 35, 35, 49, 25, 35, 35, 35, 35,
1600 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 1945 35, 35, 35, 35, 35, 35, 15, 35, 7, 35,
1601 28, 16, 28, 28, 28, 28, 28, 28, 28, 28, 1946 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
1602 28, 10, 28, 13, 28, 28, 28, 28, 28, 28, 1947 35, 35, 35, 35, 35, 35, 35, 17, 35, 35,
1603 21, 28, 9, 27, 28, 24, 12, 20, 17, 28, 1948 35, 35, 35, 34, 35, 35, 35, 35, 35, 35,
1604 8, 28, 28, 28, 28, 28, 6, 19, 18, 22, 1949 10, 35, 13, 35, 35, 35, 35, 33, 35, 35,
1605 11 1950 35, 35, 35, 22, 35, 32, 9, 31, 35, 26,
1951 12, 35, 35, 21, 18, 35, 8, 35, 35, 35,
1952 35, 35, 27, 35, 35, 6, 35, 20, 19, 23,
1953
1954 35, 35, 11, 35, 35, 35, 14, 28, 35, 24
1606 } ; 1955 } ;
1607 1956
1608static yyconst int yy_ec[256] = 1957static yyconst flex_int32_t yy_ec[256] =
1609 { 0, 1958 { 0,
1610 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1959 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1611 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1960 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1616,11 +1965,11 @@ static yyconst int yy_ec[256] =
1616 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, 1965 14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
1617 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1966 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1618 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1967 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1619 1, 15, 1, 1, 13, 1, 16, 17, 18, 19, 1968 1, 15, 1, 1, 16, 1, 17, 18, 19, 20,
1620 1969
1621 20, 21, 22, 23, 24, 13, 13, 25, 26, 27, 1970 21, 22, 23, 24, 25, 13, 13, 26, 27, 28,
1622 28, 29, 30, 31, 32, 33, 34, 13, 13, 35, 1971 29, 30, 31, 32, 33, 34, 35, 13, 13, 36,
1623 13, 13, 1, 36, 1, 1, 1, 1, 1, 1, 1972 13, 13, 1, 37, 1, 1, 1, 1, 1, 1,
1624 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1973 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1625 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1974 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1626 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1975 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1637,6 +1986,9 @@ static yyconst int yy_ec[256] =
1637 1, 1, 1, 1, 1 1986 1, 1, 1, 1, 1
1638 } ; 1987 } ;
1639 1988
1989extern int zconf_flex_debug;
1990int zconf_flex_debug = 0;
1991
1640/* The intent behind this definition is that it'll catch 1992/* The intent behind this definition is that it'll catch
1641 * any uses of REJECT which flex missed. 1993 * any uses of REJECT which flex missed.
1642 */ 1994 */
@@ -1644,21 +1996,14 @@ static yyconst int yy_ec[256] =
1644#define yymore() yymore_used_but_not_detected 1996#define yymore() yymore_used_but_not_detected
1645#define YY_MORE_ADJ 0 1997#define YY_MORE_ADJ 0
1646#define YY_RESTORE_YY_MORE_OFFSET 1998#define YY_RESTORE_YY_MORE_OFFSET
1647char *yytext; 1999char *zconftext;
1648#line 1 "zconf.l"
1649#define INITIAL 0
1650#define YY_NEVER_INTERACTIVE 1
1651#define COMMAND 1
1652#define HELP 2
1653#define STRING 3
1654#define PARAM 4
1655 2000
1656#line 5 "zconf.l"
1657/* 2001/*
1658 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 2002 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
1659 * Released under the terms of the GNU GPL v2.0. 2003 * Released under the terms of the GNU GPL v2.0.
1660 */ 2004 */
1661 2005
2006#include <limits.h>
1662#include <stdio.h> 2007#include <stdio.h>
1663#include <stdlib.h> 2008#include <stdlib.h>
1664#include <string.h> 2009#include <string.h>
@@ -1666,7 +2011,6 @@ char *yytext;
1666 2011
1667#define LKC_DIRECT_LINK 2012#define LKC_DIRECT_LINK
1668#include "lkc.h" 2013#include "lkc.h"
1669#include "zconf.tab.h"
1670 2014
1671#define START_STRSIZE 16 2015#define START_STRSIZE 16
1672 2016
@@ -1715,7 +2059,22 @@ void alloc_string(const char *str, int size)
1715 memcpy(text, str, size); 2059 memcpy(text, str, size);
1716 text[size] = 0; 2060 text[size] = 0;
1717} 2061}
1718#line 1719 "lex.zconf.c" 2062
2063#define INITIAL 0
2064#define COMMAND 1
2065#define HELP 2
2066#define STRING 3
2067#define PARAM 4
2068
2069/* Special case for "unistd.h", since it is non-ANSI. We include it way
2070 * down here because we want the user's section 1 to have been scanned first.
2071 * The user has a chance to override it with an option.
2072 */
2073#include <unistd.h>
2074
2075#ifndef YY_EXTRA_TYPE
2076#define YY_EXTRA_TYPE void *
2077#endif
1719 2078
1720/* Macros after this point can all be overridden by user definitions in 2079/* Macros after this point can all be overridden by user definitions in
1721 * section 1. 2080 * section 1.
@@ -1723,65 +2082,30 @@ void alloc_string(const char *str, int size)
1723 2082
1724#ifndef YY_SKIP_YYWRAP 2083#ifndef YY_SKIP_YYWRAP
1725#ifdef __cplusplus 2084#ifdef __cplusplus
1726extern "C" int yywrap YY_PROTO(( void )); 2085extern "C" int zconfwrap (void );
1727#else 2086#else
1728extern int yywrap YY_PROTO(( void )); 2087extern int zconfwrap (void );
1729#endif 2088#endif
1730#endif 2089#endif
1731 2090
1732#ifndef YY_NO_UNPUT 2091 static void yyunput (int c,char *buf_ptr );
1733static void yyunput YY_PROTO(( int c, char *buf_ptr )); 2092
1734#endif
1735
1736#ifndef yytext_ptr 2093#ifndef yytext_ptr
1737static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); 2094static void yy_flex_strncpy (char *,yyconst char *,int );
1738#endif 2095#endif
1739 2096
1740#ifdef YY_NEED_STRLEN 2097#ifdef YY_NEED_STRLEN
1741static int yy_flex_strlen YY_PROTO(( yyconst char * )); 2098static int yy_flex_strlen (yyconst char * );
1742#endif 2099#endif
1743 2100
1744#ifndef YY_NO_INPUT 2101#ifndef YY_NO_INPUT
1745#ifdef __cplusplus
1746static int yyinput YY_PROTO(( void ));
1747#else
1748static int input YY_PROTO(( void ));
1749#endif
1750#endif
1751
1752#if YY_STACK_USED
1753static int yy_start_stack_ptr = 0;
1754static int yy_start_stack_depth = 0;
1755static int *yy_start_stack = 0;
1756#ifndef YY_NO_PUSH_STATE
1757static void yy_push_state YY_PROTO(( int new_state ));
1758#endif
1759#ifndef YY_NO_POP_STATE
1760static void yy_pop_state YY_PROTO(( void ));
1761#endif
1762#ifndef YY_NO_TOP_STATE
1763static int yy_top_state YY_PROTO(( void ));
1764#endif
1765 2102
2103#ifdef __cplusplus
2104static int yyinput (void );
1766#else 2105#else
1767#define YY_NO_PUSH_STATE 1 2106static int input (void );
1768#define YY_NO_POP_STATE 1
1769#define YY_NO_TOP_STATE 1
1770#endif 2107#endif
1771 2108
1772#ifdef YY_MALLOC_DECL
1773YY_MALLOC_DECL
1774#else
1775#if __STDC__
1776#ifndef __cplusplus
1777#include <stdlib.h>
1778#endif
1779#else
1780/* Just try to get by without declaring the routines. This will fail
1781 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1782 * or sizeof(void*) != sizeof(int).
1783 */
1784#endif
1785#endif 2109#endif
1786 2110
1787/* Amount of stuff to slurp up with each read. */ 2111/* Amount of stuff to slurp up with each read. */
@@ -1790,12 +2114,11 @@ YY_MALLOC_DECL
1790#endif 2114#endif
1791 2115
1792/* Copy whatever the last rule matched to the standard output. */ 2116/* Copy whatever the last rule matched to the standard output. */
1793
1794#ifndef ECHO 2117#ifndef ECHO
1795/* This used to be an fputs(), but since the string might contain NUL's, 2118/* This used to be an fputs(), but since the string might contain NUL's,
1796 * we now use fwrite(). 2119 * we now use fwrite().
1797 */ 2120 */
1798#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) 2121#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
1799#endif 2122#endif
1800 2123
1801/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 2124/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -1804,7 +2127,7 @@ YY_MALLOC_DECL
1804#ifndef YY_INPUT 2127#ifndef YY_INPUT
1805#define YY_INPUT(buf,result,max_size) \ 2128#define YY_INPUT(buf,result,max_size) \
1806 errno=0; \ 2129 errno=0; \
1807 while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \ 2130 while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
1808 { \ 2131 { \
1809 if( errno != EINTR) \ 2132 if( errno != EINTR) \
1810 { \ 2133 { \
@@ -1812,8 +2135,10 @@ YY_MALLOC_DECL
1812 break; \ 2135 break; \
1813 } \ 2136 } \
1814 errno=0; \ 2137 errno=0; \
1815 clearerr(yyin); \ 2138 clearerr(zconfin); \
1816 } 2139 }\
2140\
2141
1817#endif 2142#endif
1818 2143
1819/* No semi-colon after return; correct usage is to write "yyterminate();" - 2144/* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -1834,14 +2159,20 @@ YY_MALLOC_DECL
1834#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 2159#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1835#endif 2160#endif
1836 2161
2162/* end tables serialization structures and prototypes */
2163
1837/* Default declaration of generated scanner - a define so the user can 2164/* Default declaration of generated scanner - a define so the user can
1838 * easily add parameters. 2165 * easily add parameters.
1839 */ 2166 */
1840#ifndef YY_DECL 2167#ifndef YY_DECL
1841#define YY_DECL int yylex YY_PROTO(( void )) 2168#define YY_DECL_IS_OURS 1
1842#endif 2169
2170extern int zconflex (void);
2171
2172#define YY_DECL int zconflex (void)
2173#endif /* !YY_DECL */
1843 2174
1844/* Code executed at the beginning of each rule, after yytext and yyleng 2175/* Code executed at the beginning of each rule, after zconftext and zconfleng
1845 * have been set up. 2176 * have been set up.
1846 */ 2177 */
1847#ifndef YY_USER_ACTION 2178#ifndef YY_USER_ACTION
@@ -1856,58 +2187,58 @@ YY_MALLOC_DECL
1856#define YY_RULE_SETUP \ 2187#define YY_RULE_SETUP \
1857 YY_USER_ACTION 2188 YY_USER_ACTION
1858 2189
2190/** The main scanner function which does all the work.
2191 */
1859YY_DECL 2192YY_DECL
1860 { 2193{
1861 register yy_state_type yy_current_state; 2194 register yy_state_type yy_current_state;
1862 register char *yy_cp, *yy_bp; 2195 register char *yy_cp, *yy_bp;
1863 register int yy_act; 2196 register int yy_act;
1864 2197
1865#line 71 "zconf.l"
1866
1867 int str = 0; 2198 int str = 0;
1868 int ts, i; 2199 int ts, i;
1869 2200
1870#line 1871 "lex.zconf.c" 2201 if ( (yy_init) )
1871
1872 if ( yy_init )
1873 { 2202 {
1874 yy_init = 0; 2203 (yy_init) = 0;
1875 2204
1876#ifdef YY_USER_INIT 2205#ifdef YY_USER_INIT
1877 YY_USER_INIT; 2206 YY_USER_INIT;
1878#endif 2207#endif
1879 2208
1880 if ( ! yy_start ) 2209 if ( ! (yy_start) )
1881 yy_start = 1; /* first start state */ 2210 (yy_start) = 1; /* first start state */
1882 2211
1883 if ( ! yyin ) 2212 if ( ! zconfin )
1884 yyin = stdin; 2213 zconfin = stdin;
1885 2214
1886 if ( ! yyout ) 2215 if ( ! zconfout )
1887 yyout = stdout; 2216 zconfout = stdout;
1888 2217
1889 if ( ! yy_current_buffer ) 2218 if ( ! YY_CURRENT_BUFFER ) {
1890 yy_current_buffer = 2219 zconfensure_buffer_stack ();
1891 yy_create_buffer( yyin, YY_BUF_SIZE ); 2220 YY_CURRENT_BUFFER_LVALUE =
2221 zconf_create_buffer(zconfin,YY_BUF_SIZE );
2222 }
1892 2223
1893 yy_load_buffer_state(); 2224 zconf_load_buffer_state( );
1894 } 2225 }
1895 2226
1896 while ( 1 ) /* loops until end-of-file is reached */ 2227 while ( 1 ) /* loops until end-of-file is reached */
1897 { 2228 {
1898 yy_cp = yy_c_buf_p; 2229 yy_cp = (yy_c_buf_p);
1899 2230
1900 /* Support of yytext. */ 2231 /* Support of zconftext. */
1901 *yy_cp = yy_hold_char; 2232 *yy_cp = (yy_hold_char);
1902 2233
1903 /* yy_bp points to the position in yy_ch_buf of the start of 2234 /* yy_bp points to the position in yy_ch_buf of the start of
1904 * the current run. 2235 * the current run.
1905 */ 2236 */
1906 yy_bp = yy_cp; 2237 yy_bp = yy_cp;
1907 2238
1908 yy_current_state = yy_start; 2239 yy_current_state = (yy_start);
1909yy_match: 2240yy_match:
1910 while ( (yy_current_state = yy_nxt[yy_current_state][yy_ec[YY_SC_TO_UI(*yy_cp)]]) > 0 ) 2241 while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
1911 ++yy_cp; 2242 ++yy_cp;
1912 2243
1913 yy_current_state = -yy_current_state; 2244 yy_current_state = -yy_current_state;
@@ -1917,334 +2248,321 @@ yy_find_action:
1917 2248
1918 YY_DO_BEFORE_ACTION; 2249 YY_DO_BEFORE_ACTION;
1919 2250
1920
1921do_action: /* This label is used only to access EOF actions. */ 2251do_action: /* This label is used only to access EOF actions. */
1922 2252
1923
1924 switch ( yy_act ) 2253 switch ( yy_act )
1925 { /* beginning of action switch */ 2254 { /* beginning of action switch */
1926case 1: 2255case 1:
2256/* rule 1 can match eol */
1927YY_RULE_SETUP 2257YY_RULE_SETUP
1928#line 75 "zconf.l"
1929current_file->lineno++; 2258current_file->lineno++;
1930 YY_BREAK 2259 YY_BREAK
1931case 2: 2260case 2:
1932YY_RULE_SETUP 2261YY_RULE_SETUP
1933#line 76 "zconf.l"
1934 2262
1935 YY_BREAK 2263 YY_BREAK
1936case 3: 2264case 3:
2265/* rule 3 can match eol */
1937YY_RULE_SETUP 2266YY_RULE_SETUP
1938#line 78 "zconf.l"
1939current_file->lineno++; return T_EOL; 2267current_file->lineno++; return T_EOL;
1940 YY_BREAK 2268 YY_BREAK
1941case 4: 2269case 4:
1942YY_RULE_SETUP 2270YY_RULE_SETUP
1943#line 80 "zconf.l"
1944{ 2271{
1945 BEGIN(COMMAND); 2272 BEGIN(COMMAND);
1946} 2273}
1947 YY_BREAK 2274 YY_BREAK
1948case 5: 2275case 5:
1949YY_RULE_SETUP 2276YY_RULE_SETUP
1950#line 84 "zconf.l"
1951{ 2277{
1952 unput(yytext[0]); 2278 unput(zconftext[0]);
1953 BEGIN(COMMAND); 2279 BEGIN(COMMAND);
1954} 2280}
1955 YY_BREAK 2281 YY_BREAK
1956 2282
1957case 6: 2283case 6:
1958YY_RULE_SETUP 2284YY_RULE_SETUP
1959#line 91 "zconf.l"
1960BEGIN(PARAM); return T_MAINMENU; 2285BEGIN(PARAM); return T_MAINMENU;
1961 YY_BREAK 2286 YY_BREAK
1962case 7: 2287case 7:
1963YY_RULE_SETUP 2288YY_RULE_SETUP
1964#line 92 "zconf.l"
1965BEGIN(PARAM); return T_MENU; 2289BEGIN(PARAM); return T_MENU;
1966 YY_BREAK 2290 YY_BREAK
1967case 8: 2291case 8:
1968YY_RULE_SETUP 2292YY_RULE_SETUP
1969#line 93 "zconf.l"
1970BEGIN(PARAM); return T_ENDMENU; 2293BEGIN(PARAM); return T_ENDMENU;
1971 YY_BREAK 2294 YY_BREAK
1972case 9: 2295case 9:
1973YY_RULE_SETUP 2296YY_RULE_SETUP
1974#line 94 "zconf.l"
1975BEGIN(PARAM); return T_SOURCE; 2297BEGIN(PARAM); return T_SOURCE;
1976 YY_BREAK 2298 YY_BREAK
1977case 10: 2299case 10:
1978YY_RULE_SETUP 2300YY_RULE_SETUP
1979#line 95 "zconf.l"
1980BEGIN(PARAM); return T_CHOICE; 2301BEGIN(PARAM); return T_CHOICE;
1981 YY_BREAK 2302 YY_BREAK
1982case 11: 2303case 11:
1983YY_RULE_SETUP 2304YY_RULE_SETUP
1984#line 96 "zconf.l"
1985BEGIN(PARAM); return T_ENDCHOICE; 2305BEGIN(PARAM); return T_ENDCHOICE;
1986 YY_BREAK 2306 YY_BREAK
1987case 12: 2307case 12:
1988YY_RULE_SETUP 2308YY_RULE_SETUP
1989#line 97 "zconf.l"
1990BEGIN(PARAM); return T_COMMENT; 2309BEGIN(PARAM); return T_COMMENT;
1991 YY_BREAK 2310 YY_BREAK
1992case 13: 2311case 13:
1993YY_RULE_SETUP 2312YY_RULE_SETUP
1994#line 98 "zconf.l"
1995BEGIN(PARAM); return T_CONFIG; 2313BEGIN(PARAM); return T_CONFIG;
1996 YY_BREAK 2314 YY_BREAK
1997case 14: 2315case 14:
1998YY_RULE_SETUP 2316YY_RULE_SETUP
1999#line 99 "zconf.l" 2317BEGIN(PARAM); return T_MENUCONFIG;
2000BEGIN(PARAM); return T_HELP;
2001 YY_BREAK 2318 YY_BREAK
2002case 15: 2319case 15:
2003YY_RULE_SETUP 2320YY_RULE_SETUP
2004#line 100 "zconf.l" 2321BEGIN(PARAM); return T_HELP;
2005BEGIN(PARAM); return T_IF;
2006 YY_BREAK 2322 YY_BREAK
2007case 16: 2323case 16:
2008YY_RULE_SETUP 2324YY_RULE_SETUP
2009#line 101 "zconf.l" 2325BEGIN(PARAM); return T_IF;
2010BEGIN(PARAM); return T_ENDIF;
2011 YY_BREAK 2326 YY_BREAK
2012case 17: 2327case 17:
2013YY_RULE_SETUP 2328YY_RULE_SETUP
2014#line 102 "zconf.l" 2329BEGIN(PARAM); return T_ENDIF;
2015BEGIN(PARAM); return T_DEPENDS;
2016 YY_BREAK 2330 YY_BREAK
2017case 18: 2331case 18:
2018YY_RULE_SETUP 2332YY_RULE_SETUP
2019#line 103 "zconf.l" 2333BEGIN(PARAM); return T_DEPENDS;
2020BEGIN(PARAM); return T_REQUIRES;
2021 YY_BREAK 2334 YY_BREAK
2022case 19: 2335case 19:
2023YY_RULE_SETUP 2336YY_RULE_SETUP
2024#line 104 "zconf.l" 2337BEGIN(PARAM); return T_REQUIRES;
2025BEGIN(PARAM); return T_OPTIONAL;
2026 YY_BREAK 2338 YY_BREAK
2027case 20: 2339case 20:
2028YY_RULE_SETUP 2340YY_RULE_SETUP
2029#line 105 "zconf.l" 2341BEGIN(PARAM); return T_OPTIONAL;
2030BEGIN(PARAM); return T_DEFAULT;
2031 YY_BREAK 2342 YY_BREAK
2032case 21: 2343case 21:
2033YY_RULE_SETUP 2344YY_RULE_SETUP
2034#line 106 "zconf.l" 2345BEGIN(PARAM); return T_DEFAULT;
2035BEGIN(PARAM); return T_PROMPT;
2036 YY_BREAK 2346 YY_BREAK
2037case 22: 2347case 22:
2038YY_RULE_SETUP 2348YY_RULE_SETUP
2039#line 107 "zconf.l" 2349BEGIN(PARAM); return T_PROMPT;
2040BEGIN(PARAM); return T_TRISTATE;
2041 YY_BREAK 2350 YY_BREAK
2042case 23: 2351case 23:
2043YY_RULE_SETUP 2352YY_RULE_SETUP
2044#line 108 "zconf.l" 2353BEGIN(PARAM); return T_TRISTATE;
2045BEGIN(PARAM); return T_BOOLEAN;
2046 YY_BREAK 2354 YY_BREAK
2047case 24: 2355case 24:
2048YY_RULE_SETUP 2356YY_RULE_SETUP
2049#line 109 "zconf.l" 2357BEGIN(PARAM); return T_DEF_TRISTATE;
2050BEGIN(PARAM); return T_BOOLEAN;
2051 YY_BREAK 2358 YY_BREAK
2052case 25: 2359case 25:
2053YY_RULE_SETUP 2360YY_RULE_SETUP
2054#line 110 "zconf.l" 2361BEGIN(PARAM); return T_BOOLEAN;
2055BEGIN(PARAM); return T_INT;
2056 YY_BREAK 2362 YY_BREAK
2057case 26: 2363case 26:
2058YY_RULE_SETUP 2364YY_RULE_SETUP
2059#line 111 "zconf.l" 2365BEGIN(PARAM); return T_BOOLEAN;
2060BEGIN(PARAM); return T_HEX;
2061 YY_BREAK 2366 YY_BREAK
2062case 27: 2367case 27:
2063YY_RULE_SETUP 2368YY_RULE_SETUP
2064#line 112 "zconf.l" 2369BEGIN(PARAM); return T_DEF_BOOLEAN;
2065BEGIN(PARAM); return T_STRING;
2066 YY_BREAK 2370 YY_BREAK
2067case 28: 2371case 28:
2068YY_RULE_SETUP 2372YY_RULE_SETUP
2069#line 113 "zconf.l" 2373BEGIN(PARAM); return T_DEF_BOOLEAN;
2374 YY_BREAK
2375case 29:
2376YY_RULE_SETUP
2377BEGIN(PARAM); return T_INT;
2378 YY_BREAK
2379case 30:
2380YY_RULE_SETUP
2381BEGIN(PARAM); return T_HEX;
2382 YY_BREAK
2383case 31:
2384YY_RULE_SETUP
2385BEGIN(PARAM); return T_STRING;
2386 YY_BREAK
2387case 32:
2388YY_RULE_SETUP
2389BEGIN(PARAM); return T_SELECT;
2390 YY_BREAK
2391case 33:
2392YY_RULE_SETUP
2393BEGIN(PARAM); return T_SELECT;
2394 YY_BREAK
2395case 34:
2396YY_RULE_SETUP
2397BEGIN(PARAM); return T_RANGE;
2398 YY_BREAK
2399case 35:
2400YY_RULE_SETUP
2070{ 2401{
2071 alloc_string(yytext, yyleng); 2402 alloc_string(zconftext, zconfleng);
2072 zconflval.string = text; 2403 zconflval.string = text;
2073 return T_WORD; 2404 return T_WORD;
2074 } 2405 }
2075 YY_BREAK 2406 YY_BREAK
2076case 29: 2407case 36:
2077YY_RULE_SETUP 2408YY_RULE_SETUP
2078#line 118 "zconf.l"
2079 2409
2080 YY_BREAK 2410 YY_BREAK
2081case 30: 2411case 37:
2412/* rule 37 can match eol */
2082YY_RULE_SETUP 2413YY_RULE_SETUP
2083#line 119 "zconf.l"
2084current_file->lineno++; BEGIN(INITIAL); 2414current_file->lineno++; BEGIN(INITIAL);
2085 YY_BREAK 2415 YY_BREAK
2086 2416
2087 2417case 38:
2088case 31:
2089YY_RULE_SETUP 2418YY_RULE_SETUP
2090#line 123 "zconf.l"
2091return T_AND; 2419return T_AND;
2092 YY_BREAK 2420 YY_BREAK
2093case 32: 2421case 39:
2094YY_RULE_SETUP 2422YY_RULE_SETUP
2095#line 124 "zconf.l"
2096return T_OR; 2423return T_OR;
2097 YY_BREAK 2424 YY_BREAK
2098case 33: 2425case 40:
2099YY_RULE_SETUP 2426YY_RULE_SETUP
2100#line 125 "zconf.l"
2101return T_OPEN_PAREN; 2427return T_OPEN_PAREN;
2102 YY_BREAK 2428 YY_BREAK
2103case 34: 2429case 41:
2104YY_RULE_SETUP 2430YY_RULE_SETUP
2105#line 126 "zconf.l"
2106return T_CLOSE_PAREN; 2431return T_CLOSE_PAREN;
2107 YY_BREAK 2432 YY_BREAK
2108case 35: 2433case 42:
2109YY_RULE_SETUP 2434YY_RULE_SETUP
2110#line 127 "zconf.l"
2111return T_NOT; 2435return T_NOT;
2112 YY_BREAK 2436 YY_BREAK
2113case 36: 2437case 43:
2114YY_RULE_SETUP 2438YY_RULE_SETUP
2115#line 128 "zconf.l"
2116return T_EQUAL; 2439return T_EQUAL;
2117 YY_BREAK 2440 YY_BREAK
2118case 37: 2441case 44:
2119YY_RULE_SETUP 2442YY_RULE_SETUP
2120#line 129 "zconf.l"
2121return T_UNEQUAL; 2443return T_UNEQUAL;
2122 YY_BREAK 2444 YY_BREAK
2123case 38: 2445case 45:
2124YY_RULE_SETUP 2446YY_RULE_SETUP
2125#line 130 "zconf.l"
2126return T_IF; 2447return T_IF;
2127 YY_BREAK 2448 YY_BREAK
2128case 39: 2449case 46:
2129YY_RULE_SETUP 2450YY_RULE_SETUP
2130#line 131 "zconf.l"
2131return T_ON; 2451return T_ON;
2132 YY_BREAK 2452 YY_BREAK
2133case 40: 2453case 47:
2134YY_RULE_SETUP 2454YY_RULE_SETUP
2135#line 132 "zconf.l"
2136{ 2455{
2137 str = yytext[0]; 2456 str = zconftext[0];
2138 new_string(); 2457 new_string();
2139 BEGIN(STRING); 2458 BEGIN(STRING);
2140 } 2459 }
2141 YY_BREAK 2460 YY_BREAK
2142case 41: 2461case 48:
2462/* rule 48 can match eol */
2143YY_RULE_SETUP 2463YY_RULE_SETUP
2144#line 137 "zconf.l"
2145BEGIN(INITIAL); current_file->lineno++; return T_EOL; 2464BEGIN(INITIAL); current_file->lineno++; return T_EOL;
2146 YY_BREAK 2465 YY_BREAK
2147case 42: 2466case 49:
2148YY_RULE_SETUP 2467YY_RULE_SETUP
2149#line 138 "zconf.l"
2150/* ignore */ 2468/* ignore */
2151 YY_BREAK 2469 YY_BREAK
2152case 43: 2470case 50:
2153YY_RULE_SETUP 2471YY_RULE_SETUP
2154#line 139 "zconf.l"
2155{ 2472{
2156 alloc_string(yytext, yyleng); 2473 alloc_string(zconftext, zconfleng);
2157 zconflval.string = text; 2474 zconflval.string = text;
2158 return T_WORD; 2475 return T_WORD;
2159 } 2476 }
2160 YY_BREAK 2477 YY_BREAK
2161case 44: 2478case 51:
2479YY_RULE_SETUP
2480/* comment */
2481 YY_BREAK
2482case 52:
2483/* rule 52 can match eol */
2484YY_RULE_SETUP
2485current_file->lineno++;
2486 YY_BREAK
2487case 53:
2162YY_RULE_SETUP 2488YY_RULE_SETUP
2163#line 144 "zconf.l"
2164 2489
2165 YY_BREAK 2490 YY_BREAK
2166case YY_STATE_EOF(PARAM): 2491case YY_STATE_EOF(PARAM):
2167#line 145 "zconf.l"
2168{ 2492{
2169 BEGIN(INITIAL); 2493 BEGIN(INITIAL);
2170 } 2494 }
2171 YY_BREAK 2495 YY_BREAK
2172 2496
2173 2497case 54:
2174case 45: 2498/* rule 54 can match eol */
2175*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ 2499*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
2176yy_c_buf_p = yy_cp -= 1; 2500(yy_c_buf_p) = yy_cp -= 1;
2177YY_DO_BEFORE_ACTION; /* set up yytext again */ 2501YY_DO_BEFORE_ACTION; /* set up zconftext again */
2178YY_RULE_SETUP 2502YY_RULE_SETUP
2179#line 151 "zconf.l"
2180{ 2503{
2181 append_string(yytext, yyleng); 2504 append_string(zconftext, zconfleng);
2182 zconflval.string = text; 2505 zconflval.string = text;
2183 return T_STRING; 2506 return T_WORD_QUOTE;
2184 } 2507 }
2185 YY_BREAK 2508 YY_BREAK
2186case 46: 2509case 55:
2187YY_RULE_SETUP 2510YY_RULE_SETUP
2188#line 156 "zconf.l"
2189{ 2511{
2190 append_string(yytext, yyleng); 2512 append_string(zconftext, zconfleng);
2191 } 2513 }
2192 YY_BREAK 2514 YY_BREAK
2193case 47: 2515case 56:
2194*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ 2516/* rule 56 can match eol */
2195yy_c_buf_p = yy_cp -= 1; 2517*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
2196YY_DO_BEFORE_ACTION; /* set up yytext again */ 2518(yy_c_buf_p) = yy_cp -= 1;
2519YY_DO_BEFORE_ACTION; /* set up zconftext again */
2197YY_RULE_SETUP 2520YY_RULE_SETUP
2198#line 159 "zconf.l"
2199{ 2521{
2200 append_string(yytext+1, yyleng); 2522 append_string(zconftext + 1, zconfleng - 1);
2201 zconflval.string = text; 2523 zconflval.string = text;
2202 return T_STRING; 2524 return T_WORD_QUOTE;
2203 } 2525 }
2204 YY_BREAK 2526 YY_BREAK
2205case 48: 2527case 57:
2206YY_RULE_SETUP 2528YY_RULE_SETUP
2207#line 164 "zconf.l"
2208{ 2529{
2209 append_string(yytext+1, yyleng - 1); 2530 append_string(zconftext + 1, zconfleng - 1);
2210 } 2531 }
2211 YY_BREAK 2532 YY_BREAK
2212case 49: 2533case 58:
2213YY_RULE_SETUP 2534YY_RULE_SETUP
2214#line 167 "zconf.l"
2215{ 2535{
2216 if (str == yytext[0]) { 2536 if (str == zconftext[0]) {
2217 BEGIN(PARAM); 2537 BEGIN(PARAM);
2218 zconflval.string = text; 2538 zconflval.string = text;
2219 return T_STRING; 2539 return T_WORD_QUOTE;
2220 } else 2540 } else
2221 append_string(yytext, 1); 2541 append_string(zconftext, 1);
2222 } 2542 }
2223 YY_BREAK 2543 YY_BREAK
2224case 50: 2544case 59:
2545/* rule 59 can match eol */
2225YY_RULE_SETUP 2546YY_RULE_SETUP
2226#line 175 "zconf.l"
2227{ 2547{
2228 printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); 2548 printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
2549 current_file->lineno++;
2229 BEGIN(INITIAL); 2550 BEGIN(INITIAL);
2230 return T_EOL; 2551 return T_EOL;
2231 } 2552 }
2232 YY_BREAK 2553 YY_BREAK
2233case YY_STATE_EOF(STRING): 2554case YY_STATE_EOF(STRING):
2234#line 180 "zconf.l"
2235{ 2555{
2236 BEGIN(INITIAL); 2556 BEGIN(INITIAL);
2237 } 2557 }
2238 YY_BREAK 2558 YY_BREAK
2239 2559
2240 2560case 60:
2241case 51:
2242YY_RULE_SETUP 2561YY_RULE_SETUP
2243#line 186 "zconf.l"
2244{ 2562{
2245 ts = 0; 2563 ts = 0;
2246 for (i = 0; i < yyleng; i++) { 2564 for (i = 0; i < zconfleng; i++) {
2247 if (yytext[i] == '\t') 2565 if (zconftext[i] == '\t')
2248 ts = (ts & ~7) + 8; 2566 ts = (ts & ~7) + 8;
2249 else 2567 else
2250 ts++; 2568 ts++;
@@ -2262,40 +2580,37 @@ YY_RULE_SETUP
2262 } 2580 }
2263 append_string(" ", ts); 2581 append_string(" ", ts);
2264 } 2582 }
2265
2266 } 2583 }
2267 YY_BREAK 2584 YY_BREAK
2268case 52: 2585case 61:
2269*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ 2586/* rule 61 can match eol */
2270yy_c_buf_p = yy_cp = yy_bp + 1; 2587*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
2271YY_DO_BEFORE_ACTION; /* set up yytext again */ 2588(yy_c_buf_p) = yy_cp -= 1;
2589YY_DO_BEFORE_ACTION; /* set up zconftext again */
2272YY_RULE_SETUP 2590YY_RULE_SETUP
2273#line 209 "zconf.l"
2274{ 2591{
2275 current_file->lineno++; 2592 current_file->lineno++;
2276 zconf_endhelp(); 2593 zconf_endhelp();
2277 return T_HELPTEXT; 2594 return T_HELPTEXT;
2278 } 2595 }
2279 YY_BREAK 2596 YY_BREAK
2280case 53: 2597case 62:
2598/* rule 62 can match eol */
2281YY_RULE_SETUP 2599YY_RULE_SETUP
2282#line 214 "zconf.l"
2283{ 2600{
2284 current_file->lineno++; 2601 current_file->lineno++;
2285 append_string("\n", 1); 2602 append_string("\n", 1);
2286 } 2603 }
2287 YY_BREAK 2604 YY_BREAK
2288case 54: 2605case 63:
2289YY_RULE_SETUP 2606YY_RULE_SETUP
2290#line 218 "zconf.l"
2291{ 2607{
2292 append_string(yytext, yyleng); 2608 append_string(zconftext, zconfleng);
2293 if (!first_ts) 2609 if (!first_ts)
2294 first_ts = last_ts; 2610 first_ts = last_ts;
2295 } 2611 }
2296 YY_BREAK 2612 YY_BREAK
2297case YY_STATE_EOF(HELP): 2613case YY_STATE_EOF(HELP):
2298#line 223 "zconf.l"
2299{ 2614{
2300 zconf_endhelp(); 2615 zconf_endhelp();
2301 return T_HELPTEXT; 2616 return T_HELPTEXT;
@@ -2304,46 +2619,43 @@ case YY_STATE_EOF(HELP):
2304 2619
2305case YY_STATE_EOF(INITIAL): 2620case YY_STATE_EOF(INITIAL):
2306case YY_STATE_EOF(COMMAND): 2621case YY_STATE_EOF(COMMAND):
2307#line 229 "zconf.l"
2308{ 2622{
2309 if (current_buf) { 2623 if (current_buf) {
2310 zconf_endfile(); 2624 zconf_endfile();
2311 return T_EOF; 2625 return T_EOF;
2312 } 2626 }
2313 fclose(yyin); 2627 fclose(zconfin);
2314 yyterminate(); 2628 yyterminate();
2315} 2629}
2316 YY_BREAK 2630 YY_BREAK
2317case 55: 2631case 64:
2318YY_RULE_SETUP 2632YY_RULE_SETUP
2319#line 238 "zconf.l"
2320YY_FATAL_ERROR( "flex scanner jammed" ); 2633YY_FATAL_ERROR( "flex scanner jammed" );
2321 YY_BREAK 2634 YY_BREAK
2322#line 2323 "lex.zconf.c"
2323 2635
2324 case YY_END_OF_BUFFER: 2636 case YY_END_OF_BUFFER:
2325 { 2637 {
2326 /* Amount of text matched not including the EOB char. */ 2638 /* Amount of text matched not including the EOB char. */
2327 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; 2639 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2328 2640
2329 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 2641 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2330 *yy_cp = yy_hold_char; 2642 *yy_cp = (yy_hold_char);
2331 YY_RESTORE_YY_MORE_OFFSET 2643 YY_RESTORE_YY_MORE_OFFSET
2332 2644
2333 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) 2645 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2334 { 2646 {
2335 /* We're scanning a new file or input source. It's 2647 /* We're scanning a new file or input source. It's
2336 * possible that this happened because the user 2648 * possible that this happened because the user
2337 * just pointed yyin at a new source and called 2649 * just pointed zconfin at a new source and called
2338 * yylex(). If so, then we have to assure 2650 * zconflex(). If so, then we have to assure
2339 * consistency between yy_current_buffer and our 2651 * consistency between YY_CURRENT_BUFFER and our
2340 * globals. Here is the right place to do so, because 2652 * globals. Here is the right place to do so, because
2341 * this is the first action (other than possibly a 2653 * this is the first action (other than possibly a
2342 * back-up) that will match for the new input source. 2654 * back-up) that will match for the new input source.
2343 */ 2655 */
2344 yy_n_chars = yy_current_buffer->yy_n_chars; 2656 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2345 yy_current_buffer->yy_input_file = yyin; 2657 YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
2346 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; 2658 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2347 } 2659 }
2348 2660
2349 /* Note that here we test for yy_c_buf_p "<=" to the position 2661 /* Note that here we test for yy_c_buf_p "<=" to the position
@@ -2353,13 +2665,13 @@ YY_FATAL_ERROR( "flex scanner jammed" );
2353 * end-of-buffer state). Contrast this with the test 2665 * end-of-buffer state). Contrast this with the test
2354 * in input(). 2666 * in input().
2355 */ 2667 */
2356 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 2668 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2357 { /* This was really a NUL. */ 2669 { /* This was really a NUL. */
2358 yy_state_type yy_next_state; 2670 yy_state_type yy_next_state;
2359 2671
2360 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; 2672 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2361 2673
2362 yy_current_state = yy_get_previous_state(); 2674 yy_current_state = yy_get_previous_state( );
2363 2675
2364 /* Okay, we're now positioned to make the NUL 2676 /* Okay, we're now positioned to make the NUL
2365 * transition. We couldn't have 2677 * transition. We couldn't have
@@ -2372,41 +2684,41 @@ YY_FATAL_ERROR( "flex scanner jammed" );
2372 2684
2373 yy_next_state = yy_try_NUL_trans( yy_current_state ); 2685 yy_next_state = yy_try_NUL_trans( yy_current_state );
2374 2686
2375 yy_bp = yytext_ptr + YY_MORE_ADJ; 2687 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2376 2688
2377 if ( yy_next_state ) 2689 if ( yy_next_state )
2378 { 2690 {
2379 /* Consume the NUL. */ 2691 /* Consume the NUL. */
2380 yy_cp = ++yy_c_buf_p; 2692 yy_cp = ++(yy_c_buf_p);
2381 yy_current_state = yy_next_state; 2693 yy_current_state = yy_next_state;
2382 goto yy_match; 2694 goto yy_match;
2383 } 2695 }
2384 2696
2385 else 2697 else
2386 { 2698 {
2387 yy_cp = yy_c_buf_p; 2699 yy_cp = (yy_c_buf_p);
2388 goto yy_find_action; 2700 goto yy_find_action;
2389 } 2701 }
2390 } 2702 }
2391 2703
2392 else switch ( yy_get_next_buffer() ) 2704 else switch ( yy_get_next_buffer( ) )
2393 { 2705 {
2394 case EOB_ACT_END_OF_FILE: 2706 case EOB_ACT_END_OF_FILE:
2395 { 2707 {
2396 yy_did_buffer_switch_on_eof = 0; 2708 (yy_did_buffer_switch_on_eof) = 0;
2397 2709
2398 if ( yywrap() ) 2710 if ( zconfwrap( ) )
2399 { 2711 {
2400 /* Note: because we've taken care in 2712 /* Note: because we've taken care in
2401 * yy_get_next_buffer() to have set up 2713 * yy_get_next_buffer() to have set up
2402 * yytext, we can now set up 2714 * zconftext, we can now set up
2403 * yy_c_buf_p so that if some total 2715 * yy_c_buf_p so that if some total
2404 * hoser (like flex itself) wants to 2716 * hoser (like flex itself) wants to
2405 * call the scanner after we return the 2717 * call the scanner after we return the
2406 * YY_NULL, it'll still work - another 2718 * YY_NULL, it'll still work - another
2407 * YY_NULL will get returned. 2719 * YY_NULL will get returned.
2408 */ 2720 */
2409 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; 2721 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2410 2722
2411 yy_act = YY_STATE_EOF(YY_START); 2723 yy_act = YY_STATE_EOF(YY_START);
2412 goto do_action; 2724 goto do_action;
@@ -2414,30 +2726,30 @@ YY_FATAL_ERROR( "flex scanner jammed" );
2414 2726
2415 else 2727 else
2416 { 2728 {
2417 if ( ! yy_did_buffer_switch_on_eof ) 2729 if ( ! (yy_did_buffer_switch_on_eof) )
2418 YY_NEW_FILE; 2730 YY_NEW_FILE;
2419 } 2731 }
2420 break; 2732 break;
2421 } 2733 }
2422 2734
2423 case EOB_ACT_CONTINUE_SCAN: 2735 case EOB_ACT_CONTINUE_SCAN:
2424 yy_c_buf_p = 2736 (yy_c_buf_p) =
2425 yytext_ptr + yy_amount_of_matched_text; 2737 (yytext_ptr) + yy_amount_of_matched_text;
2426 2738
2427 yy_current_state = yy_get_previous_state(); 2739 yy_current_state = yy_get_previous_state( );
2428 2740
2429 yy_cp = yy_c_buf_p; 2741 yy_cp = (yy_c_buf_p);
2430 yy_bp = yytext_ptr + YY_MORE_ADJ; 2742 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2431 goto yy_match; 2743 goto yy_match;
2432 2744
2433 case EOB_ACT_LAST_MATCH: 2745 case EOB_ACT_LAST_MATCH:
2434 yy_c_buf_p = 2746 (yy_c_buf_p) =
2435 &yy_current_buffer->yy_ch_buf[yy_n_chars]; 2747 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2436 2748
2437 yy_current_state = yy_get_previous_state(); 2749 yy_current_state = yy_get_previous_state( );
2438 2750
2439 yy_cp = yy_c_buf_p; 2751 yy_cp = (yy_c_buf_p);
2440 yy_bp = yytext_ptr + YY_MORE_ADJ; 2752 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2441 goto yy_find_action; 2753 goto yy_find_action;
2442 } 2754 }
2443 break; 2755 break;
@@ -2448,8 +2760,7 @@ YY_FATAL_ERROR( "flex scanner jammed" );
2448 "fatal flex scanner internal error--no action found" ); 2760 "fatal flex scanner internal error--no action found" );
2449 } /* end of action switch */ 2761 } /* end of action switch */
2450 } /* end of scanning one token */ 2762 } /* end of scanning one token */
2451 } /* end of yylex */ 2763} /* end of zconflex */
2452
2453 2764
2454/* yy_get_next_buffer - try to read in a new buffer 2765/* yy_get_next_buffer - try to read in a new buffer
2455 * 2766 *
@@ -2458,21 +2769,20 @@ YY_FATAL_ERROR( "flex scanner jammed" );
2458 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 2769 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2459 * EOB_ACT_END_OF_FILE - end of file 2770 * EOB_ACT_END_OF_FILE - end of file
2460 */ 2771 */
2461 2772static int yy_get_next_buffer (void)
2462static int yy_get_next_buffer() 2773{
2463 { 2774 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2464 register char *dest = yy_current_buffer->yy_ch_buf; 2775 register char *source = (yytext_ptr);
2465 register char *source = yytext_ptr;
2466 register int number_to_move, i; 2776 register int number_to_move, i;
2467 int ret_val; 2777 int ret_val;
2468 2778
2469 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) 2779 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2470 YY_FATAL_ERROR( 2780 YY_FATAL_ERROR(
2471 "fatal flex scanner internal error--end of buffer missed" ); 2781 "fatal flex scanner internal error--end of buffer missed" );
2472 2782
2473 if ( yy_current_buffer->yy_fill_buffer == 0 ) 2783 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2474 { /* Don't try to fill the buffer, so this is an EOF. */ 2784 { /* Don't try to fill the buffer, so this is an EOF. */
2475 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) 2785 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2476 { 2786 {
2477 /* We matched a single character, the EOB, so 2787 /* We matched a single character, the EOB, so
2478 * treat this as a final EOF. 2788 * treat this as a final EOF.
@@ -2492,34 +2802,30 @@ static int yy_get_next_buffer()
2492 /* Try to read more data. */ 2802 /* Try to read more data. */
2493 2803
2494 /* First move last chars to start of buffer. */ 2804 /* First move last chars to start of buffer. */
2495 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; 2805 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2496 2806
2497 for ( i = 0; i < number_to_move; ++i ) 2807 for ( i = 0; i < number_to_move; ++i )
2498 *(dest++) = *(source++); 2808 *(dest++) = *(source++);
2499 2809
2500 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 2810 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2501 /* don't do the read, it's not guaranteed to return an EOF, 2811 /* don't do the read, it's not guaranteed to return an EOF,
2502 * just force an EOF 2812 * just force an EOF
2503 */ 2813 */
2504 yy_current_buffer->yy_n_chars = yy_n_chars = 0; 2814 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2505 2815
2506 else 2816 else
2507 { 2817 {
2508 int num_to_read = 2818 size_t num_to_read =
2509 yy_current_buffer->yy_buf_size - number_to_move - 1; 2819 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2510 2820
2511 while ( num_to_read <= 0 ) 2821 while ( num_to_read <= 0 )
2512 { /* Not enough room in the buffer - grow it. */ 2822 { /* Not enough room in the buffer - grow it. */
2513#ifdef YY_USES_REJECT
2514 YY_FATAL_ERROR(
2515"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2516#else
2517 2823
2518 /* just a shorter name for the current buffer */ 2824 /* just a shorter name for the current buffer */
2519 YY_BUFFER_STATE b = yy_current_buffer; 2825 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
2520 2826
2521 int yy_c_buf_p_offset = 2827 int yy_c_buf_p_offset =
2522 (int) (yy_c_buf_p - b->yy_ch_buf); 2828 (int) ((yy_c_buf_p) - b->yy_ch_buf);
2523 2829
2524 if ( b->yy_is_our_buffer ) 2830 if ( b->yy_is_our_buffer )
2525 { 2831 {
@@ -2532,8 +2838,7 @@ static int yy_get_next_buffer()
2532 2838
2533 b->yy_ch_buf = (char *) 2839 b->yy_ch_buf = (char *)
2534 /* Include room in for 2 EOB chars. */ 2840 /* Include room in for 2 EOB chars. */
2535 yy_flex_realloc( (void *) b->yy_ch_buf, 2841 zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
2536 b->yy_buf_size + 2 );
2537 } 2842 }
2538 else 2843 else
2539 /* Can't grow it, we don't own it. */ 2844 /* Can't grow it, we don't own it. */
@@ -2543,35 +2848,35 @@ static int yy_get_next_buffer()
2543 YY_FATAL_ERROR( 2848 YY_FATAL_ERROR(
2544 "fatal error - scanner input buffer overflow" ); 2849 "fatal error - scanner input buffer overflow" );
2545 2850
2546 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 2851 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
2547 2852
2548 num_to_read = yy_current_buffer->yy_buf_size - 2853 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
2549 number_to_move - 1; 2854 number_to_move - 1;
2550#endif 2855
2551 } 2856 }
2552 2857
2553 if ( num_to_read > YY_READ_BUF_SIZE ) 2858 if ( num_to_read > YY_READ_BUF_SIZE )
2554 num_to_read = YY_READ_BUF_SIZE; 2859 num_to_read = YY_READ_BUF_SIZE;
2555 2860
2556 /* Read in more data. */ 2861 /* Read in more data. */
2557 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), 2862 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2558 yy_n_chars, num_to_read ); 2863 (yy_n_chars), num_to_read );
2559 2864
2560 yy_current_buffer->yy_n_chars = yy_n_chars; 2865 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2561 } 2866 }
2562 2867
2563 if ( yy_n_chars == 0 ) 2868 if ( (yy_n_chars) == 0 )
2564 { 2869 {
2565 if ( number_to_move == YY_MORE_ADJ ) 2870 if ( number_to_move == YY_MORE_ADJ )
2566 { 2871 {
2567 ret_val = EOB_ACT_END_OF_FILE; 2872 ret_val = EOB_ACT_END_OF_FILE;
2568 yyrestart( yyin ); 2873 zconfrestart(zconfin );
2569 } 2874 }
2570 2875
2571 else 2876 else
2572 { 2877 {
2573 ret_val = EOB_ACT_LAST_MATCH; 2878 ret_val = EOB_ACT_LAST_MATCH;
2574 yy_current_buffer->yy_buffer_status = 2879 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2575 YY_BUFFER_EOF_PENDING; 2880 YY_BUFFER_EOF_PENDING;
2576 } 2881 }
2577 } 2882 }
@@ -2579,127 +2884,112 @@ static int yy_get_next_buffer()
2579 else 2884 else
2580 ret_val = EOB_ACT_CONTINUE_SCAN; 2885 ret_val = EOB_ACT_CONTINUE_SCAN;
2581 2886
2582 yy_n_chars += number_to_move; 2887 (yy_n_chars) += number_to_move;
2583 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; 2888 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2584 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 2889 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2585 2890
2586 yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; 2891 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2587 2892
2588 return ret_val; 2893 return ret_val;
2589 } 2894}
2590
2591 2895
2592/* yy_get_previous_state - get the state just before the EOB char was reached */ 2896/* yy_get_previous_state - get the state just before the EOB char was reached */
2593 2897
2594static yy_state_type yy_get_previous_state() 2898 static yy_state_type yy_get_previous_state (void)
2595 { 2899{
2596 register yy_state_type yy_current_state; 2900 register yy_state_type yy_current_state;
2597 register char *yy_cp; 2901 register char *yy_cp;
2902
2903 yy_current_state = (yy_start);
2598 2904
2599 yy_current_state = yy_start; 2905 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2600
2601 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2602 { 2906 {
2603 yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; 2907 yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
2604 } 2908 }
2605 2909
2606 return yy_current_state; 2910 return yy_current_state;
2607 } 2911}
2608
2609 2912
2610/* yy_try_NUL_trans - try to make a transition on the NUL character 2913/* yy_try_NUL_trans - try to make a transition on the NUL character
2611 * 2914 *
2612 * synopsis 2915 * synopsis
2613 * next_state = yy_try_NUL_trans( current_state ); 2916 * next_state = yy_try_NUL_trans( current_state );
2614 */ 2917 */
2615 2918 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2616#ifdef YY_USE_PROTOS 2919{
2617static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2618#else
2619static yy_state_type yy_try_NUL_trans( yy_current_state )
2620yy_state_type yy_current_state;
2621#endif
2622 {
2623 register int yy_is_jam; 2920 register int yy_is_jam;
2624 2921
2625 yy_current_state = yy_nxt[yy_current_state][1]; 2922 yy_current_state = yy_nxt[yy_current_state][1];
2626 yy_is_jam = (yy_current_state <= 0); 2923 yy_is_jam = (yy_current_state <= 0);
2627 2924
2628 return yy_is_jam ? 0 : yy_current_state; 2925 return yy_is_jam ? 0 : yy_current_state;
2629 } 2926}
2630
2631 2927
2632#ifndef YY_NO_UNPUT 2928 static void yyunput (int c, register char * yy_bp )
2633#ifdef YY_USE_PROTOS 2929{
2634static void yyunput( int c, register char *yy_bp ) 2930 register char *yy_cp;
2635#else 2931
2636static void yyunput( c, yy_bp ) 2932 yy_cp = (yy_c_buf_p);
2637int c;
2638register char *yy_bp;
2639#endif
2640 {
2641 register char *yy_cp = yy_c_buf_p;
2642 2933
2643 /* undo effects of setting up yytext */ 2934 /* undo effects of setting up zconftext */
2644 *yy_cp = yy_hold_char; 2935 *yy_cp = (yy_hold_char);
2645 2936
2646 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) 2937 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2647 { /* need to shift things up to make room */ 2938 { /* need to shift things up to make room */
2648 /* +2 for EOB chars. */ 2939 /* +2 for EOB chars. */
2649 register int number_to_move = yy_n_chars + 2; 2940 register int number_to_move = (yy_n_chars) + 2;
2650 register char *dest = &yy_current_buffer->yy_ch_buf[ 2941 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2651 yy_current_buffer->yy_buf_size + 2]; 2942 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2652 register char *source = 2943 register char *source =
2653 &yy_current_buffer->yy_ch_buf[number_to_move]; 2944 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2654 2945
2655 while ( source > yy_current_buffer->yy_ch_buf ) 2946 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2656 *--dest = *--source; 2947 *--dest = *--source;
2657 2948
2658 yy_cp += (int) (dest - source); 2949 yy_cp += (int) (dest - source);
2659 yy_bp += (int) (dest - source); 2950 yy_bp += (int) (dest - source);
2660 yy_current_buffer->yy_n_chars = 2951 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2661 yy_n_chars = yy_current_buffer->yy_buf_size; 2952 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2662 2953
2663 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) 2954 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2664 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 2955 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2665 } 2956 }
2666 2957
2667 *--yy_cp = (char) c; 2958 *--yy_cp = (char) c;
2668 2959
2960 (yytext_ptr) = yy_bp;
2961 (yy_hold_char) = *yy_cp;
2962 (yy_c_buf_p) = yy_cp;
2963}
2669 2964
2670 yytext_ptr = yy_bp; 2965#ifndef YY_NO_INPUT
2671 yy_hold_char = *yy_cp;
2672 yy_c_buf_p = yy_cp;
2673 }
2674#endif /* ifndef YY_NO_UNPUT */
2675
2676
2677#ifdef __cplusplus 2966#ifdef __cplusplus
2678static int yyinput() 2967 static int yyinput (void)
2679#else 2968#else
2680static int input() 2969 static int input (void)
2681#endif 2970#endif
2682 {
2683 int c;
2684 2971
2685 *yy_c_buf_p = yy_hold_char; 2972{
2973 int c;
2974
2975 *(yy_c_buf_p) = (yy_hold_char);
2686 2976
2687 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) 2977 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2688 { 2978 {
2689 /* yy_c_buf_p now points to the character we want to return. 2979 /* yy_c_buf_p now points to the character we want to return.
2690 * If this occurs *before* the EOB characters, then it's a 2980 * If this occurs *before* the EOB characters, then it's a
2691 * valid NUL; if not, then we've hit the end of the buffer. 2981 * valid NUL; if not, then we've hit the end of the buffer.
2692 */ 2982 */
2693 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 2983 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2694 /* This was really a NUL. */ 2984 /* This was really a NUL. */
2695 *yy_c_buf_p = '\0'; 2985 *(yy_c_buf_p) = '\0';
2696 2986
2697 else 2987 else
2698 { /* need more input */ 2988 { /* need more input */
2699 int offset = yy_c_buf_p - yytext_ptr; 2989 int offset = (yy_c_buf_p) - (yytext_ptr);
2700 ++yy_c_buf_p; 2990 ++(yy_c_buf_p);
2701 2991
2702 switch ( yy_get_next_buffer() ) 2992 switch ( yy_get_next_buffer( ) )
2703 { 2993 {
2704 case EOB_ACT_LAST_MATCH: 2994 case EOB_ACT_LAST_MATCH:
2705 /* This happens because yy_g_n_b() 2995 /* This happens because yy_g_n_b()
@@ -2713,16 +3003,16 @@ static int input()
2713 */ 3003 */
2714 3004
2715 /* Reset buffer status. */ 3005 /* Reset buffer status. */
2716 yyrestart( yyin ); 3006 zconfrestart(zconfin );
2717 3007
2718 /* fall through */ 3008 /*FALLTHROUGH*/
2719 3009
2720 case EOB_ACT_END_OF_FILE: 3010 case EOB_ACT_END_OF_FILE:
2721 { 3011 {
2722 if ( yywrap() ) 3012 if ( zconfwrap( ) )
2723 return EOF; 3013 return EOF;
2724 3014
2725 if ( ! yy_did_buffer_switch_on_eof ) 3015 if ( ! (yy_did_buffer_switch_on_eof) )
2726 YY_NEW_FILE; 3016 YY_NEW_FILE;
2727#ifdef __cplusplus 3017#ifdef __cplusplus
2728 return yyinput(); 3018 return yyinput();
@@ -2732,176 +3022,165 @@ static int input()
2732 } 3022 }
2733 3023
2734 case EOB_ACT_CONTINUE_SCAN: 3024 case EOB_ACT_CONTINUE_SCAN:
2735 yy_c_buf_p = yytext_ptr + offset; 3025 (yy_c_buf_p) = (yytext_ptr) + offset;
2736 break; 3026 break;
2737 } 3027 }
2738 } 3028 }
2739 } 3029 }
2740 3030
2741 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ 3031 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2742 *yy_c_buf_p = '\0'; /* preserve yytext */ 3032 *(yy_c_buf_p) = '\0'; /* preserve zconftext */
2743 yy_hold_char = *++yy_c_buf_p; 3033 (yy_hold_char) = *++(yy_c_buf_p);
2744
2745 3034
2746 return c; 3035 return c;
2747 } 3036}
2748 3037#endif /* ifndef YY_NO_INPUT */
2749
2750#ifdef YY_USE_PROTOS
2751void yyrestart( FILE *input_file )
2752#else
2753void yyrestart( input_file )
2754FILE *input_file;
2755#endif
2756 {
2757 if ( ! yy_current_buffer )
2758 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2759 3038
2760 yy_init_buffer( yy_current_buffer, input_file ); 3039/** Immediately switch to a different input stream.
2761 yy_load_buffer_state(); 3040 * @param input_file A readable stream.
3041 *
3042 * @note This function does not reset the start condition to @c INITIAL .
3043 */
3044 void zconfrestart (FILE * input_file )
3045{
3046
3047 if ( ! YY_CURRENT_BUFFER ){
3048 zconfensure_buffer_stack ();
3049 YY_CURRENT_BUFFER_LVALUE =
3050 zconf_create_buffer(zconfin,YY_BUF_SIZE );
2762 } 3051 }
2763 3052
3053 zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
3054 zconf_load_buffer_state( );
3055}
2764 3056
2765#ifdef YY_USE_PROTOS 3057/** Switch to a different input buffer.
2766void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) 3058 * @param new_buffer The new input buffer.
2767#else 3059 *
2768void yy_switch_to_buffer( new_buffer ) 3060 */
2769YY_BUFFER_STATE new_buffer; 3061 void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
2770#endif 3062{
2771 { 3063
2772 if ( yy_current_buffer == new_buffer ) 3064 /* TODO. We should be able to replace this entire function body
3065 * with
3066 * zconfpop_buffer_state();
3067 * zconfpush_buffer_state(new_buffer);
3068 */
3069 zconfensure_buffer_stack ();
3070 if ( YY_CURRENT_BUFFER == new_buffer )
2773 return; 3071 return;
2774 3072
2775 if ( yy_current_buffer ) 3073 if ( YY_CURRENT_BUFFER )
2776 { 3074 {
2777 /* Flush out information for old buffer. */ 3075 /* Flush out information for old buffer. */
2778 *yy_c_buf_p = yy_hold_char; 3076 *(yy_c_buf_p) = (yy_hold_char);
2779 yy_current_buffer->yy_buf_pos = yy_c_buf_p; 3077 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2780 yy_current_buffer->yy_n_chars = yy_n_chars; 3078 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2781 } 3079 }
2782 3080
2783 yy_current_buffer = new_buffer; 3081 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2784 yy_load_buffer_state(); 3082 zconf_load_buffer_state( );
2785 3083
2786 /* We don't actually know whether we did this switch during 3084 /* We don't actually know whether we did this switch during
2787 * EOF (yywrap()) processing, but the only time this flag 3085 * EOF (zconfwrap()) processing, but the only time this flag
2788 * is looked at is after yywrap() is called, so it's safe 3086 * is looked at is after zconfwrap() is called, so it's safe
2789 * to go ahead and always set it. 3087 * to go ahead and always set it.
2790 */ 3088 */
2791 yy_did_buffer_switch_on_eof = 1; 3089 (yy_did_buffer_switch_on_eof) = 1;
2792 } 3090}
2793
2794
2795#ifdef YY_USE_PROTOS
2796void yy_load_buffer_state( void )
2797#else
2798void yy_load_buffer_state()
2799#endif
2800 {
2801 yy_n_chars = yy_current_buffer->yy_n_chars;
2802 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2803 yyin = yy_current_buffer->yy_input_file;
2804 yy_hold_char = *yy_c_buf_p;
2805 }
2806 3091
3092static void zconf_load_buffer_state (void)
3093{
3094 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3095 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3096 zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3097 (yy_hold_char) = *(yy_c_buf_p);
3098}
2807 3099
2808#ifdef YY_USE_PROTOS 3100/** Allocate and initialize an input buffer state.
2809YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) 3101 * @param file A readable stream.
2810#else 3102 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2811YY_BUFFER_STATE yy_create_buffer( file, size ) 3103 *
2812FILE *file; 3104 * @return the allocated buffer state.
2813int size; 3105 */
2814#endif 3106 YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
2815 { 3107{
2816 YY_BUFFER_STATE b; 3108 YY_BUFFER_STATE b;
2817 3109
2818 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 3110 b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
2819 if ( ! b ) 3111 if ( ! b )
2820 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3112 YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
2821 3113
2822 b->yy_buf_size = size; 3114 b->yy_buf_size = size;
2823 3115
2824 /* yy_ch_buf has to be 2 characters longer than the size given because 3116 /* yy_ch_buf has to be 2 characters longer than the size given because
2825 * we need to put in 2 end-of-buffer characters. 3117 * we need to put in 2 end-of-buffer characters.
2826 */ 3118 */
2827 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); 3119 b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
2828 if ( ! b->yy_ch_buf ) 3120 if ( ! b->yy_ch_buf )
2829 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 3121 YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
2830 3122
2831 b->yy_is_our_buffer = 1; 3123 b->yy_is_our_buffer = 1;
2832 3124
2833 yy_init_buffer( b, file ); 3125 zconf_init_buffer(b,file );
2834 3126
2835 return b; 3127 return b;
2836 } 3128}
2837
2838 3129
2839#ifdef YY_USE_PROTOS 3130/** Destroy the buffer.
2840void yy_delete_buffer( YY_BUFFER_STATE b ) 3131 * @param b a buffer created with zconf_create_buffer()
2841#else 3132 *
2842void yy_delete_buffer( b ) 3133 */
2843YY_BUFFER_STATE b; 3134 void zconf_delete_buffer (YY_BUFFER_STATE b )
2844#endif 3135{
2845 { 3136
2846 if ( ! b ) 3137 if ( ! b )
2847 return; 3138 return;
2848 3139
2849 if ( b == yy_current_buffer ) 3140 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2850 yy_current_buffer = (YY_BUFFER_STATE) 0; 3141 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2851 3142
2852 if ( b->yy_is_our_buffer ) 3143 if ( b->yy_is_our_buffer )
2853 yy_flex_free( (void *) b->yy_ch_buf ); 3144 zconffree((void *) b->yy_ch_buf );
2854 3145
2855 yy_flex_free( (void *) b ); 3146 zconffree((void *) b );
2856 } 3147}
2857
2858
2859#ifndef _WIN32
2860#include <unistd.h>
2861#else
2862#ifndef YY_ALWAYS_INTERACTIVE
2863#ifndef YY_NEVER_INTERACTIVE
2864extern int isatty YY_PROTO(( int ));
2865#endif
2866#endif
2867#endif
2868
2869#ifdef YY_USE_PROTOS
2870void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2871#else
2872void yy_init_buffer( b, file )
2873YY_BUFFER_STATE b;
2874FILE *file;
2875#endif
2876 3148
3149/* Initializes or reinitializes a buffer.
3150 * This function is sometimes called more than once on the same buffer,
3151 * such as during a zconfrestart() or at EOF.
3152 */
3153 static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
2877 3154
2878 { 3155{
2879 yy_flush_buffer( b ); 3156 int oerrno = errno;
3157
3158 zconf_flush_buffer(b );
2880 3159
2881 b->yy_input_file = file; 3160 b->yy_input_file = file;
2882 b->yy_fill_buffer = 1; 3161 b->yy_fill_buffer = 1;
2883 3162
2884#if YY_ALWAYS_INTERACTIVE 3163 /* If b is the current buffer, then zconf_init_buffer was _probably_
2885 b->yy_is_interactive = 1; 3164 * called from zconfrestart() or through yy_get_next_buffer.
2886#else 3165 * In that case, we don't want to reset the lineno or column.
2887#if YY_NEVER_INTERACTIVE 3166 */
2888 b->yy_is_interactive = 0; 3167 if (b != YY_CURRENT_BUFFER){
2889#else 3168 b->yy_bs_lineno = 1;
2890 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 3169 b->yy_bs_column = 0;
2891#endif 3170 }
2892#endif 3171
2893 } 3172 b->yy_is_interactive = 0;
2894 3173
2895 3174 errno = oerrno;
2896#ifdef YY_USE_PROTOS 3175}
2897void yy_flush_buffer( YY_BUFFER_STATE b )
2898#else
2899void yy_flush_buffer( b )
2900YY_BUFFER_STATE b;
2901#endif
2902 3176
2903 { 3177/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2904 if ( ! b ) 3178 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3179 *
3180 */
3181 void zconf_flush_buffer (YY_BUFFER_STATE b )
3182{
3183 if ( ! b )
2905 return; 3184 return;
2906 3185
2907 b->yy_n_chars = 0; 3186 b->yy_n_chars = 0;
@@ -2918,31 +3197,123 @@ YY_BUFFER_STATE b;
2918 b->yy_at_bol = 1; 3197 b->yy_at_bol = 1;
2919 b->yy_buffer_status = YY_BUFFER_NEW; 3198 b->yy_buffer_status = YY_BUFFER_NEW;
2920 3199
2921 if ( b == yy_current_buffer ) 3200 if ( b == YY_CURRENT_BUFFER )
2922 yy_load_buffer_state(); 3201 zconf_load_buffer_state( );
3202}
3203
3204/** Pushes the new state onto the stack. The new state becomes
3205 * the current state. This function will allocate the stack
3206 * if necessary.
3207 * @param new_buffer The new state.
3208 *
3209 */
3210void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
3211{
3212 if (new_buffer == NULL)
3213 return;
3214
3215 zconfensure_buffer_stack();
3216
3217 /* This block is copied from zconf_switch_to_buffer. */
3218 if ( YY_CURRENT_BUFFER )
3219 {
3220 /* Flush out information for old buffer. */
3221 *(yy_c_buf_p) = (yy_hold_char);
3222 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3223 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3224 }
3225
3226 /* Only push if top exists. Otherwise, replace top. */
3227 if (YY_CURRENT_BUFFER)
3228 (yy_buffer_stack_top)++;
3229 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3230
3231 /* copied from zconf_switch_to_buffer. */
3232 zconf_load_buffer_state( );
3233 (yy_did_buffer_switch_on_eof) = 1;
3234}
3235
3236/** Removes and deletes the top of the stack, if present.
3237 * The next element becomes the new top.
3238 *
3239 */
3240void zconfpop_buffer_state (void)
3241{
3242 if (!YY_CURRENT_BUFFER)
3243 return;
3244
3245 zconf_delete_buffer(YY_CURRENT_BUFFER );
3246 YY_CURRENT_BUFFER_LVALUE = NULL;
3247 if ((yy_buffer_stack_top) > 0)
3248 --(yy_buffer_stack_top);
3249
3250 if (YY_CURRENT_BUFFER) {
3251 zconf_load_buffer_state( );
3252 (yy_did_buffer_switch_on_eof) = 1;
3253 }
3254}
3255
3256/* Allocates the stack if it does not exist.
3257 * Guarantees space for at least one push.
3258 */
3259static void zconfensure_buffer_stack (void)
3260{
3261 int num_to_alloc;
3262
3263 if (!(yy_buffer_stack)) {
3264
3265 /* First allocation is just for 2 elements, since we don't know if this
3266 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3267 * immediate realloc on the next call.
3268 */
3269 num_to_alloc = 1;
3270 (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
3271 (num_to_alloc * sizeof(struct yy_buffer_state*)
3272 );
3273
3274 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3275
3276 (yy_buffer_stack_max) = num_to_alloc;
3277 (yy_buffer_stack_top) = 0;
3278 return;
2923 } 3279 }
2924 3280
3281 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2925 3282
2926#ifndef YY_NO_SCAN_BUFFER 3283 /* Increase the buffer to prepare for a possible push. */
2927#ifdef YY_USE_PROTOS 3284 int grow_size = 8 /* arbitrary grow size */;
2928YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2929#else
2930YY_BUFFER_STATE yy_scan_buffer( base, size )
2931char *base;
2932yy_size_t size;
2933#endif
2934 {
2935 YY_BUFFER_STATE b;
2936 3285
3286 num_to_alloc = (yy_buffer_stack_max) + grow_size;
3287 (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
3288 ((yy_buffer_stack),
3289 num_to_alloc * sizeof(struct yy_buffer_state*)
3290 );
3291
3292 /* zero only the new slots.*/
3293 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3294 (yy_buffer_stack_max) = num_to_alloc;
3295 }
3296}
3297
3298/** Setup the input buffer state to scan directly from a user-specified character buffer.
3299 * @param base the character buffer
3300 * @param size the size in bytes of the character buffer
3301 *
3302 * @return the newly allocated buffer state object.
3303 */
3304YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
3305{
3306 YY_BUFFER_STATE b;
3307
2937 if ( size < 2 || 3308 if ( size < 2 ||
2938 base[size-2] != YY_END_OF_BUFFER_CHAR || 3309 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2939 base[size-1] != YY_END_OF_BUFFER_CHAR ) 3310 base[size-1] != YY_END_OF_BUFFER_CHAR )
2940 /* They forgot to leave room for the EOB's. */ 3311 /* They forgot to leave room for the EOB's. */
2941 return 0; 3312 return 0;
2942 3313
2943 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 3314 b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
2944 if ( ! b ) 3315 if ( ! b )
2945 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 3316 YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
2946 3317
2947 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 3318 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2948 b->yy_buf_pos = b->yy_ch_buf = base; 3319 b->yy_buf_pos = b->yy_ch_buf = base;
@@ -2954,58 +3325,53 @@ yy_size_t size;
2954 b->yy_fill_buffer = 0; 3325 b->yy_fill_buffer = 0;
2955 b->yy_buffer_status = YY_BUFFER_NEW; 3326 b->yy_buffer_status = YY_BUFFER_NEW;
2956 3327
2957 yy_switch_to_buffer( b ); 3328 zconf_switch_to_buffer(b );
2958 3329
2959 return b; 3330 return b;
2960 } 3331}
2961#endif
2962
2963
2964#ifndef YY_NO_SCAN_STRING
2965#ifdef YY_USE_PROTOS
2966YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2967#else
2968YY_BUFFER_STATE yy_scan_string( yy_str )
2969yyconst char *yy_str;
2970#endif
2971 {
2972 int len;
2973 for ( len = 0; yy_str[len]; ++len )
2974 ;
2975
2976 return yy_scan_bytes( yy_str, len );
2977 }
2978#endif
2979 3332
3333/** Setup the input buffer state to scan a string. The next call to zconflex() will
3334 * scan from a @e copy of @a str.
3335 * @param str a NUL-terminated string to scan
3336 *
3337 * @return the newly allocated buffer state object.
3338 * @note If you want to scan bytes that may contain NUL values, then use
3339 * zconf_scan_bytes() instead.
3340 */
3341YY_BUFFER_STATE zconf_scan_string (yyconst char * str )
3342{
3343
3344 return zconf_scan_bytes(str,strlen(str) );
3345}
2980 3346
2981#ifndef YY_NO_SCAN_BYTES 3347/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
2982#ifdef YY_USE_PROTOS 3348 * scan from a @e copy of @a bytes.
2983YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) 3349 * @param bytes the byte buffer to scan
2984#else 3350 * @param len the number of bytes in the buffer pointed to by @a bytes.
2985YY_BUFFER_STATE yy_scan_bytes( bytes, len ) 3351 *
2986yyconst char *bytes; 3352 * @return the newly allocated buffer state object.
2987int len; 3353 */
2988#endif 3354YY_BUFFER_STATE zconf_scan_bytes (yyconst char * bytes, int len )
2989 { 3355{
2990 YY_BUFFER_STATE b; 3356 YY_BUFFER_STATE b;
2991 char *buf; 3357 char *buf;
2992 yy_size_t n; 3358 yy_size_t n;
2993 int i; 3359 int i;
2994 3360
2995 /* Get memory for full buffer, including space for trailing EOB's. */ 3361 /* Get memory for full buffer, including space for trailing EOB's. */
2996 n = len + 2; 3362 n = len + 2;
2997 buf = (char *) yy_flex_alloc( n ); 3363 buf = (char *) zconfalloc(n );
2998 if ( ! buf ) 3364 if ( ! buf )
2999 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 3365 YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
3000 3366
3001 for ( i = 0; i < len; ++i ) 3367 for ( i = 0; i < len; ++i )
3002 buf[i] = bytes[i]; 3368 buf[i] = bytes[i];
3003 3369
3004 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; 3370 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3005 3371
3006 b = yy_scan_buffer( buf, n ); 3372 b = zconf_scan_buffer(buf,n );
3007 if ( ! b ) 3373 if ( ! b )
3008 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 3374 YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
3009 3375
3010 /* It's okay to grow etc. this buffer, and we should throw it 3376 /* It's okay to grow etc. this buffer, and we should throw it
3011 * away when we're done. 3377 * away when we're done.
@@ -3013,148 +3379,164 @@ int len;
3013 b->yy_is_our_buffer = 1; 3379 b->yy_is_our_buffer = 1;
3014 3380
3015 return b; 3381 return b;
3016 } 3382}
3017#endif
3018
3019 3383
3020#ifndef YY_NO_PUSH_STATE 3384#ifndef YY_EXIT_FAILURE
3021#ifdef YY_USE_PROTOS 3385#define YY_EXIT_FAILURE 2
3022static void yy_push_state( int new_state )
3023#else
3024static void yy_push_state( new_state )
3025int new_state;
3026#endif 3386#endif
3027 {
3028 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3029 {
3030 yy_size_t new_size;
3031 3387
3032 yy_start_stack_depth += YY_START_STACK_INCR; 3388static void yy_fatal_error (yyconst char* msg )
3033 new_size = yy_start_stack_depth * sizeof( int ); 3389{
3390 (void) fprintf( stderr, "%s\n", msg );
3391 exit( YY_EXIT_FAILURE );
3392}
3034 3393
3035 if ( ! yy_start_stack ) 3394/* Redefine yyless() so it works in section 3 code. */
3036 yy_start_stack = (int *) yy_flex_alloc( new_size );
3037 3395
3038 else 3396#undef yyless
3039 yy_start_stack = (int *) yy_flex_realloc( 3397#define yyless(n) \
3040 (void *) yy_start_stack, new_size ); 3398 do \
3399 { \
3400 /* Undo effects of setting up zconftext. */ \
3401 int yyless_macro_arg = (n); \
3402 YY_LESS_LINENO(yyless_macro_arg);\
3403 zconftext[zconfleng] = (yy_hold_char); \
3404 (yy_c_buf_p) = zconftext + yyless_macro_arg; \
3405 (yy_hold_char) = *(yy_c_buf_p); \
3406 *(yy_c_buf_p) = '\0'; \
3407 zconfleng = yyless_macro_arg; \
3408 } \
3409 while ( 0 )
3041 3410
3042 if ( ! yy_start_stack ) 3411/* Accessor methods (get/set functions) to struct members. */
3043 YY_FATAL_ERROR(
3044 "out of memory expanding start-condition stack" );
3045 }
3046 3412
3047 yy_start_stack[yy_start_stack_ptr++] = YY_START; 3413/** Get the current line number.
3414 *
3415 */
3416int zconfget_lineno (void)
3417{
3418
3419 return zconflineno;
3420}
3048 3421
3049 BEGIN(new_state); 3422/** Get the input stream.
3050 } 3423 *
3051#endif 3424 */
3425FILE *zconfget_in (void)
3426{
3427 return zconfin;
3428}
3052 3429
3430/** Get the output stream.
3431 *
3432 */
3433FILE *zconfget_out (void)
3434{
3435 return zconfout;
3436}
3053 3437
3054#ifndef YY_NO_POP_STATE 3438/** Get the length of the current token.
3055static void yy_pop_state() 3439 *
3056 { 3440 */
3057 if ( --yy_start_stack_ptr < 0 ) 3441int zconfget_leng (void)
3058 YY_FATAL_ERROR( "start-condition stack underflow" ); 3442{
3443 return zconfleng;
3444}
3059 3445
3060 BEGIN(yy_start_stack[yy_start_stack_ptr]); 3446/** Get the current token.
3061 } 3447 *
3062#endif 3448 */
3063 3449
3450char *zconfget_text (void)
3451{
3452 return zconftext;
3453}
3064 3454
3065#ifndef YY_NO_TOP_STATE 3455/** Set the current line number.
3066static int yy_top_state() 3456 * @param line_number
3067 { 3457 *
3068 return yy_start_stack[yy_start_stack_ptr - 1]; 3458 */
3069 } 3459void zconfset_lineno (int line_number )
3070#endif 3460{
3461
3462 zconflineno = line_number;
3463}
3071 3464
3072#ifndef YY_EXIT_FAILURE 3465/** Set the input stream. This does not discard the current
3073#define YY_EXIT_FAILURE 2 3466 * input buffer.
3074#endif 3467 * @param in_str A readable stream.
3468 *
3469 * @see zconf_switch_to_buffer
3470 */
3471void zconfset_in (FILE * in_str )
3472{
3473 zconfin = in_str ;
3474}
3075 3475
3076#ifdef YY_USE_PROTOS 3476void zconfset_out (FILE * out_str )
3077static void yy_fatal_error( yyconst char msg[] ) 3477{
3078#else 3478 zconfout = out_str ;
3079static void yy_fatal_error( msg ) 3479}
3080char msg[];
3081#endif
3082 {
3083 (void) fprintf( stderr, "%s\n", msg );
3084 exit( YY_EXIT_FAILURE );
3085 }
3086 3480
3481int zconfget_debug (void)
3482{
3483 return zconf_flex_debug;
3484}
3087 3485
3486void zconfset_debug (int bdebug )
3487{
3488 zconf_flex_debug = bdebug ;
3489}
3088 3490
3089/* Redefine yyless() so it works in section 3 code. */ 3491/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
3492int zconflex_destroy (void)
3493{
3494
3495 /* Pop the buffer stack, destroying each element. */
3496 while(YY_CURRENT_BUFFER){
3497 zconf_delete_buffer(YY_CURRENT_BUFFER );
3498 YY_CURRENT_BUFFER_LVALUE = NULL;
3499 zconfpop_buffer_state();
3500 }
3090 3501
3091#undef yyless 3502 /* Destroy the stack itself. */
3092#define yyless(n) \ 3503 zconffree((yy_buffer_stack) );
3093 do \ 3504 (yy_buffer_stack) = NULL;
3094 { \
3095 /* Undo effects of setting up yytext. */ \
3096 yytext[yyleng] = yy_hold_char; \
3097 yy_c_buf_p = yytext + n; \
3098 yy_hold_char = *yy_c_buf_p; \
3099 *yy_c_buf_p = '\0'; \
3100 yyleng = n; \
3101 } \
3102 while ( 0 )
3103 3505
3506 return 0;
3507}
3104 3508
3105/* Internal utility routines. */ 3509/*
3510 * Internal utility routines.
3511 */
3106 3512
3107#ifndef yytext_ptr 3513#ifndef yytext_ptr
3108#ifdef YY_USE_PROTOS 3514static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3109static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) 3515{
3110#else
3111static void yy_flex_strncpy( s1, s2, n )
3112char *s1;
3113yyconst char *s2;
3114int n;
3115#endif
3116 {
3117 register int i; 3516 register int i;
3118 for ( i = 0; i < n; ++i ) 3517 for ( i = 0; i < n; ++i )
3119 s1[i] = s2[i]; 3518 s1[i] = s2[i];
3120 } 3519}
3121#endif 3520#endif
3122 3521
3123#ifdef YY_NEED_STRLEN 3522#ifdef YY_NEED_STRLEN
3124#ifdef YY_USE_PROTOS 3523static int yy_flex_strlen (yyconst char * s )
3125static int yy_flex_strlen( yyconst char *s ) 3524{
3126#else
3127static int yy_flex_strlen( s )
3128yyconst char *s;
3129#endif
3130 {
3131 register int n; 3525 register int n;
3132 for ( n = 0; s[n]; ++n ) 3526 for ( n = 0; s[n]; ++n )
3133 ; 3527 ;
3134 3528
3135 return n; 3529 return n;
3136 } 3530}
3137#endif 3531#endif
3138 3532
3139 3533void *zconfalloc (yy_size_t size )
3140#ifdef YY_USE_PROTOS 3534{
3141static void *yy_flex_alloc( yy_size_t size )
3142#else
3143static void *yy_flex_alloc( size )
3144yy_size_t size;
3145#endif
3146 {
3147 return (void *) malloc( size ); 3535 return (void *) malloc( size );
3148 } 3536}
3149 3537
3150#ifdef YY_USE_PROTOS 3538void *zconfrealloc (void * ptr, yy_size_t size )
3151static void *yy_flex_realloc( void *ptr, yy_size_t size ) 3539{
3152#else
3153static void *yy_flex_realloc( ptr, size )
3154void *ptr;
3155yy_size_t size;
3156#endif
3157 {
3158 /* The cast to (char *) in the following accommodates both 3540 /* The cast to (char *) in the following accommodates both
3159 * implementations that use char* generic pointers, and those 3541 * implementations that use char* generic pointers, and those
3160 * that use void* generic pointers. It works with the latter 3542 * that use void* generic pointers. It works with the latter
@@ -3163,26 +3545,27 @@ yy_size_t size;
3163 * as though doing an assignment. 3545 * as though doing an assignment.
3164 */ 3546 */
3165 return (void *) realloc( (char *) ptr, size ); 3547 return (void *) realloc( (char *) ptr, size );
3166 } 3548}
3167 3549
3168#ifdef YY_USE_PROTOS 3550void zconffree (void * ptr )
3169static void yy_flex_free( void *ptr ) 3551{
3170#else 3552 free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
3171static void yy_flex_free( ptr ) 3553}
3172void *ptr;
3173#endif
3174 {
3175 free( ptr );
3176 }
3177 3554
3178#if YY_MAIN 3555#define YYTABLES_NAME "yytables"
3179int main() 3556
3180 { 3557#undef YY_NEW_FILE
3181 yylex(); 3558#undef YY_FLUSH_BUFFER
3182 return 0; 3559#undef yy_set_bol
3183 } 3560#undef yy_new_buffer
3561#undef yy_set_interactive
3562#undef yytext_ptr
3563#undef YY_DO_BEFORE_ACTION
3564
3565#ifdef YY_DECL_IS_OURS
3566#undef YY_DECL_IS_OURS
3567#undef YY_DECL
3184#endif 3568#endif
3185#line 238 "zconf.l"
3186 3569
3187void zconf_starthelp(void) 3570void zconf_starthelp(void)
3188{ 3571{
@@ -3194,13 +3577,37 @@ void zconf_starthelp(void)
3194static void zconf_endhelp(void) 3577static void zconf_endhelp(void)
3195{ 3578{
3196 zconflval.string = text; 3579 zconflval.string = text;
3197 BEGIN(INITIAL); 3580 BEGIN(INITIAL);
3581}
3582
3583/*
3584 * Try to open specified file with following names:
3585 * ./name
3586 * $(srctree)/name
3587 * The latter is used when srctree is separate from objtree
3588 * when compiling the kernel.
3589 * Return NULL if file is not found.
3590 */
3591FILE *zconf_fopen(const char *name)
3592{
3593 char *env, fullname[PATH_MAX+1];
3594 FILE *f;
3595
3596 f = fopen(name, "r");
3597 if (!f && name[0] != '/') {
3598 env = getenv(SRCTREE);
3599 if (env) {
3600 sprintf(fullname, "%s/%s", env, name);
3601 f = fopen(fullname, "r");
3602 }
3603 }
3604 return f;
3198} 3605}
3199 3606
3200void zconf_initscan(const char *name) 3607void zconf_initscan(const char *name)
3201{ 3608{
3202 yyin = fopen(name, "r"); 3609 zconfin = zconf_fopen(name);
3203 if (!yyin) { 3610 if (!zconfin) {
3204 printf("can't find file %s\n", name); 3611 printf("can't find file %s\n", name);
3205 exit(1); 3612 exit(1);
3206 } 3613 }
@@ -3220,12 +3627,12 @@ void zconf_nextfile(const char *name)
3220 memset(buf, 0, sizeof(*buf)); 3627 memset(buf, 0, sizeof(*buf));
3221 3628
3222 current_buf->state = YY_CURRENT_BUFFER; 3629 current_buf->state = YY_CURRENT_BUFFER;
3223 yyin = fopen(name, "r"); 3630 zconfin = zconf_fopen(name);
3224 if (!yyin) { 3631 if (!zconfin) {
3225 printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name); 3632 printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
3226 exit(1); 3633 exit(1);
3227 } 3634 }
3228 yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); 3635 zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
3229 buf->parent = current_buf; 3636 buf->parent = current_buf;
3230 current_buf = buf; 3637 current_buf = buf;
3231 3638
@@ -3253,9 +3660,9 @@ static struct buffer *zconf_endfile(void)
3253 3660
3254 parent = current_buf->parent; 3661 parent = current_buf->parent;
3255 if (parent) { 3662 if (parent) {
3256 fclose(yyin); 3663 fclose(zconfin);
3257 yy_delete_buffer(YY_CURRENT_BUFFER); 3664 zconf_delete_buffer(YY_CURRENT_BUFFER);
3258 yy_switch_to_buffer(parent->state); 3665 zconf_switch_to_buffer(parent->state);
3259 } 3666 }
3260 free(current_buf); 3667 free(current_buf);
3261 current_buf = parent; 3668 current_buf = parent;
@@ -3266,7 +3673,7 @@ static struct buffer *zconf_endfile(void)
3266int zconf_lineno(void) 3673int zconf_lineno(void)
3267{ 3674{
3268 if (current_buf) 3675 if (current_buf)
3269 return current_file->lineno; 3676 return current_file->lineno - 1;
3270 else 3677 else
3271 return 0; 3678 return 0;
3272} 3679}
@@ -3278,3 +3685,4 @@ char *zconf_curname(void)
3278 else 3685 else
3279 return "<none>"; 3686 return "<none>";
3280} 3687}
3688
diff --git a/scripts/config/lkc.h b/scripts/config/lkc.h
index 688945b87..dd040f7a8 100644
--- a/scripts/config/lkc.h
+++ b/scripts/config/lkc.h
@@ -21,12 +21,14 @@ extern "C" {
21#include "lkc_proto.h" 21#include "lkc_proto.h"
22#undef P 22#undef P
23 23
24void symbol_end(char *help); 24#define SRCTREE "srctree"
25
25int zconfparse(void); 26int zconfparse(void);
26void zconfdump(FILE *out); 27void zconfdump(FILE *out);
27 28
28extern int zconfdebug; 29extern int zconfdebug;
29void zconf_starthelp(void); 30void zconf_starthelp(void);
31FILE *zconf_fopen(const char *name);
30void zconf_initscan(const char *name); 32void zconf_initscan(const char *name);
31void zconf_nextfile(const char *name); 33void zconf_nextfile(const char *name);
32int zconf_lineno(void); 34int zconf_lineno(void);
@@ -47,9 +49,11 @@ void menu_add_menu(void);
47void menu_end_menu(void); 49void menu_end_menu(void);
48void menu_add_entry(struct symbol *sym); 50void menu_add_entry(struct symbol *sym);
49void menu_end_entry(void); 51void menu_end_entry(void);
50struct property *create_prop(enum prop_type type);
51void menu_add_dep(struct expr *dep); 52void menu_add_dep(struct expr *dep);
52struct property *menu_add_prop(int token, char *prompt, struct symbol *def, struct expr *dep); 53struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
54void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
55void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
56void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
53void menu_finalize(struct menu *parent); 57void menu_finalize(struct menu *parent);
54void menu_set_type(int type); 58void menu_set_type(int type);
55struct file *file_lookup(const char *name); 59struct file *file_lookup(const char *name);
@@ -61,16 +65,20 @@ extern struct menu *current_menu;
61/* symbol.c */ 65/* symbol.c */
62void sym_init(void); 66void sym_init(void);
63void sym_clear_all_valid(void); 67void sym_clear_all_valid(void);
68void sym_set_changed(struct symbol *sym);
69struct symbol *sym_check_deps(struct symbol *sym);
70struct property *prop_alloc(enum prop_type type, struct symbol *sym);
71struct symbol *prop_get_symbol(struct property *prop);
64 72
65static inline tristate sym_get_tristate_value(struct symbol *sym) 73static inline tristate sym_get_tristate_value(struct symbol *sym)
66{ 74{
67 return S_TRI(sym->curr); 75 return sym->curr.tri;
68} 76}
69 77
70 78
71static inline struct symbol *sym_get_choice_value(struct symbol *sym) 79static inline struct symbol *sym_get_choice_value(struct symbol *sym)
72{ 80{
73 return (struct symbol *)S_VAL(sym->curr); 81 return (struct symbol *)sym->curr.val;
74} 82}
75 83
76static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval) 84static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
@@ -95,7 +103,6 @@ static inline bool sym_is_optional(struct symbol *sym)
95 103
96static inline bool sym_has_value(struct symbol *sym) 104static inline bool sym_has_value(struct symbol *sym)
97{ 105{
98 //return S_VAL(sym->def) != NULL;
99 return sym->flags & SYMBOL_NEW ? false : true; 106 return sym->flags & SYMBOL_NEW ? false : true;
100} 107}
101 108
diff --git a/scripts/config/lkc_proto.h b/scripts/config/lkc_proto.h
index 47e9c6db3..97c79178e 100644
--- a/scripts/config/lkc_proto.h
+++ b/scripts/config/lkc_proto.h
@@ -5,7 +5,7 @@ P(conf_read,int,(const char *name));
5P(conf_write,int,(const char *name)); 5P(conf_write,int,(const char *name));
6 6
7/* menu.c */ 7/* menu.c */
8extern struct menu rootmenu; 8P(rootmenu,struct menu,);
9 9
10P(menu_is_visible,bool,(struct menu *menu)); 10P(menu_is_visible,bool,(struct menu *menu));
11P(menu_get_prompt,const char *,(struct menu *menu)); 11P(menu_get_prompt,const char *,(struct menu *menu));
@@ -14,17 +14,18 @@ P(menu_get_parent_menu,struct menu *,(struct menu *menu));
14 14
15/* symbol.c */ 15/* symbol.c */
16P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); 16P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
17extern int sym_change_count; 17P(sym_change_count,int,);
18 18
19P(sym_lookup,struct symbol *,(const char *name, int isconst)); 19P(sym_lookup,struct symbol *,(const char *name, int isconst));
20P(sym_find,struct symbol *,(const char *name)); 20P(sym_find,struct symbol *,(const char *name));
21P(sym_type_name,const char *,(int type)); 21P(sym_type_name,const char *,(enum symbol_type type));
22P(sym_calc_value,void,(struct symbol *sym)); 22P(sym_calc_value,void,(struct symbol *sym));
23P(sym_get_type,int,(struct symbol *sym)); 23P(sym_get_type,enum symbol_type,(struct symbol *sym));
24P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri)); 24P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
25P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri)); 25P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
26P(sym_toggle_tristate_value,tristate,(struct symbol *sym)); 26P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
27P(sym_string_valid,bool,(struct symbol *sym, const char *newval)); 27P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
28P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
28P(sym_set_string_value,bool,(struct symbol *sym, const char *newval)); 29P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
29P(sym_is_changable,bool,(struct symbol *sym)); 30P(sym_is_changable,bool,(struct symbol *sym));
30P(sym_get_choice_prop,struct property *,(struct symbol *sym)); 31P(sym_get_choice_prop,struct property *,(struct symbol *sym));
diff --git a/scripts/config/mconf.c b/scripts/config/mconf.c
index 1ea512eff..739b3b480 100644
--- a/scripts/config/mconf.c
+++ b/scripts/config/mconf.c
@@ -28,6 +28,7 @@
28#define LKC_DIRECT_LINK 28#define LKC_DIRECT_LINK
29#include "lkc.h" 29#include "lkc.h"
30 30
31static char menu_backtitle[128];
31static const char menu_instructions[] = 32static const char menu_instructions[] =
32 "Arrow keys navigate the menu. " 33 "Arrow keys navigate the menu. "
33 "<Enter> selects submenus --->. " 34 "<Enter> selects submenus --->. "
@@ -65,7 +66,7 @@ load_config_help[] =
65 "configurations available on a single machine.\n" 66 "configurations available on a single machine.\n"
66 "\n" 67 "\n"
67 "If you have saved a previous configuration in a file other than the\n" 68 "If you have saved a previous configuration in a file other than the\n"
68 "BusyBox default, entering the name of the file here will allow you\n" 69 "BusyBox's default, entering the name of the file here will allow you\n"
69 "to modify that configuration.\n" 70 "to modify that configuration.\n"
70 "\n" 71 "\n"
71 "If you are uncertain, then you have probably never used alternate\n" 72 "If you are uncertain, then you have probably never used alternate\n"
@@ -120,6 +121,7 @@ static void show_readme(void);
120static void init_wsize(void) 121static void init_wsize(void)
121{ 122{
122 struct winsize ws; 123 struct winsize ws;
124 char *env;
123 125
124 if (ioctl(1, TIOCGWINSZ, &ws) == -1) { 126 if (ioctl(1, TIOCGWINSZ, &ws) == -1) {
125 rows = 24; 127 rows = 24;
@@ -127,6 +129,20 @@ static void init_wsize(void)
127 } else { 129 } else {
128 rows = ws.ws_row; 130 rows = ws.ws_row;
129 cols = ws.ws_col; 131 cols = ws.ws_col;
132 if (!rows) {
133 env = getenv("LINES");
134 if (env)
135 rows = atoi(env);
136 if (!rows)
137 rows = 24;
138 }
139 if (!cols) {
140 env = getenv("COLUMNS");
141 if (env)
142 cols = atoi(env);
143 if (!cols)
144 cols = 80;
145 }
130 } 146 }
131 147
132 if (rows < 19 || cols < 80) { 148 if (rows < 19 || cols < 80) {
@@ -226,9 +242,7 @@ static void build_conf(struct menu *menu)
226 menu->data ? "-->" : "++>", 242 menu->data ? "-->" : "++>",
227 indent + 1, ' ', prompt); 243 indent + 1, ' ', prompt);
228 } else { 244 } else {
229 if (menu->parent != &rootmenu) 245 cprint_name(" %*c%s --->", indent + 1, ' ', prompt);
230 cprint_name(" %*c", indent + 1, ' ');
231 cprint_name("%s --->", prompt);
232 } 246 }
233 247
234 if (single_menu_mode && menu->data) 248 if (single_menu_mode && menu->data)
@@ -303,7 +317,10 @@ static void build_conf(struct menu *menu)
303 switch (type) { 317 switch (type) {
304 case S_BOOLEAN: 318 case S_BOOLEAN:
305 cprint_tag("t%p", menu); 319 cprint_tag("t%p", menu);
306 cprint_name("[%c]", val == no ? ' ' : '*'); 320 if (sym_is_changable(sym))
321 cprint_name("[%c]", val == no ? ' ' : '*');
322 else
323 cprint_name("---");
307 break; 324 break;
308 case S_TRISTATE: 325 case S_TRISTATE:
309 cprint_tag("t%p", menu); 326 cprint_tag("t%p", menu);
@@ -312,7 +329,10 @@ static void build_conf(struct menu *menu)
312 case mod: ch = 'M'; break; 329 case mod: ch = 'M'; break;
313 default: ch = ' '; break; 330 default: ch = ' '; break;
314 } 331 }
315 cprint_name("<%c>", ch); 332 if (sym_is_changable(sym))
333 cprint_name("<%c>", ch);
334 else
335 cprint_name("---");
316 break; 336 break;
317 default: 337 default:
318 cprint_tag("s%p", menu); 338 cprint_tag("s%p", menu);
@@ -321,12 +341,18 @@ static void build_conf(struct menu *menu)
321 if (tmp < 0) 341 if (tmp < 0)
322 tmp = 0; 342 tmp = 0;
323 cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu), 343 cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
324 sym_has_value(sym) ? "" : " (NEW)"); 344 (sym_has_value(sym) || !sym_is_changable(sym)) ?
345 "" : " (NEW)");
325 goto conf_childs; 346 goto conf_childs;
326 } 347 }
327 } 348 }
328 cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu), 349 cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
329 sym_has_value(sym) ? "" : " (NEW)"); 350 (sym_has_value(sym) || !sym_is_changable(sym)) ?
351 "" : " (NEW)");
352 if (menu->prompt->type == P_MENU) {
353 cprint_name(" --->");
354 return;
355 }
330 } 356 }
331 357
332conf_childs: 358conf_childs:
@@ -390,13 +416,15 @@ static void conf(struct menu *menu)
390 switch (type) { 416 switch (type) {
391 case 'm': 417 case 'm':
392 if (single_menu_mode) 418 if (single_menu_mode)
393 submenu->data = (submenu->data)? NULL : (void *)1; 419 submenu->data = (void *) (long) !submenu->data;
394 else 420 else
395 conf(submenu); 421 conf(submenu);
396 break; 422 break;
397 case 't': 423 case 't':
398 if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes) 424 if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
399 conf_choice(submenu); 425 conf_choice(submenu);
426 else if (submenu->prompt->type == P_MENU)
427 conf(submenu);
400 break; 428 break;
401 case 's': 429 case 's':
402 conf_string(submenu); 430 conf_string(submenu);
@@ -602,7 +630,6 @@ static void conf_cleanup(void)
602{ 630{
603 tcsetattr(1, TCSAFLUSH, &ios_org); 631 tcsetattr(1, TCSAFLUSH, &ios_org);
604 unlink(".help.tmp"); 632 unlink(".help.tmp");
605 unlink("lxdialog.scrltmp");
606} 633}
607 634
608static void winch_handler(int sig) 635static void winch_handler(int sig)
@@ -638,10 +665,9 @@ int main(int ac, char **av)
638 conf_parse(av[1]); 665 conf_parse(av[1]);
639 conf_read(NULL); 666 conf_read(NULL);
640 667
641 backtitle = malloc(128);
642 sym = sym_lookup("VERSION", 0); 668 sym = sym_lookup("VERSION", 0);
643 sym_calc_value(sym); 669 sym_calc_value(sym);
644 snprintf(backtitle, 128, "BusyBox v%s Configuration", 670 snprintf(menu_backtitle, 128, "BusyBox v%s Configuration",
645 sym_get_string_value(sym)); 671 sym_get_string_value(sym));
646 672
647 mode = getenv("MENUCONFIG_MODE"); 673 mode = getenv("MENUCONFIG_MODE");
diff --git a/scripts/config/menu.c b/scripts/config/menu.c
index 3d3b4d19c..6e075f80b 100644
--- a/scripts/config/menu.c
+++ b/scripts/config/menu.c
@@ -54,9 +54,34 @@ void menu_end_menu(void)
54 current_menu = current_menu->parent; 54 current_menu = current_menu->parent;
55} 55}
56 56
57struct expr *menu_check_dep(struct expr *e)
58{
59 if (!e)
60 return e;
61
62 switch (e->type) {
63 case E_NOT:
64 e->left.expr = menu_check_dep(e->left.expr);
65 break;
66 case E_OR:
67 case E_AND:
68 e->left.expr = menu_check_dep(e->left.expr);
69 e->right.expr = menu_check_dep(e->right.expr);
70 break;
71 case E_SYMBOL:
72 /* change 'm' into 'm' && MODULES */
73 if (e->left.sym == &symbol_mod)
74 return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
75 break;
76 default:
77 break;
78 }
79 return e;
80}
81
57void menu_add_dep(struct expr *dep) 82void menu_add_dep(struct expr *dep)
58{ 83{
59 current_entry->dep = expr_alloc_and(current_entry->dep, dep); 84 current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
60} 85}
61 86
62void menu_set_type(int type) 87void menu_set_type(int type)
@@ -69,56 +94,43 @@ void menu_set_type(int type)
69 sym->type = type; 94 sym->type = type;
70 return; 95 return;
71 } 96 }
72 fprintf(stderr, "%s:%d: type of '%s' redefined from '%s' to '%s'\n", 97 fprintf(stderr, "%s:%d:warning: type of '%s' redefined from '%s' to '%s'\n",
73 current_entry->file->name, current_entry->lineno, 98 current_entry->file->name, current_entry->lineno,
74 sym->name ? sym->name : "<choice>", sym_type_name(sym->type), sym_type_name(type)); 99 sym->name ? sym->name : "<choice>", sym_type_name(sym->type), sym_type_name(type));
75} 100}
76 101
77struct property *create_prop(enum prop_type type) 102struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)
78{
79 struct property *prop;
80
81 prop = malloc(sizeof(*prop));
82 memset(prop, 0, sizeof(*prop));
83 prop->type = type;
84 prop->file = current_file;
85 prop->lineno = zconf_lineno();
86
87 return prop;
88}
89
90struct property *menu_add_prop(int token, char *prompt, struct symbol *def, struct expr *dep)
91{ 103{
92 struct property *prop = create_prop(token); 104 struct property *prop = prop_alloc(type, current_entry->sym);
93 struct property **propp;
94 105
95 prop->sym = current_entry->sym;
96 prop->menu = current_entry; 106 prop->menu = current_entry;
97 prop->text = prompt; 107 prop->text = prompt;
98 prop->def = def; 108 prop->expr = expr;
99 E_EXPR(prop->visible) = dep; 109 prop->visible.expr = menu_check_dep(dep);
100 110
101 if (prompt) 111 if (prompt) {
112 if (current_entry->prompt)
113 fprintf(stderr, "%s:%d: prompt redefined\n",
114 current_entry->file->name, current_entry->lineno);
102 current_entry->prompt = prop; 115 current_entry->prompt = prop;
103
104 /* append property to the prop list of symbol */
105 if (prop->sym) {
106 for (propp = &prop->sym->prop; *propp; propp = &(*propp)->next)
107 ;
108 *propp = prop;
109 } 116 }
110 117
111 return prop; 118 return prop;
112} 119}
113 120
114void menu_add_prompt(int token, char *prompt, struct expr *dep) 121void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
115{ 122{
116 current_entry->prompt = menu_add_prop(token, prompt, NULL, dep); 123 menu_add_prop(type, prompt, NULL, dep);
117} 124}
118 125
119void menu_add_default(int token, struct symbol *def, struct expr *dep) 126void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
120{ 127{
121 current_entry->prompt = menu_add_prop(token, NULL, def, dep); 128 menu_add_prop(type, NULL, expr, dep);
129}
130
131void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
132{
133 menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
122} 134}
123 135
124void menu_finalize(struct menu *parent) 136void menu_finalize(struct menu *parent)
@@ -126,7 +138,7 @@ void menu_finalize(struct menu *parent)
126 struct menu *menu, *last_menu; 138 struct menu *menu, *last_menu;
127 struct symbol *sym; 139 struct symbol *sym;
128 struct property *prop; 140 struct property *prop;
129 struct expr *parentdep, *basedep, *dep, *dep2; 141 struct expr *parentdep, *basedep, *dep, *dep2, **ep;
130 142
131 sym = parent->sym; 143 sym = parent->sym;
132 if (parent->list) { 144 if (parent->list) {
@@ -143,7 +155,7 @@ void menu_finalize(struct menu *parent)
143 } 155 }
144 parentdep = expr_alloc_symbol(sym); 156 parentdep = expr_alloc_symbol(sym);
145 } else if (parent->prompt) 157 } else if (parent->prompt)
146 parentdep = E_EXPR(parent->prompt->visible); 158 parentdep = parent->prompt->visible.expr;
147 else 159 else
148 parentdep = parent->dep; 160 parentdep = parent->dep;
149 161
@@ -159,23 +171,28 @@ void menu_finalize(struct menu *parent)
159 for (; prop; prop = prop->next) { 171 for (; prop; prop = prop->next) {
160 if (prop->menu != menu) 172 if (prop->menu != menu)
161 continue; 173 continue;
162 dep = expr_transform(E_EXPR(prop->visible)); 174 dep = expr_transform(prop->visible.expr);
163 dep = expr_alloc_and(expr_copy(basedep), dep); 175 dep = expr_alloc_and(expr_copy(basedep), dep);
164 dep = expr_eliminate_dups(dep); 176 dep = expr_eliminate_dups(dep);
165 if (menu->sym && menu->sym->type != S_TRISTATE) 177 if (menu->sym && menu->sym->type != S_TRISTATE)
166 dep = expr_trans_bool(dep); 178 dep = expr_trans_bool(dep);
167 E_EXPR(prop->visible) = dep; 179 prop->visible.expr = dep;
180 if (prop->type == P_SELECT) {
181 struct symbol *es = prop_get_symbol(prop);
182 es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
183 expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
184 }
168 } 185 }
169 } 186 }
170 for (menu = parent->list; menu; menu = menu->next) 187 for (menu = parent->list; menu; menu = menu->next)
171 menu_finalize(menu); 188 menu_finalize(menu);
172 } else if (sym && parent->prompt) { 189 } else if (sym) {
173 basedep = E_EXPR(parent->prompt->visible); 190 basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
174 basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no); 191 basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
175 basedep = expr_eliminate_dups(expr_transform(basedep)); 192 basedep = expr_eliminate_dups(expr_transform(basedep));
176 last_menu = NULL; 193 last_menu = NULL;
177 for (menu = parent->next; menu; menu = menu->next) { 194 for (menu = parent->next; menu; menu = menu->next) {
178 dep = menu->prompt ? E_EXPR(menu->prompt->visible) : menu->dep; 195 dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
179 if (!expr_contains_symbol(dep, sym)) 196 if (!expr_contains_symbol(dep, sym))
180 break; 197 break;
181 if (expr_depends_symbol(dep, sym)) 198 if (expr_depends_symbol(dep, sym))
@@ -204,14 +221,27 @@ void menu_finalize(struct menu *parent)
204 for (menu = parent->list; menu; menu = menu->next) { 221 for (menu = parent->list; menu; menu = menu->next) {
205 if (sym && sym_is_choice(sym) && menu->sym) { 222 if (sym && sym_is_choice(sym) && menu->sym) {
206 menu->sym->flags |= SYMBOL_CHOICEVAL; 223 menu->sym->flags |= SYMBOL_CHOICEVAL;
224 if (!menu->prompt)
225 fprintf(stderr, "%s:%d:warning: choice value must have a prompt\n",
226 menu->file->name, menu->lineno);
227 for (prop = menu->sym->prop; prop; prop = prop->next) {
228 if (prop->type == P_PROMPT && prop->menu != menu) {
229 fprintf(stderr, "%s:%d:warning: choice values currently only support a single prompt\n",
230 prop->file->name, prop->lineno);
231
232 }
233 if (prop->type == P_DEFAULT)
234 fprintf(stderr, "%s:%d:warning: defaults for choice values not supported\n",
235 prop->file->name, prop->lineno);
236 }
207 current_entry = menu; 237 current_entry = menu;
208 menu_set_type(sym->type); 238 menu_set_type(sym->type);
209 menu_add_prop(P_CHOICE, NULL, parent->sym, NULL); 239 menu_add_symbol(P_CHOICE, sym, NULL);
210 prop = sym_get_choice_prop(parent->sym); 240 prop = sym_get_choice_prop(sym);
211 //dep = expr_alloc_one(E_CHOICE, dep); 241 for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
212 //dep->right.sym = menu->sym; 242 ;
213 prop->dep = expr_alloc_one(E_CHOICE, prop->dep); 243 *ep = expr_alloc_one(E_CHOICE, NULL);
214 prop->dep->right.sym = menu->sym; 244 (*ep)->right.sym = menu->sym;
215 } 245 }
216 if (menu->list && (!menu->prompt || !menu->prompt->text)) { 246 if (menu->list && (!menu->prompt || !menu->prompt->text)) {
217 for (last_menu = menu->list; ; last_menu = last_menu->next) { 247 for (last_menu = menu->list; ; last_menu = last_menu->next) {
@@ -224,20 +254,79 @@ void menu_finalize(struct menu *parent)
224 menu->list = NULL; 254 menu->list = NULL;
225 } 255 }
226 } 256 }
257
258 if (sym && !(sym->flags & SYMBOL_WARNED)) {
259 struct symbol *sym2;
260 if (sym->type == S_UNKNOWN)
261 fprintf(stderr, "%s:%d:warning: config symbol defined without type\n",
262 parent->file->name, parent->lineno);
263
264 if (sym_is_choice(sym) && !parent->prompt)
265 fprintf(stderr, "%s:%d:warning: choice must have a prompt\n",
266 parent->file->name, parent->lineno);
267
268 for (prop = sym->prop; prop; prop = prop->next) {
269 switch (prop->type) {
270 case P_DEFAULT:
271 if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
272 prop->expr->type != E_SYMBOL)
273 fprintf(stderr, "%s:%d:warning: default must be a single symbol\n",
274 prop->file->name, prop->lineno);
275 break;
276 case P_SELECT:
277 sym2 = prop_get_symbol(prop);
278 if ((sym->type != S_BOOLEAN && sym->type != S_TRISTATE) ||
279 (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE))
280 fprintf(stderr, "%s:%d:warning: enable is only allowed with boolean and tristate symbols\n",
281 prop->file->name, prop->lineno);
282 break;
283 case P_RANGE:
284 if (sym->type != S_INT && sym->type != S_HEX)
285 fprintf(stderr, "%s:%d:warning: range is only allowed for int or hex symbols\n",
286 prop->file->name, prop->lineno);
287 if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
288 !sym_string_valid(sym, prop->expr->right.sym->name))
289 fprintf(stderr, "%s:%d:warning: range is invalid\n",
290 prop->file->name, prop->lineno);
291 break;
292 default:
293 ;
294 }
295 }
296 sym->flags |= SYMBOL_WARNED;
297 }
298
299 if (sym && !sym_is_optional(sym) && parent->prompt) {
300 sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
301 expr_alloc_and(parent->prompt->visible.expr,
302 expr_alloc_symbol(&symbol_mod)));
303 }
227} 304}
228 305
229bool menu_is_visible(struct menu *menu) 306bool menu_is_visible(struct menu *menu)
230{ 307{
308 struct menu *child;
309 struct symbol *sym;
231 tristate visible; 310 tristate visible;
232 311
233 if (!menu->prompt) 312 if (!menu->prompt)
234 return false; 313 return false;
235 if (menu->sym) { 314 sym = menu->sym;
236 sym_calc_value(menu->sym); 315 if (sym) {
237 visible = E_TRI(menu->prompt->visible); 316 sym_calc_value(sym);
317 visible = menu->prompt->visible.tri;
238 } else 318 } else
239 visible = E_CALC(menu->prompt->visible); 319 visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);
240 return visible != no; 320
321 if (visible != no)
322 return true;
323 if (!sym || sym_get_tristate_value(menu->sym) == no)
324 return false;
325
326 for (child = menu->list; child; child = child->next)
327 if (menu_is_visible(child))
328 return true;
329 return false;
241} 330}
242 331
243const char *menu_get_prompt(struct menu *menu) 332const char *menu_get_prompt(struct menu *menu)
@@ -258,10 +347,9 @@ struct menu *menu_get_parent_menu(struct menu *menu)
258{ 347{
259 enum prop_type type; 348 enum prop_type type;
260 349
261 while (menu != &rootmenu) { 350 for (; menu != &rootmenu; menu = menu->parent) {
262 menu = menu->parent;
263 type = menu->prompt ? menu->prompt->type : 0; 351 type = menu->prompt ? menu->prompt->type : 0;
264 if (type == P_MENU || type == P_ROOTMENU) 352 if (type == P_MENU)
265 break; 353 break;
266 } 354 }
267 return menu; 355 return menu;
diff --git a/scripts/config/symbol.c b/scripts/config/symbol.c
index f2d0015de..29d8d3e0b 100644
--- a/scripts/config/symbol.c
+++ b/scripts/config/symbol.c
@@ -34,24 +34,14 @@ struct symbol *modules_sym;
34 34
35void sym_add_default(struct symbol *sym, const char *def) 35void sym_add_default(struct symbol *sym, const char *def)
36{ 36{
37 struct property *prop = create_prop(P_DEFAULT); 37 struct property *prop = prop_alloc(P_DEFAULT, sym);
38 struct property **propp;
39
40 prop->sym = sym;
41 prop->def = sym_lookup(def, 1);
42 38
43 /* append property to the prop list of symbol */ 39 prop->expr = expr_alloc_symbol(sym_lookup(def, 1));
44 if (prop->sym) {
45 for (propp = &prop->sym->prop; *propp; propp = &(*propp)->next)
46 ;
47 *propp = prop;
48 }
49} 40}
50 41
51void sym_init(void) 42void sym_init(void)
52{ 43{
53 struct symbol *sym; 44 struct symbol *sym;
54 struct utsname uts;
55 char *p; 45 char *p;
56 static bool inited = false; 46 static bool inited = false;
57 47
@@ -59,17 +49,6 @@ void sym_init(void)
59 return; 49 return;
60 inited = true; 50 inited = true;
61 51
62 uname(&uts);
63
64#if 0
65 sym = sym_lookup("ARCH", 0);
66 sym->type = S_STRING;
67 sym->flags |= SYMBOL_AUTO;
68 p = getenv("ARCH");
69 if (p)
70 sym_add_default(sym, p);
71#endif
72
73 sym = sym_lookup("VERSION", 0); 52 sym = sym_lookup("VERSION", 0);
74 sym->type = S_STRING; 53 sym->type = S_STRING;
75 sym->flags |= SYMBOL_AUTO; 54 sym->flags |= SYMBOL_AUTO;
@@ -77,37 +56,32 @@ void sym_init(void)
77 if (p) 56 if (p)
78 sym_add_default(sym, p); 57 sym_add_default(sym, p);
79 58
80#if 0
81 sym = sym_lookup("UNAME_RELEASE", 0);
82 sym->type = S_STRING;
83 sym->flags |= SYMBOL_AUTO;
84 sym_add_default(sym, uts.release);
85#endif
86
87 sym = sym_lookup("TARGET_ARCH", 0); 59 sym = sym_lookup("TARGET_ARCH", 0);
88 sym->type = S_STRING; 60 sym->type = S_STRING;
89 sym->flags |= SYMBOL_AUTO; 61 sym->flags |= SYMBOL_AUTO;
90 p = getenv("TARGET_ARCH"); 62 p = getenv("TARGET_ARCH");
91 if (p) 63 if (p)
92 sym_add_default(sym, p); 64 sym_add_default(sym, p);
65
93} 66}
94 67
95int sym_get_type(struct symbol *sym) 68enum symbol_type sym_get_type(struct symbol *sym)
96{ 69{
97 int type = sym->type; 70 enum symbol_type type = sym->type;
71
98 if (type == S_TRISTATE) { 72 if (type == S_TRISTATE) {
99 if (sym_is_choice_value(sym) && sym->visible == yes) 73 if (sym_is_choice_value(sym) && sym->visible == yes)
100 type = S_BOOLEAN; 74 type = S_BOOLEAN;
101 else { 75 else {
102 sym_calc_value(modules_sym); 76 sym_calc_value(modules_sym);
103 if (S_TRI(modules_sym->curr) == no) 77 if (modules_sym->curr.tri == no)
104 type = S_BOOLEAN; 78 type = S_BOOLEAN;
105 } 79 }
106 } 80 }
107 return type; 81 return type;
108} 82}
109 83
110const char *sym_type_name(int type) 84const char *sym_type_name(enum symbol_type type)
111{ 85{
112 switch (type) { 86 switch (type) {
113 case S_BOOLEAN: 87 case S_BOOLEAN:
@@ -122,6 +96,8 @@ const char *sym_type_name(int type)
122 return "string"; 96 return "string";
123 case S_UNKNOWN: 97 case S_UNKNOWN:
124 return "unknown"; 98 return "unknown";
99 case S_OTHER:
100 break;
125 } 101 }
126 return "???"; 102 return "???";
127} 103}
@@ -138,41 +114,104 @@ struct property *sym_get_choice_prop(struct symbol *sym)
138struct property *sym_get_default_prop(struct symbol *sym) 114struct property *sym_get_default_prop(struct symbol *sym)
139{ 115{
140 struct property *prop; 116 struct property *prop;
141 tristate visible;
142 117
143 for_all_defaults(sym, prop) { 118 for_all_defaults(sym, prop) {
144 visible = E_CALC(prop->visible); 119 prop->visible.tri = expr_calc_value(prop->visible.expr);
145 if (visible != no) 120 if (prop->visible.tri != no)
121 return prop;
122 }
123 return NULL;
124}
125
126struct property *sym_get_range_prop(struct symbol *sym)
127{
128 struct property *prop;
129
130 for_all_properties(sym, prop, P_RANGE) {
131 prop->visible.tri = expr_calc_value(prop->visible.expr);
132 if (prop->visible.tri != no)
146 return prop; 133 return prop;
147 } 134 }
148 return NULL; 135 return NULL;
149} 136}
150 137
151void sym_calc_visibility(struct symbol *sym) 138static void sym_calc_visibility(struct symbol *sym)
152{ 139{
153 struct property *prop; 140 struct property *prop;
154 tristate visible, oldvisible; 141 tristate tri;
155 142
156 /* any prompt visible? */ 143 /* any prompt visible? */
157 oldvisible = sym->visible; 144 tri = no;
158 visible = no; 145 for_all_prompts(sym, prop) {
159 for_all_prompts(sym, prop) 146 prop->visible.tri = expr_calc_value(prop->visible.expr);
160 visible = E_OR(visible, E_CALC(prop->visible)); 147 tri = E_OR(tri, prop->visible.tri);
161 if (oldvisible != visible) { 148 }
162 sym->visible = visible; 149 if (sym->visible != tri) {
163 sym->flags |= SYMBOL_CHANGED; 150 sym->visible = tri;
151 sym_set_changed(sym);
152 }
153 if (sym_is_choice_value(sym))
154 return;
155 tri = no;
156 if (sym->rev_dep.expr)
157 tri = expr_calc_value(sym->rev_dep.expr);
158 if (sym->rev_dep.tri != tri) {
159 sym->rev_dep.tri = tri;
160 sym_set_changed(sym);
161 }
162}
163
164static struct symbol *sym_calc_choice(struct symbol *sym)
165{
166 struct symbol *def_sym;
167 struct property *prop;
168 struct expr *e;
169
170 /* is the user choice visible? */
171 def_sym = sym->user.val;
172 if (def_sym) {
173 sym_calc_visibility(def_sym);
174 if (def_sym->visible != no)
175 return def_sym;
164 } 176 }
177
178 /* any of the defaults visible? */
179 for_all_defaults(sym, prop) {
180 prop->visible.tri = expr_calc_value(prop->visible.expr);
181 if (prop->visible.tri == no)
182 continue;
183 def_sym = prop_get_symbol(prop);
184 sym_calc_visibility(def_sym);
185 if (def_sym->visible != no)
186 return def_sym;
187 }
188
189 /* just get the first visible value */
190 prop = sym_get_choice_prop(sym);
191 for (e = prop->expr; e; e = e->left.expr) {
192 def_sym = e->right.sym;
193 sym_calc_visibility(def_sym);
194 if (def_sym->visible != no)
195 return def_sym;
196 }
197
198 /* no choice? reset tristate value */
199 sym->curr.tri = no;
200 return NULL;
165} 201}
166 202
167void sym_calc_value(struct symbol *sym) 203void sym_calc_value(struct symbol *sym)
168{ 204{
169 struct symbol_value newval, oldval; 205 struct symbol_value newval, oldval;
170 struct property *prop, *def_prop; 206 struct property *prop;
171 struct symbol *def_sym;
172 struct expr *e; 207 struct expr *e;
173 208
209 if (!sym)
210 return;
211
174 if (sym->flags & SYMBOL_VALID) 212 if (sym->flags & SYMBOL_VALID)
175 return; 213 return;
214 sym->flags |= SYMBOL_VALID;
176 215
177 oldval = sym->curr; 216 oldval = sym->curr;
178 217
@@ -187,17 +226,10 @@ void sym_calc_value(struct symbol *sym)
187 newval = symbol_no.curr; 226 newval = symbol_no.curr;
188 break; 227 break;
189 default: 228 default:
190 S_VAL(newval) = sym->name; 229 sym->curr.val = sym->name;
191 S_TRI(newval) = no; 230 sym->curr.tri = no;
192 if (sym->flags & SYMBOL_CONST) { 231 return;
193 goto out;
194 }
195 //newval = symbol_empty.curr;
196 // generate warning somewhere here later
197 //S_TRI(newval) = yes;
198 goto out;
199 } 232 }
200 sym->flags |= SYMBOL_VALID;
201 if (!sym_is_choice_value(sym)) 233 if (!sym_is_choice_value(sym))
202 sym->flags &= ~SYMBOL_WRITE; 234 sym->flags &= ~SYMBOL_WRITE;
203 235
@@ -206,95 +238,77 @@ void sym_calc_value(struct symbol *sym)
206 /* set default if recursively called */ 238 /* set default if recursively called */
207 sym->curr = newval; 239 sym->curr = newval;
208 240
209 if (sym->visible != no) { 241 switch (sym_get_type(sym)) {
210 sym->flags |= SYMBOL_WRITE; 242 case S_BOOLEAN:
211 if (!sym_has_value(sym)) { 243 case S_TRISTATE:
212 if (!sym_is_choice(sym)) {
213 prop = sym_get_default_prop(sym);
214 if (prop) {
215 sym_calc_value(prop->def);
216 newval = prop->def->curr;
217 }
218 }
219 } else
220 newval = sym->def;
221
222 S_TRI(newval) = E_AND(S_TRI(newval), sym->visible);
223 /* if the symbol is visible and not optionial,
224 * possibly ignore old user choice. */
225 if (!sym_is_optional(sym) && S_TRI(newval) == no)
226 S_TRI(newval) = sym->visible;
227 if (sym_is_choice_value(sym) && sym->visible == yes) { 244 if (sym_is_choice_value(sym) && sym->visible == yes) {
228 prop = sym_get_choice_prop(sym); 245 prop = sym_get_choice_prop(sym);
229 S_TRI(newval) = (S_VAL(prop->def->curr) == sym) ? yes : no; 246 newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
230 } 247 } else if (E_OR(sym->visible, sym->rev_dep.tri) != no) {
231 } else {
232 prop = sym_get_default_prop(sym);
233 if (prop) {
234 sym->flags |= SYMBOL_WRITE; 248 sym->flags |= SYMBOL_WRITE;
235 sym_calc_value(prop->def); 249 if (sym_has_value(sym))
236 newval = prop->def->curr; 250 newval.tri = sym->user.tri;
251 else if (!sym_is_choice(sym)) {
252 prop = sym_get_default_prop(sym);
253 if (prop)
254 newval.tri = expr_calc_value(prop->expr);
255 }
256 newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri);
257 } else if (!sym_is_choice(sym)) {
258 prop = sym_get_default_prop(sym);
259 if (prop) {
260 sym->flags |= SYMBOL_WRITE;
261 newval.tri = expr_calc_value(prop->expr);
262 }
237 } 263 }
238 } 264 if (sym_get_type(sym) == S_BOOLEAN) {
239 265 if (newval.tri == mod)
240 switch (sym_get_type(sym)) { 266 newval.tri = yes;
241 case S_TRISTATE: 267 if (sym->visible == mod)
242 if (S_TRI(newval) != mod) 268 sym->visible = yes;
243 break; 269 if (sym->rev_dep.tri == mod)
244 sym_calc_value(modules_sym); 270 sym->rev_dep.tri = yes;
245 if (S_TRI(modules_sym->curr) == no)
246 S_TRI(newval) = yes;
247 break;
248 case S_BOOLEAN:
249 if (S_TRI(newval) == mod)
250 S_TRI(newval) = yes;
251 }
252
253out:
254 sym->curr = newval;
255
256 if (sym_is_choice(sym) && S_TRI(newval) == yes) {
257 def_sym = S_VAL(sym->def);
258 if (def_sym) {
259 sym_calc_visibility(def_sym);
260 if (def_sym->visible == no)
261 def_sym = NULL;
262 } 271 }
263 if (!def_sym) { 272 break;
264 for_all_defaults(sym, def_prop) { 273 case S_STRING:
265 if (E_CALC(def_prop->visible) == no) 274 case S_HEX:
266 continue; 275 case S_INT:
267 sym_calc_visibility(def_prop->def); 276 if (sym->visible != no) {
268 if (def_prop->def->visible != no) { 277 sym->flags |= SYMBOL_WRITE;
269 def_sym = def_prop->def; 278 if (sym_has_value(sym)) {
270 break; 279 newval.val = sym->user.val;
271 } 280 break;
272 } 281 }
273 } 282 }
274 283 prop = sym_get_default_prop(sym);
275 if (!def_sym) { 284 if (prop) {
276 prop = sym_get_choice_prop(sym); 285 struct symbol *ds = prop_get_symbol(prop);
277 for (e = prop->dep; e; e = e->left.expr) { 286 if (ds) {
278 sym_calc_visibility(e->right.sym); 287 sym->flags |= SYMBOL_WRITE;
279 if (e->right.sym->visible != no) { 288 sym_calc_value(ds);
280 def_sym = e->right.sym; 289 newval.val = ds->curr.val;
281 break;
282 }
283 } 290 }
284 } 291 }
285 292 break;
286 S_VAL(newval) = def_sym; 293 default:
294 ;
287 } 295 }
288 296
289 if (memcmp(&oldval, &newval, sizeof(newval)))
290 sym->flags |= SYMBOL_CHANGED;
291 sym->curr = newval; 297 sym->curr = newval;
298 if (sym_is_choice(sym) && newval.tri == yes)
299 sym->curr.val = sym_calc_choice(sym);
300
301 if (memcmp(&oldval, &sym->curr, sizeof(oldval)))
302 sym_set_changed(sym);
292 303
293 if (sym_is_choice(sym)) { 304 if (sym_is_choice(sym)) {
294 int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE); 305 int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
295 prop = sym_get_choice_prop(sym); 306 prop = sym_get_choice_prop(sym);
296 for (e = prop->dep; e; e = e->left.expr) 307 for (e = prop->expr; e; e = e->left.expr) {
297 e->right.sym->flags |= flags; 308 e->right.sym->flags |= flags;
309 if (flags & SYMBOL_CHANGED)
310 sym_set_changed(e->right.sym);
311 }
298 } 312 }
299} 313}
300 314
@@ -308,13 +322,24 @@ void sym_clear_all_valid(void)
308 sym_change_count++; 322 sym_change_count++;
309} 323}
310 324
325void sym_set_changed(struct symbol *sym)
326{
327 struct property *prop;
328
329 sym->flags |= SYMBOL_CHANGED;
330 for (prop = sym->prop; prop; prop = prop->next) {
331 if (prop->menu)
332 prop->menu->flags |= MENU_CHANGED;
333 }
334}
335
311void sym_set_all_changed(void) 336void sym_set_all_changed(void)
312{ 337{
313 struct symbol *sym; 338 struct symbol *sym;
314 int i; 339 int i;
315 340
316 for_all_symbols(i, sym) 341 for_all_symbols(i, sym)
317 sym->flags |= SYMBOL_CHANGED; 342 sym_set_changed(sym);
318} 343}
319 344
320bool sym_tristate_within_range(struct symbol *sym, tristate val) 345bool sym_tristate_within_range(struct symbol *sym, tristate val)
@@ -327,19 +352,13 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val)
327 if (type != S_BOOLEAN && type != S_TRISTATE) 352 if (type != S_BOOLEAN && type != S_TRISTATE)
328 return false; 353 return false;
329 354
330 switch (val) { 355 if (type == S_BOOLEAN && val == mod)
331 case no: 356 return false;
332 if (sym_is_choice_value(sym) && sym->visible == yes) 357 if (sym->visible <= sym->rev_dep.tri)
333 return false; 358 return false;
334 return sym_is_optional(sym); 359 if (sym_is_choice_value(sym) && sym->visible == yes)
335 case mod: 360 return val == yes;
336 if (sym_is_choice_value(sym) && sym->visible == yes) 361 return val >= sym->rev_dep.tri && val <= sym->visible;
337 return false;
338 return type == S_TRISTATE;
339 case yes:
340 return type == S_BOOLEAN || sym->visible == yes;
341 }
342 return false;
343} 362}
344 363
345bool sym_set_tristate_value(struct symbol *sym, tristate val) 364bool sym_set_tristate_value(struct symbol *sym, tristate val)
@@ -351,16 +370,16 @@ bool sym_set_tristate_value(struct symbol *sym, tristate val)
351 370
352 if (sym->flags & SYMBOL_NEW) { 371 if (sym->flags & SYMBOL_NEW) {
353 sym->flags &= ~SYMBOL_NEW; 372 sym->flags &= ~SYMBOL_NEW;
354 sym->flags |= SYMBOL_CHANGED; 373 sym_set_changed(sym);
355 } 374 }
356 if (sym_is_choice_value(sym) && val == yes) { 375 if (sym_is_choice_value(sym) && val == yes) {
357 struct property *prop = sym_get_choice_prop(sym); 376 struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
358 377
359 S_VAL(prop->def->def) = sym; 378 cs->user.val = sym;
360 prop->def->flags &= ~SYMBOL_NEW; 379 cs->flags &= ~SYMBOL_NEW;
361 } 380 }
362 381
363 S_TRI(sym->def) = val; 382 sym->user.tri = val;
364 if (oldval != val) { 383 if (oldval != val) {
365 sym_clear_all_valid(); 384 sym_clear_all_valid();
366 if (sym == modules_sym) 385 if (sym == modules_sym)
@@ -404,12 +423,12 @@ bool sym_string_valid(struct symbol *sym, const char *str)
404 ch = *str++; 423 ch = *str++;
405 if (ch == '-') 424 if (ch == '-')
406 ch = *str++; 425 ch = *str++;
407 if (!isdigit((int)ch)) 426 if (!isdigit(ch))
408 return false; 427 return false;
409 if (ch == '0' && *str != 0) 428 if (ch == '0' && *str != 0)
410 return false; 429 return false;
411 while ((ch = *str++)) { 430 while ((ch = *str++)) {
412 if (!isdigit((int)ch)) 431 if (!isdigit(ch))
413 return false; 432 return false;
414 } 433 }
415 return true; 434 return true;
@@ -418,21 +437,58 @@ bool sym_string_valid(struct symbol *sym, const char *str)
418 str += 2; 437 str += 2;
419 ch = *str++; 438 ch = *str++;
420 do { 439 do {
421 if (!isxdigit((int)ch)) 440 if (!isxdigit(ch))
422 return false; 441 return false;
423 } while ((ch = *str++)); 442 } while ((ch = *str++));
424 return true; 443 return true;
425 case S_BOOLEAN: 444 case S_BOOLEAN:
426 case S_TRISTATE: 445 case S_TRISTATE:
427 switch (str[0]) { 446 switch (str[0]) {
428 case 'y': 447 case 'y': case 'Y':
429 case 'Y': 448 case 'm': case 'M':
449 case 'n': case 'N':
450 return true;
451 }
452 return false;
453 default:
454 return false;
455 }
456}
457
458bool sym_string_within_range(struct symbol *sym, const char *str)
459{
460 struct property *prop;
461 int val;
462
463 switch (sym->type) {
464 case S_STRING:
465 return sym_string_valid(sym, str);
466 case S_INT:
467 if (!sym_string_valid(sym, str))
468 return false;
469 prop = sym_get_range_prop(sym);
470 if (!prop)
471 return true;
472 val = strtol(str, NULL, 10);
473 return val >= strtol(prop->expr->left.sym->name, NULL, 10) &&
474 val <= strtol(prop->expr->right.sym->name, NULL, 10);
475 case S_HEX:
476 if (!sym_string_valid(sym, str))
477 return false;
478 prop = sym_get_range_prop(sym);
479 if (!prop)
480 return true;
481 val = strtol(str, NULL, 16);
482 return val >= strtol(prop->expr->left.sym->name, NULL, 16) &&
483 val <= strtol(prop->expr->right.sym->name, NULL, 16);
484 case S_BOOLEAN:
485 case S_TRISTATE:
486 switch (str[0]) {
487 case 'y': case 'Y':
430 return sym_tristate_within_range(sym, yes); 488 return sym_tristate_within_range(sym, yes);
431 case 'm': 489 case 'm': case 'M':
432 case 'M':
433 return sym_tristate_within_range(sym, mod); 490 return sym_tristate_within_range(sym, mod);
434 case 'n': 491 case 'n': case 'N':
435 case 'N':
436 return sym_tristate_within_range(sym, no); 492 return sym_tristate_within_range(sym, no);
437 } 493 }
438 return false; 494 return false;
@@ -451,14 +507,11 @@ bool sym_set_string_value(struct symbol *sym, const char *newval)
451 case S_BOOLEAN: 507 case S_BOOLEAN:
452 case S_TRISTATE: 508 case S_TRISTATE:
453 switch (newval[0]) { 509 switch (newval[0]) {
454 case 'y': 510 case 'y': case 'Y':
455 case 'Y':
456 return sym_set_tristate_value(sym, yes); 511 return sym_set_tristate_value(sym, yes);
457 case 'm': 512 case 'm': case 'M':
458 case 'M':
459 return sym_set_tristate_value(sym, mod); 513 return sym_set_tristate_value(sym, mod);
460 case 'n': 514 case 'n': case 'N':
461 case 'N':
462 return sym_set_tristate_value(sym, no); 515 return sym_set_tristate_value(sym, no);
463 } 516 }
464 return false; 517 return false;
@@ -466,23 +519,23 @@ bool sym_set_string_value(struct symbol *sym, const char *newval)
466 ; 519 ;
467 } 520 }
468 521
469 if (!sym_string_valid(sym, newval)) 522 if (!sym_string_within_range(sym, newval))
470 return false; 523 return false;
471 524
472 if (sym->flags & SYMBOL_NEW) { 525 if (sym->flags & SYMBOL_NEW) {
473 sym->flags &= ~SYMBOL_NEW; 526 sym->flags &= ~SYMBOL_NEW;
474 sym->flags |= SYMBOL_CHANGED; 527 sym_set_changed(sym);
475 } 528 }
476 529
477 oldval = S_VAL(sym->def); 530 oldval = sym->user.val;
478 size = strlen(newval) + 1; 531 size = strlen(newval) + 1;
479 if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) { 532 if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
480 size += 2; 533 size += 2;
481 S_VAL(sym->def) = val = malloc(size); 534 sym->user.val = val = malloc(size);
482 *val++ = '0'; 535 *val++ = '0';
483 *val++ = 'x'; 536 *val++ = 'x';
484 } else if (!oldval || strcmp(oldval, newval)) 537 } else if (!oldval || strcmp(oldval, newval))
485 S_VAL(sym->def) = val = malloc(size); 538 sym->user.val = val = malloc(size);
486 else 539 else
487 return true; 540 return true;
488 541
@@ -513,20 +566,12 @@ const char *sym_get_string_value(struct symbol *sym)
513 default: 566 default:
514 ; 567 ;
515 } 568 }
516 return (const char *)S_VAL(sym->curr); 569 return (const char *)sym->curr.val;
517} 570}
518 571
519bool sym_is_changable(struct symbol *sym) 572bool sym_is_changable(struct symbol *sym)
520{ 573{
521 if (sym->visible == no) 574 return sym->visible > sym->rev_dep.tri;
522 return false;
523 /* at least 'n' and 'y'/'m' is selectable */
524 if (sym_is_optional(sym))
525 return true;
526 /* no 'n', so 'y' and 'm' must be selectable */
527 if (sym_get_type(sym) == S_TRISTATE && sym->visible == yes)
528 return true;
529 return false;
530} 575}
531 576
532struct symbol *sym_lookup(const char *name, int isconst) 577struct symbol *sym_lookup(const char *name, int isconst)
@@ -536,7 +581,6 @@ struct symbol *sym_lookup(const char *name, int isconst)
536 char *new_name; 581 char *new_name;
537 int hash = 0; 582 int hash = 0;
538 583
539 //printf("lookup: %s -> ", name);
540 if (name) { 584 if (name) {
541 if (name[0] && !name[1]) { 585 if (name[0] && !name[1]) {
542 switch (name[0]) { 586 switch (name[0]) {
@@ -552,10 +596,8 @@ struct symbol *sym_lookup(const char *name, int isconst)
552 for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) { 596 for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
553 if (!strcmp(symbol->name, name)) { 597 if (!strcmp(symbol->name, name)) {
554 if ((isconst && symbol->flags & SYMBOL_CONST) || 598 if ((isconst && symbol->flags & SYMBOL_CONST) ||
555 (!isconst && !(symbol->flags & SYMBOL_CONST))) { 599 (!isconst && !(symbol->flags & SYMBOL_CONST)))
556 //printf("h:%p\n", symbol);
557 return symbol; 600 return symbol;
558 }
559 } 601 }
560 } 602 }
561 new_name = strdup(name); 603 new_name = strdup(name);
@@ -575,7 +617,6 @@ struct symbol *sym_lookup(const char *name, int isconst)
575 symbol->next = symbol_hash[hash]; 617 symbol->next = symbol_hash[hash];
576 symbol_hash[hash] = symbol; 618 symbol_hash[hash] = symbol;
577 619
578 //printf("n:%p\n", symbol);
579 return symbol; 620 return symbol;
580} 621}
581 622
@@ -608,6 +649,104 @@ struct symbol *sym_find(const char *name)
608 return symbol; 649 return symbol;
609} 650}
610 651
652struct symbol *sym_check_deps(struct symbol *sym);
653
654static struct symbol *sym_check_expr_deps(struct expr *e)
655{
656 struct symbol *sym;
657
658 if (!e)
659 return NULL;
660 switch (e->type) {
661 case E_OR:
662 case E_AND:
663 sym = sym_check_expr_deps(e->left.expr);
664 if (sym)
665 return sym;
666 return sym_check_expr_deps(e->right.expr);
667 case E_NOT:
668 return sym_check_expr_deps(e->left.expr);
669 case E_EQUAL:
670 case E_UNEQUAL:
671 sym = sym_check_deps(e->left.sym);
672 if (sym)
673 return sym;
674 return sym_check_deps(e->right.sym);
675 case E_SYMBOL:
676 return sym_check_deps(e->left.sym);
677 default:
678 break;
679 }
680 printf("Oops! How to check %d?\n", e->type);
681 return NULL;
682}
683
684struct symbol *sym_check_deps(struct symbol *sym)
685{
686 struct symbol *sym2;
687 struct property *prop;
688
689 if (sym->flags & SYMBOL_CHECK_DONE)
690 return NULL;
691 if (sym->flags & SYMBOL_CHECK) {
692 printf("Warning! Found recursive dependency: %s", sym->name);
693 return sym;
694 }
695
696 sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
697 sym2 = sym_check_expr_deps(sym->rev_dep.expr);
698 if (sym2)
699 goto out;
700
701 for (prop = sym->prop; prop; prop = prop->next) {
702 if (prop->type == P_CHOICE)
703 continue;
704 sym2 = sym_check_expr_deps(prop->visible.expr);
705 if (sym2)
706 goto out;
707 if (prop->type != P_DEFAULT || sym_is_choice(sym))
708 continue;
709 sym2 = sym_check_expr_deps(prop->expr);
710 if (sym2)
711 goto out;
712 }
713out:
714 if (sym2)
715 printf(" %s", sym->name);
716 sym->flags &= ~SYMBOL_CHECK;
717 return sym2;
718}
719
720struct property *prop_alloc(enum prop_type type, struct symbol *sym)
721{
722 struct property *prop;
723 struct property **propp;
724
725 prop = malloc(sizeof(*prop));
726 memset(prop, 0, sizeof(*prop));
727 prop->type = type;
728 prop->sym = sym;
729 prop->file = current_file;
730 prop->lineno = zconf_lineno();
731
732 /* append property to the prop list of symbol */
733 if (sym) {
734 for (propp = &sym->prop; *propp; propp = &(*propp)->next)
735 ;
736 *propp = prop;
737 }
738
739 return prop;
740}
741
742struct symbol *prop_get_symbol(struct property *prop)
743{
744 if (prop->expr && (prop->expr->type == E_SYMBOL ||
745 prop->expr->type == E_CHOICE))
746 return prop->expr->left.sym;
747 return NULL;
748}
749
611const char *prop_get_type_name(enum prop_type type) 750const char *prop_get_type_name(enum prop_type type)
612{ 751{
613 switch (type) { 752 switch (type) {
@@ -617,13 +756,16 @@ const char *prop_get_type_name(enum prop_type type)
617 return "comment"; 756 return "comment";
618 case P_MENU: 757 case P_MENU:
619 return "menu"; 758 return "menu";
620 case P_ROOTMENU:
621 return "rootmenu";
622 case P_DEFAULT: 759 case P_DEFAULT:
623 return "default"; 760 return "default";
624 case P_CHOICE: 761 case P_CHOICE:
625 return "choice"; 762 return "choice";
626 default: 763 case P_SELECT:
627 return "unknown"; 764 return "select";
765 case P_RANGE:
766 return "range";
767 case P_UNKNOWN:
768 break;
628 } 769 }
770 return "unknown";
629} 771}
diff --git a/scripts/config/zconf.l b/scripts/config/zconf.l
index a412bf411..55517b287 100644
--- a/scripts/config/zconf.l
+++ b/scripts/config/zconf.l
@@ -7,6 +7,7 @@
7 * Released under the terms of the GNU GPL v2.0. 7 * Released under the terms of the GNU GPL v2.0.
8 */ 8 */
9 9
10#include <limits.h>
10#include <stdio.h> 11#include <stdio.h>
11#include <stdlib.h> 12#include <stdlib.h>
12#include <string.h> 13#include <string.h>
@@ -14,7 +15,6 @@
14 15
15#define LKC_DIRECT_LINK 16#define LKC_DIRECT_LINK
16#include "lkc.h" 17#include "lkc.h"
17#include "zconf.tab.h"
18 18
19#define START_STRSIZE 16 19#define START_STRSIZE 16
20 20
@@ -96,6 +96,7 @@ n [A-Za-z0-9_]
96 "endchoice" BEGIN(PARAM); return T_ENDCHOICE; 96 "endchoice" BEGIN(PARAM); return T_ENDCHOICE;
97 "comment" BEGIN(PARAM); return T_COMMENT; 97 "comment" BEGIN(PARAM); return T_COMMENT;
98 "config" BEGIN(PARAM); return T_CONFIG; 98 "config" BEGIN(PARAM); return T_CONFIG;
99 "menuconfig" BEGIN(PARAM); return T_MENUCONFIG;
99 "help" BEGIN(PARAM); return T_HELP; 100 "help" BEGIN(PARAM); return T_HELP;
100 "if" BEGIN(PARAM); return T_IF; 101 "if" BEGIN(PARAM); return T_IF;
101 "endif" BEGIN(PARAM); return T_ENDIF; 102 "endif" BEGIN(PARAM); return T_ENDIF;
@@ -105,11 +106,17 @@ n [A-Za-z0-9_]
105 "default" BEGIN(PARAM); return T_DEFAULT; 106 "default" BEGIN(PARAM); return T_DEFAULT;
106 "prompt" BEGIN(PARAM); return T_PROMPT; 107 "prompt" BEGIN(PARAM); return T_PROMPT;
107 "tristate" BEGIN(PARAM); return T_TRISTATE; 108 "tristate" BEGIN(PARAM); return T_TRISTATE;
109 "def_tristate" BEGIN(PARAM); return T_DEF_TRISTATE;
108 "bool" BEGIN(PARAM); return T_BOOLEAN; 110 "bool" BEGIN(PARAM); return T_BOOLEAN;
109 "boolean" BEGIN(PARAM); return T_BOOLEAN; 111 "boolean" BEGIN(PARAM); return T_BOOLEAN;
112 "def_bool" BEGIN(PARAM); return T_DEF_BOOLEAN;
113 "def_boolean" BEGIN(PARAM); return T_DEF_BOOLEAN;
110 "int" BEGIN(PARAM); return T_INT; 114 "int" BEGIN(PARAM); return T_INT;
111 "hex" BEGIN(PARAM); return T_HEX; 115 "hex" BEGIN(PARAM); return T_HEX;
112 "string" BEGIN(PARAM); return T_STRING; 116 "string" BEGIN(PARAM); return T_STRING;
117 "select" BEGIN(PARAM); return T_SELECT;
118 "enable" BEGIN(PARAM); return T_SELECT;
119 "range" BEGIN(PARAM); return T_RANGE;
113 {n}+ { 120 {n}+ {
114 alloc_string(yytext, yyleng); 121 alloc_string(yytext, yyleng);
115 zconflval.string = text; 122 zconflval.string = text;
@@ -141,6 +148,8 @@ n [A-Za-z0-9_]
141 zconflval.string = text; 148 zconflval.string = text;
142 return T_WORD; 149 return T_WORD;
143 } 150 }
151 #.* /* comment */
152 \\\n current_file->lineno++;
144 . 153 .
145 <<EOF>> { 154 <<EOF>> {
146 BEGIN(INITIAL); 155 BEGIN(INITIAL);
@@ -151,29 +160,30 @@ n [A-Za-z0-9_]
151 [^'"\\\n]+/\n { 160 [^'"\\\n]+/\n {
152 append_string(yytext, yyleng); 161 append_string(yytext, yyleng);
153 zconflval.string = text; 162 zconflval.string = text;
154 return T_STRING; 163 return T_WORD_QUOTE;
155 } 164 }
156 [^'"\\\n]+ { 165 [^'"\\\n]+ {
157 append_string(yytext, yyleng); 166 append_string(yytext, yyleng);
158 } 167 }
159 \\.?/\n { 168 \\.?/\n {
160 append_string(yytext+1, yyleng); 169 append_string(yytext + 1, yyleng - 1);
161 zconflval.string = text; 170 zconflval.string = text;
162 return T_STRING; 171 return T_WORD_QUOTE;
163 } 172 }
164 \\.? { 173 \\.? {
165 append_string(yytext+1, yyleng); 174 append_string(yytext + 1, yyleng - 1);
166 } 175 }
167 \'|\" { 176 \'|\" {
168 if (str == yytext[0]) { 177 if (str == yytext[0]) {
169 BEGIN(PARAM); 178 BEGIN(PARAM);
170 zconflval.string = text; 179 zconflval.string = text;
171 return T_STRING; 180 return T_WORD_QUOTE;
172 } else 181 } else
173 append_string(yytext, 1); 182 append_string(yytext, 1);
174 } 183 }
175 \n { 184 \n {
176 printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); 185 printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
186 current_file->lineno++;
177 BEGIN(INITIAL); 187 BEGIN(INITIAL);
178 return T_EOL; 188 return T_EOL;
179 } 189 }
@@ -204,9 +214,8 @@ n [A-Za-z0-9_]
204 } 214 }
205 append_string(" ", ts); 215 append_string(" ", ts);
206 } 216 }
207
208 } 217 }
209 \n/[^ \t\n] { 218 [ \t]*\n/[^ \t\n] {
210 current_file->lineno++; 219 current_file->lineno++;
211 zconf_endhelp(); 220 zconf_endhelp();
212 return T_HELPTEXT; 221 return T_HELPTEXT;
@@ -246,12 +255,37 @@ void zconf_starthelp(void)
246static void zconf_endhelp(void) 255static void zconf_endhelp(void)
247{ 256{
248 zconflval.string = text; 257 zconflval.string = text;
249 BEGIN(INITIAL); 258 BEGIN(INITIAL);
259}
260
261
262/*
263 * Try to open specified file with following names:
264 * ./name
265 * $(srctree)/name
266 * The latter is used when srctree is separate from objtree
267 * when compiling the kernel.
268 * Return NULL if file is not found.
269 */
270FILE *zconf_fopen(const char *name)
271{
272 char *env, fullname[PATH_MAX+1];
273 FILE *f;
274
275 f = fopen(name, "r");
276 if (!f && name[0] != '/') {
277 env = getenv(SRCTREE);
278 if (env) {
279 sprintf(fullname, "%s/%s", env, name);
280 f = fopen(fullname, "r");
281 }
282 }
283 return f;
250} 284}
251 285
252void zconf_initscan(const char *name) 286void zconf_initscan(const char *name)
253{ 287{
254 yyin = fopen(name, "r"); 288 yyin = zconf_fopen(name);
255 if (!yyin) { 289 if (!yyin) {
256 printf("can't find file %s\n", name); 290 printf("can't find file %s\n", name);
257 exit(1); 291 exit(1);
@@ -272,7 +306,7 @@ void zconf_nextfile(const char *name)
272 memset(buf, 0, sizeof(*buf)); 306 memset(buf, 0, sizeof(*buf));
273 307
274 current_buf->state = YY_CURRENT_BUFFER; 308 current_buf->state = YY_CURRENT_BUFFER;
275 yyin = fopen(name, "r"); 309 yyin = zconf_fopen(name);
276 if (!yyin) { 310 if (!yyin) {
277 printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name); 311 printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
278 exit(1); 312 exit(1);
@@ -318,7 +352,7 @@ static struct buffer *zconf_endfile(void)
318int zconf_lineno(void) 352int zconf_lineno(void)
319{ 353{
320 if (current_buf) 354 if (current_buf)
321 return current_file->lineno; 355 return current_file->lineno - 1;
322 else 356 else
323 return 0; 357 return 0;
324} 358}
diff --git a/scripts/config/zconf.tab.c_shipped b/scripts/config/zconf.tab.c_shipped
index 33b2b6f84..c9bfdb451 100644
--- a/scripts/config/zconf.tab.c_shipped
+++ b/scripts/config/zconf.tab.c_shipped
@@ -1,7 +1,7 @@
1/* A Bison parser, made from zconf.y, by GNU bison 1.75. */ 1/* A Bison parser, made by GNU Bison 1.875a. */
2 2
3/* Skeleton parser for Yacc-like parsing with Bison, 3/* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. 4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
@@ -34,10 +34,13 @@
34 USER NAME SPACE" below. */ 34 USER NAME SPACE" below. */
35 35
36/* Identify Bison output. */ 36/* Identify Bison output. */
37#define YYBISON 1 37#define YYBISON 1
38
39/* Skeleton name. */
40#define YYSKELETON_NAME "yacc.c"
38 41
39/* Pure parsers. */ 42/* Pure parsers. */
40#define YYPURE 0 43#define YYPURE 0
41 44
42/* Using locations. */ 45/* Using locations. */
43#define YYLSP_NEEDED 0 46#define YYLSP_NEEDED 0
@@ -67,31 +70,37 @@
67 T_ENDCHOICE = 263, 70 T_ENDCHOICE = 263,
68 T_COMMENT = 264, 71 T_COMMENT = 264,
69 T_CONFIG = 265, 72 T_CONFIG = 265,
70 T_HELP = 266, 73 T_MENUCONFIG = 266,
71 T_HELPTEXT = 267, 74 T_HELP = 267,
72 T_IF = 268, 75 T_HELPTEXT = 268,
73 T_ENDIF = 269, 76 T_IF = 269,
74 T_DEPENDS = 270, 77 T_ENDIF = 270,
75 T_REQUIRES = 271, 78 T_DEPENDS = 271,
76 T_OPTIONAL = 272, 79 T_REQUIRES = 272,
77 T_PROMPT = 273, 80 T_OPTIONAL = 273,
78 T_DEFAULT = 274, 81 T_PROMPT = 274,
79 T_TRISTATE = 275, 82 T_DEFAULT = 275,
80 T_BOOLEAN = 276, 83 T_TRISTATE = 276,
81 T_INT = 277, 84 T_DEF_TRISTATE = 277,
82 T_HEX = 278, 85 T_BOOLEAN = 278,
83 T_WORD = 279, 86 T_DEF_BOOLEAN = 279,
84 T_STRING = 280, 87 T_STRING = 280,
85 T_UNEQUAL = 281, 88 T_INT = 281,
86 T_EOF = 282, 89 T_HEX = 282,
87 T_EOL = 283, 90 T_WORD = 283,
88 T_CLOSE_PAREN = 284, 91 T_WORD_QUOTE = 284,
89 T_OPEN_PAREN = 285, 92 T_UNEQUAL = 285,
90 T_ON = 286, 93 T_EOF = 286,
91 T_OR = 287, 94 T_EOL = 287,
92 T_AND = 288, 95 T_CLOSE_PAREN = 288,
93 T_EQUAL = 289, 96 T_OPEN_PAREN = 289,
94 T_NOT = 290 97 T_ON = 290,
98 T_SELECT = 291,
99 T_RANGE = 292,
100 T_OR = 293,
101 T_AND = 294,
102 T_EQUAL = 295,
103 T_NOT = 296
95 }; 104 };
96#endif 105#endif
97#define T_MAINMENU 258 106#define T_MAINMENU 258
@@ -102,37 +111,43 @@
102#define T_ENDCHOICE 263 111#define T_ENDCHOICE 263
103#define T_COMMENT 264 112#define T_COMMENT 264
104#define T_CONFIG 265 113#define T_CONFIG 265
105#define T_HELP 266 114#define T_MENUCONFIG 266
106#define T_HELPTEXT 267 115#define T_HELP 267
107#define T_IF 268 116#define T_HELPTEXT 268
108#define T_ENDIF 269 117#define T_IF 269
109#define T_DEPENDS 270 118#define T_ENDIF 270
110#define T_REQUIRES 271 119#define T_DEPENDS 271
111#define T_OPTIONAL 272 120#define T_REQUIRES 272
112#define T_PROMPT 273 121#define T_OPTIONAL 273
113#define T_DEFAULT 274 122#define T_PROMPT 274
114#define T_TRISTATE 275 123#define T_DEFAULT 275
115#define T_BOOLEAN 276 124#define T_TRISTATE 276
116#define T_INT 277 125#define T_DEF_TRISTATE 277
117#define T_HEX 278 126#define T_BOOLEAN 278
118#define T_WORD 279 127#define T_DEF_BOOLEAN 279
119#define T_STRING 280 128#define T_STRING 280
120#define T_UNEQUAL 281 129#define T_INT 281
121#define T_EOF 282 130#define T_HEX 282
122#define T_EOL 283 131#define T_WORD 283
123#define T_CLOSE_PAREN 284 132#define T_WORD_QUOTE 284
124#define T_OPEN_PAREN 285 133#define T_UNEQUAL 285
125#define T_ON 286 134#define T_EOF 286
126#define T_OR 287 135#define T_EOL 287
127#define T_AND 288 136#define T_CLOSE_PAREN 288
128#define T_EQUAL 289 137#define T_OPEN_PAREN 289
129#define T_NOT 290 138#define T_ON 290
139#define T_SELECT 291
140#define T_RANGE 292
141#define T_OR 293
142#define T_AND 294
143#define T_EQUAL 295
144#define T_NOT 296
130 145
131 146
132 147
133 148
134/* Copy the first part of user declarations. */ 149/* Copy the first part of user declarations. */
135#line 1 "zconf.y" 150
136 151
137/* 152/*
138 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org> 153 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
@@ -165,7 +180,7 @@ struct symbol *symbol_hash[257];
165 180
166/* Enabling traces. */ 181/* Enabling traces. */
167#ifndef YYDEBUG 182#ifndef YYDEBUG
168# define YYDEBUG 1 183# define YYDEBUG 0
169#endif 184#endif
170 185
171/* Enabling verbose error messages. */ 186/* Enabling verbose error messages. */
@@ -176,42 +191,33 @@ struct symbol *symbol_hash[257];
176# define YYERROR_VERBOSE 0 191# define YYERROR_VERBOSE 0
177#endif 192#endif
178 193
179#ifndef YYSTYPE 194#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
180#line 33 "zconf.y" 195
181typedef union { 196typedef union YYSTYPE {
182 int token; 197 int token;
183 char *string; 198 char *string;
184 struct symbol *symbol; 199 struct symbol *symbol;
185 struct expr *expr; 200 struct expr *expr;
186 struct menu *menu; 201 struct menu *menu;
187} yystype; 202} YYSTYPE;
188/* Line 193 of /usr/share/bison/yacc.c. */ 203/* Line 191 of yacc.c. */
189#line 190 "zconf.tab.c" 204
190# define YYSTYPE yystype 205# define yystype YYSTYPE /* obsolescent; will be withdrawn */
206# define YYSTYPE_IS_DECLARED 1
191# define YYSTYPE_IS_TRIVIAL 1 207# define YYSTYPE_IS_TRIVIAL 1
192#endif 208#endif
193 209
194#ifndef YYLTYPE 210
195typedef struct yyltype
196{
197 int first_line;
198 int first_column;
199 int last_line;
200 int last_column;
201} yyltype;
202# define YYLTYPE yyltype
203# define YYLTYPE_IS_TRIVIAL 1
204#endif
205 211
206/* Copy the second part of user declarations. */ 212/* Copy the second part of user declarations. */
207#line 83 "zconf.y" 213
208 214
209#define LKC_DIRECT_LINK 215#define LKC_DIRECT_LINK
210#include "lkc.h" 216#include "lkc.h"
211 217
212 218
213/* Line 213 of /usr/share/bison/yacc.c. */ 219/* Line 214 of yacc.c. */
214#line 215 "zconf.tab.c" 220
215 221
216#if ! defined (yyoverflow) || YYERROR_VERBOSE 222#if ! defined (yyoverflow) || YYERROR_VERBOSE
217 223
@@ -247,7 +253,7 @@ typedef struct yyltype
247 253
248#if (! defined (yyoverflow) \ 254#if (! defined (yyoverflow) \
249 && (! defined (__cplusplus) \ 255 && (! defined (__cplusplus) \
250 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 256 || (YYSTYPE_IS_TRIVIAL)))
251 257
252/* A type that is properly aligned for any stack member. */ 258/* A type that is properly aligned for any stack member. */
253union yyalloc 259union yyalloc
@@ -257,13 +263,13 @@ union yyalloc
257 }; 263 };
258 264
259/* The size of the maximum gap between one aligned stack and the next. */ 265/* The size of the maximum gap between one aligned stack and the next. */
260# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) 266# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
261 267
262/* The size of an array large to enough to hold all stacks, each with 268/* The size of an array large to enough to hold all stacks, each with
263 N elements. */ 269 N elements. */
264# define YYSTACK_BYTES(N) \ 270# define YYSTACK_BYTES(N) \
265 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ 271 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
266 + YYSTACK_GAP_MAX) 272 + YYSTACK_GAP_MAXIMUM)
267 273
268/* Copy COUNT objects from FROM to TO. The source and destination do 274/* Copy COUNT objects from FROM to TO. The source and destination do
269 not overlap. */ 275 not overlap. */
@@ -277,7 +283,7 @@ union yyalloc
277 { \ 283 { \
278 register YYSIZE_T yyi; \ 284 register YYSIZE_T yyi; \
279 for (yyi = 0; yyi < (Count); yyi++) \ 285 for (yyi = 0; yyi < (Count); yyi++) \
280 (To)[yyi] = (From)[yyi]; \ 286 (To)[yyi] = (From)[yyi]; \
281 } \ 287 } \
282 while (0) 288 while (0)
283# endif 289# endif
@@ -294,7 +300,7 @@ union yyalloc
294 YYSIZE_T yynewbytes; \ 300 YYSIZE_T yynewbytes; \
295 YYCOPY (&yyptr->Stack, Stack, yysize); \ 301 YYCOPY (&yyptr->Stack, Stack, yysize); \
296 Stack = &yyptr->Stack; \ 302 Stack = &yyptr->Stack; \
297 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ 303 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
298 yyptr += yynewbytes / sizeof (*yyptr); \ 304 yyptr += yynewbytes / sizeof (*yyptr); \
299 } \ 305 } \
300 while (0) 306 while (0)
@@ -309,23 +315,24 @@ union yyalloc
309 315
310/* YYFINAL -- State number of the termination state. */ 316/* YYFINAL -- State number of the termination state. */
311#define YYFINAL 2 317#define YYFINAL 2
312#define YYLAST 151 318/* YYLAST -- Last index in YYTABLE. */
319#define YYLAST 201
313 320
314/* YYNTOKENS -- Number of terminals. */ 321/* YYNTOKENS -- Number of terminals. */
315#define YYNTOKENS 36 322#define YYNTOKENS 42
316/* YYNNTS -- Number of nonterminals. */ 323/* YYNNTS -- Number of nonterminals. */
317#define YYNNTS 39 324#define YYNNTS 41
318/* YYNRULES -- Number of rules. */ 325/* YYNRULES -- Number of rules. */
319#define YYNRULES 96 326#define YYNRULES 104
320/* YYNRULES -- Number of states. */ 327/* YYNRULES -- Number of states. */
321#define YYNSTATES 145 328#define YYNSTATES 182
322 329
323/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 330/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
324#define YYUNDEFTOK 2 331#define YYUNDEFTOK 2
325#define YYMAXUTOK 290 332#define YYMAXUTOK 296
326 333
327#define YYTRANSLATE(X) \ 334#define YYTRANSLATE(YYX) \
328 ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK) 335 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
329 336
330/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 337/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
331static const unsigned char yytranslate[] = 338static const unsigned char yytranslate[] =
@@ -359,7 +366,7 @@ static const unsigned char yytranslate[] =
359 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 366 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
360 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 367 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
361 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 368 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
362 35 369 35, 36, 37, 38, 39, 40, 41
363}; 370};
364 371
365#if YYDEBUG 372#if YYDEBUG
@@ -368,63 +375,69 @@ static const unsigned char yytranslate[] =
368static const unsigned short yyprhs[] = 375static const unsigned short yyprhs[] =
369{ 376{
370 0, 0, 3, 4, 7, 9, 11, 13, 17, 19, 377 0, 0, 3, 4, 7, 9, 11, 13, 17, 19,
371 21, 23, 26, 28, 30, 32, 34, 36, 39, 43, 378 21, 23, 26, 28, 30, 32, 34, 36, 38, 42,
372 44, 48, 52, 55, 58, 61, 64, 67, 70, 73, 379 45, 49, 52, 53, 56, 59, 62, 65, 69, 74,
373 77, 81, 83, 87, 89, 94, 97, 98, 102, 106, 380 78, 83, 87, 91, 95, 100, 105, 110, 116, 119,
374 109, 112, 116, 118, 121, 122, 125, 128, 130, 136, 381 122, 124, 128, 131, 132, 135, 138, 141, 144, 149,
375 140, 141, 144, 147, 150, 153, 157, 159, 164, 167, 382 153, 157, 160, 165, 166, 169, 173, 175, 179, 182,
376 168, 171, 174, 177, 181, 184, 187, 190, 194, 197, 383 183, 186, 189, 192, 196, 199, 201, 205, 208, 209,
377 200, 201, 205, 208, 212, 215, 218, 219, 221, 225, 384 212, 215, 218, 222, 226, 228, 232, 235, 238, 241,
378 227, 229, 231, 233, 235, 237, 239, 240, 243, 245, 385 242, 245, 248, 253, 257, 261, 262, 265, 267, 269,
379 249, 253, 257, 260, 264, 268, 270 386 272, 275, 278, 280, 282, 283, 286, 288, 292, 296,
387 300, 303, 307, 311, 313
380}; 388};
381 389
382/* YYRHS -- A `-1'-separated list of the rules' RHS. */ 390/* YYRHS -- A `-1'-separated list of the rules' RHS. */
383static const yysigned_char yyrhs[] = 391static const yysigned_char yyrhs[] =
384{ 392{
385 37, 0, -1, -1, 37, 38, -1, 39, -1, 47, 393 43, 0, -1, -1, 43, 44, -1, 45, -1, 55,
386 -1, 58, -1, 3, 69, 71, -1, 5, -1, 14, 394 -1, 66, -1, 3, 77, 79, -1, 5, -1, 15,
387 -1, 8, -1, 1, 71, -1, 53, -1, 63, -1, 395 -1, 8, -1, 1, 79, -1, 61, -1, 71, -1,
388 41, -1, 61, -1, 71, -1, 10, 24, -1, 40, 396 47, -1, 49, -1, 69, -1, 79, -1, 10, 28,
389 28, 42, -1, -1, 42, 43, 28, -1, 42, 67, 397 32, -1, 46, 50, -1, 11, 28, 32, -1, 48,
390 28, -1, 42, 65, -1, 42, 28, -1, 20, 68, 398 50, -1, -1, 50, 51, -1, 50, 75, -1, 50,
391 -1, 21, 68, -1, 22, 68, -1, 23, 68, -1, 399 73, -1, 50, 32, -1, 21, 76, 32, -1, 22,
392 25, 68, -1, 18, 69, 72, -1, 19, 74, 72, 400 81, 80, 32, -1, 23, 76, 32, -1, 24, 81,
393 -1, 7, -1, 44, 28, 48, -1, 70, -1, 45, 401 80, 32, -1, 26, 76, 32, -1, 27, 76, 32,
394 50, 46, 28, -1, 45, 50, -1, -1, 48, 49, 402 -1, 25, 76, 32, -1, 19, 77, 80, 32, -1,
395 28, -1, 48, 67, 28, -1, 48, 65, -1, 48, 403 20, 81, 80, 32, -1, 36, 28, 80, 32, -1,
396 28, -1, 18, 69, 72, -1, 17, -1, 19, 74, 404 37, 82, 82, 80, 32, -1, 7, 32, -1, 52,
397 -1, -1, 50, 39, -1, 13, 73, -1, 70, -1, 405 56, -1, 78, -1, 53, 58, 54, -1, 53, 58,
398 51, 28, 54, 52, 28, -1, 51, 28, 54, -1, 406 -1, -1, 56, 57, -1, 56, 75, -1, 56, 73,
399 -1, 54, 39, -1, 54, 58, -1, 54, 47, -1, 407 -1, 56, 32, -1, 19, 77, 80, 32, -1, 21,
400 4, 69, -1, 55, 28, 66, -1, 70, -1, 56, 408 76, 32, -1, 23, 76, 32, -1, 18, 32, -1,
401 59, 57, 28, -1, 56, 59, -1, -1, 59, 39, 409 20, 28, 80, 32, -1, -1, 58, 45, -1, 14,
402 -1, 59, 58, -1, 59, 47, -1, 59, 1, 28, 410 81, 32, -1, 78, -1, 59, 62, 60, -1, 59,
403 -1, 6, 69, -1, 60, 28, -1, 9, 69, -1, 411 62, -1, -1, 62, 45, -1, 62, 66, -1, 62,
404 62, 28, 66, -1, 11, 28, -1, 64, 12, -1, 412 55, -1, 4, 77, 32, -1, 63, 74, -1, 78,
405 -1, 66, 67, 28, -1, 66, 28, -1, 15, 31, 413 -1, 64, 67, 65, -1, 64, 67, -1, -1, 67,
406 73, -1, 15, 73, -1, 16, 73, -1, -1, 69, 414 45, -1, 67, 66, -1, 67, 55, -1, 67, 1,
407 -1, 69, 13, 73, -1, 24, -1, 25, -1, 5, 415 32, -1, 6, 77, 32, -1, 68, -1, 9, 77,
408 -1, 8, -1, 14, -1, 28, -1, 27, -1, -1, 416 32, -1, 70, 74, -1, 12, 32, -1, 72, 13,
409 13, 73, -1, 74, -1, 74, 34, 74, -1, 74, 417 -1, -1, 74, 75, -1, 74, 32, -1, 16, 35,
410 26, 74, -1, 30, 73, 29, -1, 35, 73, -1, 418 81, 32, -1, 16, 81, 32, -1, 17, 81, 32,
411 73, 32, 73, -1, 73, 33, 73, -1, 24, -1, 419 -1, -1, 77, 80, -1, 28, -1, 29, -1, 5,
412 25, -1 420 79, -1, 8, 79, -1, 15, 79, -1, 32, -1,
421 31, -1, -1, 14, 81, -1, 82, -1, 82, 40,
422 82, -1, 82, 30, 82, -1, 34, 81, 33, -1,
423 41, 81, -1, 81, 38, 81, -1, 81, 39, 81,
424 -1, 28, -1, 29, -1
413}; 425};
414 426
415/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 427/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
416static const unsigned short yyrline[] = 428static const unsigned short yyrline[] =
417{ 429{
418 0, 88, 88, 89, 92, 93, 94, 95, 96, 97, 430 0, 94, 94, 95, 98, 99, 100, 101, 102, 103,
419 98, 99, 102, 104, 105, 106, 107, 113, 121, 127, 431 104, 105, 109, 110, 111, 112, 113, 114, 120, 128,
420 129, 130, 131, 132, 135, 141, 147, 153, 159, 165, 432 134, 142, 152, 154, 155, 156, 157, 160, 166, 173,
421 171, 179, 188, 194, 202, 204, 210, 212, 213, 214, 433 179, 186, 192, 198, 204, 210, 216, 222, 230, 239,
422 215, 218, 224, 230, 237, 239, 244, 254, 262, 264, 434 245, 254, 255, 261, 263, 264, 265, 266, 269, 275,
423 270, 272, 273, 274, 279, 286, 292, 300, 302, 308, 435 281, 287, 293, 299, 301, 306, 315, 324, 325, 331,
424 310, 311, 312, 313, 316, 322, 329, 336, 343, 349, 436 333, 334, 335, 340, 347, 353, 362, 363, 369, 371,
425 356, 357, 358, 361, 366, 371, 379, 381, 385, 390, 437 372, 373, 374, 377, 383, 390, 397, 404, 410, 417,
426 391, 394, 395, 396, 399, 400, 402, 403, 406, 407, 438 418, 419, 422, 427, 432, 440, 442, 447, 448, 451,
427 408, 409, 410, 411, 412, 415, 416 439 452, 453, 457, 457, 459, 460, 463, 464, 465, 466,
440 467, 468, 469, 472, 473
428}; 441};
429#endif 442#endif
430 443
@@ -435,12 +448,14 @@ static const char *const yytname[] =
435{ 448{
436 "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU", 449 "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
437 "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", 450 "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
438 "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", "T_REQUIRES", 451 "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
439 "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE", "T_BOOLEAN", 452 "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE",
440 "T_INT", "T_HEX", "T_WORD", "T_STRING", "T_UNEQUAL", "T_EOF", "T_EOL", 453 "T_DEF_TRISTATE", "T_BOOLEAN", "T_DEF_BOOLEAN", "T_STRING", "T_INT",
441 "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_OR", "T_AND", "T_EQUAL", 454 "T_HEX", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_EOF", "T_EOL",
442 "T_NOT", "$accept", "input", "block", "common_block", 455 "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_SELECT", "T_RANGE", "T_OR",
443 "config_entry_start", "config_stmt", "config_option_list", 456 "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block",
457 "common_block", "config_entry_start", "config_stmt",
458 "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
444 "config_option", "choice", "choice_entry", "choice_end", "choice_stmt", 459 "config_option", "choice", "choice_entry", "choice_end", "choice_stmt",
445 "choice_option_list", "choice_option", "choice_block", "if", "if_end", 460 "choice_option_list", "choice_option", "choice_block", "if", "if_end",
446 "if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt", 461 "if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt",
@@ -458,38 +473,41 @@ static const unsigned short yytoknum[] =
458 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 473 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
459 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 474 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
460 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 475 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
461 285, 286, 287, 288, 289, 290 476 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
477 295, 296
462}; 478};
463# endif 479# endif
464 480
465/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 481/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
466static const unsigned char yyr1[] = 482static const unsigned char yyr1[] =
467{ 483{
468 0, 36, 37, 37, 38, 38, 38, 38, 38, 38, 484 0, 42, 43, 43, 44, 44, 44, 44, 44, 44,
469 38, 38, 39, 39, 39, 39, 39, 40, 41, 42, 485 44, 44, 45, 45, 45, 45, 45, 45, 46, 47,
470 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 486 48, 49, 50, 50, 50, 50, 50, 51, 51, 51,
471 43, 44, 45, 46, 47, 47, 48, 48, 48, 48, 487 51, 51, 51, 51, 51, 51, 51, 51, 52, 53,
472 48, 49, 49, 49, 50, 50, 51, 52, 53, 53, 488 54, 55, 55, 56, 56, 56, 56, 56, 57, 57,
473 54, 54, 54, 54, 55, 56, 57, 58, 58, 59, 489 57, 57, 57, 58, 58, 59, 60, 61, 61, 62,
474 59, 59, 59, 59, 60, 61, 62, 63, 64, 65, 490 62, 62, 62, 63, 64, 65, 66, 66, 67, 67,
475 66, 66, 66, 67, 67, 67, 68, 68, 68, 69, 491 67, 67, 67, 68, 69, 70, 71, 72, 73, 74,
476 69, 70, 70, 70, 71, 71, 72, 72, 73, 73, 492 74, 74, 75, 75, 75, 76, 76, 77, 77, 78,
477 73, 73, 73, 73, 73, 74, 74 493 78, 78, 79, 79, 80, 80, 81, 81, 81, 81,
494 81, 81, 81, 82, 82
478}; 495};
479 496
480/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 497/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
481static const unsigned char yyr2[] = 498static const unsigned char yyr2[] =
482{ 499{
483 0, 2, 0, 2, 1, 1, 1, 3, 1, 1, 500 0, 2, 0, 2, 1, 1, 1, 3, 1, 1,
484 1, 2, 1, 1, 1, 1, 1, 2, 3, 0, 501 1, 2, 1, 1, 1, 1, 1, 1, 3, 2,
485 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 502 3, 2, 0, 2, 2, 2, 2, 3, 4, 3,
486 3, 1, 3, 1, 4, 2, 0, 3, 3, 2, 503 4, 3, 3, 3, 4, 4, 4, 5, 2, 2,
487 2, 3, 1, 2, 0, 2, 2, 1, 5, 3, 504 1, 3, 2, 0, 2, 2, 2, 2, 4, 3,
488 0, 2, 2, 2, 2, 3, 1, 4, 2, 0, 505 3, 2, 4, 0, 2, 3, 1, 3, 2, 0,
489 2, 2, 2, 3, 2, 2, 2, 3, 2, 2, 506 2, 2, 2, 3, 2, 1, 3, 2, 0, 2,
490 0, 3, 2, 3, 2, 2, 0, 1, 3, 1, 507 2, 2, 3, 3, 1, 3, 2, 2, 2, 0,
491 1, 1, 1, 1, 1, 1, 0, 2, 1, 3, 508 2, 2, 4, 3, 3, 0, 2, 1, 1, 2,
492 3, 3, 2, 3, 3, 1, 1 509 2, 2, 1, 1, 0, 2, 1, 3, 3, 3,
510 2, 3, 3, 1, 1
493}; 511};
494 512
495/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 513/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -497,127 +515,151 @@ static const unsigned char yyr2[] =
497 means the default is an error. */ 515 means the default is an error. */
498static const unsigned char yydefact[] = 516static const unsigned char yydefact[] =
499{ 517{
500 2, 0, 1, 0, 0, 0, 8, 0, 31, 10, 518 2, 0, 1, 0, 0, 0, 8, 0, 0, 10,
501 0, 0, 0, 9, 85, 84, 3, 4, 0, 14, 519 0, 0, 0, 0, 9, 93, 92, 3, 4, 22,
502 0, 44, 5, 0, 12, 0, 59, 6, 0, 15, 520 14, 22, 15, 43, 53, 5, 59, 12, 79, 68,
503 0, 13, 16, 11, 79, 80, 0, 54, 64, 66, 521 6, 74, 16, 79, 13, 17, 11, 87, 88, 0,
504 17, 95, 96, 0, 0, 46, 88, 19, 36, 35, 522 0, 0, 38, 0, 0, 0, 103, 104, 0, 0,
505 50, 70, 0, 65, 70, 7, 0, 92, 0, 0, 523 0, 96, 19, 21, 39, 42, 58, 64, 0, 76,
506 0, 0, 18, 32, 81, 82, 83, 45, 0, 33, 524 7, 63, 73, 75, 18, 20, 0, 100, 55, 0,
507 49, 55, 0, 60, 62, 0, 61, 56, 67, 91, 525 0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
508 93, 94, 90, 89, 0, 0, 0, 0, 0, 76, 526 85, 0, 85, 85, 85, 26, 0, 0, 23, 0,
509 76, 76, 76, 76, 23, 0, 0, 22, 0, 42, 527 25, 24, 0, 0, 0, 85, 85, 47, 44, 46,
510 0, 0, 40, 0, 39, 0, 34, 51, 53, 0, 528 45, 0, 0, 0, 54, 41, 40, 60, 62, 57,
511 52, 47, 72, 0, 63, 57, 68, 0, 74, 75, 529 61, 56, 81, 80, 0, 69, 71, 66, 70, 65,
512 86, 86, 24, 77, 25, 26, 27, 28, 20, 69, 530 99, 101, 102, 98, 97, 77, 0, 0, 0, 94,
513 21, 86, 43, 37, 38, 48, 71, 73, 0, 29, 531 94, 0, 94, 94, 0, 94, 0, 0, 0, 94,
514 30, 0, 41, 87, 78 532 0, 78, 51, 94, 94, 0, 0, 89, 90, 91,
533 72, 0, 83, 84, 0, 0, 0, 27, 86, 0,
534 29, 0, 33, 31, 32, 0, 94, 0, 0, 49,
535 50, 82, 95, 34, 35, 28, 30, 36, 0, 48,
536 52, 37
515}; 537};
516 538
517/* YYDEFGOTO[NTERM-NUM]. */ 539/* YYDEFGOTO[NTERM-NUM]. */
518static const short yydefgoto[] = 540static const short yydefgoto[] =
519{ 541{
520 -1, 1, 16, 17, 18, 19, 62, 95, 20, 21, 542 -1, 1, 17, 18, 19, 20, 21, 22, 52, 88,
521 68, 22, 63, 103, 49, 23, 109, 24, 70, 25, 543 23, 24, 105, 25, 54, 98, 55, 26, 109, 27,
522 26, 75, 27, 52, 28, 29, 30, 31, 96, 97, 544 56, 28, 29, 117, 30, 58, 31, 32, 33, 34,
523 71, 113, 122, 123, 69, 32, 139, 45, 46 545 89, 90, 57, 91, 131, 132, 106, 35, 155, 50,
546 51
524}; 547};
525 548
526/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 549/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
527 STATE-NUM. */ 550 STATE-NUM. */
528#define YYPACT_NINF -120 551#define YYPACT_NINF -99
529static const short yypact[] = 552static const short yypact[] =
530{ 553{
531 -120, 17, -120, 41, 48, 48, -120, 48, -120, -120, 554 -99, 48, -99, 38, 46, 46, -99, 46, -29, -99,
532 48, -11, 40, -120, -120, -120, -120, -120, 13, -120, 555 46, -17, -3, -11, -99, -99, -99, -99, -99, -99,
533 23, -120, -120, 66, -120, 72, -120, -120, 77, -120, 556 -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
534 81, -120, -120, -120, -120, -120, 41, -120, -120, -120, 557 -99, -99, -99, -99, -99, -99, -99, -99, -99, 38,
535 -120, -120, -120, 40, 40, 57, 59, -120, -120, 98, 558 12, 15, -99, 18, 51, 62, -99, -99, -11, -11,
536 -120, -120, 49, -120, -120, -120, 7, -120, 40, 40, 559 4, -24, 138, 138, 160, 121, 110, -4, 81, -4,
537 67, 67, 99, 117, -120, -120, -120, -120, 85, -120, 560 -99, -99, -99, -99, -99, -99, -19, -99, -99, -11,
538 74, 18, 88, -120, -120, 95, -120, -120, 18, -120, 561 -11, 70, 70, 73, 32, -11, 46, -11, 46, -11,
539 96, -120, -120, -120, 102, 36, 40, 48, 67, 48, 562 46, -11, 46, 46, 46, -99, 36, 70, -99, 95,
540 48, 48, 48, 48, -120, 103, 129, -120, 114, -120, 563 -99, -99, 96, 46, 106, 46, 46, -99, -99, -99,
541 48, 67, -120, 115, -120, 116, -120, -120, -120, 118, 564 -99, 38, 38, 38, -99, -99, -99, -99, -99, -99,
542 -120, -120, -120, 119, -120, -120, -120, 40, 57, 57, 565 -99, -99, -99, -99, 112, -99, -99, -99, -99, -99,
543 135, 135, -120, 136, -120, -120, -120, -120, -120, -120, 566 -99, 117, -99, -99, -99, -99, -11, 33, 65, 131,
544 -120, 135, -120, -120, -120, -120, -120, 57, 40, -120, 567 1, 119, 131, 1, 136, 1, 153, 154, 155, 131,
545 -120, 40, -120, 57, 57 568 70, -99, -99, 131, 131, 156, 157, -99, -99, -99,
569 -99, 101, -99, -99, -11, 158, 159, -99, -99, 161,
570 -99, 162, -99, -99, -99, 163, 131, 164, 165, -99,
571 -99, -99, 99, -99, -99, -99, -99, -99, 166, -99,
572 -99, -99
546}; 573};
547 574
548/* YYPGOTO[NTERM-NUM]. */ 575/* YYPGOTO[NTERM-NUM]. */
549static const yysigned_char yypgoto[] = 576static const short yypgoto[] =
550{ 577{
551 -120, -120, -120, -38, -120, -120, -120, -120, -120, -120, 578 -99, -99, -99, 111, -99, -99, -99, -99, 178, -99,
552 -120, -42, -120, -120, -120, -120, -120, -120, -120, -120, 579 -99, -99, -99, 91, -99, -99, -99, -99, -99, -99,
553 -120, -120, -33, -120, -120, -120, -120, -120, -120, 87, 580 -99, -99, -99, -99, 115, -99, -99, -99, -99, -99,
554 97, 34, 47, -1, -23, 2, -119, -43, -53 581 -99, 146, 168, 89, 27, 0, 126, -1, -98, -48,
582 -63
555}; 583};
556 584
557/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 585/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
558 positive, shift that token. If negative, reduce the rule which 586 positive, shift that token. If negative, reduce the rule which
559 number is the opposite. If zero, do what YYDEFACT says. 587 number is the opposite. If zero, do what YYDEFACT says.
560 If YYTABLE_NINF, parse error. */ 588 If YYTABLE_NINF, syntax error. */
561#define YYTABLE_NINF -59 589#define YYTABLE_NINF -68
562static const short yytable[] = 590static const short yytable[] =
563{ 591{
564 56, 57, 140, 36, 37, 33, 38, 82, 83, 39, 592 66, 67, 36, 42, 39, 40, 71, 41, 123, 124,
565 74, 67, 142, 40, 73, 80, 81, 2, 3, 76, 593 43, 44, 74, 75, 120, 154, 72, 46, 47, 69,
566 4, 5, 6, 7, 8, 9, 10, 11, 108, 77, 594 70, 121, 122, 48, 140, 45, 127, 128, 112, 130,
567 12, 13, 107, 85, 86, 121, 79, 110, 55, 58, 595 49, 133, 156, 135, 158, 159, 68, 161, 60, 69,
568 59, 47, 118, 119, 14, 15, 112, 111, 132, -58, 596 70, 165, 69, 70, 61, 167, 168, 62, 2, 3,
569 72, 48, -58, 5, 64, 7, 8, 65, 10, 11, 597 63, 4, 5, 6, 7, 8, 9, 10, 11, 12,
570 41, 42, 12, 66, 41, 42, 43, 117, 14, 15, 598 46, 47, 13, 14, 139, 152, 48, 126, 178, 15,
571 43, 44, 34, 35, 137, 44, 14, 15, 5, 64, 599 16, 69, 70, 49, 37, 38, 129, 166, 151, 15,
572 7, 8, 65, 10, 11, 60, 120, 12, 66, 58, 600 16, -67, 114, 64, -67, 5, 101, 7, 8, 102,
573 59, 41, 42, 61, 50, 143, 98, 105, 144, 131, 601 10, 11, 12, 143, 65, 13, 103, 153, 46, 47,
574 51, 14, 15, 64, 7, 53, 65, 10, 11, 54, 602 147, 148, 149, 69, 70, 125, 172, 134, 141, 136,
575 84, 12, 66, 106, 85, 86, 114, 87, 88, 89, 603 137, 138, 15, 16, 5, 101, 7, 8, 102, 10,
576 90, 91, 92, 115, 93, 14, 15, 94, 84, 59, 604 11, 12, 145, 146, 13, 103, 101, 7, 142, 102,
577 116, 128, 85, 86, 99, 100, 101, 124, 125, 126, 605 10, 11, 12, 171, 144, 13, 103, 69, 70, 69,
578 127, 129, 130, 133, 134, 102, 135, 136, 138, 141, 606 70, 15, 16, 100, 150, 154, 113, 108, 113, 116,
579 104, 78 607 73, 157, 15, 16, 74, 75, 70, 76, 77, 78,
608 79, 80, 81, 82, 83, 84, 104, 107, 160, 115,
609 85, 110, 73, 118, 86, 87, 74, 75, 92, 93,
610 94, 95, 111, 96, 119, 162, 163, 164, 169, 170,
611 173, 174, 97, 175, 176, 177, 179, 180, 181, 53,
612 99, 59
580}; 613};
581 614
582static const unsigned char yycheck[] = 615static const unsigned char yycheck[] =
583{ 616{
584 43, 44, 121, 4, 5, 3, 7, 60, 61, 10, 617 48, 49, 3, 32, 4, 5, 30, 7, 71, 72,
585 52, 49, 131, 24, 52, 58, 59, 0, 1, 52, 618 10, 28, 16, 17, 33, 14, 40, 28, 29, 38,
586 3, 4, 5, 6, 7, 8, 9, 10, 70, 52, 619 39, 69, 70, 34, 87, 28, 74, 75, 32, 77,
587 13, 14, 70, 15, 16, 88, 29, 70, 36, 32, 620 41, 79, 130, 81, 132, 133, 32, 135, 39, 38,
588 33, 28, 85, 86, 27, 28, 28, 70, 101, 0, 621 39, 139, 38, 39, 32, 143, 144, 32, 0, 1,
589 1, 28, 3, 4, 5, 6, 7, 8, 9, 10, 622 32, 3, 4, 5, 6, 7, 8, 9, 10, 11,
590 24, 25, 13, 14, 24, 25, 30, 31, 27, 28, 623 28, 29, 14, 15, 28, 32, 34, 35, 166, 31,
591 30, 35, 24, 25, 117, 35, 27, 28, 4, 5, 624 32, 38, 39, 41, 28, 29, 76, 140, 126, 31,
592 6, 7, 8, 9, 10, 26, 87, 13, 14, 32, 625 32, 0, 1, 32, 3, 4, 5, 6, 7, 8,
593 33, 24, 25, 34, 28, 138, 62, 63, 141, 100, 626 9, 10, 11, 93, 32, 14, 15, 32, 28, 29,
594 28, 27, 28, 5, 6, 28, 8, 9, 10, 28, 627 101, 102, 103, 38, 39, 32, 154, 80, 13, 82,
595 11, 13, 14, 28, 15, 16, 28, 18, 19, 20, 628 83, 84, 31, 32, 4, 5, 6, 7, 8, 9,
596 21, 22, 23, 28, 25, 27, 28, 28, 11, 33, 629 10, 11, 95, 96, 14, 15, 5, 6, 32, 8,
597 28, 28, 15, 16, 17, 18, 19, 90, 91, 92, 630 9, 10, 11, 32, 28, 14, 15, 38, 39, 38,
598 93, 12, 28, 28, 28, 28, 28, 28, 13, 13, 631 39, 31, 32, 54, 32, 14, 57, 56, 59, 58,
599 63, 54 632 12, 32, 31, 32, 16, 17, 39, 19, 20, 21,
633 22, 23, 24, 25, 26, 27, 55, 56, 32, 58,
634 32, 56, 12, 58, 36, 37, 16, 17, 18, 19,
635 20, 21, 56, 23, 58, 32, 32, 32, 32, 32,
636 32, 32, 32, 32, 32, 32, 32, 32, 32, 21,
637 54, 33
600}; 638};
601 639
602/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 640/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
603 symbol of state STATE-NUM. */ 641 symbol of state STATE-NUM. */
604static const unsigned char yystos[] = 642static const unsigned char yystos[] =
605{ 643{
606 0, 37, 0, 1, 3, 4, 5, 6, 7, 8, 644 0, 43, 0, 1, 3, 4, 5, 6, 7, 8,
607 9, 10, 13, 14, 27, 28, 38, 39, 40, 41, 645 9, 10, 11, 14, 15, 31, 32, 44, 45, 46,
608 44, 45, 47, 51, 53, 55, 56, 58, 60, 61, 646 47, 48, 49, 52, 53, 55, 59, 61, 63, 64,
609 62, 63, 71, 71, 24, 25, 69, 69, 69, 69, 647 66, 68, 69, 70, 71, 79, 79, 28, 29, 77,
610 24, 24, 25, 30, 35, 73, 74, 28, 28, 50, 648 77, 77, 32, 77, 28, 28, 28, 29, 34, 41,
611 28, 28, 59, 28, 28, 71, 73, 73, 32, 33, 649 81, 82, 50, 50, 56, 58, 62, 74, 67, 74,
612 26, 34, 42, 48, 5, 8, 14, 39, 46, 70, 650 79, 32, 32, 32, 32, 32, 81, 81, 32, 38,
613 54, 66, 1, 39, 47, 57, 58, 70, 66, 29, 651 39, 30, 40, 12, 16, 17, 19, 20, 21, 22,
614 73, 73, 74, 74, 11, 15, 16, 18, 19, 20, 652 23, 24, 25, 26, 27, 32, 36, 37, 51, 72,
615 21, 22, 23, 25, 28, 43, 64, 65, 67, 17, 653 73, 75, 18, 19, 20, 21, 23, 32, 57, 73,
616 18, 19, 28, 49, 65, 67, 28, 39, 47, 52, 654 75, 5, 8, 15, 45, 54, 78, 45, 55, 60,
617 58, 70, 28, 67, 28, 28, 28, 31, 73, 73, 655 66, 78, 32, 75, 1, 45, 55, 65, 66, 78,
618 69, 74, 68, 69, 68, 68, 68, 68, 28, 12, 656 33, 81, 81, 82, 82, 32, 35, 81, 81, 77,
619 28, 69, 74, 28, 28, 28, 28, 73, 13, 72, 657 81, 76, 77, 81, 76, 81, 76, 76, 76, 28,
620 72, 13, 72, 73, 73 658 82, 13, 32, 77, 28, 76, 76, 79, 79, 79,
659 32, 81, 32, 32, 14, 80, 80, 32, 80, 80,
660 32, 80, 32, 32, 32, 80, 82, 80, 80, 32,
661 32, 32, 81, 32, 32, 32, 32, 32, 80, 32,
662 32, 32
621}; 663};
622 664
623#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) 665#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -638,13 +680,14 @@ static const unsigned char yystos[] =
638 680
639#define yyerrok (yyerrstatus = 0) 681#define yyerrok (yyerrstatus = 0)
640#define yyclearin (yychar = YYEMPTY) 682#define yyclearin (yychar = YYEMPTY)
641#define YYEMPTY -2 683#define YYEMPTY (-2)
642#define YYEOF 0 684#define YYEOF 0
643 685
644#define YYACCEPT goto yyacceptlab 686#define YYACCEPT goto yyacceptlab
645#define YYABORT goto yyabortlab 687#define YYABORT goto yyabortlab
646#define YYERROR goto yyerrlab1 688#define YYERROR goto yyerrlab1
647 689
690
648/* Like YYERROR except do call yyerror. This remains here temporarily 691/* Like YYERROR except do call yyerror. This remains here temporarily
649 to ease the transition to the new meaning of YYERROR, for GCC. 692 to ease the transition to the new meaning of YYERROR, for GCC.
650 Once GCC version 2 has supplanted version 1, this can go. */ 693 Once GCC version 2 has supplanted version 1, this can go. */
@@ -659,13 +702,13 @@ do \
659 { \ 702 { \
660 yychar = (Token); \ 703 yychar = (Token); \
661 yylval = (Value); \ 704 yylval = (Value); \
662 yychar1 = YYTRANSLATE (yychar); \ 705 yytoken = YYTRANSLATE (yychar); \
663 YYPOPSTACK; \ 706 YYPOPSTACK; \
664 goto yybackup; \ 707 goto yybackup; \
665 } \ 708 } \
666 else \ 709 else \
667 { \ 710 { \
668 yyerror ("syntax error: cannot back up"); \ 711 yyerror ("syntax error: cannot back up");\
669 YYERROR; \ 712 YYERROR; \
670 } \ 713 } \
671while (0) 714while (0)
@@ -677,7 +720,7 @@ while (0)
677 are run). */ 720 are run). */
678 721
679#ifndef YYLLOC_DEFAULT 722#ifndef YYLLOC_DEFAULT
680# define YYLLOC_DEFAULT(Current, Rhs, N) \ 723# define YYLLOC_DEFAULT(Current, Rhs, N) \
681 Current.first_line = Rhs[1].first_line; \ 724 Current.first_line = Rhs[1].first_line; \
682 Current.first_column = Rhs[1].first_column; \ 725 Current.first_column = Rhs[1].first_column; \
683 Current.last_line = Rhs[N].last_line; \ 726 Current.last_line = Rhs[N].last_line; \
@@ -686,7 +729,11 @@ while (0)
686 729
687/* YYLEX -- calling `yylex' with the right arguments. */ 730/* YYLEX -- calling `yylex' with the right arguments. */
688 731
689#define YYLEX yylex () 732#ifdef YYLEX_PARAM
733# define YYLEX yylex (YYLEX_PARAM)
734#else
735# define YYLEX yylex ()
736#endif
690 737
691/* Enable debugging if requested. */ 738/* Enable debugging if requested. */
692#if YYDEBUG 739#if YYDEBUG
@@ -701,19 +748,93 @@ do { \
701 if (yydebug) \ 748 if (yydebug) \
702 YYFPRINTF Args; \ 749 YYFPRINTF Args; \
703} while (0) 750} while (0)
751
704# define YYDSYMPRINT(Args) \ 752# define YYDSYMPRINT(Args) \
705do { \ 753do { \
706 if (yydebug) \ 754 if (yydebug) \
707 yysymprint Args; \ 755 yysymprint Args; \
708} while (0) 756} while (0)
757
758# define YYDSYMPRINTF(Title, Token, Value, Location) \
759do { \
760 if (yydebug) \
761 { \
762 YYFPRINTF (stderr, "%s ", Title); \
763 yysymprint (stderr, \
764 Token, Value); \
765 YYFPRINTF (stderr, "\n"); \
766 } \
767} while (0)
768
769/*------------------------------------------------------------------.
770| yy_stack_print -- Print the state stack from its BOTTOM up to its |
771| TOP (cinluded). |
772`------------------------------------------------------------------*/
773
774#if defined (__STDC__) || defined (__cplusplus)
775static void
776yy_stack_print (short *bottom, short *top)
777#else
778static void
779yy_stack_print (bottom, top)
780 short *bottom;
781 short *top;
782#endif
783{
784 YYFPRINTF (stderr, "Stack now");
785 for (/* Nothing. */; bottom <= top; ++bottom)
786 YYFPRINTF (stderr, " %d", *bottom);
787 YYFPRINTF (stderr, "\n");
788}
789
790# define YY_STACK_PRINT(Bottom, Top) \
791do { \
792 if (yydebug) \
793 yy_stack_print ((Bottom), (Top)); \
794} while (0)
795
796
797/*------------------------------------------------.
798| Report that the YYRULE is going to be reduced. |
799`------------------------------------------------*/
800
801#if defined (__STDC__) || defined (__cplusplus)
802static void
803yy_reduce_print (int yyrule)
804#else
805static void
806yy_reduce_print (yyrule)
807 int yyrule;
808#endif
809{
810 int yyi;
811 unsigned int yylineno = yyrline[yyrule];
812 YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
813 yyrule - 1, yylineno);
814 /* Print the symbols being reduced, and their result. */
815 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
816 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
817 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
818}
819
820# define YY_REDUCE_PRINT(Rule) \
821do { \
822 if (yydebug) \
823 yy_reduce_print (Rule); \
824} while (0)
825
709/* Nonzero means print parse trace. It is left uninitialized so that 826/* Nonzero means print parse trace. It is left uninitialized so that
710 multiple parsers can coexist. */ 827 multiple parsers can coexist. */
711int yydebug; 828int yydebug;
712#else /* !YYDEBUG */ 829#else /* !YYDEBUG */
713# define YYDPRINTF(Args) 830# define YYDPRINTF(Args)
714# define YYDSYMPRINT(Args) 831# define YYDSYMPRINT(Args)
832# define YYDSYMPRINTF(Title, Token, Value, Location)
833# define YY_STACK_PRINT(Bottom, Top)
834# define YY_REDUCE_PRINT(Rule)
715#endif /* !YYDEBUG */ 835#endif /* !YYDEBUG */
716 836
837
717/* YYINITDEPTH -- initial size of the parser's stacks. */ 838/* YYINITDEPTH -- initial size of the parser's stacks. */
718#ifndef YYINITDEPTH 839#ifndef YYINITDEPTH
719# define YYINITDEPTH 200 840# define YYINITDEPTH 200
@@ -792,95 +913,85 @@ yystpcpy (yydest, yysrc)
792 913
793 914
794#if YYDEBUG 915#if YYDEBUG
795/*-----------------------------. 916/*--------------------------------.
796| Print this symbol on YYOUT. | 917| Print this symbol on YYOUTPUT. |
797`-----------------------------*/ 918`--------------------------------*/
798 919
799static void
800#if defined (__STDC__) || defined (__cplusplus) 920#if defined (__STDC__) || defined (__cplusplus)
801yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue) 921static void
922yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
802#else 923#else
803yysymprint (yyout, yytype, yyvalue) 924static void
804 FILE* yyout; 925yysymprint (yyoutput, yytype, yyvaluep)
926 FILE *yyoutput;
805 int yytype; 927 int yytype;
806 YYSTYPE yyvalue; 928 YYSTYPE *yyvaluep;
807#endif 929#endif
808{ 930{
809 /* Pacify ``unused variable'' warnings. */ 931 /* Pacify ``unused variable'' warnings. */
810 (void) yyvalue; 932 (void) yyvaluep;
811 933
812 if (yytype < YYNTOKENS) 934 if (yytype < YYNTOKENS)
813 { 935 {
814 YYFPRINTF (yyout, "token %s (", yytname[yytype]); 936 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
815# ifdef YYPRINT 937# ifdef YYPRINT
816 YYPRINT (yyout, yytoknum[yytype], yyvalue); 938 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
817# endif 939# endif
818 } 940 }
819 else 941 else
820 YYFPRINTF (yyout, "nterm %s (", yytname[yytype]); 942 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
821 943
822 switch (yytype) 944 switch (yytype)
823 { 945 {
824 default: 946 default:
825 break; 947 break;
826 } 948 }
827 YYFPRINTF (yyout, ")"); 949 YYFPRINTF (yyoutput, ")");
828} 950}
829#endif /* YYDEBUG. */
830
831 951
952#endif /* ! YYDEBUG */
832/*-----------------------------------------------. 953/*-----------------------------------------------.
833| Release the memory associated to this symbol. | 954| Release the memory associated to this symbol. |
834`-----------------------------------------------*/ 955`-----------------------------------------------*/
835 956
836static void
837#if defined (__STDC__) || defined (__cplusplus) 957#if defined (__STDC__) || defined (__cplusplus)
838yydestruct (int yytype, YYSTYPE yyvalue) 958static void
959yydestruct (int yytype, YYSTYPE *yyvaluep)
839#else 960#else
840yydestruct (yytype, yyvalue) 961static void
962yydestruct (yytype, yyvaluep)
841 int yytype; 963 int yytype;
842 YYSTYPE yyvalue; 964 YYSTYPE *yyvaluep;
843#endif 965#endif
844{ 966{
845 /* Pacify ``unused variable'' warnings. */ 967 /* Pacify ``unused variable'' warnings. */
846 (void) yyvalue; 968 (void) yyvaluep;
847 969
848 switch (yytype) 970 switch (yytype)
849 { 971 {
972
850 default: 973 default:
851 break; 974 break;
852 } 975 }
853} 976}
854
855 977
856 978
857/* The user can define YYPARSE_PARAM as the name of an argument to be passed 979/* Prevent warnings from -Wmissing-prototypes. */
858 into yyparse. The argument should have type void *.
859 It should actually point to an object.
860 Grammar actions can access the variable by casting it
861 to the proper pointer type. */
862 980
863#ifdef YYPARSE_PARAM 981#ifdef YYPARSE_PARAM
864# if defined (__STDC__) || defined (__cplusplus) 982# if defined (__STDC__) || defined (__cplusplus)
865# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM 983int yyparse (void *YYPARSE_PARAM);
866# define YYPARSE_PARAM_DECL
867# else 984# else
868# define YYPARSE_PARAM_ARG YYPARSE_PARAM 985int yyparse ();
869# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
870# endif 986# endif
871#else /* !YYPARSE_PARAM */ 987#else /* ! YYPARSE_PARAM */
872# define YYPARSE_PARAM_ARG 988#if defined (__STDC__) || defined (__cplusplus)
873# define YYPARSE_PARAM_DECL
874#endif /* !YYPARSE_PARAM */
875
876/* Prevent warning if -Wstrict-prototypes. */
877#ifdef __GNUC__
878# ifdef YYPARSE_PARAM
879int yyparse (void *);
880# else
881int yyparse (void); 989int yyparse (void);
882# endif 990#else
991int yyparse ();
883#endif 992#endif
993#endif /* ! YYPARSE_PARAM */
994
884 995
885 996
886/* The lookahead symbol. */ 997/* The lookahead symbol. */
@@ -889,13 +1000,32 @@ int yychar;
889/* The semantic value of the lookahead symbol. */ 1000/* The semantic value of the lookahead symbol. */
890YYSTYPE yylval; 1001YYSTYPE yylval;
891 1002
892/* Number of parse errors so far. */ 1003/* Number of syntax errors so far. */
893int yynerrs; 1004int yynerrs;
894 1005
895 1006
1007
1008/*----------.
1009| yyparse. |
1010`----------*/
1011
1012#ifdef YYPARSE_PARAM
1013# if defined (__STDC__) || defined (__cplusplus)
1014int yyparse (void *YYPARSE_PARAM)
1015# else
1016int yyparse (YYPARSE_PARAM)
1017 void *YYPARSE_PARAM;
1018# endif
1019#else /* ! YYPARSE_PARAM */
1020#if defined (__STDC__) || defined (__cplusplus)
896int 1021int
897yyparse (YYPARSE_PARAM_ARG) 1022yyparse (void)
898 YYPARSE_PARAM_DECL 1023#else
1024int
1025yyparse ()
1026
1027#endif
1028#endif
899{ 1029{
900 1030
901 register int yystate; 1031 register int yystate;
@@ -904,7 +1034,7 @@ yyparse (YYPARSE_PARAM_ARG)
904 /* Number of tokens to shift before error messages enabled. */ 1034 /* Number of tokens to shift before error messages enabled. */
905 int yyerrstatus; 1035 int yyerrstatus;
906 /* Lookahead token as an internal (translated) token number. */ 1036 /* Lookahead token as an internal (translated) token number. */
907 int yychar1 = 0; 1037 int yytoken = 0;
908 1038
909 /* Three stacks and their tools: 1039 /* Three stacks and their tools:
910 `yyss': related to states, 1040 `yyss': related to states,
@@ -968,7 +1098,7 @@ yyparse (YYPARSE_PARAM_ARG)
968 yysetstate: 1098 yysetstate:
969 *yyssp = yystate; 1099 *yyssp = yystate;
970 1100
971 if (yyssp >= yyss + yystacksize - 1) 1101 if (yyss + yystacksize - 1 <= yyssp)
972 { 1102 {
973 /* Get the current used size of the three stacks, in elements. */ 1103 /* Get the current used size of the three stacks, in elements. */
974 YYSIZE_T yysize = yyssp - yyss + 1; 1104 YYSIZE_T yysize = yyssp - yyss + 1;
@@ -1000,10 +1130,10 @@ yyparse (YYPARSE_PARAM_ARG)
1000 goto yyoverflowlab; 1130 goto yyoverflowlab;
1001# else 1131# else
1002 /* Extend the stack our own way. */ 1132 /* Extend the stack our own way. */
1003 if (yystacksize >= YYMAXDEPTH) 1133 if (YYMAXDEPTH <= yystacksize)
1004 goto yyoverflowlab; 1134 goto yyoverflowlab;
1005 yystacksize *= 2; 1135 yystacksize *= 2;
1006 if (yystacksize > YYMAXDEPTH) 1136 if (YYMAXDEPTH < yystacksize)
1007 yystacksize = YYMAXDEPTH; 1137 yystacksize = YYMAXDEPTH;
1008 1138
1009 { 1139 {
@@ -1029,7 +1159,7 @@ yyparse (YYPARSE_PARAM_ARG)
1029 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 1159 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1030 (unsigned long int) yystacksize)); 1160 (unsigned long int) yystacksize));
1031 1161
1032 if (yyssp >= yyss + yystacksize - 1) 1162 if (yyss + yystacksize - 1 <= yyssp)
1033 YYABORT; 1163 YYABORT;
1034 } 1164 }
1035 1165
@@ -1054,39 +1184,28 @@ yybackup:
1054 1184
1055 /* Not known => get a lookahead token if don't already have one. */ 1185 /* Not known => get a lookahead token if don't already have one. */
1056 1186
1057 /* yychar is either YYEMPTY or YYEOF 1187 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1058 or a valid token in external form. */
1059
1060 if (yychar == YYEMPTY) 1188 if (yychar == YYEMPTY)
1061 { 1189 {
1062 YYDPRINTF ((stderr, "Reading a token: ")); 1190 YYDPRINTF ((stderr, "Reading a token: "));
1063 yychar = YYLEX; 1191 yychar = YYLEX;
1064 } 1192 }
1065 1193
1066 /* Convert token to internal form (in yychar1) for indexing tables with. */ 1194 if (yychar <= YYEOF)
1067
1068 if (yychar <= 0) /* This means end of input. */
1069 { 1195 {
1070 yychar1 = 0; 1196 yychar = yytoken = YYEOF;
1071 yychar = YYEOF; /* Don't call YYLEX any more. */
1072
1073 YYDPRINTF ((stderr, "Now at end of input.\n")); 1197 YYDPRINTF ((stderr, "Now at end of input.\n"));
1074 } 1198 }
1075 else 1199 else
1076 { 1200 {
1077 yychar1 = YYTRANSLATE (yychar); 1201 yytoken = YYTRANSLATE (yychar);
1078 1202 YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1079 /* We have to keep this `#if YYDEBUG', since we use variables
1080 which are defined only if `YYDEBUG' is set. */
1081 YYDPRINTF ((stderr, "Next token is "));
1082 YYDSYMPRINT ((stderr, yychar1, yylval));
1083 YYDPRINTF ((stderr, "\n"));
1084 } 1203 }
1085 1204
1086 /* If the proper action on seeing token YYCHAR1 is to reduce or to 1205 /* If the proper action on seeing token YYTOKEN is to reduce or to
1087 detect an error, take that action. */ 1206 detect an error, take that action. */
1088 yyn += yychar1; 1207 yyn += yytoken;
1089 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1) 1208 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1090 goto yydefault; 1209 goto yydefault;
1091 yyn = yytable[yyn]; 1210 yyn = yytable[yyn];
1092 if (yyn <= 0) 1211 if (yyn <= 0)
@@ -1101,8 +1220,7 @@ yybackup:
1101 YYACCEPT; 1220 YYACCEPT;
1102 1221
1103 /* Shift the lookahead token. */ 1222 /* Shift the lookahead token. */
1104 YYDPRINTF ((stderr, "Shifting token %d (%s), ", 1223 YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1105 yychar, yytname[yychar1]));
1106 1224
1107 /* Discard the token being shifted unless it is eof. */ 1225 /* Discard the token being shifted unless it is eof. */
1108 if (yychar != YYEOF) 1226 if (yychar != YYEOF)
@@ -1148,435 +1266,463 @@ yyreduce:
1148 yyval = yyvsp[1-yylen]; 1266 yyval = yyvsp[1-yylen];
1149 1267
1150 1268
1151 1269 YY_REDUCE_PRINT (yyn);
1152#if YYDEBUG
1153 /* We have to keep this `#if YYDEBUG', since we use variables which
1154 are defined only if `YYDEBUG' is set. */
1155 if (yydebug)
1156 {
1157 int yyi;
1158
1159 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
1160 yyn - 1, yyrline[yyn]);
1161
1162 /* Print the symbols being reduced, and their result. */
1163 for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
1164 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1165 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1166 }
1167#endif
1168 switch (yyn) 1270 switch (yyn)
1169 { 1271 {
1170 case 8: 1272 case 8:
1171#line 96 "zconf.y" 1273
1172 { zconfprint("unexpected 'endmenu' statement"); } 1274 { zconfprint("unexpected 'endmenu' statement"); ;}
1173 break; 1275 break;
1174 1276
1175 case 9: 1277 case 9:
1176#line 97 "zconf.y" 1278
1177 { zconfprint("unexpected 'endif' statement"); } 1279 { zconfprint("unexpected 'endif' statement"); ;}
1178 break; 1280 break;
1179 1281
1180 case 10: 1282 case 10:
1181#line 98 "zconf.y" 1283
1182 { zconfprint("unexpected 'endchoice' statement"); } 1284 { zconfprint("unexpected 'endchoice' statement"); ;}
1183 break; 1285 break;
1184 1286
1185 case 11: 1287 case 11:
1186#line 99 "zconf.y" 1288
1187 { zconfprint("syntax error"); yyerrok; } 1289 { zconfprint("syntax error"); yyerrok; ;}
1188 break; 1290 break;
1189 1291
1190 case 17: 1292 case 18:
1191#line 114 "zconf.y" 1293
1192 { 1294 {
1193 struct symbol *sym = sym_lookup(yyvsp[0].string, 0); 1295 struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
1194 sym->flags |= SYMBOL_OPTIONAL; 1296 sym->flags |= SYMBOL_OPTIONAL;
1195 menu_add_entry(sym); 1297 menu_add_entry(sym);
1196 printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[0].string); 1298 printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
1197} 1299;}
1198 break; 1300 break;
1199 1301
1200 case 18: 1302 case 19:
1201#line 122 "zconf.y" 1303
1202 { 1304 {
1203 menu_end_entry(); 1305 menu_end_entry();
1204 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); 1306 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1205} 1307;}
1308 break;
1309
1310 case 20:
1311
1312 {
1313 struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
1314 sym->flags |= SYMBOL_OPTIONAL;
1315 menu_add_entry(sym);
1316 printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
1317;}
1206 break; 1318 break;
1207 1319
1208 case 23: 1320 case 21:
1209#line 133 "zconf.y" 1321
1210 { } 1322 {
1323 if (current_entry->prompt)
1324 current_entry->prompt->type = P_MENU;
1325 else
1326 zconfprint("warning: menuconfig statement without prompt");
1327 menu_end_entry();
1328 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
1329;}
1211 break; 1330 break;
1212 1331
1213 case 24: 1332 case 27:
1214#line 136 "zconf.y" 1333
1215 { 1334 {
1216 menu_set_type(S_TRISTATE); 1335 menu_set_type(S_TRISTATE);
1217 printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); 1336 printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
1218} 1337;}
1338 break;
1339
1340 case 28:
1341
1342 {
1343 menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
1344 menu_set_type(S_TRISTATE);
1345 printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
1346;}
1219 break; 1347 break;
1220 1348
1221 case 25: 1349 case 29:
1222#line 142 "zconf.y" 1350
1223 { 1351 {
1224 menu_set_type(S_BOOLEAN); 1352 menu_set_type(S_BOOLEAN);
1225 printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); 1353 printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
1226} 1354;}
1227 break; 1355 break;
1228 1356
1229 case 26: 1357 case 30:
1230#line 148 "zconf.y" 1358
1359 {
1360 menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
1361 menu_set_type(S_BOOLEAN);
1362 printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
1363;}
1364 break;
1365
1366 case 31:
1367
1231 { 1368 {
1232 menu_set_type(S_INT); 1369 menu_set_type(S_INT);
1233 printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno()); 1370 printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
1234} 1371;}
1235 break; 1372 break;
1236 1373
1237 case 27: 1374 case 32:
1238#line 154 "zconf.y" 1375
1239 { 1376 {
1240 menu_set_type(S_HEX); 1377 menu_set_type(S_HEX);
1241 printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno()); 1378 printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
1242} 1379;}
1243 break; 1380 break;
1244 1381
1245 case 28: 1382 case 33:
1246#line 160 "zconf.y" 1383
1247 { 1384 {
1248 menu_set_type(S_STRING); 1385 menu_set_type(S_STRING);
1249 printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno()); 1386 printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
1250} 1387;}
1251 break; 1388 break;
1252 1389
1253 case 29: 1390 case 34:
1254#line 166 "zconf.y" 1391
1255 { 1392 {
1256 menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr); 1393 menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
1257 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); 1394 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1258} 1395;}
1259 break; 1396 break;
1260 1397
1261 case 30: 1398 case 35:
1262#line 172 "zconf.y" 1399
1263 { 1400 {
1264 menu_add_prop(P_DEFAULT, NULL, yyvsp[-1].symbol, yyvsp[0].expr); 1401 menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
1265 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); 1402 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
1266} 1403;}
1267 break; 1404 break;
1268 1405
1269 case 31: 1406 case 36:
1270#line 180 "zconf.y" 1407
1408 {
1409 menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
1410 printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
1411;}
1412 break;
1413
1414 case 37:
1415
1416 {
1417 menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr);
1418 printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
1419;}
1420 break;
1421
1422 case 38:
1423
1271 { 1424 {
1272 struct symbol *sym = sym_lookup(NULL, 0); 1425 struct symbol *sym = sym_lookup(NULL, 0);
1273 sym->flags |= SYMBOL_CHOICE; 1426 sym->flags |= SYMBOL_CHOICE;
1274 menu_add_entry(sym); 1427 menu_add_entry(sym);
1275 menu_add_prop(P_CHOICE, NULL, NULL, NULL); 1428 menu_add_expr(P_CHOICE, NULL, NULL);
1276 printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); 1429 printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
1277} 1430;}
1278 break; 1431 break;
1279 1432
1280 case 32: 1433 case 39:
1281#line 189 "zconf.y" 1434
1282 { 1435 {
1283 menu_end_entry(); 1436 menu_end_entry();
1284 menu_add_menu(); 1437 menu_add_menu();
1285} 1438;}
1286 break; 1439 break;
1287 1440
1288 case 33: 1441 case 40:
1289#line 195 "zconf.y" 1442
1290 { 1443 {
1291 if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) { 1444 if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) {
1292 menu_end_menu(); 1445 menu_end_menu();
1293 printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno()); 1446 printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
1294 } 1447 }
1295} 1448;}
1296 break; 1449 break;
1297 1450
1298 case 35: 1451 case 42:
1299#line 205 "zconf.y" 1452
1300 { 1453 {
1301 printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno); 1454 printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
1302 zconfnerrs++; 1455 zconfnerrs++;
1303} 1456;}
1304 break; 1457 break;
1305 1458
1306 case 41: 1459 case 48:
1307#line 219 "zconf.y" 1460
1308 { 1461 {
1309 menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr); 1462 menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
1310 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); 1463 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
1311} 1464;}
1312 break; 1465 break;
1313 1466
1314 case 42: 1467 case 49:
1315#line 225 "zconf.y" 1468
1469 {
1470 menu_set_type(S_TRISTATE);
1471 printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
1472;}
1473 break;
1474
1475 case 50:
1476
1477 {
1478 menu_set_type(S_BOOLEAN);
1479 printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
1480;}
1481 break;
1482
1483 case 51:
1484
1316 { 1485 {
1317 current_entry->sym->flags |= SYMBOL_OPTIONAL; 1486 current_entry->sym->flags |= SYMBOL_OPTIONAL;
1318 printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); 1487 printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
1319} 1488;}
1320 break; 1489 break;
1321 1490
1322 case 43: 1491 case 52:
1323#line 231 "zconf.y" 1492
1324 { 1493 {
1325 menu_add_prop(P_DEFAULT, NULL, yyvsp[0].symbol, NULL); 1494 menu_add_symbol(P_DEFAULT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
1326 //current_choice->prop->def = ;
1327 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); 1495 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
1328} 1496;}
1329 break; 1497 break;
1330 1498
1331 case 46: 1499 case 55:
1332#line 245 "zconf.y" 1500
1333 { 1501 {
1334 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); 1502 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
1335 menu_add_entry(NULL); 1503 menu_add_entry(NULL);
1336 //current_entry->prompt = menu_add_prop(T_IF, NULL, NULL, ); 1504 menu_add_dep(yyvsp[-1].expr);
1337 menu_add_dep(yyvsp[0].expr);
1338 menu_end_entry(); 1505 menu_end_entry();
1339 menu_add_menu(); 1506 menu_add_menu();
1340} 1507;}
1341 break; 1508 break;
1342 1509
1343 case 47: 1510 case 56:
1344#line 255 "zconf.y" 1511
1345 { 1512 {
1346 if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) { 1513 if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) {
1347 menu_end_menu(); 1514 menu_end_menu();
1348 printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno()); 1515 printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
1349 } 1516 }
1350} 1517;}
1351 break; 1518 break;
1352 1519
1353 case 49: 1520 case 58:
1354#line 265 "zconf.y" 1521
1355 { 1522 {
1356 printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno); 1523 printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
1357 zconfnerrs++; 1524 zconfnerrs++;
1358} 1525;}
1359 break; 1526 break;
1360 1527
1361 case 54: 1528 case 63:
1362#line 280 "zconf.y" 1529
1363 { 1530 {
1364 menu_add_entry(NULL); 1531 menu_add_entry(NULL);
1365 menu_add_prop(P_MENU, yyvsp[0].string, NULL, NULL); 1532 menu_add_prop(P_MENU, yyvsp[-1].string, NULL, NULL);
1366 printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); 1533 printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
1367} 1534;}
1368 break; 1535 break;
1369 1536
1370 case 55: 1537 case 64:
1371#line 287 "zconf.y" 1538
1372 { 1539 {
1373 menu_end_entry(); 1540 menu_end_entry();
1374 menu_add_menu(); 1541 menu_add_menu();
1375} 1542;}
1376 break; 1543 break;
1377 1544
1378 case 56: 1545 case 65:
1379#line 293 "zconf.y" 1546
1380 { 1547 {
1381 if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) { 1548 if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) {
1382 menu_end_menu(); 1549 menu_end_menu();
1383 printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno()); 1550 printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
1384 } 1551 }
1385} 1552;}
1386 break; 1553 break;
1387 1554
1388 case 58: 1555 case 67:
1389#line 303 "zconf.y" 1556
1390 { 1557 {
1391 printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno); 1558 printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
1392 zconfnerrs++; 1559 zconfnerrs++;
1393} 1560;}
1394 break; 1561 break;
1395 1562
1396 case 63: 1563 case 72:
1397#line 313 "zconf.y" 1564
1398 { zconfprint("invalid menu option"); yyerrok; } 1565 { zconfprint("invalid menu option"); yyerrok; ;}
1399 break; 1566 break;
1400 1567
1401 case 64: 1568 case 73:
1402#line 317 "zconf.y" 1569
1403 { 1570 {
1404 yyval.string = yyvsp[0].string; 1571 yyval.string = yyvsp[-1].string;
1405 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[0].string); 1572 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
1406} 1573;}
1407 break; 1574 break;
1408 1575
1409 case 65: 1576 case 74:
1410#line 323 "zconf.y" 1577
1411 { 1578 {
1412 zconf_nextfile(yyvsp[-1].string); 1579 zconf_nextfile(yyvsp[0].string);
1413} 1580;}
1414 break; 1581 break;
1415 1582
1416 case 66: 1583 case 75:
1417#line 330 "zconf.y" 1584
1418 { 1585 {
1419 menu_add_entry(NULL); 1586 menu_add_entry(NULL);
1420 menu_add_prop(P_COMMENT, yyvsp[0].string, NULL, NULL); 1587 menu_add_prop(P_COMMENT, yyvsp[-1].string, NULL, NULL);
1421 printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); 1588 printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
1422} 1589;}
1423 break; 1590 break;
1424 1591
1425 case 67: 1592 case 76:
1426#line 337 "zconf.y" 1593
1427 { 1594 {
1428 menu_end_entry(); 1595 menu_end_entry();
1429} 1596;}
1430 break; 1597 break;
1431 1598
1432 case 68: 1599 case 77:
1433#line 344 "zconf.y" 1600
1434 { 1601 {
1435 printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); 1602 printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
1436 zconf_starthelp(); 1603 zconf_starthelp();
1437} 1604;}
1438 break; 1605 break;
1439 1606
1440 case 69: 1607 case 78:
1441#line 350 "zconf.y" 1608
1442 { 1609 {
1443 current_entry->sym->help = yyvsp[0].string; 1610 current_entry->sym->help = yyvsp[0].string;
1444} 1611;}
1445 break; 1612 break;
1446 1613
1447 case 72: 1614 case 82:
1448#line 359 "zconf.y"
1449 { }
1450 break;
1451 1615
1452 case 73:
1453#line 362 "zconf.y"
1454 { 1616 {
1455 menu_add_dep(yyvsp[0].expr); 1617 menu_add_dep(yyvsp[-1].expr);
1456 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); 1618 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
1457} 1619;}
1458 break; 1620 break;
1459 1621
1460 case 74: 1622 case 83:
1461#line 367 "zconf.y" 1623
1462 { 1624 {
1463 menu_add_dep(yyvsp[0].expr); 1625 menu_add_dep(yyvsp[-1].expr);
1464 printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno()); 1626 printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
1465} 1627;}
1466 break; 1628 break;
1467 1629
1468 case 75: 1630 case 84:
1469#line 372 "zconf.y" 1631
1470 { 1632 {
1471 menu_add_dep(yyvsp[0].expr); 1633 menu_add_dep(yyvsp[-1].expr);
1472 printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno()); 1634 printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
1473} 1635;}
1474 break; 1636 break;
1475 1637
1476 case 77: 1638 case 86:
1477#line 382 "zconf.y"
1478 {
1479 menu_add_prop(P_PROMPT, yyvsp[0].string, NULL, NULL);
1480}
1481 break;
1482 1639
1483 case 78:
1484#line 386 "zconf.y"
1485 { 1640 {
1486 menu_add_prop(P_PROMPT, yyvsp[-2].string, NULL, yyvsp[0].expr); 1641 menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
1487} 1642;}
1488 break; 1643 break;
1489 1644
1490 case 81: 1645 case 89:
1491#line 394 "zconf.y" 1646
1492 { yyval.token = T_ENDMENU; } 1647 { yyval.token = T_ENDMENU; ;}
1493 break; 1648 break;
1494 1649
1495 case 82: 1650 case 90:
1496#line 395 "zconf.y" 1651
1497 { yyval.token = T_ENDCHOICE; } 1652 { yyval.token = T_ENDCHOICE; ;}
1498 break; 1653 break;
1499 1654
1500 case 83: 1655 case 91:
1501#line 396 "zconf.y" 1656
1502 { yyval.token = T_ENDIF; } 1657 { yyval.token = T_ENDIF; ;}
1503 break; 1658 break;
1504 1659
1505 case 86: 1660 case 94:
1506#line 402 "zconf.y" 1661
1507 { yyval.expr = NULL; } 1662 { yyval.expr = NULL; ;}
1508 break; 1663 break;
1509 1664
1510 case 87: 1665 case 95:
1511#line 403 "zconf.y" 1666
1512 { yyval.expr = yyvsp[0].expr; } 1667 { yyval.expr = yyvsp[0].expr; ;}
1513 break; 1668 break;
1514 1669
1515 case 88: 1670 case 96:
1516#line 406 "zconf.y" 1671
1517 { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); } 1672 { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;}
1518 break; 1673 break;
1519 1674
1520 case 89: 1675 case 97:
1521#line 407 "zconf.y" 1676
1522 { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); } 1677 { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
1523 break; 1678 break;
1524 1679
1525 case 90: 1680 case 98:
1526#line 408 "zconf.y" 1681
1527 { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); } 1682 { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
1528 break; 1683 break;
1529 1684
1530 case 91: 1685 case 99:
1531#line 409 "zconf.y" 1686
1532 { yyval.expr = yyvsp[-1].expr; } 1687 { yyval.expr = yyvsp[-1].expr; ;}
1533 break; 1688 break;
1534 1689
1535 case 92: 1690 case 100:
1536#line 410 "zconf.y" 1691
1537 { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); } 1692 { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;}
1538 break; 1693 break;
1539 1694
1540 case 93: 1695 case 101:
1541#line 411 "zconf.y" 1696
1542 { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); } 1697 { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;}
1543 break; 1698 break;
1544 1699
1545 case 94: 1700 case 102:
1546#line 412 "zconf.y" 1701
1547 { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); } 1702 { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;}
1548 break; 1703 break;
1549 1704
1550 case 95: 1705 case 103:
1551#line 415 "zconf.y" 1706
1552 { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); } 1707 { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;}
1553 break; 1708 break;
1554 1709
1555 case 96: 1710 case 104:
1556#line 416 "zconf.y" 1711
1557 { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); } 1712 { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;}
1558 break; 1713 break;
1559 1714
1560 1715
1561 } 1716 }
1562 1717
1563/* Line 1016 of /usr/share/bison/yacc.c. */ 1718/* Line 999 of yacc.c. */
1564#line 1565 "zconf.tab.c" 1719
1565 1720
1566 yyvsp -= yylen; 1721 yyvsp -= yylen;
1567 yyssp -= yylen; 1722 yyssp -= yylen;
1568 1723
1569 1724
1570#if YYDEBUG 1725 YY_STACK_PRINT (yyss, yyssp);
1571 if (yydebug)
1572 {
1573 short *yyssp1 = yyss - 1;
1574 YYFPRINTF (stderr, "state stack now");
1575 while (yyssp1 != yyssp)
1576 YYFPRINTF (stderr, " %d", *++yyssp1);
1577 YYFPRINTF (stderr, "\n");
1578 }
1579#endif
1580 1726
1581 *++yyvsp = yyval; 1727 *++yyvsp = yyval;
1582 1728
@@ -1621,12 +1767,12 @@ yyerrlab:
1621 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) 1767 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
1622 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 1768 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1623 yysize += yystrlen (yytname[yyx]) + 15, yycount++; 1769 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
1624 yysize += yystrlen ("parse error, unexpected ") + 1; 1770 yysize += yystrlen ("syntax error, unexpected ") + 1;
1625 yysize += yystrlen (yytname[yytype]); 1771 yysize += yystrlen (yytname[yytype]);
1626 yymsg = (char *) YYSTACK_ALLOC (yysize); 1772 yymsg = (char *) YYSTACK_ALLOC (yysize);
1627 if (yymsg != 0) 1773 if (yymsg != 0)
1628 { 1774 {
1629 char *yyp = yystpcpy (yymsg, "parse error, unexpected "); 1775 char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
1630 yyp = yystpcpy (yyp, yytname[yytype]); 1776 yyp = yystpcpy (yyp, yytname[yytype]);
1631 1777
1632 if (yycount < 5) 1778 if (yycount < 5)
@@ -1647,19 +1793,15 @@ yyerrlab:
1647 YYSTACK_FREE (yymsg); 1793 YYSTACK_FREE (yymsg);
1648 } 1794 }
1649 else 1795 else
1650 yyerror ("parse error; also virtual memory exhausted"); 1796 yyerror ("syntax error; also virtual memory exhausted");
1651 } 1797 }
1652 else 1798 else
1653#endif /* YYERROR_VERBOSE */ 1799#endif /* YYERROR_VERBOSE */
1654 yyerror ("parse error"); 1800 yyerror ("syntax error");
1655 } 1801 }
1656 goto yyerrlab1;
1657 1802
1658 1803
1659/*----------------------------------------------------. 1804
1660| yyerrlab1 -- error raised explicitly by an action. |
1661`----------------------------------------------------*/
1662yyerrlab1:
1663 if (yyerrstatus == 3) 1805 if (yyerrstatus == 3)
1664 { 1806 {
1665 /* If just tried and failed to reuse lookahead token after an 1807 /* If just tried and failed to reuse lookahead token after an
@@ -1671,28 +1813,30 @@ yyerrlab1:
1671 /* Pop the error token. */ 1813 /* Pop the error token. */
1672 YYPOPSTACK; 1814 YYPOPSTACK;
1673 /* Pop the rest of the stack. */ 1815 /* Pop the rest of the stack. */
1674 while (yyssp > yyss) 1816 while (yyss < yyssp)
1675 { 1817 {
1676 YYDPRINTF ((stderr, "Error: popping ")); 1818 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
1677 YYDSYMPRINT ((stderr, 1819 yydestruct (yystos[*yyssp], yyvsp);
1678 yystos[*yyssp],
1679 *yyvsp));
1680 YYDPRINTF ((stderr, "\n"));
1681 yydestruct (yystos[*yyssp], *yyvsp);
1682 YYPOPSTACK; 1820 YYPOPSTACK;
1683 } 1821 }
1684 YYABORT; 1822 YYABORT;
1685 } 1823 }
1686 1824
1687 YYDPRINTF ((stderr, "Discarding token %d (%s).\n", 1825 YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
1688 yychar, yytname[yychar1])); 1826 yydestruct (yytoken, &yylval);
1689 yydestruct (yychar1, yylval);
1690 yychar = YYEMPTY; 1827 yychar = YYEMPTY;
1828
1691 } 1829 }
1692 1830
1693 /* Else will try to reuse lookahead token after shifting the error 1831 /* Else will try to reuse lookahead token after shifting the error
1694 token. */ 1832 token. */
1833 goto yyerrlab1;
1695 1834
1835
1836/*----------------------------------------------------.
1837| yyerrlab1 -- error raised explicitly by an action. |
1838`----------------------------------------------------*/
1839yyerrlab1:
1696 yyerrstatus = 3; /* Each real token shifted decrements this. */ 1840 yyerrstatus = 3; /* Each real token shifted decrements this. */
1697 1841
1698 for (;;) 1842 for (;;)
@@ -1713,26 +1857,12 @@ yyerrlab1:
1713 if (yyssp == yyss) 1857 if (yyssp == yyss)
1714 YYABORT; 1858 YYABORT;
1715 1859
1716 YYDPRINTF ((stderr, "Error: popping ")); 1860 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
1717 YYDSYMPRINT ((stderr, 1861 yydestruct (yystos[yystate], yyvsp);
1718 yystos[*yyssp], *yyvsp));
1719 YYDPRINTF ((stderr, "\n"));
1720
1721 yydestruct (yystos[yystate], *yyvsp);
1722 yyvsp--; 1862 yyvsp--;
1723 yystate = *--yyssp; 1863 yystate = *--yyssp;
1724 1864
1725 1865 YY_STACK_PRINT (yyss, yyssp);
1726#if YYDEBUG
1727 if (yydebug)
1728 {
1729 short *yyssp1 = yyss - 1;
1730 YYFPRINTF (stderr, "Error: state stack now");
1731 while (yyssp1 != yyssp)
1732 YYFPRINTF (stderr, " %d", *++yyssp1);
1733 YYFPRINTF (stderr, "\n");
1734 }
1735#endif
1736 } 1866 }
1737 1867
1738 if (yyn == YYFINAL) 1868 if (yyn == YYFINAL)
@@ -1780,24 +1910,32 @@ yyreturn:
1780} 1910}
1781 1911
1782 1912
1783#line 419 "zconf.y" 1913
1784 1914
1785 1915
1786void conf_parse(const char *name) 1916void conf_parse(const char *name)
1787{ 1917{
1918 struct symbol *sym;
1919 int i;
1920
1788 zconf_initscan(name); 1921 zconf_initscan(name);
1789 1922
1790 sym_init(); 1923 sym_init();
1791 menu_init(); 1924 menu_init();
1792 rootmenu.prompt = menu_add_prop(P_MENU, "BusyBox Configuration", NULL, NULL); 1925 modules_sym = sym_lookup("MODULES", 0);
1926 rootmenu.prompt = menu_add_prop(P_MENU, "Linux Kernel Configuration", NULL, NULL);
1793 1927
1794 //zconfdebug = 1; 1928 //zconfdebug = 1;
1795 zconfparse(); 1929 zconfparse();
1796 if (zconfnerrs) 1930 if (zconfnerrs)
1797 exit(1); 1931 exit(1);
1798 menu_finalize(&rootmenu); 1932 menu_finalize(&rootmenu);
1799 1933 for_all_symbols(i, sym) {
1800 modules_sym = sym_lookup("MODULES", 0); 1934 if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
1935 printf("\n");
1936 else
1937 sym->flags |= SYMBOL_CHECK_DONE;
1938 }
1801 1939
1802 sym_change_count = 1; 1940 sym_change_count = 1;
1803} 1941}
@@ -1813,7 +1951,7 @@ const char *zconf_tokenname(int token)
1813 case T_ENDIF: return "endif"; 1951 case T_ENDIF: return "endif";
1814 } 1952 }
1815 return "<token>"; 1953 return "<token>";
1816} 1954}
1817 1955
1818static bool zconf_endtoken(int token, int starttoken, int endtoken) 1956static bool zconf_endtoken(int token, int starttoken, int endtoken)
1819{ 1957{
@@ -1835,7 +1973,7 @@ static void zconfprint(const char *err, ...)
1835{ 1973{
1836 va_list ap; 1974 va_list ap;
1837 1975
1838 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); 1976 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
1839 va_start(ap, err); 1977 va_start(ap, err);
1840 vfprintf(stderr, err, ap); 1978 vfprintf(stderr, err, ap);
1841 va_end(ap); 1979 va_end(ap);
@@ -1844,7 +1982,7 @@ static void zconfprint(const char *err, ...)
1844 1982
1845static void zconferror(const char *err) 1983static void zconferror(const char *err)
1846{ 1984{
1847 fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno(), err); 1985 fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
1848} 1986}
1849 1987
1850void print_quoted_string(FILE *out, const char *str) 1988void print_quoted_string(FILE *out, const char *str)
@@ -1869,8 +2007,6 @@ void print_symbol(FILE *out, struct menu *menu)
1869 struct symbol *sym = menu->sym; 2007 struct symbol *sym = menu->sym;
1870 struct property *prop; 2008 struct property *prop;
1871 2009
1872 //sym->flags |= SYMBOL_PRINTED;
1873
1874 if (sym_is_choice(sym)) 2010 if (sym_is_choice(sym))
1875 fprintf(out, "choice\n"); 2011 fprintf(out, "choice\n");
1876 else 2012 else
@@ -1895,13 +2031,6 @@ void print_symbol(FILE *out, struct menu *menu)
1895 fputs(" ???\n", out); 2031 fputs(" ???\n", out);
1896 break; 2032 break;
1897 } 2033 }
1898#if 0
1899 if (!expr_is_yes(sym->dep)) {
1900 fputs(" depends ", out);
1901 expr_fprint(sym->dep, out);
1902 fputc('\n', out);
1903 }
1904#endif
1905 for (prop = sym->prop; prop; prop = prop->next) { 2034 for (prop = sym->prop; prop; prop = prop->next) {
1906 if (prop->menu != menu) 2035 if (prop->menu != menu)
1907 continue; 2036 continue;
@@ -1909,25 +2038,18 @@ void print_symbol(FILE *out, struct menu *menu)
1909 case P_PROMPT: 2038 case P_PROMPT:
1910 fputs(" prompt ", out); 2039 fputs(" prompt ", out);
1911 print_quoted_string(out, prop->text); 2040 print_quoted_string(out, prop->text);
1912 if (prop->def) { 2041 if (!expr_is_yes(prop->visible.expr)) {
1913 fputc(' ', out);
1914 if (prop->def->flags & SYMBOL_CONST)
1915 print_quoted_string(out, prop->def->name);
1916 else
1917 fputs(prop->def->name, out);
1918 }
1919 if (!expr_is_yes(E_EXPR(prop->visible))) {
1920 fputs(" if ", out); 2042 fputs(" if ", out);
1921 expr_fprint(E_EXPR(prop->visible), out); 2043 expr_fprint(prop->visible.expr, out);
1922 } 2044 }
1923 fputc('\n', out); 2045 fputc('\n', out);
1924 break; 2046 break;
1925 case P_DEFAULT: 2047 case P_DEFAULT:
1926 fputs( " default ", out); 2048 fputs( " default ", out);
1927 print_quoted_string(out, prop->def->name); 2049 expr_fprint(prop->expr, out);
1928 if (!expr_is_yes(E_EXPR(prop->visible))) { 2050 if (!expr_is_yes(prop->visible.expr)) {
1929 fputs(" if ", out); 2051 fputs(" if ", out);
1930 expr_fprint(E_EXPR(prop->visible), out); 2052 expr_fprint(prop->visible.expr, out);
1931 } 2053 }
1932 fputc('\n', out); 2054 fputc('\n', out);
1933 break; 2055 break;
@@ -1950,7 +2072,6 @@ void print_symbol(FILE *out, struct menu *menu)
1950 2072
1951void zconfdump(FILE *out) 2073void zconfdump(FILE *out)
1952{ 2074{
1953 //struct file *file;
1954 struct property *prop; 2075 struct property *prop;
1955 struct symbol *sym; 2076 struct symbol *sym;
1956 struct menu *menu; 2077 struct menu *menu;
@@ -1961,11 +2082,6 @@ void zconfdump(FILE *out)
1961 print_symbol(out, menu); 2082 print_symbol(out, menu);
1962 else if ((prop = menu->prompt)) { 2083 else if ((prop = menu->prompt)) {
1963 switch (prop->type) { 2084 switch (prop->type) {
1964 //case T_MAINMENU:
1965 // fputs("\nmainmenu ", out);
1966 // print_quoted_string(out, prop->text);
1967 // fputs("\n", out);
1968 // break;
1969 case P_COMMENT: 2085 case P_COMMENT:
1970 fputs("\ncomment ", out); 2086 fputs("\ncomment ", out);
1971 print_quoted_string(out, prop->text); 2087 print_quoted_string(out, prop->text);
@@ -1976,19 +2092,12 @@ void zconfdump(FILE *out)
1976 print_quoted_string(out, prop->text); 2092 print_quoted_string(out, prop->text);
1977 fputs("\n", out); 2093 fputs("\n", out);
1978 break; 2094 break;
1979 //case T_SOURCE:
1980 // fputs("\nsource ", out);
1981 // print_quoted_string(out, prop->text);
1982 // fputs("\n", out);
1983 // break;
1984 //case T_IF:
1985 // fputs("\nif\n", out);
1986 default: 2095 default:
1987 ; 2096 ;
1988 } 2097 }
1989 if (!expr_is_yes(E_EXPR(prop->visible))) { 2098 if (!expr_is_yes(prop->visible.expr)) {
1990 fputs(" depends ", out); 2099 fputs(" depends ", out);
1991 expr_fprint(E_EXPR(prop->visible), out); 2100 expr_fprint(prop->visible.expr, out);
1992 fputc('\n', out); 2101 fputc('\n', out);
1993 } 2102 }
1994 fputs("\n", out); 2103 fputs("\n", out);
@@ -2015,3 +2124,4 @@ void zconfdump(FILE *out)
2015#include "symbol.c" 2124#include "symbol.c"
2016#include "menu.c" 2125#include "menu.c"
2017 2126
2127
diff --git a/scripts/config/zconf.y b/scripts/config/zconf.y
index 301d7a896..459b69011 100644
--- a/scripts/config/zconf.y
+++ b/scripts/config/zconf.y
@@ -27,7 +27,7 @@ struct symbol *symbol_hash[257];
27 27
28#define YYERROR_VERBOSE 28#define YYERROR_VERBOSE
29%} 29%}
30%expect 36 30%expect 40
31 31
32%union 32%union
33{ 33{
@@ -46,6 +46,7 @@ struct symbol *symbol_hash[257];
46%token T_ENDCHOICE 46%token T_ENDCHOICE
47%token T_COMMENT 47%token T_COMMENT
48%token T_CONFIG 48%token T_CONFIG
49%token T_MENUCONFIG
49%token T_HELP 50%token T_HELP
50%token <string> T_HELPTEXT 51%token <string> T_HELPTEXT
51%token T_IF 52%token T_IF
@@ -56,17 +57,22 @@ struct symbol *symbol_hash[257];
56%token T_PROMPT 57%token T_PROMPT
57%token T_DEFAULT 58%token T_DEFAULT
58%token T_TRISTATE 59%token T_TRISTATE
60%token T_DEF_TRISTATE
59%token T_BOOLEAN 61%token T_BOOLEAN
62%token T_DEF_BOOLEAN
63%token T_STRING
60%token T_INT 64%token T_INT
61%token T_HEX 65%token T_HEX
62%token <string> T_WORD 66%token <string> T_WORD
63%token <string> T_STRING 67%token <string> T_WORD_QUOTE
64%token T_UNEQUAL 68%token T_UNEQUAL
65%token T_EOF 69%token T_EOF
66%token T_EOL 70%token T_EOL
67%token T_CLOSE_PAREN 71%token T_CLOSE_PAREN
68%token T_OPEN_PAREN 72%token T_OPEN_PAREN
69%token T_ON 73%token T_ON
74%token T_SELECT
75%token T_RANGE
70 76
71%left T_OR 77%left T_OR
72%left T_AND 78%left T_AND
@@ -103,14 +109,15 @@ common_block:
103 if_stmt 109 if_stmt
104 | comment_stmt 110 | comment_stmt
105 | config_stmt 111 | config_stmt
112 | menuconfig_stmt
106 | source_stmt 113 | source_stmt
107 | nl_or_eof 114 | nl_or_eof
108; 115;
109 116
110 117
111/* config entry */ 118/* config/menuconfig entry */
112 119
113config_entry_start: T_CONFIG T_WORD 120config_entry_start: T_CONFIG T_WORD T_EOL
114{ 121{
115 struct symbol *sym = sym_lookup($2, 0); 122 struct symbol *sym = sym_lookup($2, 0);
116 sym->flags |= SYMBOL_OPTIONAL; 123 sym->flags |= SYMBOL_OPTIONAL;
@@ -118,74 +125,118 @@ config_entry_start: T_CONFIG T_WORD
118 printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2); 125 printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
119}; 126};
120 127
121config_stmt: config_entry_start T_EOL config_option_list 128config_stmt: config_entry_start config_option_list
122{ 129{
123 menu_end_entry(); 130 menu_end_entry();
124 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno()); 131 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
125}; 132};
126 133
134menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
135{
136 struct symbol *sym = sym_lookup($2, 0);
137 sym->flags |= SYMBOL_OPTIONAL;
138 menu_add_entry(sym);
139 printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
140};
141
142menuconfig_stmt: menuconfig_entry_start config_option_list
143{
144 if (current_entry->prompt)
145 current_entry->prompt->type = P_MENU;
146 else
147 zconfprint("warning: menuconfig statement without prompt");
148 menu_end_entry();
149 printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
150};
151
127config_option_list: 152config_option_list:
128 /* empty */ 153 /* empty */
129 | config_option_list config_option T_EOL 154 | config_option_list config_option
130 | config_option_list depends T_EOL 155 | config_option_list depends
131 | config_option_list help 156 | config_option_list help
132 | config_option_list T_EOL 157 | config_option_list T_EOL
133{ }; 158;
134 159
135config_option: T_TRISTATE prompt_stmt_opt 160config_option: T_TRISTATE prompt_stmt_opt T_EOL
136{ 161{
137 menu_set_type(S_TRISTATE); 162 menu_set_type(S_TRISTATE);
138 printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno()); 163 printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
139}; 164};
140 165
141config_option: T_BOOLEAN prompt_stmt_opt 166config_option: T_DEF_TRISTATE expr if_expr T_EOL
167{
168 menu_add_expr(P_DEFAULT, $2, $3);
169 menu_set_type(S_TRISTATE);
170 printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
171};
172
173config_option: T_BOOLEAN prompt_stmt_opt T_EOL
142{ 174{
143 menu_set_type(S_BOOLEAN); 175 menu_set_type(S_BOOLEAN);
144 printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno()); 176 printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
145}; 177};
146 178
147config_option: T_INT prompt_stmt_opt 179config_option: T_DEF_BOOLEAN expr if_expr T_EOL
180{
181 menu_add_expr(P_DEFAULT, $2, $3);
182 menu_set_type(S_BOOLEAN);
183 printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
184};
185
186config_option: T_INT prompt_stmt_opt T_EOL
148{ 187{
149 menu_set_type(S_INT); 188 menu_set_type(S_INT);
150 printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno()); 189 printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
151}; 190};
152 191
153config_option: T_HEX prompt_stmt_opt 192config_option: T_HEX prompt_stmt_opt T_EOL
154{ 193{
155 menu_set_type(S_HEX); 194 menu_set_type(S_HEX);
156 printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno()); 195 printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
157}; 196};
158 197
159config_option: T_STRING prompt_stmt_opt 198config_option: T_STRING prompt_stmt_opt T_EOL
160{ 199{
161 menu_set_type(S_STRING); 200 menu_set_type(S_STRING);
162 printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno()); 201 printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
163}; 202};
164 203
165config_option: T_PROMPT prompt if_expr 204config_option: T_PROMPT prompt if_expr T_EOL
166{ 205{
167 menu_add_prop(P_PROMPT, $2, NULL, $3); 206 menu_add_prompt(P_PROMPT, $2, $3);
168 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); 207 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
169}; 208};
170 209
171config_option: T_DEFAULT symbol if_expr 210config_option: T_DEFAULT expr if_expr T_EOL
172{ 211{
173 menu_add_prop(P_DEFAULT, NULL, $2, $3); 212 menu_add_expr(P_DEFAULT, $2, $3);
174 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); 213 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
175}; 214};
176 215
216config_option: T_SELECT T_WORD if_expr T_EOL
217{
218 menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
219 printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
220};
221
222config_option: T_RANGE symbol symbol if_expr T_EOL
223{
224 menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
225 printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
226};
227
177/* choice entry */ 228/* choice entry */
178 229
179choice: T_CHOICE 230choice: T_CHOICE T_EOL
180{ 231{
181 struct symbol *sym = sym_lookup(NULL, 0); 232 struct symbol *sym = sym_lookup(NULL, 0);
182 sym->flags |= SYMBOL_CHOICE; 233 sym->flags |= SYMBOL_CHOICE;
183 menu_add_entry(sym); 234 menu_add_entry(sym);
184 menu_add_prop(P_CHOICE, NULL, NULL, NULL); 235 menu_add_expr(P_CHOICE, NULL, NULL);
185 printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno()); 236 printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
186}; 237};
187 238
188choice_entry: choice T_EOL choice_option_list 239choice_entry: choice choice_option_list
189{ 240{
190 menu_end_entry(); 241 menu_end_entry();
191 menu_add_menu(); 242 menu_add_menu();
@@ -200,7 +251,7 @@ choice_end: end
200}; 251};
201 252
202choice_stmt: 253choice_stmt:
203 choice_entry choice_block choice_end T_EOL 254 choice_entry choice_block choice_end
204 | choice_entry choice_block 255 | choice_entry choice_block
205{ 256{
206 printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno); 257 printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
@@ -209,28 +260,39 @@ choice_stmt:
209 260
210choice_option_list: 261choice_option_list:
211 /* empty */ 262 /* empty */
212 | choice_option_list choice_option T_EOL 263 | choice_option_list choice_option
213 | choice_option_list depends T_EOL 264 | choice_option_list depends
214 | choice_option_list help 265 | choice_option_list help
215 | choice_option_list T_EOL 266 | choice_option_list T_EOL
216; 267;
217 268
218choice_option: T_PROMPT prompt if_expr 269choice_option: T_PROMPT prompt if_expr T_EOL
219{ 270{
220 menu_add_prop(P_PROMPT, $2, NULL, $3); 271 menu_add_prompt(P_PROMPT, $2, $3);
221 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno()); 272 printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
222}; 273};
223 274
224choice_option: T_OPTIONAL 275choice_option: T_TRISTATE prompt_stmt_opt T_EOL
276{
277 menu_set_type(S_TRISTATE);
278 printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
279};
280
281choice_option: T_BOOLEAN prompt_stmt_opt T_EOL
282{
283 menu_set_type(S_BOOLEAN);
284 printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
285};
286
287choice_option: T_OPTIONAL T_EOL
225{ 288{
226 current_entry->sym->flags |= SYMBOL_OPTIONAL; 289 current_entry->sym->flags |= SYMBOL_OPTIONAL;
227 printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno()); 290 printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
228}; 291};
229 292
230choice_option: T_DEFAULT symbol 293choice_option: T_DEFAULT T_WORD if_expr T_EOL
231{ 294{
232 menu_add_prop(P_DEFAULT, NULL, $2, NULL); 295 menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
233 //current_choice->prop->def = $2;
234 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno()); 296 printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
235}; 297};
236 298
@@ -241,11 +303,10 @@ choice_block:
241 303
242/* if entry */ 304/* if entry */
243 305
244if: T_IF expr 306if: T_IF expr T_EOL
245{ 307{
246 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); 308 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
247 menu_add_entry(NULL); 309 menu_add_entry(NULL);
248 //current_entry->prompt = menu_add_prop(T_IF, NULL, NULL, $2);
249 menu_add_dep($2); 310 menu_add_dep($2);
250 menu_end_entry(); 311 menu_end_entry();
251 menu_add_menu(); 312 menu_add_menu();
@@ -260,8 +321,8 @@ if_end: end
260}; 321};
261 322
262if_stmt: 323if_stmt:
263 if T_EOL if_block if_end T_EOL 324 if if_block if_end
264 | if T_EOL if_block 325 | if if_block
265{ 326{
266 printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno); 327 printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
267 zconfnerrs++; 328 zconfnerrs++;
@@ -276,14 +337,14 @@ if_block:
276 337
277/* menu entry */ 338/* menu entry */
278 339
279menu: T_MENU prompt 340menu: T_MENU prompt T_EOL
280{ 341{
281 menu_add_entry(NULL); 342 menu_add_entry(NULL);
282 menu_add_prop(P_MENU, $2, NULL, NULL); 343 menu_add_prop(P_MENU, $2, NULL, NULL);
283 printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); 344 printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
284}; 345};
285 346
286menu_entry: menu T_EOL depends_list 347menu_entry: menu depends_list
287{ 348{
288 menu_end_entry(); 349 menu_end_entry();
289 menu_add_menu(); 350 menu_add_menu();
@@ -298,7 +359,7 @@ menu_end: end
298}; 359};
299 360
300menu_stmt: 361menu_stmt:
301 menu_entry menu_block menu_end T_EOL 362 menu_entry menu_block menu_end
302 | menu_entry menu_block 363 | menu_entry menu_block
303{ 364{
304 printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno); 365 printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
@@ -313,27 +374,27 @@ menu_block:
313 | menu_block error T_EOL { zconfprint("invalid menu option"); yyerrok; } 374 | menu_block error T_EOL { zconfprint("invalid menu option"); yyerrok; }
314; 375;
315 376
316source: T_SOURCE prompt 377source: T_SOURCE prompt T_EOL
317{ 378{
318 $$ = $2; 379 $$ = $2;
319 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2); 380 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
320}; 381};
321 382
322source_stmt: source T_EOL 383source_stmt: source
323{ 384{
324 zconf_nextfile($1); 385 zconf_nextfile($1);
325}; 386};
326 387
327/* comment entry */ 388/* comment entry */
328 389
329comment: T_COMMENT prompt 390comment: T_COMMENT prompt T_EOL
330{ 391{
331 menu_add_entry(NULL); 392 menu_add_entry(NULL);
332 menu_add_prop(P_COMMENT, $2, NULL, NULL); 393 menu_add_prop(P_COMMENT, $2, NULL, NULL);
333 printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno()); 394 printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
334}; 395};
335 396
336comment_stmt: comment T_EOL depends_list 397comment_stmt: comment depends_list
337{ 398{
338 menu_end_entry(); 399 menu_end_entry();
339}; 400};
@@ -354,21 +415,21 @@ help: help_start T_HELPTEXT
354/* depends option */ 415/* depends option */
355 416
356depends_list: /* empty */ 417depends_list: /* empty */
357 | depends_list depends T_EOL 418 | depends_list depends
358 | depends_list T_EOL 419 | depends_list T_EOL
359{ }; 420;
360 421
361depends: T_DEPENDS T_ON expr 422depends: T_DEPENDS T_ON expr T_EOL
362{ 423{
363 menu_add_dep($3); 424 menu_add_dep($3);
364 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); 425 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
365} 426}
366 | T_DEPENDS expr 427 | T_DEPENDS expr T_EOL
367{ 428{
368 menu_add_dep($2); 429 menu_add_dep($2);
369 printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno()); 430 printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
370} 431}
371 | T_REQUIRES expr 432 | T_REQUIRES expr T_EOL
372{ 433{
373 menu_add_dep($2); 434 menu_add_dep($2);
374 printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno()); 435 printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
@@ -378,22 +439,18 @@ depends: T_DEPENDS T_ON expr
378 439
379prompt_stmt_opt: 440prompt_stmt_opt:
380 /* empty */ 441 /* empty */
381 | prompt 442 | prompt if_expr
382{
383 menu_add_prop(P_PROMPT, $1, NULL, NULL);
384}
385 | prompt T_IF expr
386{ 443{
387 menu_add_prop(P_PROMPT, $1, NULL, $3); 444 menu_add_prop(P_PROMPT, $1, NULL, $2);
388}; 445};
389 446
390prompt: T_WORD 447prompt: T_WORD
391 | T_STRING 448 | T_WORD_QUOTE
392; 449;
393 450
394end: T_ENDMENU { $$ = T_ENDMENU; } 451end: T_ENDMENU nl_or_eof { $$ = T_ENDMENU; }
395 | T_ENDCHOICE { $$ = T_ENDCHOICE; } 452 | T_ENDCHOICE nl_or_eof { $$ = T_ENDCHOICE; }
396 | T_ENDIF { $$ = T_ENDIF; } 453 | T_ENDIF nl_or_eof { $$ = T_ENDIF; }
397; 454;
398 455
399nl_or_eof: 456nl_or_eof:
@@ -413,26 +470,34 @@ expr: symbol { $$ = expr_alloc_symbol($1); }
413; 470;
414 471
415symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); } 472symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }
416 | T_STRING { $$ = sym_lookup($1, 1); free($1); } 473 | T_WORD_QUOTE { $$ = sym_lookup($1, 1); free($1); }
417; 474;
418 475
419%% 476%%
420 477
421void conf_parse(const char *name) 478void conf_parse(const char *name)
422{ 479{
480 struct symbol *sym;
481 int i;
482
423 zconf_initscan(name); 483 zconf_initscan(name);
424 484
425 sym_init(); 485 sym_init();
426 menu_init(); 486 menu_init();
427 rootmenu.prompt = menu_add_prop(P_MENU, "BusyBox Configuration", NULL, NULL); 487 modules_sym = sym_lookup("MODULES", 0);
488 rootmenu.prompt = menu_add_prop(P_MENU, "Linux Kernel Configuration", NULL, NULL);
428 489
429 //zconfdebug = 1; 490 //zconfdebug = 1;
430 zconfparse(); 491 zconfparse();
431 if (zconfnerrs) 492 if (zconfnerrs)
432 exit(1); 493 exit(1);
433 menu_finalize(&rootmenu); 494 menu_finalize(&rootmenu);
434 495 for_all_symbols(i, sym) {
435 modules_sym = sym_lookup("MODULES", 0); 496 if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
497 printf("\n");
498 else
499 sym->flags |= SYMBOL_CHECK_DONE;
500 }
436 501
437 sym_change_count = 1; 502 sym_change_count = 1;
438} 503}
@@ -448,7 +513,7 @@ const char *zconf_tokenname(int token)
448 case T_ENDIF: return "endif"; 513 case T_ENDIF: return "endif";
449 } 514 }
450 return "<token>"; 515 return "<token>";
451} 516}
452 517
453static bool zconf_endtoken(int token, int starttoken, int endtoken) 518static bool zconf_endtoken(int token, int starttoken, int endtoken)
454{ 519{
@@ -470,7 +535,7 @@ static void zconfprint(const char *err, ...)
470{ 535{
471 va_list ap; 536 va_list ap;
472 537
473 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno()); 538 fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
474 va_start(ap, err); 539 va_start(ap, err);
475 vfprintf(stderr, err, ap); 540 vfprintf(stderr, err, ap);
476 va_end(ap); 541 va_end(ap);
@@ -479,7 +544,7 @@ static void zconfprint(const char *err, ...)
479 544
480static void zconferror(const char *err) 545static void zconferror(const char *err)
481{ 546{
482 fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno(), err); 547 fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
483} 548}
484 549
485void print_quoted_string(FILE *out, const char *str) 550void print_quoted_string(FILE *out, const char *str)
@@ -504,8 +569,6 @@ void print_symbol(FILE *out, struct menu *menu)
504 struct symbol *sym = menu->sym; 569 struct symbol *sym = menu->sym;
505 struct property *prop; 570 struct property *prop;
506 571
507 //sym->flags |= SYMBOL_PRINTED;
508
509 if (sym_is_choice(sym)) 572 if (sym_is_choice(sym))
510 fprintf(out, "choice\n"); 573 fprintf(out, "choice\n");
511 else 574 else
@@ -530,13 +593,6 @@ void print_symbol(FILE *out, struct menu *menu)
530 fputs(" ???\n", out); 593 fputs(" ???\n", out);
531 break; 594 break;
532 } 595 }
533#if 0
534 if (!expr_is_yes(sym->dep)) {
535 fputs(" depends ", out);
536 expr_fprint(sym->dep, out);
537 fputc('\n', out);
538 }
539#endif
540 for (prop = sym->prop; prop; prop = prop->next) { 596 for (prop = sym->prop; prop; prop = prop->next) {
541 if (prop->menu != menu) 597 if (prop->menu != menu)
542 continue; 598 continue;
@@ -544,25 +600,18 @@ void print_symbol(FILE *out, struct menu *menu)
544 case P_PROMPT: 600 case P_PROMPT:
545 fputs(" prompt ", out); 601 fputs(" prompt ", out);
546 print_quoted_string(out, prop->text); 602 print_quoted_string(out, prop->text);
547 if (prop->def) { 603 if (!expr_is_yes(prop->visible.expr)) {
548 fputc(' ', out);
549 if (prop->def->flags & SYMBOL_CONST)
550 print_quoted_string(out, prop->def->name);
551 else
552 fputs(prop->def->name, out);
553 }
554 if (!expr_is_yes(E_EXPR(prop->visible))) {
555 fputs(" if ", out); 604 fputs(" if ", out);
556 expr_fprint(E_EXPR(prop->visible), out); 605 expr_fprint(prop->visible.expr, out);
557 } 606 }
558 fputc('\n', out); 607 fputc('\n', out);
559 break; 608 break;
560 case P_DEFAULT: 609 case P_DEFAULT:
561 fputs( " default ", out); 610 fputs( " default ", out);
562 print_quoted_string(out, prop->def->name); 611 expr_fprint(prop->expr, out);
563 if (!expr_is_yes(E_EXPR(prop->visible))) { 612 if (!expr_is_yes(prop->visible.expr)) {
564 fputs(" if ", out); 613 fputs(" if ", out);
565 expr_fprint(E_EXPR(prop->visible), out); 614 expr_fprint(prop->visible.expr, out);
566 } 615 }
567 fputc('\n', out); 616 fputc('\n', out);
568 break; 617 break;
@@ -585,7 +634,6 @@ void print_symbol(FILE *out, struct menu *menu)
585 634
586void zconfdump(FILE *out) 635void zconfdump(FILE *out)
587{ 636{
588 //struct file *file;
589 struct property *prop; 637 struct property *prop;
590 struct symbol *sym; 638 struct symbol *sym;
591 struct menu *menu; 639 struct menu *menu;
@@ -596,11 +644,6 @@ void zconfdump(FILE *out)
596 print_symbol(out, menu); 644 print_symbol(out, menu);
597 else if ((prop = menu->prompt)) { 645 else if ((prop = menu->prompt)) {
598 switch (prop->type) { 646 switch (prop->type) {
599 //case T_MAINMENU:
600 // fputs("\nmainmenu ", out);
601 // print_quoted_string(out, prop->text);
602 // fputs("\n", out);
603 // break;
604 case P_COMMENT: 647 case P_COMMENT:
605 fputs("\ncomment ", out); 648 fputs("\ncomment ", out);
606 print_quoted_string(out, prop->text); 649 print_quoted_string(out, prop->text);
@@ -611,19 +654,12 @@ void zconfdump(FILE *out)
611 print_quoted_string(out, prop->text); 654 print_quoted_string(out, prop->text);
612 fputs("\n", out); 655 fputs("\n", out);
613 break; 656 break;
614 //case T_SOURCE:
615 // fputs("\nsource ", out);
616 // print_quoted_string(out, prop->text);
617 // fputs("\n", out);
618 // break;
619 //case T_IF:
620 // fputs("\nif\n", out);
621 default: 657 default:
622 ; 658 ;
623 } 659 }
624 if (!expr_is_yes(E_EXPR(prop->visible))) { 660 if (!expr_is_yes(prop->visible.expr)) {
625 fputs(" depends ", out); 661 fputs(" depends ", out);
626 expr_fprint(E_EXPR(prop->visible), out); 662 expr_fprint(prop->visible.expr, out);
627 fputc('\n', out); 663 fputc('\n', out);
628 } 664 }
629 fputs("\n", out); 665 fputs("\n", out);
diff --git a/shell/Config.in b/shell/Config.in
index c1e909944..6103ccfda 100644
--- a/shell/Config.in
+++ b/shell/Config.in
@@ -7,7 +7,7 @@ menu "Another Bourne-like Shell"
7 7
8choice 8choice
9 prompt "Choose your default shell" 9 prompt "Choose your default shell"
10 default "none" 10 default CONFIG_FEATURE_SH_IS_NONE
11 help 11 help
12 Choose a shell. The ash shell is the most bash compatible 12 Choose a shell. The ash shell is the most bash compatible
13 and full featured. 13 and full featured.
diff --git a/sysdeps/linux/Config.in b/sysdeps/linux/Config.in
index d5adee5d0..c3bca3363 100644
--- a/sysdeps/linux/Config.in
+++ b/sysdeps/linux/Config.in
@@ -13,7 +13,7 @@ menu "General Configuration"
13 13
14choice 14choice
15 prompt "Buffer allocation policy" 15 prompt "Buffer allocation policy"
16 default "Allocate with Malloc" 16 default CONFIG_FEATURE_BUFFERS_USE_MALLOC
17 help 17 help
18 There are 3 ways BusyBox can handle buffer allocations: 18 There are 3 ways BusyBox can handle buffer allocations:
19 - Use malloc. This costs code size for the call to xmalloc. 19 - Use malloc. This costs code size for the call to xmalloc.