Be more picky about symbolic time zones, and accept either a symbolic
authorShantonu Sen <ssen@mit.edu>
Tue, 6 Feb 2001 20:35:40 +0000 (20:35 +0000)
committerShantonu Sen <ssen@mit.edu>
Tue, 6 Feb 2001 20:35:40 +0000 (20:35 +0000)
or numeric time zone, but never both, since a DST offset might be subtracted
twice. Also, be uniform about assuming that pre-1970 dates are Y2K problems.

sbr/dtime.c
sbr/dtimep.c
sbr/dtimep.lex

index 57b61c8..3a37fe3 100644 (file)
@@ -412,8 +412,11 @@ dmktime (struct tws *tw)
     year = tw->tw_year;
 
     result = 0;
-    if (year < 100)
-       year += 1900;
+    if (year < 1970)
+      year += 1900;
+
+    if (year < 1970)
+      year += 100;
 
     for (i = 1970; i < year; i++)
        result += dysize (i);
index e5dc812..e72ec1f 100644 (file)
@@ -282,80 +282,72 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 31
-#define YY_END_OF_BUFFER 32
-static yyconst short int yy_accept[636] =
+#define YY_NUM_RULES 30
+#define YY_END_OF_BUFFER 31
+static yyconst short int yy_accept[571] =
     {   0,
-        0,    0,   32,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   31,   29,   29,   29,   29,   29,   29,   29,
+       29,   29,   29,   29,   29,   29,   29,   29,   29,    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,   14,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   14,    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,   14,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   29,   26,   25,    0,
-        0,   19,   18,    0,   17,   16,    0,    0,   15,   28,
-       27,    0,    0,    0,   21,   20,    0,    0,    0,   24,
-        0,    0,   23,   22,    0,    0,    0,    0,    0,    0,
-        0,    0,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-
-       29,   12,   13,    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,   12,   13,
+        0,    0,   26,   25,   19,   18,   17,   16,   15,   28,
+       27,   21,   20,   24,   23,   22,   12,   13,    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,   12,   13,    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,    9,    9,    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,    0,    9,
         9,    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,    9,    7,    7,    0,    0,    0,
+        0,    0,    0,    0,    0,    9,    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,   10,   11,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
+        7,    7,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    7,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   10,   11,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    7,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    7,    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,    8,    0,    0,    0,    0,    0,
 
+        0,    0,    0,    7,    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,    8,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    6,    6,    6,    6,    6,    6,    6,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
-        0,    5,    0,    0,    0,    0,    0,    0,    3,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    6,    6,
+        6,    6,    6,    6,    6,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    5,    0,    5,    0,    0,    0,
+        0,    0,    0,    3,    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,    5,
-        5,    5,    0,    0,    8,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
-        0,    0,    6,    6,    0,    6,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    3,    0,    0,    6,
-        0,    0,    0,    0,    0,    0,    6,    6,    0,    2,
-        4,    1,    1,    0,    6,    0,    0,    0,    1,    0,
-        0,    1,    2,    4,    0
+
+        0,    0,    0,    0,    5,    5,    5,    0,    0,    8,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    5,    0,    0,    6,    6,    0,
+        6,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    3,    0,    0,    6,    0,    0,    0,    0,    0,
+        0,    6,    6,    0,    2,    4,    1,    1,    0,    6,
+        0,    0,    0,    1,    0,    0,    1,    2,    4,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -363,17 +355,17 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    4,    5,    6,    1,    7,    8,    9,    8,
-        8,    8,    8,    8,    8,    8,    8,   10,    1,    1,
-        1,    1,    1,    1,   11,   12,   13,   14,   15,   16,
-       17,   18,   12,   19,   12,   12,   20,   21,   22,   23,
-       12,   12,   24,   25,   26,   12,   27,   12,   12,   12,
+        1,    2,    1,    1,    1,    1,    1,    1,    1,    4,
+        4,    1,    5,    6,    7,    1,    8,    9,   10,    9,
+        9,    9,    9,    9,    9,    9,    9,   11,    1,    1,
+        1,    1,    1,    1,   12,    1,   13,   14,   15,   16,
+       17,   18,    1,   19,    1,    1,   20,   21,   22,   23,
+        1,    1,   24,   25,   26,    1,   27,    1,    1,    1,
        28,    1,   29,    1,    1,    1,   30,   31,   32,   33,
 
-       34,   35,   36,   37,   38,   39,   40,   41,   42,   43,
-       44,   45,   40,   46,   47,   48,   49,   50,   51,   40,
-       52,   40,    1,    1,    1,    1,    1,    1,    1,    1,
+       34,   16,   35,   36,   37,   19,    1,   38,   39,   40,
+       41,   42,    1,   43,   44,   45,   46,   47,   27,    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,    1,
@@ -390,420 +382,363 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[53] =
+static yyconst int yy_meta[49] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    1,    1,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    4,    3,    3,    3,    4,    3,
-        3,    3
+        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[640] =
+static yyconst short int yy_base[571] =
     {   0,
-        0,    0, 1082, 1083,   45,   47,   98,   87,   63,   89,
-       75,  101,  103,  102,  104,   84,  116,  107,  121,  128,
-      109,  110,  116,  110,  139,  124,    0,  130, 1047,  131,
-      133, 1038,  133,   27,  142,  137, 1047,  135,  153,  139,
-     1030, 1043,  182,  184,  171,  180,    0,  182,  183,  184,
-      185,  186,  187,  191,  179,    0,  180,  181, 1034,  184,
-      185, 1028,  186, 1026,  232,  212,  223,    0, 1048, 1047,
-     1025, 1034, 1044, 1043, 1035, 1041, 1040, 1033, 1025, 1037,
-     1036, 1035, 1016,  181, 1033, 1032,  189, 1013, 1030, 1004,
-     1005, 1027, 1026, 1002, 1004, 1005,  998, 1012,    0, 1012,
-
-     1014,  998,    0,  994,  995,  992, 1003,  990,  989, 1004,
-      987,  986, 1002,  994,  983,  982,  981,  985,  195,  193,
-      979,  983,  977,  974,  975,  974,  973,  972,  971,  973,
-      974,  967,  981,    0,  981,  241,  249,   74,  979,  978,
-      193,  981,  966,  977,  974,  274, 1083, 1083, 1083,  235,
-      238, 1083, 1083,  257, 1083, 1083,  242,  259, 1083, 1083,
-     1083,  245,  253,  261, 1083, 1083,  258, 1005,  264, 1083,
-      266,  268, 1083, 1083,  284,  100,  291,  296,  297,  302,
-      977,  976,  270,  276,  275,  282,  301,  283,  308,  309,
-      314, 1002,  315,  313,  311,  316,  320,  321,  325,  333,
-
-      334,  332,  341,  957,  966,  969,  969,  956,  288,  305,
-      948,  949,  951,  344,  352,  354,  954,  947,  951,  943,
-      379,  989,  960,  959,  986,  985,  949,  955,  942,  952,
-      936,  947,  950,  932,  945,  943,  948,  947, 1083, 1083,
-      335,  312,  362,  364,  367,  365,  368,  372,  972,  373,
-      376,  377,  374,  376,  422,  971,  924,  940,  940,  426,
-      125,  935,  934,  342,  937,  922,  933,  930,  911,  916,
-      959,  908,  928,  924,  924,  914,  903,  921,  923,  905,
-      931,  930,  430,  908,  901,  905,  897,  915,  942,  941,
-      905,  899,  909,  905,  434,  438,  442,  936,  384,  935,
-
-      902,  889,  450,  932,  887,  896,  899,  899,  886,  351,
-      359,  878,  879,  881,  443,  873,  451,  890,  877,  892,
-      890,  452,  890,  867,  885,  875,  874,  450,  454,  913,
-      866,  882,  882,  865,  908,  878,  874,  865,  473,  459,
-      482,  468,  470,  860,  853,  370,  870,  869,  411,  872,
-      857,  868,  865,  395,  406,  471,  463,  447,  435,  484,
-      374,  896,  486,  493,  496,  851,  894,  843,  860,  841,
-      497,  862,  862,  861,  498,  502,  887,  854,  841,  834,
-      851,  838,  852,  504,  880,  514,  519,  879,  878,  833,
-      842,  845,  845,  832,  460,  479,  824,  825,  827,  524,
-
-      830,  823,  827,  819,  837,  864,  863,  827,  821,  831,
-      827,  858,  533,  813,  534,  806, 1083, 1083,  532,  521,
-      540,  811,  804,  809,  852,  819,  842,  537,  548,  849,
-      543,  551,  541,  506,  513,  515,  552,  555,  560,  556,
-      848,  563,  561,  564,  569,  847,  800,  816,  816,  799,
-      842,  812,  808,  799,  838,  565,  572,  837,  836,  835,
-      834,  789,  576,  788,  789,  557,  549,  798,  587,  600,
-      790,  783,  787,  779,  797,  824,  823,  787,  781,  791,
-      787,  602,  818,  598,  817,  784,  771,  764,  781,  768,
-      782,  802,  605,  809,  800,  771,  765,  759,  763,  756,
-
-      770,  770,  607,  609,  800,  753,  769,  769,  752,  795,
-      765,  761,  752,  611,  614,  623,  747,  740,  745,  788,
-      755,  618,  620,  755,  754,  737,  752,  738,  736,  739,
-      628,  631,  779,  746,  733,  726,  743,  730,  744,  633,
-      636,  644,  639,  642,  772,  771,  770,  725,  760,  647,
-      739,  738,  721,  736,  718,  731,  729,  655,  650,  658,
-      716,  709,  714,  757,  724,  660,  755,  662,  664,  672,
-      674,  682,  754,  677, 1083,  703,  702,  720,  700,  718,
-      720,  702,  684,  746,  745,  744,  743,  698,  687,  673,
-      696,  680, 1083, 1083,  713, 1083,  712,  684,  632,  651,
-
-      691,  632,  583,  693,  701,  696, 1083,  539,  524, 1083,
-      539,  699,  703,  705,  707,  709, 1083, 1083,  377,  403,
-      309,  711,  713,  108, 1083,  715,  717,  719,  721,  723,
-      725, 1083, 1083, 1083, 1083,  733,  735,   73,  737
+        0,    0,  907,  908,   37,   52,   55,   78,   24,  872,
+       25,   44,   48,  864,  872,   61,   46,  869,   81,   70,
+       82,   84,  882,   85,   86,  877,   87,  875,   69,   70,
+       72,  860,   79,   82,  854,   84,  852,  109,  111,  127,
+      115,  125,  853,  860,  862,  862,  855,  851,   13,   87,
+      850,  842,  843,  842,  844,  845,  838,  849,  849,  851,
+      838,  854,  853,  852,  851,  850,  849,  848,  847,  846,
+      845,  844,  843,  842,  841,  908,  820,  819,  818,  817,
+      816,  815,  814,  813,  812,  811,  810,  809,  808,  807,
+      127,  135,   92,  817,  816,   51,  819,  807,  815,  812,
+
+      145,  138,  140,  129,  148,  156,  154,  157,  159,  162,
+      843,  163,  168,  170,  171,  174,  176,  177,  178,  186,
+      815,  814,  908,  908,  908,  908,  908,  908,  908,  908,
+      908,  908,  908,  908,  908,  908,  188,  194,  799,  806,
+      808,  808,  798,  147,  147,  790,  791,  793,  197,  205,
+      206,  796,  789,  793,  785,  225,  828,  799,  798,  825,
+      824,  789,  794,  784,  791,  778,  786,  789,  774,  784,
+      782,  787,  786,  908,  908,  199,  172,  197,  208,  179,
+      212,  219,  222,  811,  227,  221,  226,  223,  233,  266,
+      810,  766,  779,  779,  268,  206,  774,  773,  210,  776,
+
+      764,  772,  769,  754,  758,  798,  751,  767,  763,  763,
+      756,  746,  760,  762,  747,  770,  769,  271,  750,  743,
+      747,  739,  754,  781,  780,  745,  741,  748,  744,  277,
+      280,  282,  775,  257,  774,  741,  731,  291,  771,  729,
+      736,  738,  738,  728,  245,  251,  720,  721,  723,  294,
+      716,  295,  729,  719,  731,  729,  296,  729,  710,  724,
+      717,  716,  299,  307,  752,  708,  721,  721,  707,  747,
+      717,  713,  707,  316,  310,  327,  313,  318,  702,  696,
+      292,  709,  708,  258,  711,  699,  707,  704,  304,  228,
+      312,  331,  293,  338,  341,  340,  735,  342,  343,  345,
+
+      693,  733,  686,  699,  684,  346,  701,  701,  700,  347,
+      349,  726,  693,  683,  677,  690,  680,  691,  344,  719,
+      358,  360,  718,  717,  675,  682,  684,  684,  674,  323,
+      330,  666,  667,  669,  378,  672,  665,  669,  661,  676,
+      703,  702,  667,  663,  670,  666,  697,  375,  655,  377,
+      649,  908,  908,  383,  385,  387,  653,  647,  651,  691,
+      658,  680,  389,  398,  688,  392,  401,  369,  363,  348,
+      389,  402,  403,  406,  413,  687,  410,  411,  414,  418,
+      686,  642,  655,  655,  641,  681,  651,  647,  641,  677,
+      415,  420,  676,  675,  674,  673,  631,  424,  630,  631,
+
+      389,  221,  637,  444,  445,  632,  625,  629,  621,  636,
+      663,  662,  627,  623,  630,  626,  447,  657,  456,  656,
+      623,  613,  607,  620,  610,  621,  640,  429,  648,  638,
+      611,  607,  601,  605,  598,  609,  609,  451,  454,  639,
+      595,  608,  608,  594,  634,  604,  600,  594,  456,  459,
+      469,  589,  583,  587,  627,  594,  463,  465,  594,  593,
+      579,  591,  580,  578,  581,  474,  478,  618,  585,  575,
+      569,  582,  572,  583,  480,  483,  492,  486,  490,  611,
+      610,  609,  567,  598,  495,  578,  577,  563,  575,  560,
+      570,  568,  504,  498,  507,  558,  552,  556,  596,  563,
+
+      509,  594,  511,  513,  522,  524,  533,  593,  527,  908,
+      546,  545,  559,  543,  557,  559,  544,  535,  585,  584,
+      583,  525,  482,  538,  475,  527,  531,  908,  908,  485,
+      908,  482,  462,  464,  474,  541,  451,  430,  543,  552,
+      546,  908,  388,  378,  908,  220,  548,  550,  554,  556,
+      558,  908,  908,  190,  111,   64,  560,  562,   54,  908,
+      564,  566,  568,  570,  572,  574,  908,  908,  908,  908
     } ;
 
-static yyconst short int yy_def[640] =
+static yyconst short int yy_def[571] =
     {   0,
-      635,    1,  635,  635,  635,  635,  635,  636,  636,  636,
-      636,   10,   10,   10,   10,  636,   10,   10,   10,   10,
-      636,  636,  636,   13,  635,  637,  637,  637,  637,  637,
-      637,  637,  637,  637,  637,  637,  637,  637,  637,  637,
-      637,  637,  635,  635,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,  637,  637,  637,  637,  637,  637,
-      637,  637,  637,  637,  635,  635,  635,  638,  638,  638,
-      635,  635,  638,  638,  635,  638,  638,  635,  635,  638,
-      638,  638,  635,  635,  638,  638,  635,  635,  638,  635,
-      635,  638,  638,  635,  635,  635,  635,  635,  638,  635,
-
-      635,  635,  639,  639,  639,  639,  639,  639,  639,  639,
-      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
-      639,  639,  639,  639,  639,  639,  639,  639,  639,  639,
-      639,  639,  639,  639,  639,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,    0,  635,  635,  635,  635
+      570,    1,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,    0
     } ;
 
-static yyconst short int yy_nxt[1136] =
+static yyconst short int yy_nxt[957] =
     {   0,
-        4,    4,    4,    5,    4,    6,    4,    7,    7,    4,
-        8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
-       18,   19,   20,   21,   22,   23,   24,   25,    4,   26,
-       27,   28,   29,   30,   31,   32,   33,   27,   34,   27,
-       27,   35,   36,   37,   38,   27,   39,   40,   41,   27,
-       42,   27,   43,   43,   44,   44,  118,   45,   46,   47,
-       46,   48,   46,   49,   50,   46,   51,   52,   46,   53,
-       46,   46,   54,   46,  147,  119,   55,   56,   57,   56,
-       58,   56,   59,   60,   56,   56,   56,   56,   61,   62,
-       56,   63,   56,   56,   56,   64,   56,   56,   56,   65,
-
-       69,  216,   73,   66,   66,   67,   67,  635,   75,  605,
-       70,  635,   74,   83,   76,   68,   68,   81,  204,  635,
-       68,   80,  205,  635,   77,   68,   68,   82,  635,   85,
-       89,   71,   84,  635,   68,   72,   78,  635,   94,   86,
-       99,   92,   95,  100,   68,   87,   97,  232,   79,  101,
-       90,   93,   91,  635,  635,  635,  104,   96,   98,   88,
-      635,  102,  108,  111,  635,  116,  113,  127,  105,  305,
-      106,  120,  107,  306,  121,  132,  109,  112,  114,  117,
-      124,  128,  129,  125,   69,  122,  130,  133,  123,  136,
-      136,  137,  137,   68,   70,   76,   68,   81,   85,   68,
-
-       92,  131,   80,   68,   68,   77,   68,   82,   86,   89,
-       93,  104,  108,  111,   68,   99,  116,  121,  127,  146,
-      146,  163,  208,  164,   65,  106,  109,  112,   66,   66,
-      117,  123,  128,   65,  167,  189,  216,  190,  191,  216,
-      168,  209,  138,  216,  192,  139,  216,  140,  202,  202,
-      141,  142,  143,  144,  216,  145,  203,  203,  216,  216,
-      221,  138,  216,  222,  139,  221,  140,  216,  222,  216,
-      141,  216,  217,  142,  143,  144,  216,  216,  145,  214,
-      214,  215,  215,  216,  216,  221,  218,  220,  222,  227,
-      219,  223,  221,  224,  226,  222,  228,  221,  221,  229,
-
-      222,  222,  221,  221,  225,  222,  222,  217,  219,  216,
-      216,  230,  216,  283,  216,  216,  221,  221,  627,  222,
-      222,  216,  221,  233,  218,  222,  221,  220,  246,  222,
-      247,  224,  231,  223,  221,  221,  283,  222,  222,  239,
-      239,  234,  226,  235,  236,  227,  229,  228,  240,  240,
-      248,  253,  254,  233,  230,  216,  249,  214,  214,  225,
-      285,  255,  255,  283,  231,  283,  283,  232,  283,  283,
-      234,  309,  284,  283,  283,  400,  236,  283,  283,  235,
-      221,  295,  295,  296,  296,  297,  260,  260,  298,  261,
-      310,  359,  262,  360,  263,  286,  400,  264,  265,  266,
-
-      267,  290,  268,  291,  361,  408,  292,  400,  261,  287,
-      362,  262,  626,  263,  390,  288,  289,  264,  391,  293,
-      265,  266,  267,  297,  294,  268,  298,  303,  625,  299,
-      299,  283,  401,  304,  304,  339,  400,  328,  329,  339,
-      394,  340,  340,  297,  221,  341,  341,  222,  400,  342,
-      343,  303,  221,  221,  402,  222,  222,  375,  375,  395,
-      346,  376,  376,  347,  400,  348,  385,  385,  349,  350,
-      351,  352,  400,  353,  339,  386,  386,  387,  387,  346,
-      384,  384,  347,  339,  348,  400,  406,  400,  349,  385,
-      385,  350,  351,  352,  400,  405,  353,  400,  221,  419,
-
-      438,  222,  439,  419,  403,  420,  420,  470,  404,  421,
-      421,  427,  427,  428,  470,  429,  470,  407,  430,  409,
-      429,  431,  431,  430,  440,  400,  432,  432,  458,  458,
-      441,  445,  445,  419,  221,  221,  410,  222,  222,  457,
-      457,  419,  470,  411,  463,  463,  473,  458,  458,  429,
-      469,  469,  429,  470,  472,  430,  470,  470,  469,  469,
-      474,  470,  470,  464,  470,  470,  221,  465,  619,  222,
-      482,  466,  467,  483,  468,  618,  484,  484,  471,  492,
-      492,  493,  464,  495,  495,  500,  498,  478,  429,  465,
-      617,  430,  604,  477,  466,  467,  479,  501,  468,  482,
-
-      475,  470,  483,  482,  480,  499,  476,  503,  504,  514,
-      515,  481,  522,  522,  531,  531,  532,  532,  540,  540,
-      541,  542,  542,  541,  516,  549,  549,  550,  550,  558,
-      543,  544,  558,  470,  566,  559,  559,  567,  560,  560,
-      568,  568,  541,  569,  569,  566,  571,  571,  567,  572,
-      572,  570,  570,  541,  575,  575,  558,  584,  584,  558,
-      601,  566,  583,  583,  611,  584,  584,  589,  589,  590,
-      590,  591,  591,  566,  566,  566,  567,  567,  567,  590,
-      590,  568,  568,  566,  592,  592,  567,  607,  607,  570,
-      570,  600,  600,  601,  603,  603,  604,  605,  612,  612,
-
-      613,  613,  605,  616,  616,  606,  620,  620,  614,  615,
-      621,  621,  622,  622,  623,  623,  624,  624,  628,  628,
-      629,  629,  630,  630,  631,  631,  632,  632,  632,  632,
-      633,  633,  634,  634,   68,  610,   68,  103,  103,  147,
-      147,  609,  608,  602,  470,  470,  470,  558,  599,  598,
-      597,  596,  595,  594,  593,  400,  566,  588,  470,  587,
-      586,  585,  582,  581,  580,  579,  578,  577,  576,  574,
-      573,  400,  400,  400,  565,  564,  563,  441,  562,  561,
-      470,  557,  556,  555,  554,  553,  552,  551,  548,  400,
-      547,  546,  545,  539,  538,  537,  470,  536,  535,  534,
-
-      533,  470,  530,  529,  528,  527,  526,  525,  524,  523,
-      283,  493,  521,  520,  519,  362,  518,  517,  400,  516,
-      513,  512,  511,  510,  470,  470,  509,  508,  507,  506,
-      505,  502,  497,  496,  494,  283,  283,  283,  419,  216,
-      491,  490,  489,  400,  488,  487,  486,  485,  400,  470,
-      429,  428,  462,  283,  461,  460,  459,  456,  455,  216,
-      454,  453,  452,  451,  400,  400,  450,  449,  448,  447,
-      446,  444,  443,  442,  437,  436,  435,  434,  433,  216,
-      216,  339,  426,  425,  424,  249,  423,  422,  283,  418,
-      417,  416,  415,  414,  413,  216,  412,  400,  399,  398,
-
-      397,  396,  393,  392,  389,  388,  383,  382,  381,  283,
-      380,  379,  378,  377,  283,  374,  373,  372,  371,  370,
-      369,  368,  367,  366,  168,  365,  364,  363,  358,  357,
-      356,  355,  354,  303,  345,  344,  216,  297,  338,  337,
-      336,  335,  283,  283,  334,  333,  332,  331,  330,  327,
-      326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
-      216,  316,  315,  314,  313,  312,  311,  308,  307,  302,
-      301,  300,  216,  283,  282,  281,  280,  279,  278,  277,
-      276,  275,  274,  273,  272,  271,  216,  216,  270,  269,
-      221,  259,  258,  257,  256,  252,  251,  250,  245,  244,
-
-      243,  242,  241,  216,  238,  237,  216,  213,  212,  211,
-      210,  207,  206,  201,  200,  199,  198,  197,  196,  174,
-      173,  195,  170,  194,  166,  193,  165,  188,  161,  160,
-      159,  187,  186,  156,  155,  185,  153,  152,  184,  149,
-      183,  148,  182,  181,  180,  179,  178,  177,  176,  175,
-      174,  173,  172,  171,  170,  169,  166,  165,  162,  161,
-      160,  159,  158,  157,  156,  155,  154,  153,  152,  151,
-      150,  149,  148,  134,  125,  115,  135,  134,  126,  115,
-      110,  635,    3,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635
+        4,    5,    5,    5,    6,    4,    7,    4,    8,    8,
+        4,    9,    4,   10,    4,   11,    4,    4,   12,   13,
+       14,   15,    4,   16,   17,    4,   18,   19,    4,    9,
+        4,    4,   10,    4,    4,    4,    4,    4,   13,   14,
+       15,    4,    4,   16,   17,    4,    4,    4,   20,   21,
+      108,   22,  109,   23,   24,  540,   25,   26,   46,   27,
+       38,   38,   28,   39,   39,   43,   29,   47,   30,   44,
+       31,   32,   33,   48,  562,   34,   35,   50,   36,   40,
+      143,   57,   37,   62,   41,   41,   42,   42,   51,   49,
+       54,   58,   60,   63,   55,   64,  144,   66,   69,   71,
+
+       74,   77,   79,   61,   81,   65,   56,   67,   70,   72,
+       75,   84,   78,   80,   86,   82,   89,   91,   91,   92,
+       92,  561,   85,  101,  101,   87,   40,   90,   40,  110,
+      151,   41,   41,  139,  111,  137,  137,  140,   93,  151,
+       94,  151,   95,  138,  138,   96,   97,   98,   99,  151,
+      100,  149,  149,  150,  150,  151,   93,  156,  151,   94,
+      151,  157,  154,  151,  156,   97,   98,   99,  157,  151,
+      100,  151,  156,  218,  152,  151,  157,  156,  156,  156,
+      218,  157,  157,  157,  181,  153,  182,  156,  158,  183,
+      155,  157,  161,  162,  184,  163,  174,  174,  218,  159,
+
+      218,  164,  175,  175,  160,  188,  189,  151,  168,  218,
+      165,  149,  149,  218,  190,  190,  166,  220,  167,  169,
+      218,  170,  218,  218,  223,  171,  156,  218,  218,  335,
+      221,  230,  230,  195,  195,  219,  196,  560,  197,  244,
+      198,  231,  231,  199,  200,  201,  202,  240,  203,  554,
+      222,  241,  225,  226,  196,  245,  435,  197,  232,  224,
+      227,  228,  233,  200,  201,  202,  436,  232,  203,  238,
+      229,  233,  218,  337,  234,  234,  239,  239,  274,  263,
+      264,  274,  294,  232,  295,  275,  275,  329,  276,  276,
+      277,  278,  238,  296,  335,  156,  156,  156,  297,  157,
+
+      157,  157,  281,  330,  282,  335,  283,  310,  310,  284,
+      285,  286,  287,  335,  288,  311,  311,  274,  320,  320,
+      281,  321,  321,  282,  319,  319,  322,  322,  274,  285,
+      286,  287,  335,  325,  288,  320,  320,  326,  340,  335,
+      336,  335,  335,  335,  335,  338,  335,  156,  354,  405,
+      354,  157,  362,  362,  363,  355,  355,  356,  356,  364,
+      373,  364,  374,  365,  405,  365,  366,  366,  367,  367,
+      405,  343,  375,  339,  342,  344,  156,  376,  156,  335,
+      157,  408,  157,  345,  354,  341,  380,  380,  354,  346,
+      405,  392,  392,  393,  393,  393,  393,  398,  398,  364,
+
+      404,  404,  364,  405,  405,  406,  365,  405,  407,  404,
+      404,  405,  405,  399,  405,  405,  156,  400,  433,  417,
+      157,  401,  402,  418,  403,  553,  419,  419,  427,  427,
+      428,  409,  430,  430,  434,  552,  400,  457,  457,  412,
+      539,  401,  402,  414,  413,  364,  405,  410,  417,  365,
+      411,  415,  405,  438,  439,  449,  450,  417,  416,  466,
+      466,  418,  467,  467,  475,  475,  476,  477,  477,  476,
+      451,  484,  484,  485,  485,  493,  501,  478,  479,  493,
+      502,  501,  494,  494,  536,  502,  495,  495,  503,  503,
+      476,  504,  504,  501,  506,  506,  546,  502,  507,  507,
+
+      505,  505,  476,  510,  510,  493,  519,  519,  493,  545,
+      501,  544,  518,  518,  543,  519,  519,  524,  524,  525,
+      525,  526,  526,  501,  537,  501,  405,  502,  540,  502,
+      525,  525,  503,  503,  501,  527,  527,  541,  502,  542,
+      542,  505,  505,  535,  535,  536,  538,  538,  539,  547,
+      547,  548,  548,  540,  551,  551,  555,  555,  556,  556,
+      549,  550,  557,  557,  558,  558,  559,  559,  563,  563,
+      564,  564,  565,  565,  566,  566,  567,  567,  567,  567,
+      568,  568,  569,  569,  405,  405,  493,  534,  533,  532,
+      531,  530,  529,  528,  335,  501,  523,  405,  522,  521,
+
+      520,  517,  516,  515,  514,  513,  512,  511,  509,  508,
+      335,  335,  335,  500,  499,  498,  376,  497,  496,  405,
+      492,  491,  490,  489,  488,  487,  486,  483,  335,  482,
+      481,  480,  474,  473,  472,  405,  471,  470,  469,  468,
+      405,  465,  464,  463,  462,  461,  460,  459,  458,  218,
+      428,  456,  455,  454,  297,  453,  452,  335,  451,  448,
+      447,  446,  445,  405,  405,  444,  443,  442,  441,  440,
+      437,  432,  431,  429,  218,  218,  218,  354,  151,  426,
+      425,  424,  335,  423,  422,  421,  420,  335,  405,  364,
+      363,  397,  218,  396,  395,  394,  391,  390,  151,  389,
+
+      388,  387,  386,  335,  335,  385,  384,  383,  382,  381,
+      379,  378,  377,  372,  371,  370,  369,  368,  151,  151,
+      274,  361,  360,  359,  184,  358,  357,  218,  353,  352,
+      351,  350,  349,  348,  151,  347,  335,  334,  333,  332,
+      331,  328,  327,  324,  323,  318,  317,  316,  218,  315,
+      314,  313,  312,  218,  309,  308,  307,  306,  305,  304,
+      303,  302,  301,  111,  300,  299,  298,  293,  292,  291,
+      290,  289,  238,  280,  279,  151,  232,  273,  272,  271,
+      270,  218,  218,  269,  268,  267,  266,  265,  262,  261,
+      260,  259,  258,  257,  256,  255,  254,  253,  252,  151,
+
+      251,  250,  249,  248,  247,  246,  243,  242,  237,  236,
+      235,  151,  218,  217,  216,  215,  214,  213,  212,  211,
+      210,  209,  208,  207,  206,  151,  151,  205,  204,  156,
+      194,  193,  192,  191,  187,  186,  185,  180,  179,  178,
+      177,  176,  173,  172,  151,  148,  147,  146,  145,  142,
+      141,  136,  135,  134,  133,  132,  131,  130,  129,  128,
+      127,  126,  125,  124,  123,  136,  135,  134,  133,  132,
+      131,  130,  129,  128,  127,  126,  125,  124,  123,  122,
+      121,  120,  119,  118,  117,  116,  115,  114,  113,  112,
+      107,  106,  105,  104,  103,  102,   76,   88,   83,   76,
+
+       73,   68,   59,   53,   52,   45,  570,    3,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570
     } ;
 
-static yyconst short int yy_chk[1136] =
+static yyconst short int yy_chk[957] =
     {   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,    5,    5,    6,    6,   34,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,  638,   34,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    7,
-
-        8,  176,   10,    7,    7,    7,    7,    9,   11,  624,
-        8,    9,   10,   16,   12,   14,   13,   15,  138,   11,
-       18,   14,  138,   11,   12,   14,   13,   15,   16,   17,
-       18,    8,   16,   10,   19,    8,   13,   10,   21,   17,
-       23,   20,   21,   24,   19,   17,   22,  176,   13,   25,
-       18,   20,   19,   21,   22,   24,   26,   21,   22,   17,
-       23,   25,   28,   30,   23,   33,   31,   38,   26,  261,
-       26,   35,   26,  261,   35,   40,   28,   30,   31,   33,
-       36,   38,   39,   36,   45,   35,   39,   40,   35,   43,
-       43,   44,   44,   46,   45,   48,   49,   50,   51,   52,
-
-       53,   39,   49,   46,   54,   48,   49,   50,   51,   52,
-       53,   55,   57,   58,   54,   54,   60,   61,   63,   66,
-       66,   84,  141,   84,   67,   55,   57,   58,   67,   67,
-       60,   61,   63,   65,   87,  119,  150,  119,  120,  151,
-       87,  141,   65,  157,  120,   65,  162,   65,  136,  136,
-       65,   65,   65,   65,  163,   65,  137,  137,  154,  167,
-      158,   65,  164,  158,   65,  169,   65,  171,  169,  172,
-       65,  183,  150,   65,   65,   65,  185,  184,   65,  146,
-      146,  146,  146,  186,  188,  175,  151,  157,  175,  167,
-      154,  158,  177,  162,  164,  177,  169,  178,  179,  171,
-
-      178,  179,  187,  180,  163,  187,  180,  183,  185,  189,
-      190,  172,  195,  242,  194,  191,  193,  196,  621,  193,
-      196,  197,  198,  177,  184,  198,  199,  186,  209,  199,
-      209,  188,  175,  187,  200,  201,  241,  200,  201,  202,
-      202,  178,  190,  179,  180,  191,  194,  193,  203,  203,
-      210,  214,  214,  198,  195,  216,  210,  215,  215,  189,
-      242,  216,  216,  243,  196,  244,  246,  197,  245,  247,
-      199,  264,  241,  248,  250,  361,  201,  251,  252,  200,
-      221,  253,  253,  254,  254,  299,  221,  221,  299,  221,
-      264,  310,  221,  310,  221,  243,  354,  221,  221,  221,
-
-      221,  247,  221,  248,  311,  361,  250,  355,  221,  244,
-      311,  221,  620,  221,  346,  245,  246,  221,  346,  251,
-      221,  221,  221,  255,  252,  221,  255,  260,  619,  255,
-      255,  283,  354,  260,  260,  295,  359,  283,  283,  296,
-      349,  295,  295,  297,  315,  296,  296,  315,  358,  297,
-      297,  303,  317,  322,  355,  317,  322,  328,  328,  349,
-      303,  329,  329,  303,  357,  303,  340,  340,  303,  303,
-      303,  303,  356,  303,  339,  342,  342,  343,  343,  303,
-      339,  339,  303,  341,  303,  360,  359,  363,  303,  341,
-      341,  303,  303,  303,  364,  358,  303,  365,  371,  375,
-
-      395,  371,  395,  376,  356,  375,  375,  434,  357,  376,
-      376,  384,  384,  384,  435,  386,  436,  360,  386,  363,
-      387,  386,  386,  387,  396,  400,  387,  387,  420,  420,
-      396,  400,  400,  419,  413,  415,  364,  413,  415,  419,
-      419,  421,  433,  365,  428,  428,  435,  421,  421,  429,
-      431,  431,  432,  437,  434,  432,  438,  440,  432,  432,
-      436,  439,  443,  429,  442,  444,  456,  429,  611,  456,
-      445,  429,  429,  445,  429,  609,  445,  445,  433,  457,
-      457,  457,  429,  463,  463,  467,  466,  440,  469,  429,
-      608,  469,  603,  439,  429,  429,  442,  467,  429,  484,
-
-      437,  470,  484,  482,  443,  466,  438,  470,  470,  482,
-      482,  444,  493,  493,  503,  503,  504,  504,  514,  514,
-      514,  515,  515,  515,  516,  522,  522,  523,  523,  531,
-      516,  516,  532,  602,  540,  531,  531,  540,  532,  532,
-      540,  540,  540,  541,  541,  542,  543,  543,  542,  544,
-      544,  542,  542,  542,  550,  550,  558,  559,  559,  560,
-      600,  566,  558,  558,  599,  560,  560,  566,  566,  568,
-      568,  569,  569,  570,  590,  571,  570,  590,  571,  570,
-      570,  571,  571,  572,  574,  574,  572,  592,  592,  572,
-      572,  583,  583,  583,  589,  589,  589,  591,  601,  601,
-
-      604,  604,  605,  606,  606,  591,  612,  612,  605,  605,
-      613,  613,  614,  614,  615,  615,  616,  616,  622,  622,
-      623,  623,  626,  626,  627,  627,  628,  628,  629,  629,
-      630,  630,  631,  631,  636,  598,  636,  637,  637,  639,
-      639,  597,  595,  588,  587,  586,  585,  584,  582,  581,
-      580,  579,  578,  577,  576,  573,  567,  565,  564,  563,
-      562,  561,  557,  556,  555,  554,  553,  552,  551,  549,
-      548,  547,  546,  545,  539,  538,  537,  536,  535,  534,
-      533,  530,  529,  528,  527,  526,  525,  524,  521,  520,
-      519,  518,  517,  513,  512,  511,  510,  509,  508,  507,
-
-      506,  505,  502,  501,  500,  499,  498,  497,  496,  495,
-      494,  492,  491,  490,  489,  488,  487,  486,  485,  483,
-      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
-      471,  468,  465,  464,  462,  461,  460,  459,  458,  455,
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  441,
-      430,  427,  426,  425,  424,  423,  422,  416,  414,  412,
-      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
-      401,  399,  398,  397,  394,  393,  392,  391,  390,  389,
-      388,  385,  383,  382,  381,  380,  379,  378,  377,  374,
-      373,  372,  370,  369,  368,  367,  366,  362,  353,  352,
-
-      351,  350,  348,  347,  345,  344,  338,  337,  336,  335,
-      334,  333,  332,  331,  330,  327,  326,  325,  324,  323,
-      321,  320,  319,  318,  316,  314,  313,  312,  309,  308,
-      307,  306,  305,  304,  302,  301,  300,  298,  294,  293,
-      292,  291,  290,  289,  288,  287,  286,  285,  284,  282,
-      281,  280,  279,  278,  277,  276,  275,  274,  273,  272,
-      271,  270,  269,  268,  267,  266,  265,  263,  262,  259,
-      258,  257,  256,  249,  238,  237,  236,  235,  234,  233,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  220,  219,  218,  217,  213,  212,  211,  208,  207,
-
-      206,  205,  204,  192,  182,  181,  168,  145,  144,  143,
-      142,  140,  139,  135,  133,  132,  131,  130,  129,  128,
-      127,  126,  125,  124,  123,  122,  121,  118,  117,  116,
-      115,  114,  113,  112,  111,  110,  109,  108,  107,  106,
-      105,  104,  102,  101,  100,   98,   97,   96,   95,   94,
-       93,   92,   91,   90,   89,   88,   86,   85,   83,   82,
-       81,   80,   79,   78,   77,   76,   75,   74,   73,   72,
-       71,   70,   69,   64,   62,   59,   42,   41,   37,   32,
-       29,    3,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635,  635,  635,  635,  635,  635,
-      635,  635,  635,  635,  635
+        1,    1,    1,    1,    1,    1,    1,    1,    5,    5,
+       49,    5,   49,    5,    5,  559,    5,    5,   11,    5,
+        6,    6,    5,    7,    7,    9,    5,   11,    5,    9,
+        5,    5,    5,   12,  556,    5,    5,   13,    5,    8,
+       96,   17,    5,   20,    8,    8,    8,    8,   13,   12,
+       16,   17,   19,   20,   16,   21,   96,   22,   24,   25,
+
+       27,   29,   30,   19,   31,   21,   16,   22,   24,   25,
+       27,   33,   29,   30,   34,   31,   36,   38,   38,   39,
+       39,  555,   33,   41,   41,   34,   42,   36,   40,   50,
+      104,   42,   42,   93,   50,   91,   91,   93,   40,  102,
+       40,  103,   40,   92,   92,   40,   40,   40,   40,  105,
+       40,  101,  101,  101,  101,  107,   40,  106,  108,   40,
+      109,  106,  104,  110,  112,   40,   40,   40,  112,  113,
+       40,  114,  115,  177,  102,  116,  115,  117,  118,  119,
+      180,  117,  118,  119,  144,  103,  144,  120,  106,  145,
+      105,  120,  109,  110,  145,  112,  137,  137,  178,  107,
+
+      176,  113,  138,  138,  108,  149,  149,  151,  117,  179,
+      114,  150,  150,  181,  151,  151,  115,  177,  116,  118,
+      182,  119,  186,  183,  180,  120,  156,  187,  185,  290,
+      178,  188,  188,  156,  156,  176,  156,  554,  156,  199,
+      156,  189,  189,  156,  156,  156,  156,  196,  156,  546,
+      179,  196,  182,  183,  156,  199,  402,  156,  234,  181,
+      185,  186,  234,  156,  156,  156,  402,  190,  156,  195,
+      187,  190,  218,  290,  190,  190,  195,  195,  230,  218,
+      218,  231,  245,  232,  245,  230,  230,  284,  231,  231,
+      232,  232,  238,  246,  293,  250,  252,  257,  246,  250,
+
+      252,  257,  238,  284,  238,  289,  238,  263,  263,  238,
+      238,  238,  238,  291,  238,  264,  264,  274,  275,  275,
+      238,  277,  277,  238,  274,  274,  278,  278,  276,  238,
+      238,  238,  292,  281,  238,  276,  276,  281,  293,  294,
+      289,  296,  295,  298,  299,  291,  300,  306,  310,  370,
+      311,  306,  319,  319,  319,  310,  310,  311,  311,  321,
+      330,  322,  330,  321,  369,  322,  321,  321,  322,  322,
+      368,  296,  331,  292,  295,  298,  348,  331,  350,  335,
+      348,  370,  350,  299,  354,  294,  335,  335,  356,  300,
+      371,  354,  354,  355,  355,  356,  356,  363,  363,  364,
+
+      366,  366,  367,  372,  373,  368,  367,  374,  369,  367,
+      367,  377,  378,  364,  375,  379,  391,  364,  401,  380,
+      391,  364,  364,  380,  364,  544,  380,  380,  392,  392,
+      392,  371,  398,  398,  401,  543,  364,  428,  428,  374,
+      538,  364,  364,  377,  375,  404,  405,  372,  417,  404,
+      373,  378,  537,  405,  405,  417,  417,  419,  379,  438,
+      438,  419,  439,  439,  449,  449,  449,  450,  450,  450,
+      451,  457,  457,  458,  458,  466,  525,  451,  451,  467,
+      525,  475,  466,  466,  535,  475,  467,  467,  475,  475,
+      475,  476,  476,  477,  478,  478,  534,  477,  479,  479,
+
+      477,  477,  477,  485,  485,  493,  494,  494,  495,  533,
+      501,  532,  493,  493,  530,  495,  495,  501,  501,  503,
+      503,  504,  504,  505,  523,  506,  522,  505,  526,  506,
+      505,  505,  506,  506,  507,  509,  509,  526,  507,  527,
+      527,  507,  507,  518,  518,  518,  524,  524,  524,  536,
+      536,  539,  539,  540,  541,  541,  547,  547,  548,  548,
+      540,  540,  549,  549,  550,  550,  551,  551,  557,  557,
+      558,  558,  561,  561,  562,  562,  563,  563,  564,  564,
+      565,  565,  566,  566,  521,  520,  519,  517,  516,  515,
+      514,  513,  512,  511,  508,  502,  500,  499,  498,  497,
+
+      496,  492,  491,  490,  489,  488,  487,  486,  484,  483,
+      482,  481,  480,  474,  473,  472,  471,  470,  469,  468,
+      465,  464,  463,  462,  461,  460,  459,  456,  455,  454,
+      453,  452,  448,  447,  446,  445,  444,  443,  442,  441,
+      440,  437,  436,  435,  434,  433,  432,  431,  430,  429,
+      427,  426,  425,  424,  423,  422,  421,  420,  418,  416,
+      415,  414,  413,  412,  411,  410,  409,  408,  407,  406,
+      403,  400,  399,  397,  396,  395,  394,  393,  390,  389,
+      388,  387,  386,  385,  384,  383,  382,  381,  376,  365,
+      362,  361,  360,  359,  358,  357,  351,  349,  347,  346,
+
+      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
+      334,  333,  332,  329,  328,  327,  326,  325,  324,  323,
+      320,  318,  317,  316,  315,  314,  313,  312,  309,  308,
+      307,  305,  304,  303,  302,  301,  297,  288,  287,  286,
+      285,  283,  282,  280,  279,  273,  272,  271,  270,  269,
+      268,  267,  266,  265,  262,  261,  260,  259,  258,  256,
+      255,  254,  253,  251,  249,  248,  247,  244,  243,  242,
+      241,  240,  239,  237,  236,  235,  233,  229,  228,  227,
+      226,  225,  224,  223,  222,  221,  220,  219,  217,  216,
+      215,  214,  213,  212,  211,  210,  209,  208,  207,  206,
+
+      205,  204,  203,  202,  201,  200,  198,  197,  194,  193,
+      192,  191,  184,  173,  172,  171,  170,  169,  168,  167,
+      166,  165,  164,  163,  162,  161,  160,  159,  158,  157,
+      155,  154,  153,  152,  148,  147,  146,  143,  142,  141,
+      140,  139,  122,  121,  111,  100,   99,   98,   97,   95,
+       94,   90,   89,   88,   87,   86,   85,   84,   83,   82,
+       81,   80,   79,   78,   77,   75,   74,   73,   72,   71,
+       70,   69,   68,   67,   66,   65,   64,   63,   62,   61,
+       60,   59,   58,   57,   56,   55,   54,   53,   52,   51,
+       48,   47,   46,   45,   44,   43,   37,   35,   32,   28,
+
+       26,   23,   18,   15,   14,   10,    3,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
+      570,  570,  570,  570,  570,  570
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -849,9 +784,9 @@ char *yytext;
   if(!(tw.tw_flags & TW_SUCC)) { \
     return (struct tws *)NULL; \
   } \
-  if(tw.tw_year < 1960) \
+  if(tw.tw_year < 1970) \
     tw.tw_year += 1900; \
-  if(tw.tw_year < 1960) \
+  if(tw.tw_year < 1970) \
     tw.tw_year += 100; \
   return(&tw)
 
@@ -1153,7 +1088,7 @@ YY_DECL
        register char *yy_cp = NULL, *yy_bp = NULL;
        register int yy_act;
 
-#line 222 "dtimep.lex"
+#line 223 "dtimep.lex"
 
 
   /* This section begins the definition of dparsetime().
@@ -1219,13 +1154,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 >= 636 )
+                               if ( yy_current_state >= 571 )
                                        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] != 1083 );
+               while ( yy_base[yy_current_state] != 908 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1253,7 +1188,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 237 "dtimep.lex"
+#line 238 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1269,7 +1204,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 250 "dtimep.lex"
+#line 251 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1285,7 +1220,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 262 "dtimep.lex"
+#line 263 "dtimep.lex"
 {
                                      INIT();
                                     SETDAY();
@@ -1299,7 +1234,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 272 "dtimep.lex"
+#line 273 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1315,7 +1250,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 284 "dtimep.lex"
+#line 285 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1329,7 +1264,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 294 "dtimep.lex"
+#line 295 "dtimep.lex"
 {
                                      INIT();
                                     SETMON();
@@ -1343,7 +1278,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 304 "dtimep.lex"
+#line 305 "dtimep.lex"
 {
                                      INIT();
                                     SETMON();
@@ -1355,7 +1290,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 312 "dtimep.lex"
+#line 313 "dtimep.lex"
 {
                                      INIT();
                                     if(europeandate) {
@@ -1377,7 +1312,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 330 "dtimep.lex"
+#line 331 "dtimep.lex"
 {
                                      INIT();
                                     if(europeandate) {
@@ -1397,17 +1332,17 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 347 "dtimep.lex"
+#line 348 "dtimep.lex"
 
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 348 "dtimep.lex"
+#line 349 "dtimep.lex"
 tw.tw_hour += 12;
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 350 "dtimep.lex"
+#line 351 "dtimep.lex"
 {
                                     INIT();
                                     SKIPTOD();
@@ -1415,12 +1350,12 @@ YY_RULE_SETUP
 #ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
                                    zonehack (&tw);
 #endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
-                                   //                              yyterminate();
+                                   yyterminate();
                                     }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 359 "dtimep.lex"
+#line 360 "dtimep.lex"
 {
                                     INIT();
                                     SKIPTOD();
@@ -1428,98 +1363,99 @@ YY_RULE_SETUP
 #ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
                                    zonehack (&tw);
 #endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
-                                   //                              yyterminate();
+                                   yyterminate();
                                    
                                     }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 369 "dtimep.lex"
-INIT(); SETZONE(0);
+#line 370 "dtimep.lex"
+INIT(); SETZONE(0); yyterminate();
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 370 "dtimep.lex"
-INIT(); SETZONE(0);
+#line 371 "dtimep.lex"
+INIT(); SETZONE(0); yyterminate();
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 371 "dtimep.lex"
-INIT(); SETZONE(-500);
+#line 372 "dtimep.lex"
+INIT(); SETZONE(-500); yyterminate();
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 372 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-500);
+#line 373 "dtimep.lex"
+{ INIT(); SETDST(); SETZONE(-500);
+                                      yyterminate(); }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 373 "dtimep.lex"
-INIT(); SETZONE(-600);
+#line 375 "dtimep.lex"
+INIT(); SETZONE(-600); yyterminate();
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 374 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-600);
+#line 376 "dtimep.lex"
+{ INIT(); SETDST(); SETZONE(-600);
+                                      yyterminate(); }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 375 "dtimep.lex"
-INIT(); SETZONE(-700);
+#line 378 "dtimep.lex"
+INIT(); SETZONE(-700); yyterminate();
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 376 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-700);
+#line 379 "dtimep.lex"
+{ INIT(); SETDST(); SETZONE(-700);
+                                      yyterminate(); }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 377 "dtimep.lex"
-INIT(); SETZONE(-800);
+#line 381 "dtimep.lex"
+INIT(); SETZONE(-800); yyterminate();
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 378 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-800);
+#line 382 "dtimep.lex"
+{ INIT(); SETDST(); SETZONE(-800);
+                                      yyterminate(); }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 379 "dtimep.lex"
-INIT(); SETZONE(-330);
+#line 384 "dtimep.lex"
+INIT(); SETZONE(-330); yyterminate();
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 380 "dtimep.lex"
-INIT(); SETZONE(-400);
+#line 385 "dtimep.lex"
+INIT(); SETZONE(-400); yyterminate();
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 381 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-400);
+#line 386 "dtimep.lex"
+{ INIT(); SETDST(); SETZONE(-400);
+                                      yyterminate(); }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 382 "dtimep.lex"
-INIT(); SETZONE(-1000);
+#line 388 "dtimep.lex"
+INIT(); SETZONE(-1000); yyterminate();
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 383 "dtimep.lex"
-INIT(); SETDST(); SETZONE(-1000);
+#line 389 "dtimep.lex"
+{ INIT(); SETDST(); SETZONE(-1000);
+                                      yyterminate(); }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 384 "dtimep.lex"
-;
-       YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 385 "dtimep.lex"
+#line 391 "dtimep.lex"
 
        YY_BREAK
-case 31:
+case 30:
 YY_RULE_SETUP
-#line 386 "dtimep.lex"
+#line 392 "dtimep.lex"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -1813,7 +1749,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 >= 636 )
+                       if ( yy_current_state >= 571 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1848,11 +1784,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 >= 636 )
+               if ( yy_current_state >= 571 )
                        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 == 635);
+       yy_is_jam = (yy_current_state == 570);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2407,4 +2343,4 @@ int main()
        return 0;
        }
 #endif
-#line 386 "dtimep.lex"
+#line 392 "dtimep.lex"
index 8e78245..a228694 100644 (file)
@@ -28,9 +28,9 @@
   if(!(tw.tw_flags & TW_SUCC)) { \
     return (struct tws *)NULL; \
   } \
-  if(tw.tw_year < 1960) \
+  if(tw.tw_year < 1970) \
     tw.tw_year += 1900; \
-  if(tw.tw_year < 1960) \
+  if(tw.tw_year < 1970) \
     tw.tw_year += 100; \
   return(&tw)
 
@@ -218,6 +218,7 @@ w   ([ \t]*)
 W      ([ \t]+)
 D      ([0-9]?[0-9])
 d      [0-9]
+nl      [ \t\n()]
 
 %%
 %{
@@ -354,7 +355,7 @@ d   [0-9]
 #ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
                                    zonehack (&tw);
 #endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
-                                   //                              yyterminate();
+                                   yyterminate();
                                     }
 "-"{D}{d}{d}                                  {
                                     INIT();
@@ -363,23 +364,28 @@ d [0-9]
 #ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
                                    zonehack (&tw);
 #endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
-                                   //                              yyterminate();
+                                   yyterminate();
                                    
                                     }
-"-"?("ut"|"UT")                            INIT(); SETZONE(0);
-"-"?("gmt"|"GMT")                  INIT(); SETZONE(0);
-"-"?("est"|"EST")                  INIT(); SETZONE(-500);
-"-"?("edt"|"EDT")                  INIT(); SETDST(); SETZONE(-500);
-"-"?("cst"|"CST")                  INIT(); SETZONE(-600);
-"-"?("cdt"|"CDT")                  INIT(); SETDST(); SETZONE(-600);
-"-"?("mst"|"MST")                  INIT(); SETZONE(-700);
-"-"?("mdt"|"MDT")                  INIT(); SETDST(); SETZONE(-700);
-"-"?("pst"|"PST")                  INIT(); SETZONE(-800);
-"-"?("pdt"|"PDT")                  INIT(); SETDST(); SETZONE(-800);
-"-"?("nst"|"NST")                  INIT(); SETZONE(-330);
-"-"?("ast"|"AST")                  INIT(); SETZONE(-400);
-"-"?("adt"|"ADT")                  INIT(); SETDST(); SETZONE(-400);
-"-"?("hst"|"HST")                  INIT(); SETZONE(-1000);
-"-"?("hdt"|"HDT")                  INIT(); SETDST(); SETZONE(-1000);
-"-"?([a-z]{3}|[A-Z]{3})                    ;
+{nl}("ut"|"UT")                     INIT(); SETZONE(0); yyterminate();
+{nl}("gmt"|"GMT")                  INIT(); SETZONE(0); yyterminate();
+{nl}("est"|"EST")                  INIT(); SETZONE(-500); yyterminate();
+{nl}("edt"|"EDT")                  { INIT(); SETDST(); SETZONE(-500);
+                                      yyterminate(); }
+{nl}("cst"|"CST")                  INIT(); SETZONE(-600); yyterminate();
+{nl}("cdt"|"CDT")                  { INIT(); SETDST(); SETZONE(-600);
+                                      yyterminate(); }
+{nl}("mst"|"MST")                  INIT(); SETZONE(-700); yyterminate();
+{nl}("mdt"|"MDT")                  { INIT(); SETDST(); SETZONE(-700);
+                                      yyterminate(); }
+{nl}("pst"|"PST")                  INIT(); SETZONE(-800); yyterminate();
+{nl}("pdt"|"PDT")                  { INIT(); SETDST(); SETZONE(-800);
+                                      yyterminate(); }
+{nl}("nst"|"NST")                  INIT(); SETZONE(-330); yyterminate();
+{nl}("ast"|"AST")                  INIT(); SETZONE(-400); yyterminate();
+{nl}("adt"|"ADT")                  { INIT(); SETDST(); SETZONE(-400);
+                                      yyterminate(); }
+{nl}("hst"|"HST")                  INIT(); SETZONE(-1000); yyterminate();
+{nl}("hdt"|"HDT")                  { INIT(); SETDST(); SETZONE(-1000);
+                                      yyterminate(); }
 .|\n