summaryrefslogtreecommitdiff
path: root/extra/config
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-08-05 01:52:39 +0000
committerEric Andersen <andersen@codepoet.org>2003-08-05 01:52:39 +0000
commitfcf8c55eb4fbf21a5351afbf29e7d2c9a8b9835d (patch)
treec5cde3f43a81acd91425c7c4bd8054a90d07c7bf /extra/config
parent5df743a806dc0a3fcbb998d6c7a64e9fa54b2fce (diff)
Merge/rework config system per the latest from linux-2.6.0-test2
-Erik
Diffstat (limited to 'extra/config')
-rw-r--r--extra/config/conf.c226
-rw-r--r--extra/config/confdata.c255
-rw-r--r--extra/config/expr.c37
-rw-r--r--extra/config/expr.h82
-rw-r--r--extra/config/lex.zconf.c_shipped2978
-rw-r--r--extra/config/lkc.h19
-rw-r--r--extra/config/lkc_proto.h9
-rw-r--r--extra/config/mconf.c48
-rw-r--r--extra/config/menu.c194
-rw-r--r--extra/config/symbol.c518
-rw-r--r--extra/config/zconf.l58
-rw-r--r--extra/config/zconf.tab.c_shipped1346
-rw-r--r--extra/config/zconf.y232
13 files changed, 3449 insertions, 2553 deletions
diff --git a/extra/config/conf.c b/extra/config/conf.c
index 6bc5de943..20ea2c901 100644
--- a/extra/config/conf.c
+++ b/extra/config/conf.c
@@ -35,50 +35,12 @@ static struct menu *rootEntry;
static char nohelp_text[] = "Sorry, no help available for this option yet.\n";
-#if 0
-static void printc(int ch)
-{
- static int sep = 0;
-
- if (!sep) {
- putchar('[');
- sep = 1;
- } else if (ch)
- putchar('/');
- if (!ch) {
- putchar(']');
- putchar(' ');
- sep = 0;
- } else
- putchar(ch);
-}
-#endif
-
-static void printo(const char *o)
-{
- static int sep = 0;
-
- if (!sep) {
- putchar('(');
- sep = 1;
- } else if (o) {
- putchar(',');
- putchar(' ');
- }
- if (!o) {
- putchar(')');
- putchar(' ');
- sep = 0;
- } else
- printf("%s", o);
-}
-
static void strip(char *str)
{
char *p = str;
int l;
- while ((isspace((int)*p)))
+ while ((isspace(*p)))
p++;
l = strlen(p);
if (p != str)
@@ -86,10 +48,20 @@ static void strip(char *str)
if (!l)
return;
p = str + l - 1;
- while ((isspace((int)*p)))
+ while ((isspace(*p)))
*p-- = 0;
}
+static void check_stdin(void)
+{
+ if (!valid_stdin && input_mode == ask_silent) {
+ printf("aborted!\n\n");
+ printf("Console input/output is redirected. ");
+ printf("Run 'make oldconfig' to update configuration.\n\n");
+ exit(1);
+ }
+}
+
static void conf_askvalue(struct symbol *sym, const char *def)
{
enum symbol_type type = sym_get_type(sym);
@@ -101,6 +73,13 @@ static void conf_askvalue(struct symbol *sym, const char *def)
line[0] = '\n';
line[1] = 0;
+ if (!sym_is_changable(sym)) {
+ printf("%s\n", def);
+ line[0] = '\n';
+ line[1] = 0;
+ return;
+ }
+
switch (input_mode) {
case ask_new:
case ask_silent:
@@ -108,12 +87,7 @@ static void conf_askvalue(struct symbol *sym, const char *def)
printf("%s\n", def);
return;
}
- if (!valid_stdin && input_mode == ask_silent) {
- printf("aborted!\n\n");
- printf("Console input/output is redirected. ");
- printf("Run 'make oldconfig' to update configuration.\n\n");
- exit(1);
- }
+ check_stdin();
case ask_all:
fflush(stdout);
fgets(line, 128, stdin);
@@ -294,9 +268,8 @@ help:
static int conf_choice(struct menu *menu)
{
struct symbol *sym, *def_sym;
- struct menu *cmenu, *def_menu;
- const char *help;
- int type, len;
+ struct menu *child;
+ int type;
bool is_new;
sym = menu->sym;
@@ -314,72 +287,111 @@ static int conf_choice(struct menu *menu)
break;
}
} else {
- sym->def = sym->curr;
- if (S_TRI(sym->curr) == mod) {
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ return 1;
+ case mod:
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
return 0;
+ case yes:
+ break;
}
}
while (1) {
- printf("%*s%s ", indent - 1, "", menu_get_prompt(menu));
+ int cnt, def;
+
+ printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
def_sym = sym_get_choice_value(sym);
- def_menu = NULL;
- for (cmenu = menu->list; cmenu; cmenu = cmenu->next) {
- if (!menu_is_visible(cmenu))
+ cnt = def = 0;
+ line[0] = '0';
+ line[1] = 0;
+ for (child = menu->list; child; child = child->next) {
+ if (!menu_is_visible(child))
continue;
- printo(menu_get_prompt(cmenu));
- if (cmenu->sym == def_sym)
- def_menu = cmenu;
- }
- printo(NULL);
- if (def_menu)
- printf("[%s] ", menu_get_prompt(def_menu));
- else {
+ if (!child->sym) {
+ printf("%*c %s\n", indent, '*', menu_get_prompt(child));
+ continue;
+ }
+ cnt++;
+ if (child->sym == def_sym) {
+ def = cnt;
+ printf("%*c", indent, '>');
+ } else
+ printf("%*c", indent, ' ');
+ printf(" %d. %s", cnt, menu_get_prompt(child));
+ if (child->sym->name)
+ printf(" (%s)", child->sym->name);
+ if (!sym_has_value(child->sym))
+ printf(" (NEW)");
printf("\n");
- return 1;
}
+ printf("%*schoice", indent - 1, "");
+ if (cnt == 1) {
+ printf("[1]: 1\n");
+ goto conf_childs;
+ }
+ printf("[1-%d", cnt);
+ if (sym->help)
+ printf("?");
+ printf("]: ");
switch (input_mode) {
case ask_new:
case ask_silent:
+ if (!is_new) {
+ cnt = def;
+ printf("%d\n", cnt);
+ break;
+ }
+ check_stdin();
case ask_all:
- conf_askvalue(sym, menu_get_prompt(def_menu));
+ fflush(stdout);
+ fgets(line, 128, stdin);
strip(line);
+ if (line[0] == '?') {
+ printf("\n%s\n", menu->sym->help ?
+ menu->sym->help : nohelp_text);
+ continue;
+ }
+ if (!line[0])
+ cnt = def;
+ else if (isdigit(line[0]))
+ cnt = atoi(line);
+ else
+ continue;
+ break;
+ case set_random:
+ def = (random() % cnt) + 1;
+ case set_default:
+ case set_yes:
+ case set_mod:
+ case set_no:
+ cnt = def;
+ printf("%d\n", cnt);
break;
- default:
- line[0] = 0;
- printf("\n");
}
- if (line[0] == '?' && !line[1]) {
- help = nohelp_text;
- if (menu->sym->help)
- help = menu->sym->help;
- printf("\n%s\n", help);
- continue;
+
+ conf_childs:
+ for (child = menu->list; child; child = child->next) {
+ if (!child->sym || !menu_is_visible(child))
+ continue;
+ if (!--cnt)
+ break;
}
- if (line[0]) {
- len = strlen(line);
- line[len] = 0;
-
- def_menu = NULL;
- for (cmenu = menu->list; cmenu; cmenu = cmenu->next) {
- if (!cmenu->sym || !menu_is_visible(cmenu))
- continue;
- if (!strncasecmp(line, menu_get_prompt(cmenu), len)) {
- def_menu = cmenu;
- break;
- }
- }
+ if (!child)
+ continue;
+ if (line[strlen(line) - 1] == '?') {
+ printf("\n%s\n", child->sym->help ?
+ child->sym->help : nohelp_text);
+ continue;
}
- if (def_menu) {
- sym_set_choice_value(sym, def_menu->sym);
- if (def_menu->list) {
- indent += 2;
- conf(def_menu->list);
- indent -= 2;
- }
- return 1;
+ sym_set_choice_value(sym, child->sym);
+ if (child->list) {
+ indent += 2;
+ conf(child->list);
+ indent -= 2;
}
+ return 1;
}
}
@@ -420,7 +432,7 @@ static void conf(struct menu *menu)
if (sym_is_choice(sym)) {
conf_choice(menu);
- if (S_TRI(sym->curr) != mod)
+ if (sym->curr.tri != mod)
return;
goto conf_childs;
}
@@ -454,29 +466,17 @@ static void check_conf(struct menu *menu)
return;
sym = menu->sym;
- if (!sym)
- goto conf_childs;
-
- if (sym_is_choice(sym)) {
- if (!sym_has_value(sym)) {
+ if (sym) {
+ if (sym_is_changable(sym) && !sym_has_value(sym)) {
if (!conf_cnt++)
printf("*\n* Restart config...\n*\n");
rootEntry = menu_get_parent_menu(menu);
conf(rootEntry);
}
- if (sym_get_tristate_value(sym) != mod)
+ if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod)
return;
- goto conf_childs;
}
- if (!sym_has_value(sym)) {
- if (!conf_cnt++)
- printf("*\n* Restart config...\n*\n");
- rootEntry = menu_get_parent_menu(menu);
- conf(rootEntry);
- }
-
-conf_childs:
for (child = menu->list; child; child = child->next)
check_conf(child);
}
@@ -536,8 +536,8 @@ int main(int ac, char **av)
printf("***\n"
"*** You have not yet configured uClibc!\n"
"***\n"
- "*** Please run some configurator (e.g. \"make oldconfig\"\n"
- "*** or \"make menuconfig\").\n"
+ "*** Please run some configurator (e.g. \"make config\" or\n"
+ "*** \"make oldconfig\" or \"make menuconfig\").\n"
"***\n");
exit(1);
}
diff --git a/extra/config/confdata.c b/extra/config/confdata.c
index cb8a0e75d..694477fb6 100644
--- a/extra/config/confdata.c
+++ b/extra/config/confdata.c
@@ -1,11 +1,9 @@
/*
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
* Released under the terms of the GNU GPL v2.0.
- *
- * Allow 'n' as a symbol value.
- * 2002-11-05 Petr Baudis <pasky@ucw.cz>
*/
+#include <sys/stat.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
@@ -38,7 +36,7 @@ static char *conf_expand_value(const char *in)
strncat(res_value, in, src - in);
src++;
dst = name;
- while (isalnum((int)*src) || *src == '_')
+ while (isalnum(*src) || *src == '_')
*dst++ = *src++;
*dst = 0;
sym = sym_lookup(name, 0);
@@ -53,7 +51,18 @@ static char *conf_expand_value(const char *in)
char *conf_get_default_confname(void)
{
- return conf_expand_value(conf_defname);
+ struct stat buf;
+ static char fullname[4096+1];
+ char *env, *name;
+
+ name = conf_expand_value(conf_defname);
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ if (!stat(fullname, &buf))
+ return fullname;
+ }
+ return name;
}
int conf_read(const char *name)
@@ -68,12 +77,12 @@ int conf_read(const char *name)
int i;
if (name) {
- in = fopen(name, "r");
+ in = zconf_fopen(name);
} else {
const char **names = conf_confnames;
while ((name = *names++)) {
name = conf_expand_value(name);
- in = fopen(name, "r");
+ in = zconf_fopen(name);
if (in) {
printf("#\n"
"# using defaults found in %s\n"
@@ -93,44 +102,43 @@ int conf_read(const char *name)
case S_INT:
case S_HEX:
case S_STRING:
- if (S_VAL(sym->def))
- free(S_VAL(sym->def));
+ if (sym->user.val)
+ free(sym->user.val);
default:
- S_VAL(sym->def) = NULL;
- S_TRI(sym->def) = no;
- ;
+ sym->user.val = NULL;
+ sym->user.tri = no;
}
}
while (fgets(line, sizeof(line), in)) {
lineno++;
+ sym = NULL;
switch (line[0]) {
- case '\n':
- break;
- case ' ':
- break;
case '#':
- p = strchr(line, ' ');
- if (!p)
+ if (line[1]!=' ')
continue;
- *p++ = 0;
- p = strchr(p, ' ');
+ p = strchr(line + 2, ' ');
if (!p)
continue;
*p++ = 0;
if (strncmp(p, "is not set", 10))
continue;
- sym = sym_lookup(line+2, 0);
+ sym = sym_find(line + 2);
+ if (!sym) {
+ fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 2);
+ break;
+ }
switch (sym->type) {
case S_BOOLEAN:
case S_TRISTATE:
- sym->def = symbol_no.curr;
+ sym->user.tri = no;
sym->flags &= ~SYMBOL_NEW;
break;
default:
;
}
break;
+
case 'A' ... 'Z':
p = strchr(line, '=');
if (!p)
@@ -145,24 +153,24 @@ int conf_read(const char *name)
break;
}
switch (sym->type) {
- case S_TRISTATE:
+ case S_TRISTATE:
if (p[0] == 'm') {
- S_TRI(sym->def) = mod;
+ sym->user.tri = mod;
sym->flags &= ~SYMBOL_NEW;
break;
}
case S_BOOLEAN:
if (p[0] == 'y') {
- S_TRI(sym->def) = yes;
+ sym->user.tri = yes;
sym->flags &= ~SYMBOL_NEW;
break;
}
if (p[0] == 'n') {
- S_TRI(sym->def) = no;
+ sym->user.tri = no;
sym->flags &= ~SYMBOL_NEW;
break;
}
- break;
+ break;
case S_STRING:
if (*p++ != '"')
break;
@@ -173,48 +181,71 @@ int conf_read(const char *name)
}
memmove(p2, p2 + 1, strlen(p2));
}
+ if (!p2) {
+ fprintf(stderr, "%s:%d: invalid string found\n", name, lineno);
+ exit(1);
+ }
case S_INT:
case S_HEX:
if (sym_string_valid(sym, p)) {
- S_VAL(sym->def) = strdup(p);
+ sym->user.val = strdup(p);
sym->flags &= ~SYMBOL_NEW;
- } else
- fprintf(stderr, "%s:%d:symbol value '%s' invalid for %s\n", name, lineno, p, sym->name);
+ } else {
+ fprintf(stderr, "%s:%d: symbol value '%s' invalid for %s\n", name, lineno, p, sym->name);
+ exit(1);
+ }
break;
default:
;
}
- if (sym_is_choice_value(sym)) {
- prop = sym_get_choice_prop(sym);
- switch (S_TRI(sym->def)) {
- case mod:
- if (S_TRI(prop->def->def) == yes)
- /* warn? */;
- break;
- case yes:
- if (S_TRI(prop->def->def) != no)
- /* warn? */;
- S_VAL(prop->def->def) = sym;
- break;
- case no:
- break;
- }
- S_TRI(prop->def->def) = S_TRI(sym->def);
- }
+ break;
+ case '\n':
break;
default:
continue;
}
+ if (sym && sym_is_choice_value(sym)) {
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+ switch (sym->user.tri) {
+ case no:
+ break;
+ case mod:
+ if (cs->user.tri == yes)
+ /* warn? */;
+ break;
+ case yes:
+ if (cs->user.tri != no)
+ /* warn? */;
+ cs->user.val = sym;
+ break;
+ }
+ cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
+ cs->flags &= ~SYMBOL_NEW;
+ }
}
fclose(in);
for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
+ if (sym->visible == no)
+ sym->flags |= SYMBOL_NEW;
+ switch (sym->type) {
+ case S_STRING:
+ case S_INT:
+ case S_HEX:
+ if (!sym_string_within_range(sym, sym->user.val))
+ sym->flags |= SYMBOL_NEW;
+ default:
+ break;
+ }
+ }
if (!sym_is_choice(sym))
continue;
prop = sym_get_choice_prop(sym);
- for (e = prop->dep; e; e = e->left.expr)
- sym->flags |= e->right.sym->flags & SYMBOL_NEW;
- sym->flags &= ~SYMBOL_NEW;
+ for (e = prop->expr; e; e = e->left.expr)
+ if (e->right.sym->visible != no)
+ sym->flags |= e->right.sym->flags & SYMBOL_NEW;
}
sym_change_count = 1;
@@ -227,36 +258,57 @@ int conf_write(const char *name)
FILE *out, *out_h;
struct symbol *sym;
struct menu *menu;
- char oldname[128];
+ const char *basename;
+ char dirname[128], tmpname[128], newname[128];
int type, l;
const char *str;
- out = fopen(".tmpconfig", "w");
+ dirname[0] = 0;
+ if (name && name[0]) {
+ char *slash = strrchr(name, '/');
+ if (slash) {
+ int size = slash - name + 1;
+ memcpy(dirname, name, size);
+ dirname[size] = 0;
+ if (slash[1])
+ basename = slash + 1;
+ else
+ basename = conf_def_filename;
+ } else
+ basename = name;
+ } else
+ basename = conf_def_filename;
+
+ sprintf(newname, "%s.tmpconfig.%d", dirname, getpid());
+ out = fopen(newname, "w");
if (!out)
return 1;
- out_h = fopen(".tmpconfig.h", "w");
- if (!out_h)
- return 1;
+ out_h = NULL;
+ if (!name) {
+ out_h = fopen(".tmpconfig.h", "w");
+ if (!out_h)
+ return 1;
+ }
fprintf(out, "#\n"
"# Automatically generated make config: don't edit\n"
"#\n");
- fprintf(out_h, "/*\n"
- " * Automatically generated C config: don't edit\n"
- " */\n"
- "#if !defined __FEATURES_H && !defined __need_uClibc_config_h\n"
- "#error Never include <bits/uClibc_config.h> directly; use <features.h> instead.\n"
- "#endif\n"
- "#define AUTOCONF_INCLUDED\n\n"
- "/*\n"
- " * Version Number\n"
- " */\n"
- "#define __UCLIBC_MAJOR__ %s\n"
- "#define __UCLIBC_MINOR__ %s\n"
- "#define __UCLIBC_SUBLEVEL__ %s\n",
- getenv("MAJOR_VERSION"),
- getenv("MINOR_VERSION"),
- getenv("SUBLEVEL")
- );
+ if (out_h)
+ fprintf(out_h, "/*\n"
+ " * Automatically generated C config: don't edit\n"
+ " */\n"
+ "#if !defined __FEATURES_H && !defined __need_uClibc_config_h\n"
+ "#error Never include <bits/uClibc_config.h> directly; use <features.h> instead\n"
+ "#endif\n"
+ "#define AUTOCONF_INCLUDED\n\n"
+ "/*\n"
+ " * Version Number\n"
+ " */\n"
+ "#define __UCLIBC_MAJOR__ %s\n"
+ "#define __UCLIBC_MINOR__ %s\n"
+ "#define __UCLIBC_SUBLEVEL__ %s\n",
+ getenv("MAJOR_VERSION"),
+ getenv("MINOR_VERSION"),
+ getenv("SUBLEVEL"));
if (!sym_change_count)
sym_clear_all_valid();
@@ -272,10 +324,11 @@ int conf_write(const char *name)
"#\n"
"# %s\n"
"#\n", str);
- fprintf(out_h, "\n"
- "/*\n"
- " * %s\n"
- " */\n", str);
+ if (out_h)
+ fprintf(out_h, "\n"
+ "/*\n"
+ " * %s\n"
+ " */\n", str);
} else if (!(sym->flags & SYMBOL_CHOICE)) {
sym_calc_value(sym);
if (!(sym->flags & SYMBOL_WRITE))
@@ -284,7 +337,7 @@ int conf_write(const char *name)
type = sym->type;
if (type == S_TRISTATE) {
sym_calc_value(modules_sym);
- if (S_TRI(modules_sym->curr) == no)
+ if (modules_sym->curr.tri == no)
type = S_BOOLEAN;
}
switch (type) {
@@ -293,15 +346,18 @@ int conf_write(const char *name)
switch (sym_get_tristate_value(sym)) {
case no:
fprintf(out, "# %s is not set\n", sym->name);
- fprintf(out_h, "#undef __%s__\n", sym->name);
+ if (out_h)
+ fprintf(out_h, "#undef %s\n", sym->name);
break;
case mod:
fprintf(out, "%s=m\n", sym->name);
- fprintf(out_h, "#define __%s__MODULE 1\n", sym->name);
+ if (out_h)
+ fprintf(out_h, "#define %s_MODULE 1\n", sym->name);
break;
case yes:
fprintf(out, "%s=y\n", sym->name);
- fprintf(out_h, "#define __%s__ 1\n", sym->name);
+ if (out_h)
+ fprintf(out_h, "#define __%s__ 1\n", sym->name);
break;
}
break;
@@ -309,34 +365,40 @@ int conf_write(const char *name)
// fix me
str = sym_get_string_value(sym);
fprintf(out, "%s=\"", sym->name);
- fprintf(out_h, "#define __%s__ \"", sym->name);
+ if (out_h)
+ fprintf(out_h, "#define __%s__ \"", sym->name);
do {
l = strcspn(str, "\"\\");
if (l) {
fwrite(str, l, 1, out);
- fwrite(str, l, 1, out_h);
+ if (out_h)
+ fwrite(str, l, 1, out_h);
}
str += l;
while (*str == '\\' || *str == '"') {
fprintf(out, "\\%c", *str);
- fprintf(out_h, "\\%c", *str);
+ if (out_h)
+ fprintf(out_h, "\\%c", *str);
str++;
}
} while (*str);
fputs("\"\n", out);
- fputs("\"\n", out_h);
+ if (out_h)
+ fputs("\"\n", out_h);
break;
case S_HEX:
str = sym_get_string_value(sym);
if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
fprintf(out, "%s=%s\n", sym->name, str);
- fprintf(out_h, "#define __%s__ 0x%s\n", sym->name, str);
+ if (out_h)
+ fprintf(out_h, "#define __%s__ 0x%s\n", sym->name, str);
break;
}
case S_INT:
str = sym_get_string_value(sym);
fprintf(out, "%s=%s\n", sym->name, str);
- fprintf(out_h, "#define __%s__ %s\n", sym->name, str);
+ if (out_h)
+ fprintf(out_h, "#define __%s__ %s\n", sym->name, str);
break;
}
}
@@ -356,18 +418,19 @@ int conf_write(const char *name)
}
}
fclose(out);
- fclose(out_h);
-
- if (!name) {
+ if (out_h) {
+ fclose(out_h);
rename(".tmpconfig.h", "include/bits/uClibc_config.h");
- name = conf_def_filename;
file_write_dep(NULL);
- } else
- unlink(".tmpconfig.h");
-
- sprintf(oldname, "%s.old", name);
- rename(name, oldname);
- if (rename(".tmpconfig", name))
+ }
+ if (!name || basename != conf_def_filename) {
+ if (!name)
+ name = conf_def_filename;
+ sprintf(tmpname, "%s.old", name);
+ rename(name, tmpname);
+ }
+ sprintf(tmpname, "%s%s", dirname, basename);
+ if (rename(newname, tmpname))
return 1;
sym_change_count = 0;
diff --git a/extra/config/expr.c b/extra/config/expr.c
index d1af2a581..3f15ae859 100644
--- a/extra/config/expr.c
+++ b/extra/config/expr.c
@@ -55,6 +55,13 @@ struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
}
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
+{
+ if (!e1)
+ return e2;
+ return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
+}
+
struct expr *expr_copy(struct expr *org)
{
struct expr *e;
@@ -158,9 +165,22 @@ static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct e
void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
{
- if (!e1 || !e2 || e1->type != e2->type)
+ if (!e1 || !e2)
return;
- __expr_eliminate_eq(e1->type, ep1, ep2);
+ switch (e1->type) {
+ case E_OR:
+ case E_AND:
+ __expr_eliminate_eq(e1->type, ep1, ep2);
+ default:
+ ;
+ }
+ if (e1->type != e2->type) switch (e2->type) {
+ case E_OR:
+ case E_AND:
+ __expr_eliminate_eq(e2->type, ep1, ep2);
+ default:
+ ;
+ }
e1 = expr_eliminate_yn(e1);
e2 = expr_eliminate_yn(e2);
}
@@ -195,6 +215,7 @@ int expr_eq(struct expr *e1, struct expr *e2)
trans_count = old_count;
return res;
case E_CHOICE:
+ case E_RANGE:
case E_NONE:
/* panic */;
}
@@ -897,6 +918,7 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb
case E_SYMBOL:
return expr_alloc_comp(type, e->left.sym, sym);
case E_CHOICE:
+ case E_RANGE:
case E_NONE:
/* panic */;
}
@@ -914,7 +936,7 @@ tristate expr_calc_value(struct expr *e)
switch (e->type) {
case E_SYMBOL:
sym_calc_value(e->left.sym);
- return S_TRI(e->left.sym->curr);
+ return e->left.sym->curr.tri;
case E_AND:
val1 = expr_calc_value(e->left.expr);
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
expr_print(e->right.expr, fn, data, E_AND);
break;
case E_CHOICE:
+ fn(data, e->right.sym->name);
if (e->left.expr) {
- expr_print(e->left.expr, fn, data, E_CHOICE);
fn(data, " ^ ");
+ expr_print(e->left.expr, fn, data, E_CHOICE);
}
+ break;
+ case E_RANGE:
+ fn(data, "[");
+ fn(data, e->left.sym->name);
+ fn(data, " ");
fn(data, e->right.sym->name);
+ fn(data, "]");
break;
default:
{
diff --git a/extra/config/expr.h b/extra/config/expr.h
index e96d03b5a..cc616f1f8 100644
--- a/extra/config/expr.h
+++ b/extra/config/expr.h
@@ -18,10 +18,6 @@ extern "C" {
struct file {
struct file *next;
struct file *parent;
-#ifdef CML1
- struct statement *stmt;
- struct statement *last_stmt;
-#endif
char *name;
int lineno;
int flags;
@@ -36,7 +32,7 @@ typedef enum tristate {
} tristate;
enum expr_type {
- E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL
+ E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
};
union expr_data {
@@ -45,18 +41,10 @@ union expr_data {
};
struct expr {
-#ifdef CML1
- int token;
-#else
enum expr_type type;
-#endif
union expr_data left, right;
};
-#define E_TRI(ev) ((ev).tri)
-#define E_EXPR(ev) ((ev).expr)
-#define E_CALC(ev) (E_TRI(ev) = expr_calc_value(E_EXPR(ev)))
-
#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
#define E_NOT(dep) (2-(dep))
@@ -66,12 +54,8 @@ struct expr_value {
tristate tri;
};
-#define S_VAL(sv) ((sv).value)
-#define S_TRI(sv) ((sv).tri)
-#define S_EQ(sv1, sv2) (S_VAL(sv1) == S_VAL(sv2) || !strcmp(S_VAL(sv1), S_VAL(sv2)))
-
struct symbol_value {
- void *value;
+ void *val;
tristate tri;
};
@@ -83,31 +67,17 @@ struct symbol {
struct symbol *next;
char *name;
char *help;
-#ifdef CML1
- int type;
-#else
enum symbol_type type;
-#endif
- struct symbol_value curr, def;
+ struct symbol_value curr, user;
tristate visible;
int flags;
struct property *prop;
struct expr *dep, *dep2;
- struct menu *menu;
+ struct expr_value rev_dep;
};
#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)
-#ifdef CML1
-#define SYMBOL_UNKNOWN S_UNKNOWN
-#define SYMBOL_BOOLEAN S_BOOLEAN
-#define SYMBOL_TRISTATE S_TRISTATE
-#define SYMBOL_INT S_INT
-#define SYMBOL_HEX S_HEX
-#define SYMBOL_STRING S_STRING
-#define SYMBOL_OTHER S_OTHER
-#endif
-
#define SYMBOL_YES 0x0001
#define SYMBOL_MOD 0x0002
#define SYMBOL_NO 0x0004
@@ -122,42 +92,38 @@ struct symbol {
#define SYMBOL_CHANGED 0x0400
#define SYMBOL_NEW 0x0800
#define SYMBOL_AUTO 0x1000
+#define SYMBOL_CHECKED 0x2000
+#define SYMBOL_CHECK_DONE 0x4000
+#define SYMBOL_WARNED 0x8000
#define SYMBOL_MAXLENGTH 256
#define SYMBOL_HASHSIZE 257
#define SYMBOL_HASHMASK 0xff
enum prop_type {
- P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_ROOTMENU, P_DEFAULT, P_CHOICE
+ P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
};
struct property {
struct property *next;
struct symbol *sym;
-#ifdef CML1
- int token;
-#else
enum prop_type type;
-#endif
const char *text;
- struct symbol *def;
struct expr_value visible;
- struct expr *dep;
- struct expr *dep2;
+ struct expr *expr;
struct menu *menu;
struct file *file;
int lineno;
-#ifdef CML1
- struct property *next_pos;
-#endif
};
#define for_all_properties(sym, st, tok) \
for (st = sym->prop; st; st = st->next) \
if (st->type == (tok))
-#define for_all_prompts(sym, st) for_all_properties(sym, st, P_PROMPT)
#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)
#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE)
+#define for_all_prompts(sym, st) \
+ for (st = sym->prop; st; st = st->next) \
+ if (st->text)
struct menu {
struct menu *next;
@@ -166,12 +132,16 @@ struct menu {
struct symbol *sym;
struct property *prompt;
struct expr *dep;
+ unsigned int flags;
//char *help;
struct file *file;
int lineno;
void *data;
};
+#define MENU_CHANGED 0x0001
+#define MENU_ROOT 0x0002
+
#ifndef SWIG
extern struct file *file_list;
@@ -181,18 +151,12 @@ struct file *lookup_file(const char *name);
extern struct symbol symbol_yes, symbol_no, symbol_mod;
extern struct symbol *modules_sym;
extern int cdebug;
-extern int print_type;
struct expr *expr_alloc_symbol(struct symbol *sym);
-#ifdef CML1
-struct expr *expr_alloc_one(int token, struct expr *ce);
-struct expr *expr_alloc_two(int token, struct expr *e1, struct expr *e2);
-struct expr *expr_alloc_comp(int token, struct symbol *s1, struct symbol *s2);
-#else
struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
-#endif
struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
struct expr *expr_copy(struct expr *org);
void expr_free(struct expr *e);
int 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
void expr_fprint(struct expr *e, FILE *out);
void print_expr(int mask, struct expr *e, int prevtoken);
-#ifdef CML1
-static inline int expr_is_yes(struct expr *e)
-{
- return !e || (e->token == WORD && e->left.sym == &symbol_yes);
-}
-
-static inline int expr_is_no(struct expr *e)
-{
- return e && (e->token == WORD && e->left.sym == &symbol_no);
-}
-#else
static inline int expr_is_yes(struct expr *e)
{
return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);
@@ -233,7 +186,6 @@ static inline int expr_is_no(struct expr *e)
return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
}
#endif
-#endif
#ifdef __cplusplus
}
diff --git a/extra/config/lex.zconf.c_shipped b/extra/config/lex.zconf.c_shipped
index baad0d09e..22dda11f7 100644
--- a/extra/config/lex.zconf.c_shipped
+++ b/extra/config/lex.zconf.c_shipped
@@ -1,50 +1,84 @@
-#define yy_create_buffer zconf_create_buffer
-#define yy_delete_buffer zconf_delete_buffer
-#define yy_scan_buffer zconf_scan_buffer
-#define yy_scan_string zconf_scan_string
-#define yy_scan_bytes zconf_scan_bytes
-#define yy_flex_debug zconf_flex_debug
-#define yy_init_buffer zconf_init_buffer
-#define yy_flush_buffer zconf_flush_buffer
-#define yy_load_buffer_state zconf_load_buffer_state
-#define yy_switch_to_buffer zconf_switch_to_buffer
-#define yyin zconfin
-#define yyleng zconfleng
-#define yylex zconflex
-#define yyout zconfout
-#define yyrestart zconfrestart
-#define yytext zconftext
-/* A lexical scanner generated by flex */
+#line 3 "lex.zconf.c"
-/* Scanner skeleton version:
- * $Header: /var/cvs/uClibc/extra/config/lex.zconf.c_shipped,v 1.2 2002/11/08 00:47:06 andersen Exp $
- */
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 31
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+/* begin standard C headers. */
#include <stdio.h>
+#include <string.h>
#include <errno.h>
+#include <stdlib.h>
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
+/* end standard C headers. */
+/* flex integer type definitions */
-#ifdef __cplusplus
+#ifndef FLEXINT_H
+#define FLEXINT_H
-#include <stdlib.h>
-#ifndef _WIN32
-#include <unistd.h>
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
+#ifdef __cplusplus
/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST
@@ -53,34 +87,17 @@
#if __STDC__
-#define YY_USE_PROTOS
#define YY_USE_CONST
#endif /* __STDC__ */
#endif /* ! __cplusplus */
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
/* Returned upon end-of-file. */
#define YY_NULL 0
@@ -95,71 +112,71 @@
* but we do it the disgusting crufty way forced on us by the ()-less
* definition of BEGIN.
*/
-#define BEGIN yy_start = 1 + 2 *
+#define BEGIN (yy_start) = 1 + 2 *
/* Translate the current start state into a value that can be later handed
* to BEGIN to return to the state. The YYSTATE alias is for lex
* compatibility.
*/
-#define YY_START ((yy_start - 1) / 2)
+#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START
/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
+#define YY_NEW_FILE zconfrestart(zconfin )
#define YY_END_OF_BUFFER_CHAR 0
/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE 16384
+#endif
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
-extern int yyleng;
-extern FILE *yyin, *yyout;
+extern int zconfleng;
+
+extern FILE *zconfin, *zconfout;
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator). This
- * avoids problems with code like:
- *
- * if ( condition_holds )
- * yyless( 5 );
- * else
- * do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
do \
{ \
- /* Undo effects of setting up yytext. */ \
- *yy_cp = yy_hold_char; \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
YY_RESTORE_YY_MORE_OFFSET \
- yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
} \
while ( 0 )
-#define unput(c) yyunput( c, yytext_ptr )
+#define unput(c) yyunput( c, (yytext_ptr) )
/* The following is because we cannot portably get our hands on size_t
* (without autoconf's help, which isn't available because we want
* flex-generated scanners to compile on their own).
*/
-typedef unsigned int yy_size_t;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef unsigned int yy_size_t;
+#endif
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
{
FILE *yy_input_file;
@@ -196,12 +213,16 @@ struct yy_buffer_state
*/
int yy_at_bol;
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
/* Whether to try to fill the input buffer when we reach the
* end of it.
*/
int yy_fill_buffer;
int yy_buffer_status;
+
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
/* When an EOF's been seen but there's still some text to process
@@ -211,97 +232,126 @@ struct yy_buffer_state
* possible backing-up.
*
* When we actually see the EOF, we change the status to "new"
- * (via yyrestart()), so that the user can continue scanning by
- * just pointing yyin at a new input file.
+ * (via zconfrestart()), so that the user can continue scanning by
+ * just pointing zconfin at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
+
};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-static YY_BUFFER_STATE yy_current_buffer = 0;
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
/* We provide macros for accessing buffer states in case in the
* future we want to put the buffer states in a more general
* "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
*/
-#define YY_CURRENT_BUFFER yy_current_buffer
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-/* yy_hold_char holds the character lost when yytext is formed. */
+/* yy_hold_char holds the character lost when zconftext is formed. */
static char yy_hold_char;
-
static int yy_n_chars; /* number of characters read into yy_ch_buf */
-
-
-int yyleng;
+int zconfleng;
/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 1; /* whether we need to initialize */
static int yy_start = 0; /* start state number */
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin. A bit of a hack ...
+/* Flag which is used to allow zconfwrap()'s to do buffer switches
+ * instead of setting up a fresh zconfin. A bit of a hack ...
*/
static int yy_did_buffer_switch_on_eof;
-void yyrestart YY_PROTO(( FILE *input_file ));
+void zconfrestart (FILE *input_file );
+void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
+void zconf_delete_buffer (YY_BUFFER_STATE b );
+void zconf_flush_buffer (YY_BUFFER_STATE b );
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
+void zconfpop_buffer_state (void );
+
+static void zconfensure_buffer_stack (void );
+static void zconf_load_buffer_state (void );
+static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
+#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
+YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
+void *zconfalloc (yy_size_t );
+void *zconfrealloc (void *,yy_size_t );
+void zconffree (void * );
-#define yy_new_buffer yy_create_buffer
+#define yy_new_buffer zconf_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
- if ( ! yy_current_buffer ) \
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
- yy_current_buffer->yy_is_interactive = is_interactive; \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
}
#define yy_set_bol(at_bol) \
{ \
- if ( ! yy_current_buffer ) \
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
- yy_current_buffer->yy_at_bol = at_bol; \
+ if ( ! YY_CURRENT_BUFFER ){\
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
}
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+/* Begin user sect3 */
-#define yywrap() 1
+#define zconfwrap(n) 1
#define YY_SKIP_YYWRAP
+
typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
+
typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-static yyconst short yy_nxt[][37] =
+
+extern int zconflineno;
+
+int zconflineno = 1;
+
+extern char *zconftext;
+#define yytext_ptr zconftext
+static yyconst flex_int16_t yy_nxt[][38] =
{
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
+ 0, 0, 0, 0, 0, 0, 0, 0
},
{
11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12
+ 12, 12, 12, 12, 12, 12, 12, 12
},
{
@@ -309,21 +359,21 @@ static yyconst short yy_nxt[][37] =
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 12
+ 12, 12, 12, 12, 12, 12, 12, 12
},
{
11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 18, 16, 16, 18, 19, 20, 21,
- 22, 18, 18, 23, 24, 18, 25, 18, 26, 27,
- 18, 28, 29, 30, 18, 18, 16
+ 16, 16, 16, 18, 16, 16, 18, 18, 19, 20,
+ 21, 22, 18, 18, 23, 24, 18, 25, 18, 26,
+ 27, 18, 28, 29, 30, 18, 18, 16
},
{
11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
- 16, 16, 16, 18, 16, 16, 18, 19, 20, 21,
- 22, 18, 18, 23, 24, 18, 25, 18, 26, 27,
- 18, 28, 29, 30, 18, 18, 16
+ 16, 16, 16, 18, 16, 16, 18, 18, 19, 20,
+ 21, 22, 18, 18, 23, 24, 18, 25, 18, 26,
+ 27, 18, 28, 29, 30, 18, 18, 16
},
@@ -331,14 +381,14 @@ static yyconst short yy_nxt[][37] =
11, 31, 32, 33, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31
+ 31, 31, 31, 31, 31, 31, 31, 31
},
{
11, 31, 32, 33, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31
+ 31, 31, 31, 31, 31, 31, 31, 31
},
{
@@ -346,36 +396,36 @@ static yyconst short yy_nxt[][37] =
34, 34, 34, 34, 34, 37, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34
+ 34, 34, 34, 34, 34, 34, 34, 34
},
{
11, 34, 34, 35, 34, 36, 34, 34, 36, 34,
34, 34, 34, 34, 34, 37, 34, 34, 34, 34,
34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34
+ 34, 34, 34, 34, 34, 34, 34, 34
},
{
- 11, 38, 38, 39, 40, 41, 38, 42, 41, 43,
- 44, 45, 46, 46, 47, 38, 46, 46, 46, 46,
- 46, 46, 46, 46, 48, 46, 46, 46, 49, 46,
- 46, 46, 46, 46, 46, 46, 50
+ 11, 38, 38, 39, 40, 41, 42, 43, 41, 44,
+ 45, 46, 47, 47, 48, 49, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 50, 47, 47, 47, 51,
+ 47, 47, 47, 47, 47, 47, 47, 52
},
{
- 11, 38, 38, 39, 40, 41, 38, 42, 41, 43,
- 44, 45, 46, 46, 47, 38, 46, 46, 46, 46,
- 46, 46, 46, 46, 48, 46, 46, 46, 49, 46,
- 46, 46, 46, 46, 46, 46, 50
+ 11, 38, 38, 39, 40, 41, 42, 43, 41, 44,
+ 45, 46, 47, 47, 48, 49, 47, 47, 47, 47,
+ 47, 47, 47, 47, 47, 50, 47, 47, 47, 51,
+ 47, 47, 47, 47, 47, 47, 47, 52
},
{
-11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
-11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
-11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
- -11, -11, -11, -11, -11, -11, -11
+ -11, -11, -11, -11, -11, -11, -11, -11
},
{
@@ -383,36 +433,36 @@ static yyconst short yy_nxt[][37] =
-12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
-12, -12, -12, -12, -12, -12, -12, -12, -12, -12,
- -12, -12, -12, -12, -12, -12, -12
+ -12, -12, -12, -12, -12, -12, -12, -12
},
{
- 11, -13, 51, 52, -13, -13, 53, -13, -13, -13,
+ 11, -13, 53, 54, -13, -13, 55, -13, -13, -13,
-13, -13, -13, -13, -13, -13, -13, -13, -13, -13,
-13, -13, -13, -13, -13, -13, -13, -13, -13, -13,
- -13, -13, -13, -13, -13, -13, -13
+ -13, -13, -13, -13, -13, -13, -13, -13
},
{
11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
-14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
-14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
- -14, -14, -14, -14, -14, -14, -14
+ -14, -14, -14, -14, -14, -14, -14, -14
},
{
- 11, 54, 54, 55, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54
+ 11, 56, 56, 57, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56
},
{
11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
-16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
-16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
- -16, -16, -16, -16, -16, -16, -16
+ -16, -16, -16, -16, -16, -16, -16, -16
},
{
@@ -420,132 +470,132 @@ static yyconst short yy_nxt[][37] =
-17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
-17, -17, -17, -17, -17, -17, -17, -17, -17, -17,
- -17, -17, -17, -17, -17, -17, -17
+ -17, -17, -17, -17, -17, -17, -17, -17
},
{
11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
- -18, -18, -18, 56, -18, -18, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -18
+ -18, -18, -18, 58, -18, -18, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -18
},
{
11, -19, -19, -19, -19, -19, -19, -19, -19, -19,
- -19, -19, -19, 56, -19, -19, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 57, 56,
- 56, 56, 56, 56, 56, 56, -19
+ -19, -19, -19, 58, -19, -19, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 59,
+ 58, 58, 58, 58, 58, 58, 58, -19
},
{
11, -20, -20, -20, -20, -20, -20, -20, -20, -20,
- -20, -20, -20, 56, -20, -20, 56, 56, 56, 56,
- 56, 56, 56, 58, 56, 56, 56, 56, 59, 56,
- 56, 56, 56, 56, 56, 56, -20
+ -20, -20, -20, 58, -20, -20, 58, 58, 58, 58,
+ 58, 58, 58, 58, 60, 58, 58, 58, 58, 61,
+ 58, 58, 58, 58, 58, 58, 58, -20
},
{
11, -21, -21, -21, -21, -21, -21, -21, -21, -21,
- -21, -21, -21, 56, -21, -21, 56, 56, 56, 56,
- 60, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -21
+ -21, -21, -21, 58, -21, -21, 58, 58, 58, 58,
+ 58, 62, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -21
},
{
11, -22, -22, -22, -22, -22, -22, -22, -22, -22,
- -22, -22, -22, 56, -22, -22, 56, 56, 56, 56,
+ -22, -22, -22, 58, -22, -22, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 61, 56, 56,
- 56, 56, 56, 56, 56, 56, -22
+ 58, 58, 58, 58, 58, 58, 58, 58, 63, 58,
+ 58, 58, 58, 58, 58, 58, 58, -22
},
{
11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
- -23, -23, -23, 56, -23, -23, 56, 56, 56, 56,
- 62, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -23
+ -23, -23, -23, 58, -23, -23, 58, 58, 58, 58,
+ 58, 64, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -23
},
{
11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
- -24, -24, -24, 56, -24, -24, 56, 56, 56, 56,
- 56, 63, 56, 56, 56, 56, 56, 64, 56, 56,
- 56, 56, 56, 56, 56, 56, -24
+ -24, -24, -24, 58, -24, -24, 58, 58, 58, 58,
+ 58, 58, 65, 58, 58, 58, 58, 58, 66, 58,
+ 58, 58, 58, 58, 58, 58, 58, -24
},
{
11, -25, -25, -25, -25, -25, -25, -25, -25, -25,
- -25, -25, -25, 56, -25, -25, 65, 56, 56, 56,
- 66, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -25
+ -25, -25, -25, 58, -25, -25, 58, 67, 58, 58,
+ 58, 68, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -25
},
{
11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
- -26, -26, -26, 56, -26, -26, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 67,
- 56, 56, 56, 56, 56, 56, -26
+ -26, -26, -26, 58, -26, -26, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 69, 58, 58, 58, 58, 58, 58, -26
},
{
11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
- -27, -27, -27, 56, -27, -27, 56, 56, 56, 56,
+ -27, -27, -27, 58, -27, -27, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 68, 56, 56, 56, 56, -27
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 70, 58, 58, 58, 58, -27
},
{
11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
- -28, -28, -28, 56, -28, -28, 56, 56, 56, 56,
- 69, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -28
+ -28, -28, -28, 58, -28, -28, 58, 71, 58, 58,
+ 58, 72, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -28
},
{
11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
- -29, -29, -29, 56, -29, -29, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 70, 56,
- 56, 56, 56, 71, 56, 56, -29
+ -29, -29, -29, 58, -29, -29, 58, 58, 58, 58,
+ 58, 73, 58, 58, 58, 58, 58, 58, 58, 74,
+ 58, 58, 58, 58, 75, 58, 58, -29
},
{
11, -30, -30, -30, -30, -30, -30, -30, -30, -30,
- -30, -30, -30, 56, -30, -30, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 72, 56, 56, 56, 56, -30
+ -30, -30, -30, 58, -30, -30, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 76, 58, 58, 58, 58, -30
},
{
- 11, 73, 73, -31, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73
+ 11, 77, 77, -31, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77
},
{
- 11, -32, 74, 75, -32, -32, -32, -32, -32, -32,
+ 11, -32, 78, 79, -32, -32, -32, -32, -32, -32,
-32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
-32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
- -32, -32, -32, -32, -32, -32, -32
+ -32, -32, -32, -32, -32, -32, -32, -32
},
{
- 11, 76, -33, -33, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76
+ 11, 80, -33, -33, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80
},
{
- 11, 77, 77, 78, 77, -34, 77, 77, -34, 77,
- 77, 77, 77, 77, 77, -34, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77
+ 11, 81, 81, 82, 81, -34, 81, 81, -34, 81,
+ 81, 81, 81, 81, 81, -34, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81
},
@@ -553,125 +603,125 @@ static yyconst short yy_nxt[][37] =
11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
-35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
-35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
- -35, -35, -35, -35, -35, -35, -35
+ -35, -35, -35, -35, -35, -35, -35, -35
},
{
11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
-36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
-36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
- -36, -36, -36, -36, -36, -36, -36
+ -36, -36, -36, -36, -36, -36, -36, -36
},
{
- 11, 79, 79, 80, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 11, 83, 83, 84, 83, 83, 83, 83, 83, 83,
+ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 79
+ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
+ 83, 83, 83, 83, 83, 83, 83, 83
},
{
11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
-38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
-38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
- -38, -38, -38, -38, -38, -38, -38
+ -38, -38, -38, -38, -38, -38, -38, -38
},
{
11, -39, -39, -39, -39, -39, -39, -39, -39, -39,
-39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
-39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
- -39, -39, -39, -39, -39, -39, -39
+ -39, -39, -39, -39, -39, -39, -39, -39
},
{
11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
- -40, -40, -40, -40, 81, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, 85, -40, -40, -40, -40, -40,
-40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
- -40, -40, -40, -40, -40, -40, -40
+ -40, -40, -40, -40, -40, -40, -40, -40
},
{
11, -41, -41, -41, -41, -41, -41, -41, -41, -41,
-41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
-41, -41, -41, -41, -41, -41, -41, -41, -41, -41,
- -41, -41, -41, -41, -41, -41, -41
+ -41, -41, -41, -41, -41, -41, -41, -41
},
{
- 11, -42, -42, -42, -42, -42, -42, 82, -42, -42,
- -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
+ 11, 86, 86, -42, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
- -42, -42, -42, -42, -42, -42, -42, -42, -42, -42,
- -42, -42, -42, -42, -42, -42, -42
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86
},
{
- 11, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ 11, -43, -43, -43, -43, -43, -43, 87, -43, -43,
-43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
-43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
- -43, -43, -43, -43, -43, -43, -43
+ -43, -43, -43, -43, -43, -43, -43, -43
},
{
11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
-44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
-44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
- -44, -44, -44, -44, -44, -44, -44
+ -44, -44, -44, -44, -44, -44, -44, -44
},
{
11, -45, -45, -45, -45, -45, -45, -45, -45, -45,
- -45, 83, 84, 84, -45, -45, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -45
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
+ -45, -45, -45, -45, -45, -45, -45, -45
},
{
11, -46, -46, -46, -46, -46, -46, -46, -46, -46,
- -46, 84, 84, 84, -46, -46, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -46
+ -46, 88, 89, 89, -46, -46, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -46
},
{
11, -47, -47, -47, -47, -47, -47, -47, -47, -47,
- -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
+ -47, 89, 89, 89, -47, -47, 89, 89, 89, 89,
- -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
- -47, -47, -47, -47, -47, -47, -47
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -47
},
{
11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
- -48, 84, 84, 84, -48, -48, 84, 84, 84, 84,
- 84, 85, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -48
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48, -48
},
{
- 11, -49, -49, -49, -49, -49, -49, -49, -49, -49,
- -49, 84, 84, 84, -49, -49, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 86, 84, 84,
- 84, 84, 84, 84, 84, 84, -49
+ 11, -49, -49, 90, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49, -49, -49,
+ -49, -49, -49, -49, -49, -49, -49, -49
},
{
11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
- -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
- -50, -50, -50, -50, -50, -50, -50, -50, -50, -50,
- -50, -50, -50, -50, -50, -50, 87
+ -50, 89, 89, 89, -50, -50, 89, 89, 89, 89,
+ 89, 89, 91, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -50
},
{
- 11, -51, 51, 52, -51, -51, 53, -51, -51, -51,
- -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
- -51, -51, -51, -51, -51, -51, -51, -51, -51, -51,
- -51, -51, -51, -51, -51, -51, -51
+ 11, -51, -51, -51, -51, -51, -51, -51, -51, -51,
+ -51, 89, 89, 89, -51, -51, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 92, 89,
+ 89, 89, 89, 89, 89, 89, 89, -51
},
{
@@ -679,206 +729,206 @@ static yyconst short yy_nxt[][37] =
-52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
-52, -52, -52, -52, -52, -52, -52, -52, -52, -52,
- -52, -52, -52, -52, -52, -52, -52
+ -52, -52, -52, -52, -52, -52, -52, 93
},
{
- 11, 54, 54, 55, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54
+ 11, -53, 53, 54, -53, -53, 55, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53, -53
},
{
- 11, 54, 54, 55, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
- 54, 54, 54, 54, 54, 54, 54
+ 11, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54, -54, -54,
+ -54, -54, -54, -54, -54, -54, -54, -54
},
{
- 11, -55, -55, -55, -55, -55, -55, -55, -55, -55,
- -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
- -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
- -55, -55, -55, -55, -55, -55, -55
+ 11, 56, 56, 57, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56
},
{
- 11, -56, -56, -56, -56, -56, -56, -56, -56, -56,
- -56, -56, -56, 56, -56, -56, 56, 56, 56, 56,
+ 11, 56, 56, 57, 56, 56, 56, 56, 56, 56,
56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -56
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56
},
{
11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
- -57, -57, -57, 56, -57, -57, 56, 56, 56, 56,
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
- 56, 56, 56, 56, 56, 56, 56, 56, 88, 56,
- 56, 56, 56, 56, 56, 56, -57
+ -57, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, -57, -57, -57, -57, -57, -57, -57
},
{
11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
- -58, -58, -58, 56, -58, -58, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 89, 56,
- 56, 56, 56, 56, 56, 56, -58
+ -58, -58, -58, 58, -58, -58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -58
},
{
11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
- -59, -59, -59, 56, -59, -59, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 90, 91, 56, 56,
- 56, 56, 56, 56, 56, 56, -59
+ -59, -59, -59, 58, -59, -59, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 94,
+ 58, 58, 58, 58, 58, 58, 58, -59
},
{
11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
- -60, -60, -60, 56, -60, -60, 56, 56, 56, 56,
- 56, 92, 56, 56, 56, 56, 56, 56, 56, 93,
- 56, 56, 56, 56, 56, 56, -60
+ -60, -60, -60, 58, -60, -60, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 95,
+ 58, 58, 58, 58, 58, 58, 58, -60
},
{
11, -61, -61, -61, -61, -61, -61, -61, -61, -61,
- -61, -61, -61, 56, -61, -61, 56, 56, 56, 94,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -61
+ -61, -61, -61, 58, -61, -61, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 96, 97, 58,
+ 58, 58, 58, 58, 58, 58, 58, -61
},
{
11, -62, -62, -62, -62, -62, -62, -62, -62, -62,
- -62, -62, -62, 56, -62, -62, 56, 56, 56, 56,
+ -62, -62, -62, 58, -62, -62, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 95, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 96, -62
+ 58, 58, 98, 58, 58, 58, 58, 58, 58, 58,
+ 99, 58, 58, 58, 58, 58, 58, -62
},
{
11, -63, -63, -63, -63, -63, -63, -63, -63, -63,
- -63, -63, -63, 56, -63, -63, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -63
+ -63, -63, -63, 58, -63, -63, 58, 100, 58, 58,
+ 101, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -63
},
{
11, -64, -64, -64, -64, -64, -64, -64, -64, -64,
- -64, -64, -64, 56, -64, -64, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 97, 56, 56, -64
+ -64, -64, -64, 58, -64, -64, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 102, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 103, -64
},
{
11, -65, -65, -65, -65, -65, -65, -65, -65, -65,
- -65, -65, -65, 56, -65, -65, 56, 56, 56, 56,
- 56, 56, 56, 56, 98, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -65
+ -65, -65, -65, 58, -65, -65, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -65
},
{
11, -66, -66, -66, -66, -66, -66, -66, -66, -66,
- -66, -66, -66, 56, -66, -66, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 99, 56, 56,
- 56, 56, 56, 56, 56, 56, -66
+ -66, -66, -66, 58, -66, -66, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 104, 58, 58, -66
},
{
11, -67, -67, -67, -67, -67, -67, -67, -67, -67,
- -67, -67, -67, 56, -67, -67, 56, 56, 56, 56,
+ -67, -67, -67, 58, -67, -67, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 100, 56, 56, -67
+ 58, 58, 58, 58, 58, 105, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -67
},
{
11, -68, -68, -68, -68, -68, -68, -68, -68, -68,
- -68, -68, -68, 56, -68, -68, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 101, 56,
- 56, 56, 56, 56, 56, 56, -68
+ -68, -68, -68, 58, -68, -68, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 106, 58,
+ 58, 58, 58, 58, 58, 58, 58, -68
},
{
11, -69, -69, -69, -69, -69, -69, -69, -69, -69,
- -69, -69, -69, 56, -69, -69, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 102, 56, 56, 56, 56, 56, -69
+ -69, -69, -69, 58, -69, -69, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 107, 58, 58, -69
},
{
11, -70, -70, -70, -70, -70, -70, -70, -70, -70,
- -70, -70, -70, 56, -70, -70, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 103, 56, -70
+ -70, -70, -70, 58, -70, -70, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 108,
+ 58, 58, 58, 58, 58, 58, 58, -70
},
{
11, -71, -71, -71, -71, -71, -71, -71, -71, -71,
- -71, -71, -71, 56, -71, -71, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 104, 56, 56, 56, 56, -71
+ -71, -71, -71, 58, -71, -71, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 109, 58,
+ 58, 58, 58, 58, 58, 58, 58, -71
},
{
11, -72, -72, -72, -72, -72, -72, -72, -72, -72,
- -72, -72, -72, 56, -72, -72, 56, 56, 56, 56,
+ -72, -72, -72, 58, -72, -72, 58, 58, 58, 58,
- 56, 56, 56, 56, 105, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -72
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 110, 58, 58, 58, 58, 58, -72
},
{
- 11, 73, 73, -73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
- 73, 73, 73, 73, 73, 73, 73
+ 11, -73, -73, -73, -73, -73, -73, -73, -73, -73,
+ -73, -73, -73, 58, -73, -73, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 111, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -73
},
{
- 11, -74, 74, 75, -74, -74, -74, -74, -74, -74,
- -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
- -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
- -74, -74, -74, -74, -74, -74, -74
+ 11, -74, -74, -74, -74, -74, -74, -74, -74, -74,
+ -74, -74, -74, 58, -74, -74, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 112, 58, -74
},
{
11, -75, -75, -75, -75, -75, -75, -75, -75, -75,
- -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
- -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
- -75, -75, -75, -75, -75, -75, -75
+ -75, -75, -75, 58, -75, -75, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 113, 58, 58, 58, 58, -75
},
{
11, -76, -76, -76, -76, -76, -76, -76, -76, -76,
- -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
- -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
- -76, -76, -76, -76, -76, -76, -76
+ -76, -76, -76, 58, -76, -76, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 114, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -76
},
{
- 11, 77, 77, 78, 77, -77, 77, 77, -77, 77,
- 77, 77, 77, 77, 77, -77, 77, 77, 77, 77,
+ 11, 77, 77, -77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77
+ 77, 77, 77, 77, 77, 77, 77, 77
},
{
- 11, -78, -78, -78, -78, -78, -78, -78, -78, -78,
+ 11, -78, 78, 79, -78, -78, -78, -78, -78, -78,
-78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
-78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
- -78, -78, -78, -78, -78, -78, -78
+ -78, -78, -78, -78, -78, -78, -78, -78
},
{
- 11, -79, -79, 80, -79, -79, -79, -79, -79, -79,
- -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
- -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
- -79, -79, -79, -79, -79, -79, -79
+ 11, 80, -79, -79, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80
},
@@ -886,14 +936,14 @@ static yyconst short yy_nxt[][37] =
11, -80, -80, -80, -80, -80, -80, -80, -80, -80,
-80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
-80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
- -80, -80, -80, -80, -80, -80, -80
+ -80, -80, -80, -80, -80, -80, -80, -80
},
{
- 11, -81, -81, -81, -81, -81, -81, -81, -81, -81,
- -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
- -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
- -81, -81, -81, -81, -81, -81, -81
+ 11, 81, 81, 82, 81, -81, 81, 81, -81, 81,
+ 81, 81, 81, 81, 81, -81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
+ 81, 81, 81, 81, 81, 81, 81, 81
},
{
@@ -901,36 +951,36 @@ static yyconst short yy_nxt[][37] =
-82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
-82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
- -82, -82, -82, -82, -82, -82, -82
+ -82, -82, -82, -82, -82, -82, -82, -82
},
{
- 11, -83, -83, -83, -83, -83, -83, -83, -83, -83,
- -83, 106, 84, 84, -83, -83, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -83
+ 11, -83, -83, 84, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
+ -83, -83, -83, -83, -83, -83, -83, -83
},
{
11, -84, -84, -84, -84, -84, -84, -84, -84, -84,
- -84, 84, 84, 84, -84, -84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -84
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
+ -84, -84, -84, -84, -84, -84, -84, -84
},
{
11, -85, -85, -85, -85, -85, -85, -85, -85, -85,
- -85, 84, 84, 84, -85, -85, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -85
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
+ -85, -85, -85, -85, -85, -85, -85, -85
},
{
- 11, -86, -86, -86, -86, -86, -86, -86, -86, -86,
- -86, 84, 84, 84, -86, -86, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -86
+ 11, 86, 86, -86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
+ 86, 86, 86, 86, 86, 86, 86, 86
},
{
@@ -938,674 +988,973 @@ static yyconst short yy_nxt[][37] =
-87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
-87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
- -87, -87, -87, -87, -87, -87, -87
+ -87, -87, -87, -87, -87, -87, -87, -87
},
{
11, -88, -88, -88, -88, -88, -88, -88, -88, -88,
- -88, -88, -88, 56, -88, -88, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 107, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -88
+ -88, 115, 89, 89, -88, -88, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -88
},
{
11, -89, -89, -89, -89, -89, -89, -89, -89, -89,
- -89, -89, -89, 56, -89, -89, 56, 56, 56, 56,
- 56, 56, 56, 56, 108, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -89
+ -89, 89, 89, 89, -89, -89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -89
},
{
11, -90, -90, -90, -90, -90, -90, -90, -90, -90,
- -90, -90, -90, 56, -90, -90, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 109, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -90
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
+ -90, -90, -90, -90, -90, -90, -90, -90
},
{
11, -91, -91, -91, -91, -91, -91, -91, -91, -91,
- -91, -91, -91, 56, -91, -91, 56, 56, 56, 56,
- 56, 110, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -91
+ -91, 89, 89, 89, -91, -91, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -91
},
{
11, -92, -92, -92, -92, -92, -92, -92, -92, -92,
- -92, -92, -92, 56, -92, -92, 111, 56, 56, 56,
+ -92, 89, 89, 89, -92, -92, 89, 89, 89, 89,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -92
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -92
},
{
11, -93, -93, -93, -93, -93, -93, -93, -93, -93,
- -93, -93, -93, 56, -93, -93, 56, 56, 56, 56,
- 112, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -93
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
+ -93, -93, -93, -93, -93, -93, -93, -93
},
{
11, -94, -94, -94, -94, -94, -94, -94, -94, -94,
- -94, -94, -94, 56, -94, -94, 56, 56, 113, 56,
- 56, 56, 56, 56, 114, 56, 115, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -94
+ -94, -94, -94, 58, -94, -94, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 116, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -94
},
{
11, -95, -95, -95, -95, -95, -95, -95, -95, -95,
- -95, -95, -95, 56, -95, -95, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 116,
- 56, 56, 56, 56, 56, 56, -95
+ -95, -95, -95, 58, -95, -95, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 117, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -95
},
{
11, -96, -96, -96, -96, -96, -96, -96, -96, -96,
- -96, -96, -96, 56, -96, -96, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -96
+ -96, -96, -96, 58, -96, -96, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 118, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -96
},
{
11, -97, -97, -97, -97, -97, -97, -97, -97, -97,
- -97, -97, -97, 56, -97, -97, 56, 56, 56, 56,
+ -97, -97, -97, 58, -97, -97, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -97
+ 58, 58, 119, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -97
},
{
11, -98, -98, -98, -98, -98, -98, -98, -98, -98,
- -98, -98, -98, 56, -98, -98, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 117, 56, 56,
- 56, 56, 56, 56, 56, 56, -98
+ -98, -98, -98, 58, -98, -98, 120, 121, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -98
},
{
11, -99, -99, -99, -99, -99, -99, -99, -99, -99,
- -99, -99, -99, 56, -99, -99, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 118, 56, -99
+ -99, -99, -99, 58, -99, -99, 58, 58, 58, 58,
+ 58, 122, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -99
},
{
11, -100, -100, -100, -100, -100, -100, -100, -100, -100,
- -100, -100, -100, 56, -100, -100, 56, 56, 56, 56,
- 56, 56, 56, 56, 119, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -100
+ -100, -100, -100, 58, -100, -100, 58, 58, 123, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -100
},
{
11, -101, -101, -101, -101, -101, -101, -101, -101, -101,
- -101, -101, -101, 56, -101, -101, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 120, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -101
+ -101, -101, -101, 58, -101, -101, 58, 58, 58, 124,
+ 58, 58, 58, 58, 58, 125, 58, 126, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -101
},
{
11, -102, -102, -102, -102, -102, -102, -102, -102, -102,
- -102, -102, -102, 56, -102, -102, 56, 56, 56, 56,
+ -102, -102, -102, 58, -102, -102, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 121, 56, -102
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 127, 58, 58, 58, 58, 58, 58, -102
},
{
11, -103, -103, -103, -103, -103, -103, -103, -103, -103,
- -103, -103, -103, 56, -103, -103, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 122, 56, 56, 56, 56, -103
+ -103, -103, -103, 58, -103, -103, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -103
},
{
11, -104, -104, -104, -104, -104, -104, -104, -104, -104,
- -104, -104, -104, 56, -104, -104, 56, 56, 56, 56,
- 56, 56, 56, 56, 123, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -104
+ -104, -104, -104, 58, -104, -104, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -104
},
{
11, -105, -105, -105, -105, -105, -105, -105, -105, -105,
- -105, -105, -105, 56, -105, -105, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 124, 56, 56, 56, -105
+ -105, -105, -105, 58, -105, -105, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 128, 58,
+ 58, 58, 58, 58, 58, 58, 58, -105
},
{
11, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, 84, 84, 84, -106, -106, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
- 84, 84, 84, 84, 84, 84, -106
+ -106, -106, -106, 58, -106, -106, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 129, 58, -106
},
{
11, -107, -107, -107, -107, -107, -107, -107, -107, -107,
- -107, -107, -107, 56, -107, -107, 56, 56, 56, 56,
+ -107, -107, -107, 58, -107, -107, 58, 58, 58, 58,
- 125, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -107
+ 58, 58, 58, 58, 58, 130, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -107
},
{
11, -108, -108, -108, -108, -108, -108, -108, -108, -108,
- -108, -108, -108, 56, -108, -108, 56, 56, 126, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -108
+ -108, -108, -108, 58, -108, -108, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 131, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -108
},
{
11, -109, -109, -109, -109, -109, -109, -109, -109, -109,
- -109, -109, -109, 56, -109, -109, 56, 56, 56, 56,
- 127, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -109
+ -109, -109, -109, 58, -109, -109, 58, 58, 58, 58,
+ 58, 58, 58, 132, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -109
},
{
11, -110, -110, -110, -110, -110, -110, -110, -110, -110,
- -110, -110, -110, 56, -110, -110, 56, 56, 56, 56,
- 56, 56, 56, 56, 128, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -110
+ -110, -110, -110, 58, -110, -110, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 133, 58, -110
},
{
11, -111, -111, -111, -111, -111, -111, -111, -111, -111,
- -111, -111, -111, 56, -111, -111, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 129, 56, -111
+ -111, -111, -111, 58, -111, -111, 58, 58, 58, 58,
+ 58, 134, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -111
},
{
11, -112, -112, -112, -112, -112, -112, -112, -112, -112,
- -112, -112, -112, 56, -112, -112, 56, 56, 56, 56,
+ -112, -112, -112, 58, -112, -112, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 130, 56, 56,
- 56, 56, 56, 56, 56, 56, -112
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 135, 58, 58, 58, 58, -112
},
{
11, -113, -113, -113, -113, -113, -113, -113, -113, -113,
- -113, -113, -113, 56, -113, -113, 56, 56, 56, 56,
- 56, 56, 56, 131, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -113
+ -113, -113, -113, 58, -113, -113, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 136, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -113
},
{
11, -114, -114, -114, -114, -114, -114, -114, -114, -114,
- -114, -114, -114, 56, -114, -114, 56, 56, 56, 56,
- 56, 132, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -114
+ -114, -114, -114, 58, -114, -114, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 137, 58, 58, 58, -114
},
{
11, -115, -115, -115, -115, -115, -115, -115, -115, -115,
- -115, -115, -115, 56, -115, -115, 56, 56, 56, 56,
- 133, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -115
+ -115, 89, 89, 89, -115, -115, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
+ 89, 89, 89, 89, 89, 89, 89, -115
},
{
11, -116, -116, -116, -116, -116, -116, -116, -116, -116,
- -116, -116, -116, 56, -116, -116, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -116
+ -116, -116, -116, 58, -116, -116, 58, 58, 58, 58,
+ 58, 138, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -116
},
{
11, -117, -117, -117, -117, -117, -117, -117, -117, -117,
- -117, -117, -117, 56, -117, -117, 56, 56, 56, 56,
+ -117, -117, -117, 58, -117, -117, 58, 58, 58, 139,
- 56, 56, 56, 56, 56, 56, 134, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -117
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -117
},
{
11, -118, -118, -118, -118, -118, -118, -118, -118, -118,
- -118, -118, -118, 56, -118, -118, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -118
+ -118, -118, -118, 58, -118, -118, 58, 58, 58, 58,
+ 58, 140, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -118
},
{
11, -119, -119, -119, -119, -119, -119, -119, -119, -119,
- -119, -119, -119, 56, -119, -119, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 135, 56,
- 56, 56, 56, 56, 56, 56, -119
+ -119, -119, -119, 58, -119, -119, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 141, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -119
},
{
11, -120, -120, -120, -120, -120, -120, -120, -120, -120,
- -120, -120, -120, 56, -120, -120, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 136,
- 56, 56, 56, 56, 56, 56, -120
+ -120, -120, -120, 58, -120, -120, 58, 58, 142, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 143, 58, 58, -120
},
{
11, -121, -121, -121, -121, -121, -121, -121, -121, -121,
- -121, -121, -121, 56, -121, -121, 56, 56, 56, 56,
- 56, 56, 56, 56, 137, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -121
+ -121, -121, -121, 58, -121, -121, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 144, 58, -121
},
{
11, -122, -122, -122, -122, -122, -122, -122, -122, -122,
- -122, -122, -122, 56, -122, -122, 56, 56, 138, 56,
+ -122, -122, -122, 58, -122, -122, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -122
+ 58, 58, 58, 58, 58, 58, 58, 58, 145, 58,
+ 58, 58, 58, 58, 58, 58, 58, -122
},
{
11, -123, -123, -123, -123, -123, -123, -123, -123, -123,
- -123, -123, -123, 56, -123, -123, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 139, 56, 56,
- 56, 56, 56, 56, 56, 56, -123
+ -123, -123, -123, 58, -123, -123, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 146, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -123
},
{
11, -124, -124, -124, -124, -124, -124, -124, -124, -124,
- -124, -124, -124, 56, -124, -124, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 140, 56, 56, -124
+ -124, -124, -124, 58, -124, -124, 58, 58, 58, 58,
+ 58, 58, 58, 58, 147, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -124
},
{
11, -125, -125, -125, -125, -125, -125, -125, -125, -125,
- -125, -125, -125, 56, -125, -125, 141, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -125
+ -125, -125, -125, 58, -125, -125, 58, 58, 58, 58,
+ 58, 58, 148, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -125
},
{
11, -126, -126, -126, -126, -126, -126, -126, -126, -126,
- -126, -126, -126, 56, -126, -126, 56, 56, 56, 56,
- 142, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -126
+ -126, -126, -126, 58, -126, -126, 58, 58, 58, 58,
+ 58, 149, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -126
},
{
11, -127, -127, -127, -127, -127, -127, -127, -127, -127,
- -127, -127, -127, 56, -127, -127, 56, 56, 56, 56,
+ -127, -127, -127, 58, -127, -127, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 143, 56, 56,
- 56, 56, 56, 56, 56, 56, -127
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -127
},
{
11, -128, -128, -128, -128, -128, -128, -128, -128, -128,
- -128, -128, -128, 56, -128, -128, 56, 56, 56, 56,
- 56, 56, 144, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -128
+ -128, -128, -128, 58, -128, -128, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 150, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -128
},
{
11, -129, -129, -129, -129, -129, -129, -129, -129, -129,
- -129, -129, -129, 56, -129, -129, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 145, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -129
+ -129, -129, -129, 58, -129, -129, 58, 58, 58, 151,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -129
},
{
11, -130, -130, -130, -130, -130, -130, -130, -130, -130,
- -130, -130, -130, 56, -130, -130, 56, 56, 56, 146,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -130
+ -130, -130, -130, 58, -130, -130, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 152,
+ 58, 58, 58, 58, 58, 58, 58, -130
},
{
11, -131, -131, -131, -131, -131, -131, -131, -131, -131,
- -131, -131, -131, 56, -131, -131, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 147, 56,
- 56, 56, 56, 56, 56, 56, -131
+ -131, -131, -131, 58, -131, -131, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 153, 58, 58, 58, 58, 58, 58, -131
},
{
11, -132, -132, -132, -132, -132, -132, -132, -132, -132,
- -132, -132, -132, 56, -132, -132, 56, 56, 56, 56,
+ -132, -132, -132, 58, -132, -132, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -132
+ 58, 154, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -132
},
{
11, -133, -133, -133, -133, -133, -133, -133, -133, -133,
- -133, -133, -133, 56, -133, -133, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 148, 56, 56,
- 56, 56, 56, 56, 56, 56, -133
+ -133, -133, -133, 58, -133, -133, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 155, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -133
},
{
11, -134, -134, -134, -134, -134, -134, -134, -134, -134,
- -134, -134, -134, 56, -134, -134, 56, 56, 56, 56,
- 149, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -134
+ -134, -134, -134, 58, -134, -134, 58, 58, 58, 156,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -134
},
{
11, -135, -135, -135, -135, -135, -135, -135, -135, -135,
- -135, -135, -135, 56, -135, -135, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 150, 56, 56,
- 56, 56, 56, 56, 56, 56, -135
+ -135, -135, -135, 58, -135, -135, 58, 58, 58, 157,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -135
},
{
11, -136, -136, -136, -136, -136, -136, -136, -136, -136,
- -136, -136, -136, 56, -136, -136, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 151, 56, 56, -136
+ -136, -136, -136, 58, -136, -136, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 158, 58,
+ 58, 58, 58, 58, 58, 58, 58, -136
},
{
11, -137, -137, -137, -137, -137, -137, -137, -137, -137,
- -137, -137, -137, 56, -137, -137, 56, 56, 56, 56,
+ -137, -137, -137, 58, -137, -137, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 152, 56, 56, 56, 56, -137
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 159, 58, 58, -137
},
{
11, -138, -138, -138, -138, -138, -138, -138, -138, -138,
- -138, -138, -138, 56, -138, -138, 56, 56, 56, 56,
- 153, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -138
+ -138, -138, -138, 58, -138, -138, 58, 160, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -138
},
{
11, -139, -139, -139, -139, -139, -139, -139, -139, -139,
- -139, -139, -139, 56, -139, -139, 56, 56, 56, 56,
- 56, 56, 154, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -139
+ -139, -139, -139, 58, -139, -139, 58, 58, 58, 58,
+ 58, 161, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -139
},
{
11, -140, -140, -140, -140, -140, -140, -140, -140, -140,
- -140, -140, -140, 56, -140, -140, 155, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -140
+ -140, -140, -140, 58, -140, -140, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 162, 58,
+ 58, 58, 58, 58, 58, 58, 58, -140
},
{
11, -141, -141, -141, -141, -141, -141, -141, -141, -141,
- -141, -141, -141, 56, -141, -141, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 156, 56, 56,
- 56, 56, 56, 56, 56, 56, -141
+ -141, -141, -141, 58, -141, -141, 58, 58, 58, 58,
+ 58, 58, 58, 163, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -141
},
{
11, -142, -142, -142, -142, -142, -142, -142, -142, -142,
- -142, -142, -142, 56, -142, -142, 56, 56, 56, 56,
+ -142, -142, -142, 58, -142, -142, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -142
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 164,
+ 58, 58, 58, 58, 58, 58, 58, -142
},
{
11, -143, -143, -143, -143, -143, -143, -143, -143, -143,
- -143, -143, -143, 56, -143, -143, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 157, 56, 56, -143
+ -143, -143, -143, 58, -143, -143, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 165, 58, 58, 58, 58, -143
},
{
11, -144, -144, -144, -144, -144, -144, -144, -144, -144,
- -144, -144, -144, 56, -144, -144, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -144
+ -144, -144, -144, 58, -144, -144, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 166, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -144
},
{
11, -145, -145, -145, -145, -145, -145, -145, -145, -145,
- -145, -145, -145, 56, -145, -145, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 158, 56, 56, -145
+ -145, -145, -145, 58, -145, -145, 58, 58, 58, 58,
+ 167, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -145
},
{
11, -146, -146, -146, -146, -146, -146, -146, -146, -146,
- -146, -146, -146, 56, -146, -146, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 159, 56, 56, 56, -146
+ -146, -146, -146, 58, -146, -146, 58, 58, 58, 58,
+ 58, 168, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -146
},
{
11, -147, -147, -147, -147, -147, -147, -147, -147, -147,
- -147, -147, -147, 56, -147, -147, 56, 56, 56, 56,
+ -147, -147, -147, 58, -147, -147, 58, 58, 58, 58,
- 56, 56, 56, 56, 160, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -147
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 169,
+ 58, 58, 58, 58, 58, 58, 58, -147
},
{
11, -148, -148, -148, -148, -148, -148, -148, -148, -148,
- -148, -148, -148, 56, -148, -148, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 161, 56, -148
+ -148, -148, -148, 58, -148, -148, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -148
},
{
11, -149, -149, -149, -149, -149, -149, -149, -149, -149,
- -149, -149, -149, 56, -149, -149, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 162, 56, 56,
- 56, 56, 56, 56, 56, 56, -149
+ -149, -149, -149, 58, -149, -149, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 170, 58,
+ 58, 58, 58, 58, 58, 58, 58, -149
},
{
11, -150, -150, -150, -150, -150, -150, -150, -150, -150,
- -150, -150, -150, 56, -150, -150, 163, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -150
+ -150, -150, -150, 58, -150, -150, 58, 58, 58, 58,
+ 58, 171, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -150
},
{
11, -151, -151, -151, -151, -151, -151, -151, -151, -151,
- -151, -151, -151, 56, -151, -151, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -151
+ -151, -151, -151, 58, -151, -151, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 172,
+ 58, 58, 58, 58, 58, 58, 58, -151
},
{
11, -152, -152, -152, -152, -152, -152, -152, -152, -152,
- -152, -152, -152, 56, -152, -152, 56, 56, 56, 56,
+ -152, -152, -152, 58, -152, -152, 58, 58, 58, 58,
- 164, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -152
+ 58, 58, 58, 58, 58, 58, 58, 58, 173, 58,
+ 58, 58, 58, 58, 58, 58, 58, -152
},
{
11, -153, -153, -153, -153, -153, -153, -153, -153, -153,
- -153, -153, -153, 56, -153, -153, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -153
+ -153, -153, -153, 58, -153, -153, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 174, 58, 58, -153
},
{
11, -154, -154, -154, -154, -154, -154, -154, -154, -154,
- -154, -154, -154, 56, -154, -154, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -154
+ -154, -154, -154, 58, -154, -154, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -154
},
{
11, -155, -155, -155, -155, -155, -155, -155, -155, -155,
- -155, -155, -155, 56, -155, -155, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 165, 56, 56, -155
+ -155, -155, -155, 58, -155, -155, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 175, 58, 58, 58, 58, -155
},
{
11, -156, -156, -156, -156, -156, -156, -156, -156, -156,
- -156, -156, -156, 56, -156, -156, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -156
+ -156, -156, -156, 58, -156, -156, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 176, 58, 58, -156
},
{
11, -157, -157, -157, -157, -157, -157, -157, -157, -157,
- -157, -157, -157, 56, -157, -157, 56, 56, 56, 56,
+ -157, -157, -157, 58, -157, -157, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -157
+ 58, 177, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -157
},
{
11, -158, -158, -158, -158, -158, -158, -158, -158, -158,
- -158, -158, -158, 56, -158, -158, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -158
+ -158, -158, -158, 58, -158, -158, 58, 58, 58, 58,
+ 58, 58, 58, 178, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -158
},
{
11, -159, -159, -159, -159, -159, -159, -159, -159, -159,
- -159, -159, -159, 56, -159, -159, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -159
+ -159, -159, -159, 58, -159, -159, 58, 179, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -159
},
{
11, -160, -160, -160, -160, -160, -160, -160, -160, -160,
- -160, -160, -160, 56, -160, -160, 56, 56, 166, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -160
+ -160, -160, -160, 58, -160, -160, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 180, 58,
+ 58, 58, 58, 58, 58, 58, 58, -160
},
{
11, -161, -161, -161, -161, -161, -161, -161, -161, -161,
- -161, -161, -161, 56, -161, -161, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -161
+ -161, -161, -161, 58, -161, -161, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -161
},
{
11, -162, -162, -162, -162, -162, -162, -162, -162, -162,
- -162, -162, -162, 56, -162, -162, 56, 56, 56, 56,
+ -162, -162, -162, 58, -162, -162, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 167, 56, -162
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 181, 58, 58, -162
},
{
11, -163, -163, -163, -163, -163, -163, -163, -163, -163,
- -163, -163, -163, 56, -163, -163, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 168, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -163
+ -163, -163, -163, 58, -163, -163, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -163
},
{
11, -164, -164, -164, -164, -164, -164, -164, -164, -164,
- -164, -164, -164, 56, -164, -164, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 169, 56, 56, 56, -164
+ -164, -164, -164, 58, -164, -164, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 182,
+ 58, 58, 58, 58, 58, 58, 58, -164
},
{
11, -165, -165, -165, -165, -165, -165, -165, -165, -165,
- -165, -165, -165, 56, -165, -165, 56, 56, 56, 56,
- 170, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -165
+ -165, -165, -165, 58, -165, -165, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 183, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -165
},
{
11, -166, -166, -166, -166, -166, -166, -166, -166, -166,
- -166, -166, -166, 56, -166, -166, 56, 56, 56, 56,
- 171, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -166
+ -166, -166, -166, 58, -166, -166, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 184, 58, 58, -166
},
{
11, -167, -167, -167, -167, -167, -167, -167, -167, -167,
- -167, -167, -167, 56, -167, -167, 56, 56, 56, 56,
+ -167, -167, -167, 58, -167, -167, 58, 58, 58, 58,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -167
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 185, 58, 58, 58, -167
},
{
11, -168, -168, -168, -168, -168, -168, -168, -168, -168,
- -168, -168, -168, 56, -168, -168, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -168
+ -168, -168, -168, 58, -168, -168, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -168
},
{
11, -169, -169, -169, -169, -169, -169, -169, -169, -169,
- -169, -169, -169, 56, -169, -169, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -169
+ -169, -169, -169, 58, -169, -169, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 186, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -169
},
{
11, -170, -170, -170, -170, -170, -170, -170, -170, -170,
- -170, -170, -170, 56, -170, -170, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -170
+ -170, -170, -170, 58, -170, -170, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 187, 58, -170
},
{
11, -171, -171, -171, -171, -171, -171, -171, -171, -171,
- -171, -171, -171, 56, -171, -171, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
- 56, 56, 56, 56, 56, 56, -171
+ -171, -171, -171, 58, -171, -171, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 188, 58,
+ 58, 58, 58, 58, 58, 58, 58, -171
},
- } ;
+ {
+ 11, -172, -172, -172, -172, -172, -172, -172, -172, -172,
+ -172, -172, -172, 58, -172, -172, 58, 58, 58, 58,
+
+ 58, 58, 58, 58, 58, 58, 58, 58, 189, 58,
+ 58, 58, 58, 58, 58, 58, 58, -172
+ },
+
+ {
+ 11, -173, -173, -173, -173, -173, -173, -173, -173, -173,
+ -173, -173, -173, 58, -173, -173, 58, 190, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -173
+ },
+
+ {
+ 11, -174, -174, -174, -174, -174, -174, -174, -174, -174,
+ -174, -174, -174, 58, -174, -174, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -174
+
+ },
+
+ {
+ 11, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+ -175, -175, -175, 58, -175, -175, 58, 58, 58, 58,
+ 58, 191, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -175
+ },
+
+ {
+ 11, -176, -176, -176, -176, -176, -176, -176, -176, -176,
+ -176, -176, -176, 58, -176, -176, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -176
+ },
+
+ {
+ 11, -177, -177, -177, -177, -177, -177, -177, -177, -177,
+ -177, -177, -177, 58, -177, -177, 58, 58, 58, 58,
+
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -177
+ },
+
+ {
+ 11, -178, -178, -178, -178, -178, -178, -178, -178, -178,
+ -178, -178, -178, 58, -178, -178, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -178
+ },
+
+ {
+ 11, -179, -179, -179, -179, -179, -179, -179, -179, -179,
+ -179, -179, -179, 58, -179, -179, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 192, 58, 58, -179
+
+ },
+
+ {
+ 11, -180, -180, -180, -180, -180, -180, -180, -180, -180,
+ -180, -180, -180, 58, -180, -180, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -180
+ },
+
+ {
+ 11, -181, -181, -181, -181, -181, -181, -181, -181, -181,
+ -181, -181, -181, 58, -181, -181, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -181
+ },
+
+ {
+ 11, -182, -182, -182, -182, -182, -182, -182, -182, -182,
+ -182, -182, -182, 58, -182, -182, 58, 58, 58, 58,
+
+ 58, 58, 58, 58, 58, 58, 193, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -182
+ },
+
+ {
+ 11, -183, -183, -183, -183, -183, -183, -183, -183, -183,
+ -183, -183, -183, 58, -183, -183, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 194, 58, 58, 58, -183
+ },
+
+ {
+ 11, -184, -184, -184, -184, -184, -184, -184, -184, -184,
+ -184, -184, -184, 58, -184, -184, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -184
+
+ },
+
+ {
+ 11, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+ -185, -185, -185, 58, -185, -185, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -185
+ },
+
+ {
+ 11, -186, -186, -186, -186, -186, -186, -186, -186, -186,
+ -186, -186, -186, 58, -186, -186, 58, 58, 58, 195,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -186
+ },
+
+ {
+ 11, -187, -187, -187, -187, -187, -187, -187, -187, -187,
+ -187, -187, -187, 58, -187, -187, 58, 58, 58, 58,
+
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -187
+ },
+
+ {
+ 11, -188, -188, -188, -188, -188, -188, -188, -188, -188,
+ -188, -188, -188, 58, -188, -188, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 196, 58, -188
+ },
+
+ {
+ 11, -189, -189, -189, -189, -189, -189, -189, -189, -189,
+ -189, -189, -189, 58, -189, -189, 58, 58, 58, 58,
+ 58, 58, 197, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -189
+
+ },
+
+ {
+ 11, -190, -190, -190, -190, -190, -190, -190, -190, -190,
+ -190, -190, -190, 58, -190, -190, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 198, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -190
+ },
+
+ {
+ 11, -191, -191, -191, -191, -191, -191, -191, -191, -191,
+ -191, -191, -191, 58, -191, -191, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 199, 58, 58, 58, -191
+ },
+
+ {
+ 11, -192, -192, -192, -192, -192, -192, -192, -192, -192,
+ -192, -192, -192, 58, -192, -192, 58, 58, 58, 58,
+
+ 58, 200, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -192
+ },
+
+ {
+ 11, -193, -193, -193, -193, -193, -193, -193, -193, -193,
+ -193, -193, -193, 58, -193, -193, 58, 58, 58, 58,
+ 58, 201, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -193
+ },
+
+ {
+ 11, -194, -194, -194, -194, -194, -194, -194, -194, -194,
+ -194, -194, -194, 58, -194, -194, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 202, 58, 58, -194
+
+ },
+
+ {
+ 11, -195, -195, -195, -195, -195, -195, -195, -195, -195,
+ -195, -195, -195, 58, -195, -195, 58, 58, 58, 58,
+ 58, 203, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -195
+ },
+
+ {
+ 11, -196, -196, -196, -196, -196, -196, -196, -196, -196,
+ -196, -196, -196, 58, -196, -196, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -196
+ },
+
+ {
+ 11, -197, -197, -197, -197, -197, -197, -197, -197, -197,
+ -197, -197, -197, 58, -197, -197, 58, 58, 58, 58,
+
+ 58, 58, 58, 58, 58, 204, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -197
+ },
+
+ {
+ 11, -198, -198, -198, -198, -198, -198, -198, -198, -198,
+ -198, -198, -198, 58, -198, -198, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -198
+ },
+
+ {
+ 11, -199, -199, -199, -199, -199, -199, -199, -199, -199,
+ -199, -199, -199, 58, -199, -199, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -199
+
+ },
+
+ {
+ 11, -200, -200, -200, -200, -200, -200, -200, -200, -200,
+ -200, -200, -200, 58, -200, -200, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -200
+ },
+
+ {
+ 11, -201, -201, -201, -201, -201, -201, -201, -201, -201,
+ -201, -201, -201, 58, -201, -201, 58, 205, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -201
+ },
+
+ {
+ 11, -202, -202, -202, -202, -202, -202, -202, -202, -202,
+ -202, -202, -202, 58, -202, -202, 58, 206, 58, 58,
+
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -202
+ },
+
+ {
+ 11, -203, -203, -203, -203, -203, -203, -203, -203, -203,
+ -203, -203, -203, 58, -203, -203, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -203
+ },
+
+ {
+ 11, -204, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, 58, -204, -204, 58, 58, 58, 58,
+ 58, 58, 58, 207, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -204
+
+ },
+
+ {
+ 11, -205, -205, -205, -205, -205, -205, -205, -205, -205,
+ -205, -205, -205, 58, -205, -205, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 208, 58,
+ 58, 58, 58, 58, 58, 58, 58, -205
+ },
+
+ {
+ 11, -206, -206, -206, -206, -206, -206, -206, -206, -206,
+ -206, -206, -206, 58, -206, -206, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 209, 58, 58, -206
+ },
+
+ {
+ 11, -207, -207, -207, -207, -207, -207, -207, -207, -207,
+ -207, -207, -207, 58, -207, -207, 58, 58, 58, 58,
+
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -207
+ },
+
+ {
+ 11, -208, -208, -208, -208, -208, -208, -208, -208, -208,
+ -208, -208, -208, 58, -208, -208, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -208
+ },
+
+ {
+ 11, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, 58, -209, -209, 58, 58, 58, 58,
+ 58, 210, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -209
+
+ },
+
+ {
+ 11, -210, -210, -210, -210, -210, -210, -210, -210, -210,
+ -210, -210, -210, 58, -210, -210, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, -210
+ },
+ } ;
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
+ * corresponding action - sets up zconftext.
*/
#define YY_DO_BEFORE_ACTION \
- yytext_ptr = yy_bp; \
- yyleng = (int) (yy_cp - yy_bp); \
- yy_hold_char = *yy_cp; \
+ (yytext_ptr) = yy_bp; \
+ zconfleng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
- yy_c_buf_p = yy_cp;
+ (yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 55
-#define YY_END_OF_BUFFER 56
-static yyconst short int yy_accept[172] =
+#define YY_NUM_RULES 64
+#define YY_END_OF_BUFFER 65
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[211] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 56, 5, 4, 3, 2, 29, 30, 28, 28, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
- 54, 51, 53, 46, 50, 49, 48, 44, 41, 35,
- 40, 44, 33, 34, 43, 43, 36, 43, 43, 44,
- 4, 3, 2, 2, 1, 28, 28, 28, 28, 28,
- 28, 28, 15, 28, 28, 28, 28, 28, 28, 28,
- 28, 28, 54, 51, 53, 52, 46, 45, 48, 47,
- 37, 31, 43, 43, 38, 39, 32, 28, 28, 28,
- 28, 28, 28, 28, 28, 26, 25, 28, 28, 28,
-
- 28, 28, 28, 28, 28, 42, 23, 28, 28, 28,
- 28, 28, 28, 28, 28, 14, 28, 7, 28, 28,
- 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
- 28, 16, 28, 28, 28, 28, 28, 28, 28, 28,
- 28, 10, 28, 13, 28, 28, 28, 28, 28, 28,
- 21, 28, 9, 27, 28, 24, 12, 20, 17, 28,
- 8, 28, 28, 28, 28, 28, 6, 19, 18, 22,
- 11
+ 65, 5, 4, 3, 2, 36, 37, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 63, 60, 62, 55, 59, 58, 57, 53, 48, 42,
+ 47, 51, 53, 40, 41, 50, 50, 43, 53, 50,
+ 50, 53, 4, 3, 2, 2, 1, 35, 35, 35,
+ 35, 35, 35, 35, 16, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 63, 60, 62, 61,
+ 55, 54, 57, 56, 44, 51, 38, 50, 50, 52,
+ 45, 46, 39, 35, 35, 35, 35, 35, 35, 35,
+
+ 35, 35, 30, 29, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 49, 25, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 15, 35, 7, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 17, 35, 35,
+ 35, 35, 35, 34, 35, 35, 35, 35, 35, 35,
+ 10, 35, 13, 35, 35, 35, 35, 33, 35, 35,
+ 35, 35, 35, 22, 35, 32, 9, 31, 35, 26,
+ 12, 35, 35, 21, 18, 35, 8, 35, 35, 35,
+ 35, 35, 27, 35, 35, 6, 35, 20, 19, 23,
+
+ 35, 35, 11, 35, 35, 35, 14, 28, 35, 24
} ;
-static yyconst int yy_ec[256] =
+static yyconst flex_int32_t yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1616,11 +1965,11 @@ static yyconst int yy_ec[256] =
14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
- 1, 15, 1, 1, 13, 1, 16, 17, 18, 19,
+ 1, 15, 1, 1, 16, 1, 17, 18, 19, 20,
- 20, 21, 22, 23, 24, 13, 13, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 13, 13, 35,
- 13, 13, 1, 36, 1, 1, 1, 1, 1, 1,
+ 21, 22, 23, 24, 25, 13, 13, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 13, 13, 36,
+ 13, 13, 1, 37, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1637,6 +1986,9 @@ static yyconst int yy_ec[256] =
1, 1, 1, 1, 1
} ;
+extern int zconf_flex_debug;
+int zconf_flex_debug = 0;
+
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
*/
@@ -1644,21 +1996,14 @@ static yyconst int yy_ec[256] =
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "zconf.l"
-#define INITIAL 0
-#define YY_NEVER_INTERACTIVE 1
-#define COMMAND 1
-#define HELP 2
-#define STRING 3
-#define PARAM 4
+char *zconftext;
-#line 5 "zconf.l"
/*
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
* Released under the terms of the GNU GPL v2.0.
*/
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -1666,7 +2011,6 @@ char *yytext;
#define LKC_DIRECT_LINK
#include "lkc.h"
-#include "zconf.tab.h"
#define START_STRSIZE 16
@@ -1715,7 +2059,22 @@ void alloc_string(const char *str, int size)
memcpy(text, str, size);
text[size] = 0;
}
-#line 1719 "lex.zconf.c"
+
+#define INITIAL 0
+#define COMMAND 1
+#define HELP 2
+#define STRING 3
+#define PARAM 4
+
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
/* Macros after this point can all be overridden by user definitions in
* section 1.
@@ -1723,65 +2082,30 @@ void alloc_string(const char *str, int size)
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
+extern "C" int zconfwrap (void );
#else
-extern int yywrap YY_PROTO(( void ));
+extern int zconfwrap (void );
#endif
#endif
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
+ static void yyunput (int c,char *buf_ptr );
+
#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
+static void yy_flex_strncpy (char *,yyconst char *,int );
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
+static int yy_flex_strlen (yyconst char * );
#endif
#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
+#ifdef __cplusplus
+static int yyinput (void );
#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
+static int input (void );
#endif
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines. This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
#endif
/* Amount of stuff to slurp up with each read. */
@@ -1790,12 +2114,11 @@ YY_MALLOC_DECL
#endif
/* Copy whatever the last rule matched to the standard output. */
-
#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite().
*/
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
#endif
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
@@ -1804,7 +2127,7 @@ YY_MALLOC_DECL
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
errno=0; \
- while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
+ while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
{ \
if( errno != EINTR) \
{ \
@@ -1812,8 +2135,10 @@ YY_MALLOC_DECL
break; \
} \
errno=0; \
- clearerr(yyin); \
- }
+ clearerr(zconfin); \
+ }\
+\
+
#endif
/* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -1834,14 +2159,20 @@ YY_MALLOC_DECL
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif
+/* end tables serialization structures and prototypes */
+
/* Default declaration of generated scanner - a define so the user can
* easily add parameters.
*/
#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
+#define YY_DECL_IS_OURS 1
+
+extern int zconflex (void);
+
+#define YY_DECL int zconflex (void)
+#endif /* !YY_DECL */
-/* Code executed at the beginning of each rule, after yytext and yyleng
+/* Code executed at the beginning of each rule, after zconftext and zconfleng
* have been set up.
*/
#ifndef YY_USER_ACTION
@@ -1856,58 +2187,58 @@ YY_MALLOC_DECL
#define YY_RULE_SETUP \
YY_USER_ACTION
+/** The main scanner function which does all the work.
+ */
YY_DECL
- {
+{
register yy_state_type yy_current_state;
register char *yy_cp, *yy_bp;
register int yy_act;
-
-#line 71 "zconf.l"
-
+
int str = 0;
int ts, i;
-#line 1871 "lex.zconf.c"
-
- if ( yy_init )
+ if ( (yy_init) )
{
- yy_init = 0;
+ (yy_init) = 0;
#ifdef YY_USER_INIT
YY_USER_INIT;
#endif
- if ( ! yy_start )
- yy_start = 1; /* first start state */
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
- if ( ! yyin )
- yyin = stdin;
+ if ( ! zconfin )
+ zconfin = stdin;
- if ( ! yyout )
- yyout = stdout;
+ if ( ! zconfout )
+ zconfout = stdout;
- if ( ! yy_current_buffer )
- yy_current_buffer =
- yy_create_buffer( yyin, YY_BUF_SIZE );
+ if ( ! YY_CURRENT_BUFFER ) {
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
- yy_load_buffer_state();
+ zconf_load_buffer_state( );
}
while ( 1 ) /* loops until end-of-file is reached */
{
- yy_cp = yy_c_buf_p;
+ yy_cp = (yy_c_buf_p);
- /* Support of yytext. */
- *yy_cp = yy_hold_char;
+ /* Support of zconftext. */
+ *yy_cp = (yy_hold_char);
/* yy_bp points to the position in yy_ch_buf of the start of
* the current run.
*/
yy_bp = yy_cp;
- yy_current_state = yy_start;
+ yy_current_state = (yy_start);
yy_match:
- while ( (yy_current_state = yy_nxt[yy_current_state][yy_ec[YY_SC_TO_UI(*yy_cp)]]) > 0 )
+ while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
++yy_cp;
yy_current_state = -yy_current_state;
@@ -1917,334 +2248,321 @@ yy_find_action:
YY_DO_BEFORE_ACTION;
-
do_action: /* This label is used only to access EOF actions. */
-
switch ( yy_act )
{ /* beginning of action switch */
case 1:
+/* rule 1 can match eol */
YY_RULE_SETUP
-#line 75 "zconf.l"
current_file->lineno++;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 76 "zconf.l"
YY_BREAK
case 3:
+/* rule 3 can match eol */
YY_RULE_SETUP
-#line 78 "zconf.l"
current_file->lineno++; return T_EOL;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 80 "zconf.l"
{
BEGIN(COMMAND);
}
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 84 "zconf.l"
{
- unput(yytext[0]);
+ unput(zconftext[0]);
BEGIN(COMMAND);
}
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 91 "zconf.l"
BEGIN(PARAM); return T_MAINMENU;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 92 "zconf.l"
BEGIN(PARAM); return T_MENU;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 93 "zconf.l"
BEGIN(PARAM); return T_ENDMENU;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 94 "zconf.l"
BEGIN(PARAM); return T_SOURCE;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 95 "zconf.l"
BEGIN(PARAM); return T_CHOICE;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 96 "zconf.l"
BEGIN(PARAM); return T_ENDCHOICE;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 97 "zconf.l"
BEGIN(PARAM); return T_COMMENT;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 98 "zconf.l"
BEGIN(PARAM); return T_CONFIG;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 99 "zconf.l"
-BEGIN(PARAM); return T_HELP;
+BEGIN(PARAM); return T_MENUCONFIG;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 100 "zconf.l"
-BEGIN(PARAM); return T_IF;
+BEGIN(PARAM); return T_HELP;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 101 "zconf.l"
-BEGIN(PARAM); return T_ENDIF;
+BEGIN(PARAM); return T_IF;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 102 "zconf.l"
-BEGIN(PARAM); return T_DEPENDS;
+BEGIN(PARAM); return T_ENDIF;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 103 "zconf.l"
-BEGIN(PARAM); return T_REQUIRES;
+BEGIN(PARAM); return T_DEPENDS;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 104 "zconf.l"
-BEGIN(PARAM); return T_OPTIONAL;
+BEGIN(PARAM); return T_REQUIRES;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 105 "zconf.l"
-BEGIN(PARAM); return T_DEFAULT;
+BEGIN(PARAM); return T_OPTIONAL;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 106 "zconf.l"
-BEGIN(PARAM); return T_PROMPT;
+BEGIN(PARAM); return T_DEFAULT;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 107 "zconf.l"
-BEGIN(PARAM); return T_TRISTATE;
+BEGIN(PARAM); return T_PROMPT;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 108 "zconf.l"
-BEGIN(PARAM); return T_BOOLEAN;
+BEGIN(PARAM); return T_TRISTATE;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 109 "zconf.l"
-BEGIN(PARAM); return T_BOOLEAN;
+BEGIN(PARAM); return T_DEF_TRISTATE;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 110 "zconf.l"
-BEGIN(PARAM); return T_INT;
+BEGIN(PARAM); return T_BOOLEAN;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 111 "zconf.l"
-BEGIN(PARAM); return T_HEX;
+BEGIN(PARAM); return T_BOOLEAN;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 112 "zconf.l"
-BEGIN(PARAM); return T_STRING;
+BEGIN(PARAM); return T_DEF_BOOLEAN;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 113 "zconf.l"
+BEGIN(PARAM); return T_DEF_BOOLEAN;
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_INT;
+ YY_BREAK
+case 30:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_HEX;
+ YY_BREAK
+case 31:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_STRING;
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_SELECT;
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_SELECT;
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+BEGIN(PARAM); return T_RANGE;
+ YY_BREAK
+case 35:
+YY_RULE_SETUP
{
- alloc_string(yytext, yyleng);
+ alloc_string(zconftext, zconfleng);
zconflval.string = text;
return T_WORD;
}
YY_BREAK
-case 29:
+case 36:
YY_RULE_SETUP
-#line 118 "zconf.l"
YY_BREAK
-case 30:
+case 37:
+/* rule 37 can match eol */
YY_RULE_SETUP
-#line 119 "zconf.l"
current_file->lineno++; BEGIN(INITIAL);
YY_BREAK
-
-case 31:
+case 38:
YY_RULE_SETUP
-#line 123 "zconf.l"
return T_AND;
YY_BREAK
-case 32:
+case 39:
YY_RULE_SETUP
-#line 124 "zconf.l"
return T_OR;
YY_BREAK
-case 33:
+case 40:
YY_RULE_SETUP
-#line 125 "zconf.l"
return T_OPEN_PAREN;
YY_BREAK
-case 34:
+case 41:
YY_RULE_SETUP
-#line 126 "zconf.l"
return T_CLOSE_PAREN;
YY_BREAK
-case 35:
+case 42:
YY_RULE_SETUP
-#line 127 "zconf.l"
return T_NOT;
YY_BREAK
-case 36:
+case 43:
YY_RULE_SETUP
-#line 128 "zconf.l"
return T_EQUAL;
YY_BREAK
-case 37:
+case 44:
YY_RULE_SETUP
-#line 129 "zconf.l"
return T_UNEQUAL;
YY_BREAK
-case 38:
+case 45:
YY_RULE_SETUP
-#line 130 "zconf.l"
return T_IF;
YY_BREAK
-case 39:
+case 46:
YY_RULE_SETUP
-#line 131 "zconf.l"
return T_ON;
YY_BREAK
-case 40:
+case 47:
YY_RULE_SETUP
-#line 132 "zconf.l"
{
- str = yytext[0];
+ str = zconftext[0];
new_string();
BEGIN(STRING);
}
YY_BREAK
-case 41:
+case 48:
+/* rule 48 can match eol */
YY_RULE_SETUP
-#line 137 "zconf.l"
BEGIN(INITIAL); current_file->lineno++; return T_EOL;
YY_BREAK
-case 42:
+case 49:
YY_RULE_SETUP
-#line 138 "zconf.l"
/* ignore */
YY_BREAK
-case 43:
+case 50:
YY_RULE_SETUP
-#line 139 "zconf.l"
{
- alloc_string(yytext, yyleng);
+ alloc_string(zconftext, zconfleng);
zconflval.string = text;
return T_WORD;
}
YY_BREAK
-case 44:
+case 51:
+YY_RULE_SETUP
+/* comment */
+ YY_BREAK
+case 52:
+/* rule 52 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+ YY_BREAK
+case 53:
YY_RULE_SETUP
-#line 144 "zconf.l"
YY_BREAK
case YY_STATE_EOF(PARAM):
-#line 145 "zconf.l"
{
BEGIN(INITIAL);
}
YY_BREAK
-
-case 45:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
+case 54:
+/* rule 54 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
YY_RULE_SETUP
-#line 151 "zconf.l"
{
- append_string(yytext, yyleng);
+ append_string(zconftext, zconfleng);
zconflval.string = text;
- return T_STRING;
+ return T_WORD_QUOTE;
}
YY_BREAK
-case 46:
+case 55:
YY_RULE_SETUP
-#line 156 "zconf.l"
{
- append_string(yytext, yyleng);
+ append_string(zconftext, zconfleng);
}
YY_BREAK
-case 47:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
+case 56:
+/* rule 56 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
YY_RULE_SETUP
-#line 159 "zconf.l"
{
- append_string(yytext+1, yyleng);
+ append_string(zconftext + 1, zconfleng - 1);
zconflval.string = text;
- return T_STRING;
+ return T_WORD_QUOTE;
}
YY_BREAK
-case 48:
+case 57:
YY_RULE_SETUP
-#line 164 "zconf.l"
{
- append_string(yytext+1, yyleng);
+ append_string(zconftext + 1, zconfleng - 1);
}
YY_BREAK
-case 49:
+case 58:
YY_RULE_SETUP
-#line 167 "zconf.l"
{
- if (str == yytext[0]) {
+ if (str == zconftext[0]) {
BEGIN(PARAM);
zconflval.string = text;
- return T_STRING;
+ return T_WORD_QUOTE;
} else
- append_string(yytext, 1);
+ append_string(zconftext, 1);
}
YY_BREAK
-case 50:
+case 59:
+/* rule 59 can match eol */
YY_RULE_SETUP
-#line 175 "zconf.l"
{
printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
BEGIN(INITIAL);
return T_EOL;
}
YY_BREAK
case YY_STATE_EOF(STRING):
-#line 180 "zconf.l"
{
BEGIN(INITIAL);
}
YY_BREAK
-
-case 51:
+case 60:
YY_RULE_SETUP
-#line 186 "zconf.l"
{
ts = 0;
- for (i = 0; i < yyleng; i++) {
- if (yytext[i] == '\t')
+ for (i = 0; i < zconfleng; i++) {
+ if (zconftext[i] == '\t')
ts = (ts & ~7) + 8;
else
ts++;
@@ -2262,40 +2580,37 @@ YY_RULE_SETUP
}
append_string(" ", ts);
}
-
}
YY_BREAK
-case 52:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp = yy_bp + 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
+case 61:
+/* rule 61 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
YY_RULE_SETUP
-#line 209 "zconf.l"
{
current_file->lineno++;
zconf_endhelp();
return T_HELPTEXT;
}
YY_BREAK
-case 53:
+case 62:
+/* rule 62 can match eol */
YY_RULE_SETUP
-#line 214 "zconf.l"
{
current_file->lineno++;
append_string("\n", 1);
}
YY_BREAK
-case 54:
+case 63:
YY_RULE_SETUP
-#line 218 "zconf.l"
{
- append_string(yytext, yyleng);
+ append_string(zconftext, zconfleng);
if (!first_ts)
first_ts = last_ts;
}
YY_BREAK
case YY_STATE_EOF(HELP):
-#line 223 "zconf.l"
{
zconf_endhelp();
return T_HELPTEXT;
@@ -2304,46 +2619,43 @@ case YY_STATE_EOF(HELP):
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(COMMAND):
-#line 229 "zconf.l"
{
if (current_buf) {
zconf_endfile();
return T_EOF;
}
- fclose(yyin);
+ fclose(zconfin);
yyterminate();
}
YY_BREAK
-case 55:
+case 64:
YY_RULE_SETUP
-#line 238 "zconf.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 2323 "lex.zconf.c"
case YY_END_OF_BUFFER:
{
/* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
/* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = yy_hold_char;
+ *yy_cp = (yy_hold_char);
YY_RESTORE_YY_MORE_OFFSET
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
{
/* We're scanning a new file or input source. It's
* possible that this happened because the user
- * just pointed yyin at a new source and called
- * yylex(). If so, then we have to assure
- * consistency between yy_current_buffer and our
+ * just pointed zconfin at a new source and called
+ * zconflex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
* globals. Here is the right place to do so, because
* this is the first action (other than possibly a
* back-up) that will match for the new input source.
*/
- yy_n_chars = yy_current_buffer->yy_n_chars;
- yy_current_buffer->yy_input_file = yyin;
- yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
/* Note that here we test for yy_c_buf_p "<=" to the position
@@ -2353,13 +2665,13 @@ YY_FATAL_ERROR( "flex scanner jammed" );
* end-of-buffer state). Contrast this with the test
* in input().
*/
- if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
{ /* This was really a NUL. */
yy_state_type yy_next_state;
- yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
- yy_current_state = yy_get_previous_state();
+ yy_current_state = yy_get_previous_state( );
/* Okay, we're now positioned to make the NUL
* transition. We couldn't have
@@ -2372,41 +2684,41 @@ YY_FATAL_ERROR( "flex scanner jammed" );
yy_next_state = yy_try_NUL_trans( yy_current_state );
- yy_bp = yytext_ptr + YY_MORE_ADJ;
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
if ( yy_next_state )
{
/* Consume the NUL. */
- yy_cp = ++yy_c_buf_p;
+ yy_cp = ++(yy_c_buf_p);
yy_current_state = yy_next_state;
goto yy_match;
}
else
{
- yy_cp = yy_c_buf_p;
+ yy_cp = (yy_c_buf_p);
goto yy_find_action;
}
}
- else switch ( yy_get_next_buffer() )
+ else switch ( yy_get_next_buffer( ) )
{
case EOB_ACT_END_OF_FILE:
{
- yy_did_buffer_switch_on_eof = 0;
+ (yy_did_buffer_switch_on_eof) = 0;
- if ( yywrap() )
+ if ( zconfwrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
- * yytext, we can now set up
+ * zconftext, we can now set up
* yy_c_buf_p so that if some total
* hoser (like flex itself) wants to
* call the scanner after we return the
* YY_NULL, it'll still work - another
* YY_NULL will get returned.
*/
- yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
yy_act = YY_STATE_EOF(YY_START);
goto do_action;
@@ -2414,30 +2726,30 @@ YY_FATAL_ERROR( "flex scanner jammed" );
else
{
- if ( ! yy_did_buffer_switch_on_eof )
+ if ( ! (yy_did_buffer_switch_on_eof) )
YY_NEW_FILE;
}
break;
}
case EOB_ACT_CONTINUE_SCAN:
- yy_c_buf_p =
- yytext_ptr + yy_amount_of_matched_text;
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
- yy_current_state = yy_get_previous_state();
+ yy_current_state = yy_get_previous_state( );
- yy_cp = yy_c_buf_p;
- yy_bp = yytext_ptr + YY_MORE_ADJ;
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
goto yy_match;
case EOB_ACT_LAST_MATCH:
- yy_c_buf_p =
- &yy_current_buffer->yy_ch_buf[yy_n_chars];
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
- yy_current_state = yy_get_previous_state();
+ yy_current_state = yy_get_previous_state( );
- yy_cp = yy_c_buf_p;
- yy_bp = yytext_ptr + YY_MORE_ADJ;
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
goto yy_find_action;
}
break;
@@ -2448,8 +2760,7 @@ YY_FATAL_ERROR( "flex scanner jammed" );
"fatal flex scanner internal error--no action found" );
} /* end of action switch */
} /* end of scanning one token */
- } /* end of yylex */
-
+} /* end of zconflex */
/* yy_get_next_buffer - try to read in a new buffer
*
@@ -2458,21 +2769,20 @@ YY_FATAL_ERROR( "flex scanner jammed" );
* EOB_ACT_CONTINUE_SCAN - continue scanning from current position
* EOB_ACT_END_OF_FILE - end of file
*/
-
-static int yy_get_next_buffer()
- {
- register char *dest = yy_current_buffer->yy_ch_buf;
- register char *source = yytext_ptr;
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
register int number_to_move, i;
int ret_val;
- if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
YY_FATAL_ERROR(
"fatal flex scanner internal error--end of buffer missed" );
- if ( yy_current_buffer->yy_fill_buffer == 0 )
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
{ /* Don't try to fill the buffer, so this is an EOF. */
- if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
{
/* We matched a single character, the EOB, so
* treat this as a final EOF.
@@ -2492,34 +2802,30 @@ static int yy_get_next_buffer()
/* Try to read more data. */
/* First move last chars to start of buffer. */
- number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
/* don't do the read, it's not guaranteed to return an EOF,
* just force an EOF
*/
- yy_current_buffer->yy_n_chars = yy_n_chars = 0;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
else
{
- int num_to_read =
- yy_current_buffer->yy_buf_size - number_to_move - 1;
+ size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
- YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
/* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = yy_current_buffer;
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
int yy_c_buf_p_offset =
- (int) (yy_c_buf_p - b->yy_ch_buf);
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
if ( b->yy_is_our_buffer )
{
@@ -2532,8 +2838,7 @@ static int yy_get_next_buffer()
b->yy_ch_buf = (char *)
/* Include room in for 2 EOB chars. */
- yy_flex_realloc( (void *) b->yy_ch_buf,
- b->yy_buf_size + 2 );
+ zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
}
else
/* Can't grow it, we don't own it. */
@@ -2543,35 +2848,35 @@ static int yy_get_next_buffer()
YY_FATAL_ERROR(
"fatal error - scanner input buffer overflow" );
- yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
- num_to_read = yy_current_buffer->yy_buf_size -
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
number_to_move - 1;
-#endif
+
}
if ( num_to_read > YY_READ_BUF_SIZE )
num_to_read = YY_READ_BUF_SIZE;
/* Read in more data. */
- YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
- yy_n_chars, num_to_read );
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
- yy_current_buffer->yy_n_chars = yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
- if ( yy_n_chars == 0 )
+ if ( (yy_n_chars) == 0 )
{
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- yyrestart( yyin );
+ zconfrestart(zconfin );
}
else
{
ret_val = EOB_ACT_LAST_MATCH;
- yy_current_buffer->yy_buffer_status =
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
YY_BUFFER_EOF_PENDING;
}
}
@@ -2579,127 +2884,112 @@ static int yy_get_next_buffer()
else
ret_val = EOB_ACT_CONTINUE_SCAN;
- yy_n_chars += number_to_move;
- yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
- yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
- yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
return ret_val;
- }
-
+}
/* yy_get_previous_state - get the state just before the EOB char was reached */
-static yy_state_type yy_get_previous_state()
- {
+ static yy_state_type yy_get_previous_state (void)
+{
register yy_state_type yy_current_state;
register char *yy_cp;
+
+ yy_current_state = (yy_start);
- yy_current_state = yy_start;
-
- for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
{
yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
}
return yy_current_state;
- }
-
+}
/* yy_try_NUL_trans - try to make a transition on the NUL character
*
* synopsis
* next_state = yy_try_NUL_trans( current_state );
*/
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
- {
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
register int yy_is_jam;
-
+
yy_current_state = yy_nxt[yy_current_state][1];
yy_is_jam = (yy_current_state <= 0);
return yy_is_jam ? 0 : yy_current_state;
- }
-
+}
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
- {
- register char *yy_cp = yy_c_buf_p;
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
- /* undo effects of setting up yytext */
- *yy_cp = yy_hold_char;
+ /* undo effects of setting up zconftext */
+ *yy_cp = (yy_hold_char);
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
- register int number_to_move = yy_n_chars + 2;
- register char *dest = &yy_current_buffer->yy_ch_buf[
- yy_current_buffer->yy_buf_size + 2];
+ register int number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
register char *source =
- &yy_current_buffer->yy_ch_buf[number_to_move];
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
- while ( source > yy_current_buffer->yy_ch_buf )
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
*--dest = *--source;
yy_cp += (int) (dest - source);
yy_bp += (int) (dest - source);
- yy_current_buffer->yy_n_chars =
- yy_n_chars = yy_current_buffer->yy_buf_size;
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
YY_FATAL_ERROR( "flex scanner push-back overflow" );
}
*--yy_cp = (char) c;
+ (yytext_ptr) = yy_bp;
+ (yy_hold_char) = *yy_cp;
+ (yy_c_buf_p) = yy_cp;
+}
- yytext_ptr = yy_bp;
- yy_hold_char = *yy_cp;
- yy_c_buf_p = yy_cp;
- }
-#endif /* ifndef YY_NO_UNPUT */
-
-
+#ifndef YY_NO_INPUT
#ifdef __cplusplus
-static int yyinput()
+ static int yyinput (void)
#else
-static int input()
+ static int input (void)
#endif
- {
- int c;
- *yy_c_buf_p = yy_hold_char;
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
- if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
{
/* yy_c_buf_p now points to the character we want to return.
* If this occurs *before* the EOB characters, then it's a
* valid NUL; if not, then we've hit the end of the buffer.
*/
- if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
/* This was really a NUL. */
- *yy_c_buf_p = '\0';
+ *(yy_c_buf_p) = '\0';
else
{ /* need more input */
- int offset = yy_c_buf_p - yytext_ptr;
- ++yy_c_buf_p;
+ int offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
- switch ( yy_get_next_buffer() )
+ switch ( yy_get_next_buffer( ) )
{
case EOB_ACT_LAST_MATCH:
/* This happens because yy_g_n_b()
@@ -2713,16 +3003,16 @@ static int input()
*/
/* Reset buffer status. */
- yyrestart( yyin );
+ zconfrestart(zconfin );
- /* fall through */
+ /*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
- if ( yywrap() )
+ if ( zconfwrap( ) )
return EOF;
- if ( ! yy_did_buffer_switch_on_eof )
+ if ( ! (yy_did_buffer_switch_on_eof) )
YY_NEW_FILE;
#ifdef __cplusplus
return yyinput();
@@ -2732,176 +3022,165 @@ static int input()
}
case EOB_ACT_CONTINUE_SCAN:
- yy_c_buf_p = yytext_ptr + offset;
+ (yy_c_buf_p) = (yytext_ptr) + offset;
break;
}
}
}
- c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
- *yy_c_buf_p = '\0'; /* preserve yytext */
- yy_hold_char = *++yy_c_buf_p;
-
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve zconftext */
+ (yy_hold_char) = *++(yy_c_buf_p);
return c;
- }
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
- {
- if ( ! yy_current_buffer )
- yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+}
+#endif /* ifndef YY_NO_INPUT */
- yy_init_buffer( yy_current_buffer, input_file );
- yy_load_buffer_state();
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void zconfrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
}
+ zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
+ zconf_load_buffer_state( );
+}
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
- {
- if ( yy_current_buffer == new_buffer )
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * zconfpop_buffer_state();
+ * zconfpush_buffer_state(new_buffer);
+ */
+ zconfensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
return;
- if ( yy_current_buffer )
+ if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
- *yy_c_buf_p = yy_hold_char;
- yy_current_buffer->yy_buf_pos = yy_c_buf_p;
- yy_current_buffer->yy_n_chars = yy_n_chars;
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
- yy_current_buffer = new_buffer;
- yy_load_buffer_state();
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ zconf_load_buffer_state( );
/* We don't actually know whether we did this switch during
- * EOF (yywrap()) processing, but the only time this flag
- * is looked at is after yywrap() is called, so it's safe
+ * EOF (zconfwrap()) processing, but the only time this flag
+ * is looked at is after zconfwrap() is called, so it's safe
* to go ahead and always set it.
*/
- yy_did_buffer_switch_on_eof = 1;
- }
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
- {
- yy_n_chars = yy_current_buffer->yy_n_chars;
- yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
- yyin = yy_current_buffer->yy_input_file;
- yy_hold_char = *yy_c_buf_p;
- }
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+static void zconf_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
- {
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
+{
YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
b->yy_buf_size = size;
/* yy_ch_buf has to be 2 characters longer than the size given because
* we need to put in 2 end-of-buffer characters.
*/
- b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
+ b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
b->yy_is_our_buffer = 1;
- yy_init_buffer( b, file );
+ zconf_init_buffer(b,file );
return b;
- }
-
+}
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
- {
+/** Destroy the buffer.
+ * @param b a buffer created with zconf_create_buffer()
+ *
+ */
+ void zconf_delete_buffer (YY_BUFFER_STATE b )
+{
+
if ( ! b )
return;
- if ( b == yy_current_buffer )
- yy_current_buffer = (YY_BUFFER_STATE) 0;
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- yy_flex_free( (void *) b->yy_ch_buf );
+ zconffree((void *) b->yy_ch_buf );
- yy_flex_free( (void *) b );
- }
-
-
-#ifndef _WIN32
-#include <unistd.h>
-#else
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
+ zconffree((void *) b );
+}
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a zconfrestart() or at EOF.
+ */
+ static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
- {
- yy_flush_buffer( b );
+{
+ int oerrno = errno;
+
+ zconf_flush_buffer(b );
b->yy_input_file = file;
b->yy_fill_buffer = 1;
-#if YY_ALWAYS_INTERACTIVE
- b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
- b->yy_is_interactive = 0;
-#else
- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
- }
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
+ /* If b is the current buffer, then zconf_init_buffer was _probably_
+ * called from zconfrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
- {
- if ( ! b )
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void zconf_flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
return;
b->yy_n_chars = 0;
@@ -2918,31 +3197,123 @@ YY_BUFFER_STATE b;
b->yy_at_bol = 1;
b->yy_buffer_status = YY_BUFFER_NEW;
- if ( b == yy_current_buffer )
- yy_load_buffer_state();
+ if ( b == YY_CURRENT_BUFFER )
+ zconf_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ zconfensure_buffer_stack();
+
+ /* This block is copied from zconf_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from zconf_switch_to_buffer. */
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void zconfpop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void zconfensure_buffer_stack (void)
+{
+ int num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
}
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
- {
- YY_BUFFER_STATE b;
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
if ( size < 2 ||
base[size-2] != YY_END_OF_BUFFER_CHAR ||
base[size-1] != YY_END_OF_BUFFER_CHAR )
/* They forgot to leave room for the EOB's. */
return 0;
- b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
b->yy_buf_pos = b->yy_ch_buf = base;
@@ -2954,58 +3325,53 @@ yy_size_t size;
b->yy_fill_buffer = 0;
b->yy_buffer_status = YY_BUFFER_NEW;
- yy_switch_to_buffer( b );
+ zconf_switch_to_buffer(b );
return b;
- }
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
- {
- int len;
- for ( len = 0; yy_str[len]; ++len )
- ;
-
- return yy_scan_bytes( yy_str, len );
- }
-#endif
+}
+/** Setup the input buffer state to scan a string. The next call to zconflex() will
+ * scan from a @e copy of @a str.
+ * @param str a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * zconf_scan_bytes() instead.
+ */
+YY_BUFFER_STATE zconf_scan_string (yyconst char * str )
+{
+
+ return zconf_scan_bytes(str,strlen(str) );
+}
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
- {
+/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char * bytes, int len )
+{
YY_BUFFER_STATE b;
char *buf;
yy_size_t n;
int i;
-
+
/* Get memory for full buffer, including space for trailing EOB's. */
n = len + 2;
- buf = (char *) yy_flex_alloc( n );
+ buf = (char *) zconfalloc(n );
if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
for ( i = 0; i < len; ++i )
buf[i] = bytes[i];
buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
- b = yy_scan_buffer( buf, n );
+ b = zconf_scan_buffer(buf,n );
if ( ! b )
- YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
+ YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
@@ -3013,148 +3379,164 @@ int len;
b->yy_is_our_buffer = 1;
return b;
- }
-#endif
-
+}
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
#endif
- {
- if ( yy_start_stack_ptr >= yy_start_stack_depth )
- {
- yy_size_t new_size;
- yy_start_stack_depth += YY_START_STACK_INCR;
- new_size = yy_start_stack_depth * sizeof( int );
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
- if ( ! yy_start_stack )
- yy_start_stack = (int *) yy_flex_alloc( new_size );
+/* Redefine yyless() so it works in section 3 code. */
- else
- yy_start_stack = (int *) yy_flex_realloc(
- (void *) yy_start_stack, new_size );
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ zconftext[zconfleng] = (yy_hold_char); \
+ (yy_c_buf_p) = zconftext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ zconfleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
- if ( ! yy_start_stack )
- YY_FATAL_ERROR(
- "out of memory expanding start-condition stack" );
- }
+/* Accessor methods (get/set functions) to struct members. */
- yy_start_stack[yy_start_stack_ptr++] = YY_START;
+/** Get the current line number.
+ *
+ */
+int zconfget_lineno (void)
+{
+
+ return zconflineno;
+}
- BEGIN(new_state);
- }
-#endif
+/** Get the input stream.
+ *
+ */
+FILE *zconfget_in (void)
+{
+ return zconfin;
+}
+/** Get the output stream.
+ *
+ */
+FILE *zconfget_out (void)
+{
+ return zconfout;
+}
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
- {
- if ( --yy_start_stack_ptr < 0 )
- YY_FATAL_ERROR( "start-condition stack underflow" );
+/** Get the length of the current token.
+ *
+ */
+int zconfget_leng (void)
+{
+ return zconfleng;
+}
- BEGIN(yy_start_stack[yy_start_stack_ptr]);
- }
-#endif
+/** Get the current token.
+ *
+ */
+char *zconfget_text (void)
+{
+ return zconftext;
+}
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
- {
- return yy_start_stack[yy_start_stack_ptr - 1];
- }
-#endif
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void zconfset_lineno (int line_number )
+{
+
+ zconflineno = line_number;
+}
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see zconf_switch_to_buffer
+ */
+void zconfset_in (FILE * in_str )
+{
+ zconfin = in_str ;
+}
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
- {
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
- }
+void zconfset_out (FILE * out_str )
+{
+ zconfout = out_str ;
+}
+int zconfget_debug (void)
+{
+ return zconf_flex_debug;
+}
+void zconfset_debug (int bdebug )
+{
+ zconf_flex_debug = bdebug ;
+}
-/* Redefine yyless() so it works in section 3 code. */
+/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
+int zconflex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ zconfpop_buffer_state();
+ }
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up yytext. */ \
- yytext[yyleng] = yy_hold_char; \
- yy_c_buf_p = yytext + n; \
- yy_hold_char = *yy_c_buf_p; \
- *yy_c_buf_p = '\0'; \
- yyleng = n; \
- } \
- while ( 0 )
+ /* Destroy the stack itself. */
+ zconffree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+ return 0;
+}
-/* Internal utility routines. */
+/*
+ * Internal utility routines.
+ */
#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
- {
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
register int i;
- for ( i = 0; i < n; ++i )
+ for ( i = 0; i < n; ++i )
s1[i] = s2[i];
- }
+}
#endif
#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
- {
+static int yy_flex_strlen (yyconst char * s )
+{
register int n;
- for ( n = 0; s[n]; ++n )
+ for ( n = 0; s[n]; ++n )
;
return n;
- }
+}
#endif
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
- {
+void *zconfalloc (yy_size_t size )
+{
return (void *) malloc( size );
- }
+}
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
- {
+void *zconfrealloc (void * ptr, yy_size_t size )
+{
/* The cast to (char *) in the following accommodates both
* implementations that use char* generic pointers, and those
* that use void* generic pointers. It works with the latter
@@ -3163,26 +3545,27 @@ yy_size_t size;
* as though doing an assignment.
*/
return (void *) realloc( (char *) ptr, size );
- }
+}
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
- {
- free( ptr );
- }
+void zconffree (void * ptr )
+{
+ free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
+}
-#if YY_MAIN
-int main()
- {
- yylex();
- return 0;
- }
+#define YYTABLES_NAME "yytables"
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef yytext_ptr
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
#endif
-#line 238 "zconf.l"
void zconf_starthelp(void)
{
@@ -3194,13 +3577,37 @@ void zconf_starthelp(void)
static void zconf_endhelp(void)
{
zconflval.string = text;
- BEGIN(INITIAL);
+ BEGIN(INITIAL);
+}
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
}
void zconf_initscan(const char *name)
{
- yyin = fopen(name, "r");
- if (!yyin) {
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
printf("can't find file %s\n", name);
exit(1);
}
@@ -3220,12 +3627,12 @@ void zconf_nextfile(const char *name)
memset(buf, 0, sizeof(*buf));
current_buf->state = YY_CURRENT_BUFFER;
- yyin = fopen(name, "r");
- if (!yyin) {
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
exit(1);
}
- yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
+ zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
buf->parent = current_buf;
current_buf = buf;
@@ -3253,9 +3660,9 @@ static struct buffer *zconf_endfile(void)
parent = current_buf->parent;
if (parent) {
- fclose(yyin);
- yy_delete_buffer(YY_CURRENT_BUFFER);
- yy_switch_to_buffer(parent->state);
+ fclose(zconfin);
+ zconf_delete_buffer(YY_CURRENT_BUFFER);
+ zconf_switch_to_buffer(parent->state);
}
free(current_buf);
current_buf = parent;
@@ -3266,7 +3673,7 @@ static struct buffer *zconf_endfile(void)
int zconf_lineno(void)
{
if (current_buf)
- return current_file->lineno;
+ return current_file->lineno - 1;
else
return 0;
}
@@ -3278,3 +3685,4 @@ char *zconf_curname(void)
else
return "<none>";
}
+
diff --git a/extra/config/lkc.h b/extra/config/lkc.h
index 688945b87..dd040f7a8 100644
--- a/extra/config/lkc.h
+++ b/extra/config/lkc.h
@@ -21,12 +21,14 @@ extern "C" {
#include "lkc_proto.h"
#undef P
-void symbol_end(char *help);
+#define SRCTREE "srctree"
+
int zconfparse(void);
void zconfdump(FILE *out);
extern int zconfdebug;
void zconf_starthelp(void);
+FILE *zconf_fopen(const char *name);
void zconf_initscan(const char *name);
void zconf_nextfile(const char *name);
int zconf_lineno(void);
@@ -47,9 +49,11 @@ void menu_add_menu(void);
void menu_end_menu(void);
void menu_add_entry(struct symbol *sym);
void menu_end_entry(void);
-struct property *create_prop(enum prop_type type);
void menu_add_dep(struct expr *dep);
-struct property *menu_add_prop(int token, char *prompt, struct symbol *def, struct expr *dep);
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
+void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
void menu_finalize(struct menu *parent);
void menu_set_type(int type);
struct file *file_lookup(const char *name);
@@ -61,16 +65,20 @@ extern struct menu *current_menu;
/* symbol.c */
void sym_init(void);
void sym_clear_all_valid(void);
+void sym_set_changed(struct symbol *sym);
+struct symbol *sym_check_deps(struct symbol *sym);
+struct property *prop_alloc(enum prop_type type, struct symbol *sym);
+struct symbol *prop_get_symbol(struct property *prop);
static inline tristate sym_get_tristate_value(struct symbol *sym)
{
- return S_TRI(sym->curr);
+ return sym->curr.tri;
}
static inline struct symbol *sym_get_choice_value(struct symbol *sym)
{
- return (struct symbol *)S_VAL(sym->curr);
+ return (struct symbol *)sym->curr.val;
}
static 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)
static inline bool sym_has_value(struct symbol *sym)
{
- //return S_VAL(sym->def) != NULL;
return sym->flags & SYMBOL_NEW ? false : true;
}
diff --git a/extra/config/lkc_proto.h b/extra/config/lkc_proto.h
index 47e9c6db3..97c79178e 100644
--- a/extra/config/lkc_proto.h
+++ b/extra/config/lkc_proto.h
@@ -5,7 +5,7 @@ P(conf_read,int,(const char *name));
P(conf_write,int,(const char *name));
/* menu.c */
-extern struct menu rootmenu;
+P(rootmenu,struct menu,);
P(menu_is_visible,bool,(struct menu *menu));
P(menu_get_prompt,const char *,(struct menu *menu));
@@ -14,17 +14,18 @@ P(menu_get_parent_menu,struct menu *,(struct menu *menu));
/* symbol.c */
P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
-extern int sym_change_count;
+P(sym_change_count,int,);
P(sym_lookup,struct symbol *,(const char *name, int isconst));
P(sym_find,struct symbol *,(const char *name));
-P(sym_type_name,const char *,(int type));
+P(sym_type_name,const char *,(enum symbol_type type));
P(sym_calc_value,void,(struct symbol *sym));
-P(sym_get_type,int,(struct symbol *sym));
+P(sym_get_type,enum symbol_type,(struct symbol *sym));
P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
+P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
P(sym_is_changable,bool,(struct symbol *sym));
P(sym_get_choice_prop,struct property *,(struct symbol *sym));
diff --git a/extra/config/mconf.c b/extra/config/mconf.c
index 571e39b8f..2193c7351 100644
--- a/extra/config/mconf.c
+++ b/extra/config/mconf.c
@@ -28,6 +28,7 @@
#define LKC_DIRECT_LINK
#include "lkc.h"
+static char menu_backtitle[128];
static const char menu_instructions[] =
"Arrow keys navigate the menu. "
"<Enter> selects submenus --->. "
@@ -120,6 +121,7 @@ static void show_readme(void);
static void init_wsize(void)
{
struct winsize ws;
+ char *env;
if (ioctl(1, TIOCGWINSZ, &ws) == -1) {
rows = 24;
@@ -127,6 +129,20 @@ static void init_wsize(void)
} else {
rows = ws.ws_row;
cols = ws.ws_col;
+ if (!rows) {
+ env = getenv("LINES");
+ if (env)
+ rows = atoi(env);
+ if (!rows)
+ rows = 24;
+ }
+ if (!cols) {
+ env = getenv("COLUMNS");
+ if (env)
+ cols = atoi(env);
+ if (!cols)
+ cols = 80;
+ }
}
if (rows < 19 || cols < 80) {
@@ -226,9 +242,7 @@ static void build_conf(struct menu *menu)
menu->data ? "-->" : "++>",
indent + 1, ' ', prompt);
} else {
- if (menu->parent != &rootmenu)
- cprint_name(" %*c", indent + 1, ' ');
- cprint_name("%s --->", prompt);
+ cprint_name(" %*c%s --->", indent + 1, ' ', prompt);
}
if (single_menu_mode && menu->data)
@@ -303,7 +317,10 @@ static void build_conf(struct menu *menu)
switch (type) {
case S_BOOLEAN:
cprint_tag("t%p", menu);
- cprint_name("[%c]", val == no ? ' ' : '*');
+ if (sym_is_changable(sym))
+ cprint_name("[%c]", val == no ? ' ' : '*');
+ else
+ cprint_name("---");
break;
case S_TRISTATE:
cprint_tag("t%p", menu);
@@ -312,7 +329,10 @@ static void build_conf(struct menu *menu)
case mod: ch = 'M'; break;
default: ch = ' '; break;
}
- cprint_name("<%c>", ch);
+ if (sym_is_changable(sym))
+ cprint_name("<%c>", ch);
+ else
+ cprint_name("---");
break;
default:
cprint_tag("s%p", menu);
@@ -321,12 +341,18 @@ static void build_conf(struct menu *menu)
if (tmp < 0)
tmp = 0;
cprint_name("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
- sym_has_value(sym) ? "" : " (NEW)");
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : " (NEW)");
goto conf_childs;
}
}
cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
- sym_has_value(sym) ? "" : " (NEW)");
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : " (NEW)");
+ if (menu->prompt->type == P_MENU) {
+ cprint_name(" --->");
+ return;
+ }
}
conf_childs:
@@ -390,13 +416,15 @@ static void conf(struct menu *menu)
switch (type) {
case 'm':
if (single_menu_mode)
- submenu->data = (submenu->data)? NULL : (void *)1;
+ submenu->data = (void *) (long) !submenu->data;
else
conf(submenu);
break;
case 't':
if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
conf_choice(submenu);
+ else if (submenu->prompt->type == P_MENU)
+ conf(submenu);
break;
case 's':
conf_string(submenu);
@@ -602,7 +630,6 @@ static void conf_cleanup(void)
{
tcsetattr(1, TCSAFLUSH, &ios_org);
unlink(".help.tmp");
- unlink("lxdialog.scrltmp");
}
static void winch_handler(int sig)
@@ -638,10 +665,9 @@ int main(int ac, char **av)
conf_parse(av[1]);
conf_read(NULL);
- backtitle = malloc(128);
sym = sym_lookup("VERSION", 0);
sym_calc_value(sym);
- snprintf(backtitle, 128, "uClibc v%s Configuration",
+ snprintf(menu_backtitle, 128, "uClibc v%s Configuration",
sym_get_string_value(sym));
mode = getenv("MENUCONFIG_MODE");
diff --git a/extra/config/menu.c b/extra/config/menu.c
index 1beec1687..4a889d32f 100644
--- a/extra/config/menu.c
+++ b/extra/config/menu.c
@@ -54,9 +54,34 @@ void menu_end_menu(void)
current_menu = current_menu->parent;
}
+struct expr *menu_check_dep(struct expr *e)
+{
+ if (!e)
+ return e;
+
+ switch (e->type) {
+ case E_NOT:
+ e->left.expr = menu_check_dep(e->left.expr);
+ break;
+ case E_OR:
+ case E_AND:
+ e->left.expr = menu_check_dep(e->left.expr);
+ e->right.expr = menu_check_dep(e->right.expr);
+ break;
+ case E_SYMBOL:
+ /* change 'm' into 'm' && MODULES */
+ if (e->left.sym == &symbol_mod)
+ return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
+ break;
+ default:
+ break;
+ }
+ return e;
+}
+
void menu_add_dep(struct expr *dep)
{
- current_entry->dep = expr_alloc_and(current_entry->dep, dep);
+ current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
}
void menu_set_type(int type)
@@ -69,56 +94,43 @@ void menu_set_type(int type)
sym->type = type;
return;
}
- fprintf(stderr, "%s:%d: type of '%s' redefined from '%s' to '%s'\n",
+ fprintf(stderr, "%s:%d:warning: type of '%s' redefined from '%s' to '%s'\n",
current_entry->file->name, current_entry->lineno,
sym->name ? sym->name : "<choice>", sym_type_name(sym->type), sym_type_name(type));
}
-struct property *create_prop(enum prop_type type)
-{
- struct property *prop;
-
- prop = malloc(sizeof(*prop));
- memset(prop, 0, sizeof(*prop));
- prop->type = type;
- prop->file = current_file;
- prop->lineno = zconf_lineno();
-
- return prop;
-}
-
-struct property *menu_add_prop(int token, char *prompt, struct symbol *def, struct expr *dep)
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)
{
- struct property *prop = create_prop(token);
- struct property **propp;
+ struct property *prop = prop_alloc(type, current_entry->sym);
- prop->sym = current_entry->sym;
prop->menu = current_entry;
prop->text = prompt;
- prop->def = def;
- E_EXPR(prop->visible) = dep;
+ prop->expr = expr;
+ prop->visible.expr = menu_check_dep(dep);
- if (prompt)
+ if (prompt) {
+ if (current_entry->prompt)
+ fprintf(stderr, "%s:%d: prompt redefined\n",
+ current_entry->file->name, current_entry->lineno);
current_entry->prompt = prop;
-
- /* append property to the prop list of symbol */
- if (prop->sym) {
- for (propp = &prop->sym->prop; *propp; propp = &(*propp)->next)
- ;
- *propp = prop;
}
return prop;
}
-void menu_add_prompt(int token, char *prompt, struct expr *dep)
+void menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
{
- current_entry->prompt = menu_add_prop(token, prompt, NULL, dep);
+ menu_add_prop(type, prompt, NULL, dep);
}
-void menu_add_default(int token, struct symbol *def, struct expr *dep)
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
{
- current_entry->prompt = menu_add_prop(token, NULL, def, dep);
+ menu_add_prop(type, NULL, expr, dep);
+}
+
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
+{
+ menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
}
void menu_finalize(struct menu *parent)
@@ -126,7 +138,7 @@ void menu_finalize(struct menu *parent)
struct menu *menu, *last_menu;
struct symbol *sym;
struct property *prop;
- struct expr *parentdep, *basedep, *dep, *dep2;
+ struct expr *parentdep, *basedep, *dep, *dep2, **ep;
sym = parent->sym;
if (parent->list) {
@@ -143,7 +155,7 @@ void menu_finalize(struct menu *parent)
}
parentdep = expr_alloc_symbol(sym);
} else if (parent->prompt)
- parentdep = E_EXPR(parent->prompt->visible);
+ parentdep = parent->prompt->visible.expr;
else
parentdep = parent->dep;
@@ -159,23 +171,28 @@ void menu_finalize(struct menu *parent)
for (; prop; prop = prop->next) {
if (prop->menu != menu)
continue;
- dep = expr_transform(E_EXPR(prop->visible));
+ dep = expr_transform(prop->visible.expr);
dep = expr_alloc_and(expr_copy(basedep), dep);
dep = expr_eliminate_dups(dep);
if (menu->sym && menu->sym->type != S_TRISTATE)
dep = expr_trans_bool(dep);
- E_EXPR(prop->visible) = dep;
+ prop->visible.expr = dep;
+ if (prop->type == P_SELECT) {
+ struct symbol *es = prop_get_symbol(prop);
+ es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
+ expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+ }
}
}
for (menu = parent->list; menu; menu = menu->next)
menu_finalize(menu);
- } else if (sym && parent->prompt) {
- basedep = E_EXPR(parent->prompt->visible);
+ } else if (sym) {
+ basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
basedep = expr_eliminate_dups(expr_transform(basedep));
last_menu = NULL;
for (menu = parent->next; menu; menu = menu->next) {
- dep = menu->prompt ? E_EXPR(menu->prompt->visible) : menu->dep;
+ dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
if (!expr_contains_symbol(dep, sym))
break;
if (expr_depends_symbol(dep, sym))
@@ -204,14 +221,27 @@ void menu_finalize(struct menu *parent)
for (menu = parent->list; menu; menu = menu->next) {
if (sym && sym_is_choice(sym) && menu->sym) {
menu->sym->flags |= SYMBOL_CHOICEVAL;
+ if (!menu->prompt)
+ fprintf(stderr, "%s:%d:warning: choice value must have a prompt\n",
+ menu->file->name, menu->lineno);
+ for (prop = menu->sym->prop; prop; prop = prop->next) {
+ if (prop->type == P_PROMPT && prop->menu != menu) {
+ fprintf(stderr, "%s:%d:warning: choice values currently only support a single prompt\n",
+ prop->file->name, prop->lineno);
+
+ }
+ if (prop->type == P_DEFAULT)
+ fprintf(stderr, "%s:%d:warning: defaults for choice values not supported\n",
+ prop->file->name, prop->lineno);
+ }
current_entry = menu;
menu_set_type(sym->type);
- menu_add_prop(P_CHOICE, NULL, parent->sym, NULL);
- prop = sym_get_choice_prop(parent->sym);
- //dep = expr_alloc_one(E_CHOICE, dep);
- //dep->right.sym = menu->sym;
- prop->dep = expr_alloc_one(E_CHOICE, prop->dep);
- prop->dep->right.sym = menu->sym;
+ menu_add_symbol(P_CHOICE, sym, NULL);
+ prop = sym_get_choice_prop(sym);
+ for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
+ ;
+ *ep = expr_alloc_one(E_CHOICE, NULL);
+ (*ep)->right.sym = menu->sym;
}
if (menu->list && (!menu->prompt || !menu->prompt->text)) {
for (last_menu = menu->list; ; last_menu = last_menu->next) {
@@ -224,20 +254,79 @@ void menu_finalize(struct menu *parent)
menu->list = NULL;
}
}
+
+ if (sym && !(sym->flags & SYMBOL_WARNED)) {
+ struct symbol *sym2;
+ if (sym->type == S_UNKNOWN)
+ fprintf(stderr, "%s:%d:warning: config symbol defined without type\n",
+ parent->file->name, parent->lineno);
+
+ if (sym_is_choice(sym) && !parent->prompt)
+ fprintf(stderr, "%s:%d:warning: choice must have a prompt\n",
+ parent->file->name, parent->lineno);
+
+ for (prop = sym->prop; prop; prop = prop->next) {
+ switch (prop->type) {
+ case P_DEFAULT:
+ if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
+ prop->expr->type != E_SYMBOL)
+ fprintf(stderr, "%s:%d:warning: default must be a single symbol\n",
+ prop->file->name, prop->lineno);
+ break;
+ case P_SELECT:
+ sym2 = prop_get_symbol(prop);
+ if ((sym->type != S_BOOLEAN && sym->type != S_TRISTATE) ||
+ (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE))
+ fprintf(stderr, "%s:%d:warning: enable is only allowed with boolean and tristate symbols\n",
+ prop->file->name, prop->lineno);
+ break;
+ case P_RANGE:
+ if (sym->type != S_INT && sym->type != S_HEX)
+ fprintf(stderr, "%s:%d:warning: range is only allowed for int or hex symbols\n",
+ prop->file->name, prop->lineno);
+ if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
+ !sym_string_valid(sym, prop->expr->right.sym->name))
+ fprintf(stderr, "%s:%d:warning: range is invalid\n",
+ prop->file->name, prop->lineno);
+ break;
+ default:
+ ;
+ }
+ }
+ sym->flags |= SYMBOL_WARNED;
+ }
+
+ if (sym && !sym_is_optional(sym) && parent->prompt) {
+ sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
+ expr_alloc_and(parent->prompt->visible.expr,
+ expr_alloc_symbol(&symbol_mod)));
+ }
}
bool menu_is_visible(struct menu *menu)
{
+ struct menu *child;
+ struct symbol *sym;
tristate visible;
if (!menu->prompt)
return false;
- if (menu->sym) {
- sym_calc_value(menu->sym);
- visible = E_TRI(menu->prompt->visible);
+ sym = menu->sym;
+ if (sym) {
+ sym_calc_value(sym);
+ visible = menu->prompt->visible.tri;
} else
- visible = E_CALC(menu->prompt->visible);
- return visible != no;
+ visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);
+
+ if (visible != no)
+ return true;
+ if (!sym || sym_get_tristate_value(menu->sym) == no)
+ return false;
+
+ for (child = menu->list; child; child = child->next)
+ if (menu_is_visible(child))
+ return true;
+ return false;
}
const char *menu_get_prompt(struct menu *menu)
@@ -258,10 +347,9 @@ struct menu *menu_get_parent_menu(struct menu *menu)
{
enum prop_type type;
- while (menu != &rootmenu) {
- menu = menu->parent;
+ for (; menu != &rootmenu; menu = menu->parent) {
type = menu->prompt ? menu->prompt->type : 0;
- if (type == P_MENU || type == P_ROOTMENU)
+ if (type == P_MENU)
break;
}
return menu;
diff --git a/extra/config/symbol.c b/extra/config/symbol.c
index f2d0015de..29d8d3e0b 100644
--- a/extra/config/symbol.c
+++ b/extra/config/symbol.c
@@ -34,24 +34,14 @@ struct symbol *modules_sym;
void sym_add_default(struct symbol *sym, const char *def)
{
- struct property *prop = create_prop(P_DEFAULT);
- struct property **propp;
-
- prop->sym = sym;
- prop->def = sym_lookup(def, 1);
+ struct property *prop = prop_alloc(P_DEFAULT, sym);
- /* append property to the prop list of symbol */
- if (prop->sym) {
- for (propp = &prop->sym->prop; *propp; propp = &(*propp)->next)
- ;
- *propp = prop;
- }
+ prop->expr = expr_alloc_symbol(sym_lookup(def, 1));
}
void sym_init(void)
{
struct symbol *sym;
- struct utsname uts;
char *p;
static bool inited = false;
@@ -59,17 +49,6 @@ void sym_init(void)
return;
inited = true;
- uname(&uts);
-
-#if 0
- sym = sym_lookup("ARCH", 0);
- sym->type = S_STRING;
- sym->flags |= SYMBOL_AUTO;
- p = getenv("ARCH");
- if (p)
- sym_add_default(sym, p);
-#endif
-
sym = sym_lookup("VERSION", 0);
sym->type = S_STRING;
sym->flags |= SYMBOL_AUTO;
@@ -77,37 +56,32 @@ void sym_init(void)
if (p)
sym_add_default(sym, p);
-#if 0
- sym = sym_lookup("UNAME_RELEASE", 0);
- sym->type = S_STRING;
- sym->flags |= SYMBOL_AUTO;
- sym_add_default(sym, uts.release);
-#endif
-
sym = sym_lookup("TARGET_ARCH", 0);
sym->type = S_STRING;
sym->flags |= SYMBOL_AUTO;
p = getenv("TARGET_ARCH");
if (p)
sym_add_default(sym, p);
+
}
-int sym_get_type(struct symbol *sym)
+enum symbol_type sym_get_type(struct symbol *sym)
{
- int type = sym->type;
+ enum symbol_type type = sym->type;
+
if (type == S_TRISTATE) {
if (sym_is_choice_value(sym) && sym->visible == yes)
type = S_BOOLEAN;
else {
sym_calc_value(modules_sym);
- if (S_TRI(modules_sym->curr) == no)
+ if (modules_sym->curr.tri == no)
type = S_BOOLEAN;
}
}
return type;
}
-const char *sym_type_name(int type)
+const char *sym_type_name(enum symbol_type type)
{
switch (type) {
case S_BOOLEAN:
@@ -122,6 +96,8 @@ const char *sym_type_name(int type)
return "string";
case S_UNKNOWN:
return "unknown";
+ case S_OTHER:
+ break;
}
return "???";
}
@@ -138,41 +114,104 @@ struct property *sym_get_choice_prop(struct symbol *sym)
struct property *sym_get_default_prop(struct symbol *sym)
{
struct property *prop;
- tristate visible;
for_all_defaults(sym, prop) {
- visible = E_CALC(prop->visible);
- if (visible != no)
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri != no)
+ return prop;
+ }
+ return NULL;
+}
+
+struct property *sym_get_range_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_properties(sym, prop, P_RANGE) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri != no)
return prop;
}
return NULL;
}
-void sym_calc_visibility(struct symbol *sym)
+static void sym_calc_visibility(struct symbol *sym)
{
struct property *prop;
- tristate visible, oldvisible;
+ tristate tri;
/* any prompt visible? */
- oldvisible = sym->visible;
- visible = no;
- for_all_prompts(sym, prop)
- visible = E_OR(visible, E_CALC(prop->visible));
- if (oldvisible != visible) {
- sym->visible = visible;
- sym->flags |= SYMBOL_CHANGED;
+ tri = no;
+ for_all_prompts(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ tri = E_OR(tri, prop->visible.tri);
+ }
+ if (sym->visible != tri) {
+ sym->visible = tri;
+ sym_set_changed(sym);
+ }
+ if (sym_is_choice_value(sym))
+ return;
+ tri = no;
+ if (sym->rev_dep.expr)
+ tri = expr_calc_value(sym->rev_dep.expr);
+ if (sym->rev_dep.tri != tri) {
+ sym->rev_dep.tri = tri;
+ sym_set_changed(sym);
+ }
+}
+
+static struct symbol *sym_calc_choice(struct symbol *sym)
+{
+ struct symbol *def_sym;
+ struct property *prop;
+ struct expr *e;
+
+ /* is the user choice visible? */
+ def_sym = sym->user.val;
+ if (def_sym) {
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ return def_sym;
}
+
+ /* any of the defaults visible? */
+ for_all_defaults(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri == no)
+ continue;
+ def_sym = prop_get_symbol(prop);
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ return def_sym;
+ }
+
+ /* just get the first visible value */
+ prop = sym_get_choice_prop(sym);
+ for (e = prop->expr; e; e = e->left.expr) {
+ def_sym = e->right.sym;
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ return def_sym;
+ }
+
+ /* no choice? reset tristate value */
+ sym->curr.tri = no;
+ return NULL;
}
void sym_calc_value(struct symbol *sym)
{
struct symbol_value newval, oldval;
- struct property *prop, *def_prop;
- struct symbol *def_sym;
+ struct property *prop;
struct expr *e;
+ if (!sym)
+ return;
+
if (sym->flags & SYMBOL_VALID)
return;
+ sym->flags |= SYMBOL_VALID;
oldval = sym->curr;
@@ -187,17 +226,10 @@ void sym_calc_value(struct symbol *sym)
newval = symbol_no.curr;
break;
default:
- S_VAL(newval) = sym->name;
- S_TRI(newval) = no;
- if (sym->flags & SYMBOL_CONST) {
- goto out;
- }
- //newval = symbol_empty.curr;
- // generate warning somewhere here later
- //S_TRI(newval) = yes;
- goto out;
+ sym->curr.val = sym->name;
+ sym->curr.tri = no;
+ return;
}
- sym->flags |= SYMBOL_VALID;
if (!sym_is_choice_value(sym))
sym->flags &= ~SYMBOL_WRITE;
@@ -206,95 +238,77 @@ void sym_calc_value(struct symbol *sym)
/* set default if recursively called */
sym->curr = newval;
- if (sym->visible != no) {
- sym->flags |= SYMBOL_WRITE;
- if (!sym_has_value(sym)) {
- if (!sym_is_choice(sym)) {
- prop = sym_get_default_prop(sym);
- if (prop) {
- sym_calc_value(prop->def);
- newval = prop->def->curr;
- }
- }
- } else
- newval = sym->def;
-
- S_TRI(newval) = E_AND(S_TRI(newval), sym->visible);
- /* if the symbol is visible and not optionial,
- * possibly ignore old user choice. */
- if (!sym_is_optional(sym) && S_TRI(newval) == no)
- S_TRI(newval) = sym->visible;
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
if (sym_is_choice_value(sym) && sym->visible == yes) {
prop = sym_get_choice_prop(sym);
- S_TRI(newval) = (S_VAL(prop->def->curr) == sym) ? yes : no;
- }
- } else {
- prop = sym_get_default_prop(sym);
- if (prop) {
+ newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
+ } else if (E_OR(sym->visible, sym->rev_dep.tri) != no) {
sym->flags |= SYMBOL_WRITE;
- sym_calc_value(prop->def);
- newval = prop->def->curr;
+ if (sym_has_value(sym))
+ newval.tri = sym->user.tri;
+ else if (!sym_is_choice(sym)) {
+ prop = sym_get_default_prop(sym);
+ if (prop)
+ newval.tri = expr_calc_value(prop->expr);
+ }
+ newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri);
+ } else if (!sym_is_choice(sym)) {
+ prop = sym_get_default_prop(sym);
+ if (prop) {
+ sym->flags |= SYMBOL_WRITE;
+ newval.tri = expr_calc_value(prop->expr);
+ }
}
- }
-
- switch (sym_get_type(sym)) {
- case S_TRISTATE:
- if (S_TRI(newval) != mod)
- break;
- sym_calc_value(modules_sym);
- if (S_TRI(modules_sym->curr) == no)
- S_TRI(newval) = yes;
- break;
- case S_BOOLEAN:
- if (S_TRI(newval) == mod)
- S_TRI(newval) = yes;
- }
-
-out:
- sym->curr = newval;
-
- if (sym_is_choice(sym) && S_TRI(newval) == yes) {
- def_sym = S_VAL(sym->def);
- if (def_sym) {
- sym_calc_visibility(def_sym);
- if (def_sym->visible == no)
- def_sym = NULL;
+ if (sym_get_type(sym) == S_BOOLEAN) {
+ if (newval.tri == mod)
+ newval.tri = yes;
+ if (sym->visible == mod)
+ sym->visible = yes;
+ if (sym->rev_dep.tri == mod)
+ sym->rev_dep.tri = yes;
}
- if (!def_sym) {
- for_all_defaults(sym, def_prop) {
- if (E_CALC(def_prop->visible) == no)
- continue;
- sym_calc_visibility(def_prop->def);
- if (def_prop->def->visible != no) {
- def_sym = def_prop->def;
- break;
- }
+ break;
+ case S_STRING:
+ case S_HEX:
+ case S_INT:
+ if (sym->visible != no) {
+ sym->flags |= SYMBOL_WRITE;
+ if (sym_has_value(sym)) {
+ newval.val = sym->user.val;
+ break;
}
}
-
- if (!def_sym) {
- prop = sym_get_choice_prop(sym);
- for (e = prop->dep; e; e = e->left.expr) {
- sym_calc_visibility(e->right.sym);
- if (e->right.sym->visible != no) {
- def_sym = e->right.sym;
- break;
- }
+ prop = sym_get_default_prop(sym);
+ if (prop) {
+ struct symbol *ds = prop_get_symbol(prop);
+ if (ds) {
+ sym->flags |= SYMBOL_WRITE;
+ sym_calc_value(ds);
+ newval.val = ds->curr.val;
}
}
-
- S_VAL(newval) = def_sym;
+ break;
+ default:
+ ;
}
- if (memcmp(&oldval, &newval, sizeof(newval)))
- sym->flags |= SYMBOL_CHANGED;
sym->curr = newval;
+ if (sym_is_choice(sym) && newval.tri == yes)
+ sym->curr.val = sym_calc_choice(sym);
+
+ if (memcmp(&oldval, &sym->curr, sizeof(oldval)))
+ sym_set_changed(sym);
if (sym_is_choice(sym)) {
int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
prop = sym_get_choice_prop(sym);
- for (e = prop->dep; e; e = e->left.expr)
+ for (e = prop->expr; e; e = e->left.expr) {
e->right.sym->flags |= flags;
+ if (flags & SYMBOL_CHANGED)
+ sym_set_changed(e->right.sym);
+ }
}
}
@@ -308,13 +322,24 @@ void sym_clear_all_valid(void)
sym_change_count++;
}
+void sym_set_changed(struct symbol *sym)
+{
+ struct property *prop;
+
+ sym->flags |= SYMBOL_CHANGED;
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu)
+ prop->menu->flags |= MENU_CHANGED;
+ }
+}
+
void sym_set_all_changed(void)
{
struct symbol *sym;
int i;
for_all_symbols(i, sym)
- sym->flags |= SYMBOL_CHANGED;
+ sym_set_changed(sym);
}
bool sym_tristate_within_range(struct symbol *sym, tristate val)
@@ -327,19 +352,13 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val)
if (type != S_BOOLEAN && type != S_TRISTATE)
return false;
- switch (val) {
- case no:
- if (sym_is_choice_value(sym) && sym->visible == yes)
- return false;
- return sym_is_optional(sym);
- case mod:
- if (sym_is_choice_value(sym) && sym->visible == yes)
- return false;
- return type == S_TRISTATE;
- case yes:
- return type == S_BOOLEAN || sym->visible == yes;
- }
- return false;
+ if (type == S_BOOLEAN && val == mod)
+ return false;
+ if (sym->visible <= sym->rev_dep.tri)
+ return false;
+ if (sym_is_choice_value(sym) && sym->visible == yes)
+ return val == yes;
+ return val >= sym->rev_dep.tri && val <= sym->visible;
}
bool sym_set_tristate_value(struct symbol *sym, tristate val)
@@ -351,16 +370,16 @@ bool sym_set_tristate_value(struct symbol *sym, tristate val)
if (sym->flags & SYMBOL_NEW) {
sym->flags &= ~SYMBOL_NEW;
- sym->flags |= SYMBOL_CHANGED;
+ sym_set_changed(sym);
}
if (sym_is_choice_value(sym) && val == yes) {
- struct property *prop = sym_get_choice_prop(sym);
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
- S_VAL(prop->def->def) = sym;
- prop->def->flags &= ~SYMBOL_NEW;
+ cs->user.val = sym;
+ cs->flags &= ~SYMBOL_NEW;
}
- S_TRI(sym->def) = val;
+ sym->user.tri = val;
if (oldval != val) {
sym_clear_all_valid();
if (sym == modules_sym)
@@ -404,12 +423,12 @@ bool sym_string_valid(struct symbol *sym, const char *str)
ch = *str++;
if (ch == '-')
ch = *str++;
- if (!isdigit((int)ch))
+ if (!isdigit(ch))
return false;
if (ch == '0' && *str != 0)
return false;
while ((ch = *str++)) {
- if (!isdigit((int)ch))
+ if (!isdigit(ch))
return false;
}
return true;
@@ -418,21 +437,58 @@ bool sym_string_valid(struct symbol *sym, const char *str)
str += 2;
ch = *str++;
do {
- if (!isxdigit((int)ch))
+ if (!isxdigit(ch))
return false;
} while ((ch = *str++));
return true;
case S_BOOLEAN:
case S_TRISTATE:
switch (str[0]) {
- case 'y':
- case 'Y':
+ case 'y': case 'Y':
+ case 'm': case 'M':
+ case 'n': case 'N':
+ return true;
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+bool sym_string_within_range(struct symbol *sym, const char *str)
+{
+ struct property *prop;
+ int val;
+
+ switch (sym->type) {
+ case S_STRING:
+ return sym_string_valid(sym, str);
+ case S_INT:
+ if (!sym_string_valid(sym, str))
+ return false;
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return true;
+ val = strtol(str, NULL, 10);
+ return val >= strtol(prop->expr->left.sym->name, NULL, 10) &&
+ val <= strtol(prop->expr->right.sym->name, NULL, 10);
+ case S_HEX:
+ if (!sym_string_valid(sym, str))
+ return false;
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return true;
+ val = strtol(str, NULL, 16);
+ return val >= strtol(prop->expr->left.sym->name, NULL, 16) &&
+ val <= strtol(prop->expr->right.sym->name, NULL, 16);
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (str[0]) {
+ case 'y': case 'Y':
return sym_tristate_within_range(sym, yes);
- case 'm':
- case 'M':
+ case 'm': case 'M':
return sym_tristate_within_range(sym, mod);
- case 'n':
- case 'N':
+ case 'n': case 'N':
return sym_tristate_within_range(sym, no);
}
return false;
@@ -451,14 +507,11 @@ bool sym_set_string_value(struct symbol *sym, const char *newval)
case S_BOOLEAN:
case S_TRISTATE:
switch (newval[0]) {
- case 'y':
- case 'Y':
+ case 'y': case 'Y':
return sym_set_tristate_value(sym, yes);
- case 'm':
- case 'M':
+ case 'm': case 'M':
return sym_set_tristate_value(sym, mod);
- case 'n':
- case 'N':
+ case 'n': case 'N':
return sym_set_tristate_value(sym, no);
}
return false;
@@ -466,23 +519,23 @@ bool sym_set_string_value(struct symbol *sym, const char *newval)
;
}
- if (!sym_string_valid(sym, newval))
+ if (!sym_string_within_range(sym, newval))
return false;
if (sym->flags & SYMBOL_NEW) {
sym->flags &= ~SYMBOL_NEW;
- sym->flags |= SYMBOL_CHANGED;
+ sym_set_changed(sym);
}
- oldval = S_VAL(sym->def);
+ oldval = sym->user.val;
size = strlen(newval) + 1;
if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
size += 2;
- S_VAL(sym->def) = val = malloc(size);
+ sym->user.val = val = malloc(size);
*val++ = '0';
*val++ = 'x';
} else if (!oldval || strcmp(oldval, newval))
- S_VAL(sym->def) = val = malloc(size);
+ sym->user.val = val = malloc(size);
else
return true;
@@ -513,20 +566,12 @@ const char *sym_get_string_value(struct symbol *sym)
default:
;
}
- return (const char *)S_VAL(sym->curr);
+ return (const char *)sym->curr.val;
}
bool sym_is_changable(struct symbol *sym)
{
- if (sym->visible == no)
- return false;
- /* at least 'n' and 'y'/'m' is selectable */
- if (sym_is_optional(sym))
- return true;
- /* no 'n', so 'y' and 'm' must be selectable */
- if (sym_get_type(sym) == S_TRISTATE && sym->visible == yes)
- return true;
- return false;
+ return sym->visible > sym->rev_dep.tri;
}
struct symbol *sym_lookup(const char *name, int isconst)
@@ -536,7 +581,6 @@ struct symbol *sym_lookup(const char *name, int isconst)
char *new_name;
int hash = 0;
- //printf("lookup: %s -> ", name);
if (name) {
if (name[0] && !name[1]) {
switch (name[0]) {
@@ -552,10 +596,8 @@ struct symbol *sym_lookup(const char *name, int isconst)
for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
if (!strcmp(symbol->name, name)) {
if ((isconst && symbol->flags & SYMBOL_CONST) ||
- (!isconst && !(symbol->flags & SYMBOL_CONST))) {
- //printf("h:%p\n", symbol);
+ (!isconst && !(symbol->flags & SYMBOL_CONST)))
return symbol;
- }
}
}
new_name = strdup(name);
@@ -575,7 +617,6 @@ struct symbol *sym_lookup(const char *name, int isconst)
symbol->next = symbol_hash[hash];
symbol_hash[hash] = symbol;
- //printf("n:%p\n", symbol);
return symbol;
}
@@ -608,6 +649,104 @@ struct symbol *sym_find(const char *name)
return symbol;
}
+struct symbol *sym_check_deps(struct symbol *sym);
+
+static struct symbol *sym_check_expr_deps(struct expr *e)
+{
+ struct symbol *sym;
+
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_OR:
+ case E_AND:
+ sym = sym_check_expr_deps(e->left.expr);
+ if (sym)
+ return sym;
+ return sym_check_expr_deps(e->right.expr);
+ case E_NOT:
+ return sym_check_expr_deps(e->left.expr);
+ case E_EQUAL:
+ case E_UNEQUAL:
+ sym = sym_check_deps(e->left.sym);
+ if (sym)
+ return sym;
+ return sym_check_deps(e->right.sym);
+ case E_SYMBOL:
+ return sym_check_deps(e->left.sym);
+ default:
+ break;
+ }
+ printf("Oops! How to check %d?\n", e->type);
+ return NULL;
+}
+
+struct symbol *sym_check_deps(struct symbol *sym)
+{
+ struct symbol *sym2;
+ struct property *prop;
+
+ if (sym->flags & SYMBOL_CHECK_DONE)
+ return NULL;
+ if (sym->flags & SYMBOL_CHECK) {
+ printf("Warning! Found recursive dependency: %s", sym->name);
+ return sym;
+ }
+
+ sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+ sym2 = sym_check_expr_deps(sym->rev_dep.expr);
+ if (sym2)
+ goto out;
+
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->type == P_CHOICE)
+ continue;
+ sym2 = sym_check_expr_deps(prop->visible.expr);
+ if (sym2)
+ goto out;
+ if (prop->type != P_DEFAULT || sym_is_choice(sym))
+ continue;
+ sym2 = sym_check_expr_deps(prop->expr);
+ if (sym2)
+ goto out;
+ }
+out:
+ if (sym2)
+ printf(" %s", sym->name);
+ sym->flags &= ~SYMBOL_CHECK;
+ return sym2;
+}
+
+struct property *prop_alloc(enum prop_type type, struct symbol *sym)
+{
+ struct property *prop;
+ struct property **propp;
+
+ prop = malloc(sizeof(*prop));
+ memset(prop, 0, sizeof(*prop));
+ prop->type = type;
+ prop->sym = sym;
+ prop->file = current_file;
+ prop->lineno = zconf_lineno();
+
+ /* append property to the prop list of symbol */
+ if (sym) {
+ for (propp = &sym->prop; *propp; propp = &(*propp)->next)
+ ;
+ *propp = prop;
+ }
+
+ return prop;
+}
+
+struct symbol *prop_get_symbol(struct property *prop)
+{
+ if (prop->expr && (prop->expr->type == E_SYMBOL ||
+ prop->expr->type == E_CHOICE))
+ return prop->expr->left.sym;
+ return NULL;
+}
+
const char *prop_get_type_name(enum prop_type type)
{
switch (type) {
@@ -617,13 +756,16 @@ const char *prop_get_type_name(enum prop_type type)
return "comment";
case P_MENU:
return "menu";
- case P_ROOTMENU:
- return "rootmenu";
case P_DEFAULT:
return "default";
case P_CHOICE:
return "choice";
- default:
- return "unknown";
+ case P_SELECT:
+ return "select";
+ case P_RANGE:
+ return "range";
+ case P_UNKNOWN:
+ break;
}
+ return "unknown";
}
diff --git a/extra/config/zconf.l b/extra/config/zconf.l
index a412bf411..55517b287 100644
--- a/extra/config/zconf.l
+++ b/extra/config/zconf.l
@@ -7,6 +7,7 @@
* Released under the terms of the GNU GPL v2.0.
*/
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -14,7 +15,6 @@
#define LKC_DIRECT_LINK
#include "lkc.h"
-#include "zconf.tab.h"
#define START_STRSIZE 16
@@ -96,6 +96,7 @@ n [A-Za-z0-9_]
"endchoice" BEGIN(PARAM); return T_ENDCHOICE;
"comment" BEGIN(PARAM); return T_COMMENT;
"config" BEGIN(PARAM); return T_CONFIG;
+ "menuconfig" BEGIN(PARAM); return T_MENUCONFIG;
"help" BEGIN(PARAM); return T_HELP;
"if" BEGIN(PARAM); return T_IF;
"endif" BEGIN(PARAM); return T_ENDIF;
@@ -105,11 +106,17 @@ n [A-Za-z0-9_]
"default" BEGIN(PARAM); return T_DEFAULT;
"prompt" BEGIN(PARAM); return T_PROMPT;
"tristate" BEGIN(PARAM); return T_TRISTATE;
+ "def_tristate" BEGIN(PARAM); return T_DEF_TRISTATE;
"bool" BEGIN(PARAM); return T_BOOLEAN;
"boolean" BEGIN(PARAM); return T_BOOLEAN;
+ "def_bool" BEGIN(PARAM); return T_DEF_BOOLEAN;
+ "def_boolean" BEGIN(PARAM); return T_DEF_BOOLEAN;
"int" BEGIN(PARAM); return T_INT;
"hex" BEGIN(PARAM); return T_HEX;
"string" BEGIN(PARAM); return T_STRING;
+ "select" BEGIN(PARAM); return T_SELECT;
+ "enable" BEGIN(PARAM); return T_SELECT;
+ "range" BEGIN(PARAM); return T_RANGE;
{n}+ {
alloc_string(yytext, yyleng);
zconflval.string = text;
@@ -141,6 +148,8 @@ n [A-Za-z0-9_]
zconflval.string = text;
return T_WORD;
}
+ #.* /* comment */
+ \\\n current_file->lineno++;
.
<<EOF>> {
BEGIN(INITIAL);
@@ -151,29 +160,30 @@ n [A-Za-z0-9_]
[^'"\\\n]+/\n {
append_string(yytext, yyleng);
zconflval.string = text;
- return T_STRING;
+ return T_WORD_QUOTE;
}
[^'"\\\n]+ {
append_string(yytext, yyleng);
}
\\.?/\n {
- append_string(yytext+1, yyleng);
+ append_string(yytext + 1, yyleng - 1);
zconflval.string = text;
- return T_STRING;
+ return T_WORD_QUOTE;
}
\\.? {
- append_string(yytext+1, yyleng);
+ append_string(yytext + 1, yyleng - 1);
}
\'|\" {
if (str == yytext[0]) {
BEGIN(PARAM);
zconflval.string = text;
- return T_STRING;
+ return T_WORD_QUOTE;
} else
append_string(yytext, 1);
}
\n {
printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
BEGIN(INITIAL);
return T_EOL;
}
@@ -204,9 +214,8 @@ n [A-Za-z0-9_]
}
append_string(" ", ts);
}
-
}
- \n/[^ \t\n] {
+ [ \t]*\n/[^ \t\n] {
current_file->lineno++;
zconf_endhelp();
return T_HELPTEXT;
@@ -246,12 +255,37 @@ void zconf_starthelp(void)
static void zconf_endhelp(void)
{
zconflval.string = text;
- BEGIN(INITIAL);
+ BEGIN(INITIAL);
+}
+
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
}
void zconf_initscan(const char *name)
{
- yyin = fopen(name, "r");
+ yyin = zconf_fopen(name);
if (!yyin) {
printf("can't find file %s\n", name);
exit(1);
@@ -272,7 +306,7 @@ void zconf_nextfile(const char *name)
memset(buf, 0, sizeof(*buf));
current_buf->state = YY_CURRENT_BUFFER;
- yyin = fopen(name, "r");
+ yyin = zconf_fopen(name);
if (!yyin) {
printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
exit(1);
@@ -318,7 +352,7 @@ static struct buffer *zconf_endfile(void)
int zconf_lineno(void)
{
if (current_buf)
- return current_file->lineno;
+ return current_file->lineno - 1;
else
return 0;
}
diff --git a/extra/config/zconf.tab.c_shipped b/extra/config/zconf.tab.c_shipped
index 2a02d8173..c9bfdb451 100644
--- a/extra/config/zconf.tab.c_shipped
+++ b/extra/config/zconf.tab.c_shipped
@@ -1,7 +1,7 @@
-/* A Bison parser, made from zconf.y, by GNU bison 1.75. */
+/* A Bison parser, made by GNU Bison 1.875a. */
/* Skeleton parser for Yacc-like parsing with Bison,
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -34,10 +34,13 @@
USER NAME SPACE" below. */
/* Identify Bison output. */
-#define YYBISON 1
+#define YYBISON 1
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
/* Pure parsers. */
-#define YYPURE 0
+#define YYPURE 0
/* Using locations. */
#define YYLSP_NEEDED 0
@@ -67,31 +70,37 @@
T_ENDCHOICE = 263,
T_COMMENT = 264,
T_CONFIG = 265,
- T_HELP = 266,
- T_HELPTEXT = 267,
- T_IF = 268,
- T_ENDIF = 269,
- T_DEPENDS = 270,
- T_REQUIRES = 271,
- T_OPTIONAL = 272,
- T_PROMPT = 273,
- T_DEFAULT = 274,
- T_TRISTATE = 275,
- T_BOOLEAN = 276,
- T_INT = 277,
- T_HEX = 278,
- T_WORD = 279,
+ T_MENUCONFIG = 266,
+ T_HELP = 267,
+ T_HELPTEXT = 268,
+ T_IF = 269,
+ T_ENDIF = 270,
+ T_DEPENDS = 271,
+ T_REQUIRES = 272,
+ T_OPTIONAL = 273,
+ T_PROMPT = 274,
+ T_DEFAULT = 275,
+ T_TRISTATE = 276,
+ T_DEF_TRISTATE = 277,
+ T_BOOLEAN = 278,
+ T_DEF_BOOLEAN = 279,
T_STRING = 280,
- T_UNEQUAL = 281,
- T_EOF = 282,
- T_EOL = 283,
- T_CLOSE_PAREN = 284,
- T_OPEN_PAREN = 285,
- T_ON = 286,
- T_OR = 287,
- T_AND = 288,
- T_EQUAL = 289,
- T_NOT = 290
+ T_INT = 281,
+ T_HEX = 282,
+ T_WORD = 283,
+ T_WORD_QUOTE = 284,
+ T_UNEQUAL = 285,
+ T_EOF = 286,
+ T_EOL = 287,
+ T_CLOSE_PAREN = 288,
+ T_OPEN_PAREN = 289,
+ T_ON = 290,
+ T_SELECT = 291,
+ T_RANGE = 292,
+ T_OR = 293,
+ T_AND = 294,
+ T_EQUAL = 295,
+ T_NOT = 296
};
#endif
#define T_MAINMENU 258
@@ -102,37 +111,43 @@
#define T_ENDCHOICE 263
#define T_COMMENT 264
#define T_CONFIG 265
-#define T_HELP 266
-#define T_HELPTEXT 267
-#define T_IF 268
-#define T_ENDIF 269
-#define T_DEPENDS 270
-#define T_REQUIRES 271
-#define T_OPTIONAL 272
-#define T_PROMPT 273
-#define T_DEFAULT 274
-#define T_TRISTATE 275
-#define T_BOOLEAN 276
-#define T_INT 277
-#define T_HEX 278
-#define T_WORD 279
+#define T_MENUCONFIG 266
+#define T_HELP 267
+#define T_HELPTEXT 268
+#define T_IF 269
+#define T_ENDIF 270
+#define T_DEPENDS 271
+#define T_REQUIRES 272
+#define T_OPTIONAL 273
+#define T_PROMPT 274
+#define T_DEFAULT 275
+#define T_TRISTATE 276
+#define T_DEF_TRISTATE 277
+#define T_BOOLEAN 278
+#define T_DEF_BOOLEAN 279
#define T_STRING 280
-#define T_UNEQUAL 281
-#define T_EOF 282
-#define T_EOL 283
-#define T_CLOSE_PAREN 284
-#define T_OPEN_PAREN 285
-#define T_ON 286
-#define T_OR 287
-#define T_AND 288
-#define T_EQUAL 289
-#define T_NOT 290
+#define T_INT 281
+#define T_HEX 282
+#define T_WORD 283
+#define T_WORD_QUOTE 284
+#define T_UNEQUAL 285
+#define T_EOF 286
+#define T_EOL 287
+#define T_CLOSE_PAREN 288
+#define T_OPEN_PAREN 289
+#define T_ON 290
+#define T_SELECT 291
+#define T_RANGE 292
+#define T_OR 293
+#define T_AND 294
+#define T_EQUAL 295
+#define T_NOT 296
/* Copy the first part of user declarations. */
-#line 1 "zconf.y"
+
/*
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
@@ -165,7 +180,7 @@ struct symbol *symbol_hash[257];
/* Enabling traces. */
#ifndef YYDEBUG
-# define YYDEBUG 1
+# define YYDEBUG 0
#endif
/* Enabling verbose error messages. */
@@ -176,42 +191,33 @@ struct symbol *symbol_hash[257];
# define YYERROR_VERBOSE 0
#endif
-#ifndef YYSTYPE
-#line 33 "zconf.y"
-typedef union {
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+
+typedef union YYSTYPE {
int token;
char *string;
struct symbol *symbol;
struct expr *expr;
struct menu *menu;
-} yystype;
-/* Line 193 of /usr/share/bison/yacc.c. */
-#line 190 "zconf.tab.c"
-# define YYSTYPE yystype
+} YYSTYPE;
+/* Line 191 of yacc.c. */
+
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
-#ifndef YYLTYPE
-typedef struct yyltype
-{
- int first_line;
- int first_column;
- int last_line;
- int last_column;
-} yyltype;
-# define YYLTYPE yyltype
-# define YYLTYPE_IS_TRIVIAL 1
-#endif
+
/* Copy the second part of user declarations. */
-#line 83 "zconf.y"
+
#define LKC_DIRECT_LINK
#include "lkc.h"
-/* Line 213 of /usr/share/bison/yacc.c. */
-#line 215 "zconf.tab.c"
+/* Line 214 of yacc.c. */
+
#if ! defined (yyoverflow) || YYERROR_VERBOSE
@@ -247,7 +253,7 @@ typedef struct yyltype
#if (! defined (yyoverflow) \
&& (! defined (__cplusplus) \
- || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ || (YYSTYPE_IS_TRIVIAL)))
/* A type that is properly aligned for any stack member. */
union yyalloc
@@ -257,13 +263,13 @@ union yyalloc
};
/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAX)
+ + YYSTACK_GAP_MAXIMUM)
/* Copy COUNT objects from FROM to TO. The source and destination do
not overlap. */
@@ -277,7 +283,7 @@ union yyalloc
{ \
register YYSIZE_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
+ (To)[yyi] = (From)[yyi]; \
} \
while (0)
# endif
@@ -294,7 +300,7 @@ union yyalloc
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack, Stack, yysize); \
Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
@@ -309,23 +315,24 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
-#define YYLAST 151
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 201
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 36
+#define YYNTOKENS 42
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 39
+#define YYNNTS 41
/* YYNRULES -- Number of rules. */
-#define YYNRULES 96
+#define YYNRULES 104
/* YYNRULES -- Number of states. */
-#define YYNSTATES 145
+#define YYNSTATES 182
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 290
+#define YYMAXUTOK 296
-#define YYTRANSLATE(X) \
- ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
static const unsigned char yytranslate[] =
@@ -359,7 +366,7 @@ static const unsigned char yytranslate[] =
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35
+ 35, 36, 37, 38, 39, 40, 41
};
#if YYDEBUG
@@ -368,63 +375,69 @@ static const unsigned char yytranslate[] =
static const unsigned short yyprhs[] =
{
0, 0, 3, 4, 7, 9, 11, 13, 17, 19,
- 21, 23, 26, 28, 30, 32, 34, 36, 39, 43,
- 44, 48, 52, 55, 58, 61, 64, 67, 70, 73,
- 77, 81, 83, 87, 89, 94, 97, 98, 102, 106,
- 109, 112, 116, 118, 121, 122, 125, 128, 130, 136,
- 140, 141, 144, 147, 150, 153, 157, 159, 164, 167,
- 168, 171, 174, 177, 181, 184, 187, 190, 194, 197,
- 200, 201, 205, 208, 212, 215, 218, 219, 221, 225,
- 227, 229, 231, 233, 235, 237, 239, 240, 243, 245,
- 249, 253, 257, 260, 264, 268, 270
+ 21, 23, 26, 28, 30, 32, 34, 36, 38, 42,
+ 45, 49, 52, 53, 56, 59, 62, 65, 69, 74,
+ 78, 83, 87, 91, 95, 100, 105, 110, 116, 119,
+ 122, 124, 128, 131, 132, 135, 138, 141, 144, 149,
+ 153, 157, 160, 165, 166, 169, 173, 175, 179, 182,
+ 183, 186, 189, 192, 196, 199, 201, 205, 208, 209,
+ 212, 215, 218, 222, 226, 228, 232, 235, 238, 241,
+ 242, 245, 248, 253, 257, 261, 262, 265, 267, 269,
+ 272, 275, 278, 280, 282, 283, 286, 288, 292, 296,
+ 300, 303, 307, 311, 313
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yysigned_char yyrhs[] =
{
- 37, 0, -1, -1, 37, 38, -1, 39, -1, 47,
- -1, 58, -1, 3, 69, 71, -1, 5, -1, 14,
- -1, 8, -1, 1, 71, -1, 53, -1, 63, -1,
- 41, -1, 61, -1, 71, -1, 10, 24, -1, 40,
- 28, 42, -1, -1, 42, 43, 28, -1, 42, 67,
- 28, -1, 42, 65, -1, 42, 28, -1, 20, 68,
- -1, 21, 68, -1, 22, 68, -1, 23, 68, -1,
- 25, 68, -1, 18, 69, 72, -1, 19, 74, 72,
- -1, 7, -1, 44, 28, 48, -1, 70, -1, 45,
- 50, 46, 28, -1, 45, 50, -1, -1, 48, 49,
- 28, -1, 48, 67, 28, -1, 48, 65, -1, 48,
- 28, -1, 18, 69, 72, -1, 17, -1, 19, 74,
- -1, -1, 50, 39, -1, 13, 73, -1, 70, -1,
- 51, 28, 54, 52, 28, -1, 51, 28, 54, -1,
- -1, 54, 39, -1, 54, 58, -1, 54, 47, -1,
- 4, 69, -1, 55, 28, 66, -1, 70, -1, 56,
- 59, 57, 28, -1, 56, 59, -1, -1, 59, 39,
- -1, 59, 58, -1, 59, 47, -1, 59, 1, 28,
- -1, 6, 69, -1, 60, 28, -1, 9, 69, -1,
- 62, 28, 66, -1, 11, 28, -1, 64, 12, -1,
- -1, 66, 67, 28, -1, 66, 28, -1, 15, 31,
- 73, -1, 15, 73, -1, 16, 73, -1, -1, 69,
- -1, 69, 13, 73, -1, 24, -1, 25, -1, 5,
- -1, 8, -1, 14, -1, 28, -1, 27, -1, -1,
- 13, 73, -1, 74, -1, 74, 34, 74, -1, 74,
- 26, 74, -1, 30, 73, 29, -1, 35, 73, -1,
- 73, 32, 73, -1, 73, 33, 73, -1, 24, -1,
- 25, -1
+ 43, 0, -1, -1, 43, 44, -1, 45, -1, 55,
+ -1, 66, -1, 3, 77, 79, -1, 5, -1, 15,
+ -1, 8, -1, 1, 79, -1, 61, -1, 71, -1,
+ 47, -1, 49, -1, 69, -1, 79, -1, 10, 28,
+ 32, -1, 46, 50, -1, 11, 28, 32, -1, 48,
+ 50, -1, -1, 50, 51, -1, 50, 75, -1, 50,
+ 73, -1, 50, 32, -1, 21, 76, 32, -1, 22,
+ 81, 80, 32, -1, 23, 76, 32, -1, 24, 81,
+ 80, 32, -1, 26, 76, 32, -1, 27, 76, 32,
+ -1, 25, 76, 32, -1, 19, 77, 80, 32, -1,
+ 20, 81, 80, 32, -1, 36, 28, 80, 32, -1,
+ 37, 82, 82, 80, 32, -1, 7, 32, -1, 52,
+ 56, -1, 78, -1, 53, 58, 54, -1, 53, 58,
+ -1, -1, 56, 57, -1, 56, 75, -1, 56, 73,
+ -1, 56, 32, -1, 19, 77, 80, 32, -1, 21,
+ 76, 32, -1, 23, 76, 32, -1, 18, 32, -1,
+ 20, 28, 80, 32, -1, -1, 58, 45, -1, 14,
+ 81, 32, -1, 78, -1, 59, 62, 60, -1, 59,
+ 62, -1, -1, 62, 45, -1, 62, 66, -1, 62,
+ 55, -1, 4, 77, 32, -1, 63, 74, -1, 78,
+ -1, 64, 67, 65, -1, 64, 67, -1, -1, 67,
+ 45, -1, 67, 66, -1, 67, 55, -1, 67, 1,
+ 32, -1, 6, 77, 32, -1, 68, -1, 9, 77,
+ 32, -1, 70, 74, -1, 12, 32, -1, 72, 13,
+ -1, -1, 74, 75, -1, 74, 32, -1, 16, 35,
+ 81, 32, -1, 16, 81, 32, -1, 17, 81, 32,
+ -1, -1, 77, 80, -1, 28, -1, 29, -1, 5,
+ 79, -1, 8, 79, -1, 15, 79, -1, 32, -1,
+ 31, -1, -1, 14, 81, -1, 82, -1, 82, 40,
+ 82, -1, 82, 30, 82, -1, 34, 81, 33, -1,
+ 41, 81, -1, 81, 38, 81, -1, 81, 39, 81,
+ -1, 28, -1, 29, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const unsigned short yyrline[] =
{
- 0, 88, 88, 89, 92, 93, 94, 95, 96, 97,
- 98, 99, 102, 104, 105, 106, 107, 113, 121, 127,
- 129, 130, 131, 132, 135, 141, 147, 153, 159, 165,
- 171, 179, 188, 194, 202, 204, 210, 212, 213, 214,
- 215, 218, 224, 230, 237, 239, 244, 254, 262, 264,
- 270, 272, 273, 274, 279, 286, 292, 300, 302, 308,
- 310, 311, 312, 313, 316, 322, 329, 336, 343, 349,
- 356, 357, 358, 361, 366, 371, 379, 381, 385, 390,
- 391, 394, 395, 396, 399, 400, 402, 403, 406, 407,
- 408, 409, 410, 411, 412, 415, 416
+ 0, 94, 94, 95, 98, 99, 100, 101, 102, 103,
+ 104, 105, 109, 110, 111, 112, 113, 114, 120, 128,
+ 134, 142, 152, 154, 155, 156, 157, 160, 166, 173,
+ 179, 186, 192, 198, 204, 210, 216, 222, 230, 239,
+ 245, 254, 255, 261, 263, 264, 265, 266, 269, 275,
+ 281, 287, 293, 299, 301, 306, 315, 324, 325, 331,
+ 333, 334, 335, 340, 347, 353, 362, 363, 369, 371,
+ 372, 373, 374, 377, 383, 390, 397, 404, 410, 417,
+ 418, 419, 422, 427, 432, 440, 442, 447, 448, 451,
+ 452, 453, 457, 457, 459, 460, 463, 464, 465, 466,
+ 467, 468, 469, 472, 473
};
#endif
@@ -435,12 +448,14 @@ static const char *const yytname[] =
{
"$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
"T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
- "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", "T_REQUIRES",
- "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE", "T_BOOLEAN",
- "T_INT", "T_HEX", "T_WORD", "T_STRING", "T_UNEQUAL", "T_EOF", "T_EOL",
- "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_OR", "T_AND", "T_EQUAL",
- "T_NOT", "$accept", "input", "block", "common_block",
- "config_entry_start", "config_stmt", "config_option_list",
+ "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
+ "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE",
+ "T_DEF_TRISTATE", "T_BOOLEAN", "T_DEF_BOOLEAN", "T_STRING", "T_INT",
+ "T_HEX", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", "T_EOF", "T_EOL",
+ "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_ON", "T_SELECT", "T_RANGE", "T_OR",
+ "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block",
+ "common_block", "config_entry_start", "config_stmt",
+ "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
"config_option", "choice", "choice_entry", "choice_end", "choice_stmt",
"choice_option_list", "choice_option", "choice_block", "if", "if_end",
"if_stmt", "if_block", "menu", "menu_entry", "menu_end", "menu_stmt",
@@ -458,38 +473,41 @@ static const unsigned short yytoknum[] =
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const unsigned char yyr1[] =
{
- 0, 36, 37, 37, 38, 38, 38, 38, 38, 38,
- 38, 38, 39, 39, 39, 39, 39, 40, 41, 42,
- 42, 42, 42, 42, 43, 43, 43, 43, 43, 43,
- 43, 44, 45, 46, 47, 47, 48, 48, 48, 48,
- 48, 49, 49, 49, 50, 50, 51, 52, 53, 53,
- 54, 54, 54, 54, 55, 56, 57, 58, 58, 59,
- 59, 59, 59, 59, 60, 61, 62, 63, 64, 65,
- 66, 66, 66, 67, 67, 67, 68, 68, 68, 69,
- 69, 70, 70, 70, 71, 71, 72, 72, 73, 73,
- 73, 73, 73, 73, 73, 74, 74
+ 0, 42, 43, 43, 44, 44, 44, 44, 44, 44,
+ 44, 44, 45, 45, 45, 45, 45, 45, 46, 47,
+ 48, 49, 50, 50, 50, 50, 50, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 52, 53,
+ 54, 55, 55, 56, 56, 56, 56, 56, 57, 57,
+ 57, 57, 57, 58, 58, 59, 60, 61, 61, 62,
+ 62, 62, 62, 63, 64, 65, 66, 66, 67, 67,
+ 67, 67, 67, 68, 69, 70, 71, 72, 73, 74,
+ 74, 74, 75, 75, 75, 76, 76, 77, 77, 78,
+ 78, 78, 79, 79, 80, 80, 81, 81, 81, 81,
+ 81, 81, 81, 82, 82
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const unsigned char yyr2[] =
{
0, 2, 0, 2, 1, 1, 1, 3, 1, 1,
- 1, 2, 1, 1, 1, 1, 1, 2, 3, 0,
- 3, 3, 2, 2, 2, 2, 2, 2, 2, 3,
- 3, 1, 3, 1, 4, 2, 0, 3, 3, 2,
- 2, 3, 1, 2, 0, 2, 2, 1, 5, 3,
- 0, 2, 2, 2, 2, 3, 1, 4, 2, 0,
- 2, 2, 2, 3, 2, 2, 2, 3, 2, 2,
- 0, 3, 2, 3, 2, 2, 0, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 0, 2, 1, 3,
- 3, 3, 2, 3, 3, 1, 1
+ 1, 2, 1, 1, 1, 1, 1, 1, 3, 2,
+ 3, 2, 0, 2, 2, 2, 2, 3, 4, 3,
+ 4, 3, 3, 3, 4, 4, 4, 5, 2, 2,
+ 1, 3, 2, 0, 2, 2, 2, 2, 4, 3,
+ 3, 2, 4, 0, 2, 3, 1, 3, 2, 0,
+ 2, 2, 2, 3, 2, 1, 3, 2, 0, 2,
+ 2, 2, 3, 3, 1, 3, 2, 2, 2, 0,
+ 2, 2, 4, 3, 3, 0, 2, 1, 1, 2,
+ 2, 2, 1, 1, 0, 2, 1, 3, 3, 3,
+ 2, 3, 3, 1, 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -497,127 +515,151 @@ static const unsigned char yyr2[] =
means the default is an error. */
static const unsigned char yydefact[] =
{
- 2, 0, 1, 0, 0, 0, 8, 0, 31, 10,
- 0, 0, 0, 9, 85, 84, 3, 4, 0, 14,
- 0, 44, 5, 0, 12, 0, 59, 6, 0, 15,
- 0, 13, 16, 11, 79, 80, 0, 54, 64, 66,
- 17, 95, 96, 0, 0, 46, 88, 19, 36, 35,
- 50, 70, 0, 65, 70, 7, 0, 92, 0, 0,
- 0, 0, 18, 32, 81, 82, 83, 45, 0, 33,
- 49, 55, 0, 60, 62, 0, 61, 56, 67, 91,
- 93, 94, 90, 89, 0, 0, 0, 0, 0, 76,
- 76, 76, 76, 76, 23, 0, 0, 22, 0, 42,
- 0, 0, 40, 0, 39, 0, 34, 51, 53, 0,
- 52, 47, 72, 0, 63, 57, 68, 0, 74, 75,
- 86, 86, 24, 77, 25, 26, 27, 28, 20, 69,
- 21, 86, 43, 37, 38, 48, 71, 73, 0, 29,
- 30, 0, 41, 87, 78
+ 2, 0, 1, 0, 0, 0, 8, 0, 0, 10,
+ 0, 0, 0, 0, 9, 93, 92, 3, 4, 22,
+ 14, 22, 15, 43, 53, 5, 59, 12, 79, 68,
+ 6, 74, 16, 79, 13, 17, 11, 87, 88, 0,
+ 0, 0, 38, 0, 0, 0, 103, 104, 0, 0,
+ 0, 96, 19, 21, 39, 42, 58, 64, 0, 76,
+ 7, 63, 73, 75, 18, 20, 0, 100, 55, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
+ 85, 0, 85, 85, 85, 26, 0, 0, 23, 0,
+ 25, 24, 0, 0, 0, 85, 85, 47, 44, 46,
+ 45, 0, 0, 0, 54, 41, 40, 60, 62, 57,
+ 61, 56, 81, 80, 0, 69, 71, 66, 70, 65,
+ 99, 101, 102, 98, 97, 77, 0, 0, 0, 94,
+ 94, 0, 94, 94, 0, 94, 0, 0, 0, 94,
+ 0, 78, 51, 94, 94, 0, 0, 89, 90, 91,
+ 72, 0, 83, 84, 0, 0, 0, 27, 86, 0,
+ 29, 0, 33, 31, 32, 0, 94, 0, 0, 49,
+ 50, 82, 95, 34, 35, 28, 30, 36, 0, 48,
+ 52, 37
};
/* YYDEFGOTO[NTERM-NUM]. */
static const short yydefgoto[] =
{
- -1, 1, 16, 17, 18, 19, 62, 95, 20, 21,
- 68, 22, 63, 103, 49, 23, 109, 24, 70, 25,
- 26, 75, 27, 52, 28, 29, 30, 31, 96, 97,
- 71, 113, 122, 123, 69, 32, 139, 45, 46
+ -1, 1, 17, 18, 19, 20, 21, 22, 52, 88,
+ 23, 24, 105, 25, 54, 98, 55, 26, 109, 27,
+ 56, 28, 29, 117, 30, 58, 31, 32, 33, 34,
+ 89, 90, 57, 91, 131, 132, 106, 35, 155, 50,
+ 51
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -120
+#define YYPACT_NINF -99
static const short yypact[] =
{
- -120, 17, -120, 41, 48, 48, -120, 48, -120, -120,
- 48, -11, 40, -120, -120, -120, -120, -120, 13, -120,
- 23, -120, -120, 66, -120, 72, -120, -120, 77, -120,
- 81, -120, -120, -120, -120, -120, 41, -120, -120, -120,
- -120, -120, -120, 40, 40, 57, 59, -120, -120, 98,
- -120, -120, 49, -120, -120, -120, 7, -120, 40, 40,
- 67, 67, 99, 117, -120, -120, -120, -120, 85, -120,
- 74, 18, 88, -120, -120, 95, -120, -120, 18, -120,
- 96, -120, -120, -120, 102, 36, 40, 48, 67, 48,
- 48, 48, 48, 48, -120, 103, 129, -120, 114, -120,
- 48, 67, -120, 115, -120, 116, -120, -120, -120, 118,
- -120, -120, -120, 119, -120, -120, -120, 40, 57, 57,
- 135, 135, -120, 136, -120, -120, -120, -120, -120, -120,
- -120, 135, -120, -120, -120, -120, -120, 57, 40, -120,
- -120, 40, -120, 57, 57
+ -99, 48, -99, 38, 46, 46, -99, 46, -29, -99,
+ 46, -17, -3, -11, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, -99, -99, -99, -99, -99, 38,
+ 12, 15, -99, 18, 51, 62, -99, -99, -11, -11,
+ 4, -24, 138, 138, 160, 121, 110, -4, 81, -4,
+ -99, -99, -99, -99, -99, -99, -19, -99, -99, -11,
+ -11, 70, 70, 73, 32, -11, 46, -11, 46, -11,
+ 46, -11, 46, 46, 46, -99, 36, 70, -99, 95,
+ -99, -99, 96, 46, 106, 46, 46, -99, -99, -99,
+ -99, 38, 38, 38, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, 112, -99, -99, -99, -99, -99,
+ -99, 117, -99, -99, -99, -99, -11, 33, 65, 131,
+ 1, 119, 131, 1, 136, 1, 153, 154, 155, 131,
+ 70, -99, -99, 131, 131, 156, 157, -99, -99, -99,
+ -99, 101, -99, -99, -11, 158, 159, -99, -99, 161,
+ -99, 162, -99, -99, -99, 163, 131, 164, 165, -99,
+ -99, -99, 99, -99, -99, -99, -99, -99, 166, -99,
+ -99, -99
};
/* YYPGOTO[NTERM-NUM]. */
-static const yysigned_char yypgoto[] =
+static const short yypgoto[] =
{
- -120, -120, -120, -38, -120, -120, -120, -120, -120, -120,
- -120, -42, -120, -120, -120, -120, -120, -120, -120, -120,
- -120, -120, -33, -120, -120, -120, -120, -120, -120, 87,
- 97, 34, 47, -1, -23, 2, -119, -43, -53
+ -99, -99, -99, 111, -99, -99, -99, -99, 178, -99,
+ -99, -99, -99, 91, -99, -99, -99, -99, -99, -99,
+ -99, -99, -99, -99, 115, -99, -99, -99, -99, -99,
+ -99, 146, 168, 89, 27, 0, 126, -1, -98, -48,
+ -63
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule which
number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, parse error. */
-#define YYTABLE_NINF -59
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -68
static const short yytable[] =
{
- 56, 57, 140, 36, 37, 33, 38, 82, 83, 39,
- 74, 67, 142, 40, 73, 80, 81, 2, 3, 76,
- 4, 5, 6, 7, 8, 9, 10, 11, 108, 77,
- 12, 13, 107, 85, 86, 121, 79, 110, 55, 58,
- 59, 47, 118, 119, 14, 15, 112, 111, 132, -58,
- 72, 48, -58, 5, 64, 7, 8, 65, 10, 11,
- 41, 42, 12, 66, 41, 42, 43, 117, 14, 15,
- 43, 44, 34, 35, 137, 44, 14, 15, 5, 64,
- 7, 8, 65, 10, 11, 60, 120, 12, 66, 58,
- 59, 41, 42, 61, 50, 143, 98, 105, 144, 131,
- 51, 14, 15, 64, 7, 53, 65, 10, 11, 54,
- 84, 12, 66, 106, 85, 86, 114, 87, 88, 89,
- 90, 91, 92, 115, 93, 14, 15, 94, 84, 59,
- 116, 128, 85, 86, 99, 100, 101, 124, 125, 126,
- 127, 129, 130, 133, 134, 102, 135, 136, 138, 141,
- 104, 78
+ 66, 67, 36, 42, 39, 40, 71, 41, 123, 124,
+ 43, 44, 74, 75, 120, 154, 72, 46, 47, 69,
+ 70, 121, 122, 48, 140, 45, 127, 128, 112, 130,
+ 49, 133, 156, 135, 158, 159, 68, 161, 60, 69,
+ 70, 165, 69, 70, 61, 167, 168, 62, 2, 3,
+ 63, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 46, 47, 13, 14, 139, 152, 48, 126, 178, 15,
+ 16, 69, 70, 49, 37, 38, 129, 166, 151, 15,
+ 16, -67, 114, 64, -67, 5, 101, 7, 8, 102,
+ 10, 11, 12, 143, 65, 13, 103, 153, 46, 47,
+ 147, 148, 149, 69, 70, 125, 172, 134, 141, 136,
+ 137, 138, 15, 16, 5, 101, 7, 8, 102, 10,
+ 11, 12, 145, 146, 13, 103, 101, 7, 142, 102,
+ 10, 11, 12, 171, 144, 13, 103, 69, 70, 69,
+ 70, 15, 16, 100, 150, 154, 113, 108, 113, 116,
+ 73, 157, 15, 16, 74, 75, 70, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, 104, 107, 160, 115,
+ 85, 110, 73, 118, 86, 87, 74, 75, 92, 93,
+ 94, 95, 111, 96, 119, 162, 163, 164, 169, 170,
+ 173, 174, 97, 175, 176, 177, 179, 180, 181, 53,
+ 99, 59
};
static const unsigned char yycheck[] =
{
- 43, 44, 121, 4, 5, 3, 7, 60, 61, 10,
- 52, 49, 131, 24, 52, 58, 59, 0, 1, 52,
- 3, 4, 5, 6, 7, 8, 9, 10, 70, 52,
- 13, 14, 70, 15, 16, 88, 29, 70, 36, 32,
- 33, 28, 85, 86, 27, 28, 28, 70, 101, 0,
- 1, 28, 3, 4, 5, 6, 7, 8, 9, 10,
- 24, 25, 13, 14, 24, 25, 30, 31, 27, 28,
- 30, 35, 24, 25, 117, 35, 27, 28, 4, 5,
- 6, 7, 8, 9, 10, 26, 87, 13, 14, 32,
- 33, 24, 25, 34, 28, 138, 62, 63, 141, 100,
- 28, 27, 28, 5, 6, 28, 8, 9, 10, 28,
- 11, 13, 14, 28, 15, 16, 28, 18, 19, 20,
- 21, 22, 23, 28, 25, 27, 28, 28, 11, 33,
- 28, 28, 15, 16, 17, 18, 19, 90, 91, 92,
- 93, 12, 28, 28, 28, 28, 28, 28, 13, 13,
- 63, 54
+ 48, 49, 3, 32, 4, 5, 30, 7, 71, 72,
+ 10, 28, 16, 17, 33, 14, 40, 28, 29, 38,
+ 39, 69, 70, 34, 87, 28, 74, 75, 32, 77,
+ 41, 79, 130, 81, 132, 133, 32, 135, 39, 38,
+ 39, 139, 38, 39, 32, 143, 144, 32, 0, 1,
+ 32, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 28, 29, 14, 15, 28, 32, 34, 35, 166, 31,
+ 32, 38, 39, 41, 28, 29, 76, 140, 126, 31,
+ 32, 0, 1, 32, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 93, 32, 14, 15, 32, 28, 29,
+ 101, 102, 103, 38, 39, 32, 154, 80, 13, 82,
+ 83, 84, 31, 32, 4, 5, 6, 7, 8, 9,
+ 10, 11, 95, 96, 14, 15, 5, 6, 32, 8,
+ 9, 10, 11, 32, 28, 14, 15, 38, 39, 38,
+ 39, 31, 32, 54, 32, 14, 57, 56, 59, 58,
+ 12, 32, 31, 32, 16, 17, 39, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 55, 56, 32, 58,
+ 32, 56, 12, 58, 36, 37, 16, 17, 18, 19,
+ 20, 21, 56, 23, 58, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 21,
+ 54, 33
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const unsigned char yystos[] =
{
- 0, 37, 0, 1, 3, 4, 5, 6, 7, 8,
- 9, 10, 13, 14, 27, 28, 38, 39, 40, 41,
- 44, 45, 47, 51, 53, 55, 56, 58, 60, 61,
- 62, 63, 71, 71, 24, 25, 69, 69, 69, 69,
- 24, 24, 25, 30, 35, 73, 74, 28, 28, 50,
- 28, 28, 59, 28, 28, 71, 73, 73, 32, 33,
- 26, 34, 42, 48, 5, 8, 14, 39, 46, 70,
- 54, 66, 1, 39, 47, 57, 58, 70, 66, 29,
- 73, 73, 74, 74, 11, 15, 16, 18, 19, 20,
- 21, 22, 23, 25, 28, 43, 64, 65, 67, 17,
- 18, 19, 28, 49, 65, 67, 28, 39, 47, 52,
- 58, 70, 28, 67, 28, 28, 28, 31, 73, 73,
- 69, 74, 68, 69, 68, 68, 68, 68, 28, 12,
- 28, 69, 74, 28, 28, 28, 28, 73, 13, 72,
- 72, 13, 72, 73, 73
+ 0, 43, 0, 1, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 14, 15, 31, 32, 44, 45, 46,
+ 47, 48, 49, 52, 53, 55, 59, 61, 63, 64,
+ 66, 68, 69, 70, 71, 79, 79, 28, 29, 77,
+ 77, 77, 32, 77, 28, 28, 28, 29, 34, 41,
+ 81, 82, 50, 50, 56, 58, 62, 74, 67, 74,
+ 79, 32, 32, 32, 32, 32, 81, 81, 32, 38,
+ 39, 30, 40, 12, 16, 17, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 32, 36, 37, 51, 72,
+ 73, 75, 18, 19, 20, 21, 23, 32, 57, 73,
+ 75, 5, 8, 15, 45, 54, 78, 45, 55, 60,
+ 66, 78, 32, 75, 1, 45, 55, 65, 66, 78,
+ 33, 81, 81, 82, 82, 32, 35, 81, 81, 77,
+ 81, 76, 77, 81, 76, 81, 76, 76, 76, 28,
+ 82, 13, 32, 77, 28, 76, 76, 79, 79, 79,
+ 32, 81, 32, 32, 14, 80, 80, 32, 80, 80,
+ 32, 80, 32, 32, 32, 80, 82, 80, 80, 32,
+ 32, 32, 81, 32, 32, 32, 32, 32, 80, 32,
+ 32, 32
};
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -638,13 +680,14 @@ static const unsigned char yystos[] =
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY -2
+#define YYEMPTY (-2)
#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
+
/* Like YYERROR except do call yyerror. This remains here temporarily
to ease the transition to the new meaning of YYERROR, for GCC.
Once GCC version 2 has supplanted version 1, this can go. */
@@ -659,13 +702,13 @@ do \
{ \
yychar = (Token); \
yylval = (Value); \
- yychar1 = YYTRANSLATE (yychar); \
+ yytoken = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ \
- yyerror ("syntax error: cannot back up"); \
+ yyerror ("syntax error: cannot back up");\
YYERROR; \
} \
while (0)
@@ -677,7 +720,7 @@ while (0)
are run). */
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.first_line = Rhs[1].first_line; \
Current.first_column = Rhs[1].first_column; \
Current.last_line = Rhs[N].last_line; \
@@ -686,7 +729,11 @@ while (0)
/* YYLEX -- calling `yylex' with the right arguments. */
-#define YYLEX yylex ()
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
/* Enable debugging if requested. */
#if YYDEBUG
@@ -701,19 +748,93 @@ do { \
if (yydebug) \
YYFPRINTF Args; \
} while (0)
+
# define YYDSYMPRINT(Args) \
do { \
if (yydebug) \
yysymprint Args; \
} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Token, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (cinluded). |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short *bottom, short *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ short *bottom;
+ short *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+ int yyrule;
+#endif
+{
+ int yyi;
+ unsigned int yylineno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+ yyrule - 1, yylineno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+} while (0)
+
/* Nonzero means print parse trace. It is left uninitialized so that
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
# define YYDPRINTF(Args)
# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
+
/* YYINITDEPTH -- initial size of the parser's stacks. */
#ifndef YYINITDEPTH
# define YYINITDEPTH 200
@@ -792,95 +913,85 @@ yystpcpy (yydest, yysrc)
#if YYDEBUG
-/*-----------------------------.
-| Print this symbol on YYOUT. |
-`-----------------------------*/
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
-static void
#if defined (__STDC__) || defined (__cplusplus)
-yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
#else
-yysymprint (yyout, yytype, yyvalue)
- FILE* yyout;
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
int yytype;
- YYSTYPE yyvalue;
+ YYSTYPE *yyvaluep;
#endif
{
/* Pacify ``unused variable'' warnings. */
- (void) yyvalue;
+ (void) yyvaluep;
if (yytype < YYNTOKENS)
{
- YYFPRINTF (yyout, "token %s (", yytname[yytype]);
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
# ifdef YYPRINT
- YYPRINT (yyout, yytoknum[yytype], yyvalue);
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
# endif
}
else
- YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
switch (yytype)
{
default:
break;
}
- YYFPRINTF (yyout, ")");
+ YYFPRINTF (yyoutput, ")");
}
-#endif /* YYDEBUG. */
-
+#endif /* ! YYDEBUG */
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
-static void
#if defined (__STDC__) || defined (__cplusplus)
-yydestruct (int yytype, YYSTYPE yyvalue)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
#else
-yydestruct (yytype, yyvalue)
+static void
+yydestruct (yytype, yyvaluep)
int yytype;
- YYSTYPE yyvalue;
+ YYSTYPE *yyvaluep;
#endif
{
/* Pacify ``unused variable'' warnings. */
- (void) yyvalue;
+ (void) yyvaluep;
switch (yytype)
{
+
default:
break;
}
}
-
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
- into yyparse. The argument should have type void *.
- It should actually point to an object.
- Grammar actions can access the variable by casting it
- to the proper pointer type. */
+/* Prevent warnings from -Wmissing-prototypes. */
#ifdef YYPARSE_PARAM
# if defined (__STDC__) || defined (__cplusplus)
-# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL
+int yyparse (void *YYPARSE_PARAM);
# else
-# define YYPARSE_PARAM_ARG YYPARSE_PARAM
-# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
+int yyparse ();
# endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes. */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
int yyparse (void);
-# endif
+#else
+int yyparse ();
#endif
+#endif /* ! YYPARSE_PARAM */
+
/* The lookahead symbol. */
@@ -889,13 +1000,32 @@ int yychar;
/* The semantic value of the lookahead symbol. */
YYSTYPE yylval;
-/* Number of parse errors so far. */
+/* Number of syntax errors so far. */
int yynerrs;
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
int
-yyparse (YYPARSE_PARAM_ARG)
- YYPARSE_PARAM_DECL
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
{
register int yystate;
@@ -904,7 +1034,7 @@ yyparse (YYPARSE_PARAM_ARG)
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
/* Lookahead token as an internal (translated) token number. */
- int yychar1 = 0;
+ int yytoken = 0;
/* Three stacks and their tools:
`yyss': related to states,
@@ -968,7 +1098,7 @@ yyparse (YYPARSE_PARAM_ARG)
yysetstate:
*yyssp = yystate;
- if (yyssp >= yyss + yystacksize - 1)
+ if (yyss + yystacksize - 1 <= yyssp)
{
/* Get the current used size of the three stacks, in elements. */
YYSIZE_T yysize = yyssp - yyss + 1;
@@ -1000,10 +1130,10 @@ yyparse (YYPARSE_PARAM_ARG)
goto yyoverflowlab;
# else
/* Extend the stack our own way. */
- if (yystacksize >= YYMAXDEPTH)
+ if (YYMAXDEPTH <= yystacksize)
goto yyoverflowlab;
yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
+ if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
{
@@ -1029,7 +1159,7 @@ yyparse (YYPARSE_PARAM_ARG)
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
(unsigned long int) yystacksize));
- if (yyssp >= yyss + yystacksize - 1)
+ if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
@@ -1054,39 +1184,28 @@ yybackup:
/* Not known => get a lookahead token if don't already have one. */
- /* yychar is either YYEMPTY or YYEOF
- or a valid token in external form. */
-
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
if (yychar == YYEMPTY)
{
YYDPRINTF ((stderr, "Reading a token: "));
yychar = YYLEX;
}
- /* Convert token to internal form (in yychar1) for indexing tables with. */
-
- if (yychar <= 0) /* This means end of input. */
+ if (yychar <= YYEOF)
{
- yychar1 = 0;
- yychar = YYEOF; /* Don't call YYLEX any more. */
-
+ yychar = yytoken = YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
else
{
- yychar1 = YYTRANSLATE (yychar);
-
- /* We have to keep this `#if YYDEBUG', since we use variables
- which are defined only if `YYDEBUG' is set. */
- YYDPRINTF ((stderr, "Next token is "));
- YYDSYMPRINT ((stderr, yychar1, yylval));
- YYDPRINTF ((stderr, "\n"));
+ yytoken = YYTRANSLATE (yychar);
+ YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
}
- /* If the proper action on seeing token YYCHAR1 is to reduce or to
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
detect an error, take that action. */
- yyn += yychar1;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
goto yydefault;
yyn = yytable[yyn];
if (yyn <= 0)
@@ -1101,8 +1220,7 @@ yybackup:
YYACCEPT;
/* Shift the lookahead token. */
- YYDPRINTF ((stderr, "Shifting token %d (%s), ",
- yychar, yytname[yychar1]));
+ YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
@@ -1148,435 +1266,463 @@ yyreduce:
yyval = yyvsp[1-yylen];
-
-#if YYDEBUG
- /* We have to keep this `#if YYDEBUG', since we use variables which
- are defined only if `YYDEBUG' is set. */
- if (yydebug)
- {
- int yyi;
-
- YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
- yyn - 1, yyrline[yyn]);
-
- /* Print the symbols being reduced, and their result. */
- for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
- YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
- YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
- }
-#endif
+ YY_REDUCE_PRINT (yyn);
switch (yyn)
{
case 8:
-#line 96 "zconf.y"
- { zconfprint("unexpected 'endmenu' statement"); }
+
+ { zconfprint("unexpected 'endmenu' statement"); ;}
break;
case 9:
-#line 97 "zconf.y"
- { zconfprint("unexpected 'endif' statement"); }
+
+ { zconfprint("unexpected 'endif' statement"); ;}
break;
case 10:
-#line 98 "zconf.y"
- { zconfprint("unexpected 'endchoice' statement"); }
+
+ { zconfprint("unexpected 'endchoice' statement"); ;}
break;
case 11:
-#line 99 "zconf.y"
- { zconfprint("syntax error"); yyerrok; }
+
+ { zconfprint("syntax error"); yyerrok; ;}
break;
- case 17:
-#line 114 "zconf.y"
+ case 18:
+
{
- struct symbol *sym = sym_lookup(yyvsp[0].string, 0);
+ struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
sym->flags |= SYMBOL_OPTIONAL;
menu_add_entry(sym);
- printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[0].string);
-}
+ printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
+;}
break;
- case 18:
-#line 122 "zconf.y"
+ case 19:
+
{
menu_end_entry();
printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
-}
+;}
+ break;
+
+ case 20:
+
+ {
+ struct symbol *sym = sym_lookup(yyvsp[-1].string, 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
+;}
break;
- case 23:
-#line 133 "zconf.y"
- { }
+ case 21:
+
+ {
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
break;
- case 24:
-#line 136 "zconf.y"
+ case 27:
+
{
menu_set_type(S_TRISTATE);
printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
-}
+;}
+ break;
+
+ case 28:
+
+ {
+ menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
+ menu_set_type(S_TRISTATE);
+ printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+;}
break;
- case 25:
-#line 142 "zconf.y"
+ case 29:
+
{
menu_set_type(S_BOOLEAN);
printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 26:
-#line 148 "zconf.y"
+ case 30:
+
+ {
+ menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
+ menu_set_type(S_BOOLEAN);
+ printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 31:
+
{
menu_set_type(S_INT);
printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 27:
-#line 154 "zconf.y"
+ case 32:
+
{
menu_set_type(S_HEX);
printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 28:
-#line 160 "zconf.y"
+ case 33:
+
{
menu_set_type(S_STRING);
printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 29:
-#line 166 "zconf.y"
+ case 34:
+
{
- menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
+ menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 30:
-#line 172 "zconf.y"
+ case 35:
+
{
- menu_add_prop(P_DEFAULT, NULL, yyvsp[-1].symbol, yyvsp[0].expr);
+ menu_add_expr(P_DEFAULT, yyvsp[-2].expr, yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 31:
-#line 180 "zconf.y"
+ case 36:
+
+ {
+ menu_add_symbol(P_SELECT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 37:
+
+ {
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,yyvsp[-3].symbol, yyvsp[-2].symbol), yyvsp[-1].expr);
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 38:
+
{
struct symbol *sym = sym_lookup(NULL, 0);
sym->flags |= SYMBOL_CHOICE;
menu_add_entry(sym);
- menu_add_prop(P_CHOICE, NULL, NULL, NULL);
+ menu_add_expr(P_CHOICE, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 32:
-#line 189 "zconf.y"
+ case 39:
+
{
menu_end_entry();
menu_add_menu();
-}
+;}
break;
- case 33:
-#line 195 "zconf.y"
+ case 40:
+
{
if (zconf_endtoken(yyvsp[0].token, T_CHOICE, T_ENDCHOICE)) {
menu_end_menu();
printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
}
-}
+;}
break;
- case 35:
-#line 205 "zconf.y"
+ case 42:
+
{
printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
zconfnerrs++;
-}
+;}
break;
- case 41:
-#line 219 "zconf.y"
+ case 48:
+
{
- menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
+ menu_add_prompt(P_PROMPT, yyvsp[-2].string, yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 42:
-#line 225 "zconf.y"
+ case 49:
+
+ {
+ menu_set_type(S_TRISTATE);
+ printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 50:
+
+ {
+ menu_set_type(S_BOOLEAN);
+ printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 51:
+
{
current_entry->sym->flags |= SYMBOL_OPTIONAL;
printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 43:
-#line 231 "zconf.y"
+ case 52:
+
{
- menu_add_prop(P_DEFAULT, NULL, yyvsp[0].symbol, NULL);
- //current_choice->prop->def = ;
+ menu_add_symbol(P_DEFAULT, sym_lookup(yyvsp[-2].string, 0), yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 46:
-#line 245 "zconf.y"
+ case 55:
+
{
printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
menu_add_entry(NULL);
- //current_entry->prompt = menu_add_prop(T_IF, NULL, NULL, );
- menu_add_dep(yyvsp[0].expr);
+ menu_add_dep(yyvsp[-1].expr);
menu_end_entry();
menu_add_menu();
-}
+;}
break;
- case 47:
-#line 255 "zconf.y"
+ case 56:
+
{
if (zconf_endtoken(yyvsp[0].token, T_IF, T_ENDIF)) {
menu_end_menu();
printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
}
-}
+;}
break;
- case 49:
-#line 265 "zconf.y"
+ case 58:
+
{
printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
zconfnerrs++;
-}
+;}
break;
- case 54:
-#line 280 "zconf.y"
+ case 63:
+
{
menu_add_entry(NULL);
- menu_add_prop(P_MENU, yyvsp[0].string, NULL, NULL);
+ menu_add_prop(P_MENU, yyvsp[-1].string, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 55:
-#line 287 "zconf.y"
+ case 64:
+
{
menu_end_entry();
menu_add_menu();
-}
+;}
break;
- case 56:
-#line 293 "zconf.y"
+ case 65:
+
{
if (zconf_endtoken(yyvsp[0].token, T_MENU, T_ENDMENU)) {
menu_end_menu();
printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
}
-}
+;}
break;
- case 58:
-#line 303 "zconf.y"
+ case 67:
+
{
printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
zconfnerrs++;
-}
+;}
break;
- case 63:
-#line 313 "zconf.y"
- { zconfprint("invalid menu option"); yyerrok; }
+ case 72:
+
+ { zconfprint("invalid menu option"); yyerrok; ;}
break;
- case 64:
-#line 317 "zconf.y"
+ case 73:
+
{
- yyval.string = yyvsp[0].string;
- printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[0].string);
-}
+ yyval.string = yyvsp[-1].string;
+ printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[-1].string);
+;}
break;
- case 65:
-#line 323 "zconf.y"
+ case 74:
+
{
- zconf_nextfile(yyvsp[-1].string);
-}
+ zconf_nextfile(yyvsp[0].string);
+;}
break;
- case 66:
-#line 330 "zconf.y"
+ case 75:
+
{
menu_add_entry(NULL);
- menu_add_prop(P_COMMENT, yyvsp[0].string, NULL, NULL);
+ menu_add_prop(P_COMMENT, yyvsp[-1].string, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 67:
-#line 337 "zconf.y"
+ case 76:
+
{
menu_end_entry();
-}
+;}
break;
- case 68:
-#line 344 "zconf.y"
+ case 77:
+
{
printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
zconf_starthelp();
-}
+;}
break;
- case 69:
-#line 350 "zconf.y"
+ case 78:
+
{
current_entry->sym->help = yyvsp[0].string;
-}
+;}
break;
- case 72:
-#line 359 "zconf.y"
- { }
- break;
+ case 82:
- case 73:
-#line 362 "zconf.y"
{
- menu_add_dep(yyvsp[0].expr);
+ menu_add_dep(yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 74:
-#line 367 "zconf.y"
+ case 83:
+
{
- menu_add_dep(yyvsp[0].expr);
+ menu_add_dep(yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 75:
-#line 372 "zconf.y"
+ case 84:
+
{
- menu_add_dep(yyvsp[0].expr);
+ menu_add_dep(yyvsp[-1].expr);
printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
-}
+;}
break;
- case 77:
-#line 382 "zconf.y"
- {
- menu_add_prop(P_PROMPT, yyvsp[0].string, NULL, NULL);
-}
- break;
+ case 86:
- case 78:
-#line 386 "zconf.y"
{
- menu_add_prop(P_PROMPT, yyvsp[-2].string, NULL, yyvsp[0].expr);
-}
+ menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
+;}
break;
- case 81:
-#line 394 "zconf.y"
- { yyval.token = T_ENDMENU; }
+ case 89:
+
+ { yyval.token = T_ENDMENU; ;}
break;
- case 82:
-#line 395 "zconf.y"
- { yyval.token = T_ENDCHOICE; }
+ case 90:
+
+ { yyval.token = T_ENDCHOICE; ;}
break;
- case 83:
-#line 396 "zconf.y"
- { yyval.token = T_ENDIF; }
+ case 91:
+
+ { yyval.token = T_ENDIF; ;}
break;
- case 86:
-#line 402 "zconf.y"
- { yyval.expr = NULL; }
+ case 94:
+
+ { yyval.expr = NULL; ;}
break;
- case 87:
-#line 403 "zconf.y"
- { yyval.expr = yyvsp[0].expr; }
+ case 95:
+
+ { yyval.expr = yyvsp[0].expr; ;}
break;
- case 88:
-#line 406 "zconf.y"
- { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); }
+ case 96:
+
+ { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;}
break;
- case 89:
-#line 407 "zconf.y"
- { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); }
+ case 97:
+
+ { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
break;
- case 90:
-#line 408 "zconf.y"
- { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); }
+ case 98:
+
+ { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
break;
- case 91:
-#line 409 "zconf.y"
- { yyval.expr = yyvsp[-1].expr; }
+ case 99:
+
+ { yyval.expr = yyvsp[-1].expr; ;}
break;
- case 92:
-#line 410 "zconf.y"
- { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); }
+ case 100:
+
+ { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;}
break;
- case 93:
-#line 411 "zconf.y"
- { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); }
+ case 101:
+
+ { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;}
break;
- case 94:
-#line 412 "zconf.y"
- { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); }
+ case 102:
+
+ { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;}
break;
- case 95:
-#line 415 "zconf.y"
- { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); }
+ case 103:
+
+ { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;}
break;
- case 96:
-#line 416 "zconf.y"
- { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); }
+ case 104:
+
+ { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;}
break;
}
-/* Line 1016 of /usr/share/bison/yacc.c. */
-#line 1565 "zconf.tab.c"
+/* Line 999 of yacc.c. */
+
yyvsp -= yylen;
yyssp -= yylen;
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
+ YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
@@ -1621,12 +1767,12 @@ yyerrlab:
yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
yysize += yystrlen (yytname[yyx]) + 15, yycount++;
- yysize += yystrlen ("parse error, unexpected ") + 1;
+ yysize += yystrlen ("syntax error, unexpected ") + 1;
yysize += yystrlen (yytname[yytype]);
yymsg = (char *) YYSTACK_ALLOC (yysize);
if (yymsg != 0)
{
- char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
+ char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
yyp = yystpcpy (yyp, yytname[yytype]);
if (yycount < 5)
@@ -1647,19 +1793,15 @@ yyerrlab:
YYSTACK_FREE (yymsg);
}
else
- yyerror ("parse error; also virtual memory exhausted");
+ yyerror ("syntax error; also virtual memory exhausted");
}
else
#endif /* YYERROR_VERBOSE */
- yyerror ("parse error");
+ yyerror ("syntax error");
}
- goto yyerrlab1;
-/*----------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action. |
-`----------------------------------------------------*/
-yyerrlab1:
+
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
@@ -1671,28 +1813,30 @@ yyerrlab1:
/* Pop the error token. */
YYPOPSTACK;
/* Pop the rest of the stack. */
- while (yyssp > yyss)
+ while (yyss < yyssp)
{
- YYDPRINTF ((stderr, "Error: popping "));
- YYDSYMPRINT ((stderr,
- yystos[*yyssp],
- *yyvsp));
- YYDPRINTF ((stderr, "\n"));
- yydestruct (yystos[*yyssp], *yyvsp);
+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+ yydestruct (yystos[*yyssp], yyvsp);
YYPOPSTACK;
}
YYABORT;
}
- YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
- yychar, yytname[yychar1]));
- yydestruct (yychar1, yylval);
+ YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+ yydestruct (yytoken, &yylval);
yychar = YYEMPTY;
+
}
/* Else will try to reuse lookahead token after shifting the error
token. */
+ goto yyerrlab1;
+
+/*----------------------------------------------------.
+| yyerrlab1 -- error raised explicitly by an action. |
+`----------------------------------------------------*/
+yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
for (;;)
@@ -1713,26 +1857,12 @@ yyerrlab1:
if (yyssp == yyss)
YYABORT;
- YYDPRINTF ((stderr, "Error: popping "));
- YYDSYMPRINT ((stderr,
- yystos[*yyssp], *yyvsp));
- YYDPRINTF ((stderr, "\n"));
-
- yydestruct (yystos[yystate], *yyvsp);
+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+ yydestruct (yystos[yystate], yyvsp);
yyvsp--;
yystate = *--yyssp;
-
-#if YYDEBUG
- if (yydebug)
- {
- short *yyssp1 = yyss - 1;
- YYFPRINTF (stderr, "Error: state stack now");
- while (yyssp1 != yyssp)
- YYFPRINTF (stderr, " %d", *++yyssp1);
- YYFPRINTF (stderr, "\n");
- }
-#endif
+ YY_STACK_PRINT (yyss, yyssp);
}
if (yyn == YYFINAL)
@@ -1780,24 +1910,32 @@ yyreturn:
}
-#line 419 "zconf.y"
+
void conf_parse(const char *name)
{
+ struct symbol *sym;
+ int i;
+
zconf_initscan(name);
sym_init();
menu_init();
- rootmenu.prompt = menu_add_prop(P_MENU, "uClibc Configuration", NULL, NULL);
+ modules_sym = sym_lookup("MODULES", 0);
+ rootmenu.prompt = menu_add_prop(P_MENU, "Linux Kernel Configuration", NULL, NULL);
//zconfdebug = 1;
zconfparse();
if (zconfnerrs)
exit(1);
menu_finalize(&rootmenu);
-
- modules_sym = sym_lookup("MODULES", 0);
+ for_all_symbols(i, sym) {
+ if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
+ printf("\n");
+ else
+ sym->flags |= SYMBOL_CHECK_DONE;
+ }
sym_change_count = 1;
}
@@ -1813,7 +1951,7 @@ const char *zconf_tokenname(int token)
case T_ENDIF: return "endif";
}
return "<token>";
-}
+}
static bool zconf_endtoken(int token, int starttoken, int endtoken)
{
@@ -1835,7 +1973,7 @@ static void zconfprint(const char *err, ...)
{
va_list ap;
- fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
va_start(ap, err);
vfprintf(stderr, err, ap);
va_end(ap);
@@ -1844,7 +1982,7 @@ static void zconfprint(const char *err, ...)
static void zconferror(const char *err)
{
- fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno(), err);
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
}
void print_quoted_string(FILE *out, const char *str)
@@ -1869,8 +2007,6 @@ void print_symbol(FILE *out, struct menu *menu)
struct symbol *sym = menu->sym;
struct property *prop;
- //sym->flags |= SYMBOL_PRINTED;
-
if (sym_is_choice(sym))
fprintf(out, "choice\n");
else
@@ -1895,13 +2031,6 @@ void print_symbol(FILE *out, struct menu *menu)
fputs(" ???\n", out);
break;
}
-#if 0
- if (!expr_is_yes(sym->dep)) {
- fputs(" depends ", out);
- expr_fprint(sym->dep, out);
- fputc('\n', out);
- }
-#endif
for (prop = sym->prop; prop; prop = prop->next) {
if (prop->menu != menu)
continue;
@@ -1909,25 +2038,18 @@ void print_symbol(FILE *out, struct menu *menu)
case P_PROMPT:
fputs(" prompt ", out);
print_quoted_string(out, prop->text);
- if (prop->def) {
- fputc(' ', out);
- if (prop->def->flags & SYMBOL_CONST)
- print_quoted_string(out, prop->def->name);
- else
- fputs(prop->def->name, out);
- }
- if (!expr_is_yes(E_EXPR(prop->visible))) {
+ if (!expr_is_yes(prop->visible.expr)) {
fputs(" if ", out);
- expr_fprint(E_EXPR(prop->visible), out);
+ expr_fprint(prop->visible.expr, out);
}
fputc('\n', out);
break;
case P_DEFAULT:
fputs( " default ", out);
- print_quoted_string(out, prop->def->name);
- if (!expr_is_yes(E_EXPR(prop->visible))) {
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
fputs(" if ", out);
- expr_fprint(E_EXPR(prop->visible), out);
+ expr_fprint(prop->visible.expr, out);
}
fputc('\n', out);
break;
@@ -1950,7 +2072,6 @@ void print_symbol(FILE *out, struct menu *menu)
void zconfdump(FILE *out)
{
- //struct file *file;
struct property *prop;
struct symbol *sym;
struct menu *menu;
@@ -1961,11 +2082,6 @@ void zconfdump(FILE *out)
print_symbol(out, menu);
else if ((prop = menu->prompt)) {
switch (prop->type) {
- //case T_MAINMENU:
- // fputs("\nmainmenu ", out);
- // print_quoted_string(out, prop->text);
- // fputs("\n", out);
- // break;
case P_COMMENT:
fputs("\ncomment ", out);
print_quoted_string(out, prop->text);
@@ -1976,19 +2092,12 @@ void zconfdump(FILE *out)
print_quoted_string(out, prop->text);
fputs("\n", out);
break;
- //case T_SOURCE:
- // fputs("\nsource ", out);
- // print_quoted_string(out, prop->text);
- // fputs("\n", out);
- // break;
- //case T_IF:
- // fputs("\nif\n", out);
default:
;
}
- if (!expr_is_yes(E_EXPR(prop->visible))) {
+ if (!expr_is_yes(prop->visible.expr)) {
fputs(" depends ", out);
- expr_fprint(E_EXPR(prop->visible), out);
+ expr_fprint(prop->visible.expr, out);
fputc('\n', out);
}
fputs("\n", out);
@@ -2015,3 +2124,4 @@ void zconfdump(FILE *out)
#include "symbol.c"
#include "menu.c"
+
diff --git a/extra/config/zconf.y b/extra/config/zconf.y
index a05875997..459b69011 100644
--- a/extra/config/zconf.y
+++ b/extra/config/zconf.y
@@ -27,7 +27,7 @@ struct symbol *symbol_hash[257];
#define YYERROR_VERBOSE
%}
-%expect 36
+%expect 40
%union
{
@@ -46,6 +46,7 @@ struct symbol *symbol_hash[257];
%token T_ENDCHOICE
%token T_COMMENT
%token T_CONFIG
+%token T_MENUCONFIG
%token T_HELP
%token <string> T_HELPTEXT
%token T_IF
@@ -56,17 +57,22 @@ struct symbol *symbol_hash[257];
%token T_PROMPT
%token T_DEFAULT
%token T_TRISTATE
+%token T_DEF_TRISTATE
%token T_BOOLEAN
+%token T_DEF_BOOLEAN
+%token T_STRING
%token T_INT
%token T_HEX
%token <string> T_WORD
-%token <string> T_STRING
+%token <string> T_WORD_QUOTE
%token T_UNEQUAL
%token T_EOF
%token T_EOL
%token T_CLOSE_PAREN
%token T_OPEN_PAREN
%token T_ON
+%token T_SELECT
+%token T_RANGE
%left T_OR
%left T_AND
@@ -103,14 +109,15 @@ common_block:
if_stmt
| comment_stmt
| config_stmt
+ | menuconfig_stmt
| source_stmt
| nl_or_eof
;
-/* config entry */
+/* config/menuconfig entry */
-config_entry_start: T_CONFIG T_WORD
+config_entry_start: T_CONFIG T_WORD T_EOL
{
struct symbol *sym = sym_lookup($2, 0);
sym->flags |= SYMBOL_OPTIONAL;
@@ -118,74 +125,118 @@ config_entry_start: T_CONFIG T_WORD
printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
};
-config_stmt: config_entry_start T_EOL config_option_list
+config_stmt: config_entry_start config_option_list
{
menu_end_entry();
printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
};
+menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
+{
+ struct symbol *sym = sym_lookup($2, 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+menuconfig_stmt: menuconfig_entry_start config_option_list
+{
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
config_option_list:
/* empty */
- | config_option_list config_option T_EOL
- | config_option_list depends T_EOL
+ | config_option_list config_option
+ | config_option_list depends
| config_option_list help
| config_option_list T_EOL
-{ };
+;
-config_option: T_TRISTATE prompt_stmt_opt
+config_option: T_TRISTATE prompt_stmt_opt T_EOL
{
menu_set_type(S_TRISTATE);
printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
};
-config_option: T_BOOLEAN prompt_stmt_opt
+config_option: T_DEF_TRISTATE expr if_expr T_EOL
+{
+ menu_add_expr(P_DEFAULT, $2, $3);
+ menu_set_type(S_TRISTATE);
+ printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_BOOLEAN prompt_stmt_opt T_EOL
{
menu_set_type(S_BOOLEAN);
printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
};
-config_option: T_INT prompt_stmt_opt
+config_option: T_DEF_BOOLEAN expr if_expr T_EOL
+{
+ menu_add_expr(P_DEFAULT, $2, $3);
+ menu_set_type(S_BOOLEAN);
+ printd(DEBUG_PARSE, "%s:%d:def_boolean\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_INT prompt_stmt_opt T_EOL
{
menu_set_type(S_INT);
printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
};
-config_option: T_HEX prompt_stmt_opt
+config_option: T_HEX prompt_stmt_opt T_EOL
{
menu_set_type(S_HEX);
printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
};
-config_option: T_STRING prompt_stmt_opt
+config_option: T_STRING prompt_stmt_opt T_EOL
{
menu_set_type(S_STRING);
printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
};
-config_option: T_PROMPT prompt if_expr
+config_option: T_PROMPT prompt if_expr T_EOL
{
- menu_add_prop(P_PROMPT, $2, NULL, $3);
+ menu_add_prompt(P_PROMPT, $2, $3);
printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
};
-config_option: T_DEFAULT symbol if_expr
+config_option: T_DEFAULT expr if_expr T_EOL
{
- menu_add_prop(P_DEFAULT, NULL, $2, $3);
+ menu_add_expr(P_DEFAULT, $2, $3);
printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
};
+config_option: T_SELECT T_WORD if_expr T_EOL
+{
+ menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_RANGE symbol symbol if_expr T_EOL
+{
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+};
+
/* choice entry */
-choice: T_CHOICE
+choice: T_CHOICE T_EOL
{
struct symbol *sym = sym_lookup(NULL, 0);
sym->flags |= SYMBOL_CHOICE;
menu_add_entry(sym);
- menu_add_prop(P_CHOICE, NULL, NULL, NULL);
+ menu_add_expr(P_CHOICE, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
};
-choice_entry: choice T_EOL choice_option_list
+choice_entry: choice choice_option_list
{
menu_end_entry();
menu_add_menu();
@@ -200,7 +251,7 @@ choice_end: end
};
choice_stmt:
- choice_entry choice_block choice_end T_EOL
+ choice_entry choice_block choice_end
| choice_entry choice_block
{
printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
@@ -209,28 +260,39 @@ choice_stmt:
choice_option_list:
/* empty */
- | choice_option_list choice_option T_EOL
- | choice_option_list depends T_EOL
+ | choice_option_list choice_option
+ | choice_option_list depends
| choice_option_list help
| choice_option_list T_EOL
;
-choice_option: T_PROMPT prompt if_expr
+choice_option: T_PROMPT prompt if_expr T_EOL
{
- menu_add_prop(P_PROMPT, $2, NULL, $3);
+ menu_add_prompt(P_PROMPT, $2, $3);
printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
};
-choice_option: T_OPTIONAL
+choice_option: T_TRISTATE prompt_stmt_opt T_EOL
+{
+ menu_set_type(S_TRISTATE);
+ printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_BOOLEAN prompt_stmt_opt T_EOL
+{
+ menu_set_type(S_BOOLEAN);
+ printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_OPTIONAL T_EOL
{
current_entry->sym->flags |= SYMBOL_OPTIONAL;
printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
};
-choice_option: T_DEFAULT symbol
+choice_option: T_DEFAULT T_WORD if_expr T_EOL
{
- menu_add_prop(P_DEFAULT, NULL, $2, NULL);
- //current_choice->prop->def = $2;
+ menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
};
@@ -241,11 +303,10 @@ choice_block:
/* if entry */
-if: T_IF expr
+if: T_IF expr T_EOL
{
printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
menu_add_entry(NULL);
- //current_entry->prompt = menu_add_prop(T_IF, NULL, NULL, $2);
menu_add_dep($2);
menu_end_entry();
menu_add_menu();
@@ -260,8 +321,8 @@ if_end: end
};
if_stmt:
- if T_EOL if_block if_end T_EOL
- | if T_EOL if_block
+ if if_block if_end
+ | if if_block
{
printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
zconfnerrs++;
@@ -276,14 +337,14 @@ if_block:
/* menu entry */
-menu: T_MENU prompt
+menu: T_MENU prompt T_EOL
{
menu_add_entry(NULL);
menu_add_prop(P_MENU, $2, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
};
-menu_entry: menu T_EOL depends_list
+menu_entry: menu depends_list
{
menu_end_entry();
menu_add_menu();
@@ -298,7 +359,7 @@ menu_end: end
};
menu_stmt:
- menu_entry menu_block menu_end T_EOL
+ menu_entry menu_block menu_end
| menu_entry menu_block
{
printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
@@ -313,27 +374,27 @@ menu_block:
| menu_block error T_EOL { zconfprint("invalid menu option"); yyerrok; }
;
-source: T_SOURCE prompt
+source: T_SOURCE prompt T_EOL
{
$$ = $2;
printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
};
-source_stmt: source T_EOL
+source_stmt: source
{
zconf_nextfile($1);
};
/* comment entry */
-comment: T_COMMENT prompt
+comment: T_COMMENT prompt T_EOL
{
menu_add_entry(NULL);
menu_add_prop(P_COMMENT, $2, NULL, NULL);
printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
};
-comment_stmt: comment T_EOL depends_list
+comment_stmt: comment depends_list
{
menu_end_entry();
};
@@ -354,21 +415,21 @@ help: help_start T_HELPTEXT
/* depends option */
depends_list: /* empty */
- | depends_list depends T_EOL
+ | depends_list depends
| depends_list T_EOL
-{ };
+;
-depends: T_DEPENDS T_ON expr
+depends: T_DEPENDS T_ON expr T_EOL
{
menu_add_dep($3);
printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
}
- | T_DEPENDS expr
+ | T_DEPENDS expr T_EOL
{
menu_add_dep($2);
printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
}
- | T_REQUIRES expr
+ | T_REQUIRES expr T_EOL
{
menu_add_dep($2);
printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
@@ -378,22 +439,18 @@ depends: T_DEPENDS T_ON expr
prompt_stmt_opt:
/* empty */
- | prompt
-{
- menu_add_prop(P_PROMPT, $1, NULL, NULL);
-}
- | prompt T_IF expr
+ | prompt if_expr
{
- menu_add_prop(P_PROMPT, $1, NULL, $3);
+ menu_add_prop(P_PROMPT, $1, NULL, $2);
};
prompt: T_WORD
- | T_STRING
+ | T_WORD_QUOTE
;
-end: T_ENDMENU { $$ = T_ENDMENU; }
- | T_ENDCHOICE { $$ = T_ENDCHOICE; }
- | T_ENDIF { $$ = T_ENDIF; }
+end: T_ENDMENU nl_or_eof { $$ = T_ENDMENU; }
+ | T_ENDCHOICE nl_or_eof { $$ = T_ENDCHOICE; }
+ | T_ENDIF nl_or_eof { $$ = T_ENDIF; }
;
nl_or_eof:
@@ -413,26 +470,34 @@ expr: symbol { $$ = expr_alloc_symbol($1); }
;
symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }
- | T_STRING { $$ = sym_lookup($1, 1); free($1); }
+ | T_WORD_QUOTE { $$ = sym_lookup($1, 1); free($1); }
;
%%
void conf_parse(const char *name)
{
+ struct symbol *sym;
+ int i;
+
zconf_initscan(name);
sym_init();
menu_init();
- rootmenu.prompt = menu_add_prop(P_MENU, "uClibc Configuration", NULL, NULL);
+ modules_sym = sym_lookup("MODULES", 0);
+ rootmenu.prompt = menu_add_prop(P_MENU, "Linux Kernel Configuration", NULL, NULL);
//zconfdebug = 1;
zconfparse();
if (zconfnerrs)
exit(1);
menu_finalize(&rootmenu);
-
- modules_sym = sym_lookup("MODULES", 0);
+ for_all_symbols(i, sym) {
+ if (!(sym->flags & SYMBOL_CHECKED) && sym_check_deps(sym))
+ printf("\n");
+ else
+ sym->flags |= SYMBOL_CHECK_DONE;
+ }
sym_change_count = 1;
}
@@ -448,7 +513,7 @@ const char *zconf_tokenname(int token)
case T_ENDIF: return "endif";
}
return "<token>";
-}
+}
static bool zconf_endtoken(int token, int starttoken, int endtoken)
{
@@ -470,7 +535,7 @@ static void zconfprint(const char *err, ...)
{
va_list ap;
- fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno() + 1);
va_start(ap, err);
vfprintf(stderr, err, ap);
va_end(ap);
@@ -479,7 +544,7 @@ static void zconfprint(const char *err, ...)
static void zconferror(const char *err)
{
- fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno(), err);
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
}
void print_quoted_string(FILE *out, const char *str)
@@ -504,8 +569,6 @@ void print_symbol(FILE *out, struct menu *menu)
struct symbol *sym = menu->sym;
struct property *prop;
- //sym->flags |= SYMBOL_PRINTED;
-
if (sym_is_choice(sym))
fprintf(out, "choice\n");
else
@@ -530,13 +593,6 @@ void print_symbol(FILE *out, struct menu *menu)
fputs(" ???\n", out);
break;
}
-#if 0
- if (!expr_is_yes(sym->dep)) {
- fputs(" depends ", out);
- expr_fprint(sym->dep, out);
- fputc('\n', out);
- }
-#endif
for (prop = sym->prop; prop; prop = prop->next) {
if (prop->menu != menu)
continue;
@@ -544,25 +600,18 @@ void print_symbol(FILE *out, struct menu *menu)
case P_PROMPT:
fputs(" prompt ", out);
print_quoted_string(out, prop->text);
- if (prop->def) {
- fputc(' ', out);
- if (prop->def->flags & SYMBOL_CONST)
- print_quoted_string(out, prop->def->name);
- else
- fputs(prop->def->name, out);
- }
- if (!expr_is_yes(E_EXPR(prop->visible))) {
+ if (!expr_is_yes(prop->visible.expr)) {
fputs(" if ", out);
- expr_fprint(E_EXPR(prop->visible), out);
+ expr_fprint(prop->visible.expr, out);
}
fputc('\n', out);
break;
case P_DEFAULT:
fputs( " default ", out);
- print_quoted_string(out, prop->def->name);
- if (!expr_is_yes(E_EXPR(prop->visible))) {
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
fputs(" if ", out);
- expr_fprint(E_EXPR(prop->visible), out);
+ expr_fprint(prop->visible.expr, out);
}
fputc('\n', out);
break;
@@ -585,7 +634,6 @@ void print_symbol(FILE *out, struct menu *menu)
void zconfdump(FILE *out)
{
- //struct file *file;
struct property *prop;
struct symbol *sym;
struct menu *menu;
@@ -596,11 +644,6 @@ void zconfdump(FILE *out)
print_symbol(out, menu);
else if ((prop = menu->prompt)) {
switch (prop->type) {
- //case T_MAINMENU:
- // fputs("\nmainmenu ", out);
- // print_quoted_string(out, prop->text);
- // fputs("\n", out);
- // break;
case P_COMMENT:
fputs("\ncomment ", out);
print_quoted_string(out, prop->text);
@@ -611,19 +654,12 @@ void zconfdump(FILE *out)
print_quoted_string(out, prop->text);
fputs("\n", out);
break;
- //case T_SOURCE:
- // fputs("\nsource ", out);
- // print_quoted_string(out, prop->text);
- // fputs("\n", out);
- // break;
- //case T_IF:
- // fputs("\nif\n", out);
default:
;
}
- if (!expr_is_yes(E_EXPR(prop->visible))) {
+ if (!expr_is_yes(prop->visible.expr)) {
fputs(" depends ", out);
- expr_fprint(E_EXPR(prop->visible), out);
+ expr_fprint(prop->visible.expr, out);
fputc('\n', out);
}
fputs("\n", out);