]> granicus.if.org Git - nethack/commitdiff
lev_comp,dgn_comp vs CRLF style input
authornethack.rankin <nethack.rankin>
Thu, 28 Mar 2002 01:37:39 +0000 (01:37 +0000)
committernethack.rankin <nethack.rankin>
Thu, 28 Mar 2002 01:37:39 +0000 (01:37 +0000)
     Allow the special level and dungeon compilers to handle input
files which have CR+LF delimited lines.  Apparently Cygwin doesn't
convert MSDOS style line ends into newlines the way stdio should
do for text I/O.  The resulting unexpected CR characters result in
syntax errors.

     And explicitly using '\n' on both the lex and yacc sides of
MAP processing allows removal of the old NEWLINE hack for Mac MPW.
It won't matter what numeric value that character escape sequence
has internally.

doc/fixes34.1
sys/share/dgn_lex.c
sys/share/lev_lex.c
util/dgn_comp.l
util/lev_comp.l
util/lev_main.c

index 90b739d3a2494710f44d22bac8840c68e4137cf6..44288b1450a75eb4929277b1ad9d7bde169a2ecc 100644 (file)
@@ -24,6 +24,8 @@ don't drop corpse when a monster kills another monster on an inaccessible
 half-physical-damage from gas spore explosion should only affect you
 Sunsword didn't stop glowing when hero killed a monster wielding it
 mimics caught in explosions with messages printed about them are discovered
+let lev_comp and dgn_comp accept optional carriage return character prior to
+       the terminating newline in special level and dungeon description files
 
 
 Platform- and/or Interface-Specific Fixes
index 0850e44fb3d184c93e6432f1486148d6bfcee7cd..054a25dcb7c29be37b5b31ffe84a7b0c7f848289 100644 (file)
@@ -210,48 +210,48 @@ static void FDECL(yy_fatal_error, (const char *));
 
 #define YY_NUM_RULES 35
 #define YY_END_OF_BUFFER 36
-static yyconst short int yy_accept[194] =
+static yyconst short int yy_accept[196] =
     {   0,
-        0,    0,   36,   34,   33,   32,   34,   29,   34,   34,
+        0,    0,   36,   34,   33,   32,   34,   34,   29,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   33,    0,
-       30,   29,    0,    0,    0,    0,    0,    0,    0,    0,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   33,
+       32,    0,   30,   29,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    2,    0,   31,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    2,    0,   31,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        3,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,   14,    0,    0,    0,    0,    0,    0,    4,    0,
-       25,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        6,    0,    0,    0,    5,    0,    0,   23,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   20,
-        0,    0,    0,    0,    8,    0,    0,    0,    0,    0,
-        0,    1,    0,    0,    0,    0,    0,   22,   15,    0,
-       21,    7,   19,    0,    0,    0,    0,    0,    0,   13,
-        0,    0,    0,   26,   16,    0,    0,   12,    0,    0,
-        0,   11,    9,    0,   17,   18,    0,   27,    0,   28,
-       24,   10,    0
+        0,    0,    3,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   14,    0,    0,    0,    0,    0,    0,
+        4,    0,   25,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    6,    0,    0,    0,    5,    0,    0,   23,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   20,    0,    0,    0,    0,    8,    0,    0,    0,
+        0,    0,    0,    1,    0,    0,    0,    0,    0,   22,
+       15,    0,   21,    7,   19,    0,    0,    0,    0,    0,
+        0,   13,    0,    0,    0,   26,   16,    0,    0,   12,
+        0,    0,    0,   11,    9,    0,   17,   18,    0,   27,
+        0,   28,   24,   10,    0
 
     } ;
 
 static yyconst int yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    4,    5,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    6,    1,    1,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    1,    1,    1,
-        1,    1,    1,    1,    7,    8,    9,   10,   11,   12,
-       13,   14,   15,    1,    1,   16,   17,   18,   19,   20,
-        1,   21,   22,   23,   24,   25,    1,    1,   26,    1,
-        1,    1,    1,    1,   27,    1,   28,    1,   29,   30,
-
-       31,   32,   33,   34,   35,    1,   36,   37,   38,   39,
-       40,   41,    1,   42,   43,   44,   45,    1,   46,    1,
-        1,   47,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    5,    6,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    7,    1,    1,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    1,    1,    1,
+        1,    1,    1,    1,    8,    9,   10,   11,   12,   13,
+       14,   15,   16,    1,    1,   17,   18,   19,   20,   21,
+        1,   22,   23,   24,   25,   26,    1,    1,   27,    1,
+        1,    1,    1,    1,   28,    1,   29,    1,   30,   31,
+
+       32,   33,   34,   35,   36,    1,   37,   38,   39,   40,
+       41,   42,    1,   43,   44,   45,   46,    1,   47,    1,
+        1,   48,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -268,131 +268,131 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[48] =
+static yyconst int yy_meta[49] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1
+        1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst short int yy_base[196] =
+static yyconst short int yy_base[198] =
     {   0,
-        0,  212,  216,  218,  213,  218,  210,  207,  196,  190,
-      196,   37,  191,  197,  186,  188,  171,  164,  172,  174,
-      173,   18,  160,  159,  154,  157,   11,  193,  193,  190,
-      218,  187,  177,  184,  183,  167,  170,  164,  161,  166,
-      174,  155,  136,  144,  134,  132,  133,   26,  135,  143,
-      147,  128,  145,  218,  169,  218,  158,  152,  154,  159,
-      154,  145,   44,  142,   47,  124,  124,  125,  129,  129,
-      115,   27,  121,  113,  111,  120,  115,  116,  134,  142,
-      132,  128,  137,  121,  130,  129,  125,  129,  131,   97,
-      218,  105,   94,  101,   95,   96,   94,   99,  105,  101,
-
-       89,  218,   95,  112,  114,   51,  112,  107,  218,  110,
-      114,  111,  106,   96,   85,   76,   81,   82,   88,   69,
-      218,   81,   76,   75,  218,   78,   99,  218,   88,   97,
-       87,   88,   92,   93,   88,   91,   90,   71,   65,  218,
-       62,   60,   57,   56,  218,   59,   54,   74,   84,   65,
-       66,  218,   70,   65,   70,   60,   68,  218,  218,   52,
-      218,  218,  218,   46,   50,   57,   61,   67,   62,  218,
-       67,   64,   63,  218,  218,   42,   41,  218,   61,   53,
-       49,  218,  218,   50,  218,  218,   51,  218,   46,  218,
-      218,  218,  218,   61,   59
+        0,  213,  218,  220,  215,  220,  213,  210,  207,  196,
+      190,  196,   37,  191,  197,  186,  188,  171,  164,  172,
+      174,  173,   18,  160,  159,  154,  157,   11,  194,  194,
+      220,  190,  220,  187,  177,  184,  183,  167,  170,  164,
+      161,  166,  174,  155,  136,  144,  134,  132,  133,   26,
+      135,  143,  147,  128,  145,  220,  170,  220,  158,  152,
+      154,  159,  154,  145,   44,  142,   47,  124,  124,  125,
+      129,  129,  115,   27,  121,  113,  111,  120,  115,  116,
+      134,  142,  132,  128,  137,  121,  130,  129,  125,  129,
+      131,   97,  220,  105,   94,  101,   95,   96,   94,   99,
+
+      105,  101,   89,  220,   95,  112,  114,   51,  112,  107,
+      220,  110,  114,  111,  106,   96,   85,   76,   81,   82,
+       88,   69,  220,   81,   76,   75,  220,   78,   99,  220,
+       88,   97,   87,   88,   92,   93,   88,   91,   90,   71,
+       65,  220,   62,   60,   57,   56,  220,   59,   54,   74,
+       84,   65,   66,  220,   70,   65,   70,   60,   68,  220,
+      220,   52,  220,  220,  220,   46,   50,   57,   61,   67,
+       62,  220,   67,   64,   63,  220,  220,   42,   41,  220,
+       61,   53,   49,  220,  220,   50,  220,  220,   51,  220,
+       46,  220,  220,  220,  220,   62,   60
 
     } ;
 
-static yyconst short int yy_def[196] =
+static yyconst short int yy_def[198] =
     {   0,
-      193,    1,  193,  193,  193,  193,  194,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  195,  193,  194,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  195,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,    0,  193,  193
+      195,    1,  195,  195,  195,  195,  195,  196,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  197,  195,
+      195,  196,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  197,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,    0,  195,  195
 
     } ;
 
-static yyconst short int yy_nxt[266] =
+static yyconst short int yy_nxt[269] =
     {   0,
-        4,    5,    6,    7,    4,    8,    9,   10,   11,   12,
-       13,    4,    4,    4,    4,   14,    4,    4,    4,   15,
-       16,    4,    4,    4,    4,    4,    4,    4,   17,   18,
-        4,    4,    4,   19,    4,    4,   20,   21,   22,    4,
-       23,   24,   25,   26,   27,    4,    4,   36,   47,   53,
-       85,   54,   72,   73,   86,   88,   96,   48,  129,   55,
-       37,   30,   89,  192,  191,  190,  130,  189,  188,  187,
-      186,   97,  185,  184,  183,  182,  181,  180,  179,  178,
-      177,  176,  175,  174,  173,  172,  171,  170,  169,  168,
-      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
-
-      157,  156,  155,  154,  153,  152,  151,  150,  149,  148,
-      147,  146,  145,  144,  143,  142,  141,  140,  139,  138,
-      137,  136,  135,  134,  133,  132,  131,  128,  127,  126,
-      125,  124,  123,  122,  121,  120,  119,  118,  117,  116,
-      115,  114,  113,  112,  111,  110,  109,  108,  107,  106,
-      105,  104,  103,  102,  101,  100,   99,   98,   95,   94,
-       93,   92,   91,   90,   87,   84,   83,   82,   81,   80,
-       79,   56,   78,   77,   76,   75,   74,   71,   70,   69,
-       68,   67,   66,   65,   64,   63,   62,   61,   60,   59,
-       58,   57,   32,   31,   29,   56,   52,   51,   50,   49,
-
-       46,   45,   44,   43,   42,   41,   40,   39,   38,   35,
-       34,   33,   32,   31,   29,  193,   28,    3,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193
+        4,    5,    6,    7,    8,    4,    9,   10,   11,   12,
+       13,   14,    4,    4,    4,    4,   15,    4,    4,    4,
+       16,   17,    4,    4,    4,    4,    4,    4,    4,   18,
+       19,    4,    4,    4,   20,    4,    4,   21,   22,   23,
+        4,   24,   25,   26,   27,   28,    4,    4,   38,   49,
+       55,   87,   56,   74,   75,   88,   90,   98,   50,  131,
+       57,   39,   32,   91,  194,  193,  192,  132,  191,  190,
+      189,  188,   99,  187,  186,  185,  184,  183,  182,  181,
+      180,  179,  178,  177,  176,  175,  174,  173,  172,  171,
+      170,  169,  168,  167,  166,  165,  164,  163,  162,  161,
+
+      160,  159,  158,  157,  156,  155,  154,  153,  152,  151,
+      150,  149,  148,  147,  146,  145,  144,  143,  142,  141,
+      140,  139,  138,  137,  136,  135,  134,  133,  130,  129,
+      128,  127,  126,  125,  124,  123,  122,  121,  120,  119,
+      118,  117,  116,  115,  114,  113,  112,  111,  110,  109,
+      108,  107,  106,  105,  104,  103,  102,  101,  100,   97,
+       96,   95,   94,   93,   92,   89,   86,   85,   84,   83,
+       82,   81,   58,   80,   79,   78,   77,   76,   73,   72,
+       71,   70,   69,   68,   67,   66,   65,   64,   63,   62,
+       61,   60,   59,   34,   33,   30,   58,   54,   53,   52,
+
+       51,   48,   47,   46,   45,   44,   43,   42,   41,   40,
+       37,   36,   35,   34,   33,   31,   30,  195,   29,    3,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195
     } ;
 
-static yyconst short int yy_chk[266] =
+static yyconst short int yy_chk[269] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,   12,   22,   27,
-       63,   27,   48,   48,   63,   65,   72,   22,  106,  195,
-       12,  194,   65,  189,  187,  184,  106,  181,  180,  179,
-      177,   72,  176,  173,  172,  171,  169,  168,  167,  166,
-      165,  164,  160,  157,  156,  155,  154,  153,  151,  150,
-      149,  148,  147,  146,  144,  143,  142,  141,  139,  138,
-
-      137,  136,  135,  134,  133,  132,  131,  130,  129,  127,
-      126,  124,  123,  122,  120,  119,  118,  117,  116,  115,
-      114,  113,  112,  111,  110,  108,  107,  105,  104,  103,
-      101,  100,   99,   98,   97,   96,   95,   94,   93,   92,
-       90,   89,   88,   87,   86,   85,   84,   83,   82,   81,
-       80,   79,   78,   77,   76,   75,   74,   73,   71,   70,
-       69,   68,   67,   66,   64,   62,   61,   60,   59,   58,
-       57,   55,   53,   52,   51,   50,   49,   47,   46,   45,
-       44,   43,   42,   41,   40,   39,   38,   37,   36,   35,
-       34,   33,   32,   30,   29,   28,   26,   25,   24,   23,
-
-       21,   20,   19,   18,   17,   16,   15,   14,   13,   11,
-       10,    9,    8,    7,    5,    3,    2,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
-      193,  193,  193,  193,  193
+        1,    1,    1,    1,    1,    1,    1,    1,   13,   23,
+       28,   65,   28,   50,   50,   65,   67,   74,   23,  108,
+      197,   13,  196,   67,  191,  189,  186,  108,  183,  182,
+      181,  179,   74,  178,  175,  174,  173,  171,  170,  169,
+      168,  167,  166,  162,  159,  158,  157,  156,  155,  153,
+      152,  151,  150,  149,  148,  146,  145,  144,  143,  141,
+
+      140,  139,  138,  137,  136,  135,  134,  133,  132,  131,
+      129,  128,  126,  125,  124,  122,  121,  120,  119,  118,
+      117,  116,  115,  114,  113,  112,  110,  109,  107,  106,
+      105,  103,  102,  101,  100,   99,   98,   97,   96,   95,
+       94,   92,   91,   90,   89,   88,   87,   86,   85,   84,
+       83,   82,   81,   80,   79,   78,   77,   76,   75,   73,
+       72,   71,   70,   69,   68,   66,   64,   63,   62,   61,
+       60,   59,   57,   55,   54,   53,   52,   51,   49,   48,
+       47,   46,   45,   44,   43,   42,   41,   40,   39,   38,
+       37,   36,   35,   34,   32,   30,   29,   27,   26,   25,
+
+       24,   22,   21,   20,   19,   18,   17,   16,   15,   14,
+       12,   11,   10,    9,    8,    7,    5,    3,    2,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  195,  195,  195,  195,  195,  195,  195
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -406,7 +406,7 @@ static char *yy_last_accepting_cpos;
 #define YY_MORE_ADJ 0
 char *yytext;
 #define INITIAL 0
-/*     SCCS Id: @(#)dgn_lex.c  3.4     1996/03/02      */
+/*     SCCS Id: @(#)dgn_lex.c  3.4     2002/03/27      */
 /*     Copyright (c) 1989 by Jean-Christophe Collet */
 /*     Copyright (c) 1990 by M. Stephenson          */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -634,13 +634,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 194 )
+                               if ( yy_current_state >= 196 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 218 );
+               while ( yy_base[yy_current_state] != 220 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1099,7 +1099,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 194 )
+                       if ( yy_current_state >= 196 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1130,11 +1130,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 194 )
+               if ( yy_current_state >= 196 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 193);
+       yy_is_jam = (yy_current_state == 195);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
index cf8886d6d0dc3a2acdb3c41119ec880ef5989b07..776e048ce3b61af5f9549aea60ad3d5d4879898f 100644 (file)
@@ -210,16 +210,16 @@ static void FDECL(yy_fatal_error, (const char *));
 
 #define YY_NUM_RULES 112
 #define YY_END_OF_BUFFER 113
-static yyconst short int yy_accept[633] =
+static yyconst short int yy_accept[640] =
     {   0,
         0,    0,    0,    0,  113,  111,  108,  107,  111,  111,
-      111,  105,    4,  111,  111,  111,  111,  111,  111,  111,
+      111,  111,  105,    4,  111,  111,  111,  111,  111,  111,
       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-        2,  108,  111,  111,  105,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  108,    0,  106,
-        0,    0,  105,    0,    0,    0,    0,    0,    0,    0,
+      111,    2,  111,  108,  111,  111,  105,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  108,
+      107,    0,  106,    0,    0,  105,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
@@ -227,79 +227,79 @@ static yyconst short int yy_accept[633] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   87,    0,    0,
-        3,    0,    2,  108,    0,  105,    0,    0,    0,    0,
-        0,    0,    0,    0,    2,    0,  110,    0,  110,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       87,    0,    0,    3,    0,    2,    2,    0,  108,    0,
+      105,    0,    0,    0,    0,    0,    0,    0,    0,    2,
+        0,    0,  110,    0,  110,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   72,    0,    0,
-       67,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   65,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  109,    0,    0,
-        0,    0,    0,   17,    0,    0,    0,    0,    0,   40,
-        0,    0,    0,    6,    0,    0,   42,    0,    0,    0,
-       33,    0,    0,    0,   36,   32,    0,    0,    0,   16,
-
-        0,    0,  104,    0,    0,    0,    0,    0,    0,    0,
-        0,   93,    0,    0,    0,    0,    0,    0,   88,   91,
-       51,    0,    0,    0,    0,    0,    0,   60,    0,    0,
-        0,    0,    0,   94,    0,    0,    0,    0,    0,    0,
-       55,    0,    0,    0,   45,    0,    0,    0,    0,    0,
-        0,    0,    0,   90,    0,    0,    0,   53,   12,    0,
-        0,    0,    0,   25,    0,    0,    0,    0,    0,    0,
-       10,    0,    0,    0,    0,    8,    0,    0,    0,    7,
-        0,    0,    0,    0,    0,    0,   27,    0,    0,    0,
-       59,   86,    0,    0,   80,    0,    0,    0,    0,   74,
-
-        0,    0,    0,    0,    0,   89,    0,    0,    0,    0,
+        0,    0,    0,   72,    0,    0,   67,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   50,    0,    0,    0,   58,    0,   64,    0,    0,
-        0,   52,    0,    0,   68,    0,    0,   30,   43,    0,
-        0,    0,    0,    0,    0,    0,   26,    0,    0,    0,
-        0,    0,   13,   28,    0,   21,    0,    0,    0,    0,
-       79,    0,   66,   49,   62,   46,    0,    0,   97,    0,
-       69,    0,    0,    0,    0,    0,   47,    0,    0,    0,
-        0,    0,    0,   48,  101,    0,    0,   56,    0,   54,
-        0,    0,   85,    0,    0,    1,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    5,   15,    0,    0,    0,
-       37,    0,   20,    0,   95,    0,    0,   92,    0,    0,
-        0,   78,    0,    0,    0,    0,   57,   73,   71,    0,
-        0,    0,   84,    0,    0,    0,    0,   39,    0,    0,
-       31,   11,    9,   19,    0,    0,    0,    0,    0,    0,
-        0,  102,    0,    0,    0,    0,    0,    0,    0,    0,
-       83,    0,    0,   77,    0,   96,   70,   14,    0,   41,
-        0,    0,    0,    0,    0,    0,    0,   75,   98,   61,
-        0,  100,   44,   81,   82,    0,    0,    0,   18,    0,
-        0,    0,    0,    0,    0,    0,   63,    0,   99,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   34,
-       35,    0,    0,    0,    0,    0,   76,  103,    0,    0,
-        0,   24,    0,    0,    0,   22,    0,    0,   23,   29,
-       38,    0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       65,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  109,    0,    0,    0,    0,    0,   17,
+        0,    0,    0,    0,    0,   40,    0,    0,    0,    6,
+        0,    0,   42,    0,    0,    0,   33,    0,    0,    0,
+
+       36,   32,    0,    0,    0,   16,    0,    0,  104,    0,
+        0,    0,    0,    0,    0,    0,    0,   93,    0,    0,
+        0,    0,    0,    0,   88,   91,   51,    0,    0,    0,
+        0,    0,    0,   60,    0,    0,    0,    0,    0,   94,
+        0,    0,    0,    0,    0,    0,   55,    0,    0,    0,
+       45,    0,    0,    0,    0,    0,    0,    0,    0,   90,
+        0,    0,    0,   53,   12,    0,    0,    0,    0,    0,
+       25,    0,    0,    0,    0,    0,    0,   10,    0,    0,
+        0,    0,    8,    0,    0,    0,    7,    0,    0,    0,
+        0,    0,    0,   27,    0,    0,    0,   59,   86,    0,
+
+        0,   80,    0,    0,    0,    0,   74,    0,    0,    0,
+        0,    0,   89,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   50,    0,
+        0,    0,   58,    0,   64,    0,    0,    0,   52,    0,
+        0,   68,    0,    0,   30,   43,    0,    0,    0,    0,
+        0,    0,    0,   26,    0,    0,    0,    0,    0,   13,
+       28,    0,   21,    0,    0,    0,    0,   79,    0,   66,
+       49,   62,   46,    0,    0,   97,    0,   69,    0,    0,
+        0,    0,    0,   47,    0,    0,    0,    0,    0,    0,
+       48,  101,    0,    0,   56,    0,   54,    0,    0,   85,
+
+        0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    5,   15,    0,    0,    0,   37,    0,   20,
+        0,   95,    0,    0,   92,    0,    0,    0,   78,    0,
+        0,    0,    0,   57,   73,   71,    0,    0,    0,   84,
+        0,    0,    0,    0,   39,    0,    0,   31,   11,    9,
+       19,    0,    0,    0,    0,    0,    0,    0,  102,    0,
+        0,    0,    0,    0,    0,    0,    0,   83,    0,    0,
+       77,    0,   96,   70,   14,    0,   41,    0,    0,    0,
+        0,    0,    0,    0,   75,   98,   61,    0,  100,   44,
+       81,   82,    0,    0,    0,   18,    0,    0,    0,    0,
+
+        0,    0,    0,   63,    0,   99,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   34,   35,    0,    0,
+        0,    0,    0,   76,  103,    0,    0,    0,   24,    0,
+        0,    0,   22,    0,    0,   23,   29,   38,    0
     } ;
 
 static yyconst int yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    4,    1,    5,    6,    1,    7,    1,    8,    1,
-        1,    1,    9,    1,   10,   11,    1,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   13,    1,    1,
-        1,    1,    1,    1,   14,   15,   16,   17,   18,   19,
-       20,   21,   22,   23,   24,   25,   26,   27,   28,   29,
-        1,   30,   31,   32,   33,   34,   35,    1,   36,   37,
-       38,   39,   40,    1,   41,    1,   42,   43,   44,   45,
-
-       46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
-       56,   57,    1,   58,   59,   60,   61,   62,   63,    1,
-        1,    1,   11,   11,   11,    1,    1,    1,    1,    1,
+        1,    5,    1,    6,    7,    1,    8,    1,    9,    1,
+        1,    1,   10,    1,   11,   12,    1,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   14,    1,    1,
+        1,    1,    1,    1,   15,   16,   17,   18,   19,   20,
+       21,   22,   23,   24,   25,   26,   27,   28,   29,   30,
+        1,   31,   32,   33,   34,   35,   36,    1,   37,   38,
+       39,   40,   41,    1,   42,    1,   43,   44,   45,   46,
+
+       47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+       57,   58,    1,   59,   60,   61,   62,   63,   64,    1,
+        1,    1,   12,   12,   12,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -316,263 +316,267 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[64] =
+static yyconst int yy_meta[65] =
     {   0,
-        1,    2,    3,    2,    1,    2,    1,    1,    2,    2,
-        2,    2,    1,    2,    2,    2,    1,    1,    2,    1,
-        2,    2,    1,    2,    2,    1,    1,    1,    2,    1,
-        2,    2,    1,    1,    2,    1,    1,    1,    2,    1,
+        1,    2,    3,    2,    2,    1,    2,    1,    1,    2,
+        2,    2,    2,    1,    2,    2,    2,    1,    1,    2,
+        1,    2,    2,    1,    2,    2,    1,    1,    1,    2,
+        1,    2,    2,    1,    1,    2,    1,    1,    1,    2,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1
+        1,    1,    1,    1
     } ;
 
-static yyconst short int yy_base[638] =
+static yyconst short int yy_base[645] =
     {   0,
-        0,   58,   82,   61,  781,  782,   64,  782,  775,  740,
-      766,  765,  782,  751,  745,   44,   41,  747,   45,   61,
-      746,   60,   62,   67,  757,  743,   91,   90,   90,  756,
-       71,   71,   75,   86,   21,   60,   68,   84,   95,  102,
-       92,  103,  103,  111,  108,   69,   97,  723,  765,  141,
-      782,  163,  160,  168,  170,  172,  174,  181,  740,  183,
-      176,  187,  185,  190,  196,  192,  224,  213,  761,  782,
-      757,  756,  751,  730,  747,  746,  180,  731,  744,  737,
-      742,  722,  726,  728,  730,  734,  716,  712,  717,  720,
-      720,  192,  722,  201,  717,  723,  714,  714,  726,  724,
-
-      713,  723,  711,  212,  184,  182,  692,  681,  691,  686,
-      671,  674,  671,  673,  685,  670,  126,  667,  661,  664,
-      663,  673,  667,  666,  167,  659,  654,  190,  656,  671,
-      204,  656,  658,  651,  212,  660,  664,  667,  666,  652,
-      658,  650,  206,  643,  646,  641,  197,  782,  642,  697,
-      782,  232,  782,  271,  274,  276,  278,  280,  248,  282,
-      284,  287,  289,  295,  782,    0,  782,  691,  690,  683,
-      669,  668,  662,  663,  662,  656,  660,  669,  661,  661,
-      669,  653,  667,  665,  664,  650,  649,  661,  664,  636,
-      658,  650,  642,  656,  650,  645,  646,  647,  638,  649,
-
-      637,  640,  267,  616,  621,  606,  615,  608,  600,  598,
-      605,  601,  595,  598,  594,  599,  591,  591,  594,  588,
-      587,  588,  586,  591,  596,  597,  581,  782,  580,  581,
-      782,  586,  591,  580,  592,  582,  574,  572,  578,  574,
-      575,  249,  568,  581,  580,  570,  580,  579,  577,  572,
-      576,  561,  568,  557,  782,  570,  554,  564,  563,  552,
-      608,  297,  302,  584,  306,  310,  313,  782,  579,  592,
-      591,  592,  583,  782,  589,  589,  571,  569,  582,  782,
-      558,  580,  572,  561,  581,  562,  782,  564,  289,  576,
-      782,  577,  562,  561,  782,  782,  558,  559,  557,  782,
-
-      563,  313,  782,  529,  525,  524,  535,  534,  520,  522,
-      531,  782,  530,  516,  528,  523,  530,  525,  782,  782,
-      782,  528,  523,  522,  557,  519,  515,  782,  518,  517,
-      520,  506,  509,  782,  499,  500,  507,  500,  513,  498,
-      782,  504,  499,  507,  782,  504,  503,  492,  487,  486,
-      485,  489,  494,  782,  484,  488,  480,  782,  782,  319,
-      525,  321,  325,  782,  517,  519,  514,  518,  504,  499,
-      782,  518,  499,  504,  499,  782,  514,  507,  508,  782,
-      503,  510,  491,  497,  495,  493,  782,  491,  490,  498,
-      782,  782,  470,  458,  782,  468,  459,  457,  453,  782,
-
-      465,  461,  458,  462,  444,  782,  460,  272,  451,  450,
-      454,  456,  440,  440,  452,  451,  454,  447,  436,  436,
-      450,  782,  445,  430,  442,  782,  434,  782,  426,  427,
-      439,  782,  425,  430,  782,  453,  331,  782,  782,  454,
-      452,  457,  456,  455,  446,  461,  782,  449,  455,  442,
-      451,  439,  782,  782,  428,  782,  442,  437,  430,  423,
-      782,  419,  782,  782,  782,  782,  408,  407,  782,  415,
-      782,  414,  409,  402,  411,  406,  782,  394,  394,  409,
-      394,  398,  395,  782,  782,  396,  391,  782,  386,  782,
-      392,  395,  782,  398,  397,  782,  333,  424,  411,  423,
-
-      412,  411,  401,  407,  411,  782,  782,  414,  402,  315,
-      782,  400,  782,  378,  782,  384,  383,  782,  381,  379,
-      370,  782,  369,  366,  377,  362,  782,  782,  782,  371,
-      364,  366,  782,  370,  372,  371,  385,  782,  394,  393,
-      782,  782,  782,  782,  398,  376,  382,  381,  393,  382,
-      365,  782,  360,  359,  343,  353,  343,  345,  353,  340,
-      782,  349,  338,  782,  346,  782,  782,  782,  376,  782,
-      378,  378,  361,  363,  366,  374,  357,  782,  782,  782,
-      326,  782,  782,  782,  782,  330,  324,  323,  782,  357,
-      343,  337,  335,  347,  348,  345,  782,  316,  782,  315,
-
-      342,  334,  336,  325,  340,  337,  334,  307,  303,  782,
-      782,  329,  327,  310,  309,  317,  782,  782,  309,  289,
-      271,  782,  219,  191,  169,  782,   89,   68,  782,  782,
-      782,  782,  369,  372,  374,  376,  379
+        0,   58,   83,   62,  796,  797,   65,  797,  792,  788,
+      753,  779,  778,  797,  764,  758,   44,   43,  760,   42,
+       62,  759,   60,   63,   68,  770,  756,   92,   91,   91,
+      769,   71,   72,   76,   87,   55,   84,   77,   61,   96,
+      103,   95,  104,  103,  108,  111,   99,  107,  736,  779,
+      151,  797,  778,  169,  173,  179,  182,  185,  194,  197,
+      752,  180,  185,  193,  181,  194,  202,  214,  241,   75,
+      797,  773,  797,  769,  768,  763,  742,  759,  758,  136,
+      743,  756,  749,  754,  734,  738,  740,  742,  746,  728,
+      724,  729,  732,  732,  151,  734,  162,  729,  735,  726,
+
+      726,  738,  736,  725,  735,  723,  225,  224,  143,  704,
+      693,  703,  698,  683,  686,  683,  685,  697,  682,  162,
+      679,  673,  676,  675,  685,  679,  678,  180,  671,  666,
+      172,  668,  683,  192,  668,  670,  663,  229,  672,  676,
+      679,  678,  664,  670,  662,  203,  655,  658,  653,  235,
+      797,  654,  710,  797,  212,  797,  797,  709,  274,  264,
+      265,  269,  277,  247,  282,  283,  285,  293,  294,  797,
+      708,    0,  797,  701,  700,  693,  679,  678,  672,  673,
+      672,  666,  670,  679,  671,  671,  679,  663,  677,  675,
+      674,  660,  659,  671,  674,  646,  668,  660,  652,  666,
+
+      660,  655,  656,  657,  648,  659,  647,  650,  254,  626,
+      631,  616,  625,  618,  610,  608,  615,  611,  605,  608,
+      604,  609,  601,  601,  604,  598,  597,  598,  596,  601,
+      606,  607,  591,  797,  590,  591,  797,  596,  601,  590,
+      602,  592,  584,  582,  588,  584,  585,  272,  578,  591,
+      590,  580,  590,  589,  587,  582,  586,  571,  578,  567,
+      797,  580,  564,  574,  573,  562,  266,  303,  299,  595,
+      308,  311,  309,  797,  590,  603,  602,  603,  594,  797,
+      600,  600,  582,  580,  593,  797,  569,  591,  583,  572,
+      592,  573,  797,  575,  306,  587,  797,  588,  573,  572,
+
+      797,  797,  569,  570,  568,  797,  574,  304,  797,  540,
+      536,  535,  546,  545,  531,  533,  542,  797,  541,  527,
+      539,  534,  541,  536,  797,  797,  797,  539,  534,  533,
+      568,  530,  526,  797,  529,  528,  531,  517,  520,  797,
+      510,  511,  518,  511,  524,  509,  797,  515,  510,  518,
+      797,  515,  514,  503,  498,  497,  496,  500,  505,  797,
+      495,  499,  491,  797,  797,  548,  317,  535,  320,  321,
+      797,  527,  529,  524,  528,  514,  509,  797,  528,  509,
+      514,  509,  797,  524,  517,  518,  797,  513,  520,  501,
+      507,  505,  503,  797,  501,  500,  508,  797,  797,  480,
+
+      468,  797,  478,  469,  467,  463,  797,  475,  471,  468,
+      472,  454,  797,  470,  293,  461,  460,  464,  466,  450,
+      450,  462,  461,  464,  457,  446,  446,  460,  797,  455,
+      440,  452,  797,  444,  797,  436,  437,  449,  797,  435,
+      440,  797,  463,  333,  797,  797,  464,  462,  467,  466,
+      465,  456,  471,  797,  459,  465,  452,  461,  449,  797,
+      797,  438,  797,  452,  447,  440,  433,  797,  429,  797,
+      797,  797,  797,  418,  417,  797,  425,  797,  424,  419,
+      412,  421,  416,  797,  404,  404,  419,  404,  408,  405,
+      797,  797,  406,  401,  797,  396,  797,  402,  405,  797,
+
+      408,  407,  797,  332,  434,  421,  433,  422,  421,  411,
+      417,  421,  797,  797,  424,  412,  341,  797,  410,  797,
+      388,  797,  394,  393,  797,  391,  389,  380,  797,  379,
+      376,  387,  372,  797,  797,  797,  381,  374,  376,  797,
+      380,  382,  381,  395,  797,  404,  403,  797,  797,  797,
+      797,  408,  386,  392,  391,  403,  392,  375,  797,  370,
+      369,  353,  363,  353,  355,  363,  350,  797,  359,  348,
+      797,  356,  797,  797,  797,  386,  797,  388,  388,  371,
+      373,  376,  384,  367,  797,  797,  797,  336,  797,  797,
+      797,  797,  340,  334,  333,  797,  367,  366,  360,  358,
+
+      370,  371,  368,  797,  339,  797,  338,  365,  341,  343,
+      332,  347,  344,  339,  313,  311,  797,  797,  338,  322,
+      293,  278,  277,  797,  797,  253,  224,  209,  797,  161,
+      138,  123,  797,  101,   69,  797,  797,  797,  797,  371,
+      374,  376,  378,  381
     } ;
 
-static yyconst short int yy_def[638] =
+static yyconst short int yy_def[645] =
     {   0,
-      632,    1,    1,    3,  632,  632,  632,  632,  633,  634,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  635,  632,
-      632,  636,  636,  636,  636,  636,  636,  636,  632,  636,
-      636,  636,  636,  636,  636,  636,  635,  632,  633,  632,
-      632,  637,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  635,
-      632,  632,  632,  636,  636,  636,  636,  636,  632,  636,
-      636,  636,  636,  636,  632,   67,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  636,  636,  632,  636,  636,  636,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  636,
-      632,  636,  636,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  636,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  636,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,    0,  632,  632,  632,  632,  632
+      639,    1,    1,    3,  639,  639,  639,  639,  639,  640,
+      641,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  642,
+      639,  639,  639,  643,  643,  643,  643,  643,  643,  643,
+      639,   60,   60,   60,   60,   60,   60,   60,  642,  639,
+      639,  640,  639,  639,  644,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  642,  639,  639,  639,  639,  639,   60,   60,
+       60,   60,   60,  639,   60,   60,   60,   60,   60,  639,
+      642,   69,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,   60,   60,  639,
+       60,   60,   60,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,   60,  639,   60,   60,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,   60,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+
+      639,  639,  639,   60,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,    0,  639,
+      639,  639,  639,  639
     } ;
 
-static yyconst short int yy_nxt[846] =
+static yyconst short int yy_nxt[862] =
     {   0,
-        6,    7,    8,    7,    9,    6,    6,   10,   11,   11,
-        6,   12,   13,   14,   15,   16,   17,   18,   19,   20,
-        6,   21,    6,    6,   22,   23,   24,   25,   26,   27,
-       28,   29,    6,    6,   30,    6,    6,   31,    6,    6,
-        6,   32,   33,   34,   35,   36,   37,    6,   38,    6,
-        6,    6,   39,   40,   41,   42,   43,   44,   45,   46,
-       47,    6,   48,   49,   76,   68,   67,   68,   78,   81,
-       79,   77,   82,   86,  104,   88,  119,   87,   83,   89,
-       91,  120,  105,   50,   51,   52,   50,   53,   84,   90,
-       54,   54,   53,   55,   92,   56,   57,   58,  631,   59,
-
-       60,  121,   53,   61,   95,   53,   62,  101,   96,  123,
-       63,   98,   64,   65,  122,  630,   66,  124,   97,  102,
-       53,   99,  100,  106,  145,  125,  146,  110,  107,  108,
-      111,  114,  112,  109,  115,  113,  127,  134,  116,  126,
-      128,  117,  131,  132,  129,  136,  118,  135,  138,  142,
-      130,  147,  140,  148,  152,  139,  143,  133,   89,  137,
-      141,  632,  153,  144,   68,  153,  154,  216,   90,  632,
-      153,  632,  153,  632,  153,  632,  153,  632,  153,  156,
-      217,  156,  632,  153,  632,  153,  632,  153,  632,  153,
-      203,  632,  153,  632,  153,  105,  157,  632,  153,  629,
-
-      161,  158,   85,   75,   87,  164,  173,  160,   77,  174,
-       82,  162,   94,  101,   68,  104,   68,  189,  190,  225,
-      628,  163,  100,  105,  226,  102,  165,  166,  192,  166,
-      193,  204,  166,  166,  166,  166,  229,  166,  166,  166,
-      257,  205,  166,  258,  166,  166,  627,  166,  166,  259,
-      233,  230,  166,  239,  166,  166,  240,  234,  166,  235,
-      261,  252,  166,  253,  264,  241,  242,  177,  185,  243,
-      302,  244,   68,  153,  154,  632,  153,  632,  153,  632,
-      153,  632,  153,  632,  153,  632,  153,  156,  632,  153,
-      632,  153,  340,  263,  341,  265,  632,  153,  632,  153,
-
-      183,  626,  266,  632,  153,  381,  303,  632,  153,  262,
-      360,  632,  153,  197,  632,  153,  302,  382,  625,  267,
-      632,  153,  632,  153,  472,  277,  632,  153,  271,  473,
-      547,  362,  632,  153,  632,  153,  624,  363,  623,  622,
-      548,  621,  549,  550,  620,  619,  437,  618,  364,  497,
-      387,  617,  303,  616,  615,  614,  613,  612,  611,  610,
-      609,  608,  607,  606,  605,  604,  603,  602,  513,   69,
-       69,   69,   71,   71,  150,  150,  150,  155,  155,  168,
-      168,  601,  600,  599,  598,  597,  596,  595,  594,  593,
-      592,  591,  590,  589,  588,  587,  586,  585,  584,  583,
-
-      582,  581,  580,  579,  578,  577,  576,  575,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
-      562,  561,  560,  559,  558,  557,  556,  555,  554,  553,
-      552,  551,  546,  545,  544,  543,  542,  541,  540,  539,
-      538,  537,  536,  535,  534,  533,  532,  531,  530,  529,
-      528,  527,  526,  525,  524,  523,  522,  521,  520,  519,
-      518,  517,  516,  515,  514,  513,  512,  511,  510,  509,
-      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
-      498,  496,  495,  494,  493,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-
-      477,  476,  475,  474,  471,  470,  469,  468,  467,  466,
-      465,  464,  463,  462,  461,  460,  459,  458,  457,  456,
-      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
-      445,  444,  443,  442,  441,  440,  439,  438,  436,  435,
-      434,  433,  432,  431,  430,  429,  428,  427,  426,  425,
-      424,  423,  422,  421,  420,  419,  418,  417,  416,  415,
-      414,  413,  412,  411,  410,  409,  408,  407,  406,  405,
-      404,  403,  402,  401,  400,  399,  398,  397,  396,  395,
-      394,  393,  392,  391,  390,  389,  388,  387,  386,  385,
-      384,  383,  380,  379,  378,  377,  376,  375,  374,  373,
-
-      372,  371,  370,  369,  368,  367,  366,  365,  364,  361,
-      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  344,  343,  342,  339,  338,
-      337,  336,  335,  334,  333,  332,  331,  330,  329,  328,
-      327,  326,  325,  324,  323,  322,  321,  320,  319,  318,
-      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
-      307,  306,  305,  304,  301,  300,  299,  298,  297,  296,
-      295,  294,  293,  292,  291,  290,  289,  288,  287,  286,
-      285,  284,  283,  282,  281,  280,  279,  278,  277,  276,
-      275,  274,  273,  272,  271,  270,  269,  268,  268,  151,
-
-      260,  256,  255,  254,  251,  250,  249,  248,  247,  246,
-      245,  238,  237,  236,  232,  231,  228,  227,  224,  223,
-      222,  221,  220,  219,  218,  215,  214,  213,  212,  211,
-      210,  209,  208,  207,  206,  202,  201,  200,  199,  198,
-      197,  196,  195,  194,  191,  188,  187,  186,  185,  184,
-      183,  182,  181,  180,  179,  178,  177,  176,  175,  172,
-      171,  170,   73,  169,  167,   70,  159,  151,  149,  103,
-       94,   93,   85,   80,   75,   74,   73,   73,   72,   70,
-      632,    5,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632
+        6,    7,    8,    9,    7,   10,    6,    6,   11,   12,
+       12,    6,   13,   14,   15,   16,   17,   18,   19,   20,
+       21,    6,   22,    6,    6,   23,   24,   25,   26,   27,
+       28,   29,   30,    6,    6,   31,    6,    6,   32,    6,
+        6,    6,   33,   34,   35,   36,   37,   38,    6,   39,
+        6,    6,    6,   40,   41,   42,   43,   44,   45,   46,
+       47,   48,    6,   49,   50,   79,   70,   84,   69,   70,
+       85,   81,   80,   82,   89,  107,   70,   91,   90,   70,
+       86,   92,   94,  108,   51,   52,   53,   54,   51,   55,
+       87,   93,   56,   56,   55,   57,   95,   58,   59,   60,
+
+      638,   61,   62,  128,   55,   63,   98,   55,   64,  104,
+       99,  122,   65,  101,   66,   67,  123,  129,   68,  126,
+      100,  105,   55,  102,  103,  109,  124,  127,  637,  113,
+      110,  111,  114,  117,  115,  112,  118,  116,  130,  125,
+      119,  137,  131,  120,  134,  135,  132,  139,  121,  141,
+      143,  138,  133,  145,  636,  148,  142,  149,  144,  136,
+      146,  140,  150,  179,  151,  155,  180,  147,  635,   92,
+       70,  157,  158,  159,  639,  157,  158,  195,  196,   93,
+      639,  157,  158,  639,  157,  158,  639,  157,  158,  634,
+      198,  161,  199,  210,  161,  639,  157,  158,  639,  157,
+
+      158,  160,  160,  211,  222,  165,  160,  166,   85,   97,
+      162,   90,   88,  639,  160,  160,  167,  223,  163,  235,
+      104,  639,  639,  160,   78,   80,  168,  103,  169,  107,
+      639,  209,  105,  231,  236,  160,  108,  108,  232,  239,
+      633,  267,  639,  170,  171,  172,  240,  172,  241,  191,
+      172,  172,  172,  172,  632,  172,  172,  172,  308,  258,
+      172,  259,  172,  172,  270,  172,  172,  183,  365,  366,
+      172,  245,  172,  172,  246,   70,  172,  161,  159,  263,
+      172,  631,  264,  247,  248,  160,  160,  249,  265,  250,
+      160,  269,  639,  639,  309,  160,  271,  639,  160,  630,
+
+      189,  268,  639,  160,  160,  639,  160,  272,  308,  629,
+      639,  639,  203,  639,  160,  160,  346,  367,  347,  273,
+      160,  639,  639,  388,  160,  628,  277,  639,  283,  160,
+      160,  639,  160,  369,  370,  389,  639,  639,  160,  639,
+      627,  160,  160,  444,  309,  639,  479,  371,  639,  639,
+      394,  480,  504,  160,  160,  626,  625,  554,  624,  623,
+      639,  639,  622,  621,  620,  619,  618,  555,  520,  556,
+      557,   72,   72,   72,   74,   74,  153,  153,  153,  160,
+      160,  174,  174,  617,  616,  615,  614,  613,  612,  611,
+      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
+
+      600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
+      570,  569,  568,  567,  566,  565,  564,  563,  562,  561,
+      560,  559,  558,  553,  552,  551,  550,  549,  548,  547,
+      546,  545,  544,  543,  542,  541,  540,  539,  538,  537,
+      536,  535,  534,  533,  532,  531,  530,  529,  528,  527,
+      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
+      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  503,  502,  501,  500,  499,  498,  497,  496,
+
+      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
+      485,  484,  483,  482,  481,  478,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
+      463,  462,  461,  460,  459,  458,  457,  456,  455,  454,
+      453,  452,  451,  450,  449,  448,  447,  446,  445,  443,
+      365,  442,  441,  440,  439,  438,  437,  436,  435,  434,
+      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
+      423,  422,  421,  420,  419,  418,  417,  416,  415,  414,
+      413,  412,  411,  410,  409,  408,  407,  406,  405,  404,
+      403,  402,  401,  400,  399,  398,  397,  396,  395,  394,
+
+      393,  392,  391,  390,  387,  386,  385,  384,  383,  382,
+      381,  380,  379,  378,  377,  376,  375,  374,  373,  372,
+      371,  368,  364,  363,  362,  361,  360,  359,  358,  357,
+      356,  355,  354,  353,  352,  351,  350,  349,  348,  345,
+      344,  343,  342,  341,  340,  339,  338,  337,  336,  335,
+      334,  333,  332,  331,  330,  329,  328,  327,  326,  325,
+      324,  323,  322,  321,  320,  319,  318,  317,  316,  315,
+      314,  313,  312,  311,  310,  307,  306,  305,  304,  303,
+      302,  301,  300,  299,  298,  297,  296,  295,  294,  293,
+      292,  291,  290,  289,  288,  287,  286,  285,  284,  283,
+
+      282,  281,  280,  279,  278,  277,  276,  275,  274,  274,
+      170,  157,  154,  266,  262,  261,  260,  257,  256,  255,
+      254,  253,  252,  251,  244,  243,  242,  238,  237,  234,
+      233,  230,  229,  228,  227,  226,  225,  224,  221,  220,
+      219,  218,  217,  216,  215,  214,  213,  212,  208,  207,
+      206,  205,  204,  203,  202,  201,  200,  197,  194,  193,
+      192,  191,  190,  189,  188,  187,  186,  185,  184,  183,
+      182,  181,  178,  177,  176,   76,  175,  173,   73,  164,
+      156,  154,  152,  106,   97,   96,   88,   83,   78,   77,
+       76,   76,   75,   73,   71,  639,    5,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639
     } ;
 
-static yyconst short int yy_chk[846] =
+static yyconst short int yy_chk[862] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -580,93 +584,95 @@ static yyconst short int yy_chk[846] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    2,   16,    7,    4,    7,   17,   19,
-       17,   16,   19,   22,   31,   23,   35,   22,   20,   23,
-       24,   35,   31,    2,    3,    3,    4,    3,   20,   23,
-        3,    3,    3,    3,   24,    3,    3,    3,  628,    3,
-
-        3,   36,    3,    3,   27,    3,    3,   29,   27,   37,
-        3,   28,    3,    3,   36,  627,    3,   37,   27,   29,
-        3,   28,   28,   32,   46,   38,   46,   33,   32,   32,
-       33,   34,   33,   32,   34,   33,   39,   41,   34,   38,
-       39,   34,   40,   40,   39,   42,   34,   41,   43,   45,
-       39,   47,   44,   47,   50,   43,   45,   40,   50,   42,
-       44,   53,   53,   45,   52,   52,   52,  117,   50,   54,
-       54,   55,   55,   56,   56,   57,   57,   61,   61,   54,
-      117,   55,   58,   58,   60,   60,   63,   63,   62,   62,
-      105,   64,   64,   66,   66,  105,   56,   65,   65,  625,
-
-       62,   58,   61,   57,   62,   66,   77,   60,   58,   77,
-       60,   64,   63,   65,   68,  104,   68,   92,   92,  125,
-      624,   64,   64,  104,  125,   65,   67,   67,   94,   67,
-       94,  106,   67,   67,   67,   67,  128,   67,   67,   67,
-      147,  106,   67,  147,   67,   67,  623,   67,   67,  147,
-      131,  128,   67,  135,   67,   67,  135,  131,   67,  131,
-      152,  143,   67,  143,  159,  135,  135,  159,  152,  135,
-      203,  135,  154,  154,  154,  155,  155,  156,  156,  157,
-      157,  158,  158,  160,  160,  161,  161,  156,  162,  162,
-      163,  163,  242,  158,  242,  160,  164,  164,  262,  262,
-
-      161,  621,  163,  263,  263,  289,  203,  265,  265,  157,
-      262,  266,  266,  162,  267,  267,  302,  289,  620,  164,
-      360,  360,  362,  362,  408,  265,  363,  363,  263,  408,
-      510,  266,  437,  437,  497,  497,  619,  267,  616,  615,
-      510,  614,  510,  510,  613,  612,  363,  609,  360,  437,
-      362,  608,  302,  607,  606,  605,  604,  603,  602,  601,
-      600,  598,  596,  595,  594,  593,  592,  591,  497,  633,
-      633,  633,  634,  634,  635,  635,  635,  636,  636,  637,
-      637,  590,  588,  587,  586,  581,  577,  576,  575,  574,
-      573,  572,  571,  569,  565,  563,  562,  560,  559,  558,
-
-      557,  556,  555,  554,  553,  551,  550,  549,  548,  547,
-      546,  545,  540,  539,  537,  536,  535,  534,  532,  531,
-      530,  526,  525,  524,  523,  521,  520,  519,  517,  516,
-      514,  512,  509,  508,  505,  504,  503,  502,  501,  500,
-      499,  498,  495,  494,  492,  491,  489,  487,  486,  483,
-      482,  481,  480,  479,  478,  476,  475,  474,  473,  472,
-      470,  468,  467,  462,  460,  459,  458,  457,  455,  452,
-      451,  450,  449,  448,  446,  445,  444,  443,  442,  441,
-      440,  436,  434,  433,  431,  430,  429,  427,  425,  424,
-      423,  421,  420,  419,  418,  417,  416,  415,  414,  413,
-
-      412,  411,  410,  409,  407,  405,  404,  403,  402,  401,
-      399,  398,  397,  396,  394,  393,  390,  389,  388,  386,
-      385,  384,  383,  382,  381,  379,  378,  377,  375,  374,
-      373,  372,  370,  369,  368,  367,  366,  365,  361,  357,
-      356,  355,  353,  352,  351,  350,  349,  348,  347,  346,
-      344,  343,  342,  340,  339,  338,  337,  336,  335,  333,
-      332,  331,  330,  329,  327,  326,  325,  324,  323,  322,
-      318,  317,  316,  315,  314,  313,  311,  310,  309,  308,
-      307,  306,  305,  304,  301,  299,  298,  297,  294,  293,
-      292,  290,  288,  286,  285,  284,  283,  282,  281,  279,
-
-      278,  277,  276,  275,  273,  272,  271,  270,  269,  264,
-      261,  260,  259,  258,  257,  256,  254,  253,  252,  251,
-      250,  249,  248,  247,  246,  245,  244,  243,  241,  240,
-      239,  238,  237,  236,  235,  234,  233,  232,  230,  229,
-      227,  226,  225,  224,  223,  222,  221,  220,  219,  218,
-      217,  216,  215,  214,  213,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  202,  201,  200,  199,  198,  197,
-      196,  195,  194,  193,  192,  191,  190,  189,  188,  187,
-      186,  185,  184,  183,  182,  181,  180,  179,  178,  177,
-      176,  175,  174,  173,  172,  171,  170,  169,  168,  150,
-
-      149,  146,  145,  144,  142,  141,  140,  139,  138,  137,
-      136,  134,  133,  132,  130,  129,  127,  126,  124,  123,
-      122,  121,  120,  119,  118,  116,  115,  114,  113,  112,
-      111,  110,  109,  108,  107,  103,  102,  101,  100,   99,
-       98,   97,   96,   95,   93,   91,   90,   89,   88,   87,
-       86,   85,   84,   83,   82,   81,   80,   79,   78,   76,
-       75,   74,   73,   72,   71,   69,   59,   49,   48,   30,
-       26,   25,   21,   18,   15,   14,   12,   11,   10,    9,
-        5,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632,  632,  632,  632,  632,  632,
-      632,  632,  632,  632,  632
+        1,    1,    1,    1,    2,   17,    7,   20,    4,    7,
+       20,   18,   17,   18,   23,   32,   70,   24,   23,   70,
+       21,   24,   25,   32,    2,    3,    3,    3,    4,    3,
+       21,   24,    3,    3,    3,    3,   25,    3,    3,    3,
+
+      635,    3,    3,   39,    3,    3,   28,    3,    3,   30,
+       28,   36,    3,   29,    3,    3,   36,   39,    3,   38,
+       28,   30,    3,   29,   29,   33,   37,   38,  634,   34,
+       33,   33,   34,   35,   34,   33,   35,   34,   40,   37,
+       35,   42,   40,   35,   41,   41,   40,   43,   35,   44,
+       45,   42,   40,   46,  632,   47,   44,   47,   45,   41,
+       46,   43,   48,   80,   48,   51,   80,   46,  631,   51,
+       54,   54,   54,   54,   55,   55,   55,   95,   95,   51,
+       56,   56,   56,   57,   57,   57,   58,   58,   58,  630,
+       97,   56,   97,  109,   57,   59,   59,   59,   60,   60,
+
+       60,   62,   65,  109,  120,   62,   63,   64,   62,   65,
+       58,   64,   63,   63,   64,   66,   66,  120,   60,  131,
+       67,   64,   66,   67,   59,   60,   66,   66,   68,  107,
+       67,  108,   67,  128,  131,   68,  108,  107,  128,  134,
+      628,  155,   68,   69,   69,   69,  134,   69,  134,  155,
+       69,   69,   69,   69,  627,   69,   69,   69,  209,  146,
+       69,  146,   69,   69,  164,   69,   69,  164,  267,  267,
+       69,  138,   69,   69,  138,  159,   69,  161,  159,  150,
+       69,  626,  150,  138,  138,  160,  161,  138,  150,  138,
+      162,  163,  160,  161,  209,  159,  165,  162,  163,  623,
+
+      166,  162,  159,  165,  166,  163,  167,  168,  308,  622,
+      165,  166,  167,  167,  168,  169,  248,  268,  248,  169,
+      269,  168,  169,  295,  268,  621,  269,  269,  271,  271,
+      273,  268,  272,  272,  273,  295,  271,  273,  367,  272,
+      620,  369,  370,  370,  308,  367,  415,  367,  369,  370,
+      369,  415,  444,  504,  444,  619,  616,  517,  615,  614,
+      504,  444,  613,  612,  611,  610,  609,  517,  504,  517,
+      517,  640,  640,  640,  641,  641,  642,  642,  642,  643,
+      643,  644,  644,  608,  607,  605,  603,  602,  601,  600,
+      599,  598,  597,  595,  594,  593,  588,  584,  583,  582,
+
+      581,  580,  579,  578,  576,  572,  570,  569,  567,  566,
+      565,  564,  563,  562,  561,  560,  558,  557,  556,  555,
+      554,  553,  552,  547,  546,  544,  543,  542,  541,  539,
+      538,  537,  533,  532,  531,  530,  528,  527,  526,  524,
+      523,  521,  519,  516,  515,  512,  511,  510,  509,  508,
+      507,  506,  505,  502,  501,  499,  498,  496,  494,  493,
+      490,  489,  488,  487,  486,  485,  483,  482,  481,  480,
+      479,  477,  475,  474,  469,  467,  466,  465,  464,  462,
+      459,  458,  457,  456,  455,  453,  452,  451,  450,  449,
+      448,  447,  443,  441,  440,  438,  437,  436,  434,  432,
+
+      431,  430,  428,  427,  426,  425,  424,  423,  422,  421,
+      420,  419,  418,  417,  416,  414,  412,  411,  410,  409,
+      408,  406,  405,  404,  403,  401,  400,  397,  396,  395,
+      393,  392,  391,  390,  389,  388,  386,  385,  384,  382,
+      381,  380,  379,  377,  376,  375,  374,  373,  372,  368,
+      366,  363,  362,  361,  359,  358,  357,  356,  355,  354,
+      353,  352,  350,  349,  348,  346,  345,  344,  343,  342,
+      341,  339,  338,  337,  336,  335,  333,  332,  331,  330,
+      329,  328,  324,  323,  322,  321,  320,  319,  317,  316,
+      315,  314,  313,  312,  311,  310,  307,  305,  304,  303,
+
+      300,  299,  298,  296,  294,  292,  291,  290,  289,  288,
+      287,  285,  284,  283,  282,  281,  279,  278,  277,  276,
+      275,  270,  266,  265,  264,  263,  262,  260,  259,  258,
+      257,  256,  255,  254,  253,  252,  251,  250,  249,  247,
+      246,  245,  244,  243,  242,  241,  240,  239,  238,  236,
+      235,  233,  232,  231,  230,  229,  228,  227,  226,  225,
+      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
+      214,  213,  212,  211,  210,  208,  207,  206,  205,  204,
+      203,  202,  201,  200,  199,  198,  197,  196,  195,  194,
+      193,  192,  191,  190,  189,  188,  187,  186,  185,  184,
+
+      183,  182,  181,  180,  179,  178,  177,  176,  175,  174,
+      171,  158,  153,  152,  149,  148,  147,  145,  144,  143,
+      142,  141,  140,  139,  137,  136,  135,  133,  132,  130,
+      129,  127,  126,  125,  124,  123,  122,  121,  119,  118,
+      117,  116,  115,  114,  113,  112,  111,  110,  106,  105,
+      104,  103,  102,  101,  100,   99,   98,   96,   94,   93,
+       92,   91,   90,   89,   88,   87,   86,   85,   84,   83,
+       82,   81,   79,   78,   77,   76,   75,   74,   72,   61,
+       53,   50,   49,   31,   27,   26,   22,   19,   16,   15,
+       13,   12,   11,   10,    9,    5,  639,  639,  639,  639,
+
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
+      639
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -680,7 +686,7 @@ static char *yy_last_accepting_cpos;
 #define YY_MORE_ADJ 0
 char *yytext;
 #define INITIAL 0
-/*     SCCS Id: @(#)lev_lex.c  3.4     2000/12/22      */
+/*     SCCS Id: @(#)lev_lex.c  3.4     2002/03/27      */
 /*     Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -909,13 +915,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 633 )
+                               if ( yy_current_state >= 640 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 782 );
+               while ( yy_base[yy_current_state] != 797 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -955,10 +961,14 @@ YY_RULE_SETUP
 case 2:
 YY_RULE_SETUP
 {
+                 int len = yyleng;
+                 /* convert \r\n to \n */
+                 if (len >= 2 && yytext[len - 2] == '\r') len -= 1;
                  line_number++;
-                 (void) strncpy(map + map_cnt, yytext, yyleng);
-                 map_cnt += yyleng;
-                 map[map_cnt] = 0;
+                 (void) strncpy(map + map_cnt, yytext, len);
+                 map_cnt += len;
+                 map[map_cnt - 1] = '\n';
+                 map[map_cnt] = '\0';
                }
        YY_BREAK
 case 3:
@@ -1695,7 +1705,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 633 )
+                       if ( yy_current_state >= 640 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1726,11 +1736,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 633 )
+               if ( yy_current_state >= 640 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 632);
+       yy_is_jam = (yy_current_state == 639);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
index 429e8b876c7d12c1687f7d57a2be9b7b7275c4d5..110b51a5239ae19dd290b29c1b7c2f02e5289604 100644 (file)
@@ -1,5 +1,5 @@
 %{
-/*     SCCS Id: @(#)dgn_lex.c  3.4     1996/03/02      */
+/*     SCCS Id: @(#)dgn_lex.c  3.4     2002/03/27      */
 /*     Copyright (c) 1989 by Jean-Christophe Collet */
 /*     Copyright (c) 1990 by M. Stephenson          */
 /* NetHack may be freely redistributed.  See license for details. */
@@ -111,7 +111,7 @@ RNDCHLEVEL  return(RNDCHLEVEL);
                  Strcpy(yylval.str, yytext+1); /* Discard the first \" */
                  return(STRING); }
 ^#.*\n         { line_number++; }
-\n             { line_number++; }
+\r?\n          { line_number++; }
 [ \t]+         ;       /* skip trailing tabs & spaces */
 .              { return yytext[0]; }
 %%
index c4e47a41ca0619cca6b00dc41d3165227c08d11e..1e7c3ae8c96ba810a463a79ae3365dafc06dfb3c 100644 (file)
@@ -1,5 +1,5 @@
 %{
-/*     SCCS Id: @(#)lev_lex.c  3.4     2000/12/22      */
+/*     SCCS Id: @(#)lev_lex.c  3.4     2002/03/27      */
 /*     Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -88,11 +88,15 @@ static int map_cnt = 0;
                  map_cnt = 0;
                  return MAP_ID;
                }
-<MAPC>[-|}{+ABCISHKPLWTF\\#. 0123456789]*\n    {
+<MAPC>[-|}{+ABCISHKPLWTF\\#. 0123456789]*\r?\n {
+                 int len = yyleng;
+                 /* convert \r\n to \n */
+                 if (len >= 2 && yytext[len - 2] == '\r') len -= 1;
                  line_number++;
-                 (void) strncpy(map + map_cnt, yytext, yyleng);
-                 map_cnt += yyleng;
-                 map[map_cnt] = 0;
+                 (void) strncpy(map + map_cnt, yytext, len);
+                 map_cnt += len;
+                 map[map_cnt - 1] = '\n';
+                 map[map_cnt] = '\0';
                }
 ^#.*\n         { line_number++; }
 :              { colon_line_number = line_number; return ':'; }
@@ -103,7 +107,7 @@ LEVEL               return LEVEL_ID;
 INIT_MAP       return LEV_INIT_ID;
 FLAGS          return FLAGS_ID;
 GEOMETRY       return GEOMETRY_ID;
-^MAP\n         { BEGIN(MAPC); line_number++; }
+^MAP\r?\n              { BEGIN(MAPC); line_number++; }
 OBJECT         return OBJECT_ID;
 CONTAINER      return COBJECT_ID;
 MONSTER                return MONSTER_ID;
@@ -201,7 +205,7 @@ shortsighted        { yylval.i=SHORTSIGHTED; return FLAG_TYPE; }
                  yylval.map = (char *) alloc(strlen(yytext+1)+1);
                  Strcpy(yylval.map, yytext+1); /* Discard the first \" */
                  return STRING; }
-\n             { line_number++; }
+\r?\n          { line_number++; }
 [ \t]+         ;
 '\\.'          { yylval.i = yytext[2]; return CHAR; }
 '.'            { yylval.i = yytext[1]; return CHAR; }
index 1b9e780f6f227bde877a7fa4e0eb16e4afb20735..0d11275b5640f0dfec52a3de5f21dcb1b572566a 100644 (file)
@@ -1,4 +1,4 @@
-/*     SCCS Id: @(#)lev_main.c 3.4     2000/08/01      */
+/*     SCCS Id: @(#)lev_main.c 3.4     2002/03/27      */
 /*     Copyright (c) 1989 by Jean-Christophe Collet */
 /* NetHack may be freely redistributed.  See license for details. */
 
@@ -53,8 +53,6 @@
 # define OMASK 0644
 #endif
 
-#define NEWLINE        '\n'    /* changes to 13 for MPW */
-
 #define ERR            (-1)
 
 #define NewTab(type, size)     (type **) alloc(sizeof(type *) * size)
@@ -525,7 +523,7 @@ char *map;
        /* Second, find the max width of the map */
        s1 = map;
        while (s1 && *s1) {
-               s2 = index(s1, NEWLINE);
+               s2 = index(s1, '\n');
                if (s2) {
                        len = (int) (s2 - s1);
                        s1 = s2 + 1;
@@ -539,7 +537,7 @@ char *map;
        /* Then parse it now */
        while (map && *map) {
                tmpmap[max_hig] = (char *) alloc(max_len);
-               s1 = index(map, NEWLINE);
+               s1 = index(map, '\n');
                if (s1) {
                        len = (int) (s1 - map);
                        s1++;