Parse a time with fractional seconds
[libacl.git] / src / dateyacc.c
index 40fe98d..a7f10da 100644 (file)
@@ -120,10 +120,11 @@ extern int yydebug;
     NUM235959 = 266,
     NUM991231 = 267,
     NUM99991231 = 268,
-    AMPM = 269,
-    STD_ZONE = 270,
-    DST_ZONE = 271,
-    DST_SUFFIX = 272
+    NUM999999 = 269,
+    AMPM = 270,
+    STD_ZONE = 271,
+    DST_ZONE = 272,
+    DST_SUFFIX = 273
   };
 #endif
 /* Tokens.  */
@@ -138,10 +139,11 @@ extern int yydebug;
 #define NUM235959 266
 #define NUM991231 267
 #define NUM99991231 268
-#define AMPM 269
-#define STD_ZONE 270
-#define DST_ZONE 271
-#define DST_SUFFIX 272
+#define NUM999999 269
+#define AMPM 270
+#define STD_ZONE 271
+#define DST_ZONE 272
+#define DST_SUFFIX 273
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -152,7 +154,7 @@ union YYSTYPE
 
     int IntVal;
 
-#line 156 "dateyacc.c" /* yacc.c:355  */
+#line 158 "dateyacc.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -169,7 +171,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 173 "dateyacc.c" /* yacc.c:358  */
+#line 175 "dateyacc.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -411,21 +413,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  43
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   366
+#define YYLAST   384
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  23
+#define YYNTOKENS  24
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  20
+#define YYNNTS  21
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  125
+#define YYNRULES  135
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  189
+#define YYNSTATES  200
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   272
+#define YYMAXUTOK   273
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -438,8 +440,8 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    22,     2,    19,    18,    20,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    21,     2,
+       2,     2,     2,    23,     2,    20,    19,    21,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    22,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -461,26 +463,27 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17
+      15,    16,    17,    18
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,    89,    89,    90,    94,    95,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,   154,   155,   156,
-     157,   158,   165,   167,   172,   173,   174,   176,   180,   181,
-     182,   184,   185,   189,   195,   203,   205,   207,   212,   214,
-     219,   221,   223,   228,   230,   232,   234,   236,   241,   243,
-     248,   249,   250,   251,   255,   260,   264,   269,   274,   279,
-     284,   289,   294,   299,   304,   309,   314,   322,   332,   334,
-     336,   338,   340,   342,   344,   346,   348,   350,   355,   357,
-     359,   361,   363,   365,   367,   372
+       0,    91,    91,    92,    96,    97,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   113,   114,   115,   116,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   168,   169,   170,   171,
+     172,   179,   181,   186,   187,   188,   190,   194,   195,   196,
+     198,   199,   203,   209,   217,   219,   221,   226,   228,   233,
+     235,   237,   242,   244,   246,   248,   250,   255,   257,   262,
+     263,   264,   265,   269,   274,   278,   283,   288,   293,   298,
+     303,   308,   313,   318,   323,   328,   333,   341,   351,   353,
+     355,   357,   359,   361,   363,   365,   367,   369,   374,   376,
+     378,   380,   382,   384,   386,   391
 };
 #endif
 
@@ -491,11 +494,11 @@ static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "DAY_NAME", "MONTH_NAME", "NUM9",
   "NUM23", "NUM59", "NUM99", "NUM2359", "NUM9999", "NUM235959",
-  "NUM991231", "NUM99991231", "AMPM", "STD_ZONE", "DST_ZONE", "DST_SUFFIX",
-  "'.'", "'-'", "'/'", "':'", "'+'", "$accept", "num59", "num", "goal",
-  "dayname", "date.year", "year.date", "yymmdd", "date", "hyphen.date",
-  "slash.date", "year", "month.name", "time", "hour", "hour.alone",
-  "am.pm", "zone", "zone.offset", "time2359", YY_NULLPTR
+  "NUM991231", "NUM99991231", "NUM999999", "AMPM", "STD_ZONE", "DST_ZONE",
+  "DST_SUFFIX", "'.'", "'-'", "'/'", "':'", "'+'", "$accept", "num59",
+  "num", "anynumber", "goal", "dayname", "date.year", "year.date",
+  "yymmdd", "date", "hyphen.date", "slash.date", "year", "month.name",
+  "time", "hour", "hour.alone", "am.pm", "zone", "zone.offset", "time2359", YY_NULLPTR
 };
 #endif
 
@@ -505,8 +508,8 @@ static const char *const yytname[] =
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,    46,    45,
-      47,    58,    43
+     265,   266,   267,   268,   269,   270,   271,   272,   273,    46,
+      45,    47,    58,    43
 };
 # endif
 
@@ -515,7 +518,7 @@ static const yytype_uint16 yytoknum[] =
 #define yypact_value_is_default(Yystate) \
   (!!((Yystate) == (-88)))
 
-#define YYTABLE_NINF -126
+#define YYTABLE_NINF -136
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -524,25 +527,26 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     250,   -88,    -3,    19,    14,    25,    62,   -88,    86,   -88,
-     -88,   -88,   -88,   -88,    -1,    17,   279,   133,   133,    23,
-     237,    28,    44,   184,   141,   267,   299,   308,   -88,   -88,
-      53,    53,    53,    53,    53,    53,   -88,   -88,   -88,   359,
-     359,   -88,   -88,   -88,   290,   109,   109,   -88,   339,   230,
-     289,    14,    36,   137,   109,    63,   109,    63,   346,    36,
-     -88,   339,   -88,   325,   258,   258,    36,   359,   359,   359,
-     332,   -88,   179,   355,   179,   179,   -88,    67,   -88,   289,
-      63,    63,   325,    90,   -88,    60,   -88,   211,    39,   206,
-     -88,    70,    57,    80,    78,   -88,   -88,    92,   -88,   -88,
-     -88,   -88,   -88,   258,   359,   -88,   -88,   258,   121,   -88,
-     -88,   -88,   -88,     2,    63,   -88,   109,   258,   -88,   258,
-      63,   -88,   -88,    94,   -88,   102,   103,   -88,   114,   109,
-     359,   359,    63,   -88,   -88,   -88,   -88,   258,   -88,   -88,
-     258,   359,   -88,   176,   187,   -88,   118,   -88,    39,    39,
-     -88,   -88,   -88,    53,    53,    53,    53,   258,   -88,   -88,
-     -88,   -88,   -88,   -88,   -88,   359,   -88,   -88,   -88,   -88,
-     -88,   -88,    53,    53,    53,    53,   -88,   -88,   -88,   -88,
-     -88,   -88,   -88,   -88,   -88,   -88,   -88,   -88,   -88
+     267,   -88,     4,     9,    35,   104,    62,   -88,    78,   -88,
+     -88,   -88,   -88,   -88,    39,    32,   290,    93,    93,    16,
+     319,    21,    27,   183,   243,   280,   210,   239,   -88,   -88,
+      11,    11,    11,    11,    11,    11,   -88,   -88,   -88,   377,
+     377,   -88,   -88,   -88,   119,   357,   357,   -88,   350,   232,
+     300,    35,   106,   125,   357,    44,   357,    44,   364,   106,
+     -88,   350,   -88,   328,   151,   151,   106,   377,   377,   377,
+     335,   -88,   260,   373,   260,   260,   -88,    61,   -88,   300,
+      44,    44,   328,    -1,   -88,    18,   -88,   212,   105,   331,
+     -88,    47,    48,    58,    64,   -88,   -88,    68,   -88,   -88,
+     -88,   -88,   -88,   151,   377,   -88,   -88,   151,   240,   -88,
+     -88,   -88,   -88,    15,    44,   -88,   357,   151,   -88,   151,
+      44,   -88,   -88,    88,   -88,    89,    97,   -88,   100,   357,
+     377,   377,    44,   -88,   -88,   -88,   -88,   151,   -88,   -88,
+     151,   377,   -88,   174,   178,   -88,   102,   -88,   105,   105,
+     -88,   -88,   -88,    11,    11,    11,    11,   151,   -88,   -88,
+     -88,   -88,   -88,   -88,   -88,   377,   -88,   -88,   -88,   -88,
+     -88,   -88,    11,    11,    11,    11,   -88,   -88,   -88,   -88,
+     -88,   -88,   108,   -88,   -88,   -88,   -88,   -88,   -88,   309,
+     -88,   -88,   -88,   -88,   -88,   -88,   -88,   -88,   -88,   -88
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -550,39 +554,42 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,    61,    62,    88,     4,     2,     3,    85,    86,    87,
-     106,    73,    74,     5,     0,     0,    57,    17,    45,    72,
-       6,     0,     0,     0,     0,    33,     0,    90,    63,    89,
+       0,    70,    71,    97,     4,     2,     3,    94,    95,    96,
+     116,    82,    83,     5,     0,     0,    66,    26,    54,    81,
+      15,     0,     0,     0,     0,    42,     0,    99,    72,    98,
        0,     0,     0,     0,     0,     0,     4,     2,     3,     0,
-       0,    77,    75,     1,    86,    25,    30,    72,    22,     0,
-       0,     0,     0,    94,    18,    20,    46,    48,     0,    84,
-      83,     7,    64,    12,     0,     0,     2,     0,     0,     0,
-       0,    68,     0,     0,     0,     0,    76,     2,    86,     0,
-      37,    42,    34,     0,   107,   108,   112,     0,     0,    91,
-      92,    97,    96,   101,   100,   105,   104,     0,    78,    82,
-      80,    26,    31,    23,     0,    28,    29,    27,     0,    19,
-      21,    47,    49,    94,    59,    58,    10,     8,    84,    13,
-      15,    65,    67,     0,    69,     0,     0,    71,     0,    50,
-       0,     0,    53,    79,    81,    40,    41,    39,    38,    43,
-      35,     0,   109,   118,   121,   124,   110,   113,     0,     0,
-     116,   114,    93,     0,     0,     0,     0,     0,    24,    32,
-      60,    11,     9,    14,    16,     0,    51,    52,    55,    54,
-      36,    44,     0,     0,     0,     0,   111,   117,   115,    99,
-      98,   103,   102,    66,    70,   120,   119,   123,   122
+       0,    86,    84,     1,    95,    34,    39,    81,    31,     0,
+       0,     0,     0,   103,    27,    29,    55,    57,     0,    93,
+      92,    16,    73,    21,     0,     0,     2,     0,     0,     0,
+       0,    77,     0,     0,     0,     0,    85,     2,    95,     0,
+      46,    51,    43,     0,   117,   118,   122,     0,     0,   100,
+     101,   106,   105,   110,   109,   115,   114,     0,    87,    91,
+      89,    35,    40,    32,     0,    37,    38,    36,     0,    28,
+      30,    56,    58,   103,    68,    67,    19,    17,    93,    22,
+      24,    74,    76,     0,    78,     0,     0,    80,     0,    59,
+       0,     0,    62,    88,    90,    49,    50,    48,    47,    52,
+      44,     0,   119,   128,   131,   134,   120,   123,     0,     0,
+     126,   124,   102,     0,     0,     0,     0,     0,    33,    41,
+      69,    20,    18,    23,    25,     0,    60,    61,    64,    63,
+      45,    53,     0,     0,     0,     0,   121,   127,   125,   108,
+     107,   113,   111,    75,    79,   130,   129,   133,   132,     0,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,   112
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-     -88,   -23,     0,   -88,    99,     5,     6,   157,    33,   100,
-      85,    26,    13,   153,   -88,   -88,   -88,    79,   -87,   -88
+     -88,   -23,     0,   -88,   -88,    99,     5,     6,   139,    33,
+      73,    80,    26,    13,   153,   -88,   -88,   -88,    57,   -87,
+     -88
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    13,    69,    15,    16,    17,    18,    47,    71,    21,
-      22,    62,    72,    25,    26,    27,    89,    90,   150,   115
+      -1,    13,    69,   199,    15,    16,    17,    18,    47,    71,
+      21,    22,    62,    72,    25,    26,    27,    89,    90,   150,
+     115
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -590,84 +597,88 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      14,   151,  -125,     3,    36,    37,    38,    91,    92,    93,
-      94,    95,    96,    24,    41,    28,    14,    43,    39,    40,
-      34,    45,    46,    35,    76,    14,    23,    42,   -84,    24,
-      80,    81,    30,    20,   -84,    31,   -84,    29,    24,    97,
-      99,    58,    49,    32,   143,   144,    33,    64,   145,    48,
-      14,    83,    98,   100,    32,   105,   106,    33,    82,    37,
-      38,   177,   178,    24,    65,   -83,     2,   123,   126,    41,
-     -84,   -83,    76,   -83,   133,   134,   108,   142,   154,    14,
-     125,   128,    42,   107,   135,   136,   -56,   116,   153,   120,
-     121,   122,    24,     2,     3,    36,    37,    38,   155,   156,
-     -94,   -94,   -94,   129,    34,   108,   132,    35,   -94,    67,
-      68,   157,   137,   165,    51,    52,    54,    56,    53,    61,
-      10,    74,    70,    40,    79,     3,    36,    37,    38,   158,
-     179,   180,   181,   182,    75,   176,     2,   159,    51,    52,
-      67,    68,    53,   162,    10,   163,    36,    37,    38,   185,
-     186,   187,   188,   127,   110,    34,   112,    19,    35,     0,
-      74,    75,   119,   167,   168,   184,   170,   124,   152,    50,
+      14,   151,     2,     3,    36,    37,    38,    91,    92,    93,
+      94,    95,    96,    24,    41,  -135,    14,    37,    38,    67,
+      68,    45,    46,    28,    76,    14,    23,    42,    29,    24,
+      80,    81,    43,    20,    34,    58,   142,    35,    24,    97,
+      99,    64,    49,     3,    36,    37,    38,     2,    65,    48,
+      14,    83,    98,   100,    30,   105,   106,    31,    82,    39,
+      40,   177,   178,    24,   -93,   -92,   153,   123,   126,    41,
+     154,   -92,    76,   -92,   133,   134,   108,   155,   -65,    14,
+     125,   128,    42,   107,   135,   136,   156,   116,   157,   120,
+     121,   122,    24,  -103,  -103,  -103,     2,    34,    51,    52,
+      35,  -103,    53,   129,    10,   108,   132,   -93,   165,    74,
+     143,   144,   137,   -93,   145,   -93,    54,    56,    40,    61,
+     176,    75,    70,    32,    79,    32,    33,   189,    33,   158,
+     179,   180,   181,   182,  -103,  -103,  -103,   159,    34,    19,
+     124,    35,  -103,   162,    34,   163,   152,    35,   127,   185,
+     186,   187,   188,     0,   110,     0,   112,   118,    60,     7,
+      78,     9,   119,   167,   168,   184,   170,     0,     0,    50,
       55,    57,   131,    63,   171,     0,    73,     0,    98,   138,
-     139,   140,   141,   183,    36,    37,    38,     2,     3,     4,
-      66,    38,     0,    53,   172,    10,     0,   173,   101,   102,
-       0,   103,   104,    67,    68,   174,     0,   109,   175,   111,
-       0,   114,     0,   160,   117,     0,   143,   144,     0,   164,
-     145,    85,    86,   130,     0,    87,   146,   147,    88,     0,
-     148,   169,     0,   149,     3,     4,    66,    38,     0,    53,
-       2,    10,    51,    59,    60,     7,    44,     9,    10,    67,
-      68,     1,     0,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,   118,    60,     7,    78,     9,   161,
-       2,     3,    36,    77,     6,     7,    78,     9,     0,    11,
-      12,     0,   166,     3,     4,     5,     6,     7,    44,     9,
-      10,    11,    12,     3,    36,    77,     6,     7,    78,     9,
-       0,    11,    12,     0,   -94,   -94,   -94,     0,    34,     0,
-       0,    35,   -94,    84,    85,    86,     0,     0,    87,     0,
-       0,    88,   -95,   -95,   -95,     0,     0,   -95,     2,     0,
-     -95,   118,    60,     7,    78,     9,     3,     4,    66,    38,
-       0,    53,     0,    10,    51,    59,    60,     7,    44,     9,
-      10,    51,    52,     0,     0,   113,     0,    10,     2,     3,
-      36,    37,    38,     3,    36,    37,    38
+     139,   140,   141,   183,     0,     0,     2,     3,     4,    66,
+      38,     0,    53,   172,    10,     0,   173,   174,   101,   102,
+     175,   103,   104,    67,    68,     0,     0,   109,     0,   111,
+       0,   114,     0,   160,   117,     0,     0,   143,   144,   164,
+       0,   145,     0,   130,     0,    84,    85,    86,   146,   147,
+      87,   169,   148,    88,     0,   149,     3,     4,    66,    38,
+       0,    53,     0,    10,     3,    36,    37,    38,    36,    37,
+      38,     0,    67,    68,  -104,  -104,  -104,     0,     0,  -104,
+      67,    68,  -104,    74,    75,    36,    37,    38,     1,   161,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,     0,   166,     2,     3,    36,    77,     6,     7,    78,
+       9,     0,    11,    12,     3,     4,     5,     6,     7,    44,
+       9,    10,    11,    12,     3,    36,    77,     6,     7,    78,
+       9,     0,    11,    12,   190,   191,   192,   193,   194,   195,
+     196,   197,     2,   198,    51,    59,    60,     7,    44,     9,
+      10,     2,     0,     0,   118,    60,     7,    78,     9,     3,
+       4,    66,    38,     0,    53,     0,    10,    85,    86,     0,
+       0,    87,     0,     0,    88,    51,    59,    60,     7,    44,
+       9,    10,    51,    52,     0,     0,    53,     0,    10,    51,
+      52,     0,     0,   113,     0,    10,     2,     3,    36,    37,
+      38,     3,    36,    37,    38
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    88,     0,     4,     5,     6,     7,    30,    31,    32,
-      33,    34,    35,     0,    14,    18,    16,     0,    19,    20,
-      18,    16,    16,    21,    24,    25,     0,    14,     3,    16,
-      25,    25,    18,     0,     9,    21,    11,    18,    25,    39,
-      40,    18,    16,    18,     5,     6,    21,    19,     9,    16,
-      50,    25,    39,    40,    18,    50,    50,    21,    25,     6,
-       7,   148,   149,    50,    20,     3,     3,    67,    68,    69,
-       3,     9,    72,    11,    74,    75,    50,    17,    21,    79,
-      67,    68,    69,    50,    79,    79,     0,    61,    18,    63,
-      64,    65,    79,     3,     4,     5,     6,     7,    18,    21,
-      14,    15,    16,    70,    18,    79,    73,    21,    22,    19,
-      20,    19,    79,    19,     5,     6,    17,    18,     9,    20,
-      11,    19,    23,    20,    25,     4,     5,     6,     7,   103,
-     153,   154,   155,   156,    20,    17,     3,   104,     5,     6,
-      19,    20,     9,   117,    11,   119,     5,     6,     7,   172,
-     173,   174,   175,    68,    55,    18,    57,     0,    21,    -1,
-      19,    20,    63,   130,   131,   165,   140,    67,    89,    16,
+       0,    88,     3,     4,     5,     6,     7,    30,    31,    32,
+      33,    34,    35,     0,    14,     0,    16,     6,     7,    20,
+      21,    16,    16,    19,    24,    25,     0,    14,    19,    16,
+      25,    25,     0,     0,    19,    19,    18,    22,    25,    39,
+      40,    20,    16,     4,     5,     6,     7,     3,    21,    16,
+      50,    25,    39,    40,    19,    50,    50,    22,    25,    20,
+      21,   148,   149,    50,     3,     3,    19,    67,    68,    69,
+      22,     9,    72,    11,    74,    75,    50,    19,     0,    79,
+      67,    68,    69,    50,    79,    79,    22,    61,    20,    63,
+      64,    65,    79,    15,    16,    17,     3,    19,     5,     6,
+      22,    23,     9,    70,    11,    79,    73,     3,    20,    20,
+       5,     6,    79,     9,     9,    11,    17,    18,    21,    20,
+      18,    21,    23,    19,    25,    19,    22,    19,    22,   103,
+     153,   154,   155,   156,    15,    16,    17,   104,    19,     0,
+      67,    22,    23,   117,    19,   119,    89,    22,    68,   172,
+     173,   174,   175,    -1,    55,    -1,    57,     6,     7,     8,
+       9,    10,    63,   130,   131,   165,   140,    -1,    -1,    16,
       17,    18,    73,    20,   141,    -1,    23,    -1,   165,    80,
-      81,    82,    83,   157,     5,     6,     7,     3,     4,     5,
-       6,     7,    -1,     9,    18,    11,    -1,    21,    45,    46,
-      -1,    48,    49,    19,    20,    18,    -1,    54,    21,    56,
-      -1,    58,    -1,   114,    61,    -1,     5,     6,    -1,   120,
-       9,    15,    16,    70,    -1,    19,    15,    16,    22,    -1,
-      19,   132,    -1,    22,     4,     5,     6,     7,    -1,     9,
-       3,    11,     5,     6,     7,     8,     9,    10,    11,    19,
-      20,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,     6,     7,     8,     9,    10,   116,
-       3,     4,     5,     6,     7,     8,     9,    10,    -1,    12,
-      13,    -1,   129,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,     4,     5,     6,     7,     8,     9,    10,
-      -1,    12,    13,    -1,    14,    15,    16,    -1,    18,    -1,
-      -1,    21,    22,    14,    15,    16,    -1,    -1,    19,    -1,
-      -1,    22,    14,    15,    16,    -1,    -1,    19,     3,    -1,
-      22,     6,     7,     8,     9,    10,     4,     5,     6,     7,
-      -1,     9,    -1,    11,     5,     6,     7,     8,     9,    10,
-      11,     5,     6,    -1,    -1,     9,    -1,    11,     3,     4,
-       5,     6,     7,     4,     5,     6,     7
+      81,    82,    83,   157,    -1,    -1,     3,     4,     5,     6,
+       7,    -1,     9,    19,    11,    -1,    22,    19,    45,    46,
+      22,    48,    49,    20,    21,    -1,    -1,    54,    -1,    56,
+      -1,    58,    -1,   114,    61,    -1,    -1,     5,     6,   120,
+      -1,     9,    -1,    70,    -1,    15,    16,    17,    16,    17,
+      20,   132,    20,    23,    -1,    23,     4,     5,     6,     7,
+      -1,     9,    -1,    11,     4,     5,     6,     7,     5,     6,
+       7,    -1,    20,    21,    15,    16,    17,    -1,    -1,    20,
+      20,    21,    23,    20,    21,     5,     6,     7,     1,   116,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    -1,   129,     3,     4,     5,     6,     7,     8,     9,
+      10,    -1,    12,    13,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,     4,     5,     6,     7,     8,     9,
+      10,    -1,    12,    13,     5,     6,     7,     8,     9,    10,
+      11,    12,     3,    14,     5,     6,     7,     8,     9,    10,
+      11,     3,    -1,    -1,     6,     7,     8,     9,    10,     4,
+       5,     6,     7,    -1,     9,    -1,    11,    16,    17,    -1,
+      -1,    20,    -1,    -1,    23,     5,     6,     7,     8,     9,
+      10,    11,     5,     6,    -1,    -1,     9,    -1,    11,     5,
+       6,    -1,    -1,     9,    -1,    11,     3,     4,     5,     6,
+       7,     4,     5,     6,     7
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -675,58 +686,61 @@ static const yytype_int16 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     1,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    18,    18,
-      18,    21,    18,    21,    18,    21,     5,     6,     7,    19,
-      20,    25,    35,     0,     9,    28,    29,    30,    31,    34,
-      36,     5,     6,     9,    27,    36,    27,    36,    18,     6,
-       7,    27,    34,    36,    19,    20,     6,    19,    20,    25,
-      27,    31,    35,    36,    19,    20,    25,     6,     9,    27,
-      28,    29,    31,    34,    14,    15,    16,    19,    22,    39,
-      40,    24,    24,    24,    24,    24,    24,    25,    35,    25,
-      35,    36,    36,    36,    36,    28,    29,    31,    34,    36,
-      27,    36,    27,     9,    36,    42,    34,    36,     6,    27,
-      34,    34,    34,    25,    32,    35,    25,    33,    35,    31,
-      36,    27,    31,    25,    25,    28,    29,    31,    27,    27,
-      27,    27,    17,     5,     6,     9,    15,    16,    19,    22,
-      41,    41,    40,    18,    21,    18,    21,    19,    34,    31,
-      27,    36,    34,    34,    27,    19,    36,    31,    31,    27,
-      34,    31,    18,    21,    18,    21,    17,    41,    41,    24,
-      24,    24,    24,    34,    25,    24,    24,    24,    24
+      11,    12,    13,    25,    26,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    19,    19,
+      19,    22,    19,    22,    19,    22,     5,     6,     7,    20,
+      21,    26,    37,     0,     9,    30,    31,    32,    33,    36,
+      38,     5,     6,     9,    29,    38,    29,    38,    19,     6,
+       7,    29,    36,    38,    20,    21,     6,    20,    21,    26,
+      29,    33,    37,    38,    20,    21,    26,     6,     9,    29,
+      30,    31,    33,    36,    15,    16,    17,    20,    23,    41,
+      42,    25,    25,    25,    25,    25,    25,    26,    37,    26,
+      37,    38,    38,    38,    38,    30,    31,    33,    36,    38,
+      29,    38,    29,     9,    38,    44,    36,    38,     6,    29,
+      36,    36,    36,    26,    34,    37,    26,    35,    37,    33,
+      38,    29,    33,    26,    26,    30,    31,    33,    29,    29,
+      29,    29,    18,     5,     6,     9,    16,    17,    20,    23,
+      43,    43,    42,    19,    22,    19,    22,    20,    36,    33,
+      29,    38,    36,    36,    29,    20,    38,    33,    33,    29,
+      36,    33,    19,    22,    19,    22,    18,    43,    43,    25,
+      25,    25,    25,    36,    26,    25,    25,    25,    25,    19,
+       5,     6,     7,     8,     9,    10,    11,    12,    14,    27
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    23,    24,    24,    25,    25,    26,    26,    26,    26,
-      26,    26,    26,    26,    26,    26,    26,    26,    26,    26,
-      26,    26,    26,    26,    26,    26,    26,    26,    26,    26,
-      26,    26,    26,    26,    26,    26,    26,    26,    26,    26,
-      26,    26,    26,    26,    26,    26,    26,    26,    26,    26,
-      26,    26,    26,    26,    26,    26,    26,    26,    26,    26,
-      26,    26,    27,    27,    28,    28,    28,    28,    29,    29,
-      29,    29,    29,    30,    30,    31,    31,    31,    32,    32,
-      33,    33,    33,    34,    34,    34,    34,    34,    35,    35,
-      36,    36,    36,    36,    37,    37,    38,    38,    38,    38,
-      38,    38,    38,    38,    38,    38,    38,    39,    40,    40,
-      40,    40,    40,    40,    40,    40,    40,    40,    41,    41,
-      41,    41,    41,    41,    41,    42
+       0,    24,    25,    25,    26,    26,    27,    27,    27,    27,
+      27,    27,    27,    27,    27,    28,    28,    28,    28,    28,
+      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
+      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
+      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
+      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
+      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
+      28,    29,    29,    30,    30,    30,    30,    31,    31,    31,
+      31,    31,    32,    32,    33,    33,    33,    34,    34,    35,
+      35,    35,    36,    36,    36,    36,    36,    37,    37,    38,
+      38,    38,    38,    39,    39,    40,    40,    40,    40,    40,
+      40,    40,    40,    40,    40,    40,    40,    41,    42,    42,
+      42,    42,    42,    42,    42,    42,    42,    42,    43,    43,
+      43,    43,    43,    43,    43,    44
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
-       0,     2,     1,     1,     1,     1,     1,     2,     3,     4,
-       3,     4,     2,     3,     4,     3,     4,     1,     2,     3,
-       2,     3,     2,     3,     4,     2,     3,     3,     3,     3,
-       2,     3,     4,     1,     2,     3,     4,     2,     3,     3,
-       3,     3,     2,     3,     4,     1,     2,     3,     2,     3,
-       3,     4,     4,     3,     4,     4,     1,     1,     3,     3,
-       4,     1,     1,     2,     2,     3,     5,     3,     2,     3,
-       5,     3,     1,     1,     1,     2,     2,     2,     3,     3,
-       3,     3,     3,     1,     1,     1,     1,     1,     1,     2,
-       1,     2,     2,     3,     1,     1,     3,     3,     5,     5,
-       3,     3,     5,     5,     3,     3,     1,     1,     1,     2,
+       0,     2,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     2,     3,     4,     3,
+       4,     2,     3,     4,     3,     4,     1,     2,     3,     2,
+       3,     2,     3,     4,     2,     3,     3,     3,     3,     2,
+       3,     4,     1,     2,     3,     4,     2,     3,     3,     3,
+       3,     2,     3,     4,     1,     2,     3,     2,     3,     3,
+       4,     4,     3,     4,     4,     1,     1,     3,     3,     4,
+       1,     1,     2,     2,     3,     5,     3,     2,     3,     5,
+       3,     1,     1,     1,     2,     2,     2,     3,     3,     3,
+       3,     3,     1,     1,     1,     1,     1,     1,     2,     1,
+       2,     2,     3,     1,     1,     3,     3,     5,     5,     3,
+       3,     5,     7,     5,     3,     3,     1,     1,     1,     2,
        2,     3,     1,     2,     2,     3,     2,     3,     1,     3,
        3,     1,     3,     3,     1,     1
 };
@@ -1404,387 +1418,396 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 56:
-#line 150 "dateyacc.y" /* yacc.c:1646  */
+        case 65:
+#line 164 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[0].IntVal) / 100;
          yyans.minute = (yyvsp[0].IntVal) % 100;
          yyans.second = -1;            /* unspecified */
        }
-#line 1414 "dateyacc.c" /* yacc.c:1646  */
+#line 1428 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 61:
-#line 159 "dateyacc.y" /* yacc.c:1646  */
+  case 70:
+#line 173 "dateyacc.y" /* yacc.c:1646  */
     { extern char *yyinbuf;
          if (yyans.error == NULL) yyans.error = yyinbuf;
        }
-#line 1422 "dateyacc.c" /* yacc.c:1646  */
+#line 1436 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 166 "dateyacc.y" /* yacc.c:1646  */
+  case 71:
+#line 180 "dateyacc.y" /* yacc.c:1646  */
     { yyans.c_weekday = (yyvsp[0].IntVal); }
-#line 1428 "dateyacc.c" /* yacc.c:1646  */
+#line 1442 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 168 "dateyacc.y" /* yacc.c:1646  */
+  case 72:
+#line 182 "dateyacc.y" /* yacc.c:1646  */
     { yyans.c_weekday = (yyvsp[-1].IntVal); }
-#line 1434 "dateyacc.c" /* yacc.c:1646  */
+#line 1448 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 175 "dateyacc.y" /* yacc.c:1646  */
+  case 75:
+#line 189 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[-4].IntVal); yyans.month = (yyvsp[-2].IntVal); }
-#line 1440 "dateyacc.c" /* yacc.c:1646  */
+#line 1454 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 183 "dateyacc.y" /* yacc.c:1646  */
+  case 79:
+#line 197 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[0].IntVal); yyans.month = (yyvsp[-2].IntVal); }
-#line 1446 "dateyacc.c" /* yacc.c:1646  */
+#line 1460 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 190 "dateyacc.y" /* yacc.c:1646  */
+  case 82:
+#line 204 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year  = ((yyvsp[0].IntVal) / 10000) + 1900;        /* ajs */
          yyans.month = ((yyvsp[0].IntVal) % 10000) / 100;      /* ajs */
          yyans.day   = ((yyvsp[0].IntVal) % 100);              /* ajs */
        }
-#line 1455 "dateyacc.c" /* yacc.c:1646  */
+#line 1469 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 196 "dateyacc.y" /* yacc.c:1646  */
+  case 83:
+#line 210 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year  = ((yyvsp[0].IntVal) / 10000);               /* ajs */
          yyans.month = ((yyvsp[0].IntVal) % 10000) / 100;      /* ajs */
          yyans.day   = ((yyvsp[0].IntVal) % 100);              /* ajs */
        }
-#line 1464 "dateyacc.c" /* yacc.c:1646  */
+#line 1478 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 204 "dateyacc.y" /* yacc.c:1646  */
+  case 84:
+#line 218 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[-1].IntVal); }
-#line 1470 "dateyacc.c" /* yacc.c:1646  */
+#line 1484 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 76:
-#line 206 "dateyacc.y" /* yacc.c:1646  */
+  case 85:
+#line 220 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[0].IntVal); }
-#line 1476 "dateyacc.c" /* yacc.c:1646  */
+#line 1490 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 77:
-#line 208 "dateyacc.y" /* yacc.c:1646  */
+  case 86:
+#line 222 "dateyacc.y" /* yacc.c:1646  */
     { yyans.month = (yyvsp[-1].IntVal); yyans.day = (yyvsp[0].IntVal); }
-#line 1482 "dateyacc.c" /* yacc.c:1646  */
+#line 1496 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 78:
-#line 213 "dateyacc.y" /* yacc.c:1646  */
+  case 87:
+#line 227 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[-2].IntVal); }
-#line 1488 "dateyacc.c" /* yacc.c:1646  */
+#line 1502 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 79:
-#line 215 "dateyacc.y" /* yacc.c:1646  */
+  case 88:
+#line 229 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[0].IntVal); }
-#line 1494 "dateyacc.c" /* yacc.c:1646  */
+#line 1508 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 80:
-#line 220 "dateyacc.y" /* yacc.c:1646  */
+  case 89:
+#line 234 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[-2].IntVal); }
-#line 1500 "dateyacc.c" /* yacc.c:1646  */
+#line 1514 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 222 "dateyacc.y" /* yacc.c:1646  */
+  case 90:
+#line 236 "dateyacc.y" /* yacc.c:1646  */
     { yyans.day = (yyvsp[0].IntVal); }
-#line 1506 "dateyacc.c" /* yacc.c:1646  */
+#line 1520 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 224 "dateyacc.y" /* yacc.c:1646  */
+  case 91:
+#line 238 "dateyacc.y" /* yacc.c:1646  */
     { yyans.month = (yyvsp[-2].IntVal); yyans.day = (yyvsp[0].IntVal); }
-#line 1512 "dateyacc.c" /* yacc.c:1646  */
+#line 1526 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 83:
-#line 229 "dateyacc.y" /* yacc.c:1646  */
+  case 92:
+#line 243 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year = 2000 + (yyvsp[0].IntVal); }
-#line 1518 "dateyacc.c" /* yacc.c:1646  */
+#line 1532 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 84:
-#line 231 "dateyacc.y" /* yacc.c:1646  */
+  case 93:
+#line 245 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year = 2000 + (yyvsp[0].IntVal); }
-#line 1524 "dateyacc.c" /* yacc.c:1646  */
+#line 1538 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 85:
-#line 233 "dateyacc.y" /* yacc.c:1646  */
+  case 94:
+#line 247 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year = 1900 + (yyvsp[0].IntVal); }
-#line 1530 "dateyacc.c" /* yacc.c:1646  */
+#line 1544 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 86:
-#line 235 "dateyacc.y" /* yacc.c:1646  */
+  case 95:
+#line 249 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year = (yyvsp[0].IntVal); }
-#line 1536 "dateyacc.c" /* yacc.c:1646  */
+#line 1550 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 87:
-#line 237 "dateyacc.y" /* yacc.c:1646  */
+  case 96:
+#line 251 "dateyacc.y" /* yacc.c:1646  */
     { yyans.year = (yyvsp[0].IntVal); }
-#line 1542 "dateyacc.c" /* yacc.c:1646  */
+#line 1556 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 88:
-#line 242 "dateyacc.y" /* yacc.c:1646  */
+  case 97:
+#line 256 "dateyacc.y" /* yacc.c:1646  */
     { yyans.month = (yyvsp[0].IntVal); }
-#line 1548 "dateyacc.c" /* yacc.c:1646  */
+#line 1562 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 89:
-#line 244 "dateyacc.y" /* yacc.c:1646  */
+  case 98:
+#line 258 "dateyacc.y" /* yacc.c:1646  */
     { yyans.month = (yyvsp[-1].IntVal); }
-#line 1554 "dateyacc.c" /* yacc.c:1646  */
+#line 1568 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-#line 256 "dateyacc.y" /* yacc.c:1646  */
+  case 103:
+#line 270 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[0].IntVal) / 100;
          yyans.minute = (yyvsp[0].IntVal) % 100;
          yyans.second = -1;            /* unspecified */
        }
-#line 1563 "dateyacc.c" /* yacc.c:1646  */
+#line 1577 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-#line 265 "dateyacc.y" /* yacc.c:1646  */
+  case 105:
+#line 279 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-2].IntVal);
          yyans.minute = (yyvsp[0].IntVal);
          yyans.second = -1;            /* unspecified */
        }
-#line 1572 "dateyacc.c" /* yacc.c:1646  */
+#line 1586 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-#line 270 "dateyacc.y" /* yacc.c:1646  */
+  case 106:
+#line 284 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-2].IntVal);
          yyans.minute = (yyvsp[0].IntVal);
          yyans.second = -1;            /* unspecified */
        }
-#line 1581 "dateyacc.c" /* yacc.c:1646  */
+#line 1595 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 98:
-#line 275 "dateyacc.y" /* yacc.c:1646  */
+  case 107:
+#line 289 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-4].IntVal);
          yyans.minute = (yyvsp[-2].IntVal);
          yyans.second = (yyvsp[0].IntVal);
        }
-#line 1590 "dateyacc.c" /* yacc.c:1646  */
+#line 1604 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 99:
-#line 280 "dateyacc.y" /* yacc.c:1646  */
+  case 108:
+#line 294 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-4].IntVal);
          yyans.minute = (yyvsp[-2].IntVal);
          yyans.second = (yyvsp[0].IntVal);
        }
-#line 1599 "dateyacc.c" /* yacc.c:1646  */
+#line 1613 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 100:
-#line 285 "dateyacc.y" /* yacc.c:1646  */
+  case 109:
+#line 299 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-2].IntVal);
          yyans.minute = (yyvsp[0].IntVal);
          yyans.second = -1;            /* unspecified */
        }
-#line 1608 "dateyacc.c" /* yacc.c:1646  */
+#line 1622 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 101:
-#line 290 "dateyacc.y" /* yacc.c:1646  */
+  case 110:
+#line 304 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-2].IntVal);
          yyans.minute = (yyvsp[0].IntVal);
          yyans.second = -1;            /* unspecified */
        }
-#line 1617 "dateyacc.c" /* yacc.c:1646  */
+#line 1631 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 102:
-#line 295 "dateyacc.y" /* yacc.c:1646  */
+  case 111:
+#line 309 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-4].IntVal);
          yyans.minute = (yyvsp[-2].IntVal);
          yyans.second = (yyvsp[0].IntVal);
        }
-#line 1626 "dateyacc.c" /* yacc.c:1646  */
+#line 1640 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 103:
-#line 300 "dateyacc.y" /* yacc.c:1646  */
+  case 112:
+#line 314 "dateyacc.y" /* yacc.c:1646  */
+    { yyans.hour   = (yyvsp[-6].IntVal);
+         yyans.minute = (yyvsp[-4].IntVal);
+         yyans.second = (yyvsp[-2].IntVal);
+       }
+#line 1649 "dateyacc.c" /* yacc.c:1646  */
+    break;
+
+  case 113:
+#line 319 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-4].IntVal);
          yyans.minute = (yyvsp[-2].IntVal);
          yyans.second = (yyvsp[0].IntVal);
        }
-#line 1635 "dateyacc.c" /* yacc.c:1646  */
+#line 1658 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 104:
-#line 305 "dateyacc.y" /* yacc.c:1646  */
+  case 114:
+#line 324 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-2].IntVal) / 100;
          yyans.minute = (yyvsp[-2].IntVal) % 100;
          yyans.second = (yyvsp[0].IntVal);
        }
-#line 1644 "dateyacc.c" /* yacc.c:1646  */
+#line 1667 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 105:
-#line 310 "dateyacc.y" /* yacc.c:1646  */
+  case 115:
+#line 329 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[-2].IntVal) / 100;
          yyans.minute = (yyvsp[-2].IntVal) % 100;
          yyans.second = (yyvsp[0].IntVal);
        }
-#line 1653 "dateyacc.c" /* yacc.c:1646  */
+#line 1676 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 106:
-#line 315 "dateyacc.y" /* yacc.c:1646  */
+  case 116:
+#line 334 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[0].IntVal) / 10000;
          yyans.minute = ((yyvsp[0].IntVal) % 10000) / 100;
          yyans.second = (yyvsp[0].IntVal) % 100;
        }
-#line 1662 "dateyacc.c" /* yacc.c:1646  */
+#line 1685 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 107:
-#line 323 "dateyacc.y" /* yacc.c:1646  */
+  case 117:
+#line 342 "dateyacc.y" /* yacc.c:1646  */
     { if (yyans.hour < 1 || yyans.hour > 12)
            yyans.hour = -1;            /* invalid */
          else
          { if (yyans.hour == 12) yyans.hour = 0;
            yyans.hour += (yyvsp[0].IntVal);            /* 0 for AM, 12 for PM */
        } }
-#line 1673 "dateyacc.c" /* yacc.c:1646  */
+#line 1696 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-#line 333 "dateyacc.y" /* yacc.c:1646  */
+  case 118:
+#line 352 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[0].IntVal); yyans.dst = 0; }
-#line 1679 "dateyacc.c" /* yacc.c:1646  */
+#line 1702 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 335 "dateyacc.y" /* yacc.c:1646  */
+  case 119:
+#line 354 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[-1].IntVal) + 60; yyans.dst = 1; }
-#line 1685 "dateyacc.c" /* yacc.c:1646  */
+#line 1708 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 337 "dateyacc.y" /* yacc.c:1646  */
+  case 120:
+#line 356 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[0].IntVal); yyans.dst = 0; }
-#line 1691 "dateyacc.c" /* yacc.c:1646  */
+#line 1714 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 339 "dateyacc.y" /* yacc.c:1646  */
+  case 121:
+#line 358 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[-1].IntVal) + 60; yyans.dst = 1; }
-#line 1697 "dateyacc.c" /* yacc.c:1646  */
+#line 1720 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 341 "dateyacc.y" /* yacc.c:1646  */
+  case 122:
+#line 360 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[0].IntVal); yyans.dst = 1; }
-#line 1703 "dateyacc.c" /* yacc.c:1646  */
+#line 1726 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 343 "dateyacc.y" /* yacc.c:1646  */
+  case 123:
+#line 362 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[0].IntVal); yyans.dst = 1; }
-#line 1709 "dateyacc.c" /* yacc.c:1646  */
+#line 1732 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 345 "dateyacc.y" /* yacc.c:1646  */
+  case 124:
+#line 364 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[0].IntVal); yyans.dst = 0; }
-#line 1715 "dateyacc.c" /* yacc.c:1646  */
+#line 1738 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 115:
-#line 347 "dateyacc.y" /* yacc.c:1646  */
+  case 125:
+#line 366 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = (yyvsp[0].IntVal); yyans.dst = 0; }
-#line 1721 "dateyacc.c" /* yacc.c:1646  */
+#line 1744 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 116:
-#line 349 "dateyacc.y" /* yacc.c:1646  */
+  case 126:
+#line 368 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = - (yyvsp[0].IntVal); yyans.dst = 0; }
-#line 1727 "dateyacc.c" /* yacc.c:1646  */
+#line 1750 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 117:
-#line 351 "dateyacc.y" /* yacc.c:1646  */
+  case 127:
+#line 370 "dateyacc.y" /* yacc.c:1646  */
     { yyans.zone = - (yyvsp[0].IntVal); yyans.dst = 0; }
-#line 1733 "dateyacc.c" /* yacc.c:1646  */
+#line 1756 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 118:
-#line 356 "dateyacc.y" /* yacc.c:1646  */
+  case 128:
+#line 375 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * (yyvsp[0].IntVal); }
-#line 1739 "dateyacc.c" /* yacc.c:1646  */
+#line 1762 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 119:
-#line 358 "dateyacc.y" /* yacc.c:1646  */
+  case 129:
+#line 377 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * (yyvsp[-2].IntVal) + (yyvsp[0].IntVal); }
-#line 1745 "dateyacc.c" /* yacc.c:1646  */
+#line 1768 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 120:
-#line 360 "dateyacc.y" /* yacc.c:1646  */
+  case 130:
+#line 379 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * (yyvsp[-2].IntVal) + (yyvsp[0].IntVal); }
-#line 1751 "dateyacc.c" /* yacc.c:1646  */
+#line 1774 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 121:
-#line 362 "dateyacc.y" /* yacc.c:1646  */
+  case 131:
+#line 381 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * (yyvsp[0].IntVal); }
-#line 1757 "dateyacc.c" /* yacc.c:1646  */
+#line 1780 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 122:
-#line 364 "dateyacc.y" /* yacc.c:1646  */
+  case 132:
+#line 383 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * (yyvsp[-2].IntVal) + (yyvsp[0].IntVal); }
-#line 1763 "dateyacc.c" /* yacc.c:1646  */
+#line 1786 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 123:
-#line 366 "dateyacc.y" /* yacc.c:1646  */
+  case 133:
+#line 385 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * (yyvsp[-2].IntVal) + (yyvsp[0].IntVal); }
-#line 1769 "dateyacc.c" /* yacc.c:1646  */
+#line 1792 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 124:
-#line 368 "dateyacc.y" /* yacc.c:1646  */
+  case 134:
+#line 387 "dateyacc.y" /* yacc.c:1646  */
     { (yyval.IntVal) = 60 * ((yyvsp[0].IntVal) / 100) | ((yyvsp[0].IntVal) % 100); }
-#line 1775 "dateyacc.c" /* yacc.c:1646  */
+#line 1798 "dateyacc.c" /* yacc.c:1646  */
     break;
 
-  case 125:
-#line 373 "dateyacc.y" /* yacc.c:1646  */
+  case 135:
+#line 392 "dateyacc.y" /* yacc.c:1646  */
     { yyans.hour   = (yyvsp[0].IntVal) / 100;  /* ajs */
          yyans.minute = (yyvsp[0].IntVal) % 100;       /* ajs */
          yyans.second = -1;            /* ajs */
        }
-#line 1784 "dateyacc.c" /* yacc.c:1646  */
+#line 1807 "dateyacc.c" /* yacc.c:1646  */
     break;
 
 
-#line 1788 "dateyacc.c" /* yacc.c:1646  */
+#line 1811 "dateyacc.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2012,5 +2035,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 379 "dateyacc.y" /* yacc.c:1906  */
+#line 398 "dateyacc.y" /* yacc.c:1906  */