home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / gnu / sh-utils-1.12-src.lha / sh-utils-1.12 / lib / posixtm.c < prev    next >
C/C++ Source or Header  |  1994-11-05  |  24KB  |  979 lines

  1.  
  2. /*  A Bison parser, made from ./posixtm.y with Bison version GNU Bison version 1.22
  3.   */
  4.  
  5. #define YYBISON 1  /* Identify Bison output.  */
  6.  
  7. #define    DIGIT    258
  8.  
  9. #line 19 "./posixtm.y"
  10.  
  11.  
  12. #ifdef HAVE_CONFIG_H
  13. #include <config.h>
  14. #endif
  15.  
  16. /* The following block of alloca-related preprocessor directives is here
  17.    solely to allow compilation by non GNU-C compilers of the C parser
  18.    produced from this file by old versions of bison.  Newer versions of
  19.    bison include a block similar to this one in bison.simple.  */
  20.    
  21. #ifdef __GNUC__
  22. #define alloca __builtin_alloca
  23. #else
  24. #ifdef HAVE_ALLOCA_H
  25. #include <alloca.h>
  26. #else
  27. #ifdef _AIX
  28.  #pragma alloca
  29. #else
  30. void *alloca ();
  31. #endif
  32. #endif
  33. #endif
  34.  
  35. #include <stdio.h>
  36. #include <sys/types.h>
  37.  
  38. #ifdef TM_IN_SYS_TIME
  39. #include <sys/time.h>
  40. #else
  41. #include <time.h>
  42. #endif
  43.  
  44. /* Some old versions of bison generate parsers that use bcopy.
  45.    That loses on systems that don't provide the function, so we have
  46.    to redefine it here.  */
  47. #if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy)
  48. #define bcopy(from, to, len) memcpy ((to), (from), (len))
  49. #endif
  50.  
  51. #define YYDEBUG 1
  52.  
  53. /* Lexical analyzer's current scan position in the input string. */
  54. static char *curpos;
  55.  
  56. /* The return value. */
  57. static struct tm t;
  58.  
  59. time_t mktime ();
  60.  
  61. #define zzparse posixtime_zzparse
  62. static int zzlex ();
  63. static int zzerror ();
  64.  
  65. #ifndef YYLTYPE
  66. typedef
  67.   struct zzltype
  68.     {
  69.       int timestamp;
  70.       int first_line;
  71.       int first_column;
  72.       int last_line;
  73.       int last_column;
  74.       char *text;
  75.    }
  76.   zzltype;
  77.  
  78. #define YYLTYPE zzltype
  79. #endif
  80.  
  81. #ifndef YYSTYPE
  82. #define YYSTYPE int
  83. #endif
  84. #include <stdio.h>
  85.  
  86. #ifndef __cplusplus
  87. #ifndef __STDC__
  88. #define const
  89. #endif
  90. #endif
  91.  
  92.  
  93.  
  94. #define    YYFINAL        15
  95. #define    YYFLAG        -32768
  96. #define    YYNTBASE    5
  97.  
  98. #define YYTRANSLATE(x) ((unsigned)(x) <= 258 ? zztranslate[x] : 9)
  99.  
  100. static const char zztranslate[] = {     0,
  101.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  102.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  103.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  104.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  105.      2,     2,     2,     2,     2,     4,     2,     2,     2,     2,
  106.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  107.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  108.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  109.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  110.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  111.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  112.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  113.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  114.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  115.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  116.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  117.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  118.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  119.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  120.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  121.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  122.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  123.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  124.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  125.      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  126.      2,     2,     2,     2,     2,     1,     2,     3
  127. };
  128.  
  129. #if YYDEBUG != 0
  130. static const short zzprhs[] = {     0,
  131.      0,     7,     9,    12,    13,    14,    17
  132. };
  133.  
  134. static const short zzrhs[] = {     8,
  135.      8,     8,     8,     6,     7,     0,     8,     0,     8,     8,
  136.      0,     0,     0,     4,     8,     0,     3,     3,     0
  137. };
  138.  
  139. #endif
  140.  
  141. #if YYDEBUG != 0
  142. static const short zzrline[] = { 0,
  143.     78,   107,   114,   121,   132,   135,   144
  144. };
  145.  
  146. static const char * const zztname[] = {   "$","error","$illegal.","DIGIT","'.'",
  147. "date","year","seconds","digitpair",""
  148. };
  149. #endif
  150.  
  151. static const short zzr1[] = {     0,
  152.      5,     6,     6,     6,     7,     7,     8
  153. };
  154.  
  155. static const short zzr2[] = {     0,
  156.      6,     1,     2,     0,     0,     2,     2
  157. };
  158.  
  159. static const short zzdefact[] = {     0,
  160.      0,     0,     7,     0,     0,     4,     5,     2,     0,     1,
  161.      3,     6,     0,     0,     0
  162. };
  163.  
  164. static const short zzdefgoto[] = {    13,
  165.      7,    10,     2
  166. };
  167.  
  168. static const short zzpact[] = {     2,
  169.      5,     2,-32768,     2,     2,     2,    -3,     2,     2,-32768,
  170. -32768,-32768,     9,    10,-32768
  171. };
  172.  
  173. static const short zzpgoto[] = {-32768,
  174. -32768,-32768,    -2
  175. };
  176.  
  177.  
  178. #define    YYLAST        10
  179.  
  180.  
  181. static const short zztable[] = {     4,
  182.      9,     5,     6,     8,     1,    11,    12,     3,    14,    15
  183. };
  184.  
  185. static const short zzcheck[] = {     2,
  186.      4,     4,     5,     6,     3,     8,     9,     3,     0,     0
  187. };
  188. /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
  189. #line 3 "/usr/local/lib/bison.simple"
  190.  
  191. /* Skeleton output parser for bison,
  192.    Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
  193.  
  194.    This program is free software; you can redistribute it and/or modify
  195.    it under the terms of the GNU General Public License as published by
  196.    the Free Software Foundation; either version 1, or (at your option)
  197.    any later version.
  198.  
  199.    This program is distributed in the hope that it will be useful,
  200.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  201.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  202.    GNU General Public License for more details.
  203.  
  204.    You should have received a copy of the GNU General Public License
  205.    along with this program; if not, write to the Free Software
  206.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  207.  
  208.  
  209. #ifndef alloca
  210. #ifdef __GNUC__
  211. #define alloca __builtin_alloca
  212. #else /* not GNU C.  */
  213. #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
  214. #include <alloca.h>
  215. #else /* not sparc */
  216. #if defined (MSDOS) && !defined (__TURBOC__)
  217. #include <malloc.h>
  218. #else /* not MSDOS, or __TURBOC__ */
  219. #if defined(_AIX)
  220. #include <malloc.h>
  221.  #pragma alloca
  222. #else /* not MSDOS, __TURBOC__, or _AIX */
  223. #ifdef __hpux
  224. #ifdef __cplusplus
  225. extern "C" {
  226. void *alloca (unsigned int);
  227. };
  228. #else /* not __cplusplus */
  229. void *alloca ();
  230. #endif /* not __cplusplus */
  231. #endif /* __hpux */
  232. #endif /* not _AIX */
  233. #endif /* not MSDOS, or __TURBOC__ */
  234. #endif /* not sparc.  */
  235. #endif /* not GNU C.  */
  236. #endif /* alloca not defined.  */
  237.  
  238. /* This is the parser code that is written into each bison parser
  239.   when the %semantic_parser declaration is not specified in the grammar.
  240.   It was written by Richard Stallman by simplifying the hairy parser
  241.   used when %semantic_parser is specified.  */
  242.  
  243. /* Note: there must be only one dollar sign in this file.
  244.    It is replaced by the list of actions, each action
  245.    as one case of the switch.  */
  246.  
  247. #define zzerrok        (zzerrstatus = 0)
  248. #define zzclearin    (zzchar = YYEMPTY)
  249. #define YYEMPTY        -2
  250. #define YYEOF        0
  251. #define YYACCEPT    return(0)
  252. #define YYABORT     return(1)
  253. #define YYERROR        goto zzerrlab1
  254. /* Like YYERROR except do call zzerror.
  255.    This remains here temporarily to ease the
  256.    transition to the new meaning of YYERROR, for GCC.
  257.    Once GCC version 2 has supplanted version 1, this can go.  */
  258. #define YYFAIL        goto zzerrlab
  259. #define YYRECOVERING()  (!!zzerrstatus)
  260. #define YYBACKUP(token, value) \
  261. do                                \
  262.   if (zzchar == YYEMPTY && zzlen == 1)                \
  263.     { zzchar = (token), zzlval = (value);            \
  264.       zzchar1 = YYTRANSLATE (zzchar);                \
  265.       YYPOPSTACK;                        \
  266.       goto zzbackup;                        \
  267.     }                                \
  268.   else                                \
  269.     { zzerror ("syntax error: cannot back up"); YYERROR; }    \
  270. while (0)
  271.  
  272. #define YYTERROR    1
  273. #define YYERRCODE    256
  274.  
  275. #ifndef YYPURE
  276. #define YYLEX        zzlex()
  277. #endif
  278.  
  279. #ifdef YYPURE
  280. #ifdef YYLSP_NEEDED
  281. #define YYLEX        zzlex(&zzlval, &zzlloc)
  282. #else
  283. #define YYLEX        zzlex(&zzlval)
  284. #endif
  285. #endif
  286.  
  287. /* I