home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume26 / c++2latex / part01 / c++2latex.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-14  |  25.3 KB  |  657 lines

  1. /* A lexical scanner generated by flex */
  2.  
  3. /* scanner skeleton version:
  4.  * $Header: /usr/fsys/odin/a/vern/flex/RCS/flex.skel,v 2.16 90/08/03 14:09:36 vern Exp $
  5.  */
  6.  
  7. #define FLEX_SCANNER
  8.  
  9. #include <stdio.h>
  10.  
  11.  
  12. /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  13. #ifdef c_plusplus
  14. #ifndef __cplusplus
  15. #define __cplusplus
  16. #endif
  17. #endif
  18.  
  19.  
  20. #ifdef __cplusplus
  21.  
  22. #include <stdlib.h>
  23. #include <osfcn.h>
  24.  
  25. /* use prototypes in function declarations */
  26. #define YY_USE_PROTOS
  27.  
  28. /* the "const" storage-class-modifier is valid */
  29. #define YY_USE_CONST
  30.  
  31. #else    /* ! __cplusplus */
  32.  
  33. #ifdef __STDC__
  34.  
  35. #ifdef __GNUC__
  36. #include <stddef.h>
  37. void *malloc( size_t );
  38. void free( void* );
  39. #else
  40. #include <stdlib.h>
  41. #endif    /* __GNUC__ */
  42.  
  43. #define YY_USE_PROTOS
  44. #define YY_USE_CONST
  45.  
  46. #endif    /* __STDC__ */
  47. #endif    /* ! __cplusplus */
  48.  
  49.  
  50. #ifdef __TURBOC__
  51. #define YY_USE_CONST
  52. #endif
  53.  
  54.  
  55. #ifndef YY_USE_CONST
  56. #define const
  57. #endif
  58.  
  59.  
  60. #ifdef YY_USE_PROTOS
  61. #define YY_PROTO(proto) proto
  62. #else
  63. #define YY_PROTO(proto) ()
  64. /* we can't get here if it's an ANSI C compiler, or a C++ compiler,
  65.  * so it's got to be a K&R compiler, and therefore there's no standard
  66.  * place from which to include these definitions
  67.  */
  68. char *malloc();
  69. int free();
  70. int read();
  71. #endif
  72.  
  73.  
  74. /* amount of stuff to slurp up with each read */
  75. #ifndef YY_READ_BUF_SIZE
  76. #define YY_READ_BUF_SIZE 8192
  77. #endif
  78.  
  79. /* returned upon end-of-file */
  80. #define YY_END_TOK 0
  81.  
  82. /* copy whatever the last rule matched to the standard output */
  83.  
  84. /* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) */
  85. /* this used to be an fputs(), but since the string might contain NUL's,
  86.  * we now use fwrite()
  87.  */
  88. #define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout )
  89.  
  90. /* gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
  91.  * is returned in "result".
  92.  */
  93. #define YY_INPUT(buf,result,max_size) \
  94.     if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
  95.         YY_FATAL_ERROR( "read() in flex scanner failed" );
  96. #define YY_NULL 0
  97.  
  98. /* no semi-colon after return; correct usage is to write "yyterminate();" -
  99.  * we don't want an extra ';' after the "return" because that will cause
  100.  * some compilers to complain about unreachable statements.
  101.  */
  102. #define yyterminate() return ( YY_NULL )
  103.  
  104. /* report a fatal error */
  105.  
  106. /* The funky do-while is used to turn this macro definition into
  107.  * a single C statement (which needs a semi-colon terminator).
  108.  * This avoids problems with code like:
  109.  *
  110.  *     if ( something_happens )
  111.  *        YY_FATAL_ERROR( "oops, the something happened" );
  112.  *    else
  113.  *        everything_okay();
  114.  *
  115.  * Prior to using the do-while the compiler would get upset at the
  116.  * "else" because it interpreted the "if" statement as being all
  117.  * done when it reached the ';' after the YY_FATAL_ERROR() call.
  118.  */
  119.  
  120. #define YY_FATAL_ERROR(msg) \
  121.     do \
  122.         { \
  123.         (void) fputs( msg, stderr ); \
  124.         (void) putc( '\n', stderr ); \
  125.         exit( 1 ); \
  126.         } \
  127.     while ( 0 )
  128.  
  129. /* default yywrap function - always treat EOF as an EOF */
  130. #define yywrap() 1
  131.  
  132. /* enter a start condition.  This macro really ought to take a parameter,
  133.  * but we do it the disgusting crufty way forced on us by the ()-less
  134.  * definition of BEGIN
  135.  */
  136. #define BEGIN yy_start = 1 + 2 *
  137.  
  138. /* action number for EOF rule of a given start state */
  139. #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  140.  
  141. /* special action meaning "start processing a new file" */
  142. #define YY_NEW_FILE \
  143.     do \
  144.         { \
  145.         yy_init_buffer( yy_current_buffer, yyin ); \
  146.         yy_load_buffer_state(); \
  147.         } \
  148.     while ( 0 )
  149.  
  150. /* default declaration of generated scanner - a define so the user can
  151.  * easily add parameters
  152.  */
  153. #define YY_DECL int yylex YY_PROTO(( void )) 
  154.  
  155. /* code executed at the end of each rule */
  156. #define YY_BREAK break;
  157.  
  158. #define YY_END_OF_BUFFER_CHAR 0
  159.  
  160. #ifndef YY_BUF_SIZE
  161. #define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */
  162. #endif
  163.  
  164. typedef struct yy_buffer_state *YY_BUFFER_STATE;
  165.  
  166. #define YY_CHAR char
  167. # line 1 "c++2latex.l"
  168. #define INITIAL 0
  169. /*
  170.  *  This is a flex input file but should be edited in -*-C-*- mode
  171.  *
  172.  *  C++2LaTeX: Produce prettyprinted LaTeX files from  C++ or C sources.
  173.  *  Copyright (C) 1990 Norbert Kiesel
  174.  *
  175.  *  This program is free software; you can redistribute it and/or modify
  176.  *  it under the terms of the GNU General Public License as published by
  177.  *  the Free Software Foundation; either version 1, or (at your option)
  178.  *  any later version.
  179.  *
  180.  *  This program is distributed in the hope that it will be useful,
  181.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  182.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  183.  *  GNU General Public License for more details.
  184.  *
  185.  *  You should have received a copy of the GNU General Public License
  186.  *  along with this program; if not, write to the Free Software
  187.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  188.  *
  189.  *  Norbert Kiesel     
  190.  *  RWTH Aachen / Institut f. Informatik III
  191.  *  Ahornstr. 55
  192.  *  D-5100 Aachen
  193.  *  West Germany  
  194.  *
  195.  *  Phone:  +49 241 80-7266
  196.  *  EUNET:  norbert@rwthi3.uucp
  197.  *  USENET: ...!mcvax!unido!rwthi3!norbert
  198.  *  X.400:  norbert@rwthi3.informatik.rwth-aachen.de
  199.  *
  200.  *  Please contact me for any bugs you find in this code or any
  201.  *  improvements! I'd also be very happy to get feedback where and
  202.  *  how frequently this program is used (just drop a little mail :-).
  203.  *
  204.  *  ---------------------------------------------------------------------
  205.  *
  206.  *  C++2LaTeX 2.0:
  207.  *  Produce even more prettyprinted LaTeX files from C++ or C sources.
  208.  *
  209.  *  Copyright (C) 1991    Joerg Heitkoetter
  210.  *  Systems Analysis Group, University of Dortmund, Germany.
  211.  *  (heitkoet@gorbi.informatik.uni-dortmund.de).
  212.  *
  213.  */
  214. #define STRING 1
  215. #define BCOMMENT 2
  216. #define INCLUDE 3
  217. #define SLASHCOMMENT 4
  218. #define CPLUSPLUS 5
  219. # line 51 "c++2latex.l"
  220. #define KEY        printf ("{\\%s %s}", keyword_font, yytext)
  221. #define CPP        printf ("{\\%s \\%s}", cpp_font, yytext)
  222. #define SYM(x)        printf ("$\\%s$", x)
  223. #define OUT(x)        printf ("%s", x)
  224. #define BTAB        printf ("\\hspace*{%d\\indentation}", tabtobrace)
  225. #define CTAB        printf ("\\hspace*{%d\\indentation}", tabtocomment)
  226. #define FONT(x)        printf ("{\\%s ",x);
  227. #define SUB(x)        substitute(x)
  228. #define IND        indent(yytext)
  229. #define INIT        BEGIN (cplusplus_mode ? CPLUSPLUS : INITIAL);
  230. #define REPARSE        yyless (0)
  231.  
  232. #include <stdio.h>
  233.  
  234. #ifdef ANSI_C
  235.   #ifdef C_PLUSPLUS
  236.     #error ANSI_C and C_PLUSPLUS are mutually exclusive
  237.   #else
  238.     int cplusplus_mode = 0;
  239.   #endif
  240. #else /* CPLUSPLUS or default */
  241.   int cplusplus_mode = 1;
  242. #endif
  243.  
  244. int complete_file    = 0;
  245. int header        = 0;
  246. int tabtotab        = 8;
  247. int piped        = 0;
  248.  
  249. int aligntoright    = 1;        /* align comments to the right  -joke */
  250. int tabtobrace        = 2;        /* distance between closing brace and corresponding comment  -joke */
  251. int tabtocomment    = 4;        /* distance between statement and corresponding comment  -joke */
  252.  
  253. char *font_size        = "10";        /* used to be 11  -joke */
  254. char *indentation    = "0.5em";
  255. char *comment_font    = "it";
  256. char *keyword_font    = "bf";
  257. char *header_font    = "sl";
  258. char *cpp_font        = "tt";
  259. char *string_font    = "tt";
  260.  
  261. #ifdef __STDC__
  262. void substitute(const char *);
  263. void indent(const char *);
  264. void newpage(int);
  265. void usage(const char *);
  266. #else
  267. void substitute();
  268. void indent();
  269. void newpage();
  270. void usage();
  271. #endif
  272. # line 105 "c++2latex.l"
  273.  
  274. /* done after the current pattern has been matched and before the
  275.  * corresponding action - sets up yytext
  276.  */
  277. #define YY_DO_BEFORE_ACTION \
  278.     yytext = yy_bp; \
  279.     yyleng = yy_cp - yy_bp; \
  280.     yy_hold_char = *yy_cp; \
  281.     *yy_cp = '\0'; \
  282.     yy_c_buf_p = yy_cp;
  283.  
  284. #define EOB_ACT_CONTINUE_SCAN 0
  285. #define EOB_ACT_END_OF_FILE 1
  286. #define EOB_ACT_LAST_MATCH 2
  287.  
  288. /* return all but the first 'n' matched characters back to the input stream */
  289. #define yyless(n) \
  290.     do \
  291.         { \
  292.         /* undo effects of setting up yytext */ \
  293.         *yy_cp = yy_hold_char; \
  294.         yy_c_buf_p = yy_cp = yy_bp + n; \
  295.         YY_DO_BEFORE_ACTION; /* set up yytext again */ \
  296.         } \
  297.     while ( 0 )
  298.  
  299. #define unput(c) yyunput( c, yytext )
  300.  
  301.  
  302. struct yy_buffer_state
  303.     {
  304.     FILE *yy_input_file;
  305.  
  306.     YY_CHAR *yy_ch_buf;        /* input buffer */
  307.     YY_CHAR *yy_buf_pos;    /* current position in input buffer */
  308.  
  309.     /* size of input buffer in bytes, not including room for EOB characters*/
  310.     int yy_buf_size;    
  311.  
  312.     /* number of characters read into yy_ch_buf, not including EOB characters */
  313.     int yy_n_chars;
  314.  
  315.     int yy_eof_status;        /* whether we've seen an EOF on this buffer */
  316. #define EOF_NOT_SEEN 0
  317.     /* "pending" happens when the EOF has been seen but there's still
  318.      * some text process
  319.      */
  320. #define EOF_PENDING 1
  321. #define EOF_DONE 2
  322.     };
  323.  
  324. static YY_BUFFER_STATE yy_current_buffer;
  325.  
  326. /* we provide macros for accessing buffer states in case in the
  327.  * future we want to put the buffer states in a more general
  328.  * "scanner state"
  329.  */
  330. #define YY_CURRENT_BUFFER yy_current_buffer
  331.  
  332.  
  333. /* yy_hold_char holds the character lost when yytext is formed */
  334. static YY_CHAR yy_hold_char;
  335.  
  336. static int yy_n_chars;        /* number of characters read into yy_ch_buf */
  337.  
  338.  
  339.  
  340. #ifndef YY_USER_ACTION
  341. #define YY_USER_ACTION
  342. #endif
  343.  
  344. #ifndef YY_USER_INIT
  345. #define YY_USER_INIT
  346. #endif
  347.  
  348. extern YY_CHAR *yytext;
  349. extern int yyleng;
  350. extern FILE *yyin, *yyout;
  351.  
  352. YY_CHAR *yytext;
  353. int yyleng;
  354.  
  355. FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
  356.  
  357. #define YY_END_OF_BUFFER 162
  358. typedef int yy_state_type;
  359. static const short int yy_accept[609] =
  360.     {   0,
  361.         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  362.         0,    0,  162,  161,  158,  160,  159,  110,  138,  161,
  363.       101,  100,  161,  118,  119,   88,  112,  107,  111,  108,
  364.        92,  149,  149,  105,  109,   93,  106,   94,  104,  124,
  365.       124,  120,  161,  121,   89,  124,  124,  124,  124,  124,
  366.       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
  367.        98,   90,   99,   87,  157,   92,  144,  142,  141,  144,
  368.       143,  131,  130,  129,  131,   18,   16,   17,   18,   18,
  369.       137,  136,  135,  123,  111,  108,   92,  105,  123,  123,
  370.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  371.  
  372.       123,  123,  123,  123,  123,  123,  123,  123,   99,  157,
  373.        92,  158,  159,   79,    0,    0,    0,    0,    0,    0,
  374.         0,   96,   95,   97,    0,    0,   82,  115,  116,  102,
  375.       117,   74,    0,  145,  127,  113,  146,  149,  149,    0,
  376.       149,    0,   75,   77,  114,   78,   76,  124,  138,    0,
  377.       156,   85,  124,  124,  124,  124,  124,  124,   47,  124,
  378.       124,  124,  124,  124,  124,   48,  124,  124,  124,  124,
  379.       124,  124,  124,  124,  124,  124,  124,   86,   80,    0,
  380.         0,  157,    0,  126,  140,  139,  143,  130,  128,   16,
  381.         0,   15,    0,   14,  136,  123,   74,  103,  134,  122,
  382.  
  383.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  384.        47,  123,  123,  123,  123,  123,  123,  123,  123,   48,
  385.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  386.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  387.         0,    0,  157,    0,  133,    0,    0,    0,    0,   12,
  388.         5,    0,    0,    0,    0,  150,    0,  150,    0,    0,
  389.        81,    0,  145,  145,    0,  146,  149,    0,  147,  155,
  390.        83,   84,  124,  124,  124,  124,  124,  124,  124,  124,
  391.       124,  124,  124,   40,  124,   21,  124,  124,  124,  124,
  392.       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
  393.  
  394.       124,  125,  126,   91,   64,   71,  123,  123,  123,  123,
  395.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  396.       123,  123,   40,  123,  123,  123,   21,  123,   51,  123,
  397.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  398.       123,  123,  123,  123,  123,   70,  123,  123,  123,  123,
  399.       123,  123,  123,  132,  133,    0,    0,    0,    0,    0,
  400.         0,    0,    0,    0,    0,    0,  151,  152,    0,    0,
  401.         0,  147,  145,    0,  148,  155,   19,  124,   27,   31,
  402.       124,  124,  124,  124,   24,   28,  124,  124,   44,   25,
  403.       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
  404.  
  405.       124,   42,  124,  124,   19,  123,   27,  123,   31,  123,
  406.       123,  123,  123,  123,  123,  123,   24,   28,  123,  123,
  407.       123,  123,   44,  123,   25,  123,  123,  123,  123,  123,
  408.       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
  409.        53,  123,  123,  123,  123,   42,  123,  123,    0,    8,
  410.         9,    0,    0,    0,    0,    0,   11,    0,    0,    0,
  411.       153,    0,   23,   35,  124,  124,  124,  124,   36,  124,
  412.       124,   37,  124,  124,  124,  124,  124,  124,   34,  124,
  413.       124,   50,   23,   72,   55,   35,  123,  123,  123,  123,
  414.       123,  123,  123,   36,  123,  123,  123,  123,  123,  123,
  415.  
  416.       123,   67,  123,  123,  123,   37,  123,  123,  123,  123,
  417.       123,  123,  123,   34,  123,  123,  123,   50,    0,   13,
  418.        10,    6,    0,    0,    0,    3,  124,  124,   20,   32,
  419.       124,   33,   41,   45,   49,   22,   26,  124,  124,  124,
  420.       123,  123,   52,   20,  123,   65,   32,   60,   61,  123,
  421.       123,  123,  123,   56,   68,  123,  123,   33,   41,   45,
  422.        49,   22,   26,  123,   63,  123,  123,  123,    2,    7,
  423.         0,    4,  124,   43,  124,   30,  124,  124,  123,   43,
  424.        62,  123,  123,  123,   58,  123,  123,   69,   30,  123,
  425.        59,  123,    1,   39,   29,   38,   46,   39,  123,   54,
  426.  
  427.        73,  123,   29,   38,   46,   66,   57,    0
  428.     } ;
  429.  
  430. static const YY_CHAR yy_ec[128] =
  431.     {   0,
  432.         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  433.         1,    4,    1,    1,    1,    1,    1,    1,    1,    1,
  434.         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  435.         1,    5,    6,    7,    8,    9,   10,   11,   12,   13,
  436.        14,   15,   16,   17,   18,   19,   20,   21,   22,   22,
  437.        22,   22,   22,   22,   22,   23,   23,   24,   25,   26,
  438.        27,   28,   29,   30,   31,   31,   31,   31,   32,   33,
  439.        34,   34,   34,   34,   34,   35,   34,   34,   34,   34,
  440.        34,   34,   34,   34,   36,   34,   34,   34,   34,   34,
  441.        37,   38,   39,   40,   34,   30,   41,   42,   43,   44,
  442.  
  443.        45,   46,   47,   48,   49,   34,   50,   51,   52,   53,
  444.        54,   55,   34,   56,   57,   58,   59,   60,   61,   62,
  445.        63,   64,   65,   66,   67,   68,    1
  446.     } ;
  447.  
  448. static const YY_CHAR yy_meta[69] =
  449.     {   0,
  450.         1,    1,    1,    1,    2,    2,    3,    2,    4,    2,
  451.         2,    5,    2,    2,    2,    2,    2,    2,    2,    2,
  452.         6,    6,    7,    2,    2,    2,    2,    2,    3,    2,
  453.         7,    7,    7,    8,    8,    8,    2,    3,    2,    2,
  454.         6,    6,    7,    7,    7,    6,    8,    8,    8,    8,
  455.         8,    8,    9,    8,    8,    9,    8,    9,    8,    9,
  456.         8,    9,    8,    8,    2,    2,    2,    2
  457.     } ;
  458.  
  459. static const short int yy_base[623] =
  460.     {   0,
  461.         0,   67,   67,   73,   79,   83,   88,   94,  101,  105,
  462.       120,  187, 1148, 1149,   87, 1149, 1144, 1119, 1149,  188,
  463.      1118,   89, 1106, 1149, 1149, 1116,   86, 1149,   91,  175,
  464.        56,  229,  183, 1149, 1149,  173, 1115,  181, 1149,    0,
  465.       105, 1149, 1138, 1149, 1113, 1080, 1082,  162,  166,  161,
  466.       170, 1083,  176, 1082, 1090,  177, 1071, 1080, 1078, 1083,
  467.      1149,  164,  239, 1149,  251,  186, 1149, 1149, 1149,  248,
  468.       244, 1149,  252, 1149, 1110, 1149,  261, 1149, 1122, 1100,
  469.      1149,  265, 1149,    0,  250,  260,  269, 1103, 1117,  286,
  470.       260,  231,  264,  276,  263,  290,  208,  267,  249,   70,
  471.  
  472.       283,  291,  186,  300,  314,  298,  288,  315,  351,  352,
  473.       307,  324, 1149, 1149,  330, 1080,  331,  287, 1075, 1067,
  474.      1069, 1149, 1149, 1149, 1109,  343, 1149, 1149, 1149, 1149,
  475.      1149, 1149, 1101,  369, 1149, 1149,  376,  407,  412,  433,
  476.      1149,    0, 1092, 1149, 1149, 1149, 1091,    0, 1149, 1079,
  477.      1149, 1149, 1058, 1070, 1057, 1072, 1059, 1065, 1051, 1052,
  478.      1049, 1049, 1052, 1049, 1046,    0, 1045, 1049,  320, 1047,
  479.       281,  327, 1051, 1044,  253,  337, 1049, 1149, 1149,  398,
  480.      1082,  405, 1081, 1149, 1149, 1149,  364,  371, 1149,  411,
  481.      1088, 1149, 1066, 1149,  435,    0, 1078, 1149, 1149, 1149,
  482.  
  483.      1083,  343,  371,  387,  350,  403,  397,  423,  415,  427,
  484.       408,  432,  437,  410,  441,  444,  450,  453,  456, 1082,
  485.       461,  463,  465,  466,  468,  471,  467,  472,  477,  473,
  486.       470,  474,  479,  480,  478,  481,  482,  484,  494,  483,
  487.       502,  316,  503,  480, 1149, 1044,  461, 1045, 1032, 1149,
  488.       192, 1044, 1033, 1044, 1040, 1149, 1071, 1070,  525,    0,
  489.      1149,  532, 1149,  535,  543, 1149, 1149,  550,  553,  542,
  490.      1149, 1149, 1027, 1039, 1034, 1022,  439, 1036, 1034, 1030,
  491.      1022, 1028, 1031,    0, 1017,    0, 1023, 1020, 1009, 1011,
  492.      1013, 1020, 1006, 1004, 1004, 1016, 1006, 1010, 1014, 1016,
  493.  
  494.      1005, 1149, 1149, 1149, 1046, 1045,  529,  543,  540,  551,
  495.       533,  535,  542,  554,  553,  560,  570,  573,  578,  579,
  496.       581,  582, 1044,  587,  588,  594, 1043,  597, 1042,  595,
  497.       596,  598,  599,  603,  604,  600,  605,  601,  606,  610,
  498.       608,  607,  611,  613,  612, 1041,  619,  618,  624,  616,
  499.       622,  626,  625, 1149, 1149, 1000, 1002, 1002,  997,  991,
  500.       999,  999,  991,  996,  993,  994, 1149, 1149,  617, 1026,
  501.       656,  659, 1149,  662,  665, 1149,    0,  987,    0,    0,
  502.       978,  986,  975,  982,    0,    0,  976,  973,    0,    0,
  503.       973,  973,  970,  982,  972,  976,  981,  980,  978,  968,
  504.  
  505.       973,    0,  961,  973, 1008,  639, 1007,  627, 1006,  636,
  506.       632,  646,  638,  641,  647,  650, 1005, 1004,  659,  682,
  507.       683,  687, 1003,  691, 1002,  685,  692,  694,  697,  696,
  508.       701,  695,  698,  699,  700,  703,  702,  704,  706,  707,
  509.      1001,  710,  708,  712,  709, 1000,  711,  715,  955, 1149,
  510.      1149,  961,  950,  959,  959,  944, 1149,  950,  955,  988,
  511.      1149,  987,    0,    0,  945,  946,  951,  942,    0,  936,
  512.       940,    0,  948,  945,  947,  931,  940,  942,    0,  933,
  513.       936,    0,  975,  974,  973,  972,  713,  714,  718,  722,
  514.       721,  716,  719,  971,  727,  728,  720,  723,  724,  742,
  515.  
  516.       748,  730,  725,  753,  766,  970,  767,  770,  771,  772,
  517.       775,  777,  779,  969,  780,  783,  785,  968,  931, 1149,
  518.      1149, 1149,  929,  930,  932, 1149,  913,  913,    0,    0,
  519.       925,    0,    0,    0,    0,    0,    0,  923,  923,  916,
  520.       781,  784,  957,  956,  786,  787,  955,  954,  953,  789,
  521.       790,  792,  788,  952,  951,  793,  794,  950,  949,  948,
  522.       947,  938,  937,  795,  934,  799,  796,  797, 1149, 1149,
  523.       892, 1149,  886,    0,  804,    0,  814,  812,  800,  846,
  524.       845,  798,  803,  791,  842,  804,  806,  841,  823,  809,
  525.       818,  811, 1149,    0,    0,    0,    0,  817,  808,  812,
  526.  
  527.       631,  819,  628,  492,  351,   68,   64, 1149,  863,  872,
  528.       881,  890,  898,  902,  911,  920,  926,  932,  939,  943,
  529.       945,  948
  530.     } ;
  531.  
  532. static const short int yy_def[623] =
  533.     {   0,
  534.       608,    1,  609,  609,  610,  610,  611,  611,  612,  612,
  535.       608,   11,  608,  608,  608,  608,  608,  608,  608,  608,
  536.       608,  608,  613,  608,  608,  608,  608,  608,  608,  608,
  537.       608,  608,  608,  608,  608,  608,  608,  608,  608,  614,
  538.       614,  608,  608,  608,  608,  614,  614,  614,  614,  614,
  539.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  540.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  541.       608,  608,  608,  608,  608,  608,  608,  608,  615,  616,
  542.       608,  608,  608,  617,  608,  608,  608,  608,  618,  618,
  543.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  544.  
  545.       618,  618,  618,  618,  618,  618,  618,  618,  608,  608,
  546.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  547.       608,  608,  608,  608,  608,  619,  608,  608,  608,  608,
  548.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  549.       608,  620,  608,  608,  608,  608,  608,  614,  608,  613,
  550.       608,  608,  614,  614,  614,  614,  614,  614,  614,  614,
  551.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  552.       614,  614,  614,  614,  614,  614,  614,  608,  608,  608,
  553.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  554.       615,  608,  616,  608,  608,  617,  608,  608,  608,  608,
  555.  
  556.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  557.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  558.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  559.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  560.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  561.       608,  608,  608,  608,  608,  608,  608,  608,  608,  621,
  562.       608,  608,  608,  608,  608,  608,  608,  608,  608,  620,
  563.       608,  608,  614,  614,  614,  614,  614,  614,  614,  614,
  564.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  565.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  566.  
  567.       614,  608,  608,  608,  618,  618,  618,  618,  618,  618,
  568.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  569.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  570.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  571.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  572.       618,  618,  618,  608,  608,  608,  608,  608,  608,  608,
  573.       608,  608,  608,  608,  608,  608,  608,  608,  608,  622,
  574.       608,  608,  608,  608,  608,  608,  614,  614,  614,  614,
  575.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  576.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  577.  
  578.       614,  614,  614,  614,  618,  618,  618,  618,  618,  618,
  579.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  580.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  581.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  582.       618,  618,  618,  618,  618,  618,  618,  618,  608,  608,
  583.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  584.       608,  608,  614,  614,  614,  614,  614,  614,  614,  614,
  585.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  586.       614,  614,  618,  618,  618,  618,  618,  618,  618,  618,
  587.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  588.  
  589.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  590.       618,  618,  618,  618,  618,  618,  618,  618,  608,  608,
  591.       608,  608,  608,  608,  608,  608,  614,  614,  614,  614,
  592.       614,  614,  614,  614,  614,  614,  614,  614,  614,  614,
  593.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  594.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  595.       618,  618,  618,  618,  618,  618,  618,  618,  608,  608,
  596.       608,  608,  614,  614,  614,  614,  614,  614,  618,  618,
  597.       618,  618,  618,  618,  618,  618,  618,  618,  618,  618,
  598.       618,  618,  608,  614,  614,  614,  614,  618,  618,  618,
  599.  
  600.       618,  618,  618,  618,  618,  618,  618,    0,  608,  608,
  601.       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
  602.       608,  608
  603.     } ;
  604.  
  605. static const short int yy_nxt[1218] =
  606.     {   0,
  607.        14,   15,   16,   17,   15,   18,   19,   20,   14,   21,
  608.        22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
  609.        32,   33,   33,   34,   35,   36,   37,   38,   39,   14,
  610.        40,   40,   40,   40,   41,   40,   42,   43,   44,   45,
  611.        46,   47,   48,   49,   50,   51,   52,   40,   53,   40,
  612.        54,   40,   40,   40,   40,   55,   56,   57,   58,   59,
  613.        60,   40,   40,   40,   61,   62,   63,   64,   65,   68,
  614.       135,   65,  196,   69,   71,   68,  196,   71,  196,   69,
  615.        73,   74,  136,   73,   73,   74,   66,   73,  112,   77,
  616.        78,  112,   77,   75,   79,   77,   78,   75,   77,  123,
  617.  
  618.        79,  128,   82,   83,   70,   82,   82,   83,  130,   82,
  619.        70,  149,  129,   80,  223,  124,  150,  131,  132,   80,
  620.        14,   15,   16,   17,   15,   18,   19,   20,   84,   21,
  621.        22,   23,   24,   25,   26,   27,   28,   85,   86,   87,
  622.        32,   33,   33,   88,   35,   36,   37,   38,   39,   14,
  623.        89,   89,   89,   89,   90,   89,   42,   43,   44,   45,
  624.        91,   92,   93,   94,   95,   96,   97,   89,   98,   89,
  625.        99,   89,  100,  101,  102,  103,  104,  105,  106,  107,
  626.       108,   89,   89,   89,   61,   62,  109,   64,  110,  115,
  627.       178,  110,  115,  133,  196,  134,  134,  134,  143,  144,
  628.  
  629.       184,  137,  155,  139,  139,  139,  111,  146,  147,  156,
  630.       158,  160,  136,  161,  140,  157,  196,  141,  141,  159,
  631.       163,  166,  162,  164,  170,  171,  228,  140,  167,  179,
  632.       229,  116,  117,  141,  172,  361,  118,  173,  119,  196,
  633.       180,  141,  120,  180,  362,  187,  121,  137,  187,  138,
  634.       138,  139,  182,  188,  185,  182,  188,  196,  181,  185,
  635.       140,  219,  190,  141,  141,  190,  195,  130,  196,  195,
  636.       183,  196,  196,  140,  198,  196,  131,  197,  133,  141,
  637.       134,  134,  134,  135,  196,  186,  205,  141,  199,  185,
  638.       142,  196,  149,  185,  196,  136,  196,  150,  196,  196,
  639.  
  640.       185,  297,  222,  185,  206,  185,  196,  185,  196,  298,
  641.       202,  207,  220,  213,  208,  214,  203,  209,  204,  221,
  642.       210,  184,  196,  196,  215,  112,  245,  291,  112,  211,
  643.       302,  115,  251,  136,  115,  354,  238,  224,  212,  252,
  644.       216,  239,  225,  217,  292,  218,  226,  230,  231,  227,
  645.       237,  196,  241,  243,  258,  241,  243,  232,  196,  196,
  646.       233,  234,  240,  259,  259,  187,  288,  293,  187,  235,
  647.       242,  244,  188,  116,  117,  188,  236,  289,  118,  196,
  648.       119,  247,  294,  248,  120,  299,  249,  300,  121,  134,
  649.       134,  134,  250,  305,  308,  196,  264,  264,  264,  180,
  650.  
  651.       262,  263,  180,  263,  260,  196,  182,  265,  266,  182,
  652.       266,  196,  190,  262,  263,  190,  196,  181,  196,  263,
  653.       265,  266,  306,  196,  183,  137,  266,  138,  138,  139,
  654.       137,  196,  139,  139,  139,  196,  195,  311,  140,  195,
  655.       196,  267,  267,  140,  307,  196,  141,  141,  268,  196,
  656.       268,  140,  196,  269,  269,  269,  140,  267,  196,  309,
  657.