]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] add menuconfig support
authorRoman Zippel <zippel@linux-m68k.org>
Sat, 15 Mar 2003 09:17:18 +0000 (01:17 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Sat, 15 Mar 2003 09:17:18 +0000 (01:17 -0800)
This adds the support for the menuconfig keyword, which allows to define
a config symbol and a submenu with a single step, e.g. instead of

menu "SCSI device support"

config SCSI
tristate "SCSI device support"

this is now enough:

menuconfig SCSI
tristate "SCSI device support"

scripts/kconfig/expr.h
scripts/kconfig/lex.zconf.c_shipped
scripts/kconfig/symbol.c
scripts/kconfig/zconf.l
scripts/kconfig/zconf.tab.c_shipped
scripts/kconfig/zconf.y

index 896a296d17c523dbeb5d31a83649fd4a00056fba..373e8346d5b315959b2154bbd685eafe22d7dac2 100644 (file)
@@ -155,9 +155,11 @@ struct property {
 #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;
index 290d48114aab4d1fce689a6a5ebd3d5765068610..b0300b6ca490f9867ae7a5a6f1599de6339ddc3d 100644 (file)
@@ -357,18 +357,18 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,   38,   38,   39,   40,   41,   38,   42,   41,   43,
-       44,   45,   46,   46,   47,   48,   46,   46,   46,   46,
-       46,   46,   46,   46,   49,   46,   46,   46,   50,   46,
-       46,   46,   46,   46,   46,   46,   51
+       11,   38,   38,   39,   40,   41,   42,   43,   41,   44,
+       45,   46,   47,   47,   48,   49,   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,   48,   46,   46,   46,   46,
-       46,   46,   46,   46,   49,   46,   46,   46,   50,   46,
-       46,   46,   46,   46,   46,   46,   51
+       11,   38,   38,   39,   40,   41,   42,   43,   41,   44,
+       45,   46,   47,   47,   48,   49,   47,   47,   47,   47,
+       47,   47,   47,   47,   50,   47,   47,   47,   51,   47,
+       47,   47,   47,   47,   47,   47,   52
     },
 
     {
@@ -387,7 +387,7 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,  -13,   52,   53,  -13,  -13,   54,  -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
@@ -402,10 +402,10 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,   55,   55,   56,   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
     },
 
     {
@@ -425,109 +425,109 @@ static yyconst short yy_nxt[][37] =
 
     {
        11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
-      -18,  -18,  -18,   57,  -18,  -18,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -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,  -18
     },
 
     {
        11,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
-      -19,  -19,  -19,   57,  -19,  -19,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   58,   57,
-       57,   57,   57,   57,   57,   57,  -19
+      -19,  -19,  -19,   58,  -19,  -19,   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,   57,  -20,  -20,   57,   57,   57,   57,
-       57,   57,   57,   59,   57,   57,   57,   57,   60,   57,
-       57,   57,   57,   57,   57,   57,  -20
+      -20,  -20,  -20,   58,  -20,  -20,   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,   57,  -21,  -21,   57,   57,   57,   57,
-       61,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -21
+      -21,  -21,  -21,   58,  -21,  -21,   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,   57,  -22,  -22,   57,   57,   57,   57,
+      -22,  -22,  -22,   58,  -22,  -22,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   62,   57,   57,
-       57,   57,   57,   57,   57,   57,  -22
+       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,   57,  -23,  -23,   57,   57,   57,   57,
-       63,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -23
+      -23,  -23,  -23,   58,  -23,  -23,   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,   57,  -24,  -24,   57,   57,   57,   57,
-       57,   64,   57,   57,   57,   57,   57,   65,   57,   57,
-       57,   57,   57,   57,   57,   57,  -24
+      -24,  -24,  -24,   58,  -24,  -24,   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,   57,  -25,  -25,   66,   57,   57,   57,
-       67,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -25
+      -25,  -25,  -25,   58,  -25,  -25,   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,   57,  -26,  -26,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   68,
-       57,   57,   57,   57,   57,   57,  -26
+      -26,  -26,  -26,   58,  -26,  -26,   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,   57,  -27,  -27,   57,   57,   57,   57,
+      -27,  -27,  -27,   58,  -27,  -27,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   69,   57,   57,   57,   57,  -27
+       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,   57,  -28,  -28,   57,   57,   57,   57,
-       70,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -28
+      -28,  -28,  -28,   58,  -28,  -28,   58,   58,   58,   58,
+       71,   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,   57,  -29,  -29,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   71,   57,
-       57,   57,   57,   72,   57,   57,  -29
+      -29,  -29,  -29,   58,  -29,  -29,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   72,   58,
+       58,   58,   58,   73,   58,   58,  -29
 
     },
 
     {
        11,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
-      -30,  -30,  -30,   57,  -30,  -30,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   73,   57,   57,   57,   57,  -30
+      -30,  -30,  -30,   58,  -30,  -30,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   74,   58,   58,   58,   58,  -30
     },
 
     {
-       11,   74,   74,  -31,   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,   75,   75,  -31,   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
     },
 
     {
-       11,  -32,   75,   76,  -32,  -32,  -32,  -32,  -32,  -32,
+       11,  -32,   76,   77,  -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,
@@ -535,17 +535,17 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,   77,  -33,  -33,   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,  -33,  -33,   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,   78,   78,   79,   78,  -34,   78,   78,  -34,   78,
-       78,   78,   78,   78,   78,  -34,   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,  -34,   79,   79,  -34,   79,
+       79,   79,   79,   79,   79,  -34,   79,   79,   79,   79,
+       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
+       79,   79,   79,   79,   79,   79,   79
 
     },
 
@@ -564,11 +564,11 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,   80,   80,   81,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       11,   81,   81,   82,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
 
-       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80,   80,   80,   80
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81
     },
 
     {
@@ -588,7 +588,7 @@ static yyconst short yy_nxt[][37] =
 
     {
        11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
-      -40,  -40,  -40,  -40,   82,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,   83,  -40,  -40,  -40,  -40,  -40,
       -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
       -40,  -40,  -40,  -40,  -40,  -40,  -40
     },
@@ -601,15 +601,15 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,  -42,  -42,  -42,  -42,  -42,  -42,   83,  -42,  -42,
-      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
+       11,   84,   84,  -42,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
 
-      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
-      -42,  -42,  -42,  -42,  -42,  -42,  -42
+       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+       84,   84,   84,   84,   84,   84,   84
     },
 
     {
-       11,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+       11,  -43,  -43,  -43,  -43,  -43,  -43,   85,  -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
@@ -625,272 +625,272 @@ static yyconst short yy_nxt[][37] =
 
     {
        11,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
-      -45,   84,   85,   85,  -45,  -45,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  -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,   85,   85,   85,  -46,  -46,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  -46
+      -46,   86,   87,   87,  -46,  -46,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,  -46
     },
 
     {
        11,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
-      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,   87,   87,   87,  -47,  -47,   87,   87,   87,   87,
 
-      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
-      -47,  -47,  -47,  -47,  -47,  -47,  -47
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,  -47
     },
 
     {
-       11,  -48,  -48,   86,  -48,  -48,  -48,  -48,  -48,  -48,
+       11,  -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,
       -48,  -48,  -48,  -48,  -48,  -48,  -48
     },
 
     {
-       11,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
-      -49,   85,   85,   85,  -49,  -49,   85,   85,   85,   85,
-       85,   87,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  -49
+       11,  -49,  -49,   88,  -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,   85,   85,   85,  -50,  -50,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   88,   85,   85,
-       85,   85,   85,   85,   85,   85,  -50
+      -50,   87,   87,   87,  -50,  -50,   87,   87,   87,   87,
+       87,   89,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,  -50
     },
 
     {
        11,  -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,  -51,  -51,  -51,  -51,  -51,   89
+      -51,   87,   87,   87,  -51,  -51,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   90,   87,   87,
+       87,   87,   87,   87,   87,   87,  -51
     },
 
     {
-       11,  -52,   52,   53,  -52,  -52,   54,  -52,  -52,  -52,
+       11,  -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,  -52,  -52
+      -52,  -52,  -52,  -52,  -52,  -52,   91
     },
 
     {
-       11,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+       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
     },
 
     {
-       11,   55,   55,   56,   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,  -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,   56,   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
     },
 
     {
-       11,  -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,   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
     },
 
     {
        11,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
-      -57,  -57,  -57,   57,  -57,  -57,   57,   57,   57,   57,
+      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   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,   57,  -58,  -58,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   90,   57,
-       57,   57,   57,   57,   57,   57,  -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,   57,  -59,  -59,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   91,   57,
-       57,   57,   57,   57,   57,   57,  -59
+      -59,  -59,  -59,   58,  -59,  -59,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   92,   58,
+       58,   58,   58,   58,   58,   58,  -59
 
     },
 
     {
        11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
-      -60,  -60,  -60,   57,  -60,  -60,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   92,   93,   57,   57,
-       57,   57,   57,   57,   57,   57,  -60
+      -60,  -60,  -60,   58,  -60,  -60,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   93,   58,
+       58,   58,   58,   58,   58,   58,  -60
     },
 
     {
        11,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
-      -61,  -61,  -61,   57,  -61,  -61,   57,   57,   57,   57,
-       57,   94,   57,   57,   57,   57,   57,   57,   57,   95,
-       57,   57,   57,   57,   57,   57,  -61
+      -61,  -61,  -61,   58,  -61,  -61,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   94,   95,   58,   58,
+       58,   58,   58,   58,   58,   58,  -61
     },
 
     {
        11,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
-      -62,  -62,  -62,   57,  -62,  -62,   57,   57,   57,   96,
+      -62,  -62,  -62,   58,  -62,  -62,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -62
+       58,   96,   58,   58,   58,   58,   58,   58,   58,   97,
+       58,   58,   58,   58,   58,   58,  -62
     },
 
     {
        11,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
-      -63,  -63,  -63,   57,  -63,  -63,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   97,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   98,  -63
+      -63,  -63,  -63,   58,  -63,  -63,   58,   58,   58,   98,
+       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,   57,  -64,  -64,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -64
+      -64,  -64,  -64,   58,  -64,  -64,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   99,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  100,  -64
 
     },
 
     {
        11,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,
-      -65,  -65,  -65,   57,  -65,  -65,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   99,   57,   57,  -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,  -65
     },
 
     {
        11,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
-      -66,  -66,  -66,   57,  -66,  -66,   57,   57,   57,   57,
-       57,   57,   57,   57,  100,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -66
+      -66,  -66,  -66,   58,  -66,  -66,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  101,   58,   58,  -66
     },
 
     {
        11,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
-      -67,  -67,  -67,   57,  -67,  -67,   57,   57,   57,   57,
+      -67,  -67,  -67,   58,  -67,  -67,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,  101,   57,   57,
-       57,   57,   57,   57,   57,   57,  -67
+       58,   58,   58,   58,  102,   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,   57,  -68,  -68,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,  102,   57,   57,  -68
+      -68,  -68,  -68,   58,  -68,  -68,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  103,   58,   58,
+       58,   58,   58,   58,   58,   58,  -68
     },
 
     {
        11,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
-      -69,  -69,  -69,   57,  -69,  -69,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,  103,   57,
-       57,   57,   57,   57,   57,   57,  -69
+      -69,  -69,  -69,   58,  -69,  -69,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  104,   58,   58,  -69
 
     },
 
     {
        11,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
-      -70,  -70,  -70,   57,  -70,  -70,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-      104,   57,   57,   57,   57,   57,  -70
+      -70,  -70,  -70,   58,  -70,  -70,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  105,   58,
+       58,   58,   58,   58,   58,   58,  -70
     },
 
     {
        11,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
-      -71,  -71,  -71,   57,  -71,  -71,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,  105,   57,  -71
+      -71,  -71,  -71,   58,  -71,  -71,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+      106,   58,   58,   58,   58,   58,  -71
     },
 
     {
        11,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,
-      -72,  -72,  -72,   57,  -72,  -72,   57,   57,   57,   57,
+      -72,  -72,  -72,   58,  -72,  -72,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,  106,   57,   57,   57,   57,  -72
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  107,   58,  -72
     },
 
     {
        11,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
-      -73,  -73,  -73,   57,  -73,  -73,   57,   57,   57,   57,
-       57,   57,   57,   57,  107,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -73
+      -73,  -73,  -73,   58,  -73,  -73,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,  108,   58,   58,   58,   58,  -73
     },
 
     {
-       11,   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,   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,  109,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  -74
 
     },
 
     {
-       11,  -75,   75,   76,  -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
+       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
     },
 
     {
-       11,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,
+       11,  -76,   76,   77,  -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,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,
-      -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,
+       11,   78,  -77,  -77,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
 
-      -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,  -77,
-      -77,  -77,  -77,  -77,  -77,  -77,  -77
+       78,   78,   78,   78,   78,   78,   78,   78,   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
+       11,  -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,  -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,  -79
+       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,  -80,   81,  -80,  -80,  -80,  -80,  -80,  -80,
+       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
     },
 
     {
-       11,  -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
@@ -912,669 +912,728 @@ static yyconst short yy_nxt[][37] =
     },
 
     {
-       11,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
-      -84,  108,   85,   85,  -84,  -84,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  -84
+       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
 
     },
 
     {
        11,  -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,
-       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,  -85,  -85,  -85,  -85,  -85
     },
 
     {
        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,  110,   87,   87,  -86,  -86,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,  -86
     },
 
     {
        11,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
-      -87,   85,   85,   85,  -87,  -87,   85,   85,   85,   85,
+      -87,   87,   87,   87,  -87,  -87,   87,   87,   87,   87,
 
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  -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,   85,   85,   85,  -88,  -88,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,  -88
+      -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
+      -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
+      -88,  -88,  -88,  -88,  -88,  -88,  -88
     },
 
     {
        11,  -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,
-      -89,  -89,  -89,  -89,  -89,  -89,  -89
+      -89,   87,   87,   87,  -89,  -89,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,  -89
 
     },
 
     {
        11,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
-      -90,  -90,  -90,   57,  -90,  -90,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,  109,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -90
+      -90,   87,   87,   87,  -90,  -90,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,  -90
     },
 
     {
        11,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
-      -91,  -91,  -91,   57,  -91,  -91,   57,   57,   57,   57,
-       57,   57,   57,   57,  110,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -91
+      -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
+      -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
+      -91,  -91,  -91,  -91,  -91,  -91,  -91
     },
 
     {
        11,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,
-      -92,  -92,  -92,   57,  -92,  -92,   57,   57,   57,   57,
+      -92,  -92,  -92,   58,  -92,  -92,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,  111,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -92
+       58,   58,   58,   58,   58,  111,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  -92
     },
 
     {
        11,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
-      -93,  -93,  -93,   57,  -93,  -93,   57,   57,   57,   57,
-       57,  112,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -93
+      -93,  -93,  -93,   58,  -93,  -93,   58,   58,   58,   58,
+       58,   58,   58,   58,  112,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  -93
     },
 
     {
        11,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
-      -94,  -94,  -94,   57,  -94,  -94,  113,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -94
+      -94,  -94,  -94,   58,  -94,  -94,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  113,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  -94
 
     },
 
     {
        11,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
-      -95,  -95,  -95,   57,  -95,  -95,   57,   57,   57,   57,
-      114,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -95
+      -95,  -95,  -95,   58,  -95,  -95,   58,   58,   58,   58,
+       58,  114,   58,   58,   58,   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,   57,  -96,  -96,   57,   57,  115,   57,
-       57,   57,   57,   57,  116,   57,  117,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -96
+      -96,  -96,  -96,   58,  -96,  -96,  115,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  -96
     },
 
     {
        11,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
-      -97,  -97,  -97,   57,  -97,  -97,   57,   57,   57,   57,
+      -97,  -97,  -97,   58,  -97,  -97,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,  118,
-       57,   57,   57,   57,   57,   57,  -97
+      116,   58,   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,   57,  -98,  -98,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -98
+      -98,  -98,  -98,   58,  -98,  -98,   58,   58,  117,   58,
+       58,   58,   58,   58,  118,   58,  119,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  -98
     },
 
     {
        11,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,
-      -99,  -99,  -99,   57,  -99,  -99,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  -99
+      -99,  -99,  -99,   58,  -99,  -99,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  120,
+       58,   58,   58,   58,   58,   58,  -99
 
     },
 
     {
        11, -100, -100, -100, -100, -100, -100, -100, -100, -100,
-     -100, -100, -100,   57, -100, -100,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  119,   57,   57,
-       57,   57,   57,   57,   57,   57, -100
+     -100, -100, -100,   58, -100, -100,   58,   58,   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,   57, -101, -101,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,  120,   57, -101
+     -101, -101, -101,   58, -101, -101,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -101
     },
 
     {
        11, -102, -102, -102, -102, -102, -102, -102, -102, -102,
-     -102, -102, -102,   57, -102, -102,   57,   57,   57,   57,
+     -102, -102, -102,   58, -102, -102,   58,   58,   58,   58,
 
-       57,   57,   57,   57,  121,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -102
+       58,   58,   58,   58,   58,   58,   58,  121,   58,   58,
+       58,   58,   58,   58,   58,   58, -102
     },
 
     {
        11, -103, -103, -103, -103, -103, -103, -103, -103, -103,
-     -103, -103, -103,   57, -103, -103,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  122,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -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,  122,   58, -103
     },
 
     {
        11, -104, -104, -104, -104, -104, -104, -104, -104, -104,
-     -104, -104, -104,   57, -104, -104,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,  123,   57, -104
+     -104, -104, -104,   58, -104, -104,   58,   58,   58,   58,
+       58,   58,   58,   58,  123,   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,   57, -105, -105,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,  124,   57,   57,   57,   57, -105
+     -105, -105, -105,   58, -105, -105,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  124,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -105
     },
 
     {
        11, -106, -106, -106, -106, -106, -106, -106, -106, -106,
-     -106, -106, -106,   57, -106, -106,   57,   57,   57,   57,
-       57,   57,   57,   57,  125,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -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,  125,   58, -106
     },
 
     {
        11, -107, -107, -107, -107, -107, -107, -107, -107, -107,
-     -107, -107, -107,   57, -107, -107,   57,   57,   57,   57,
+     -107, -107, -107,   58, -107, -107,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,  126,   57,   57,   57, -107
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,  126,   58,   58,   58,   58, -107
     },
 
     {
        11, -108, -108, -108, -108, -108, -108, -108, -108, -108,
-     -108,   85,   85,   85, -108, -108,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85, -108
+     -108, -108, -108,   58, -108, -108,   58,   58,   58,   58,
+       58,   58,   58,   58,  127,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -108
     },
 
     {
        11, -109, -109, -109, -109, -109, -109, -109, -109, -109,
-     -109, -109, -109,   57, -109, -109,   57,   57,   57,   57,
-      127,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -109
+     -109, -109, -109,   58, -109, -109,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  128,   58,   58,   58, -109
 
     },
 
     {
        11, -110, -110, -110, -110, -110, -110, -110, -110, -110,
-     -110, -110, -110,   57, -110, -110,   57,   57,  128,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -110
+     -110,   87,   87,   87, -110, -110,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87, -110
     },
 
     {
        11, -111, -111, -111, -111, -111, -111, -111, -111, -111,
-     -111, -111, -111,   57, -111, -111,   57,   57,   57,   57,
-      129,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -111
+     -111, -111, -111,   58, -111, -111,   58,   58,   58,   58,
+      129,   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,   57, -112, -112,   57,   57,   57,   57,
+     -112, -112, -112,   58, -112, -112,   58,   58,  130,   58,
 
-       57,   57,   57,   57,  130,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -112
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -112
     },
 
     {
        11, -113, -113, -113, -113, -113, -113, -113, -113, -113,
-     -113, -113, -113,   57, -113, -113,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,  131,   57, -113
+     -113, -113, -113,   58, -113, -113,   58,   58,   58,   58,
+      131,   58,   58,   58,   58,   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,   57, -114, -114,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  132,   57,   57,
-       57,   57,   57,   57,   57,   57, -114
+     -114, -114, -114,   58, -114, -114,   58,   58,   58,   58,
+       58,   58,   58,   58,  132,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -114
 
     },
 
     {
        11, -115, -115, -115, -115, -115, -115, -115, -115, -115,
-     -115, -115, -115,   57, -115, -115,   57,   57,   57,   57,
-       57,   57,   57,  133,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -115
+     -115, -115, -115,   58, -115, -115,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,  133,   58, -115
     },
 
     {
        11, -116, -116, -116, -116, -116, -116, -116, -116, -116,
-     -116, -116, -116,   57, -116, -116,   57,   57,   57,   57,
-       57,  134,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -116
+     -116, -116, -116,   58, -116, -116,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  134,   58,   58,
+       58,   58,   58,   58,   58,   58, -116
     },
 
     {
        11, -117, -117, -117, -117, -117, -117, -117, -117, -117,
-     -117, -117, -117,   57, -117, -117,   57,   57,   57,   57,
+     -117, -117, -117,   58, -117, -117,   58,   58,   58,   58,
 
-      135,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -117
+       58,   58,   58,  135,   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,   57, -118, -118,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -118
+     -118, -118, -118,   58, -118, -118,   58,   58,   58,   58,
+       58,  136,   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,   57, -119, -119,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,  136,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -119
+     -119, -119, -119,   58, -119, -119,   58,   58,   58,   58,
+      137,   58,   58,   58,   58,   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,   57, -120, -120,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -120
+     -120, -120, -120,   58, -120, -120,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -120
     },
 
     {
        11, -121, -121, -121, -121, -121, -121, -121, -121, -121,
-     -121, -121, -121,   57, -121, -121,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,  137,   57,
-       57,   57,   57,   57,   57,   57, -121
+     -121, -121, -121,   58, -121, -121,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,  138,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -121
     },
 
     {
        11, -122, -122, -122, -122, -122, -122, -122, -122, -122,
-     -122, -122, -122,   57, -122, -122,   57,   57,   57,   57,
+     -122, -122, -122,   58, -122, -122,   58,   58,  139,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,  138,
-       57,   57,   57,   57,   57,   57, -122
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -122
     },
 
     {
        11, -123, -123, -123, -123, -123, -123, -123, -123, -123,
-     -123, -123, -123,   57, -123, -123,   57,   57,   57,   57,
-       57,   57,   57,   57,  139,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -123
+     -123, -123, -123,   58, -123, -123,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  140,   58,
+       58,   58,   58,   58,   58,   58, -123
     },
 
     {
        11, -124, -124, -124, -124, -124, -124, -124, -124, -124,
-     -124, -124, -124,   57, -124, -124,   57,   57,  140,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -124
+     -124, -124, -124,   58, -124, -124,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,  141,
+       58,   58,   58,   58,   58,   58, -124
 
     },
 
     {
        11, -125, -125, -125, -125, -125, -125, -125, -125, -125,
-     -125, -125, -125,   57, -125, -125,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  141,   57,   57,
-       57,   57,   57,   57,   57,   57, -125
+     -125, -125, -125,   58, -125, -125,   58,   58,   58,   58,
+       58,   58,   58,   58,  142,   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,   57, -126, -126,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,  142,   57,   57, -126
+     -126, -126, -126,   58, -126, -126,   58,   58,  143,   58,
+       58,   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,   57, -127, -127,  143,   57,   57,   57,
+     -127, -127, -127,   58, -127, -127,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -127
+       58,   58,   58,   58,   58,   58,   58,  144,   58,   58,
+       58,   58,   58,   58,   58,   58, -127
     },
 
     {
        11, -128, -128, -128, -128, -128, -128, -128, -128, -128,
-     -128, -128, -128,   57, -128, -128,   57,   57,   57,   57,
-      144,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -128
+     -128, -128, -128,   58, -128, -128,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  145,   58,   58, -128
     },
 
     {
        11, -129, -129, -129, -129, -129, -129, -129, -129, -129,
-     -129, -129, -129,   57, -129, -129,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  145,   57,   57,
-       57,   57,   57,   57,   57,   57, -129
+     -129, -129, -129,   58, -129, -129,  146,   58,   58,   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,   57, -130, -130,   57,   57,   57,   57,
-       57,   57,  146,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -130
+     -130, -130, -130,   58, -130, -130,   58,   58,   58,   58,
+      147,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -130
     },
 
     {
        11, -131, -131, -131, -131, -131, -131, -131, -131, -131,
-     -131, -131, -131,   57, -131, -131,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,  147,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -131
+     -131, -131, -131,   58, -131, -131,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  148,   58,   58,
+       58,   58,   58,   58,   58,   58, -131
     },
 
     {
        11, -132, -132, -132, -132, -132, -132, -132, -132, -132,
-     -132, -132, -132,   57, -132, -132,   57,   57,   57,  148,
+     -132, -132, -132,   58, -132, -132,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -132
+       58,   58,  149,   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,   57, -133, -133,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,  149,   57,
-       57,   57,   57,   57,   57,   57, -133
+     -133, -133, -133,   58, -133, -133,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  150,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -133
     },
 
     {
        11, -134, -134, -134, -134, -134, -134, -134, -134, -134,
-     -134, -134, -134,   57, -134, -134,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -134
+     -134, -134, -134,   58, -134, -134,   58,   58,   58,  151,
+       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,   57, -135, -135,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  150,   57,   57,
-       57,   57,   57,   57,   57,   57, -135
+     -135, -135, -135,   58, -135, -135,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  152,   58,
+       58,   58,   58,   58,   58,   58, -135
     },
 
     {
        11, -136, -136, -136, -136, -136, -136, -136, -136, -136,
-     -136, -136, -136,   57, -136, -136,   57,   57,   57,   57,
-      151,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -136
+     -136, -136, -136,   58, -136, -136,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -136
     },
 
     {
        11, -137, -137, -137, -137, -137, -137, -137, -137, -137,
-     -137, -137, -137,   57, -137, -137,   57,   57,   57,   57,
+     -137, -137, -137,   58, -137, -137,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,  152,   57,   57,
-       57,   57,   57,   57,   57,   57, -137
+       58,   58,   58,   58,   58,   58,   58,  153,   58,   58,
+       58,   58,   58,   58,   58,   58, -137
     },
 
     {
        11, -138, -138, -138, -138, -138, -138, -138, -138, -138,
-     -138, -138, -138,   57, -138, -138,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,  153,   57,   57, -138
+     -138, -138, -138,   58, -138, -138,   58,   58,   58,   58,
+      154,   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,   57, -139, -139,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,  154,   57,   57,   57,   57, -139
+     -139, -139, -139,   58, -139, -139,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,  155,   58,
+       58,   58,   58,   58,   58,   58, -139
 
     },
 
     {
        11, -140, -140, -140, -140, -140, -140, -140, -140, -140,
-     -140, -140, -140,   57, -140, -140,   57,   57,   57,   57,
-      155,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -140
+     -140, -140, -140,   58, -140, -140,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  156,   58,   58,
+       58,   58,   58,   58,   58,   58, -140
     },
 
     {
        11, -141, -141, -141, -141, -141, -141, -141, -141, -141,
-     -141, -141, -141,   57, -141, -141,   57,   57,   57,   57,
-       57,   57,  156,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -141
+     -141, -141, -141,   58, -141, -141,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  157,   58,   58, -141
     },
 
     {
        11, -142, -142, -142, -142, -142, -142, -142, -142, -142,
-     -142, -142, -142,   57, -142, -142,  157,   57,   57,   57,
+     -142, -142, -142,   58, -142, -142,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -142
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,  158,   58,   58,   58,   58, -142
     },
 
     {
        11, -143, -143, -143, -143, -143, -143, -143, -143, -143,
-     -143, -143, -143,   57, -143, -143,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  158,   57,   57,
-       57,   57,   57,   57,   57,   57, -143
+     -143, -143, -143,   58, -143, -143,   58,   58,   58,   58,
+      159,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -143
     },
 
     {
        11, -144, -144, -144, -144, -144, -144, -144, -144, -144,
-     -144, -144, -144,   57, -144, -144,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -144
+     -144, -144, -144,   58, -144, -144,   58,   58,   58,   58,
+       58,   58,  160,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -144
 
     },
 
     {
        11, -145, -145, -145, -145, -145, -145, -145, -145, -145,
-     -145, -145, -145,   57, -145, -145,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,  159,   57,   57, -145
+     -145, -145, -145,   58, -145, -145,  161,   58,   58,   58,
+       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,   57, -146, -146,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -146
+     -146, -146, -146,   58, -146, -146,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  162,   58,   58,
+       58,   58,   58,   58,   58,   58, -146
     },
 
     {
        11, -147, -147, -147, -147, -147, -147, -147, -147, -147,
-     -147, -147, -147,   57, -147, -147,   57,   57,   57,   57,
+     -147, -147, -147,   58, -147, -147,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,  160,   57,   57, -147
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -147
     },
 
     {
        11, -148, -148, -148, -148, -148, -148, -148, -148, -148,
-     -148, -148, -148,   57, -148, -148,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,  161,   57,   57,   57, -148
+     -148, -148, -148,   58, -148, -148,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  163,   58,   58, -148
     },
 
     {
        11, -149, -149, -149, -149, -149, -149, -149, -149, -149,
-     -149, -149, -149,   57, -149, -149,   57,   57,   57,   57,
-       57,   57,   57,   57,  162,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -149
+     -149, -149, -149,   58, -149, -149,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -149
 
     },
 
     {
        11, -150, -150, -150, -150, -150, -150, -150, -150, -150,
-     -150, -150, -150,   57, -150, -150,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,  163,   57, -150
+     -150, -150, -150,   58, -150, -150,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  164,   58,   58, -150
     },
 
     {
        11, -151, -151, -151, -151, -151, -151, -151, -151, -151,
-     -151, -151, -151,   57, -151, -151,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,  164,   57,   57,
-       57,   57,   57,   57,   57,   57, -151
+     -151, -151, -151,   58, -151, -151,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  165,   58,   58,   58, -151
     },
 
     {
        11, -152, -152, -152, -152, -152, -152, -152, -152, -152,
-     -152, -152, -152,   57, -152, -152,  165,   57,   57,   57,
+     -152, -152, -152,   58, -152, -152,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -152
+       58,   58,   58,   58,  166,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -152
     },
 
     {
        11, -153, -153, -153, -153, -153, -153, -153, -153, -153,
-     -153, -153, -153,   57, -153, -153,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -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,  167,   58, -153
     },
 
     {
        11, -154, -154, -154, -154, -154, -154, -154, -154, -154,
-     -154, -154, -154,   57, -154, -154,   57,   57,   57,   57,
-      166,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -154
+     -154, -154, -154,   58, -154, -154,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  168,   58,   58,
+       58,   58,   58,   58,   58,   58, -154
 
     },
 
     {
        11, -155, -155, -155, -155, -155, -155, -155, -155, -155,
-     -155, -155, -155,   57, -155, -155,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -155
+     -155, -155, -155,   58, -155, -155,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,  169,   58,   58,
+       58,   58,   58,   58,   58,   58, -155
     },
 
     {
        11, -156, -156, -156, -156, -156, -156, -156, -156, -156,
-     -156, -156, -156,   57, -156, -156,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -156
+     -156, -156, -156,   58, -156, -156,  170,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -156
     },
 
     {
        11, -157, -157, -157, -157, -157, -157, -157, -157, -157,
-     -157, -157, -157,   57, -157, -157,   57,   57,   57,   57,
+     -157, -157, -157,   58, -157, -157,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,  167,   57,   57, -157
+       58,   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,   57, -158, -158,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -158
+     -158, -158, -158,   58, -158, -158,   58,   58,   58,   58,
+      171,   58,   58,   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,   57, -159, -159,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -159
+     -159, -159, -159,   58, -159, -159,   58,   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,   57, -160, -160,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -160
+     -160, -160, -160,   58, -160, -160,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -160
     },
 
     {
        11, -161, -161, -161, -161, -161, -161, -161, -161, -161,
-     -161, -161, -161,   57, -161, -161,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -161
+     -161, -161, -161,   58, -161, -161,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,  172,   58,   58, -161
     },
 
     {
        11, -162, -162, -162, -162, -162, -162, -162, -162, -162,
-     -162, -162, -162,   57, -162, -162,   57,   57,  168,   57,
+     -162, -162, -162,   58, -162, -162,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -162
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -162
     },
 
     {
        11, -163, -163, -163, -163, -163, -163, -163, -163, -163,
-     -163, -163, -163,   57, -163, -163,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -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, -163
     },
 
     {
        11, -164, -164, -164, -164, -164, -164, -164, -164, -164,
-     -164, -164, -164,   57, -164, -164,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,  169,   57, -164
+     -164, -164, -164,   58, -164, -164,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -164
 
     },
 
     {
        11, -165, -165, -165, -165, -165, -165, -165, -165, -165,
-     -165, -165, -165,   57, -165, -165,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,  170,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -165
+     -165, -165, -165,   58, -165, -165,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   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,   57, -166, -166,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,  171,   57,   57,   57, -166
+     -166, -166, -166,   58, -166, -166,   58,   58,  173,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -166
     },
 
     {
        11, -167, -167, -167, -167, -167, -167, -167, -167, -167,
-     -167, -167, -167,   57, -167, -167,   57,   57,   57,   57,
+     -167, -167, -167,   58, -167, -167,   58,   58,   58,   58,
 
-      172,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -167
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -167
     },
 
     {
        11, -168, -168, -168, -168, -168, -168, -168, -168, -168,
-     -168, -168, -168,   57, -168, -168,   57,   57,   57,   57,
-      173,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -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,  174,   58, -168
     },
 
     {
        11, -169, -169, -169, -169, -169, -169, -169, -169, -169,
-     -169, -169, -169,   57, -169, -169,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -169
+     -169, -169, -169,   58, -169, -169,   58,   58,   58,   58,
+       58,  175,   58,   58,   58,   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,   57, -170, -170,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -170
+     -170, -170, -170,   58, -170, -170,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,  176,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -170
     },
 
     {
        11, -171, -171, -171, -171, -171, -171, -171, -171, -171,
-     -171, -171, -171,   57, -171, -171,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -171
+     -171, -171, -171,   58, -171, -171,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,  177,   58,   58,   58, -171
     },
 
     {
        11, -172, -172, -172, -172, -172, -172, -172, -172, -172,
-     -172, -172, -172,   57, -172, -172,   57,   57,   57,   57,
+     -172, -172, -172,   58, -172, -172,   58,   58,   58,   58,
 
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -172
+      178,   58,   58,   58,   58,   58,   58,   58,   58,   58,
+       58,   58,   58,   58,   58,   58, -172
     },
 
     {
        11, -173, -173, -173, -173, -173, -173, -173, -173, -173,
-     -173, -173, -173,   57, -173, -173,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57, -173
+     -173, -173, -173,   58, -173, -173,   58,   58,   58,   58,
+      179,   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, -174
+
+    },
+
+    {
+       11, -175, -175, -175, -175, -175, -175, -175, -175, -175,
+     -175, -175, -175,   58, -175, -175,   58,   58,   58,   58,
+       58,   58,   58,   58,  180,   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, -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, -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, -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,   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,  181,   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, -181
     },
 
     } ;
@@ -1595,29 +1654,30 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 56
-#define YY_END_OF_BUFFER 57
-static yyconst short int yy_accept[174] =
+#define YY_NUM_RULES 58
+#define YY_END_OF_BUFFER 59
+static yyconst short int yy_accept[182] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       57,    5,    4,    3,    2,   29,   30,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       55,   52,   54,   47,   51,   50,   49,   45,   41,   35,
-       40,   45,   33,   34,   43,   43,   36,   45,   43,   43,
-       45,    4,    3,    2,    2,    1,   28,   28,   28,   28,
-       28,   28,   28,   15,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   55,   52,   54,   53,   47,   46,   49,
-       48,   37,   31,   43,   43,   44,   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
+       59,    5,    4,    3,    2,   30,   31,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
+       57,   54,   56,   49,   53,   52,   51,   47,   42,   36,
+       41,   45,   47,   34,   35,   44,   44,   37,   47,   44,
+       44,   47,    4,    3,    2,    2,    1,   29,   29,   29,
+       29,   29,   29,   29,   16,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   57,   54,   56,   55,   49,   48,
+       51,   50,   38,   45,   32,   44,   44,   46,   39,   40,
+       33,   29,   29,   29,   29,   29,   29,   29,   29,   27,
+
+       26,   29,   29,   29,   29,   29,   29,   29,   29,   43,
+       24,   29,   29,   29,   29,   29,   29,   29,   29,   15,
+       29,    7,   29,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   17,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   10,   29,   13,   29,
+       29,   29,   29,   29,   29,   29,   22,   29,    9,   28,
+       29,   25,   12,   21,   18,   29,    8,   29,   29,   29,
+       29,   29,   29,    6,   29,   20,   19,   23,   11,   29,
+       14
     } ;
 
 static yyconst int yy_ec[256] =
@@ -1993,43 +2053,43 @@ BEGIN(PARAM); return T_CONFIG;
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_HELP;
+BEGIN(PARAM); return T_MENUCONFIG;
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_IF;
+BEGIN(PARAM); return T_HELP;
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_ENDIF;
+BEGIN(PARAM); return T_IF;
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_DEPENDS;
+BEGIN(PARAM); return T_ENDIF;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_REQUIRES;
+BEGIN(PARAM); return T_DEPENDS;
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_OPTIONAL;
+BEGIN(PARAM); return T_REQUIRES;
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_DEFAULT;
+BEGIN(PARAM); return T_OPTIONAL;
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_PROMPT;
+BEGIN(PARAM); return T_DEFAULT;
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_TRISTATE;
+BEGIN(PARAM); return T_PROMPT;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_BOOLEAN;
+BEGIN(PARAM); return T_TRISTATE;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
@@ -2037,71 +2097,75 @@ BEGIN(PARAM); return T_BOOLEAN;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_INT;
+BEGIN(PARAM); return T_BOOLEAN;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_HEX;
+BEGIN(PARAM); return T_INT;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-BEGIN(PARAM); return T_STRING;
+BEGIN(PARAM); return T_HEX;
        YY_BREAK
 case 28:
 YY_RULE_SETUP
+BEGIN(PARAM); return T_STRING;
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
 {
                alloc_string(yytext, yyleng);
                zconflval.string = text;
                return T_WORD;
        }
        YY_BREAK
-case 29:
+case 30:
 YY_RULE_SETUP
 
        YY_BREAK
-case 30:
+case 31:
 YY_RULE_SETUP
 current_file->lineno++; BEGIN(INITIAL);
        YY_BREAK
 
 
-case 31:
+case 32:
 YY_RULE_SETUP
 return T_AND;
        YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
 return T_OR;
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
 return T_OPEN_PAREN;
        YY_BREAK
-case 34:
+case 35:
 YY_RULE_SETUP
 return T_CLOSE_PAREN;
        YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
 return T_NOT;
        YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
 return T_EQUAL;
        YY_BREAK
-case 37:
+case 38:
 YY_RULE_SETUP
 return T_UNEQUAL;
        YY_BREAK
-case 38:
+case 39:
 YY_RULE_SETUP
 return T_IF;
        YY_BREAK
-case 39:
+case 40:
 YY_RULE_SETUP
 return T_ON;
        YY_BREAK
-case 40:
+case 41:
 YY_RULE_SETUP
 {
                str = yytext[0];
@@ -2109,15 +2173,15 @@ YY_RULE_SETUP
                BEGIN(STRING);
        }
        YY_BREAK
-case 41:
+case 42:
 YY_RULE_SETUP
 BEGIN(INITIAL); current_file->lineno++; return T_EOL;
        YY_BREAK
-case 42:
+case 43:
 YY_RULE_SETUP
 /* ignore */
        YY_BREAK
-case 43:
+case 44:
 YY_RULE_SETUP
 {
                alloc_string(yytext, yyleng);
@@ -2125,11 +2189,15 @@ YY_RULE_SETUP
                return T_WORD;
        }
        YY_BREAK
-case 44:
+case 45:
+YY_RULE_SETUP
+/* comment */
+       YY_BREAK
+case 46:
 YY_RULE_SETUP
 current_file->lineno++;
        YY_BREAK
-case 45:
+case 47:
 YY_RULE_SETUP
 
        YY_BREAK
@@ -2140,7 +2208,7 @@ case YY_STATE_EOF(PARAM):
        YY_BREAK
 
 
-case 46:
+case 48:
 *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 */
@@ -2151,13 +2219,13 @@ YY_RULE_SETUP
                return T_WORD_QUOTE;
        }
        YY_BREAK
-case 47:
+case 49:
 YY_RULE_SETUP
 {
                append_string(yytext, yyleng);
        }
        YY_BREAK
-case 48:
+case 50:
 *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 */
@@ -2168,13 +2236,13 @@ YY_RULE_SETUP
                return T_WORD_QUOTE;
        }
        YY_BREAK
-case 49:
+case 51:
 YY_RULE_SETUP
 {
                append_string(yytext + 1, yyleng - 1);
        }
        YY_BREAK
-case 50:
+case 52:
 YY_RULE_SETUP
 {
                if (str == yytext[0]) {
@@ -2185,7 +2253,7 @@ YY_RULE_SETUP
                        append_string(yytext, 1);
        }
        YY_BREAK
-case 51:
+case 53:
 YY_RULE_SETUP
 {
                printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
@@ -2201,7 +2269,7 @@ case YY_STATE_EOF(STRING):
        YY_BREAK
 
 
-case 52:
+case 54:
 YY_RULE_SETUP
 {
                ts = 0;
@@ -2227,9 +2295,9 @@ YY_RULE_SETUP
                
        }
        YY_BREAK
-case 53:
+case 55:
 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp = yy_bp + 1;
+yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
 {
@@ -2238,14 +2306,14 @@ YY_RULE_SETUP
                return T_HELPTEXT;
        }
        YY_BREAK
-case 54:
+case 56:
 YY_RULE_SETUP
 {
                current_file->lineno++;
                append_string("\n", 1);
        }
        YY_BREAK
-case 55:
+case 57:
 YY_RULE_SETUP
 {
                append_string(yytext, yyleng);
@@ -2271,7 +2339,7 @@ case YY_STATE_EOF(COMMAND):
        yyterminate();
 }
        YY_BREAK
-case 56:
+case 58:
 YY_RULE_SETUP
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
index 845d8a37827bb8b2562007d3ae5243b1bc76b8d0..7fa7825f3759cff252ed7581d9ff408ab43f3215 100644 (file)
@@ -160,6 +160,9 @@ void sym_calc_value(struct symbol *sym)
        struct symbol *def_sym;
        struct expr *e;
 
+       if (!sym)
+               return;
+
        if (sym->flags & SYMBOL_VALID)
                return;
 
index fbacd970f2a2923909de737680b43f100904c45d..2e6b7c95ecfc20e6f8440ee6c0cadc85d7537a74 100644 (file)
@@ -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;
@@ -141,6 +142,7 @@ n   [A-Za-z0-9_]
                zconflval.string = text;
                return T_WORD;
        }
+       #.*     /* comment */
        \\\n    current_file->lineno++;
        .
        <<EOF>> {
@@ -208,7 +210,7 @@ n   [A-Za-z0-9_]
                }
                
        }
-       \n/[^ \t\n] {
+       [ \t]*\n/[^ \t\n] {
                current_file->lineno++;
                zconf_endhelp();
                return T_HELPTEXT;
index 1ec370f8c91ec76a95de71c3c88d1f38b20170c0..e8904d9bf81330e1246fbf3c9f44a7bf3a6c9bc7 100644 (file)
@@ -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
    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
      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_STRING = 277,
-     T_INT = 278,
-     T_HEX = 279,
-     T_WORD = 280,
-     T_WORD_QUOTE = 281,
-     T_UNEQUAL = 282,
-     T_EOF = 283,
-     T_EOL = 284,
-     T_CLOSE_PAREN = 285,
-     T_OPEN_PAREN = 286,
-     T_ON = 287,
-     T_OR = 288,
-     T_AND = 289,
-     T_EQUAL = 290,
-     T_NOT = 291
+     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_BOOLEAN = 277,
+     T_STRING = 278,
+     T_INT = 279,
+     T_HEX = 280,
+     T_WORD = 281,
+     T_WORD_QUOTE = 282,
+     T_UNEQUAL = 283,
+     T_EOF = 284,
+     T_EOL = 285,
+     T_CLOSE_PAREN = 286,
+     T_OPEN_PAREN = 287,
+     T_ON = 288,
+     T_OR = 289,
+     T_AND = 290,
+     T_EQUAL = 291,
+     T_NOT = 292
    };
 #endif
 #define T_MAINMENU 258
 #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_STRING 277
-#define T_INT 278
-#define T_HEX 279
-#define T_WORD 280
-#define T_WORD_QUOTE 281
-#define T_UNEQUAL 282
-#define T_EOF 283
-#define T_EOL 284
-#define T_CLOSE_PAREN 285
-#define T_OPEN_PAREN 286
-#define T_ON 287
-#define T_OR 288
-#define T_AND 289
-#define T_EQUAL 290
-#define T_NOT 291
+#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_BOOLEAN 277
+#define T_STRING 278
+#define T_INT 279
+#define T_HEX 280
+#define T_WORD 281
+#define T_WORD_QUOTE 282
+#define T_UNEQUAL 283
+#define T_EOF 284
+#define T_EOL 285
+#define T_CLOSE_PAREN 286
+#define T_OPEN_PAREN 287
+#define T_ON 288
+#define T_OR 289
+#define T_AND 290
+#define T_EQUAL 291
+#define T_NOT 292
 
 
 
 
 /* Copy the first part of user declarations.  */
 
+
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  * Released under the terms of the GNU GPL v2.0.
@@ -166,7 +172,7 @@ struct symbol *symbol_hash[257];
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
-# define YYDEBUG 0
+# define YYDEBUG 1
 #endif
 
 /* Enabling verbose error messages.  */
@@ -177,41 +183,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 191 "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.  */
 
+
 #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 +245,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 +255,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 +275,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 +292,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 +307,24 @@ union yyalloc
 
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  2
-#define YYLAST   154
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   160
 
 /* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  37
+#define YYNTOKENS  38
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  39
+#define YYNNTS  41
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  96
+#define YYNRULES  99
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  146
+#define YYNSTATES  152
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   291
+#define YYMAXUTOK   292
 
-#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 +358,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,    36
+      35,    36,    37
 };
 
 #if YYDEBUG
@@ -368,63 +367,64 @@ 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,   122,   123,   126,   129,   131,   137,
-     141,   142,   145,   148,   151,   154,   158,   160,   165,   168,
-     169,   172,   175,   178,   182,   185,   188,   191,   195,   198,
-     201,   202,   206,   209,   213,   216,   219,   220,   222,   226,
-     228,   230,   232,   234,   236,   238,   240,   241,   244,   246,
-     250,   254,   258,   261,   265,   269,   271
+      21,    23,    26,    28,    30,    32,    34,    36,    38,    41,
+      45,    48,    52,    53,    57,    61,    64,    67,    70,    73,
+      76,    79,    82,    86,    90,    92,    96,    98,   103,   106,
+     107,   111,   115,   118,   121,   125,   127,   131,   132,   135,
+     138,   140,   146,   150,   151,   154,   157,   160,   163,   167,
+     169,   174,   177,   178,   181,   184,   187,   191,   194,   197,
+     200,   204,   207,   210,   211,   215,   218,   222,   225,   228,
+     229,   231,   235,   237,   239,   241,   243,   245,   247,   249,
+     250,   253,   255,   259,   263,   267,   270,   274,   278,   280
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const yysigned_char yyrhs[] =
 {
-      38,     0,    -1,    -1,    38,    39,    -1,    40,    -1,    48,
-      -1,    59,    -1,     3,    70,    72,    -1,     5,    -1,    14,
-      -1,     8,    -1,     1,    72,    -1,    54,    -1,    64,    -1,
-      42,    -1,    62,    -1,    72,    -1,    10,    25,    -1,    41,
-      29,    43,    -1,    -1,    43,    44,    29,    -1,    43,    68,
-      29,    -1,    43,    66,    -1,    43,    29,    -1,    20,    69,
-      -1,    21,    69,    -1,    23,    69,    -1,    24,    69,    -1,
-      22,    69,    -1,    18,    70,    73,    -1,    19,    75,    73,
-      -1,     7,    -1,    45,    29,    49,    -1,    71,    -1,    46,
-      51,    47,    29,    -1,    46,    51,    -1,    -1,    49,    50,
-      29,    -1,    49,    68,    29,    -1,    49,    66,    -1,    49,
-      29,    -1,    18,    70,    73,    -1,    17,    -1,    19,    75,
-      73,    -1,    -1,    51,    40,    -1,    13,    74,    -1,    71,
-      -1,    52,    29,    55,    53,    29,    -1,    52,    29,    55,
-      -1,    -1,    55,    40,    -1,    55,    59,    -1,    55,    48,
-      -1,     4,    70,    -1,    56,    29,    67,    -1,    71,    -1,
-      57,    60,    58,    29,    -1,    57,    60,    -1,    -1,    60,
-      40,    -1,    60,    59,    -1,    60,    48,    -1,    60,     1,
-      29,    -1,     6,    70,    -1,    61,    29,    -1,     9,    70,
-      -1,    63,    29,    67,    -1,    11,    29,    -1,    65,    12,
-      -1,    -1,    67,    68,    29,    -1,    67,    29,    -1,    15,
-      32,    74,    -1,    15,    74,    -1,    16,    74,    -1,    -1,
-      70,    -1,    70,    13,    74,    -1,    25,    -1,    26,    -1,
-       5,    -1,     8,    -1,    14,    -1,    29,    -1,    28,    -1,
-      -1,    13,    74,    -1,    75,    -1,    75,    35,    75,    -1,
-      75,    27,    75,    -1,    31,    74,    30,    -1,    36,    74,
-      -1,    74,    33,    74,    -1,    74,    34,    74,    -1,    25,
-      -1,    26,    -1
+      39,     0,    -1,    -1,    39,    40,    -1,    41,    -1,    51,
+      -1,    62,    -1,     3,    73,    75,    -1,     5,    -1,    15,
+      -1,     8,    -1,     1,    75,    -1,    57,    -1,    67,    -1,
+      43,    -1,    45,    -1,    65,    -1,    75,    -1,    10,    26,
+      -1,    42,    30,    46,    -1,    11,    26,    -1,    44,    30,
+      46,    -1,    -1,    46,    47,    30,    -1,    46,    71,    30,
+      -1,    46,    69,    -1,    46,    30,    -1,    21,    72,    -1,
+      22,    72,    -1,    24,    72,    -1,    25,    72,    -1,    23,
+      72,    -1,    19,    73,    76,    -1,    20,    78,    76,    -1,
+       7,    -1,    48,    30,    52,    -1,    74,    -1,    49,    54,
+      50,    30,    -1,    49,    54,    -1,    -1,    52,    53,    30,
+      -1,    52,    71,    30,    -1,    52,    69,    -1,    52,    30,
+      -1,    19,    73,    76,    -1,    18,    -1,    20,    78,    76,
+      -1,    -1,    54,    41,    -1,    14,    77,    -1,    74,    -1,
+      55,    30,    58,    56,    30,    -1,    55,    30,    58,    -1,
+      -1,    58,    41,    -1,    58,    62,    -1,    58,    51,    -1,
+       4,    73,    -1,    59,    30,    70,    -1,    74,    -1,    60,
+      63,    61,    30,    -1,    60,    63,    -1,    -1,    63,    41,
+      -1,    63,    62,    -1,    63,    51,    -1,    63,     1,    30,
+      -1,     6,    73,    -1,    64,    30,    -1,     9,    73,    -1,
+      66,    30,    70,    -1,    12,    30,    -1,    68,    13,    -1,
+      -1,    70,    71,    30,    -1,    70,    30,    -1,    16,    33,
+      77,    -1,    16,    77,    -1,    17,    77,    -1,    -1,    73,
+      -1,    73,    14,    77,    -1,    26,    -1,    27,    -1,     5,
+      -1,     8,    -1,    15,    -1,    30,    -1,    29,    -1,    -1,
+      14,    77,    -1,    78,    -1,    78,    36,    78,    -1,    78,
+      28,    78,    -1,    32,    77,    31,    -1,    37,    77,    -1,
+      77,    34,    77,    -1,    77,    35,    77,    -1,    26,    -1,
+      27,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,    89,    89,    90,    93,    94,    95,    96,    97,    98,
-      99,   100,   103,   105,   106,   107,   108,   114,   122,   128,
-     130,   131,   132,   133,   136,   142,   148,   154,   160,   166,
-     172,   180,   189,   195,   203,   205,   211,   213,   214,   215,
-     216,   219,   225,   231,   237,   239,   244,   253,   261,   263,
-     269,   271,   272,   273,   278,   285,   291,   299,   301,   307,
-     309,   310,   311,   312,   315,   321,   328,   335,   342,   348,
-     355,   356,   357,   360,   365,   370,   378,   380,   384,   389,
-     390,   393,   394,   395,   398,   399,   401,   402,   405,   406,
-     407,   408,   409,   410,   411,   414,   415
+       0,    90,    90,    91,    94,    95,    96,    97,    98,    99,
+     100,   101,   105,   106,   107,   108,   109,   110,   116,   124,
+     130,   138,   148,   150,   151,   152,   153,   156,   162,   168,
+     174,   180,   186,   192,   200,   209,   215,   224,   225,   231,
+     233,   234,   235,   236,   239,   245,   251,   257,   259,   264,
+     273,   282,   283,   289,   291,   292,   293,   298,   305,   311,
+     320,   321,   327,   329,   330,   331,   332,   335,   341,   348,
+     355,   362,   368,   375,   376,   377,   380,   385,   390,   398,
+     400,   404,   409,   410,   413,   414,   415,   419,   419,   421,
+     422,   425,   426,   427,   428,   429,   430,   431,   434,   435
 };
 #endif
 
@@ -435,19 +435,19 @@ 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_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_OR", 
-  "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block", 
+  "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", 
+  "T_REQUIRES", "T_OPTIONAL", "T_PROMPT", "T_DEFAULT", "T_TRISTATE", 
+  "T_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_OR", "T_AND", "T_EQUAL", "T_NOT", "$accept", "input", "block", 
   "common_block", "config_entry_start", "config_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", "menu_block", "source", 
-  "source_stmt", "comment", "comment_stmt", "help_start", "help", 
-  "depends_list", "depends", "prompt_stmt_opt", "prompt", "end", 
-  "nl_or_eof", "if_expr", "expr", "symbol", 0
+  "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", 
+  "menu_block", "source", "source_stmt", "comment", "comment_stmt", 
+  "help_start", "help", "depends_list", "depends", "prompt_stmt_opt", 
+  "prompt", "end", "nl_or_eof", "if_expr", "expr", "symbol", 0
 };
 #endif
 
@@ -459,38 +459,38 @@ 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,   291
+     285,   286,   287,   288,   289,   290,   291,   292
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const unsigned char yyr1[] =
 {
-       0,    37,    38,    38,    39,    39,    39,    39,    39,    39,
-      39,    39,    40,    40,    40,    40,    40,    41,    42,    43,
-      43,    43,    43,    43,    44,    44,    44,    44,    44,    44,
-      44,    45,    46,    47,    48,    48,    49,    49,    49,    49,
-      49,    50,    50,    50,    51,    51,    52,    53,    54,    54,
-      55,    55,    55,    55,    56,    57,    58,    59,    59,    60,
-      60,    60,    60,    60,    61,    62,    63,    64,    65,    66,
-      67,    67,    67,    68,    68,    68,    69,    69,    69,    70,
-      70,    71,    71,    71,    72,    72,    73,    73,    74,    74,
-      74,    74,    74,    74,    74,    75,    75
+       0,    38,    39,    39,    40,    40,    40,    40,    40,    40,
+      40,    40,    41,    41,    41,    41,    41,    41,    42,    43,
+      44,    45,    46,    46,    46,    46,    46,    47,    47,    47,
+      47,    47,    47,    47,    48,    49,    50,    51,    51,    52,
+      52,    52,    52,    52,    53,    53,    53,    54,    54,    55,
+      56,    57,    57,    58,    58,    58,    58,    59,    60,    61,
+      62,    62,    63,    63,    63,    63,    63,    64,    65,    66,
+      67,    68,    69,    70,    70,    70,    71,    71,    71,    72,
+      72,    72,    73,    73,    74,    74,    74,    75,    75,    76,
+      76,    77,    77,    77,    77,    77,    77,    77,    78,    78
 };
 
 /* 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,     3,     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,     2,     3,
+       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,     3,     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
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -498,127 +498,134 @@ 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,    28,    26,    27,    20,    69,
-      21,    86,    86,    37,    38,    48,    71,    73,     0,    29,
-      30,     0,    41,    43,    87,    78
+       2,     0,     1,     0,     0,     0,     8,     0,    34,    10,
+       0,     0,     0,     0,     9,    88,    87,     3,     4,     0,
+      14,     0,    15,     0,    47,     5,     0,    12,     0,    62,
+       6,     0,    16,     0,    13,    17,    11,    82,    83,     0,
+      57,    67,    69,    18,    20,    98,    99,     0,     0,    49,
+      91,    22,    22,    39,    38,    53,    73,     0,    68,    73,
+       7,     0,    95,     0,     0,     0,     0,    19,    21,    35,
+      84,    85,    86,    48,     0,    36,    52,    58,     0,    63,
+      65,     0,    64,    59,    70,    94,    96,    97,    93,    92,
+       0,     0,     0,     0,     0,    79,    79,    79,    79,    79,
+      26,     0,     0,    25,     0,    45,     0,     0,    43,     0,
+      42,     0,    37,    54,    56,     0,    55,    50,    75,     0,
+      66,    60,    71,     0,    77,    78,    89,    89,    27,    80,
+      28,    31,    29,    30,    23,    72,    24,    89,    89,    40,
+      41,    51,    74,    76,     0,    32,    33,     0,    44,    46,
+      90,    81
 };
 
 /* 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,    67,   101,
+      23,    24,    74,    25,    69,   109,    54,    26,   115,    27,
+      76,    28,    29,    81,    30,    57,    31,    32,    33,    34,
+     102,   103,    77,   104,   128,   129,    75,    35,   145,    49,
+      50
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -120
+#define YYPACT_NINF -121
 static const short yypact[] =
 {
-    -120,    17,  -120,    32,    71,    71,  -120,    71,  -120,  -120,
-      71,    11,    99,  -120,  -120,  -120,  -120,  -120,    12,  -120,
-      22,  -120,  -120,    35,  -120,    52,  -120,  -120,    56,  -120,
-      60,  -120,  -120,  -120,  -120,  -120,    32,  -120,  -120,  -120,
-    -120,  -120,  -120,    99,    99,    83,    38,  -120,  -120,    74,
-    -120,  -120,    49,  -120,  -120,  -120,    98,  -120,    99,    99,
-     101,   101,    89,   104,  -120,  -120,  -120,  -120,    65,  -120,
-      62,    77,    72,  -120,  -120,    85,  -120,  -120,    77,  -120,
-      95,  -120,  -120,  -120,   105,     8,    99,    71,   101,    71,
-      71,    71,    71,    71,  -120,   113,   131,  -120,   115,  -120,
-      71,   101,  -120,   116,  -120,   117,  -120,  -120,  -120,   118,
-    -120,  -120,  -120,   119,  -120,  -120,  -120,    99,    83,    83,
-     136,   136,  -120,   137,  -120,  -120,  -120,  -120,  -120,  -120,
-    -120,   136,   136,  -120,  -120,  -120,  -120,    83,    99,  -120,
-    -120,    99,  -120,  -120,    83,    83
+    -121,    25,  -121,   -18,   -11,   -11,  -121,   -11,  -121,  -121,
+     -11,    21,    27,   112,  -121,  -121,  -121,  -121,  -121,    51,
+    -121,    54,  -121,    57,  -121,  -121,    58,  -121,    62,  -121,
+    -121,    80,  -121,    96,  -121,  -121,  -121,  -121,  -121,   -18,
+    -121,  -121,  -121,  -121,  -121,  -121,  -121,   112,   112,    17,
+      77,  -121,  -121,  -121,    85,  -121,  -121,    56,  -121,  -121,
+    -121,   -21,  -121,   112,   112,    42,    42,   100,   100,   115,
+    -121,  -121,  -121,  -121,    98,  -121,    68,    28,    99,  -121,
+    -121,   111,  -121,  -121,    28,  -121,   105,  -121,  -121,  -121,
+     116,   110,   112,   -11,    42,   -11,   -11,   -11,   -11,   -11,
+    -121,   118,   137,  -121,   121,  -121,   -11,    42,  -121,   122,
+    -121,   123,  -121,  -121,  -121,   124,  -121,  -121,  -121,   125,
+    -121,  -121,  -121,   112,    17,    17,   142,   142,  -121,   143,
+    -121,  -121,  -121,  -121,  -121,  -121,  -121,   142,   142,  -121,
+    -121,  -121,  -121,    17,   112,  -121,  -121,   112,  -121,  -121,
+      17,    17
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yysigned_char 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,    88,
-     100,    78,    46,    -1,   -23,     2,  -119,   -43,   -53
+    -121,  -121,  -121,   -35,  -121,  -121,  -121,  -121,   106,  -121,
+    -121,  -121,  -121,   -34,  -121,  -121,  -121,  -121,  -121,  -121,
+    -121,  -121,  -121,  -121,   -33,  -121,  -121,  -121,  -121,  -121,
+    -121,    90,   101,    34,    10,    -4,   -30,    -1,  -120,   -43,
+     -57
 };
 
 /* 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 -62
 static const short yytable[] =
 {
-      56,    57,   140,    36,    37,    33,    38,    82,    83,    39,
-      74,    67,   142,   143,    73,    80,    81,     2,     3,    76,
-       4,     5,     6,     7,     8,     9,    10,    11,   108,    77,
-      12,    13,   107,    41,    42,   121,    40,   110,    55,    43,
-     117,    47,   118,   119,    44,    14,    15,   111,   132,   -58,
-      72,    48,   -58,     5,    64,     7,     8,    65,    10,    11,
-      14,    15,    12,    66,    50,    60,     5,    64,     7,     8,
-      65,    10,    11,    61,   137,    12,    66,    14,    15,    64,
-       7,    51,    65,    10,    11,    53,   120,    12,    66,    54,
-      14,    15,    85,    86,   106,   144,    34,    35,   145,   131,
-      84,   114,    14,    15,    85,    86,   112,    87,    88,    89,
-      90,    91,    92,    93,   115,    84,    58,    59,    94,    85,
-      86,    99,   100,   101,    41,    42,    41,    42,    79,    59,
-      43,    58,    59,   102,   116,    44,   124,   125,   126,   127,
-      98,   105,   128,   129,   130,   133,   134,   135,   136,   138,
-     141,   104,     0,     0,    78
+      39,    40,    36,    41,    61,    62,    42,   146,    88,    89,
+      85,    15,    16,    63,    64,    37,    38,   148,   149,    73,
+      86,    87,    79,    80,    82,     2,     3,    83,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,   127,    60,    13,
+      14,   113,   114,   116,    91,    92,   117,    43,   124,   125,
+     138,    63,    64,    44,    15,    16,   -61,    78,   118,   -61,
+       5,    70,     7,     8,    71,    10,    11,    12,    45,    46,
+      13,    72,     5,    70,     7,     8,    71,    10,    11,    12,
+     143,    51,    13,    72,    52,    15,    16,    53,    55,   126,
+      70,     7,    56,    71,    10,    11,    12,    15,    16,    13,
+      72,   150,   137,   111,   151,    65,   130,   131,   132,   133,
+      58,   119,    90,    66,    15,    16,    91,    92,   119,    93,
+      94,    95,    96,    97,    98,    99,    59,    90,   112,   120,
+     100,    91,    92,   105,   106,   107,    45,    46,    45,    46,
+      64,   121,    47,   123,    47,   108,   122,    48,   134,    48,
+     135,   136,   139,   140,   141,   142,   144,   147,    68,   110,
+      84
 };
 
-static const short yycheck[] =
+static const unsigned char yycheck[] =
 {
-      43,    44,   121,     4,     5,     3,     7,    60,    61,    10,
-      52,    49,   131,   132,    52,    58,    59,     0,     1,    52,
-       3,     4,     5,     6,     7,     8,     9,    10,    70,    52,
-      13,    14,    70,    25,    26,    88,    25,    70,    36,    31,
-      32,    29,    85,    86,    36,    28,    29,    70,   101,     0,
-       1,    29,     3,     4,     5,     6,     7,     8,     9,    10,
-      28,    29,    13,    14,    29,    27,     4,     5,     6,     7,
-       8,     9,    10,    35,   117,    13,    14,    28,    29,     5,
-       6,    29,     8,     9,    10,    29,    87,    13,    14,    29,
-      28,    29,    15,    16,    29,   138,    25,    26,   141,   100,
-      11,    29,    28,    29,    15,    16,    29,    18,    19,    20,
-      21,    22,    23,    24,    29,    11,    33,    34,    29,    15,
-      16,    17,    18,    19,    25,    26,    25,    26,    30,    34,
-      31,    33,    34,    29,    29,    36,    90,    91,    92,    93,
-      62,    63,    29,    12,    29,    29,    29,    29,    29,    13,
-      13,    63,    -1,    -1,    54
+       4,     5,     3,     7,    47,    48,    10,   127,    65,    66,
+      31,    29,    30,    34,    35,    26,    27,   137,   138,    54,
+      63,    64,    57,    57,    57,     0,     1,    57,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    94,    39,    14,
+      15,    76,    76,    76,    16,    17,    76,    26,    91,    92,
+     107,    34,    35,    26,    29,    30,     0,     1,    30,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    26,    27,
+      14,    15,     4,     5,     6,     7,     8,     9,    10,    11,
+     123,    30,    14,    15,    30,    29,    30,    30,    30,    93,
+       5,     6,    30,     8,     9,    10,    11,    29,    30,    14,
+      15,   144,   106,    69,   147,    28,    96,    97,    98,    99,
+      30,    77,    12,    36,    29,    30,    16,    17,    84,    19,
+      20,    21,    22,    23,    24,    25,    30,    12,    30,    30,
+      30,    16,    17,    18,    19,    20,    26,    27,    26,    27,
+      35,    30,    32,    33,    32,    30,    30,    37,    30,    37,
+      13,    30,    30,    30,    30,    30,    14,    14,    52,    69,
+      59
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const unsigned char yystos[] =
 {
-       0,    38,     0,     1,     3,     4,     5,     6,     7,     8,
-       9,    10,    13,    14,    28,    29,    39,    40,    41,    42,
-      45,    46,    48,    52,    54,    56,    57,    59,    61,    62,
-      63,    64,    72,    72,    25,    26,    70,    70,    70,    70,
-      25,    25,    26,    31,    36,    74,    75,    29,    29,    51,
-      29,    29,    60,    29,    29,    72,    74,    74,    33,    34,
-      27,    35,    43,    49,     5,     8,    14,    40,    47,    71,
-      55,    67,     1,    40,    48,    58,    59,    71,    67,    30,
-      74,    74,    75,    75,    11,    15,    16,    18,    19,    20,
-      21,    22,    23,    24,    29,    44,    65,    66,    68,    17,
-      18,    19,    29,    50,    66,    68,    29,    40,    48,    53,
-      59,    71,    29,    68,    29,    29,    29,    32,    74,    74,
-      70,    75,    69,    70,    69,    69,    69,    69,    29,    12,
-      29,    70,    75,    29,    29,    29,    29,    74,    13,    73,
-      73,    13,    73,    73,    74,    74
+       0,    39,     0,     1,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    14,    15,    29,    30,    40,    41,    42,
+      43,    44,    45,    48,    49,    51,    55,    57,    59,    60,
+      62,    64,    65,    66,    67,    75,    75,    26,    27,    73,
+      73,    73,    73,    26,    26,    26,    27,    32,    37,    77,
+      78,    30,    30,    30,    54,    30,    30,    63,    30,    30,
+      75,    77,    77,    34,    35,    28,    36,    46,    46,    52,
+       5,     8,    15,    41,    50,    74,    58,    70,     1,    41,
+      51,    61,    62,    74,    70,    31,    77,    77,    78,    78,
+      12,    16,    17,    19,    20,    21,    22,    23,    24,    25,
+      30,    47,    68,    69,    71,    18,    19,    20,    30,    53,
+      69,    71,    30,    41,    51,    56,    62,    74,    30,    71,
+      30,    30,    30,    33,    77,    77,    73,    78,    72,    73,
+      72,    72,    72,    72,    30,    13,    30,    73,    78,    30,
+      30,    30,    30,    77,    14,    76,    76,    14,    76,    76,
+      77,    77
 };
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -639,13 +646,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.  */
@@ -660,13 +668,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)
@@ -678,7 +686,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;       \
@@ -687,7 +695,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
@@ -702,19 +714,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
@@ -793,95 +879,85 @@ yystpcpy (yydest, yysrc)
 \f
 
 #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;
     }
 }
-
 \f
 
-/* 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.  */
@@ -890,13 +966,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;
@@ -905,7 +1000,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,
@@ -969,7 +1064,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;
@@ -1001,10 +1096,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;
 
       {
@@ -1030,7 +1125,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;
     }
 
@@ -1055,39 +1150,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)
@@ -1102,8 +1186,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)
@@ -1149,378 +1232,430 @@ 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:
-    { zconfprint("unexpected 'endmenu' statement"); }
+
+    { zconfprint("unexpected 'endmenu' statement"); ;}
     break;
 
   case 9:
-    { zconfprint("unexpected 'endif' statement"); }
+
+    { zconfprint("unexpected 'endif' statement"); ;}
     break;
 
   case 10:
-    { zconfprint("unexpected 'endchoice' statement"); }
+
+    { zconfprint("unexpected 'endchoice' statement"); ;}
     break;
 
   case 11:
-    { zconfprint("syntax error"); yyerrok; }
+
+    { zconfprint("syntax error"); yyerrok; ;}
     break;
 
-  case 17:
+  case 18:
+
     {
        struct symbol *sym = sym_lookup(yyvsp[0].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);
-}
+;}
     break;
 
-  case 18:
+  case 19:
+
     {
        menu_end_entry();
        printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 23:
-    { }
+  case 20:
+
+    {
+       struct symbol *sym = sym_lookup(yyvsp[0].string, 0);
+       sym->flags |= SYMBOL_OPTIONAL;
+       menu_add_entry(sym);
+       printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), yyvsp[0].string);
+;}
     break;
 
-  case 24:
+  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 26:
+
+    { ;}
+    break;
+
+  case 27:
+
     {
        menu_set_type(S_TRISTATE);
        printd(DEBUG_PARSE, "%s:%d:tristate\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 25:
+  case 28:
+
     {
        menu_set_type(S_BOOLEAN);
        printd(DEBUG_PARSE, "%s:%d:boolean\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 26:
+  case 29:
+
     {
        menu_set_type(S_INT);
        printd(DEBUG_PARSE, "%s:%d:int\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 27:
+  case 30:
+
     {
        menu_set_type(S_HEX);
        printd(DEBUG_PARSE, "%s:%d:hex\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 28:
+  case 31:
+
     {
        menu_set_type(S_STRING);
        printd(DEBUG_PARSE, "%s:%d:string\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 29:
+  case 32:
+
     {
        menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 30:
+  case 33:
+
     {
        menu_add_prop(P_DEFAULT, NULL, yyvsp[-1].symbol, yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 31:
+  case 34:
+
     {
        struct symbol *sym = sym_lookup(NULL, 0);
        sym->flags |= SYMBOL_CHOICE;
        menu_add_entry(sym);
        menu_add_prop(P_CHOICE, NULL, NULL, NULL);
        printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 32:
+  case 35:
+
     {
        menu_end_entry();
        menu_add_menu();
-}
+;}
     break;
 
-  case 33:
+  case 36:
+
     {
        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:
+  case 38:
+
     {
        printf("%s:%d: missing 'endchoice' for this 'choice' statement\n", current_menu->file->name, current_menu->lineno);
        zconfnerrs++;
-}
+;}
     break;
 
-  case 41:
+  case 44:
+
     {
        menu_add_prop(P_PROMPT, yyvsp[-1].string, NULL, yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 42:
+  case 45:
+
     {
        current_entry->sym->flags |= SYMBOL_OPTIONAL;
        printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 43:
+  case 46:
+
     {
        menu_add_prop(P_DEFAULT, NULL, yyvsp[-1].symbol, yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:default\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 46:
+  case 49:
+
     {
        printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
        menu_add_entry(NULL);
        menu_add_dep(yyvsp[0].expr);
        menu_end_entry();
        menu_add_menu();
-}
+;}
     break;
 
-  case 47:
+  case 50:
+
     {
        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:
+  case 52:
+
     {
        printf("%s:%d: missing 'endif' for this 'if' statement\n", current_menu->file->name, current_menu->lineno);
        zconfnerrs++;
-}
+;}
     break;
 
-  case 54:
+  case 57:
+
     {
        menu_add_entry(NULL);
        menu_add_prop(P_MENU, yyvsp[0].string, NULL, NULL);
        printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 55:
+  case 58:
+
     {
        menu_end_entry();
        menu_add_menu();
-}
+;}
     break;
 
-  case 56:
+  case 59:
+
     {
        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:
+  case 61:
+
     {
        printf("%s:%d: missing 'endmenu' for this 'menu' statement\n", current_menu->file->name, current_menu->lineno);
        zconfnerrs++;
-}
+;}
     break;
 
-  case 63:
-    { zconfprint("invalid menu option"); yyerrok; }
+  case 66:
+
+    { zconfprint("invalid menu option"); yyerrok; ;}
     break;
 
-  case 64:
+  case 67:
+
     {
        yyval.string = yyvsp[0].string;
        printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), yyvsp[0].string);
-}
+;}
     break;
 
-  case 65:
+  case 68:
+
     {
        zconf_nextfile(yyvsp[-1].string);
-}
+;}
     break;
 
-  case 66:
+  case 69:
+
     {
        menu_add_entry(NULL);
        menu_add_prop(P_COMMENT, yyvsp[0].string, NULL, NULL);
        printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 67:
+  case 70:
+
     {
        menu_end_entry();
-}
+;}
     break;
 
-  case 68:
+  case 71:
+
     {
        printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
        zconf_starthelp();
-}
+;}
     break;
 
-  case 69:
+  case 72:
+
     {
        current_entry->sym->help = yyvsp[0].string;
-}
+;}
     break;
 
-  case 72:
-    { }
+  case 75:
+
+    { ;}
     break;
 
-  case 73:
+  case 76:
+
     {
        menu_add_dep(yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 74:
+  case 77:
+
     {
        menu_add_dep(yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:depends\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 75:
+  case 78:
+
     {
        menu_add_dep(yyvsp[0].expr);
        printd(DEBUG_PARSE, "%s:%d:requires\n", zconf_curname(), zconf_lineno());
-}
+;}
     break;
 
-  case 77:
+  case 80:
+
     {
        menu_add_prop(P_PROMPT, yyvsp[0].string, NULL, NULL);
-}
+;}
     break;
 
-  case 78:
+  case 81:
+
     {
        menu_add_prop(P_PROMPT, yyvsp[-2].string, NULL, yyvsp[0].expr);
-}
+;}
     break;
 
-  case 81:
-    { yyval.token = T_ENDMENU; }
-    break;
+  case 84:
 
-  case 82:
-    { yyval.token = T_ENDCHOICE; }
+    { yyval.token = T_ENDMENU; ;}
     break;
 
-  case 83:
-    { yyval.token = T_ENDIF; }
-    break;
+  case 85:
 
-  case 86:
-    { yyval.expr = NULL; }
+    { yyval.token = T_ENDCHOICE; ;}
     break;
 
-  case 87:
-    { yyval.expr = yyvsp[0].expr; }
-    break;
+  case 86:
 
-  case 88:
-    { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); }
+    { yyval.token = T_ENDIF; ;}
     break;
 
   case 89:
-    { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); }
+
+    { yyval.expr = NULL; ;}
     break;
 
   case 90:
-    { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); }
+
+    { yyval.expr = yyvsp[0].expr; ;}
     break;
 
   case 91:
-    { yyval.expr = yyvsp[-1].expr; }
+
+    { yyval.expr = expr_alloc_symbol(yyvsp[0].symbol); ;}
     break;
 
   case 92:
-    { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); }
+
+    { yyval.expr = expr_alloc_comp(E_EQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
     break;
 
   case 93:
-    { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); }
+
+    { yyval.expr = expr_alloc_comp(E_UNEQUAL, yyvsp[-2].symbol, yyvsp[0].symbol); ;}
     break;
 
   case 94:
-    { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); }
+
+    { yyval.expr = yyvsp[-1].expr; ;}
     break;
 
   case 95:
-    { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); }
+
+    { yyval.expr = expr_alloc_one(E_NOT, yyvsp[0].expr); ;}
     break;
 
   case 96:
-    { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); }
+
+    { yyval.expr = expr_alloc_two(E_OR, yyvsp[-2].expr, yyvsp[0].expr); ;}
+    break;
+
+  case 97:
+
+    { yyval.expr = expr_alloc_two(E_AND, yyvsp[-2].expr, yyvsp[0].expr); ;}
+    break;
+
+  case 98:
+
+    { yyval.symbol = sym_lookup(yyvsp[0].string, 0); free(yyvsp[0].string); ;}
+    break;
+
+  case 99:
+
+    { yyval.symbol = sym_lookup(yyvsp[0].string, 1); free(yyvsp[0].string); ;}
     break;
 
 
     }
 
-/* Line 1016 of /usr/share/bison/yacc.c.  */
-#line 1509 "zconf.tab.c"
+/* Line 999 of yacc.c.  */
+
 \f
   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;
 
@@ -1565,12 +1700,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)
@@ -1591,19 +1726,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
@@ -1615,28 +1746,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 (;;)
@@ -1657,26 +1790,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)
index dff6a117ae9ed4907836d419317c066d53da609f..04e9499038942c585da68e12bc843fb88f0ff796 100644 (file)
@@ -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
@@ -104,12 +105,13 @@ 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
 {
@@ -125,6 +127,24 @@ config_stmt: config_entry_start T_EOL config_option_list
        printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
 };
 
+menuconfig_entry_start: T_MENUCONFIG T_WORD
+{
+       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 T_EOL 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