]> git.saurik.com Git - bison.git/blobdiff - src/scan-gram.c
* tests/regression.at (Invalid inputs): Adjust to the recent
[bison.git] / src / scan-gram.c
index ecf4ab258eab7654d27f84769149e54836baa445..7999cd2d280db8c43be82624e43b399c22d62762 100644 (file)
@@ -27,7 +27,7 @@
 #define YY_FLEX_MINOR_VERSION 5
 
 #include <stdio.h>
-
+#include <errno.h>
 
 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
 #ifdef c_plusplus
@@ -40,7 +40,9 @@
 #ifdef __cplusplus
 
 #include <stdlib.h>
+#ifndef _WIN32
 #include <unistd.h>
+#endif
 
 /* Use prototypes in function declarations. */
 #define YY_USE_PROTOS
@@ -307,52 +309,55 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 102
-#define YY_END_OF_BUFFER 103
-static yyconst short int yy_accept[391] =
+#define YY_NUM_RULES 104
+#define YY_END_OF_BUFFER 105
+static yyconst short int yy_accept[411] =
     {   0,
-        0,    0,    0,    0,   59,   59,    0,    0,   85,   85,
-       80,   80,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  103,   51,   40,   40,   44,   51,   43,   38,
-       41,   51,   42,   36,   39,   51,   35,   48,   37,   57,
-       57,   52,   53,   59,   58,   59,   55,   55,   83,   82,
-       86,   78,   77,   81,   61,   60,   76,   63,   62,   96,
-       96,   88,   97,   87,   91,   97,   52,   53,   93,   92,
-       99,   88,  100,   87,   91,  101,   88,   87,   91,   40,
-       50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   47,   41,   45,
-
-       46,   42,    0,   57,   56,    0,   59,   59,   59,   59,
-       55,   54,   83,   84,   84,   84,   84,   78,   79,   79,
-       79,   79,   61,   75,   73,   64,   75,   66,   67,   68,
-       69,   70,   71,   75,   72,   75,   63,   96,   94,    0,
-       94,    0,   89,   90,    0,   95,    0,   95,   99,   98,
-      101,   89,   90,  101,    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,
-       46,   49,    0,    0,    0,   85,    0,    0,    0,    0,
-       80,    0,    0,    0,   64,    0,    0,   65,    0,    0,
-
-        0,  101,  101,    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,   64,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   12,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   21,
-        0,    0,    0,    0,    0,   28,    0,   31,    0,    0,
-       34,    0,    0,    0,    2,    0,    0,    6,    0,    0,
-        0,    0,    0,    0,    0,   14,    0,    0,    0,   18,
-        0,    0,    0,    0,   24,    0,   27,   29,   32,    0,
-
-        0,   74,    1,    3,    0,    0,    8,    0,    0,    0,
-        0,    0,    0,    0,    0,   19,    0,    0,    0,    0,
-        0,    0,    4,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   22,    0,    0,    0,   33,    0,
-        0,    0,    0,    0,    0,    0,    0,   16,   17,    0,
-        0,   26,    0,    0,    0,    0,    0,    0,   25,   13,
-        0,    0,    0,    0,    5,    0,    0,    0,   11,    0,
-        0,    0,    0,    0,    9,    0,   15,   20,   23,   30,
-        0,    0,    7,    0,    0,    0,    0,    0,   10,    0
+        0,    0,    0,    0,   61,   61,    0,    0,   87,   87,
+       82,   82,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  105,   53,   42,   42,   46,   53,   45,   40,
+       43,   53,   44,   38,   41,   53,   37,   50,   39,   53,
+       59,   59,   54,   55,   61,   60,   61,   57,   57,   85,
+       84,   88,   80,   79,   83,   63,   62,   78,   65,   64,
+       99,   90,   99,   99,   89,   93,   99,   99,   94,   96,
+      101,  102,   93,  103,   90,   89,   93,   42,   52,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   49,   43,   47,   48,
+
+       44,    0,    0,   59,   58,    0,   61,   61,   61,   61,
+       57,   56,   85,   86,   86,   86,   86,   80,   81,   81,
+       81,   81,   63,   77,   75,   66,   77,   68,   69,   70,
+       71,   72,   73,   77,   74,   77,   65,   99,   97,    0,
+       97,    0,   95,    0,   91,   92,    0,   94,   99,    0,
+       98,    0,   98,  101,  100,  103,   91,   92,  103,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   48,   51,    0,    0,
+        0,    0,   87,    0,    0,    0,    0,   82,    0,    0,
+
+        0,   66,    0,    0,   67,    0,    0,    0,    0,    0,
+        0,    0,  103,  103,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,    0,   66,    0,    0,
+        0,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   12,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   21,   35,   35,   35,   35,   35,   28,   35,   31,
+       35,   35,   34,    0,    0,    0,   35,    2,   35,   35,
+        6,   35,   35,   35,   35,   35,   35,   35,   14,   35,
+
+       35,   35,   18,   35,   35,   35,   35,   24,   35,   27,
+       29,   32,   35,    0,    0,   76,    1,    3,   35,   35,
+        8,   35,   35,   35,   35,   35,   35,   35,   35,   19,
+       35,   35,   35,   35,   35,   35,    0,    4,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   22,
+       35,   35,   35,   33,    0,   35,   35,   35,   35,   35,
+       35,   35,   35,   16,   17,   35,   35,   26,   35,    0,
+       35,   35,   35,   35,   35,   25,   13,   35,   35,   35,
+       35,    0,    0,    5,   35,   35,   35,   11,   35,   35,
+       35,   35,   36,   35,    9,   35,   15,   20,   23,   30,
+
+       35,   35,    7,   35,   35,   35,   35,   35,   10,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -360,17 +365,17 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         2,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    4,    1,    5,    6,    1,    7,    1,
-        1,    8,    1,    9,   10,   11,   12,   13,   13,   13,
-       13,   13,   13,   13,   13,   14,   14,   15,   16,   17,
-       18,   19,   20,   21,   22,   22,   22,   22,   22,   22,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   23,   11,   11,   11,   11,   11,
-       24,   25,   26,    1,   27,    1,   28,   29,   30,   31,
-
-       32,   33,   34,   35,   36,   11,   37,   38,   39,   40,
-       41,   42,   11,   43,   44,   45,   46,   47,   11,   48,
-       49,   11,   50,   51,   52,    1,    1,    1,    1,    1,
+        1,    4,    1,    5,    6,    7,    8,    1,    9,    1,
+        1,   10,    1,   11,   12,   13,   14,   15,   15,   15,
+       15,   15,   15,   15,   15,   16,   16,   17,   18,   19,
+       20,   21,   22,   23,   24,   24,   24,   24,   24,   24,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   25,   13,   13,   13,   13,   13,
+       26,   27,   28,    1,   29,    1,   30,   31,   32,   33,
+
+       34,   35,   36,   37,   38,   13,   39,   40,   41,   42,
+       43,   44,   13,   45,   46,   47,   48,   49,   13,   50,
+       51,   13,   52,   53,   54,    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,
@@ -387,314 +392,338 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[54] =
+static yyconst int yy_meta[56] =
     {   0,
-        1,    1,    2,    3,    4,    5,    6,    7,    1,    1,
-        8,    9,   10,   10,    1,    1,    1,    1,   11,    1,
-        4,   10,    8,   12,   13,   12,    8,   10,   10,   10,
-       10,   10,   10,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,    8,    8,    8,    8,    8,    8,    8,    4,
-        1,    4,   11
+        1,    1,    2,    1,    3,    1,    4,    5,    6,    7,
+        1,    8,    9,    5,   10,   10,    1,    1,    4,    1,
+       11,    1,    4,   10,    9,   12,   13,   12,    9,   10,
+       10,   10,   10,   10,   10,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    4,    1,    4,   11
     } ;
 
-static yyconst short int yy_base[427] =
+static yyconst short int yy_base[449] =
     {   0,
-        0,    0,   46,   47,   53,   56,  802,  801,   59,   62,
-       50,   82,   65,   87,   85,   86,  110,  160,   92,  117,
-      121,  128,  808,  811,   58,   62,  811,  207,  811,  811,
-        0,   50,   54,  811,  811,    0,  811,  811,  811,    0,
-      114,  811,  811,  782,  811,  117,    0,  794,    0,  811,
-      146,    0,  811,  148,    0,  811,  254,    0,  811,    0,
-        0,  811,  165,  811,  149,  175,  811,  811,  811,  811,
-        0,  811,  753,  811,  175,    0,    0,    0,  182,   92,
-      811,  768,   95,   54,  767,  764,   68,  769,  163,  754,
-      110,  763,  121,  127,  758,  765,  768,  811,    0,  811,
-
-        0,  179,  776,    0,  811,  193,  769,  195,  199,  768,
-        0,  811,    0,  811,  203,  767,  212,    0,  811,  214,
-      766,  216,    0,  811,  811,  777,    0,  811,  811,  811,
-      811,  811,  811,    0,  811,    0,    0,    0,  811,  208,
-      212,    0,  811,  811,  225,  811,  216,  218,    0,  811,
-        0,    0,    0,  231,  749,  226,  745,  744,  744,  161,
-      742,  227,  754,  740,  743,  253,  749,  735,  736,   69,
-      735,  743,  744,  747,  731,  736,  730,  735,  727,  739,
-        0,  811,  240,  253,  266,  743,  269,  282,  742,  286,
-      741,  288,  293,  740,  751,    0,    0,    0,  744,  301,
-
-      297,  304,  300,  734,  715,  724,  714,  726,  716,  724,
-      723,  722,  743,  707,  741,  722,  715,  716,  709,  718,
-      702,  702,  699,  712,  701,  708,  704,  700,  694,  697,
-      703,  702,  692,  703,  701,  811,    0,    0,  305,  687,
-      695,  688,  684,  696,  682,  694,  713,  691,  679,  811,
-      678,  674,  686,  254,  681,  672,  676,  668,  681,  811,
-      667,  301,  666,  678,  664,  811,  668,  811,  667,  665,
-      811,    0,    0,  656,  811,  672,  657,  811,  303,  657,
-      659,  304,  672,  671,  662,  811,  655,  656,  651,  811,
-      649,  683,  660,  649,  811,  645,  811,  306,  811,  645,
-
-        0,  811,  811,  644,  657,  639,  811,  642,  643,  640,
-      639,  640,  637,  647,  637,  811,  635,  633,  647,  633,
-      628,  640,  811,  626,  638,  635,  612,  601,  614,  589,
-      594,  579,  592,  592,  811,  573,  573,  582,  811,  567,
-      564,  565,  525,  534,  510,  498,  489,  811,  811,  470,
-      461,  811,  466,  449,  458,  442,  427,  423,  811,  811,
-      296,  301,  295,  288,  811,  283,  275,  275,  811,  272,
-      259,  249,  254,  232,  811,  228,  811,  811,  811,  811,
-      234,  307,  811,  229,  208,  199,  203,  179,  811,  811,
-      334,  347,  360,  373,  386,  399,  412,  425,  438,  451,
-
-      457,  467,  480,  493,  506,  519,  530,  543,  554,  567,
-      579,  592,  604,  617,  630,  643,  201,  193,  167,  656,
-      159,  145,  136,  134,  120,   93
+        0,  896,   46,   47,   55,   58,  891,  890,   61,   64,
+       50,   70,   66,   75,   85,   86,  109,  159,   96,  122,
+      129,  144,  899,  903,   60,  104,  903,  206,  903,  903,
+        0,   89,   52,  903,  903,    0,  903,  903,  903,  858,
+        0,  106,  903,  903,  870,  903,  138,    0,  882,    0,
+      903,  142,    0,  903,  172,    0,  903,  254,    0,  903,
+        0,  903,  174,   88,  903,  169,   92,  144,  903,  903,
+        0,  841,  170,    0,    0,    0,  178,  198,  903,    0,
+      856,   26,   76,  855,  852,  128,  857,  161,  842,  164,
+      851,  100,  164,  846,  853,  856,  903,    0,  903,    0,
+
+      201,  864,  846,    0,  903,  218,  856,  263,  268,  855,
+        0,  903,    0,  903,  221,  854,  224,    0,  903,  230,
+      853,  258,    0,  903,  903,  864,    0,  903,  903,  903,
+      903,  903,  903,    0,  903,    0,    0,    0,  903,  258,
+      262,    0,  903,  284,  903,  903,  289,  903,  903,  303,
+      903,  267,  282,    0,  903,    0,    0,    0,  306,    0,
+      836,  280,  832,  831,  831,  272,  829,  160,  841,  827,
+      830,  288,  836,  822,  823,   91,  822,  830,  831,  834,
+      818,  823,  817,  822,  814,  826,    0,  903,  815,  316,
+      300,  321,  829,  329,  332,  828,  335,  827,  338,  341,
+
+      826,  837,    0,    0,    0,  830,  344,  328,  348,  343,
+      356,  346,  359,  354,  820,  801,  810,  800,  812,  802,
+      810,  809,  808,  829,  793,  827,  808,  801,  802,  795,
+      804,  788,  788,  785,  798,  787,  794,  790,  786,  780,
+      783,  789,  788,  778,  789,  787,  784,  903,    0,    0,
+      359,  772,  780,  773,  769,  781,  767,  779,  798,  776,
+      764,    0,  763,  759,  771,  355,  766,  757,  761,  753,
+      766,    0,  752,  357,  751,  763,  749,    0,  753,    0,
+      752,  750,    0,  788,    0,    0,  740,    0,  756,  741,
+        0,  360,  741,  743,  364,  756,  755,  746,    0,  739,
+
+      740,  735,    0,  733,  767,  744,  733,    0,  729,    0,
+      365,    0,  729,  313,    0,  903,    0,  728,  741,  723,
+        0,  726,  727,  724,  723,  724,  721,  731,  721,    0,
+      719,  717,  731,  717,  712,  724,  375,    0,  710,  722,
+      721,  706,  707,  722,  709,  716,  703,  716,  717,    0,
+      701,  688,  691,    0,  703,  659,  644,  648,  635,  646,
+      635,  624,  634,    0,    0,  623,  621,    0,  627,  625,
+      581,  578,  564,  538,  528,    0,    0,  527,  525,  518,
+      507,  533,  526,    0,  349,  338,  339,    0,  335,  342,
+      337,  346,  903,  310,    0,  274,    0,    0,    0,    0,
+
+      282,  366,    0,  278,  256,  240,  241,  222,    0,  903,
+      395,  408,  421,  434,  447,  460,  473,  486,  499,  512,
+      517,  527,  540,  553,  566,  579,  590,  603,  614,  627,
+      639,  652,  664,  677,  690,  696,  706,  254,  219,  208,
+      719,  196,  193,  167,  144,  142,   55,  732
     } ;
 
-static yyconst short int yy_def[427] =
+static yyconst short int yy_def[449] =
     {   0,
-      390,    1,  391,  391,  392,  392,  393,  393,  394,  394,
-      395,  395,  396,  396,  397,  397,  398,  398,  399,  399,
-      400,  400,  390,  390,  390,  390,  390,  390,  390,  390,
-      401,  390,  390,  390,  390,  402,  390,  390,  390,  403,
-      390,  390,  390,  404,  390,  404,  405,  390,  406,  390,
-      407,  408,  390,  409,  410,  390,  411,  412,  390,  413,
-      413,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      414,  390,  390,  390,  390,  415,  415,  415,  415,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  401,  390,
-
-      416,  390,  402,  403,  390,  390,  404,  404,  404,  404,
-      405,  390,  406,  390,  390,  390,  390,  408,  390,  390,
-      390,  390,  410,  390,  390,  390,  417,  390,  390,  390,
-      390,  390,  390,  418,  390,  419,  412,  413,  390,  390,
-      390,  420,  390,  390,  390,  390,  390,  390,  414,  390,
-      415,  415,  415,  415,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      416,  390,  390,  390,  390,  390,  390,  390,  407,  390,
-      390,  390,  390,  409,  390,  421,  422,  419,  420,  390,
-
-      390,  415,  415,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  423,  424,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  425,  426,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-
-      418,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,    0,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390
+      410,    1,  411,  411,  412,  412,  413,  413,  414,  414,
+      415,  415,  416,  416,  417,  417,  418,  418,  419,  419,
+      420,  420,  410,  410,  410,  410,  410,  410,  410,  410,
+      421,  410,  410,  410,  410,  422,  410,  410,  410,  410,
+      423,  410,  410,  410,  424,  410,  424,  425,  410,  426,
+      410,  427,  428,  410,  429,  430,  410,  431,  432,  410,
+      433,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      434,  410,  410,  435,  435,  435,  435,  410,  410,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  410,  421,  410,  437,
+
+      410,  422,  410,  423,  410,  410,  424,  424,  424,  424,
+      425,  410,  426,  410,  410,  410,  410,  428,  410,  410,
+      410,  410,  430,  410,  410,  410,  438,  410,  410,  410,
+      410,  410,  410,  439,  410,  440,  432,  433,  410,  410,
+      410,  441,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  434,  410,  435,  435,  435,  435,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  437,  410,  410,  410,
+      410,  410,  410,  410,  410,  427,  410,  410,  410,  410,
+
+      429,  410,  442,  443,  440,  441,  410,  410,  410,  410,
+      410,  410,  435,  435,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  410,  410,  444,  445,
+      410,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  410,  446,  447,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  410,  439,  410,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  410,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  410,  436,  436,  436,  436,  436,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  448,
+      436,  436,  436,  436,  436,  436,  436,  436,  436,  436,
+      436,  448,  410,  436,  436,  436,  436,  436,  436,  436,
+      436,  436,  410,  436,  436,  436,  436,  436,  436,  436,
+
+      436,  436,  436,  436,  436,  436,  436,  436,  436,    0,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410
     } ;
 
-static yyconst short int yy_nxt[865] =
+static yyconst short int yy_nxt[959] =
     {   0,
-       24,   25,   26,   27,   24,   28,   29,   24,   30,   24,
-       31,   32,   33,   33,   34,   35,   36,   37,   24,   24,
-       24,   31,   31,   24,   24,   24,   31,   31,   31,   31,
+       24,   25,   26,   25,   27,   24,   24,   28,   29,   24,
+       30,   24,   31,   32,   33,   33,   34,   35,   36,   37,
+       24,   24,   24,   31,   31,   24,   24,   24,   31,   31,
+       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   38,
-       39,   24,   24,   41,   41,   45,   53,  100,   45,   80,
-       80,  101,   50,   80,   80,   50,  102,  102,   56,   42,
-       42,   43,   43,   42,   54,   43,   42,   46,   43,   42,
-       46,   43,   42,   51,   43,   42,   51,   43,   53,   57,
-       56,   59,   59,   80,   80,   72,  158,   73,   74,  162,
-
-      224,  159,  302,   75,  225,   42,   54,   43,  163,   57,
-       57,   57,   61,   62,   63,   42,   64,   43,  109,  110,
-       72,   65,   73,   74,   77,  105,  156,   78,   75,  301,
-       66,   77,   79,   67,   78,   68,  157,  169,  106,   79,
-       42,  108,   43,  273,   42,  272,   43,  115,  116,  120,
-      121,   42,  170,   43,  238,  171,  143,  173,  175,   69,
-      144,   70,   61,   62,   63,  174,   64,  176,  237,  139,
-      117,   65,  122,  145,  140,  177,  198,  141,  141,  146,
-       66,  142,  143,   67,  147,   68,  144,  148,  148,  152,
-      165,  102,  102,  153,  183,  184,  109,  110,  211,  145,
-
-      109,  110,  197,  166,  185,  186,  154,  167,  212,   69,
-      196,   70,   81,  188,  189,  190,  191,  193,  194,  108,
-      141,  141,  389,  108,  141,  141,  200,  201,  148,  148,
-      148,  148,  202,  203,  388,   82,  387,   83,   84,   85,
-       86,  183,  184,  386,   87,   88,   89,   90,   91,   92,
-       93,   94,   95,   96,  205,   97,   98,  125,  206,  214,
-      125,  385,  219,  287,  105,  383,  126,  185,  186,  207,
-      185,  186,  382,  125,  215,  381,  127,  106,  125,  219,
-      287,  128,  129,  188,  189,  380,  130,  190,  191,  190,
-      191,  379,  220,  131,  193,  194,  132,  378,  133,  134,
-
-      135,  136,  200,  201,  143,  202,  203,  152,  144,  139,
-      294,  153,  306,  309,  140,  321,  384,  141,  141,  377,
-      376,  145,  375,  374,  154,  373,  372,  294,  371,  306,
-      309,  370,  321,  384,   40,   40,   40,   40,   40,   40,
-       40,   40,   40,   40,   40,   40,   40,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
-       47,   47,   47,   49,   49,   49,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   55,
-
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   71,   71,
+       31,   38,   39,   24,   24,   42,   42,   46,   54,  162,
+       46,   78,   78,   78,  316,   51,  101,  101,   51,  163,
+       57,   43,   43,   44,   44,   43,   55,   44,   54,   57,
+       43,   47,   44,   43,   47,   44,   43,   52,   44,   43,
+       52,   44,   58,   60,   60,   43,   55,   44,   99,  148,
+
+       62,   58,  100,   72,   65,   78,   78,   78,  143,   73,
+      149,   58,   58,   62,  144,   63,   64,   65,  150,  105,
+      164,   43,   66,   44,  235,  165,   62,   67,  236,   72,
+       65,   68,  106,   75,   43,   73,   44,   76,  179,  109,
+      110,  109,   77,  115,  116,  115,  180,   43,   75,   44,
+      151,  315,   76,  286,   43,  152,   44,   77,  153,  153,
+       69,  168,   70,   62,  108,   63,   64,   65,  117,   43,
+      169,   44,   66,  120,  121,  120,  285,   67,  145,  145,
+      139,   68,  146,  146,   43,  140,   44,  157,  141,  141,
+      171,  158,  142,  175,  225,  147,  147,  181,  122,   78,
+
+       78,   78,  250,  172,  159,  249,  182,  173,  176,  226,
+       69,  177,   70,   79,  183,  101,  101,  205,   80,  190,
+      191,  190,  192,  193,  192,  195,  196,  195,  204,   80,
+       80,  197,  198,  197,   80,   80,   81,   80,   82,   83,
+       84,   85,   80,   80,   80,   86,   87,   88,   89,   90,
+       91,   92,   93,   94,   95,   80,   96,   97,  125,  200,
+      201,  200,  125,  203,  109,  110,  109,  409,  126,  109,
+      110,  109,  141,  141,  408,  125,  141,  141,  127,  407,
+      125,  153,  153,  128,  129,  207,  208,  207,  130,  108,
+      209,  210,  209,  406,  108,  131,  153,  153,  132,  230,
+
+      133,  134,  135,  136,  211,  212,  211,  213,  214,  213,
+      216,  222,  405,  105,  217,  403,  230,  190,  191,  190,
+      402,  223,  192,  193,  192,  218,  106,  337,  337,  231,
+      192,  193,  192,  195,  196,  195,  197,  198,  197,  197,
+      198,  197,  200,  201,  200,  207,  208,  207,  143,  209,
+      210,  209,  145,  148,  144,  401,  146,  211,  212,  211,
+      213,  214,  213,  157,  149,  139,  300,  158,  307,  147,
+      140,  320,  150,  141,  141,  323,  335,  404,  355,  400,
+      159,  399,  398,  300,  397,  307,  396,  395,  320,  337,
+      337,  394,  323,  335,  404,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   53,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   56,   56,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   59,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   61,   61,   61,   61,   71,
+
        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   76,   76,   76,   76,   76,   76,   76,   76,   76,
-       76,   76,   76,   76,   99,  369,   99,  103,  368,  103,
-      103,  103,  103,  103,  103,  103,  103,  367,  103,  103,
-      104,  104,  104,  104,  104,  104,  366,  104,  104,  104,
-      104,  365,  104,  107,  364,  107,  107,  107,  107,  107,
-
-      107,  107,  107,  107,  363,  107,  111,  111,  111,  111,
-      111,  111,  362,  111,  111,  111,  111,  111,  111,  113,
-      113,  361,  113,  113,  113,  113,  113,  113,  113,  113,
+       71,   71,   74,   74,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,   98,   98,  102,  393,  102,
+      102,  102,  102,  102,  102,  102,  102,  383,  102,  102,
+      104,  104,  104,  104,  104,  104,  392,  104,  104,  104,
+      104,  391,  104,  107,  390,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  389,  107,  111,  111,  111,  111,
+      111,  111,  388,  111,  111,  111,  111,  111,  111,  113,
+      113,  387,  113,  113,  113,  113,  113,  113,  113,  113,
       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  360,  114,  118,  118,  118,  118,  118,  359,  118,
+
+      114,  386,  114,  118,  118,  118,  118,  118,  385,  118,
       118,  118,  118,  118,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  358,  119,  123,  123,  357,
+      119,  119,  119,  119,  119,  384,  119,  123,  123,  383,
       123,  123,  123,  123,  123,  123,  123,  123,  123,  124,
       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  137,  137,  137,  137,  137,  356,  137,  137,
-
-      137,  137,  137,  137,  138,  138,  355,  354,  138,  353,
-      138,  138,  352,  138,  138,  351,  138,  149,  149,  350,
-      149,  349,  348,  149,  149,  347,  149,  149,  346,  149,
-      151,  151,  151,  151,  151,  151,  151,  151,  151,  151,
-      151,  345,  151,  181,  344,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  199,  343,  199,  199,
-      199,  199,  199,  199,  199,  199,  342,  199,  199,  341,
-      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
-      330,  329,  328,  327,  326,  325,  324,  323,  322,  320,
-      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
-
-      308,  307,  305,  304,  303,  300,  299,  298,  297,  296,
-      295,  293,  292,  291,  290,  289,  288,  286,  285,  284,
-      283,  282,  281,  280,  279,  278,  277,  276,  275,  274,
+      124,  124,  137,  137,  137,  137,  137,  381,  137,  137,
+      137,  137,  137,  137,  138,  138,  380,  379,  378,  377,
+      138,  138,  138,  138,  138,  376,  138,  154,  154,  375,
+      154,  374,  373,  154,  154,  154,  154,  154,  372,  154,
+      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
+
+      156,  371,  156,  160,  160,  160,  187,  370,  187,  187,
+      187,  187,  187,  187,  187,  187,  187,  187,  187,  206,
+      369,  206,  206,  206,  206,  206,  206,  206,  206,  368,
+      206,  206,  382,  382,  382,  382,  382,  382,  382,  382,
+      382,  382,  382,  382,  382,  367,  366,  365,  364,  363,
+      362,  361,  360,  359,  358,  357,  356,  354,  353,  352,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  338,  336,  334,  333,  332,  331,  330,
+      329,  328,  327,  326,  325,  324,  322,  321,  319,  318,
+      317,  314,  313,  312,  311,  310,  309,  308,  306,  305,
+
+      304,  303,  302,  301,  299,  298,  297,  296,  295,  294,
+      293,  292,  291,  290,  289,  288,  287,  284,  283,  282,
+      281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
       271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
       261,  260,  259,  258,  257,  256,  255,  254,  253,  252,
-      251,  250,  249,  248,  247,  246,  245,  244,  243,  242,
-      241,  240,  239,  236,  122,  192,  117,  187,  235,  234,
-      233,  232,  231,  230,  229,  228,  227,  226,  223,  222,
-      221,  218,  217,  216,  213,  210,  209,  208,  204,  195,
-      192,  187,  108,  108,  182,  180,  179,  178,  172,  168,
-
-      164,  161,  160,  155,  150,  112,  108,  390,   48,   48,
-       23,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390
+      251,  248,  122,  199,  117,  194,  247,  246,  245,  244,
+      243,  242,  241,  240,  239,  238,  237,  234,  233,  232,
+      229,  228,  227,  224,  221,  220,  219,  215,  202,  199,
+      194,  108,  108,  189,  188,  186,  185,  184,  178,  174,
+      170,  167,  166,  161,  155,  112,  108,  103,  410,   49,
+
+       49,   40,   23,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410
     } ;
 
-static yyconst short int yy_chk[865] =
+static yyconst short int yy_chk[959] =
     {   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,    3,    4,    5,   11,   32,    6,   25,
-       25,   32,    9,   26,   26,   10,   33,   33,   13,    3,
-        4,    3,    4,   11,   11,   11,    5,    5,    5,    6,
-        6,    6,    9,    9,    9,   10,   10,   10,   12,   13,
-       14,   15,   16,   80,   80,   19,   84,   19,   19,   87,
-
-      170,   84,  426,   19,  170,   12,   12,   12,   87,   15,
-       16,   14,   17,   17,   17,   19,   17,   19,   46,   46,
-       20,   17,   20,   20,   21,   41,   83,   21,   20,  425,
-       17,   22,   21,   17,   22,   17,   83,   91,   41,   22,
-       20,   46,   20,  424,   21,  423,   21,   51,   51,   54,
-       54,   22,   91,   22,  422,   91,   65,   93,   94,   17,
-       65,   17,   18,   18,   18,   93,   18,   94,  421,   63,
-       51,   18,   54,   65,   63,   94,  419,   63,   63,   66,
-       18,   63,   75,   18,   66,   18,   75,   66,   66,   79,
-       89,  102,  102,   79,  106,  106,  108,  108,  160,   75,
-
-      109,  109,  418,   89,  115,  115,   79,   89,  160,   18,
-      417,   18,   28,  117,  117,  120,  120,  122,  122,  108,
-      140,  140,  388,  109,  141,  141,  145,  145,  147,  147,
-      148,  148,  154,  154,  387,   28,  386,   28,   28,   28,
-       28,  183,  183,  385,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,  156,   28,   28,   57,  156,  162,
-       57,  384,  166,  254,  184,  381,   57,  185,  185,  156,
-      187,  187,  376,   57,  162,  374,   57,  184,   57,  166,
-      254,   57,   57,  188,  188,  373,   57,  190,  190,  192,
-      192,  372,  166,   57,  193,  193,   57,  371,   57,   57,
-
-       57,   57,  200,  200,  201,  202,  202,  203,  201,  239,
-      262,  203,  279,  282,  239,  298,  382,  239,  239,  370,
-      368,  201,  367,  366,  203,  364,  363,  262,  362,  279,
-      282,  361,  298,  382,  391,  391,  391,  391,  391,  391,
-      391,  391,  391,  391,  391,  391,  391,  392,  392,  392,
-      392,  392,  392,  392,  392,  392,  392,  392,  392,  392,
-      393,  393,  393,  393,  393,  393,  393,  393,  393,  393,
-      393,  393,  393,  394,  394,  394,  394,  394,  394,  394,
-      394,  394,  394,  394,  394,  394,  395,  395,  395,  395,
-      395,  395,  395,  395,  395,  395,  395,  395,  395,  396,
-
-      396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
-      396,  396,  397,  397,  397,  397,  397,  397,  397,  397,
-      397,  397,  397,  397,  397,  398,  398,  398,  398,  398,
-      398,  398,  398,  398,  398,  398,  398,  398,  399,  399,
-      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
-      399,  400,  400,  400,  400,  400,  400,  400,  400,  400,
-      400,  400,  400,  400,  401,  358,  401,  402,  357,  402,
-      402,  402,  402,  402,  402,  402,  402,  356,  402,  402,
-      403,  403,  403,  403,  403,  403,  355,  403,  403,  403,
-      403,  354,  403,  404,  353,  404,  404,  404,  404,  404,
-
-      404,  404,  404,  404,  351,  404,  405,  405,  405,  405,
-      405,  405,  350,  405,  405,  405,  405,  405,  405,  406,
-      406,  347,  406,  406,  406,  406,  406,  406,  406,  406,
-      407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
-      407,  346,  407,  408,  408,  408,  408,  408,  345,  408,
-      408,  408,  408,  408,  409,  409,  409,  409,  409,  409,
-      409,  409,  409,  409,  409,  344,  409,  410,  410,  343,
-      410,  410,  410,  410,  410,  410,  410,  410,  410,  411,
-      411,  411,  411,  411,  411,  411,  411,  411,  411,  411,
-      411,  411,  412,  412,  412,  412,  412,  342,  412,  412,
-
-      412,  412,  412,  412,  413,  413,  341,  340,  413,  338,
-      413,  413,  337,  413,  413,  336,  413,  414,  414,  334,
-      414,  333,  332,  414,  414,  331,  414,  414,  330,  414,
+        1,    1,    1,    1,    1,    3,    4,    5,   11,   82,
+        6,   25,   25,   25,  447,    9,   33,   33,   10,   82,
+       13,    3,    4,    3,    4,   11,   11,   11,   12,   14,
+        5,    5,    5,    6,    6,    6,    9,    9,    9,   10,
+       10,   10,   13,   15,   16,   12,   12,   12,   32,   67,
+
+       19,   14,   32,   19,   19,   26,   26,   26,   64,   19,
+       67,   15,   16,   17,   64,   17,   17,   17,   67,   42,
+       83,   19,   17,   19,  176,   83,   20,   17,  176,   20,
+       20,   17,   42,   21,   17,   20,   17,   21,   92,   47,
+       47,   47,   21,   52,   52,   52,   92,   20,   22,   20,
+       68,  446,   22,  445,   21,   68,   21,   22,   68,   68,
+       17,   86,   17,   18,   47,   18,   18,   18,   52,   22,
+       86,   22,   18,   55,   55,   55,  444,   18,   66,   73,
+       63,   18,   66,   73,   18,   63,   18,   77,   63,   63,
+       88,   77,   63,   90,  168,   66,   73,   93,   55,   78,
+
+       78,   78,  443,   88,   77,  442,   93,   88,   90,  168,
+       18,   90,   18,   28,   93,  101,  101,  440,   28,  106,
+      106,  106,  115,  115,  115,  117,  117,  117,  439,   28,
+       28,  120,  120,  120,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
+       28,   28,   28,   28,   28,   28,   28,   28,   58,  122,
+      122,  122,   58,  438,  108,  108,  108,  408,   58,  109,
+      109,  109,  140,  140,  407,   58,  141,  141,   58,  406,
+       58,  152,  152,   58,   58,  144,  144,  144,   58,  108,
+      147,  147,  147,  405,  109,   58,  153,  153,   58,  172,
+
+       58,   58,   58,   58,  150,  150,  150,  159,  159,  159,
+      162,  166,  404,  191,  162,  401,  172,  190,  190,  190,
+      396,  166,  192,  192,  192,  162,  191,  314,  314,  172,
+      194,  194,  194,  195,  195,  195,  197,  197,  197,  199,
+      199,  199,  200,  200,  200,  207,  207,  207,  208,  209,
+      209,  209,  210,  212,  208,  394,  210,  211,  211,  211,
+      213,  213,  213,  214,  212,  251,  266,  214,  274,  210,
+      251,  292,  212,  251,  251,  295,  311,  402,  337,  392,
+      214,  391,  390,  266,  389,  274,  387,  386,  292,  337,
+      337,  385,  295,  311,  402,  411,  411,  411,  411,  411,
+
+      411,  411,  411,  411,  411,  411,  411,  411,  412,  412,
+      412,  412,  412,  412,  412,  412,  412,  412,  412,  412,
+      412,  413,  413,  413,  413,  413,  413,  413,  413,  413,
+      413,  413,  413,  413,  414,  414,  414,  414,  414,  414,
+      414,  414,  414,  414,  414,  414,  414,  415,  415,  415,
       415,  415,  415,  415,  415,  415,  415,  415,  415,  415,
-      415,  329,  415,  416,  328,  416,  416,  416,  416,  416,
-      416,  416,  416,  416,  416,  416,  420,  327,  420,  420,
-      420,  420,  420,  420,  420,  420,  326,  420,  420,  325,
-      324,  322,  321,  320,  319,  318,  317,  315,  314,  313,
-      312,  311,  310,  309,  308,  306,  305,  304,  300,  296,
-      294,  293,  292,  291,  289,  288,  287,  285,  284,  283,
-
-      281,  280,  277,  276,  274,  270,  269,  267,  265,  264,
-      263,  261,  259,  258,  257,  256,  255,  253,  252,  251,
-      249,  248,  247,  246,  245,  244,  243,  242,  241,  240,
-      235,  234,  233,  232,  231,  230,  229,  228,  227,  226,
-      225,  224,  223,  222,  221,  220,  219,  218,  217,  216,
-      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
-      205,  204,  199,  195,  194,  191,  189,  186,  180,  179,
-      178,  177,  176,  175,  174,  173,  172,  171,  169,  168,
-      167,  165,  164,  163,  161,  159,  158,  157,  155,  126,
-      121,  116,  110,  107,  103,   97,   96,   95,   92,   90,
-
-       88,   86,   85,   82,   73,   48,   44,   23,    8,    7,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390,  390,  390,  390,  390,  390,  390,
-      390,  390,  390,  390
+      416,  416,  416,  416,  416,  416,  416,  416,  416,  416,
+      416,  416,  416,  417,  417,  417,  417,  417,  417,  417,
+      417,  417,  417,  417,  417,  417,  418,  418,  418,  418,
+      418,  418,  418,  418,  418,  418,  418,  418,  418,  419,
+
+      419,  419,  419,  419,  419,  419,  419,  419,  419,  419,
+      419,  419,  420,  420,  420,  420,  420,  420,  420,  420,
+      420,  420,  420,  420,  420,  421,  421,  422,  383,  422,
+      422,  422,  422,  422,  422,  422,  422,  382,  422,  422,
+      423,  423,  423,  423,  423,  423,  381,  423,  423,  423,
+      423,  380,  423,  424,  379,  424,  424,  424,  424,  424,
+      424,  424,  424,  424,  378,  424,  425,  425,  425,  425,
+      425,  425,  375,  425,  425,  425,  425,  425,  425,  426,
+      426,  374,  426,  426,  426,  426,  426,  426,  426,  426,
+      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+
+      427,  373,  427,  428,  428,  428,  428,  428,  372,  428,
+      428,  428,  428,  428,  429,  429,  429,  429,  429,  429,
+      429,  429,  429,  429,  429,  371,  429,  430,  430,  370,
+      430,  430,  430,  430,  430,  430,  430,  430,  430,  431,
+      431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
+      431,  431,  432,  432,  432,  432,  432,  369,  432,  432,
+      432,  432,  432,  432,  433,  433,  367,  366,  363,  362,
+      433,  433,  433,  433,  433,  361,  433,  434,  434,  360,
+      434,  359,  358,  434,  434,  434,  434,  434,  357,  434,
+      435,  435,  435,  435,  435,  435,  435,  435,  435,  435,
+
+      435,  356,  435,  436,  436,  436,  437,  355,  437,  437,
+      437,  437,  437,  437,  437,  437,  437,  437,  437,  441,
+      353,  441,  441,  441,  441,  441,  441,  441,  441,  352,
+      441,  441,  448,  448,  448,  448,  448,  448,  448,  448,
+      448,  448,  448,  448,  448,  351,  349,  348,  347,  346,
+      345,  344,  343,  342,  341,  340,  339,  336,  335,  334,
+      333,  332,  331,  329,  328,  327,  326,  325,  324,  323,
+      322,  320,  319,  318,  313,  309,  307,  306,  305,  304,
+      302,  301,  300,  298,  297,  296,  294,  293,  290,  289,
+      287,  284,  282,  281,  279,  277,  276,  275,  273,  271,
+
+      270,  269,  268,  267,  265,  264,  263,  261,  260,  259,
+      258,  257,  256,  255,  254,  253,  252,  247,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
+      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
+      224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
+      206,  202,  201,  198,  196,  193,  189,  186,  185,  184,
+      183,  182,  181,  180,  179,  178,  177,  175,  174,  173,
+      171,  170,  169,  167,  165,  164,  163,  161,  126,  121,
+      116,  110,  107,  103,  102,   96,   95,   94,   91,   89,
+       87,   85,   84,   81,   72,   49,   45,   40,   23,    8,
+
+        7,    2,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410,  410,  410,
+      410,  410,  410,  410,  410,  410,  410,  410
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -703,20 +732,20 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static yyconst short int yy_rule_linenum[102] =
+static yyconst short int yy_rule_linenum[104] =
     {   0,
-      215,  216,  217,  218,  219,  220,  221,  222,  223,  224,
-      225,  226,  227,  228,  229,  230,  231,  232,  233,  234,
-      235,  236,  237,  238,  239,  240,  241,  242,  243,  244,
-      245,  246,  247,  248,  250,  251,  252,  253,  254,  256,
-      258,  264,  278,  281,  284,  285,  288,  291,  294,  302,
-      308,  324,  325,  335,  340,  356,  357,  373,  374,  386,
-      396,  416,  432,  452,  464,  478,  479,  480,  481,  482,
-      483,  484,  485,  486,  497,  503,  514,  520,  521,  522,
-      524,  542,  548,  549,  550,  552,  570,  573,  576,  577,
-      580,  591,  603,  605,  607,  610,  613,  633,  640,  641,
-
-      661
+      218,  219,  220,  221,  222,  223,  224,  225,  226,  227,
+      228,  229,  230,  231,  232,  233,  234,  235,  236,  237,
+      238,  239,  240,  241,  242,  243,  244,  245,  246,  247,
+      248,  249,  250,  251,  253,  258,  260,  261,  262,  263,
+      264,  266,  268,  274,  288,  291,  294,  295,  298,  301,
+      304,  312,  318,  333,  334,  344,  349,  364,  365,  380,
+      381,  393,  403,  422,  438,  457,  469,  483,  484,  485,
+      486,  487,  488,  489,  490,  491,  502,  508,  519,  525,
+      526,  527,  529,  546,  552,  553,  554,  556,  573,  576,
+      579,  580,  583,  594,  595,  596,  609,  611,  616,  635,
+
+      642,  643,  662
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -893,7 +922,6 @@ scanner_last_string_free (void)
 }
 
 
-static int braces_level = 0;
 static int percent_percent_count = 0;
 
 /* Within well-formed rules, RULE_LENGTH is the number of values in
@@ -908,6 +936,7 @@ static void handle_dollar (braced_code_t code_kind,
                           char *cp, location_t location);
 static void handle_at (braced_code_t code_kind,
                       char *cp, location_t location);
+static void handle_syncline (char *args, location_t *location);
 static int convert_ucn_to_byte (char const *hex_text);
 
 #define SC_COMMENT 1
@@ -929,7 +958,7 @@ static int convert_ucn_to_byte (char const *hex_text);
    NUL and newline, as this simplifies our implementation.  */
 /* Zero or more instances of backslash-newline.  Following GCC, allow
    white space between the backslash and the newline.  */
-#line 933 "scan-gram.c"
+#line 962 "scan-gram.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1029,9 +1058,20 @@ YY_MALLOC_DECL
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                result = n; \
                } \
-       else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-                 && ferror( yyin ) ) \
-               YY_FATAL_ERROR( "input in flex scanner failed" );
+       else \
+               { \
+               errno=0; \
+               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+                       { \
+                       if( errno != EINTR) \
+                               { \
+                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
+                               break; \
+                               } \
+                       errno=0; \
+                       clearerr(yyin); \
+                       } \
+               }
 #endif
 
 /* No semi-colon after return; correct usage is to write "yyterminate();" -
@@ -1072,6 +1112,9 @@ YY_MALLOC_DECL
 #endif
 
 #define YY_RULE_SETUP \
+       if ( yyleng > 0 ) \
+               yy_current_buffer->yy_at_bol = \
+                               (yytext[yyleng - 1] == '\n'); \
        YY_USER_ACTION
 
 YY_DECL
@@ -1080,9 +1123,11 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 202 "scan-gram.l"
+#line 203 "scan-gram.l"
 
 
+  int braces_level IF_LINT (= 0);
+
   /* At each yylex invocation, mark the current position as the
      start of the next token.  */
   YY_STEP;
@@ -1092,7 +1137,7 @@ YY_DECL
   /*----------------------------.
   | Scanning Bison directives.  |
   `----------------------------*/
-#line 1096 "scan-gram.c"
+#line 1141 "scan-gram.c"
 
        if ( yy_init )
                {
@@ -1131,6 +1176,7 @@ YY_DECL
                yy_bp = yy_cp;
 
                yy_current_state = yy_start;
+               yy_current_state += YY_AT_BOL();
 yy_match:
                do
                        {
@@ -1143,13 +1189,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 >= 391 )
+                               if ( yy_current_state >= 411 )
                                        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] != 811 );
+               while ( yy_base[yy_current_state] != 903 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1169,13 +1215,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 102 )
+                       else if ( yy_act < 104 )
                                fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
                                         yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 102 )
+                       else if ( yy_act == 104 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 103 )
+                       else if ( yy_act == 105 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1194,223 +1240,236 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 215 "scan-gram.l"
+#line 218 "scan-gram.l"
 return PERCENT_NONASSOC;
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 216 "scan-gram.l"
+#line 219 "scan-gram.l"
 return PERCENT_DEBUG;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 217 "scan-gram.l"
+#line 220 "scan-gram.l"
 return PERCENT_DEFINE;
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 218 "scan-gram.l"
+#line 221 "scan-gram.l"
 return PERCENT_DEFINES;
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 219 "scan-gram.l"
+#line 222 "scan-gram.l"
 return PERCENT_DESTRUCTOR;
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 220 "scan-gram.l"
+#line 223 "scan-gram.l"
 return PERCENT_DPREC;
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 221 "scan-gram.l"
+#line 224 "scan-gram.l"
 return PERCENT_ERROR_VERBOSE;
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 222 "scan-gram.l"
+#line 225 "scan-gram.l"
 return PERCENT_EXPECT;
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 223 "scan-gram.l"
+#line 226 "scan-gram.l"
 return PERCENT_FILE_PREFIX;
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 224 "scan-gram.l"
+#line 227 "scan-gram.l"
 return PERCENT_YACC;
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 225 "scan-gram.l"
+#line 228 "scan-gram.l"
 return PERCENT_GLR_PARSER;
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 226 "scan-gram.l"
+#line 229 "scan-gram.l"
 return PERCENT_LEFT;
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 227 "scan-gram.l"
+#line 230 "scan-gram.l"
 return PERCENT_LOCATIONS;
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 228 "scan-gram.l"
+#line 231 "scan-gram.l"
 return PERCENT_MERGE;
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 229 "scan-gram.l"
+#line 232 "scan-gram.l"
 return PERCENT_NAME_PREFIX;
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 230 "scan-gram.l"
+#line 233 "scan-gram.l"
 return PERCENT_NO_LINES;
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 231 "scan-gram.l"
+#line 234 "scan-gram.l"
 return PERCENT_NONASSOC;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 232 "scan-gram.l"
+#line 235 "scan-gram.l"
 return PERCENT_NTERM;
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 233 "scan-gram.l"
+#line 236 "scan-gram.l"
 return PERCENT_OUTPUT;
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 234 "scan-gram.l"
+#line 237 "scan-gram.l"
 return PERCENT_PARSE_PARAM;
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 235 "scan-gram.l"
+#line 238 "scan-gram.l"
 rule_length--; return PERCENT_PREC;
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 236 "scan-gram.l"
+#line 239 "scan-gram.l"
 return PERCENT_PRINTER;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 237 "scan-gram.l"
+#line 240 "scan-gram.l"
 return PERCENT_PURE_PARSER;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 238 "scan-gram.l"
+#line 241 "scan-gram.l"
 return PERCENT_RIGHT;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 239 "scan-gram.l"
+#line 242 "scan-gram.l"
 return PERCENT_LEX_PARAM;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 240 "scan-gram.l"
+#line 243 "scan-gram.l"
 return PERCENT_SKELETON;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 241 "scan-gram.l"
+#line 244 "scan-gram.l"
 return PERCENT_START;
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 242 "scan-gram.l"
+#line 245 "scan-gram.l"
 return PERCENT_TOKEN;
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 243 "scan-gram.l"
+#line 246 "scan-gram.l"
 return PERCENT_TOKEN;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 244 "scan-gram.l"
+#line 247 "scan-gram.l"
 return PERCENT_TOKEN_TABLE;
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 245 "scan-gram.l"
+#line 248 "scan-gram.l"
 return PERCENT_TYPE;
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 246 "scan-gram.l"
+#line 249 "scan-gram.l"
 return PERCENT_UNION;
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 247 "scan-gram.l"
+#line 250 "scan-gram.l"
 return PERCENT_VERBOSE;
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 248 "scan-gram.l"
+#line 251 "scan-gram.l"
 return PERCENT_YACC;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 250 "scan-gram.l"
-return EQUAL;
+#line 253 "scan-gram.l"
+{
+    complain_at (*yylloc, _("invalid directive: %s"), quote (yytext));
+    YY_STEP;
+  }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 251 "scan-gram.l"
-rule_length = 0; return COLON;
+#line 258 "scan-gram.l"
+handle_syncline (yytext + strlen ("#line "), yylloc); YY_STEP;
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 252 "scan-gram.l"
-rule_length = 0; return PIPE;
+#line 260 "scan-gram.l"
+return EQUAL;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 253 "scan-gram.l"
-return COMMA;
+#line 261 "scan-gram.l"
+rule_length = 0; return COLON;
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 254 "scan-gram.l"
-return SEMICOLON;
+#line 262 "scan-gram.l"
+rule_length = 0; return PIPE;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 256 "scan-gram.l"
-YY_STEP;
+#line 263 "scan-gram.l"
+return COMMA;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 258 "scan-gram.l"
+#line 264 "scan-gram.l"
+return SEMICOLON;
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 266 "scan-gram.l"
+YY_STEP;
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 268 "scan-gram.l"
 {
     yylval->symbol = symbol_get (yytext, *yylloc);
     rule_length++;
     return ID;
   }
        YY_BREAK
-case 42:
+case 44:
 YY_RULE_SETUP
-#line 264 "scan-gram.l"
+#line 274 "scan-gram.l"
 {
     unsigned long num;
     errno = 0;
     num = strtoul (yytext, 0, 10);
     if (INT_MAX < num || errno)
       {
-       complain_at (*yylloc, _("%s is invalid"), yytext);
+       complain_at (*yylloc, _("integer out of range: %s"), quote (yytext));
        num = INT_MAX;
       }
     yylval->integer = num;
@@ -1418,44 +1477,44 @@ YY_RULE_SETUP
   }
        YY_BREAK
 /* Characters.  We don't check there is only one.  */
-case 43:
+case 45:
 YY_RULE_SETUP
-#line 278 "scan-gram.l"
+#line 288 "scan-gram.l"
 YY_OBS_GROW; yy_push_state (SC_ESCAPED_CHARACTER);
        YY_BREAK
 /* Strings. */
-case 44:
+case 46:
 YY_RULE_SETUP
-#line 281 "scan-gram.l"
+#line 291 "scan-gram.l"
 YY_OBS_GROW; yy_push_state (SC_ESCAPED_STRING);
        YY_BREAK
 /* Comments. */
-case 45:
+case 47:
 YY_RULE_SETUP
-#line 284 "scan-gram.l"
+#line 294 "scan-gram.l"
 BEGIN SC_YACC_COMMENT;
        YY_BREAK
-case 46:
+case 48:
 YY_RULE_SETUP
-#line 285 "scan-gram.l"
+#line 295 "scan-gram.l"
 YY_STEP;
        YY_BREAK
 /* Prologue. */
-case 47:
+case 49:
 YY_RULE_SETUP
-#line 288 "scan-gram.l"
+#line 298 "scan-gram.l"
 yy_push_state (SC_PROLOGUE);
        YY_BREAK
 /* Code in between braces.  */
-case 48:
+case 50:
 YY_RULE_SETUP
-#line 291 "scan-gram.l"
-YY_OBS_GROW; ++braces_level; yy_push_state (SC_BRACED_CODE);
+#line 301 "scan-gram.l"
+YY_OBS_GROW; braces_level = 0; yy_push_state (SC_BRACED_CODE);
        YY_BREAK
 /* A type. */
-case 49:
+case 51:
 YY_RULE_SETUP
-#line 294 "scan-gram.l"
+#line 304 "scan-gram.l"
 {
     obstack_grow (&string_obstack, yytext + 1, yyleng - 2);
     YY_OBS_FINISH;
@@ -1463,21 +1522,20 @@ YY_RULE_SETUP
     return TYPE;
   }
        YY_BREAK
-case 50:
+case 52:
 YY_RULE_SETUP
-#line 302 "scan-gram.l"
+#line 312 "scan-gram.l"
 {
     if (++percent_percent_count == 2)
       yy_push_state (SC_EPILOGUE);
     return PERCENT_PERCENT;
   }
        YY_BREAK
-case 51:
+case 53:
 YY_RULE_SETUP
-#line 308 "scan-gram.l"
+#line 318 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": invalid character: `%c'\n"), *yytext);
+    complain_at (*yylloc, _("invalid character: %s"), quote (yytext));
     YY_STEP;
   }
        YY_BREAK
@@ -1489,14 +1547,14 @@ YY_RULE_SETUP
   `-------------------------------------------------------------------*/
 
 
-case 52:
+case 54:
 YY_RULE_SETUP
-#line 324 "scan-gram.l"
+#line 333 "scan-gram.l"
 obstack_sgrow (&string_obstack, "@<:@");
        YY_BREAK
-case 53:
+case 55:
 YY_RULE_SETUP
-#line 325 "scan-gram.l"
+#line 334 "scan-gram.l"
 obstack_sgrow (&string_obstack, "@:>@");
        YY_BREAK
 
@@ -1505,24 +1563,23 @@ obstack_sgrow (&string_obstack, "@:>@");
   `---------------------------------------------------------------*/
 
 
-case 54:
+case 56:
 YY_RULE_SETUP
-#line 335 "scan-gram.l"
+#line 344 "scan-gram.l"
 {
     YY_STEP;
     BEGIN INITIAL;
   }
        YY_BREAK
-case 55:
+case 57:
 YY_RULE_SETUP
-#line 340 "scan-gram.l"
+#line 349 "scan-gram.l"
 ;
        YY_BREAK
 case YY_STATE_EOF(SC_YACC_COMMENT):
-#line 342 "scan-gram.l"
+#line 351 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a comment\n"));
+    complain_at (*yylloc, _("unexpected end of file in a comment"));
     BEGIN INITIAL;
   }
        YY_BREAK
@@ -1532,21 +1589,20 @@ case YY_STATE_EOF(SC_YACC_COMMENT):
   `------------------------------------------------------------*/
 
 
-case 56:
+case 58:
 YY_RULE_SETUP
-#line 356 "scan-gram.l"
+#line 364 "scan-gram.l"
 YY_OBS_GROW; yy_pop_state ();
        YY_BREAK
-case 57:
+case 59:
 YY_RULE_SETUP
-#line 357 "scan-gram.l"
+#line 365 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_COMMENT):
-#line 359 "scan-gram.l"
+#line 367 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a comment\n"));
+    complain_at (*yylloc, _("unexpected end of file in a comment"));
     yy_pop_state ();
   }
        YY_BREAK
@@ -1556,18 +1612,18 @@ case YY_STATE_EOF(SC_COMMENT):
   `--------------------------------------------------------------*/
 
 
-case 58:
+case 60:
 YY_RULE_SETUP
-#line 373 "scan-gram.l"
+#line 380 "scan-gram.l"
 YY_OBS_GROW; yy_pop_state ();
        YY_BREAK
-case 59:
+case 61:
 YY_RULE_SETUP
-#line 374 "scan-gram.l"
+#line 381 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_LINE_COMMENT):
-#line 375 "scan-gram.l"
+#line 382 "scan-gram.l"
 yy_pop_state ();
        YY_BREAK
 
@@ -1577,9 +1633,9 @@ yy_pop_state ();
   `----------------------------------------------------------------*/
 
 
-case 60:
+case 62:
 YY_RULE_SETUP
-#line 386 "scan-gram.l"
+#line 393 "scan-gram.l"
 {
     assert (yy_top_state () == INITIAL);
     YY_OBS_GROW;
@@ -1590,16 +1646,15 @@ YY_RULE_SETUP
     return STRING;
   }
        YY_BREAK
-case 61:
+case 63:
 YY_RULE_SETUP
-#line 396 "scan-gram.l"
+#line 403 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 398 "scan-gram.l"
+#line 405 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a string\n"));
+    complain_at (*yylloc, _("unexpected end of file in a string"));
     assert (yy_top_state () == INITIAL);
     YY_OBS_FINISH;
     yylval->string = last_string;
@@ -1614,9 +1669,9 @@ case YY_STATE_EOF(SC_ESCAPED_STRING):
   `---------------------------------------------------------------*/
 
 
-case 62:
+case 64:
 YY_RULE_SETUP
-#line 416 "scan-gram.l"
+#line 422 "scan-gram.l"
 {
     YY_OBS_GROW;
     assert (yy_top_state () == INITIAL);
@@ -1633,16 +1688,15 @@ YY_RULE_SETUP
     }
   }
        YY_BREAK
-case 63:
+case 65:
 YY_RULE_SETUP
-#line 432 "scan-gram.l"
+#line 438 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 434 "scan-gram.l"
+#line 440 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a character\n"));
+    complain_at (*yylloc, _("unexpected end of file in a character literal"));
     assert (yy_top_state () == INITIAL);
     YY_OBS_FINISH;
     yylval->string = last_string;
@@ -1656,106 +1710,106 @@ case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
   `----------------------------*/
 
 
-case 64:
+case 66:
 YY_RULE_SETUP
-#line 452 "scan-gram.l"
+#line 457 "scan-gram.l"
 {
     unsigned long c = strtoul (yytext + 1, 0, 8);
     if (UCHAR_MAX < c)
       {
-       LOCATION_PRINT (stderr, *yylloc);
-       fprintf (stderr, _(": invalid escape: %s\n"), quote (yytext));
+       complain_at (*yylloc, _("invalid escape sequence: %s"),
+                    quote (yytext));
        YY_STEP;
       }
     else
       obstack_1grow (&string_obstack, c);
   }
        YY_BREAK
-case 65:
+case 67:
 YY_RULE_SETUP
-#line 464 "scan-gram.l"
+#line 469 "scan-gram.l"
 {
     unsigned long c;
     errno = 0;
     c = strtoul (yytext + 2, 0, 16);
     if (UCHAR_MAX < c || errno)
       {
-       LOCATION_PRINT (stderr, *yylloc);
-       fprintf (stderr, _(": invalid escape: %s\n"), quote (yytext));
+       complain_at (*yylloc, _("invalid escape sequence: %s"),
+                    quote (yytext));
        YY_STEP;
       }
     else
       obstack_1grow (&string_obstack, c);
   }
        YY_BREAK
-case 66:
+case 68:
 YY_RULE_SETUP
-#line 478 "scan-gram.l"
+#line 483 "scan-gram.l"
 obstack_1grow (&string_obstack, '\a');
        YY_BREAK
-case 67:
+case 69:
 YY_RULE_SETUP
-#line 479 "scan-gram.l"
+#line 484 "scan-gram.l"
 obstack_1grow (&string_obstack, '\b');
        YY_BREAK
-case 68:
+case 70:
 YY_RULE_SETUP
-#line 480 "scan-gram.l"
+#line 485 "scan-gram.l"
 obstack_1grow (&string_obstack, '\f');
        YY_BREAK
-case 69:
+case 71:
 YY_RULE_SETUP
-#line 481 "scan-gram.l"
+#line 486 "scan-gram.l"
 obstack_1grow (&string_obstack, '\n');
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 482 "scan-gram.l"
+#line 487 "scan-gram.l"
 obstack_1grow (&string_obstack, '\r');
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 483 "scan-gram.l"
+#line 488 "scan-gram.l"
 obstack_1grow (&string_obstack, '\t');
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 484 "scan-gram.l"
+#line 489 "scan-gram.l"
 obstack_1grow (&string_obstack, '\v');
        YY_BREAK
-case 73:
+case 75:
 YY_RULE_SETUP
-#line 485 "scan-gram.l"
+#line 490 "scan-gram.l"
 obstack_1grow (&string_obstack, yytext[1]);
        YY_BREAK
-case 74:
+case 76:
 YY_RULE_SETUP
-#line 486 "scan-gram.l"
+#line 491 "scan-gram.l"
 {
     int c = convert_ucn_to_byte (yytext);
     if (c < 0)
       {
-       LOCATION_PRINT (stderr, *yylloc);
-       fprintf (stderr, _(": invalid escape: %s\n"), quote (yytext));
+       complain_at (*yylloc, _("invalid escape sequence: %s"),
+                    quote (yytext));
        YY_STEP;
       }
     else
       obstack_1grow (&string_obstack, c);
   }
        YY_BREAK
-case 75:
+case 77:
 YY_RULE_SETUP
-#line 497 "scan-gram.l"
+#line 502 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unrecognized escape: %s\n"), quote (yytext));
+    complain_at (*yylloc, _("unrecognized escape sequence: %s"),
+                quote (yytext));
     YY_OBS_GROW;
   }
        YY_BREAK
 /* FLex wants this rule, in case of a `\<<EOF>>'. */
-case 76:
+case 78:
 YY_RULE_SETUP
-#line 503 "scan-gram.l"
+#line 508 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 
@@ -1765,41 +1819,40 @@ YY_OBS_GROW;
   `----------------------------------------------------------*/
 
 
-case 77:
+case 79:
 YY_RULE_SETUP
-#line 514 "scan-gram.l"
+#line 519 "scan-gram.l"
 {
     YY_OBS_GROW;
     assert (yy_top_state () != INITIAL);
     yy_pop_state ();
   }
        YY_BREAK
-case 78:
+case 80:
 YY_RULE_SETUP
-#line 520 "scan-gram.l"
+#line 525 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
-case 79:
+case 81:
 YY_RULE_SETUP
-#line 521 "scan-gram.l"
+#line 526 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
-case 80:
+case 82:
 YY_RULE_SETUP
-#line 522 "scan-gram.l"
+#line 527 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 /* Needed for `\<<EOF>>', `\\<<newline>>[', and `\\<<newline>>]'.  */
-case 81:
+case 83:
 YY_RULE_SETUP
-#line 524 "scan-gram.l"
+#line 529 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_CHARACTER):
-#line 526 "scan-gram.l"
+#line 531 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a character\n"));
+    complain_at (*yylloc, _("unexpected end of file in a character literal"));
     assert (yy_top_state () != INITIAL);
     yy_pop_state ();
   }
@@ -1811,41 +1864,40 @@ case YY_STATE_EOF(SC_CHARACTER):
   `----------------------------------------------------------------*/
 
 
-case 82:
+case 84:
 YY_RULE_SETUP
-#line 542 "scan-gram.l"
+#line 546 "scan-gram.l"
 {
     assert (yy_top_state () != INITIAL);
     YY_OBS_GROW;
     yy_pop_state ();
   }
        YY_BREAK
-case 83:
+case 85:
 YY_RULE_SETUP
-#line 548 "scan-gram.l"
+#line 552 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
-case 84:
+case 86:
 YY_RULE_SETUP
-#line 549 "scan-gram.l"
+#line 553 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
-case 85:
+case 87:
 YY_RULE_SETUP
-#line 550 "scan-gram.l"
+#line 554 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 /* Needed for `\<<EOF>>', `\\<<newline>>[', and `\\<<newline>>]'.  */
-case 86:
+case 88:
 YY_RULE_SETUP
-#line 552 "scan-gram.l"
+#line 556 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_STRING):
-#line 554 "scan-gram.l"
+#line 558 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a string\n"));
+    complain_at (*yylloc, _("unexpected end of file in a string"));
     assert (yy_top_state () != INITIAL);
     yy_pop_state ();
   }
@@ -1857,32 +1909,32 @@ case YY_STATE_EOF(SC_STRING):
 
 
 /* Characters.  We don't check there is only one.  */
-case 87:
+case 89:
 YY_RULE_SETUP
-#line 570 "scan-gram.l"
+#line 573 "scan-gram.l"
 YY_OBS_GROW; yy_push_state (SC_CHARACTER);
        YY_BREAK
 /* Strings. */
-case 88:
+case 90:
 YY_RULE_SETUP
-#line 573 "scan-gram.l"
+#line 576 "scan-gram.l"
 YY_OBS_GROW; yy_push_state (SC_STRING);
        YY_BREAK
 /* Comments. */
-case 89:
+case 91:
 YY_RULE_SETUP
-#line 576 "scan-gram.l"
+#line 579 "scan-gram.l"
 YY_OBS_GROW; yy_push_state (SC_COMMENT);
        YY_BREAK
-case 90:
+case 92:
 YY_RULE_SETUP
-#line 577 "scan-gram.l"
+#line 580 "scan-gram.l"
 YY_OBS_GROW; yy_push_state (SC_LINE_COMMENT);
        YY_BREAK
 /* Not comments. */
-case 91:
+case 93:
 YY_RULE_SETUP
-#line 580 "scan-gram.l"
+#line 583 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 
@@ -1892,12 +1944,23 @@ YY_OBS_GROW;
   `---------------------------------------------------------------*/
 
 
-case 92:
+case 94:
 YY_RULE_SETUP
-#line 591 "scan-gram.l"
+#line 594 "scan-gram.l"
+YY_OBS_GROW; braces_level++;
+       YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 595 "scan-gram.l"
+YY_OBS_GROW; braces_level--;
+       YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 596 "scan-gram.l"
 {
     YY_OBS_GROW;
-    if (--braces_level == 0)
+    braces_level--;
+    if (braces_level < 0)
       {
        yy_pop_state ();
        YY_OBS_FINISH;
@@ -1907,39 +1970,29 @@ YY_RULE_SETUP
       }
   }
        YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 603 "scan-gram.l"
-YY_OBS_GROW; braces_level++;
-       YY_BREAK
-case 94:
+case 97:
 YY_RULE_SETUP
-#line 605 "scan-gram.l"
+#line 609 "scan-gram.l"
 { handle_dollar (current_braced_code,
                                                   yytext, *yylloc); }
        YY_BREAK
-case 95:
+case 98:
 YY_RULE_SETUP
-#line 607 "scan-gram.l"
+#line 611 "scan-gram.l"
 { handle_at (current_braced_code,
                                               yytext, *yylloc); }
        YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 610 "scan-gram.l"
-YY_OBS_GROW;
-       YY_BREAK
-/* A stray $, or /, or etc. */
-case 97:
+/* `"<"{splice}"<"' tokenizes `<<%' correctly (as `<<' `%') rather
+     than incorrrectly (as `<' `<%').  */
+case 99:
 YY_RULE_SETUP
-#line 613 "scan-gram.l"
+#line 616 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_BRACED_CODE):
-#line 615 "scan-gram.l"
+#line 618 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a braced code\n"));
+    complain_at (*yylloc, _("unexpected end of file in `{ ... }'"));
     yy_pop_state ();
     YY_OBS_FINISH;
     yylval->string = last_string;
@@ -1952,9 +2005,9 @@ case YY_STATE_EOF(SC_BRACED_CODE):
   `--------------------------------------------------------------*/
 
 
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 633 "scan-gram.l"
+#line 635 "scan-gram.l"
 {
     yy_pop_state ();
     YY_OBS_FINISH;
@@ -1962,21 +2015,20 @@ YY_RULE_SETUP
     return PROLOGUE;
   }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 640 "scan-gram.l"
+#line 642 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 641 "scan-gram.l"
+#line 643 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_PROLOGUE):
-#line 643 "scan-gram.l"
+#line 645 "scan-gram.l"
 {
-    LOCATION_PRINT (stderr, *yylloc);
-    fprintf (stderr, _(": unexpected end of file in a prologue\n"));
+    complain_at (*yylloc, _("unexpected end of file in `%%{ ... %%}'"));
     yy_pop_state ();
     YY_OBS_FINISH;
     yylval->string = last_string;
@@ -1990,13 +2042,13 @@ case YY_STATE_EOF(SC_PROLOGUE):
   `---------------------------------------------------------------*/
 
 
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 661 "scan-gram.l"
+#line 662 "scan-gram.l"
 YY_OBS_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_EPILOGUE):
-#line 663 "scan-gram.l"
+#line 664 "scan-gram.l"
 {
     yy_pop_state ();
     YY_OBS_FINISH;
@@ -2005,12 +2057,12 @@ case YY_STATE_EOF(SC_EPILOGUE):
   }
        YY_BREAK
 
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 672 "scan-gram.l"
+#line 673 "scan-gram.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 2014 "scan-gram.c"
+#line 2066 "scan-gram.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -2290,10 +2342,11 @@ static yy_state_type yy_get_previous_state()
        register char *yy_cp;
 
        yy_current_state = yy_start;
+       yy_current_state += YY_AT_BOL();
 
        for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
                {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 53);
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 55);
                if ( yy_accept[yy_current_state] )
                        {
                        yy_last_accepting_state = yy_current_state;
@@ -2302,7 +2355,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 >= 391 )
+                       if ( yy_current_state >= 411 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2328,7 +2381,7 @@ yy_state_type yy_current_state;
        register int yy_is_jam;
        register char *yy_cp = yy_c_buf_p;
 
-       register YY_CHAR yy_c = 53;
+       register YY_CHAR yy_c = 55;
        if ( yy_accept[yy_current_state] )
                {
                yy_last_accepting_state = yy_current_state;
@@ -2337,11 +2390,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 >= 391 )
+               if ( yy_current_state >= 411 )
                        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 == 390);
+       yy_is_jam = (yy_current_state == 410);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2460,6 +2513,7 @@ static int input()
        *yy_c_buf_p = '\0';     /* preserve yytext */
        yy_hold_char = *++yy_c_buf_p;
 
+       yy_current_buffer->yy_at_bol = (c == '\n');
 
        return c;
        }
@@ -2574,11 +2628,15 @@ YY_BUFFER_STATE b;
        }
 
 
+#ifndef _WIN32
+#include <unistd.h>
+#else
 #ifndef YY_ALWAYS_INTERACTIVE
 #ifndef YY_NEVER_INTERACTIVE
 extern int isatty YY_PROTO(( int ));
 #endif
 #endif
+#endif
 
 #ifdef YY_USE_PROTOS
 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
@@ -2896,7 +2954,7 @@ int main()
        return 0;
        }
 #endif
-#line 672 "scan-gram.l"
+#line 673 "scan-gram.l"
 
 
 /*------------------------------------------------------------------.
@@ -2957,7 +3015,7 @@ handle_action_dollar (char *text, location_t location)
                          rule_length, n, type_name);
        }
       else
-       complain_at (location, _("invalid value: %s"), text);
+       complain_at (location, _("integer out of range: %s"), quote (text));
     }
 }
 
@@ -2974,7 +3032,7 @@ handle_symbol_code_dollar (char *text, location_t location)
   if (*cp == '$')
     obstack_sgrow (&string_obstack, "]b4_dollar_dollar[");
   else
-    complain_at (location, _("%s is invalid"), quote_n (1, text));
+    complain_at (location, _("invalid value: %s"), quote (text));
 }
 
 
@@ -3029,7 +3087,7 @@ handle_action_at (char *text, location_t location)
                          rule_length, n);
        }
       else
-       complain_at (location, _("invalid value: %s"), text);
+       complain_at (location, _("integer out of range: %s"), quote (text));
     }
 }
 
@@ -3046,7 +3104,7 @@ handle_symbol_code_at (char *text, location_t location)
   if (*cp == '$')
     obstack_sgrow (&string_obstack, "]b4_at_dollar[");
   else
-    complain_at (location, _("%s is invalid"), quote_n (1, text));
+    complain_at (location, _("invalid value: %s"), quote (text));
 }
 
 
@@ -3124,11 +3182,29 @@ convert_ucn_to_byte (char const *ucn)
     code = code < sizeof table ? table[code] : -1;
   }
 #endif
-      
+
   return code;
 }
 
 
+/*----------------------------------------------------------------.
+| Handle `#line INT "FILE"'.  ARGS has already skipped `#line '.  |
+`----------------------------------------------------------------*/
+
+static void
+handle_syncline (char *args, location_t *location)
+{
+  int lineno = strtol (args, &args, 10);
+  const char *file = NULL;
+  file = strchr (args, '"') + 1;
+  *strchr (file, '"') = 0;
+  /* FIXME: Leaking...  Can't free, as some locations are still
+     pointing to the old file name.  */
+  infile = xstrdup (file);
+  location->file = infile;
+  location->last_line = lineno;
+}
+
 /*-------------------------.
 | Initialize the scanner.  |
 `-------------------------*/