fortrancode.cpp

Go to the documentation of this file.
00001 
00002 #line 3 "<stdout>"
00003 
00004 #define  YY_INT_ALIGNED short int
00005 
00006 /* A lexical scanner generated by flex */
00007 
00008 #define FLEX_SCANNER
00009 #define YY_FLEX_MAJOR_VERSION 2
00010 #define YY_FLEX_MINOR_VERSION 5
00011 #define YY_FLEX_SUBMINOR_VERSION 33
00012 #if YY_FLEX_SUBMINOR_VERSION > 0
00013 #define FLEX_BETA
00014 #endif
00015 
00016 /* First, we deal with  platform-specific or compiler-specific issues. */
00017 
00018 /* begin standard C headers. */
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include <errno.h>
00022 #include <stdlib.h>
00023 
00024 /* end standard C headers. */
00025 
00026 /* flex integer type definitions */
00027 
00028 #ifndef FLEXINT_H
00029 #define FLEXINT_H
00030 
00031 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00032 
00033 #if __STDC_VERSION__ >= 199901L
00034 
00035 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
00036  * if you want the limit (max/min) macros for int types. 
00037  */
00038 #ifndef __STDC_LIMIT_MACROS
00039 #define __STDC_LIMIT_MACROS 1
00040 #endif
00041 
00042 #include <inttypes.h>
00043 typedef int8_t flex_int8_t;
00044 typedef uint8_t flex_uint8_t;
00045 typedef int16_t flex_int16_t;
00046 typedef uint16_t flex_uint16_t;
00047 typedef int32_t flex_int32_t;
00048 typedef uint32_t flex_uint32_t;
00049 #else
00050 typedef signed char flex_int8_t;
00051 typedef short int flex_int16_t;
00052 typedef int flex_int32_t;
00053 typedef unsigned char flex_uint8_t; 
00054 typedef unsigned short int flex_uint16_t;
00055 typedef unsigned int flex_uint32_t;
00056 #endif /* ! C99 */
00057 
00058 /* Limits of integral types. */
00059 #ifndef INT8_MIN
00060 #define INT8_MIN               (-128)
00061 #endif
00062 #ifndef INT16_MIN
00063 #define INT16_MIN              (-32767-1)
00064 #endif
00065 #ifndef INT32_MIN
00066 #define INT32_MIN              (-2147483647-1)
00067 #endif
00068 #ifndef INT8_MAX
00069 #define INT8_MAX               (127)
00070 #endif
00071 #ifndef INT16_MAX
00072 #define INT16_MAX              (32767)
00073 #endif
00074 #ifndef INT32_MAX
00075 #define INT32_MAX              (2147483647)
00076 #endif
00077 #ifndef UINT8_MAX
00078 #define UINT8_MAX              (255U)
00079 #endif
00080 #ifndef UINT16_MAX
00081 #define UINT16_MAX             (65535U)
00082 #endif
00083 #ifndef UINT32_MAX
00084 #define UINT32_MAX             (4294967295U)
00085 #endif
00086 
00087 #endif /* ! FLEXINT_H */
00088 
00089 #ifdef __cplusplus
00090 
00091 /* The "const" storage-class-modifier is valid. */
00092 #define YY_USE_CONST
00093 
00094 #else   /* ! __cplusplus */
00095 
00096 #if __STDC__
00097 
00098 #define YY_USE_CONST
00099 
00100 #endif  /* __STDC__ */
00101 #endif  /* ! __cplusplus */
00102 
00103 #ifdef YY_USE_CONST
00104 #define yyconst const
00105 #else
00106 #define yyconst
00107 #endif
00108 
00109 /* Returned upon end-of-file. */
00110 #define YY_NULL 0
00111 
00112 /* Promotes a possibly negative, possibly signed char to an unsigned
00113  * integer for use as an array index.  If the signed char is negative,
00114  * we want to instead treat it as an 8-bit unsigned char, hence the
00115  * double cast.
00116  */
00117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00118 
00119 /* Enter a start condition.  This macro really ought to take a parameter,
00120  * but we do it the disgusting crufty way forced on us by the ()-less
00121  * definition of BEGIN.
00122  */
00123 #define BEGIN (yy_start) = 1 + 2 *
00124 
00125 /* Translate the current start state into a value that can be later handed
00126  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00127  * compatibility.
00128  */
00129 #define YY_START (((yy_start) - 1) / 2)
00130 #define YYSTATE YY_START
00131 
00132 /* Action number for EOF rule of a given start state. */
00133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00134 
00135 /* Special action meaning "start processing a new file". */
00136 #define YY_NEW_FILE fcodeYYrestart(fcodeYYin  )
00137 
00138 #define YY_END_OF_BUFFER_CHAR 0
00139 
00140 /* Size of default input buffer. */
00141 #ifndef YY_BUF_SIZE
00142 #define YY_BUF_SIZE 262144
00143 #endif
00144 
00145 /* The state buf must be large enough to hold one state per character in the main buffer.
00146  */
00147 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
00148 
00149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00150 #define YY_TYPEDEF_YY_BUFFER_STATE
00151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00152 #endif
00153 
00154 extern int fcodeYYleng;
00155 
00156 extern FILE *fcodeYYin, *fcodeYYout;
00157 
00158 #define EOB_ACT_CONTINUE_SCAN 0
00159 #define EOB_ACT_END_OF_FILE 1
00160 #define EOB_ACT_LAST_MATCH 2
00161 
00162     #define YY_LESS_LINENO(n)
00163     
00164 /* Return all but the first "n" matched characters back to the input stream. */
00165 #define yyless(n) \
00166         do \
00167                 { \
00168                 /* Undo effects of setting up fcodeYYtext. */ \
00169         int yyless_macro_arg = (n); \
00170         YY_LESS_LINENO(yyless_macro_arg);\
00171                 *yy_cp = (yy_hold_char); \
00172                 YY_RESTORE_YY_MORE_OFFSET \
00173                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00174                 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */ \
00175                 } \
00176         while ( 0 )
00177 
00178 #define unput(c) yyunput( c, (yytext_ptr)  )
00179 
00180 /* The following is because we cannot portably get our hands on size_t
00181  * (without autoconf's help, which isn't available because we want
00182  * flex-generated scanners to compile on their own).
00183  */
00184 
00185 #ifndef YY_TYPEDEF_YY_SIZE_T
00186 #define YY_TYPEDEF_YY_SIZE_T
00187 typedef unsigned int yy_size_t;
00188 #endif
00189 
00190 #ifndef YY_STRUCT_YY_BUFFER_STATE
00191 #define YY_STRUCT_YY_BUFFER_STATE
00192 struct yy_buffer_state
00193         {
00194         FILE *yy_input_file;
00195 
00196         char *yy_ch_buf;                /* input buffer */
00197         char *yy_buf_pos;               /* current position in input buffer */
00198 
00199         /* Size of input buffer in bytes, not including room for EOB
00200          * characters.
00201          */
00202         yy_size_t yy_buf_size;
00203 
00204         /* Number of characters read into yy_ch_buf, not including EOB
00205          * characters.
00206          */
00207         int yy_n_chars;
00208 
00209         /* Whether we "own" the buffer - i.e., we know we created it,
00210          * and can realloc() it to grow it, and should free() it to
00211          * delete it.
00212          */
00213         int yy_is_our_buffer;
00214 
00215         /* Whether this is an "interactive" input source; if so, and
00216          * if we're using stdio for input, then we want to use getc()
00217          * instead of fread(), to make sure we stop fetching input after
00218          * each newline.
00219          */
00220         int yy_is_interactive;
00221 
00222         /* Whether we're considered to be at the beginning of a line.
00223          * If so, '^' rules will be active on the next match, otherwise
00224          * not.
00225          */
00226         int yy_at_bol;
00227 
00228     int yy_bs_lineno; 
00229     int yy_bs_column; 
00231         /* Whether to try to fill the input buffer when we reach the
00232          * end of it.
00233          */
00234         int yy_fill_buffer;
00235 
00236         int yy_buffer_status;
00237 
00238 #define YY_BUFFER_NEW 0
00239 #define YY_BUFFER_NORMAL 1
00240         /* When an EOF's been seen but there's still some text to process
00241          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00242          * shouldn't try reading from the input source any more.  We might
00243          * still have a bunch of tokens to match, though, because of
00244          * possible backing-up.
00245          *
00246          * When we actually see the EOF, we change the status to "new"
00247          * (via fcodeYYrestart()), so that the user can continue scanning by
00248          * just pointing fcodeYYin at a new input file.
00249          */
00250 #define YY_BUFFER_EOF_PENDING 2
00251 
00252         };
00253 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00254 
00255 /* Stack of input buffers. */
00256 static size_t yy_buffer_stack_top = 0; 
00257 static size_t yy_buffer_stack_max = 0; 
00258 static YY_BUFFER_STATE * yy_buffer_stack = 0; 
00260 /* We provide macros for accessing buffer states in case in the
00261  * future we want to put the buffer states in a more general
00262  * "scanner state".
00263  *
00264  * Returns the top of the stack, or NULL.
00265  */
00266 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
00267                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
00268                           : NULL)
00269 
00270 /* Same as previous macro, but useful when we know that the buffer stack is not
00271  * NULL or when we need an lvalue. For internal use only.
00272  */
00273 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
00274 
00275 /* yy_hold_char holds the character lost when fcodeYYtext is formed. */
00276 static char yy_hold_char;
00277 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
00278 int fcodeYYleng;
00279 
00280 /* Points to current character in buffer. */
00281 static char *yy_c_buf_p = (char *) 0;
00282 static int yy_init = 0;         /* whether we need to initialize */
00283 static int yy_start = 0;        /* start state number */
00284 
00285 /* Flag which is used to allow fcodeYYwrap()'s to do buffer switches
00286  * instead of setting up a fresh fcodeYYin.  A bit of a hack ...
00287  */
00288 static int yy_did_buffer_switch_on_eof;
00289 
00290 void fcodeYYrestart (FILE *input_file  );
00291 void fcodeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
00292 YY_BUFFER_STATE fcodeYY_create_buffer (FILE *file,int size  );
00293 void fcodeYY_delete_buffer (YY_BUFFER_STATE b  );
00294 void fcodeYY_flush_buffer (YY_BUFFER_STATE b  );
00295 void fcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer  );
00296 void fcodeYYpop_buffer_state (void );
00297 
00298 static void fcodeYYensure_buffer_stack (void );
00299 static void fcodeYY_load_buffer_state (void );
00300 static void fcodeYY_init_buffer (YY_BUFFER_STATE b,FILE *file  );
00301 
00302 #define YY_FLUSH_BUFFER fcodeYY_flush_buffer(YY_CURRENT_BUFFER )
00303 
00304 YY_BUFFER_STATE fcodeYY_scan_buffer (char *base,yy_size_t size  );
00305 YY_BUFFER_STATE fcodeYY_scan_string (yyconst char *yy_str  );
00306 YY_BUFFER_STATE fcodeYY_scan_bytes (yyconst char *bytes,int len  );
00307 
00308 void *fcodeYYalloc (yy_size_t  );
00309 void *fcodeYYrealloc (void *,yy_size_t  );
00310 void fcodeYYfree (void *  );
00311 
00312 #define yy_new_buffer fcodeYY_create_buffer
00313 
00314 #define yy_set_interactive(is_interactive) \
00315         { \
00316         if ( ! YY_CURRENT_BUFFER ){ \
00317         fcodeYYensure_buffer_stack (); \
00318                 YY_CURRENT_BUFFER_LVALUE =    \
00319             fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE ); \
00320         } \
00321         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00322         }
00323 
00324 #define yy_set_bol(at_bol) \
00325         { \
00326         if ( ! YY_CURRENT_BUFFER ){\
00327         fcodeYYensure_buffer_stack (); \
00328                 YY_CURRENT_BUFFER_LVALUE =    \
00329             fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE ); \
00330         } \
00331         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00332         }
00333 
00334 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00335 
00336 /* Begin user sect3 */
00337 
00338 #define fcodeYYwrap(n) 1
00339 #define YY_SKIP_YYWRAP
00340 
00341 typedef unsigned char YY_CHAR;
00342 
00343 FILE *fcodeYYin = (FILE *) 0, *fcodeYYout = (FILE *) 0;
00344 
00345 typedef int yy_state_type;
00346 
00347 extern int fcodeYYlineno;
00348 
00349 int fcodeYYlineno = 1;
00350 
00351 extern char *fcodeYYtext;
00352 #define yytext_ptr fcodeYYtext
00353 
00354 static yy_state_type yy_get_previous_state (void );
00355 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
00356 static int yy_get_next_buffer (void );
00357 static void yy_fatal_error (yyconst char msg[]  );
00358 
00359 /* Done after the current pattern has been matched and before the
00360  * corresponding action - sets up fcodeYYtext.
00361  */
00362 #define YY_DO_BEFORE_ACTION \
00363         (yytext_ptr) = yy_bp; \
00364         fcodeYYleng = (size_t) (yy_cp - yy_bp); \
00365         (yy_hold_char) = *yy_cp; \
00366         *yy_cp = '\0'; \
00367         (yy_c_buf_p) = yy_cp;
00368 
00369 #define YY_NUM_RULES 47
00370 #define YY_END_OF_BUFFER 48
00371 /* This struct is not used in this scanner,
00372    but its presence is necessary. */
00373 struct yy_trans_info
00374         {
00375         flex_int32_t yy_verify;
00376         flex_int32_t yy_nxt;
00377         };
00378 static yyconst flex_int16_t yy_acclist[588] =
00379     {   0,
00380        34,   34,   48,   46,   47,   45,   47,   46,   47,   43,
00381        46,   47,   46,   47,   46,   47,   45,   47,   46,   47,
00382        46,   47,   39,   46,   47,   39,   46,   47,   39,   46,
00383        47,   39,   46,   47,   39,   46,   47,   39,   46,   47,
00384        39,   46,   47,   39,   46,   47,   39,   46,   47,   39,
00385        46,   47,   39,   46,   47,   39,   46,   47,   39,   46,
00386        47,   39,   46,   47,   39,   46,   47,   39,   46,   47,
00387        39,   46,   47,   31,   46,   47,   12,   45,   47,   11,
00388        46,   47,   19,   45,   47,   18,   46,   47,   17,   46,
00389        47,   34,   46,   47,   36,   45,   47,   34,   46,   47,
00390 
00391        34,   43,   46,   47,   34,   46,   47,    9,   45,   47,
00392        46,   47,    5,   46,   47,   46,   47,    7,   46,   47,
00393         8,   46,   47,   23,   46,   47,   22,   46,   47,   29,
00394        45,   47,   27,   46,   47,   46,   47,   46,   47,   46,
00395        47,   46,   47,   46,   47,   46,   47,   46,   47,   46,
00396        47,   46,   47,   46,   47,   46,   47,   28,   45,   47,
00397        44,   46,   47,   44,   46,   47,   42,   43,   44,   46,
00398        47,   44,   46,   47,   37,   41,   40,   33,   38,   32,
00399        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00400     16386,   39,   39,   39,   39,   39,16386,   39,   39,   39,
00401 
00402        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00403        39,   39,   39,   39,   39,   39,   39,   31,   31,   11,
00404        11,   18,   17,   17,   34,   35,   34,   34,   41,   34,
00405        40,    5,    5,    7,    7,    8,    8,   22,   22,   39,
00406        39,   39,   39,   39,   39,   39,   39,   39, 8194, 8194,
00407      8194,   32,   39,   39,   13,   14,   20,   39,   39,   39,
00408        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00409        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00410        39,   35,   35,   34,   39,   39,   39,   39,   39,   39,
00411        39,   39, 8194, 8194, 8194,   32,   39,   13,    3,   13,
00412 
00413         3,   13,   32,   13,   39,   13,   39,   39,   39,   39,
00414        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00415      8193,   39,16385,   39,16399,   25,   39,   39,   39,   39,
00416        39,16394,    4,   39,   39,   39,   39,   30,   39,   39,
00417        39,   39,   39,   39,   13,   13,   13,   13,   13,   13,
00418        13,   13,   13,   13,   13,   13,   13,   39,   39,   39,
00419        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
00420        39,   39, 8193, 8193,   32,16399,   24,16399,   24,   32,
00421        24,   39,   39,   39,   39,   39, 8202, 8202,   21,   32,
00422         6,   26,   26,   26,   39,   39,   39,   39,   39,   39,
00423 
00424        39,   39,   13,   13,   13,   13,   13,   13,   13,   13,
00425        13,   13,   13,   13,   13,   39,   39,   39,   39,   39,
00426        39,   39,   39,   39,16394,   39,   39,   39,   39,   39,
00427        32,16399,16399,   39,   39,   39,   39,   39,   39,   39,
00428        39,   39,   13,   13,    3,   13,   13,   13,   13,   13,
00429        13,   13,   13,   13,   13,   13,   39,   39,   39,   32,
00430        39,   39, 8202,   39,   39,   39,16394,16399,   24,16399,
00431     16399,   24,16399,   39,   39,   39,   26,   39,   39,   39,
00432        39,   39,   13,   13,   13,   13,   13,   13,   13,   13,
00433        14,   13,   39,   39,   39,   39,   39, 8202,   39,   39,
00434 
00435        39,   39,   39,16399,   39,   39,   13,   13,   13,   13,
00436        13,   13,   13,   16,   39,   39,   39,   39,   39,16386,
00437     16399,   24,16399,   24,   32,   32,   13,   13,   13,   13,
00438        13,   14,   13,   13,   39,   25,   39,   39,   26,   26,
00439        32,16399,16399,   25,   13,   13,   13,   13,   13,   39,
00440        39,   39,16399,   24,16399,16399,   25,   13,   13,   20,
00441        13,   13,   13,   39,   39,   26,   26,16399,   24,16399,
00442        13,   13, 8193,16385, 8207,   39,   26,   13, 8193, 8193,
00443      8207,   13,16399,   13,   13,   13,   13
00444     } ;
00445 
00446 static yyconst flex_int16_t yy_accept[703] =
00447     {   0,
00448         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00449         1,    1,    1,    1,    1,    2,    3,    3,    3,    3,
00450         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00451         3,    4,    6,    8,   10,   13,   15,   17,   19,   21,
00452        23,   26,   29,   32,   35,   38,   41,   44,   47,   50,
00453        53,   56,   59,   62,   65,   68,   71,   74,   77,   80,
00454        83,   86,   89,   92,   95,   98,  101,  105,  108,  111,
00455       113,  116,  118,  121,  124,  127,  130,  133,  136,  138,
00456       140,  142,  144,  146,  148,  150,  152,  154,  156,  158,
00457       161,  164,  167,  172,  175,  175,  176,  177,  178,  178,
00458 
00459       178,  179,  179,  180,  180,  181,  182,  183,  184,  185,
00460       186,  187,  188,  189,  190,  192,  193,  194,  195,  196,
00461       198,  199,  200,  201,  202,  203,  204,  205,  206,  207,
00462       208,  209,  210,  211,  212,  213,  214,  215,  216,  217,
00463       218,  219,  220,  221,  222,  223,  224,  225,  226,  226,
00464       227,  228,  230,  232,  232,  232,  233,  234,  234,  235,
00465       236,  237,  238,  239,  240,  240,  240,  240,  240,  240,
00466       240,  240,  240,  240,  240,  240,  240,  240,  240,  240,
00467       240,  240,  241,  242,  243,  244,  245,  246,  247,  248,
00468       249,  250,  251,  253,  254,  255,  259,  260,  261,  262,
00469 
00470       263,  264,  265,  266,  267,  268,  269,  270,  271,  272,
00471       273,  274,  275,  276,  277,  278,  279,  280,  281,  282,
00472       283,  284,  285,  285,  285,  285,  285,  285,  285,  285,
00473       285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
00474       286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
00475       297,  298,  299,  301,  302,  304,  306,  308,  309,  310,
00476       311,  312,  313,  314,  315,  316,  317,  318,  319,  320,
00477       321,  324,  326,  328,  329,  330,  331,  333,  334,  335,
00478       336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
00479       336,  336,  336,  336,  336,  336,  336,  336,  336,  337,
00480 
00481       338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
00482       348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
00483       358,  359,  360,  361,  362,  363,  364,  365,  366,  367,
00484       368,  369,  370,  371,  372,  373,  374,  376,  377,  379,
00485       381,  381,  382,  383,  384,  385,  386,  387,  388,  389,
00486       391,  391,  392,  392,  392,  392,  392,  392,  392,  392,
00487       392,  392,  392,  392,  392,  392,  392,  392,  392,  393,
00488       394,  394,  395,  395,  396,  396,  397,  398,  399,  400,
00489       401,  402,  403,  404,  405,  406,  407,  408,  409,  410,
00490       411,  412,  413,  414,  415,  416,  417,  418,  419,  420,
00491 
00492       421,  422,  423,  424,  426,  427,  428,  429,  430,  431,
00493       432,  432,  432,  432,  433,  433,  434,  435,  436,  437,
00494       437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
00495       437,  437,  437,  437,  437,  437,  437,  437,  437,  437,
00496       437,  438,  438,  439,  440,  441,  442,  443,  443,  444,
00497       445,  447,  448,  449,  450,  451,  452,  453,  454,  455,
00498       456,  457,  458,  459,  460,  460,  461,  462,  463,  464,
00499       465,  466,  468,  468,  468,  469,  471,  472,  474,  475,
00500       476,  477,  477,  477,  477,  477,  477,  477,  477,  477,
00501       477,  477,  477,  477,  477,  478,  479,  479,  480,  481,
00502 
00503       482,  483,  483,  484,  485,  486,  487,  488,  489,  490,
00504       492,  493,  494,  495,  495,  495,  495,  496,  497,  497,
00505       498,  499,  499,  499,  500,  501,  502,  502,  502,  502,
00506       502,  502,  502,  502,  502,  502,  502,  502,  503,  503,
00507       505,  506,  507,  507,  508,  509,  510,  511,  512,  513,
00508       514,  515,  515,  516,  516,  516,  516,  516,  516,  517,
00509       518,  519,  519,  519,  519,  519,  519,  519,  519,  519,
00510       520,  521,  522,  524,  526,  526,  526,  527,  527,  528,
00511       529,  530,  531,  533,  534,  535,  535,  536,  536,  537,
00512       537,  537,  537,  537,  537,  538,  539,  539,  539,  539,
00513 
00514       539,  540,  541,  541,  541,  541,  541,  541,  541,  541,
00515       542,  542,  543,  543,  543,  544,  544,  545,  545,  546,
00516       547,  548,  549,  550,  550,  551,  551,  551,  551,  551,
00517       551,  552,  553,  553,  553,  553,  553,  553,  553,  553,
00518       553,  553,  553,  553,  553,  554,  556,  556,  557,  558,
00519       558,  559,  561,  562,  563,  564,  564,  564,  564,  564,
00520       565,  566,  566,  567,  567,  567,  567,  568,  568,  569,
00521       571,  571,  572,  573,  575,  575,  575,  575,  576,  577,
00522       577,  578,  578,  578,  579,  580,  581,  581,  582,  582,
00523       582,  582,  583,  583,  583,  584,  585,  585,  586,  587,
00524 
00525       588,  588
00526     } ;
00527 
00528 static yyconst flex_int32_t yy_ec[256] =
00529     {   0,
00530         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00531         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00532         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00533         1,    4,    5,    6,    7,    1,    1,    8,    9,   10,
00534        11,   12,    1,   13,    1,    1,    1,   14,   14,   14,
00535        14,   14,   14,   14,   14,   14,   14,   15,    1,    1,
00536         1,   16,    1,    1,   19,   20,   21,   22,   23,   24,
00537        25,   26,   27,   18,   28,   29,   30,   31,   32,   33,
00538        18,   34,   35,   36,   37,   38,   39,   40,   41,   42,
00539         1,   17,    1,    1,   18,    1,   19,   20,   21,   22,
00540 
00541        23,   24,   25,   26,   27,   18,   28,   29,   30,   31,
00542        32,   33,   18,   34,   35,   36,   37,   38,   39,   40,
00543        41,   42,    1,    1,    1,    1,    1,    1,    1,    1,
00544         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00545         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00546         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00547         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00548         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00549         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00550         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00551 
00552         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00553         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00554         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00555         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00556         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00557         1,    1,    1,    1,    1
00558     } ;
00559 
00560 static yyconst flex_int32_t yy_meta[43] =
00561     {   0,
00562         1,    2,    3,    2,    1,    1,    1,    1,    1,    2,
00563         1,    1,    1,    4,    1,    5,    1,    4,    4,    4,
00564         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
00565         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
00566         4,    4
00567     } ;
00568 
00569 static yyconst flex_int16_t yy_base[737] =
00570     {   0,
00571         0,    5,   22,    0,   64,    0,  104,  109,  126,    0,
00572       166,  171,  188,    0,  228,  233,  250,    0,  292,    0,
00573       334,    0,  374,    0,  381,  408,  413,  418,  423,  428,
00574      2088, 2089, 2089, 2084, 2089,  102,   11,   16,  170, 2083,
00575       390,  434,  437,  465,  423,  433,  451,  456,  442,  463,
00576       473,  475,  485,  495,  484,  494,  504, 2071, 2089, 2070,
00577      2089,    0, 2069,    0,  118,  232,    0,  372, 2089,  496,
00578      2068,  529,    0, 2067, 2089, 2066, 2089, 2089, 2050,  152,
00579       155, 2038, 2046, 2044, 2042,  515, 2051, 2054, 2053, 2089,
00580      2089, 2068, 2089,  531, 2067, 2089, 2089, 2089,  239, 2053,
00581 
00582      2089, 2065, 2089,  541, 2089,  551,  531,  525,  540,  529,
00583       548,  546,  552,  562,  593,  579,  590,  589,  539, 2030,
00584       560,  588,  598,  604,  603,  570,  618,  627,  631,  629,
00585       641,  635,  640,  645,  652,  664,  665,  668,  678,  683,
00586         0, 2052,    0, 2051,    0,    0, 2050,    0,  452,  165,
00587      2060,    0,    0,  581, 2031,    0, 2047,  698,  245,  456,
00588         0, 2046,    0, 2045, 2029, 2038, 2026, 2025, 2017, 2017,
00589      2016, 2026, 2014, 2015, 2021, 2020, 2026, 2026, 2006, 2009,
00590      2039,  658,  694,  688,  693,  696,  706,  709,  703,  719,
00591       668,    0,    0,  724,  729,  769,  789,  792,  725,  793,
00592 
00593       788,  805,  808,  812,  812,  818,  826,  830,  831,  844,
00594       845,  849,  848,  861,  862,  874,  894,  878,  884, 2036,
00595      2089, 2037, 2010, 2006, 2003, 2003, 2012, 2014, 2010,  365,
00596      2005, 2004, 2011, 1998, 1990, 1998, 1997, 2002, 1999,  890,
00597       894,  925,  868,  897,  912,  911,  912,    0,  943,    0,
00598       917,    0,  956, 2089,    0,  995,  638,  925,  932,  942,
00599       984,  990, 1002,  985,  955, 1008, 1003, 1017, 1018, 1027,
00600      1053, 1066, 1032, 1056, 1065, 1066, 1092,  960, 1081, 1089,
00601      1982, 2001, 2002, 1991, 1988, 1989, 1983,  154, 1989, 1994,
00602      1982, 1983, 1976, 1992, 1941, 1107,  531, 1940, 1067, 1114,
00603 
00604      1121, 1108, 1107, 1116, 1118, 1119, 1130,    0, 1929, 1930,
00605      1903, 1901, 1889,   93, 1865, 1862,  209,  379, 1868, 1153,
00606      1016, 1137, 1138, 1043, 1143, 1151, 1031, 1139, 1162, 1155,
00607      1167, 1170, 1173, 1186, 1195, 1213, 2089, 1218, 1222, 1875,
00608       727, 2089, 1212, 1222, 1224, 1226, 1236, 1263, 2089, 2089,
00609      1204, 2089, 1865, 1859, 1843, 1830, 1840, 1830, 1829, 1815,
00610      1818, 1828, 1808, 1807, 1798, 1784, 1796, 1267, 1276, 1805,
00611      1279, 2089, 1779, 1263, 1288, 1265, 1268, 1235, 1272, 1284,
00612      1280, 1304, 1777, 1770,  759, 1769, 1762, 1755, 1755, 1740,
00613      1732, 1721, 1698, 1685, 1678, 1297, 1300, 1308, 1311, 1334,
00614 
00615      1320, 1323, 1322, 1357, 1331, 1346, 1347, 1357, 1358, 1672,
00616      1640, 1636, 1661, 1389, 1383, 1392, 1369, 1372, 1379, 1403,
00617       378, 1633, 1621, 1613, 1621,  474, 1623, 1604, 1412, 1595,
00618      1595, 1600, 1582, 1581, 1587, 1596, 1589, 1416, 1419, 1424,
00619      1421, 1570, 1416, 1431, 1430, 1432, 1440, 1465, 1565, 1559,
00620         0, 1545, 1535, 1532, 1517, 1516, 1517, 1500, 1499, 1503,
00621      1482, 1401, 1439, 1442, 1479, 1472, 1456, 1457, 1490, 1462,
00622      1478, 1511, 1474, 1475,    0,    0, 1504, 1508, 1498, 1502,
00623      1517, 1463, 1460, 1442, 1437, 1423, 1413, 1416, 1543, 1533,
00624      1416, 1398, 1402, 1548, 1560, 1547, 1381, 1540, 1558, 1562,
00625 
00626      1540, 1377, 1367, 1350, 1341, 1340, 1334, 1343, 1315,    0,
00627      1318, 1581, 1595, 1547, 1297, 1288, 1573, 1572, 1288, 1577,
00628      1612, 1300, 1283, 1592, 1601, 1600, 1264, 1267, 1265, 1240,
00629      1239, 1227, 1632, 1220, 1210, 1219, 1205, 1606, 1217, 1637,
00630      1621, 1641, 1206,  861, 1198, 1195, 1188, 1184, 1164, 1160,
00631      1652, 1656, 1644, 1663, 1156, 1144, 1137, 1138, 1652, 1649,
00632      1666, 1142, 1133, 1123, 1678, 1692, 1124, 1695, 1110, 1681,
00633      1706, 1710, 1713, 1130, 1722, 1701, 1121, 1093, 1352, 1091,
00634      1071, 1068,  616, 1043, 1033, 1033, 1699, 1727, 2089, 1024,
00635      1731, 1027, 1014,  995, 1721, 1724,  984,  977,  971, 1742,
00636 
00637      1753,  982, 1760, 1765,  974,  963, 1747,  938, 1769,  956,
00638       944,  764, 1774,  939,  935,  925,  986,  906,  896,  886,
00639       895, 1764,  883,  875, 1763,  863, 1779,  872,  849,  833,
00640      1756, 1771,  841,  843,  839, 1797, 1804,  835, 1809,  829,
00641      1823,  803,  790, 1824,    0,    0,  814, 1024, 1185,  779,
00642       748,    0,  734,  717,  716,  698,  684,  672,  662, 1827,
00643      1763, 1830, 1840,  677, 1844, 1854, 1858,  633,    0,    0,
00644       635,  624,  629, 1868,  600, 1231,  605, 1872, 1852, 1875,
00645      1885,  604,  570,  569, 1889, 2089,  553, 1329,  559,  541,
00646       531,  516,  501,  488,  501,  480, 1507,  456,  456,  458,
00647 
00648      2089, 1900, 1905, 1910, 1915, 1919, 1923,  468,  467, 1927,
00649       449, 1932, 1937,  439,  398,  381, 1942, 1946,  236,  121,
00650       112, 1950,   15,    8,    3, 1955, 1960, 1965, 1970, 1975,
00651      1980, 1985, 1990, 1995, 2000, 2005
00652     } ;
00653 
00654 static yyconst flex_int16_t yy_def[737] =
00655     {   0,
00656       702,  702,  701,    3,  701,    5,  702,  702,  701,    9,
00657       702,  702,  701,   13,  703,  703,  701,   17,  701,   19,
00658       701,   21,  702,   23,  702,  702,  702,  702,  704,  704,
00659       701,  701,  701,  705,  701,  701,  701,  701,  705,  706,
00660       707,  707,  707,  707,   44,   44,   44,   46,   44,   44,
00661        44,   44,   44,   44,   44,   44,   44,  708,  701,  709,
00662       701,  710,  711,  712,  701,  713,  712,  712,  701,  701,
00663       714,  701,  701,  715,  701,  716,  701,  701,  701,  701,
00664       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00665       701,  705,  701,  701,  717,  701,  701,  701,  701,  701,
00666 
00667       701,  706,  701,  701,  701,  718,   44,   46,   44,   46,
00668        44,   46,   44,   44,  707,   44,   44,   44,   46,  115,
00669        46,   46,   46,   46,   46,   46,   46,   44,   44,   44,
00670        44,   46,   46,   46,   46,   46,   46,   46,   46,   46,
00671       719,  708,  720,  709,  710,  721,  711,  712,  701,  701,
00672       722,  712,  712,  701,  701,  723,  714,  701,  701,  701,
00673       724,  715,  725,  716,  701,  701,  701,  701,  701,  701,
00674       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00675       717,   44,   44,   46,   46,   46,   46,   46,   46,   46,
00676       726,  726,  726,   46,   46,  701,   46,   46,   46,   46,
00677 
00678        46,   46,   46,   44,   46,   46,   46,   46,   46,   46,
00679        46,   46,   46,   46,   46,   46,  707,   46,   46,  701,
00680       701,  722,  701,  701,  701,  701,  701,  701,  701,  701,
00681       701,  701,  701,  701,  701,  701,  701,  701,  701,   46,
00682        46,  707,   44,   46,   44,   46,   46,  726,  726,  726,
00683        46,  727,  727,  701,  727,  728,  196,   46,   46,   46,
00684        46,   46,   46,   46,   44,   44,   44,   44,   44,   44,
00685       707,  707,   44,   44,   44,   44,  707,  701,   44,   44,
00686       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00687       701,  701,  701,  701,  701,  701,  701,  701,   44,  707,
00688 
00689       701,   44,   44,   44,   44,   44,   44,  253,  727,  727,
00690       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
00691        46,   46,   46,   46,   46,   46,   46,   44,   44,   46,
00692        46,   46,   46,   44,   44,  701,  701,  701,  701,  729,
00693       701,  701,   44,   44,   44,   44,   44,  701,  701,  701,
00694       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00695       701,  701,  701,  701,  701,  701,  701,  701,  701,  730,
00696       701,  701,  701,   44,  701,   44,   44,   46,   46,   46,
00697        46,  707,  727,  727,  727,  727,  727,  727,  727,  727,
00698       727,  727,  727,  727,  727,   44,   44,   44,   44,  707,
00699 
00700        44,   44,   46,  707,   44,   44,   44,   44,   44,  729,
00701       701,  701,  729,  701,  701,  414,   46,   46,   46,  701,
00702       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00703       701,  701,  701,  701,  701,  730,  730,  701,  701,  701,
00704        44,  701,   44,   44,   44,   44,   44,  701,  727,  727,
00705       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
00706       727,   46,   46,   46,  701,  701,   46,   46,  701,   46,
00707        46,  707,  701,  701,  414,  414,  701,  701,   46,   46,
00708        46,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00709       701,  701,  701,  701,  701,   46,  701,   44,   44,   44,
00710 
00711        46,  701,  727,  727,  727,  727,  727,  727,  727,  727,
00712       727,  707,  707,  701,  701,  701,   46,   46,  701,   46,
00713       701,  701,  701,   46,   44,   46,  701,  701,  701,  701,
00714       701,  701,  701,  701,  701,  701,  701,   46,  701,  272,
00715        46,  707,  701,  727,  727,  727,  727,  727,  727,  727,
00716       701,  701,   44,  701,  701,  701,  701,  701,   44,   44,
00717        44,  701,  701,  701,  701,  701,  701,  701,  701,   44,
00718       701,  701,  701,  731,  701,  701,  732,  701,  727,  727,
00719       727,  727,  727,  727,  727,  701,   46,  701,  701,  701,
00720       701,  701,  701,  701,   44,   44,  701,  701,  701,  701,
00721 
00722       701,  733,  701,  701,  734,  701,  701,  701,  701,  731,
00723       731,  414,  701,  735,  416,  732,  701,  701,  727,  727,
00724       727,  727,  727,  701,   44,  701,  701,  701,  701,  701,
00725        46,   46,  701,  733,  733,  701,  701,  736,  701,  734,
00726       701,  701,  701,  701,  612,  612,  735,  612,  701,  701,
00727       727,  727,  727,  727,  727,  701,  701,  701,  701,  707,
00728        46,  701,  701,  736,  701,  701,  701,  701,  648,  648,
00729       701,  727,  727,  701,  701,  701,  701,  701,   46,  701,
00730       701,  701,  701,  727,  701,  701,  701,  701,  701,  701,
00731       701,  727,  701,  701,  416,  727,  701,  727,  727,  727,
00732 
00733         0,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00734       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00735       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00736       701,  701,  701,  701,  701,  701
00737     } ;
00738 
00739 static yyconst flex_int16_t yy_nxt[2132] =
00740     {   0,
00741       701,  160,   33,  160,   34,   35,  163,   33,   35,   34,
00742        35,  161,   99,   35,   99,  100,   36,   99,  156,   99,
00743       100,   36,   32,   37,   38,   37,   39,   35,   40,   32,
00744        35,   32,   32,   32,   32,   32,   32,   32,   36,   41,
00745        42,   43,   44,   45,   46,   47,   41,   41,   48,   41,
00746        49,   50,   41,   51,   52,   53,   54,   55,   56,   41,
00747        57,   41,   41,   41,   32,   32,   33,   32,   34,   35,
00748        32,   32,   35,   32,   32,   32,   32,   32,   32,   32,
00749        36,   58,   58,   58,   58,   58,   58,   58,   58,   58,
00750        58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
00751 
00752        58,   58,   58,   58,   58,   58,   33,   97,   34,   35,
00753        97,   33,   35,   34,   35,  146,  385,   35,   98,  149,
00754        36,  149,  150,  388,  143,   36,   32,   32,   59,   32,
00755        34,   35,   32,   32,   35,   32,   32,   32,   32,   32,
00756        32,   32,   36,   60,   60,   60,   60,   60,   60,   60,
00757        60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
00758        60,   60,   60,   60,   60,   60,   60,   60,   33,  220,
00759        34,   35,   96,   33,   35,   34,   35,  166,  359,   35,
00760       221,  168,   36,  167,  360,  101,  169,   36,   32,   32,
00761        61,   32,   34,   35,   32,   32,   35,   62,   32,   32,
00762 
00763        32,   32,   32,   32,   36,   63,   63,   63,   63,   63,
00764        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
00765        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
00766        65,  391,   66,   67,   96,   65,   67,   66,   67,  141,
00767        99,   67,   99,  100,   68,  392,  160,  148,  160,   68,
00768        32,   32,   69,   32,   34,   35,   32,   32,   35,   32,
00769        32,   32,   70,   32,   32,   32,   36,   71,   71,   71,
00770        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
00771        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
00772        71,   71,   32,   72,   69,   72,   34,   35,   32,   32,
00773 
00774        35,   32,   32,   32,   73,   32,   32,   32,   36,   74,
00775        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
00776        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
00777        74,   74,   74,   74,   32,   32,   33,   32,   34,   35,
00778        32,   32,   35,   32,   75,   32,   32,   32,   32,   32,
00779        36,   76,   76,   76,   76,   76,   76,   76,   76,   76,
00780        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
00781        76,   76,   76,   76,   76,   76,   77,  152,   34,   35,
00782       152,   78,   35,   90,  164,   34,   35,  288,  153,   35,
00783        36,  104,   79,  104,   80,   81,   82,   36,  289,  105,
00784 
00785        83,  162,   84,  106,  393,   85,   86,   87,   88,   89,
00786        90,  482,   34,   35,  483,   33,   35,   34,   35,  394,
00787        33,   35,   34,   35,   36,   33,   35,   92,   93,   36,
00788        33,   93,   92,   93,   36,  104,   93,  104,  104,   94,
00789       104,  107,  157,  105,   94,  113,  105,  106,  107,  114,
00790       106,  107,  147,  149,  115,  149,  150,  160,  107,  160,
00791       107,  116,  108,  117,  107,  109,  104,  107,  104,  107,
00792       144,  142,  118,  123,  105,  487,  107,  487,  106,  120,
00793       385,  107,  107,  110,  107,  121,  122,  119,  107,  700,
00794       111,  107,  699,  126,  124,  107,  112,  154,  107,  154,
00795 
00796       107,  698,  135,  107,  107,  125,  127,  130,  128,  136,
00797       107,  129,  107,  131,  701,  107,  107,  132,  697,  107,
00798       107,  133,  107,  571,  137,  107,  107,  155,  138,  139,
00799       158,  134,  158,  174,  372,  107,   97,  140,  696,   97,
00800       372,  159,  104,  372,  104,  372,  175,   98,  176,  107,
00801       105,  177,  104,  182,  104,  107,  107,  184,  107,  107,
00802       105,  695,  107,  185,  107,  107,  186,  107,  107,  198,
00803       189,  183,  694,  107,  107,  187,  188,  107,  107,  107,
00804       107,  676,  154,  107,  154,  107,  693,  107,  107,  692,
00805       107,  190,  199,  107,  191,  192,  191,  107,  107,  107,
00806 
00807       107,  691,  193,  204,  107,  192,  106,  107,  107,  107,
00808       107,  196,  155,  195,  107,  107,  107,  622,  107,  622,
00809       107,  107,  201,  200,  197,  202,  107,  107,  107,  194,
00810       690,  107,  107,  107,  107,  689,  687,  107,  203,  320,
00811       701,  320,  107,  107,  205,  107,  107,  209,  107,  107,
00812       208,  652,  107,  206,  107,  684,  107,  107,  207,  107,
00813       107,  683,  107,  211,  213,  107,  107,  682,  107,  249,
00814       107,  249,  107,  107,  107,  107,  107,  250,  210,  107,
00815       107,  212,  107,  107,  107,  214,  215,  665,  677,  240,
00816       217,  107,  107,  107,  107,  107,  107,  216,  107,  158,
00817 
00818       218,  158,  676,  107,  107,  675,  107,  107,  107,  219,
00819       159,  107,  107,  107,  241,  120,  242,  107,  107,  107,
00820       674,  107,  107,  107,  107,  107,  107,  107,  415,  243,
00821       415,  246,  107,  107,  107,  107,  107,  107,  244,  107,
00822       416,  247,  107,  251,  245,  107,  673,  107,  107,  107,
00823       672,  120,  107,  260,  107,  107,  510,  107,  107,  107,
00824       451,  254,  451,  107,  107,  645,  385,  646,  107,  252,
00825       253,  254,  253,  252,  252,  252,  252,  252,  255,  252,
00826       252,  252,  256,  252,  252,  252,  257,  257,  257,  257,
00827       257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
00828 
00829       257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
00830       257,  258,  259,  671,  263,  261,  107,  107,  107,  107,
00831       107,  107,  107,  107,  648,  609,  262,  107,  107,  668,
00832       266,  107,  107,  107,  265,  107,  107,  107,  107,  641,
00833       107,  264,  267,  107,  107,  665,  107,  107,  107,  636,
00834       269,  107,  271,  636,  107,  268,  107,  107,  270,  272,
00835       107,  107,  579,  349,  579,  107,  273,  274,  659,  107,
00836       107,  271,  107,  107,  107,  107,  107,  107,  107,  107,
00837       658,  275,  580,  107,  107,  276,  302,  107,  107,  107,
00838       107,  107,  120,  107,  657,  278,  277,  278,  591,  107,
00839 
00840       107,  107,  107,  105,  107,  656,  107,  106,  107,  655,
00841       299,  279,  107,  107,  107,  653,  652,  107,  107,  280,
00842       107,  300,  107,  107,  107,  303,  301,  107,  301,  107,
00843       304,  651,  650,  107,  105,  617,  107,  107,  106,  305,
00844       107,  107,  306,  107,  249,  307,  249,  107,  615,  648,
00845       107,  107,  250,  107,  612,  107,  107,  308,  321,  308,
00846       107,  278,  107,  278,  107,  255,  612,  322,  323,  105,
00847       107,  107,  107,  107,  643,  309,  310,  311,  312,  313,
00848       107,  107,  314,  642,  641,  315,  330,  649,  316,  649,
00849       317,  318,  636,  297,  319,  252,  320,  349,  320,  252,
00850 
00851       252,  252,  252,  252,  255,  252,  252,  252,  324,  252,
00852       252,  252,  107,  329,  325,  107,  327,  326,  107,  633,
00853       107,  107,  328,  107,  107,  669,  107,  670,  107,  107,
00854       107,  630,  107,  107,  107,  333,  107,  331,  332,  107,
00855       629,  107,  107,  107,  107,  107,  396,  628,  107,  107,
00856       107,  334,  107,  335,  336,  107,  336,  107,  107,  107,
00857       626,  402,  337,  107,  624,  399,  106,  338,  623,  339,
00858       107,  107,  510,  107,  107,  340,  345,  341,  342,  106,
00859       342,  107,  107,  107,  107,  374,  621,  107,  347,  343,
00860       107,  107,  107,  348,  349,  348,  346,  107,  107,  107,
00861 
00862       344,  350,  620,  120,  351,  106,  107,  107,  368,  619,
00863       369,  271,  107,  618,  107,  375,  370,  375,  371,  372,
00864       107,  372,  301,  105,  301,  107,  107,  106,  377,  378,
00865       105,  617,  107,  107,  107,  376,  107,  107,  107,  107,
00866       612,  107,  379,  107,  107,  609,  606,  107,  107,  380,
00867       107,  599,  382,  381,  320,  107,  320,  403,  398,  598,
00868       597,  107,  255,  397,  107,  107,  107,  107,  107,  594,
00869       107,  107,  593,  107,  401,  592,  107,  107,  400,  107,
00870       107,  107,  107,  107,  404,  405,  649,  107,  649,  406,
00871       107,  591,  407,  107,  107,  107,  585,  107,  107,  385,
00872 
00873       107,  107,  584,  107,  409,  420,  107,  420,  408,  107,
00874       583,  107,  107,  107,  336,  273,  336,  107,  582,  338,
00875       107,  338,  337,  338,  581,  338,  107,  410,  578,  341,
00876       107,  410,  688,  341,  688,  571,  421,  107,  297,  297,
00877       107,  411,  107,  107,  107,  411,  569,  107,  417,  107,
00878       568,  107,  412,  107,  107,  107,  412,  107,  418,  120,
00879       567,  107,  419,  107,  348,  107,  348,  107,  368,  566,
00880       368,  273,  350,  565,  272,  351,  436,  368,  371,  368,
00881       439,  107,  439,  443,  564,  436,  107,  371,  107,  375,
00882       107,  375,  440,  107,  107,  563,  107,  105,  441,  107,
00883 
00884       107,  562,  445,  444,  446,  448,  447,  448,  107,  442,
00885       107,  107,  107,  105,  107,  462,  558,  106,  107,  107,
00886       557,  556,  107,  107,  555,  107,  107,  554,  107,  107,
00887       688,  463,  688,  107,  464,  465,  107,  465,  467,  107,
00888       385,  107,  107,  466,  272,  107,  550,  106,  107,  470,
00889       272,  107,  107,  579,  107,  579,  107,  468,  469,  349,
00890       469,  107,  107,  549,  107,  107,  105,  548,  547,  351,
00891       106,  107,  107,  580,  546,  107,  107,  107,  107,  273,
00892       273,  471,  107,  107,  415,  545,  415,  472,  107,  107,
00893       475,  480,  476,  477,  544,  478,  416,  107,  342,  479,
00894 
00895       107,  342,  107,  342,  420,  416,  420,  107,  107,  107,
00896       543,  107,  411,  489,  481,  489,  539,  494,  107,  495,
00897       439,  490,  439,  412,  537,  372,  297,  372,  372,  273,
00898       372,  107,  440,  372,  107,  421,  372,  440,  372,  496,
00899       107,  107,  536,  271,  297,  532,  107,  107,  107,  107,
00900       500,  498,  107,  499,  531,  107,  107,  107,  107,  530,
00901       529,  107,  107,  107,  271,  107,  104,  107,  104,  512,
00902       107,  501,  107,  514,  105,  514,  517,  513,  107,  528,
00903       465,  107,  465,  518,  107,  107,  107,  107,  466,  527,
00904       273,  469,  107,  469,  523,  107,  107,  502,  515,  105,
00905 
00906       520,  107,  351,  516,  522,  477,  107,  477,  107,  477,
00907       372,  477,  521,  349,  521,  511,  372,  107,  524,  372,
00908       105,  372,  519,  351,  106,  510,  107,  411,  107,  385,
00909       107,  411,  107,  509,  533,  525,  533,  107,  412,  508,
00910       507,  107,  412,  526,  489,  107,  489,  107,  514,  494,
00911       514,  495,  490,  506,  505,  504,  107,  372,  120,  534,
00912       372,  494,  372,  495,  535,  107,  538,  385,  107,  372,
00913       542,  107,  372,  515,  372,  107,  107,  107,  516,  107,
00914       107,  385,  551,  107,  551,  503,  107,  107,  497,  107,
00915       105,  540,  273,  107,  106,  472,  552,  541,  552,  438,
00916 
00917       107,  107,  107,  107,  105,  107,  438,  107,  106,  297,
00918       273,  107,  107,  521,  297,  521,  107,  493,  492,  107,
00919       107,  105,  107,  296,  351,  553,  107,  559,  107,  491,
00920       561,  107,  560,  533,  570,  533,  107,  296,  572,  107,
00921       573,  488,  576,  271,  576,  107,  574,  486,  575,  107,
00922       577,  107,  296,  551,  106,  551,  485,  552,  534,  552,
00923       107,  105,  107,  535,  588,  105,  588,  107,  484,  107,
00924       107,  414,  474,  589,  107,  587,  473,  107,  595,  600,
00925       107,  601,  414,  107,  107,  596,  586,  602,  512,  603,
00926       372,  107,  372,  604,  590,  604,  607,  107,  607,  107,
00927 
00928       461,  605,  576,  273,  576,  297,  107,  192,  192,  192,
00929       577,  572,  107,  572,  572,  192,  572,  460,  192,  610,
00930       459,  575,  610,  613,  575,  613,  608,  107,  588,  625,
00931       588,  614,  627,  411,  627,  615,  411,  589,  107,  107,
00932       458,  589,  107,  600,  412,  600,  107,  412,  607,  107,
00933       607,  634,  631,  603,  600,  107,  600,  297,  590,  632,
00934       457,  637,  634,  637,  603,  622,  604,  622,  604,  638,
00935       644,  456,  644,  639,  605,  613,  455,  613,  608,  297,
00936       627,  107,  627,  614,  107,  271,  660,  615,  107,  589,
00937       454,  107,  453,  679,  107,  107,  654,  661,  662,  107,
00938 
00939       663,  107,  107,  452,  450,  637,  372,  637,  449,  372,
00940       107,  372,  372,  638,  297,  438,  297,  639,  372,  435,
00941       434,  372,  639,  372,  666,  644,  667,  644,  678,  433,
00942       678,  662,  372,  663,  297,  372,  105,  372,  432,  372,
00943       106,  662,  372,  663,  372,  680,  431,  681,  430,  372,
00944       429,  428,  372,  372,  372,  666,  372,  667,  372,  666,
00945       427,  667,  426,  372,  425,  424,  372,  372,  372,  685,
00946       372,  685,  372,  678,  660,  678,  680,  686,  681,  423,
00947       107,  105,  107,  422,  372,  414,  680,  372,  681,  372,
00948       685,  107,  685,  395,  372,  390,  389,  372,  686,  372,
00949 
00950        32,   32,   32,   32,   32,   64,   64,   64,   64,   64,
00951        91,   91,   91,   91,   91,   95,   95,   95,   95,  102,
00952       102,  102,  102,  102,  107,  387,  107,  145,  145,  386,
00953       145,  145,  148,  148,  385,  148,  148,  151,  151,  151,
00954       151,  151,  181,  181,  181,  181,  181,  106,  384,  106,
00955       222,  222,  222,  222,  222,  248,  248,  383,  248,  248,
00956       252,  252,  373,  252,  252,  256,  256,  367,  256,  256,
00957       413,  413,  413,  413,  413,  437,  437,  437,  437,  437,
00958       611,  611,  611,  611,  611,  616,  616,  616,  616,  616,
00959       635,  635,  635,  635,  635,  640,  640,  640,  640,  640,
00960 
00961       647,  647,  647,  647,  647,  664,  664,  664,  664,  664,
00962       366,  365,  364,  363,  362,  361,  358,  357,  356,  355,
00963       354,  353,  352,  298,  297,  296,  295,  294,  293,  292,
00964       291,  290,  287,  286,  285,  284,  283,  282,  281,   96,
00965       220,   96,  239,  238,  237,  236,  235,  234,  233,  232,
00966       231,  230,  229,  228,  227,  226,  225,  224,  163,  161,
00967       156,  223,   96,  146,  143,  141,  107,  103,  101,   96,
00968        96,  180,  179,  178,  173,  172,  171,  170,  165,  163,
00969       161,  156,  146,  143,  141,  103,   96,  701,   31,  701,
00970       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00971 
00972       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00973       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00974       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
00975       701
00976     } ;
00977 
00978 static yyconst flex_int16_t yy_chk[2132] =
00979     {   0,
00980         0,   73,    1,   73,    1,    1,  725,    2,    1,    2,
00981         2,  724,   37,    2,   37,   37,    1,   38,  723,   38,
00982        38,    2,    3,    3,    3,    3,    3,    3,    3,    3,
00983         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00984         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00985         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
00986         3,    3,    3,    3,    5,    5,    5,    5,    5,    5,
00987         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
00988         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
00989         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
00990 
00991         5,    5,    5,    5,    5,    5,    7,   36,    7,    7,
00992        36,    8,    7,    8,    8,  721,  314,    8,   36,   65,
00993         7,   65,   65,  314,  720,    8,    9,    9,    9,    9,
00994         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00995         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00996         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
00997         9,    9,    9,    9,    9,    9,    9,    9,   11,  150,
00998        11,   11,   39,   12,   11,   12,   12,   80,  288,   12,
00999       150,   81,   11,   80,  288,   39,   81,   12,   13,   13,
01000        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
01001 
01002        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
01003        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
01004        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
01005        15,  317,   15,   15,   66,   16,   15,   16,   16,  719,
01006        99,   16,   99,   99,   15,  317,  159,   66,  159,   16,
01007        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
01008        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
01009        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
01010        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
01011        17,   17,   19,   19,   19,   19,   19,   19,   19,   19,
01012 
01013        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
01014        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
01015        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
01016        19,   19,   19,   19,   21,   21,   21,   21,   21,   21,
01017        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
01018        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
01019        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
01020        21,   21,   21,   21,   21,   21,   23,   68,   23,   23,
01021        68,   23,   23,   25,  716,   25,   25,  230,   68,   25,
01022        23,   41,   23,   41,   23,   23,   23,   25,  230,   41,
01023 
01024        23,  715,   23,   41,  318,   23,   23,   23,   23,   23,
01025        26,  421,   26,   26,  421,   27,   26,   27,   27,  318,
01026        28,   27,   28,   28,   26,   29,   28,   29,   29,   27,
01027        30,   29,   30,   30,   28,   42,   30,   42,   43,   29,
01028        43,   45,  714,   42,   30,   45,   43,   42,   45,   45,
01029        43,   46,  711,  149,   45,  149,  149,  160,   46,  160,
01030        49,   46,   42,   46,   46,   43,   44,   49,   44,   47,
01031       709,  708,   46,   49,   44,  426,   47,  426,   44,   48,
01032       700,   50,   47,   44,   48,   48,   48,   47,   50,  699,
01033        44,   51,  698,   52,   50,   48,   44,   70,   51,   70,
01034 
01035        52,  696,   55,   53,   51,   51,   52,   53,   52,   55,
01036        53,   52,   56,   54,  695,   55,   53,   54,  694,   56,
01037        54,   54,   57,  693,   55,   56,   54,   70,   56,   57,
01038        72,   54,   72,   86,  297,   57,   94,   57,  692,   94,
01039       297,   72,  104,  297,  104,  297,   86,   94,   86,  107,
01040       104,   86,  106,  108,  106,  108,  107,  110,  109,  110,
01041       106,  691,  107,  110,  108,  109,  111,  119,  110,  119,
01042       113,  109,  690,  111,  112,  112,  112,  113,  119,  111,
01043       114,  689,  154,  113,  154,  112,  687,  114,  121,  684,
01044       121,  114,  121,  114,  115,  115,  115,  116,  126,  121,
01045 
01046       126,  683,  115,  126,  116,  115,  115,  118,  117,  126,
01047       116,  117,  154,  116,  118,  117,  122,  583,  122,  583,
01048       118,  117,  123,  122,  118,  124,  123,  122,  123,  115,
01049       682,  125,  124,  125,  124,  677,  675,  123,  125,  257,
01050       257,  257,  125,  124,  127,  128,  127,  130,  127,  129,
01051       129,  673,  128,  128,  130,  672,  129,  127,  128,  131,
01052       130,  671,  129,  132,  134,  132,  131,  668,  133,  191,
01053       133,  191,  131,  134,  132,  134,  182,  191,  131,  133,
01054       135,  133,  135,  182,  134,  135,  136,  664,  659,  182,
01055       138,  135,  136,  137,  136,  137,  138,  137,  138,  158,
01056 
01057       139,  158,  658,  136,  137,  657,  139,  138,  139,  140,
01058       158,  140,  183,  140,  183,  185,  184,  139,  184,  183,
01059       656,  185,  140,  185,  186,  183,  186,  184,  341,  186,
01060       341,  189,  185,  189,  187,  186,  187,  188,  187,  188,
01061       341,  190,  189,  194,  188,  187,  655,  190,  188,  190,
01062       654,  195,  194,  199,  194,  199,  653,  195,  190,  195,
01063       385,  385,  385,  194,  199,  612,  651,  612,  195,  196,
01064       196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
01065       196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
01066       196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
01067 
01068       196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
01069       196,  197,  198,  650,  201,  200,  201,  197,  201,  197,
01070       198,  200,  198,  200,  647,  643,  200,  201,  197,  642,
01071       204,  198,  200,  202,  203,  202,  203,  204,  203,  640,
01072       205,  202,  205,  204,  202,  638,  206,  203,  206,  635,
01073       207,  205,  209,  634,  207,  206,  207,  206,  208,  209,
01074       208,  209,  544,  633,  544,  207,  210,  211,  630,  208,
01075       209,  212,  210,  211,  210,  211,  213,  212,  213,  212,
01076       629,  213,  544,  210,  211,  214,  243,  213,  212,  214,
01077       215,  214,  215,  243,  628,  217,  216,  217,  626,  243,
01078 
01079       214,  215,  216,  217,  216,  624,  218,  217,  218,  623,
01080       240,  218,  219,  216,  219,  621,  620,  218,  240,  219,
01081       240,  241,  241,  219,  241,  244,  242,  244,  242,  240,
01082       245,  619,  618,  241,  242,  616,  244,  245,  242,  246,
01083       247,  246,  247,  245,  249,  251,  249,  251,  615,  614,
01084       246,  247,  249,  258,  611,  258,  251,  253,  258,  253,
01085       259,  278,  259,  278,  258,  253,  610,  259,  260,  278,
01086       260,  259,  260,  265,  608,  253,  253,  253,  253,  253,
01087       265,  260,  253,  606,  605,  253,  265,  617,  253,  617,
01088       253,  253,  602,  599,  253,  256,  256,  598,  256,  256,
01089 
01090       256,  256,  256,  256,  256,  256,  256,  256,  261,  256,
01091       256,  256,  261,  264,  261,  264,  262,  261,  262,  597,
01092       262,  267,  263,  261,  264,  648,  266,  648,  267,  262,
01093       263,  594,  263,  266,  267,  268,  269,  266,  267,  266,
01094       593,  263,  268,  269,  321,  270,  321,  592,  268,  269,
01095       273,  269,  270,  270,  271,  321,  271,  273,  270,  327,
01096       590,  327,  271,  273,  586,  324,  271,  272,  585,  272,
01097       327,  324,  584,  324,  274,  272,  274,  272,  272,  272,
01098       272,  274,  324,  275,  276,  299,  582,  274,  276,  272,
01099       275,  276,  299,  277,  277,  277,  275,  276,  299,  279,
01100 
01101       272,  277,  581,  279,  277,  277,  279,  280,  296,  580,
01102       296,  280,  279,  578,  280,  300,  296,  300,  296,  296,
01103       280,  296,  301,  300,  301,  303,  302,  300,  302,  303,
01104       301,  577,  303,  302,  304,  300,  305,  306,  303,  302,
01105       574,  304,  304,  305,  306,  569,  567,  304,  307,  305,
01106       306,  564,  307,  306,  320,  307,  320,  328,  323,  563,
01107       562,  307,  320,  322,  328,  322,  323,  322,  323,  558,
01108       328,  325,  557,  325,  326,  556,  322,  323,  325,  326,
01109       329,  326,  325,  330,  329,  330,  649,  329,  649,  331,
01110       326,  555,  332,  329,  330,  331,  550,  331,  332,  549,
01111 
01112       332,  333,  548,  333,  334,  351,  331,  351,  333,  332,
01113       547,  334,  333,  335,  336,  335,  336,  334,  546,  338,
01114       335,  338,  336,  339,  545,  339,  335,  338,  543,  338,
01115       343,  339,  676,  339,  676,  539,  351,  343,  537,  536,
01116       344,  338,  345,  343,  346,  339,  535,  344,  343,  345,
01117       534,  346,  338,  344,  347,  345,  339,  346,  344,  345,
01118       532,  347,  346,  378,  348,  378,  348,  347,  368,  531,
01119       368,  347,  348,  530,  378,  348,  368,  369,  368,  369,
01120       371,  374,  371,  376,  529,  369,  377,  369,  374,  375,
01121       376,  375,  371,  377,  374,  528,  376,  375,  374,  377,
01122 
01123       379,  527,  379,  377,  380,  382,  381,  382,  381,  375,
01124       381,  379,  380,  382,  380,  396,  523,  382,  397,  381,
01125       522,  519,  396,  380,  516,  397,  398,  515,  396,  399,
01126       688,  397,  688,  398,  398,  400,  399,  400,  401,  398,
01127       511,  402,  399,  400,  399,  401,  509,  400,  402,  405,
01128       403,  401,  403,  579,  402,  579,  405,  402,  404,  404,
01129       404,  403,  405,  508,  406,  407,  404,  507,  506,  404,
01130       404,  406,  407,  579,  505,  408,  409,  406,  407,  408,
01131       407,  406,  408,  409,  415,  504,  415,  409,  408,  409,
01132       414,  418,  414,  416,  503,  416,  415,  417,  414,  417,
01133 
01134       418,  414,  418,  414,  420,  416,  420,  419,  417,  419,
01135       502,  418,  414,  429,  419,  429,  497,  438,  419,  438,
01136       439,  429,  439,  414,  493,  438,  492,  440,  438,  462,
01137       438,  462,  439,  440,  443,  420,  440,  440,  440,  441,
01138       462,  443,  491,  441,  488,  487,  441,  443,  445,  444,
01139       446,  443,  441,  444,  486,  445,  444,  446,  447,  485,
01140       484,  445,  444,  446,  445,  447,  448,  463,  448,  463,
01141       464,  447,  464,  466,  448,  466,  467,  464,  463,  483,
01142       465,  464,  465,  468,  467,  468,  467,  468,  465,  482,
01143       470,  469,  470,  469,  474,  467,  468,  448,  466,  469,
01144 
01145       471,  470,  469,  466,  473,  477,  471,  477,  471,  478,
01146       697,  478,  472,  472,  472,  461,  697,  471,  479,  697,
01147       472,  697,  469,  472,  472,  460,  479,  477,  479,  459,
01148       480,  478,  480,  458,  490,  480,  490,  479,  477,  457,
01149       456,  480,  478,  481,  489,  481,  489,  481,  514,  494,
01150       514,  494,  489,  455,  454,  453,  481,  494,  498,  490,
01151       494,  495,  494,  495,  490,  498,  496,  452,  501,  495,
01152       501,  498,  495,  514,  495,  496,  499,  496,  514,  501,
01153       500,  450,  512,  499,  512,  449,  496,  500,  442,  499,
01154       512,  499,  518,  500,  512,  517,  513,  500,  513,  437,
01155 
01156       518,  517,  518,  517,  513,  520,  436,  520,  513,  435,
01157       520,  518,  517,  521,  434,  521,  520,  433,  432,  525,
01158       524,  521,  524,  431,  521,  513,  525,  524,  526,  430,
01159       526,  524,  525,  533,  538,  533,  538,  428,  540,  526,
01160       540,  427,  542,  541,  542,  538,  540,  425,  540,  541,
01161       542,  541,  424,  551,  542,  551,  423,  552,  533,  552,
01162       541,  551,  553,  533,  554,  552,  554,  560,  422,  553,
01163       559,  413,  412,  554,  560,  553,  411,  559,  559,  565,
01164       560,  565,  410,  559,  561,  560,  552,  565,  561,  565,
01165       565,  561,  565,  566,  554,  566,  568,  561,  568,  570,
01166 
01167       395,  566,  576,  570,  576,  568,  570,  571,  571,  571,
01168       576,  572,  570,  572,  573,  571,  573,  394,  571,  572,
01169       393,  572,  573,  575,  573,  575,  568,  587,  588,  587,
01170       588,  575,  591,  572,  591,  575,  573,  588,  587,  595,
01171       392,  591,  596,  600,  572,  600,  595,  573,  607,  596,
01172       607,  600,  595,  600,  601,  596,  601,  607,  588,  596,
01173       391,  603,  601,  603,  601,  622,  604,  622,  604,  603,
01174       609,  390,  609,  603,  604,  613,  389,  613,  607,  609,
01175       627,  625,  627,  613,  631,  625,  631,  613,  625,  627,
01176       388,  661,  387,  661,  625,  631,  622,  632,  636,  632,
01177 
01178       636,  632,  661,  386,  384,  637,  636,  637,  383,  636,
01179       632,  636,  639,  637,  373,  370,  367,  637,  639,  366,
01180       365,  639,  639,  639,  641,  644,  641,  644,  660,  364,
01181       660,  662,  641,  662,  644,  641,  660,  641,  363,  662,
01182       660,  663,  662,  663,  662,  665,  362,  665,  361,  663,
01183       360,  359,  663,  665,  663,  666,  665,  666,  665,  667,
01184       358,  667,  357,  666,  356,  355,  666,  667,  666,  674,
01185       667,  674,  667,  678,  679,  678,  680,  674,  680,  354,
01186       679,  678,  679,  353,  680,  340,  681,  680,  681,  680,
01187       685,  679,  685,  319,  681,  316,  315,  681,  685,  681,
01188 
01189       702,  702,  702,  702,  702,  703,  703,  703,  703,  703,
01190       704,  704,  704,  704,  704,  705,  705,  705,  705,  706,
01191       706,  706,  706,  706,  707,  313,  707,  710,  710,  312,
01192       710,  710,  712,  712,  311,  712,  712,  713,  713,  713,
01193       713,  713,  717,  717,  717,  717,  717,  718,  310,  718,
01194       722,  722,  722,  722,  722,  726,  726,  309,  726,  726,
01195       727,  727,  298,  727,  727,  728,  728,  295,  728,  728,
01196       729,  729,  729,  729,  729,  730,  730,  730,  730,  730,
01197       731,  731,  731,  731,  731,  732,  732,  732,  732,  732,
01198       733,  733,  733,  733,  733,  734,  734,  734,  734,  734,
01199 
01200       735,  735,  735,  735,  735,  736,  736,  736,  736,  736,
01201       294,  293,  292,  291,  290,  289,  287,  286,  285,  284,
01202       283,  282,  281,  239,  238,  237,  236,  235,  234,  233,
01203       232,  231,  229,  228,  227,  226,  225,  224,  223,  222,
01204       220,  181,  180,  179,  178,  177,  176,  175,  174,  173,
01205       172,  171,  170,  169,  168,  167,  166,  165,  164,  162,
01206       157,  155,  151,  147,  144,  142,  120,  102,  100,   95,
01207        92,   89,   88,   87,   85,   84,   83,   82,   79,   76,
01208        74,   71,   63,   60,   58,   40,   34,   31,  701,  701,
01209       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
01210 
01211       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
01212       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
01213       701,  701,  701,  701,  701,  701,  701,  701,  701,  701,
01214       701
01215     } ;
01216 
01217 extern int fcodeYY_flex_debug;
01218 int fcodeYY_flex_debug = 0;
01219 
01220 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
01221 static char *yy_full_match;
01222 static int yy_lp;
01223 static int yy_looking_for_trail_begin = 0;
01224 static int yy_full_lp;
01225 static int *yy_full_state;
01226 #define YY_TRAILING_MASK 0x2000
01227 #define YY_TRAILING_HEAD_MASK 0x4000
01228 #define REJECT \
01229 { \
01230 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */ \
01231 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
01232 (yy_lp) = yy_full_lp; /* restore orig. accepting pos. */ \
01233 (yy_state_ptr) = yy_full_state; /* restore orig. state */ \
01234 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
01235 ++(yy_lp); \
01236 goto find_rule; \
01237 }
01238 
01239 #define yymore() yymore_used_but_not_detected
01240 #define YY_MORE_ADJ 0
01241 #define YY_RESTORE_YY_MORE_OFFSET
01242 char *fcodeYYtext;
01243 #line 1 "fortrancode.l"
01244 /******************************************************************************
01245  *
01246  * Parser for syntax hightlighting and references for Fortran90 F subset
01247  *
01248  * Copyright (C) by Anke Visser
01249  * based on the work of Dimitri van Heesch.
01250  *
01251  * Permission to use, copy, modify, and distribute this software and its
01252  * documentation under the terms of the GNU General Public License is hereby 
01253  * granted. No representations are made about the suitability of this software 
01254  * for any purpose. It is provided "as is" without express or implied warranty.
01255  * See the GNU General Public License for more details.
01256  *
01257  * Documents produced by Doxygen are derivative works derived from the
01258  * input used in their production; they are not affected by this license.
01259  *
01260  */
01268 #line 28 "fortrancode.l"
01269 
01270 /*
01271  *      includes
01272  */
01273 #include "qtbc.h"
01274 #include <stdio.h>
01275 #include <assert.h>
01276 #include <ctype.h>
01277 #include <qregexp.h>
01278 #include <qdir.h>
01279 #include <qstringlist.h>
01280 #include "entry.h"
01281 #include "doxygen.h"
01282 #include "message.h"
01283 #include "outputlist.h"
01284 #include "util.h"
01285 #include "membername.h"
01286 #include "searchindex.h"
01287 #include "defargs.h"
01288 
01289 #define YY_NEVER_INTERACTIVE 1
01290 #define YY_NO_TOP_STATE 1
01291    
01292 //--------------------------------------------------------------------------------
01293 
01297 class UseEntry 
01298 {
01299  public: 
01300    QCString module; // just for debug
01301    QStringList onlyNames;   /* entries of the ONLY-part */
01302 };
01303 
01308 class UseSDict : public SDict<UseEntry> 
01309 {
01310   public:
01311     UseSDict() : SDict<UseEntry>(17) {}
01312 };
01313 
01314 /*===================================================================*/
01315 /* 
01316  *      statics
01317  */
01318   
01319 static QCString  docBlock;                   
01320 static QCString  currentModule=0;            
01321 static UseSDict  *useMembers= new UseSDict;  
01322 static UseEntry  *useEntry = 0;              
01323 static QStack<QStringList> useStack;         
01324 static QStringList *currentUseNames= new QStringList; 
01325 static QCString str="";         
01326 
01327 static CodeOutputInterface * g_code;
01328 
01329 // TODO: is this still needed? if so, make it work
01330 static QCString      g_parmType;
01331 static QCString      g_parmName;
01332 
01333 static const char *  g_inputString;     
01334 static int           g_inputPosition;   
01335 static int           g_inputLines;      
01336 static int           g_yyLineNr;        
01337 static bool          g_needsTermination;
01338 
01339 static bool          g_insideBody;      
01340 static const char *  g_currentFontClass;
01341 
01342 static bool          g_exampleBlock;
01343 static QCString      g_exampleName;
01344 static QCString      g_exampleFile;
01345 
01346 static FileDef *     g_sourceFileDef;
01347 static Definition *  g_currentDefinition;
01348 static MemberDef *   g_currentMemberDef;
01349 static bool          g_includeCodeFragment;
01350 
01351 static char          stringStartSymbol; // single or double quote
01352 
01353 static void endFontClass()
01354 {
01355   if (g_currentFontClass)
01356   {
01357     g_code->endFontClass();
01358     g_currentFontClass=0;
01359   }
01360 }
01361 
01362 static void startFontClass(const char *s)
01363 {
01364   endFontClass();
01365   g_code->startFontClass(s);
01366   g_currentFontClass=s;
01367 }
01368 
01369 static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="")
01370 {
01371   static bool searchEngineEnabled=Config_getBool("SEARCHENGINE");
01372   if (searchEngineEnabled)
01373   {
01374     Doxygen::searchIndex->setCurrentDoc(name,base,anchor);
01375   }
01376 }
01377 
01378 static void addToSearchIndex(const char *text)
01379 {
01380   static bool searchEngineEnabled=Config_getBool("SEARCHENGINE");
01381   if (searchEngineEnabled)
01382   {
01383     Doxygen::searchIndex->addWord(text,FALSE);
01384   }
01385 }
01386 
01391 static void startCodeLine()
01392 {
01393   if (g_sourceFileDef)
01394   {
01395     //QCString lineNumber,lineAnchor;
01396     //lineNumber.sprintf("%05d",g_yyLineNr);
01397     //lineAnchor.sprintf("l%05d",g_yyLineNr);
01398    
01399     Definition *d   = g_sourceFileDef->getSourceDefinition(g_yyLineNr);
01400     //printf("startCodeLine %d d=%s\n", g_yyLineNr,d ? d->name().data() : "<null>");
01401     if (!g_includeCodeFragment && d)
01402     {
01403       g_currentDefinition = d;
01404       g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
01405       g_insideBody = FALSE;
01406       g_parmType.resize(0);
01407       g_parmName.resize(0);
01408       QCString lineAnchor;
01409       lineAnchor.sprintf("l%05d",g_yyLineNr);
01410       if (g_currentMemberDef)
01411       {
01412         g_code->writeLineNumber(g_currentMemberDef->getReference(),
01413                                 g_currentMemberDef->getOutputFileBase(),
01414                                 g_currentMemberDef->anchor(),g_yyLineNr);
01415         setCurrentDoc(
01416                                 g_currentMemberDef->qualifiedName(),
01417                                 g_sourceFileDef->getSourceFileBase(),
01418                                 lineAnchor);
01419       }
01420       else if (d->isLinkableInProject())
01421       {
01422         g_code->writeLineNumber(d->getReference(),
01423                                 d->getOutputFileBase(),
01424                                 0,g_yyLineNr);
01425         setCurrentDoc(
01426                                 d->qualifiedName(),
01427                                 g_sourceFileDef->getSourceFileBase(),
01428                                 lineAnchor);
01429       }
01430     }
01431     else
01432     {
01433       g_code->writeLineNumber(0,0,0,g_yyLineNr);
01434     }
01435   }
01436   g_code->startCodeLine(); 
01437   if (g_currentFontClass)
01438   {
01439     g_code->startFontClass(g_currentFontClass);
01440   }
01441 }
01442 
01443 
01444 static void endFontClass();
01445 static void endCodeLine()
01446 {
01447   if (g_currentFontClass) { g_code->endFontClass(); }
01448   g_code->endCodeLine();
01449 }
01450 
01454 static void codifyLines(char *text)
01455 {
01456   //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text);
01457   char *p=text,*sp=p;
01458   char c;
01459   bool done=FALSE;
01460   while (!done)
01461   {
01462     sp=p;
01463     while ((c=*p++) && c!='\n');
01464     if (c=='\n')
01465     {
01466       g_yyLineNr++;
01467       *(p-1)='\0';
01468       g_code->codify(sp);
01469       endCodeLine();
01470       if (g_yyLineNr<g_inputLines) 
01471       {
01472         startCodeLine();
01473       }
01474     }
01475     else
01476     {
01477       g_code->codify(sp);
01478       done=TRUE;
01479     }
01480   }
01481 }
01482 
01483 static void codifyLines(QCString str)
01484 {
01485   char *tmp= (char *) malloc(str.length()+1);
01486   strcpy(tmp, str);
01487   codifyLines(tmp);
01488   free(tmp);
01489 }
01490 
01495 static void writeMultiLineCodeLink(CodeOutputInterface &ol,
01496                   const char *ref,const char *file,
01497                   const char *anchor,const char *text)
01498 {
01499   bool done=FALSE;
01500   char *p=(char *)text;
01501   while (!done)
01502   {
01503     char *sp=p;
01504     char c;
01505     while ((c=*p++) && c!='\n');
01506     if (c=='\n')
01507     {
01508       g_yyLineNr++;
01509       *(p-1)='\0';
01510       //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
01511       ol.writeCodeLink(ref,file,anchor,sp,0);
01512       endCodeLine();
01513       if (g_yyLineNr<g_inputLines) 
01514       {
01515         startCodeLine();
01516       }
01517     }
01518     else
01519     {
01520       //printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
01521       ol.writeCodeLink(ref,file,anchor,sp,0);
01522       done=TRUE;
01523     }
01524   }
01525 }
01526 
01532 static void addDocCrossReference(MemberDef *src, MemberDef *dst)
01533 {
01534   if (dst->isTypedef() || dst->isEnumerate()) return; // don't add types
01535  //printf("======= addDocCrossReference src=%s,dst=%s\n",src->name().data(),dst->name().data());
01536   if ((Config_getBool("REFERENCED_BY_RELATION") || Config_getBool("CALLER_GRAPH")) && 
01537       (src->isFunction()))
01538   {
01539     dst->addSourceReferencedBy(src);
01540   }
01541   if ((Config_getBool("REFERENCES_RELATION") || Config_getBool("CALL_GRAPH")) && (src->isFunction()))
01542   {
01543     src->addSourceReferences(dst);
01544   }
01545 }
01546 
01547 //-------------------------------------------------------------------------------
01556 static bool getFortranTypeDefs(const QCString &tname, const QCString &moduleName, 
01557                                ClassDef *&cd, UseSDict *usedict=0)
01558 {
01559   if (tname.isEmpty()) return FALSE; /* empty name => nothing to link */
01560 
01561   //cout << "=== search for type: " << tname << endl;
01562 
01563   // search for type  
01564   if ((cd=Doxygen::classSDict->find(tname))) 
01565   {
01566     //cout << "=== type found in global module" << endl;
01567     return TRUE;
01568   }
01569   else if (moduleName && (cd= Doxygen::classSDict->find(moduleName+"::"+tname))) 
01570   {
01571     //cout << "=== type found in local module" << endl;
01572     return TRUE;
01573   }
01574   else 
01575   {
01576     UseEntry *use;
01577     for (UseSDict::Iterator di(*usedict); (use=di.current()); ++di)
01578       if ((cd= Doxygen::classSDict->find(use->module+"::"+tname))) 
01579       {
01580         //cout << "===  type found in used module" << endl;
01581         return TRUE;
01582       }
01583   }
01584 
01585   return FALSE;
01586 }
01587 
01596 static bool getFortranDefs(const QCString &memberName, const QCString &moduleName, 
01597                            MemberDef *&md, UseSDict *usedict=0)
01598 {
01599   if (memberName.isEmpty()) return FALSE; /* empty name => nothing to link */
01600 
01601   // search for function
01602   MemberName *mn = Doxygen::functionNameSDict->find(memberName);
01603 
01604   if (mn) // name is known
01605   {
01606       MemberListIterator mli(*mn);
01607       for (mli.toFirst();(md=mli.current());++mli) // all found functions with given name
01608       {
01609         FileDef  *fd=md->getFileDef();
01610         GroupDef *gd=md->getGroupDef();
01611 
01612  //cout << "found link with same name: " << fd->fileName() << "  " <<  memberName;
01613  //if (md->getNamespaceDef() != 0) cout << " in namespace " << md->getNamespaceDef()->name();cout << endl;
01614 
01615         if ((gd && gd->isLinkable()) || (fd && fd->isLinkable()))
01616         {
01617            NamespaceDef *nspace= md->getNamespaceDef();
01618 
01619            if (nspace == 0) 
01620            { // found function in global scope
01621              return TRUE;
01622            }
01623            else if (moduleName == nspace->name()) 
01624            { // found in local scope
01625              return TRUE;
01626            }
01627            else 
01628            { // else search in used modules
01629              QCString moduleName= nspace->name();
01630              UseEntry *ue= usedict->find(moduleName);
01631              if (ue) 
01632              {
01633                // check if only-list exists and if current entry exists is this list
01634                QStringList &only= ue->onlyNames;
01635                if (only.isEmpty()) 
01636                {
01637                //cout << " found in module " << moduleName << " entry " << memberName <<  endl;
01638                  return TRUE; // whole module used
01639                }
01640                else
01641                {
01642                  for ( QStringList::Iterator it = only.begin(); it != only.end(); ++it)
01643                  {
01644                    //cout << " search in only: " << moduleName << ":: " << memberName << "==" << (*it)<<  endl;
01645                    if (memberName == (QCString)(*it))
01646                      return TRUE; // found in ONLY-part of use list
01647                  }
01648                }
01649              }
01650            }
01651         } // if linkable
01652       } // for
01653   }
01654   return FALSE;
01655 }
01656 
01661 static bool getGenericProcedureLink(const ClassDef *cd, 
01662                                     const char *memberText, 
01663                                     CodeOutputInterface &ol) 
01664 {
01665   (void)cd;
01666   (void)memberText;
01667   (void)ol;
01668   return FALSE;
01669 }
01670 
01671 static bool getLink(UseSDict *usedict, // dictonary with used modules
01672                     const char *memberText,  // exact member text
01673                     CodeOutputInterface &ol,
01674                     const char *text)
01675 {
01676   MemberDef *md;
01677   QCString memberName= removeRedundantWhiteSpace(memberText);
01678   //printf("Trying `%s'::`%s'\n",c.data(),m.data());
01679 
01680   if (getFortranDefs(memberName, currentModule, md, usedict) && md->isLinkable())
01681   { 
01682     //if (md->isVariable()) return FALSE; // variables aren't handled yet       
01683 
01684     Definition *d = md->getOuterScope()==Doxygen::globalScope ?
01685                     md->getBodyDef() : md->getOuterScope();
01686     if (md->getGroupDef()) d = md->getGroupDef();
01687     if (d && d->isLinkable())
01688     {
01689       if (g_currentDefinition && g_currentMemberDef && md!=g_currentMemberDef && g_insideBody)
01690       { 
01691         addDocCrossReference(g_currentMemberDef,md); 
01692       }     
01693       ol.linkableSymbol(g_yyLineNr,md->name(),md,
01694                         g_currentMemberDef ? g_currentMemberDef : g_currentDefinition);
01695       writeMultiLineCodeLink(ol,md->getReference(),
01696                                 md->getOutputFileBase(),
01697                                 md->anchor(),
01698                                 text ? text : memberText);
01699       addToSearchIndex(text ? text : memberText);
01700       return TRUE;
01701     } 
01702   }
01703   return FALSE;
01704 }
01705 
01706 
01707 static void generateLink(CodeOutputInterface &ol, char *lname)
01708 {
01709   ClassDef *cd=0;
01710  
01711   // check if lname is a linkable type or interface
01712   if ( (getFortranTypeDefs(lname, currentModule, cd, useMembers)) && cd->isLinkable() )
01713   {
01714     if ( (cd->compoundType() == ClassDef::Class) && // was  Entry::INTERFACE_SEC) &&
01715          (getGenericProcedureLink(cd, lname, ol)) ) 
01716     {
01717       //cout << "=== generic procedure resolved" << endl; 
01718     } 
01719     else 
01720     { // write type or interface link
01721       ol.linkableSymbol(g_yyLineNr, lname, cd, g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
01722       writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,lname);
01723       addToSearchIndex(lname);
01724     }
01725   }
01726   // check for function/variable
01727   else if (getLink(useMembers, lname, ol, lname)) 
01728   {
01729     //cout << "=== found link for " << lname << endl;
01730   }
01731   else 
01732   {
01733     // nothing found, just write out the word
01734     ol.linkableSymbol(g_yyLineNr, lname, 0, g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
01735     //startFontClass("charliteral"); //test
01736     codifyLines(lname);
01737     //endFontClass(); //test
01738     addToSearchIndex(lname);
01739   }
01740 }
01741 
01743 static int countLines()
01744 {
01745   const char *p=g_inputString;
01746   char c;
01747   int count=1;
01748   while ((c=*p)) 
01749   { 
01750     p++ ; 
01751     if (c=='\n') count++;  
01752   }
01753   if (p>g_inputString && *(p-1)!='\n') 
01754   { // last line does not end with a \n, so we add an extra
01755     // line and explicitly terminate the line after parsing.
01756     count++, 
01757     g_needsTermination=TRUE; 
01758   } 
01759   return count;
01760 }
01761 
01762 //----------------------------------------------------------------------------
01764 void startUseScope() 
01765 {
01766   //fprintf("===> startUse %s",fcodeYYtext);
01767   useStack.push(currentUseNames);
01768   currentUseNames= new QStringList;
01769 }
01770 
01772 void endUseScope() 
01773 {
01774   //fprintf(stderr,"===> endUse %s",fcodeYYtext);
01775   //UseSDict::Iterator di(*useMembers); UseEntry *ue;
01776   //for (di.toFirst(); ue=di.current(); ++di){cout << ue->module ;} cout << endl;
01777 
01778   for ( QStringList::Iterator it = currentUseNames->begin(); it != currentUseNames->end(); ++it) 
01779   {
01780     useMembers->remove(*it);
01781   }
01782   delete currentUseNames;
01783   currentUseNames= useStack.pop(); 
01784   if (currentUseNames == 0) 
01785   {
01786      fprintf(stderr,"fortrancode.l: stack empty!"); 
01787      //exit(-1);
01788   }
01789 }
01790 
01791 void addUse(QString moduleName) 
01792 {
01793   currentUseNames->append(moduleName);
01794 }
01795 //----------------------------------------------------------------------------
01796 
01797 /* -----------------------------------------------------------------*/
01798 #undef  YY_INPUT
01799 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
01800 
01801 static int yyread(char *buf,int max_size)
01802 {
01803     int c=0;
01804     while( c < max_size && g_inputString[g_inputPosition] )
01805     {
01806         *buf = g_inputString[g_inputPosition++] ;
01807         c++; buf++;
01808     }
01809     return c;
01810 }
01811 
01812 /* Assume that attribute statements are almost the same as attributes. */
01813 /* |  */
01814 /*%option debug*/
01815 
01816 
01817 
01818 
01819 
01820 
01821 
01822 
01823 
01824 
01825 
01826 
01827 
01828 
01829 #line 1830 "<stdout>"
01830 
01831 #define INITIAL 0
01832 #define Start 1
01833 #define SubCall 2
01834 #define FuncDef 3
01835 #define ClassName 4
01836 #define ClassVar 5
01837 #define Subprog 6
01838 #define DocBlock 7
01839 #define Use 8
01840 #define UseOnly 9
01841 #define TypeDecl 10
01842 #define Declaration 11
01843 #define DeclContLine 12
01844 #define Parameterlist 13
01845 #define String 14
01846 
01847 #ifndef YY_NO_UNISTD_H
01848 /* Special case for "unistd.h", since it is non-ANSI. We include it way
01849  * down here because we want the user's section 1 to have been scanned first.
01850  * The user has a chance to override it with an option.
01851  */
01852 #include <unistd.h>
01853 #endif
01854 
01855 #ifndef YY_EXTRA_TYPE
01856 #define YY_EXTRA_TYPE void *
01857 #endif
01858 
01859 static int yy_init_globals (void );
01860 
01861 /* Macros after this point can all be overridden by user definitions in
01862  * section 1.
01863  */
01864 
01865 #ifndef YY_SKIP_YYWRAP
01866 #ifdef __cplusplus
01867 extern "C" int fcodeYYwrap (void );
01868 #else
01869 extern int fcodeYYwrap (void );
01870 #endif
01871 #endif
01872 
01873     static void yyunput (int c,char *buf_ptr  );
01874     
01875 #ifndef yytext_ptr
01876 static void yy_flex_strncpy (char *,yyconst char *,int );
01877 #endif
01878 
01879 #ifdef YY_NEED_STRLEN
01880 static int yy_flex_strlen (yyconst char * );
01881 #endif
01882 
01883 #ifndef YY_NO_INPUT
01884 
01885 #ifdef __cplusplus
01886 static int yyinput (void );
01887 #else
01888 static int input (void );
01889 #endif
01890 
01891 #endif
01892 
01893         static int yy_start_stack_ptr = 0;
01894         static int yy_start_stack_depth = 0;
01895         static int *yy_start_stack = NULL;
01896     
01897     static void yy_push_state (int new_state );
01898     
01899     static void yy_pop_state (void );
01900     
01901     static int yy_top_state (void );
01902     
01903 /* Amount of stuff to slurp up with each read. */
01904 #ifndef YY_READ_BUF_SIZE
01905 #define YY_READ_BUF_SIZE 8192
01906 #endif
01907 
01908 /* Copy whatever the last rule matched to the standard output. */
01909 #ifndef ECHO
01910 /* This used to be an fputs(), but since the string might contain NUL's,
01911  * we now use fwrite().
01912  */
01913 #define ECHO (void) fwrite( fcodeYYtext, fcodeYYleng, 1, fcodeYYout )
01914 #endif
01915 
01916 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01917  * is returned in "result".
01918  */
01919 #ifndef YY_INPUT
01920 #define YY_INPUT(buf,result,max_size) \
01921         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
01922                 { \
01923                 int c = '*'; \
01924                 size_t n; \
01925                 for ( n = 0; n < max_size && \
01926                              (c = getc( fcodeYYin )) != EOF && c != '\n'; ++n ) \
01927                         buf[n] = (char) c; \
01928                 if ( c == '\n' ) \
01929                         buf[n++] = (char) c; \
01930                 if ( c == EOF && ferror( fcodeYYin ) ) \
01931                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
01932                 result = n; \
01933                 } \
01934         else \
01935                 { \
01936                 errno=0; \
01937                 while ( (result = fread(buf, 1, max_size, fcodeYYin))==0 && ferror(fcodeYYin)) \
01938                         { \
01939                         if( errno != EINTR) \
01940                                 { \
01941                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
01942                                 break; \
01943                                 } \
01944                         errno=0; \
01945                         clearerr(fcodeYYin); \
01946                         } \
01947                 }\
01948 \
01949 
01950 #endif
01951 
01952 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01953  * we don't want an extra ';' after the "return" because that will cause
01954  * some compilers to complain about unreachable statements.
01955  */
01956 #ifndef yyterminate
01957 #define yyterminate() return YY_NULL
01958 #endif
01959 
01960 /* Number of entries by which start-condition stack grows. */
01961 #ifndef YY_START_STACK_INCR
01962 #define YY_START_STACK_INCR 25
01963 #endif
01964 
01965 /* Report a fatal error. */
01966 #ifndef YY_FATAL_ERROR
01967 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
01968 #endif
01969 
01970 /* end tables serialization structures and prototypes */
01971 
01972 /* Default declaration of generated scanner - a define so the user can
01973  * easily add parameters.
01974  */
01975 #ifndef YY_DECL
01976 #define YY_DECL_IS_OURS 1
01977 
01978 extern int fcodeYYlex (void);
01979 
01980 #define YY_DECL int fcodeYYlex (void)
01981 #endif /* !YY_DECL */
01982 
01983 /* Code executed at the beginning of each rule, after fcodeYYtext and fcodeYYleng
01984  * have been set up.
01985  */
01986 #ifndef YY_USER_ACTION
01987 #define YY_USER_ACTION
01988 #endif
01989 
01990 /* Code executed at the end of each rule. */
01991 #ifndef YY_BREAK
01992 #define YY_BREAK break;
01993 #endif
01994 
01995 #define YY_RULE_SETUP \
01996         YY_USER_ACTION
01997 
02000 YY_DECL
02001 {
02002         register yy_state_type yy_current_state;
02003         register char *yy_cp, *yy_bp;
02004         register int yy_act;
02005     
02006 #line 617 "fortrancode.l"
02007 
02008  /*==================================================================*/
02009 
02010  /*-------- ignore ------------------------------------------------------------*/
02011 
02012 #line 2013 "<stdout>"
02013 
02014         if ( !(yy_init) )
02015                 {
02016                 (yy_init) = 1;
02017 
02018 #ifdef YY_USER_INIT
02019                 YY_USER_INIT;
02020 #endif
02021 
02022         /* Create the reject buffer large enough to save one state per allowed character. */
02023         if ( ! (yy_state_buf) )
02024             (yy_state_buf) = (yy_state_type *)fcodeYYalloc(YY_STATE_BUF_SIZE  );
02025 
02026                 if ( ! (yy_start) )
02027                         (yy_start) = 1; /* first start state */
02028 
02029                 if ( ! fcodeYYin )
02030                         fcodeYYin = stdin;
02031 
02032                 if ( ! fcodeYYout )
02033                         fcodeYYout = stdout;
02034 
02035                 if ( ! YY_CURRENT_BUFFER ) {
02036                         fcodeYYensure_buffer_stack ();
02037                         YY_CURRENT_BUFFER_LVALUE =
02038                                 fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE );
02039                 }
02040 
02041                 fcodeYY_load_buffer_state( );
02042                 }
02043 
02044         while ( 1 )             /* loops until end-of-file is reached */
02045                 {
02046                 yy_cp = (yy_c_buf_p);
02047 
02048                 /* Support of fcodeYYtext. */
02049                 *yy_cp = (yy_hold_char);
02050 
02051                 /* yy_bp points to the position in yy_ch_buf of the start of
02052                  * the current run.
02053                  */
02054                 yy_bp = yy_cp;
02055 
02056                 yy_current_state = (yy_start);
02057 
02058                 (yy_state_ptr) = (yy_state_buf);
02059                 *(yy_state_ptr)++ = yy_current_state;
02060 
02061 yy_match:
02062                 do
02063                         {
02064                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
02065                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02066                                 {
02067                                 yy_current_state = (int) yy_def[yy_current_state];
02068                                 if ( yy_current_state >= 702 )
02069                                         yy_c = yy_meta[(unsigned int) yy_c];
02070                                 }
02071                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02072                         *(yy_state_ptr)++ = yy_current_state;
02073                         ++yy_cp;
02074                         }
02075                 while ( yy_base[yy_current_state] != 2089 );
02076 
02077 yy_find_action:
02078                 yy_current_state = *--(yy_state_ptr);
02079                 (yy_lp) = yy_accept[yy_current_state];
02080 find_rule: /* we branch to this label when backing up */
02081                 for ( ; ; ) /* until we find what rule we matched */
02082                         {
02083                         if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
02084                                 {
02085                                 yy_act = yy_acclist[(yy_lp)];
02086                                 if ( yy_act & YY_TRAILING_HEAD_MASK ||
02087                                      yy_looking_for_trail_begin )
02088                                         {
02089                                         if ( yy_act == yy_looking_for_trail_begin )
02090                                                 {
02091                                                 yy_looking_for_trail_begin = 0;
02092                                                 yy_act &= ~YY_TRAILING_HEAD_MASK;
02093                                                 break;
02094                                                 }
02095                                         }
02096                                 else if ( yy_act & YY_TRAILING_MASK )
02097                                         {
02098                                         yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
02099                                         yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
02100                                         (yy_full_match) = yy_cp;
02101                                         yy_full_state = (yy_state_ptr);
02102                                         yy_full_lp = (yy_lp);
02103                                         }
02104                                 else
02105                                         {
02106                                         (yy_full_match) = yy_cp;
02107                                         yy_full_state = (yy_state_ptr);
02108                                         yy_full_lp = (yy_lp);
02109                                         break;
02110                                         }
02111                                 ++(yy_lp);
02112                                 goto find_rule;
02113                                 }
02114                         --yy_cp;
02115                         yy_current_state = *--(yy_state_ptr);
02116                         (yy_lp) = yy_accept[yy_current_state];
02117                         }
02118 
02119                 YY_DO_BEFORE_ACTION;
02120 
02121 do_action:      /* This label is used only to access EOF actions. */
02122 
02123                 switch ( yy_act )
02124         { /* beginning of action switch */
02125 case 1:
02126 YY_RULE_SETUP
02127 #line 622 "fortrancode.l"
02128 { // do not search keywords, intrinsics... TODO: complete list
02129                                           codifyLines(fcodeYYtext);
02130                                         }
02131         YY_BREAK
02132 /*-------- inner construct ---------------------------------------------------*/
02133 case 2:
02134 /* rule 2 can match eol */
02135 YY_RULE_SETUP
02136 #line 627 "fortrancode.l"
02137 { // hightlight rest of fortran statements
02138                                           /* font class is defined e.g. in doxygen.css */
02139                                           startFontClass("keyword");
02140                                           codifyLines(fcodeYYtext);
02141                                           endFontClass();
02142                                         }
02143         YY_BREAK
02144 case 3:
02145 /* rule 3 can match eol */
02146 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */
02147 (yy_c_buf_p) = yy_cp -= 1;
02148 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */
02149 YY_RULE_SETUP
02150 #line 633 "fortrancode.l"
02151 { 
02152                                           startFontClass("keyword");
02153                                           codifyLines(fcodeYYtext);
02154                                           endFontClass();
02155                                         }
02156         YY_BREAK
02157 /*-------- use statement -------------------------------------------*/
02158 case 4:
02159 YY_RULE_SETUP
02160 #line 640 "fortrancode.l"
02161 { 
02162                                           codifyLines(fcodeYYtext);
02163                                           yy_push_state(YY_START);
02164                                           BEGIN(Use);     
02165                                         }
02166         YY_BREAK
02167 case 5:
02168 YY_RULE_SETUP
02169 #line 645 "fortrancode.l"
02170 {
02171                                           startFontClass("keywordflow");
02172                                           codifyLines(fcodeYYtext);
02173                                           endFontClass();
02174 
02175                                           /* append module name to use dict */
02176                                           useEntry = new UseEntry();
02177                                           useEntry->module = fcodeYYtext;
02178                                           useMembers->append(fcodeYYtext, useEntry);
02179                                           addUse(fcodeYYtext);
02180                                         }           
02181         YY_BREAK
02182 case 6:
02183 YY_RULE_SETUP
02184 #line 656 "fortrancode.l"
02185 { // TODO: rename
02186                                           codifyLines(fcodeYYtext);
02187                                           yy_push_state(YY_START);
02188                                           BEGIN(UseOnly);     
02189                                         }           
02190         YY_BREAK
02191 case 7:
02192 YY_RULE_SETUP
02193 #line 661 "fortrancode.l"
02194 { codifyLines(fcodeYYtext); }
02195         YY_BREAK
02196 case 8:
02197 YY_RULE_SETUP
02198 #line 662 "fortrancode.l"
02199 {
02200                                           codifyLines(fcodeYYtext);
02201                                           useEntry->onlyNames.append(fcodeYYtext);
02202                                         }   
02203         YY_BREAK
02204 case 9:
02205 /* rule 9 can match eol */
02206 YY_RULE_SETUP
02207 #line 666 "fortrancode.l"
02208 {
02209                                           unput(*fcodeYYtext);
02210                                           yy_pop_state();
02211                                         }
02212         YY_BREAK
02213 /*-------- fortran module  -----------------------------------------*/
02214 case 10:
02215 /* rule 10 can match eol */
02216 YY_RULE_SETUP
02217 #line 672 "fortrancode.l"
02218 {  //
02219                                           startUseScope();
02220                                           startFontClass("keyword"); 
02221                                           codifyLines(fcodeYYtext);
02222                                           endFontClass();
02223                                           yy_push_state(YY_START);
02224                                           BEGIN(ClassName); 
02225                                           if (!strcmp(fcodeYYtext,"module")) currentModule="module";
02226                                         }
02227         YY_BREAK
02228 case 11:
02229 YY_RULE_SETUP
02230 #line 681 "fortrancode.l"
02231 {
02232                                           if (currentModule == "module") currentModule=fcodeYYtext;
02233                                           generateLink(*g_code,fcodeYYtext);
02234                                           yy_pop_state();
02235                                         }
02236         YY_BREAK
02237 case 12:
02238 /* rule 12 can match eol */
02239 YY_RULE_SETUP
02240 #line 686 "fortrancode.l"
02241 { // interface may be without name
02242                                           yy_pop_state();
02243                                           REJECT;
02244                                         }
02245         YY_BREAK
02246 case 13:
02247 YY_RULE_SETUP
02248 #line 690 "fortrancode.l"
02249 { // just reset currentModule, rest is done in following rule
02250                                           currentModule=0;
02251                                           REJECT;
02252                                         }
02253         YY_BREAK
02254 case 14:
02255 YY_RULE_SETUP
02256 #line 694 "fortrancode.l"
02257 {  //
02258                                           endUseScope();
02259                                           startFontClass("keyword"); 
02260                                           codifyLines(fcodeYYtext);
02261                                           endFontClass();
02262                                         }
02263         YY_BREAK
02264 /*-------- subprog definition -------------------------------------*/
02265 case 15:
02266 /* rule 15 can match eol */
02267 YY_RULE_SETUP
02268 #line 702 "fortrancode.l"
02269 {   // TYPE_SPEC is for old function style function result
02270                                           startFontClass("keyword");
02271                                           codifyLines(fcodeYYtext);
02272                                           endFontClass();
02273                                        }              
02274         YY_BREAK
02275 case 16:
02276 YY_RULE_SETUP
02277 #line 707 "fortrancode.l"
02278 {  // Fortran subroutine or function found
02279                                           startFontClass("keyword");
02280                                           codifyLines(fcodeYYtext);
02281                                           endFontClass();
02282                                           yy_push_state(YY_START);
02283                                           BEGIN(Subprog);
02284                                         }
02285         YY_BREAK
02286 case 17:
02287 YY_RULE_SETUP
02288 #line 714 "fortrancode.l"
02289 { // subroutine/function name
02290                                           //cout << "===> start procedure " << fcodeYYtext << endl;
02291                                           startUseScope();
02292                                           generateLink(*g_code,fcodeYYtext);
02293                                         }
02294         YY_BREAK
02295 case 18:
02296 YY_RULE_SETUP
02297 #line 719 "fortrancode.l"
02298 { // ignore rest of line 
02299                                           codifyLines(fcodeYYtext);
02300                                         }
02301         YY_BREAK
02302 case 19:
02303 /* rule 19 can match eol */
02304 YY_RULE_SETUP
02305 #line 722 "fortrancode.l"
02306 { codifyLines(fcodeYYtext);
02307                                           yy_pop_state();
02308                                         }
02309         YY_BREAK
02310 case 20:
02311 YY_RULE_SETUP
02312 #line 725 "fortrancode.l"
02313 {  // Fortran subroutine or function ends
02314                                           //cout << "===> end function " << fcodeYYtext << endl;
02315                                           endUseScope();
02316                                           startFontClass("keyword");
02317                                           codifyLines(fcodeYYtext);
02318                                           endFontClass();
02319                                         }
02320         YY_BREAK
02321 /*-------- variable declaration ----------------------------------*/
02322 case 21:
02323 YY_RULE_SETUP
02324 #line 733 "fortrancode.l"
02325 {
02326                                           yy_push_state(YY_START);
02327                                           BEGIN(TypeDecl);
02328                                           startFontClass("keywordtype");
02329                                           g_code->codify(fcodeYYtext);
02330                                           endFontClass();
02331                                         }
02332         YY_BREAK
02333 case 22:
02334 YY_RULE_SETUP
02335 #line 740 "fortrancode.l"
02336 { // link type
02337                                           g_insideBody=TRUE;
02338                                           generateLink(*g_code,fcodeYYtext);
02339                                           g_insideBody=FALSE;
02340                                         }
02341         YY_BREAK
02342 case 23:
02343 YY_RULE_SETUP
02344 #line 745 "fortrancode.l"
02345 { 
02346                                           BEGIN(Declaration);
02347                                           startFontClass("keywordtype");
02348                                           g_code->codify(fcodeYYtext);
02349                                           endFontClass();
02350                                         }
02351         YY_BREAK
02352 case 24:
02353 /* rule 24 can match eol */
02354 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */
02355 (yy_c_buf_p) = yy_cp -= 1;
02356 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */
02357 YY_RULE_SETUP
02358 #line 751 "fortrancode.l"
02359 { 
02360                                           yy_push_state(YY_START);
02361                                           BEGIN(Declaration);
02362                                           startFontClass("keywordtype");
02363                                           g_code->codify(fcodeYYtext);
02364                                           endFontClass();
02365                                        }
02366         YY_BREAK
02367 case 25:
02368 /* rule 25 can match eol */
02369 YY_RULE_SETUP
02370 #line 758 "fortrancode.l"
02371 { 
02372                                           startFontClass("keywordtype");
02373                                           g_code->codify(fcodeYYtext);
02374                                           endFontClass();
02375                                        }
02376         YY_BREAK
02377 case 26:
02378 /* rule 26 can match eol */
02379 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */
02380 (yy_c_buf_p) = yy_cp -= 1;
02381 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */
02382 YY_RULE_SETUP
02383 #line 763 "fortrancode.l"
02384 { //| variable deklaration
02385                                           startFontClass("keywordtype");
02386                                           g_code->codify(fcodeYYtext);
02387                                           endFontClass();
02388                                         }
02389         YY_BREAK
02390 case 27:
02391 YY_RULE_SETUP
02392 #line 768 "fortrancode.l"
02393 { // continuation line
02394                                           yy_push_state(YY_START);
02395                                           BEGIN(DeclContLine);                                    
02396                                         }
02397         YY_BREAK
02398 case 28:
02399 /* rule 28 can match eol */
02400 YY_RULE_SETUP
02401 #line 772 "fortrancode.l"
02402 { // declaration not yet finished
02403                                           codifyLines(fcodeYYtext);
02404                                           yy_pop_state();
02405                                         }
02406         YY_BREAK
02407 case 29:
02408 /* rule 29 can match eol */
02409 YY_RULE_SETUP
02410 #line 776 "fortrancode.l"
02411 { // end declaration line
02412                                           codifyLines(fcodeYYtext);
02413                                           yy_pop_state();
02414                                         }
02415         YY_BREAK
02416 /*-------- subprog calls  -----------------------------------------*/
02417 case 30:
02418 YY_RULE_SETUP
02419 #line 783 "fortrancode.l"
02420 {
02421                                           codifyLines(fcodeYYtext);
02422                                           yy_push_state(YY_START);
02423                                           BEGIN(SubCall);
02424                                         }
02425         YY_BREAK
02426 case 31:
02427 YY_RULE_SETUP
02428 #line 788 "fortrancode.l"
02429 { // subroutine call
02430                                           g_insideBody=TRUE;
02431                                           generateLink(*g_code, fcodeYYtext);
02432                                           g_insideBody=FALSE;
02433                                           yy_pop_state();
02434                                         }
02435         YY_BREAK
02436 case 32:
02437 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */
02438 (yy_c_buf_p) = yy_cp -= 1;
02439 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */
02440 YY_RULE_SETUP
02441 #line 794 "fortrancode.l"
02442 { // function call
02443                                           g_insideBody=TRUE;
02444                                           generateLink(*g_code, fcodeYYtext);
02445                                           g_insideBody=FALSE;
02446                                         }
02447         YY_BREAK
02448 /*-------- comments ---------------------------------------------------*/
02449 case 33:
02450 /* rule 33 can match eol */
02451 YY_RULE_SETUP
02452 #line 801 "fortrancode.l"
02453 { // start comment line or comment block
02454                                           yy_push_state(YY_START);
02455                                           BEGIN(DocBlock);
02456                                           docBlock=fcodeYYtext;
02457                                         }
02458         YY_BREAK
02459 case 34:
02460 YY_RULE_SETUP
02461 #line 807 "fortrancode.l"
02462 { // contents of current comment line
02463                                           docBlock+=fcodeYYtext;
02464                                         }
02465         YY_BREAK
02466 case 35:
02467 /* rule 35 can match eol */
02468 YY_RULE_SETUP
02469 #line 810 "fortrancode.l"
02470 { //| comment block (next line is also comment line)
02471                                           docBlock+=fcodeYYtext; 
02472                                         }
02473         YY_BREAK
02474 case 36:
02475 /* rule 36 can match eol */
02476 YY_RULE_SETUP
02477 #line 813 "fortrancode.l"
02478 { // comment block ends at the end of this line
02479                                           docBlock+=fcodeYYtext; 
02480                                           // remove special comment (default config)
02481                                           if (Config_getBool("STRIP_CODE_COMMENTS"))
02482                                           {
02483                                             g_yyLineNr+=((QCString)docBlock).contains('\n');
02484                                             endCodeLine();
02485                                             if (g_yyLineNr<g_inputLines) 
02486                                             {
02487                                               startCodeLine();
02488                                             }
02489                                           }
02490                                           else // do not remove comment
02491                                           {
02492                                             startFontClass("comment");
02493                                             codifyLines(docBlock);
02494                                             endFontClass();
02495                                           }
02496                                          yy_pop_state();
02497                                         }
02498         YY_BREAK
02499 case 37:
02500 *yy_cp = (yy_hold_char); /* undo effects of setting up fcodeYYtext */
02501 (yy_c_buf_p) = yy_cp -= 1;
02502 YY_DO_BEFORE_ACTION; /* set up fcodeYYtext again */
02503 YY_RULE_SETUP
02504 #line 834 "fortrancode.l"
02505 { // normal comment
02506                                           if(YY_START == String) REJECT; // ignore in strings
02507                                           startFontClass("comment");
02508                                           codifyLines(fcodeYYtext);
02509                                           endFontClass();
02510                                         }
02511         YY_BREAK
02512 /*------ preprocessor  --------------------------------------------*/ 
02513 case 38:
02514 /* rule 38 can match eol */
02515 YY_RULE_SETUP
02516 #line 841 "fortrancode.l"
02517 { startFontClass("preprocessor");
02518                                           codifyLines(fcodeYYtext);
02519                                           endFontClass();
02520                                         }
02521         YY_BREAK
02522 /*------ variable references?  -------------------------------------*/ 
02523 case 39:
02524 YY_RULE_SETUP
02525 #line 846 "fortrancode.l"
02526 {   
02527                                             g_insideBody=TRUE;
02528                                             generateLink(*g_code, fcodeYYtext);
02529                                             g_insideBody=FALSE;
02530                                         }
02531         YY_BREAK
02532 /*------ strings --------------------------------------------------*/ 
02533 case 40:
02534 YY_RULE_SETUP
02535 #line 852 "fortrancode.l"
02536 { str+=fcodeYYtext; /* ignore \\  */}
02537         YY_BREAK
02538 case 41:
02539 YY_RULE_SETUP
02540 #line 853 "fortrancode.l"
02541 { str+=fcodeYYtext; /* ignore \"  */}
02542         YY_BREAK
02543 case 42:
02544 YY_RULE_SETUP
02545 #line 855 "fortrancode.l"
02546 { // string ends with next quote without previous backspace 
02547                                           if(fcodeYYtext[0]!=stringStartSymbol) REJECT; // single vs double quote
02548                                           str+=fcodeYYtext;
02549                                           startFontClass("stringliteral");
02550                                           codifyLines(str);
02551                                           endFontClass();
02552                                           yy_pop_state();
02553                                         }           
02554         YY_BREAK
02555 case 43:
02556 YY_RULE_SETUP
02557 #line 863 "fortrancode.l"
02558 { /* string starts */
02559                                           /* if(YY_START == StrIgnore) REJECT; // ignore in simple comments */
02560                                           yy_push_state(YY_START);
02561                                           stringStartSymbol=fcodeYYtext[0]; // single or double quote
02562                                           BEGIN(String);
02563                                           str=fcodeYYtext;
02564                                         }
02565         YY_BREAK
02566 case 44:
02567 YY_RULE_SETUP
02568 #line 870 "fortrancode.l"
02569 {str+=fcodeYYtext;}
02570         YY_BREAK
02571 /*-----------------------------------------------------------------------------*/
02572 case 45:
02573 /* rule 45 can match eol */
02574 YY_RULE_SETUP
02575 #line 873 "fortrancode.l"
02576 {
02577                                           codifyLines(fcodeYYtext); 
02578                                         }
02579         YY_BREAK
02580 case 46:
02581 YY_RULE_SETUP
02582 #line 876 "fortrancode.l"
02583 { 
02584                                           g_code->codify(fcodeYYtext);
02585                                         }
02586         YY_BREAK
02587 case 47:
02588 YY_RULE_SETUP
02589 #line 879 "fortrancode.l"
02590 ECHO;
02591         YY_BREAK
02592 #line 2593 "<stdout>"
02593                         case YY_STATE_EOF(INITIAL):
02594                         case YY_STATE_EOF(Start):
02595                         case YY_STATE_EOF(SubCall):
02596                         case YY_STATE_EOF(FuncDef):
02597                         case YY_STATE_EOF(ClassName):
02598                         case YY_STATE_EOF(ClassVar):
02599                         case YY_STATE_EOF(Subprog):
02600                         case YY_STATE_EOF(DocBlock):
02601                         case YY_STATE_EOF(Use):
02602                         case YY_STATE_EOF(UseOnly):
02603                         case YY_STATE_EOF(TypeDecl):
02604                         case YY_STATE_EOF(Declaration):
02605                         case YY_STATE_EOF(DeclContLine):
02606                         case YY_STATE_EOF(Parameterlist):
02607                         case YY_STATE_EOF(String):
02608                                 yyterminate();
02609 
02610         case YY_END_OF_BUFFER:
02611                 {
02612                 /* Amount of text matched not including the EOB char. */
02613                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
02614 
02615                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
02616                 *yy_cp = (yy_hold_char);
02617                 YY_RESTORE_YY_MORE_OFFSET
02618 
02619                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
02620                         {
02621                         /* We're scanning a new file or input source.  It's
02622                          * possible that this happened because the user
02623                          * just pointed fcodeYYin at a new source and called
02624                          * fcodeYYlex().  If so, then we have to assure
02625                          * consistency between YY_CURRENT_BUFFER and our
02626                          * globals.  Here is the right place to do so, because
02627                          * this is the first action (other than possibly a
02628                          * back-up) that will match for the new input source.
02629                          */
02630                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02631                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = fcodeYYin;
02632                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
02633                         }
02634 
02635                 /* Note that here we test for yy_c_buf_p "<=" to the position
02636                  * of the first EOB in the buffer, since yy_c_buf_p will
02637                  * already have been incremented past the NUL character
02638                  * (since all states make transitions on EOB to the
02639                  * end-of-buffer state).  Contrast this with the test
02640                  * in input().
02641                  */
02642                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
02643                         { /* This was really a NUL. */
02644                         yy_state_type yy_next_state;
02645 
02646                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
02647 
02648                         yy_current_state = yy_get_previous_state(  );
02649 
02650                         /* Okay, we're now positioned to make the NUL
02651                          * transition.  We couldn't have
02652                          * yy_get_previous_state() go ahead and do it
02653                          * for us because it doesn't know how to deal
02654                          * with the possibility of jamming (and we don't
02655                          * want to build jamming into it because then it
02656                          * will run more slowly).
02657                          */
02658 
02659                         yy_next_state = yy_try_NUL_trans( yy_current_state );
02660 
02661                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
02662 
02663                         if ( yy_next_state )
02664                                 {
02665                                 /* Consume the NUL. */
02666                                 yy_cp = ++(yy_c_buf_p);
02667                                 yy_current_state = yy_next_state;
02668                                 goto yy_match;
02669                                 }
02670 
02671                         else
02672                                 {
02673                                 yy_cp = (yy_c_buf_p);
02674                                 goto yy_find_action;
02675                                 }
02676                         }
02677 
02678                 else switch ( yy_get_next_buffer(  ) )
02679                         {
02680                         case EOB_ACT_END_OF_FILE:
02681                                 {
02682                                 (yy_did_buffer_switch_on_eof) = 0;
02683 
02684                                 if ( fcodeYYwrap( ) )
02685                                         {
02686                                         /* Note: because we've taken care in
02687                                          * yy_get_next_buffer() to have set up
02688                                          * fcodeYYtext, we can now set up
02689                                          * yy_c_buf_p so that if some total
02690                                          * hoser (like flex itself) wants to
02691                                          * call the scanner after we return the
02692                                          * YY_NULL, it'll still work - another
02693                                          * YY_NULL will get returned.
02694                                          */
02695                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
02696 
02697                                         yy_act = YY_STATE_EOF(YY_START);
02698                                         goto do_action;
02699                                         }
02700 
02701                                 else
02702                                         {
02703                                         if ( ! (yy_did_buffer_switch_on_eof) )
02704                                                 YY_NEW_FILE;
02705                                         }
02706                                 break;
02707                                 }
02708 
02709                         case EOB_ACT_CONTINUE_SCAN:
02710                                 (yy_c_buf_p) =
02711                                         (yytext_ptr) + yy_amount_of_matched_text;
02712 
02713                                 yy_current_state = yy_get_previous_state(  );
02714 
02715                                 yy_cp = (yy_c_buf_p);
02716                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
02717                                 goto yy_match;
02718 
02719                         case EOB_ACT_LAST_MATCH:
02720                                 (yy_c_buf_p) =
02721                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
02722 
02723                                 yy_current_state = yy_get_previous_state(  );
02724 
02725                                 yy_cp = (yy_c_buf_p);
02726                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
02727                                 goto yy_find_action;
02728                         }
02729                 break;
02730                 }
02731 
02732         default:
02733                 YY_FATAL_ERROR(
02734                         "fatal flex scanner internal error--no action found" );
02735         } /* end of action switch */
02736                 } /* end of scanning one token */
02737 } /* end of fcodeYYlex */
02738 
02739 /* yy_get_next_buffer - try to read in a new buffer
02740  *
02741  * Returns a code representing an action:
02742  *      EOB_ACT_LAST_MATCH -
02743  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
02744  *      EOB_ACT_END_OF_FILE - end of file
02745  */
02746 static int yy_get_next_buffer (void)
02747 {
02748         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
02749         register char *source = (yytext_ptr);
02750         register int number_to_move, i;
02751         int ret_val;
02752 
02753         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
02754                 YY_FATAL_ERROR(
02755                 "fatal flex scanner internal error--end of buffer missed" );
02756 
02757         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
02758                 { /* Don't try to fill the buffer, so this is an EOF. */
02759                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
02760                         {
02761                         /* We matched a single character, the EOB, so
02762                          * treat this as a final EOF.
02763                          */
02764                         return EOB_ACT_END_OF_FILE;
02765                         }
02766 
02767                 else
02768                         {
02769                         /* We matched some text prior to the EOB, first
02770                          * process it.
02771                          */
02772                         return EOB_ACT_LAST_MATCH;
02773                         }
02774                 }
02775 
02776         /* Try to read more data. */
02777 
02778         /* First move last chars to start of buffer. */
02779         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
02780 
02781         for ( i = 0; i < number_to_move; ++i )
02782                 *(dest++) = *(source++);
02783 
02784         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
02785                 /* don't do the read, it's not guaranteed to return an EOF,
02786                  * just force an EOF
02787                  */
02788                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
02789 
02790         else
02791                 {
02792                         int num_to_read =
02793                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
02794 
02795                 while ( num_to_read <= 0 )
02796                         { /* Not enough room in the buffer - grow it. */
02797 
02798                         YY_FATAL_ERROR(
02799 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
02800 
02801                         }
02802 
02803                 if ( num_to_read > YY_READ_BUF_SIZE )
02804                         num_to_read = YY_READ_BUF_SIZE;
02805 
02806                 /* Read in more data. */
02807                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
02808                         (yy_n_chars), num_to_read );
02809 
02810                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
02811                 }
02812 
02813         if ( (yy_n_chars) == 0 )
02814                 {
02815                 if ( number_to_move == YY_MORE_ADJ )
02816                         {
02817                         ret_val = EOB_ACT_END_OF_FILE;
02818                         fcodeYYrestart(fcodeYYin  );
02819                         }
02820 
02821                 else
02822                         {
02823                         ret_val = EOB_ACT_LAST_MATCH;
02824                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
02825                                 YY_BUFFER_EOF_PENDING;
02826                         }
02827                 }
02828 
02829         else
02830                 ret_val = EOB_ACT_CONTINUE_SCAN;
02831 
02832         (yy_n_chars) += number_to_move;
02833         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
02834         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
02835 
02836         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
02837 
02838         return ret_val;
02839 }
02840 
02841 /* yy_get_previous_state - get the state just before the EOB char was reached */
02842 
02843     static yy_state_type yy_get_previous_state (void)
02844 {
02845         register yy_state_type yy_current_state;
02846         register char *yy_cp;
02847     
02848         yy_current_state = (yy_start);
02849 
02850         (yy_state_ptr) = (yy_state_buf);
02851         *(yy_state_ptr)++ = yy_current_state;
02852 
02853         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
02854                 {
02855                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
02856                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02857                         {
02858                         yy_current_state = (int) yy_def[yy_current_state];
02859                         if ( yy_current_state >= 702 )
02860                                 yy_c = yy_meta[(unsigned int) yy_c];
02861                         }
02862                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02863                 *(yy_state_ptr)++ = yy_current_state;
02864                 }
02865 
02866         return yy_current_state;
02867 }
02868 
02869 /* yy_try_NUL_trans - try to make a transition on the NUL character
02870  *
02871  * synopsis
02872  *      next_state = yy_try_NUL_trans( current_state );
02873  */
02874     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
02875 {
02876         register int yy_is_jam;
02877     
02878         register YY_CHAR yy_c = 1;
02879         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02880                 {
02881                 yy_current_state = (int) yy_def[yy_current_state];
02882                 if ( yy_current_state >= 702 )
02883                         yy_c = yy_meta[(unsigned int) yy_c];
02884                 }
02885         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02886         yy_is_jam = (yy_current_state == 701);
02887         if ( ! yy_is_jam )
02888                 *(yy_state_ptr)++ = yy_current_state;
02889 
02890         return yy_is_jam ? 0 : yy_current_state;
02891 }
02892 
02893     static void yyunput (int c, register char * yy_bp )
02894 {
02895         register char *yy_cp;
02896     
02897     yy_cp = (yy_c_buf_p);
02898 
02899         /* undo effects of setting up fcodeYYtext */
02900         *yy_cp = (yy_hold_char);
02901 
02902         if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02903                 { /* need to shift things up to make room */
02904                 /* +2 for EOB chars. */
02905                 register int number_to_move = (yy_n_chars) + 2;
02906                 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
02907                                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
02908                 register char *source =
02909                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
02910 
02911                 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02912                         *--dest = *--source;
02913 
02914                 yy_cp += (int) (dest - source);
02915                 yy_bp += (int) (dest - source);
02916                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
02917                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
02918 
02919                 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
02920                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
02921                 }
02922 
02923         *--yy_cp = (char) c;
02924 
02925         (yytext_ptr) = yy_bp;
02926         (yy_hold_char) = *yy_cp;
02927         (yy_c_buf_p) = yy_cp;
02928 }
02929 
02930 #ifndef YY_NO_INPUT
02931 #ifdef __cplusplus
02932     static int yyinput (void)
02933 #else
02934     static int input  (void)
02935 #endif
02936 
02937 {
02938         int c;
02939     
02940         *(yy_c_buf_p) = (yy_hold_char);
02941 
02942         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
02943                 {
02944                 /* yy_c_buf_p now points to the character we want to return.
02945                  * If this occurs *before* the EOB characters, then it's a
02946                  * valid NUL; if not, then we've hit the end of the buffer.
02947                  */
02948                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
02949                         /* This was really a NUL. */
02950                         *(yy_c_buf_p) = '\0';
02951 
02952                 else
02953                         { /* need more input */
02954                         int offset = (yy_c_buf_p) - (yytext_ptr);
02955                         ++(yy_c_buf_p);
02956 
02957                         switch ( yy_get_next_buffer(  ) )
02958                                 {
02959                                 case EOB_ACT_LAST_MATCH:
02960                                         /* This happens because yy_g_n_b()
02961                                          * sees that we've accumulated a
02962                                          * token and flags that we need to
02963                                          * try matching the token before
02964                                          * proceeding.  But for input(),
02965                                          * there's no matching to consider.
02966                                          * So convert the EOB_ACT_LAST_MATCH
02967                                          * to EOB_ACT_END_OF_FILE.
02968                                          */
02969 
02970                                         /* Reset buffer status. */
02971                                         fcodeYYrestart(fcodeYYin );
02972 
02973                                         /*FALLTHROUGH*/
02974 
02975                                 case EOB_ACT_END_OF_FILE:
02976                                         {
02977                                         if ( fcodeYYwrap( ) )
02978                                                 return 0;
02979 
02980                                         if ( ! (yy_did_buffer_switch_on_eof) )
02981                                                 YY_NEW_FILE;
02982 #ifdef __cplusplus
02983                                         return yyinput();
02984 #else
02985                                         return input();
02986 #endif
02987                                         }
02988 
02989                                 case EOB_ACT_CONTINUE_SCAN:
02990                                         (yy_c_buf_p) = (yytext_ptr) + offset;
02991                                         break;
02992                                 }
02993                         }
02994                 }
02995 
02996         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
02997         *(yy_c_buf_p) = '\0';   /* preserve fcodeYYtext */
02998         (yy_hold_char) = *++(yy_c_buf_p);
02999 
03000         return c;
03001 }
03002 #endif  /* ifndef YY_NO_INPUT */
03003 
03009     void fcodeYYrestart  (FILE * input_file )
03010 {
03011     
03012         if ( ! YY_CURRENT_BUFFER ){
03013         fcodeYYensure_buffer_stack ();
03014                 YY_CURRENT_BUFFER_LVALUE =
03015             fcodeYY_create_buffer(fcodeYYin,YY_BUF_SIZE );
03016         }
03017 
03018         fcodeYY_init_buffer(YY_CURRENT_BUFFER,input_file );
03019         fcodeYY_load_buffer_state( );
03020 }
03021 
03026     void fcodeYY_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
03027 {
03028     
03029         /* TODO. We should be able to replace this entire function body
03030          * with
03031          *              fcodeYYpop_buffer_state();
03032          *              fcodeYYpush_buffer_state(new_buffer);
03033      */
03034         fcodeYYensure_buffer_stack ();
03035         if ( YY_CURRENT_BUFFER == new_buffer )
03036                 return;
03037 
03038         if ( YY_CURRENT_BUFFER )
03039                 {
03040                 /* Flush out information for old buffer. */
03041                 *(yy_c_buf_p) = (yy_hold_char);
03042                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
03043                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
03044                 }
03045 
03046         YY_CURRENT_BUFFER_LVALUE = new_buffer;
03047         fcodeYY_load_buffer_state( );
03048 
03049         /* We don't actually know whether we did this switch during
03050          * EOF (fcodeYYwrap()) processing, but the only time this flag
03051          * is looked at is after fcodeYYwrap() is called, so it's safe
03052          * to go ahead and always set it.
03053          */
03054         (yy_did_buffer_switch_on_eof) = 1;
03055 }
03056 
03057 static void fcodeYY_load_buffer_state  (void)
03058 {
03059         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
03060         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
03061         fcodeYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
03062         (yy_hold_char) = *(yy_c_buf_p);
03063 }
03064 
03071     YY_BUFFER_STATE fcodeYY_create_buffer  (FILE * file, int  size )
03072 {
03073         YY_BUFFER_STATE b;
03074     
03075         b = (YY_BUFFER_STATE) fcodeYYalloc(sizeof( struct yy_buffer_state )  );
03076         if ( ! b )
03077                 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_create_buffer()" );
03078 
03079         b->yy_buf_size = size;
03080 
03081         /* yy_ch_buf has to be 2 characters longer than the size given because
03082          * we need to put in 2 end-of-buffer characters.
03083          */
03084         b->yy_ch_buf = (char *) fcodeYYalloc(b->yy_buf_size + 2  );
03085         if ( ! b->yy_ch_buf )
03086                 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_create_buffer()" );
03087 
03088         b->yy_is_our_buffer = 1;
03089 
03090         fcodeYY_init_buffer(b,file );
03091 
03092         return b;
03093 }
03094 
03099     void fcodeYY_delete_buffer (YY_BUFFER_STATE  b )
03100 {
03101     
03102         if ( ! b )
03103                 return;
03104 
03105         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
03106                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
03107 
03108         if ( b->yy_is_our_buffer )
03109                 fcodeYYfree((void *) b->yy_ch_buf  );
03110 
03111         fcodeYYfree((void *) b  );
03112 }
03113 
03114 #ifndef __cplusplus
03115 extern int isatty (int );
03116 #endif /* __cplusplus */
03117     
03118 /* Initializes or reinitializes a buffer.
03119  * This function is sometimes called more than once on the same buffer,
03120  * such as during a fcodeYYrestart() or at EOF.
03121  */
03122     static void fcodeYY_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
03123 
03124 {
03125         int oerrno = errno;
03126     
03127         fcodeYY_flush_buffer(b );
03128 
03129         b->yy_input_file = file;
03130         b->yy_fill_buffer = 1;
03131 
03132     /* If b is the current buffer, then fcodeYY_init_buffer was _probably_
03133      * called from fcodeYYrestart() or through yy_get_next_buffer.
03134      * In that case, we don't want to reset the lineno or column.
03135      */
03136     if (b != YY_CURRENT_BUFFER){
03137         b->yy_bs_lineno = 1;
03138         b->yy_bs_column = 0;
03139     }
03140 
03141         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
03142     
03143         errno = oerrno;
03144 }
03145 
03150     void fcodeYY_flush_buffer (YY_BUFFER_STATE  b )
03151 {
03152         if ( ! b )
03153                 return;
03154 
03155         b->yy_n_chars = 0;
03156 
03157         /* We always need two end-of-buffer characters.  The first causes
03158          * a transition to the end-of-buffer state.  The second causes
03159          * a jam in that state.
03160          */
03161         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
03162         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
03163 
03164         b->yy_buf_pos = &b->yy_ch_buf[0];
03165 
03166         b->yy_at_bol = 1;
03167         b->yy_buffer_status = YY_BUFFER_NEW;
03168 
03169         if ( b == YY_CURRENT_BUFFER )
03170                 fcodeYY_load_buffer_state( );
03171 }
03172 
03179 void fcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
03180 {
03181         if (new_buffer == NULL)
03182                 return;
03183 
03184         fcodeYYensure_buffer_stack();
03185 
03186         /* This block is copied from fcodeYY_switch_to_buffer. */
03187         if ( YY_CURRENT_BUFFER )
03188                 {
03189                 /* Flush out information for old buffer. */
03190                 *(yy_c_buf_p) = (yy_hold_char);
03191                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
03192                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
03193                 }
03194 
03195         /* Only push if top exists. Otherwise, replace top. */
03196         if (YY_CURRENT_BUFFER)
03197                 (yy_buffer_stack_top)++;
03198         YY_CURRENT_BUFFER_LVALUE = new_buffer;
03199 
03200         /* copied from fcodeYY_switch_to_buffer. */
03201         fcodeYY_load_buffer_state( );
03202         (yy_did_buffer_switch_on_eof) = 1;
03203 }
03204 
03209 void fcodeYYpop_buffer_state (void)
03210 {
03211         if (!YY_CURRENT_BUFFER)
03212                 return;
03213 
03214         fcodeYY_delete_buffer(YY_CURRENT_BUFFER );
03215         YY_CURRENT_BUFFER_LVALUE = NULL;
03216         if ((yy_buffer_stack_top) > 0)
03217                 --(yy_buffer_stack_top);
03218 
03219         if (YY_CURRENT_BUFFER) {
03220                 fcodeYY_load_buffer_state( );
03221                 (yy_did_buffer_switch_on_eof) = 1;
03222         }
03223 }
03224 
03225 /* Allocates the stack if it does not exist.
03226  *  Guarantees space for at least one push.
03227  */
03228 static void fcodeYYensure_buffer_stack (void)
03229 {
03230         int num_to_alloc;
03231     
03232         if (!(yy_buffer_stack)) {
03233 
03234                 /* First allocation is just for 2 elements, since we don't know if this
03235                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
03236                  * immediate realloc on the next call.
03237          */
03238                 num_to_alloc = 1;
03239                 (yy_buffer_stack) = (struct yy_buffer_state**)fcodeYYalloc
03240                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
03241                                                                 );
03242                 
03243                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
03244                                 
03245                 (yy_buffer_stack_max) = num_to_alloc;
03246                 (yy_buffer_stack_top) = 0;
03247                 return;
03248         }
03249 
03250         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
03251 
03252                 /* Increase the buffer to prepare for a possible push. */
03253                 int grow_size = 8 /* arbitrary grow size */;
03254 
03255                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
03256                 (yy_buffer_stack) = (struct yy_buffer_state**)fcodeYYrealloc
03257                                                                 ((yy_buffer_stack),
03258                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
03259                                                                 );
03260 
03261                 /* zero only the new slots.*/
03262                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
03263                 (yy_buffer_stack_max) = num_to_alloc;
03264         }
03265 }
03266 
03273 YY_BUFFER_STATE fcodeYY_scan_buffer  (char * base, yy_size_t  size )
03274 {
03275         YY_BUFFER_STATE b;
03276     
03277         if ( size < 2 ||
03278              base[size-2] != YY_END_OF_BUFFER_CHAR ||
03279              base[size-1] != YY_END_OF_BUFFER_CHAR )
03280                 /* They forgot to leave room for the EOB's. */
03281                 return 0;
03282 
03283         b = (YY_BUFFER_STATE) fcodeYYalloc(sizeof( struct yy_buffer_state )  );
03284         if ( ! b )
03285                 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_scan_buffer()" );
03286 
03287         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
03288         b->yy_buf_pos = b->yy_ch_buf = base;
03289         b->yy_is_our_buffer = 0;
03290         b->yy_input_file = 0;
03291         b->yy_n_chars = b->yy_buf_size;
03292         b->yy_is_interactive = 0;
03293         b->yy_at_bol = 1;
03294         b->yy_fill_buffer = 0;
03295         b->yy_buffer_status = YY_BUFFER_NEW;
03296 
03297         fcodeYY_switch_to_buffer(b  );
03298 
03299         return b;
03300 }
03301 
03310 YY_BUFFER_STATE fcodeYY_scan_string (yyconst char * yystr )
03311 {
03312     
03313         return fcodeYY_scan_bytes(yystr,strlen(yystr) );
03314 }
03315 
03323 YY_BUFFER_STATE fcodeYY_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
03324 {
03325         YY_BUFFER_STATE b;
03326         char *buf;
03327         yy_size_t n;
03328         int i;
03329     
03330         /* Get memory for full buffer, including space for trailing EOB's. */
03331         n = _yybytes_len + 2;
03332         buf = (char *) fcodeYYalloc(n  );
03333         if ( ! buf )
03334                 YY_FATAL_ERROR( "out of dynamic memory in fcodeYY_scan_bytes()" );
03335 
03336         for ( i = 0; i < _yybytes_len; ++i )
03337                 buf[i] = yybytes[i];
03338 
03339         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
03340 
03341         b = fcodeYY_scan_buffer(buf,n );
03342         if ( ! b )
03343                 YY_FATAL_ERROR( "bad buffer in fcodeYY_scan_bytes()" );
03344 
03345         /* It's okay to grow etc. this buffer, and we should throw it
03346          * away when we're done.
03347          */
03348         b->yy_is_our_buffer = 1;
03349 
03350         return b;
03351 }
03352 
03353     static void yy_push_state (int  new_state )
03354 {
03355         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
03356                 {
03357                 yy_size_t new_size;
03358 
03359                 (yy_start_stack_depth) += YY_START_STACK_INCR;
03360                 new_size = (yy_start_stack_depth) * sizeof( int );
03361 
03362                 if ( ! (yy_start_stack) )
03363                         (yy_start_stack) = (int *) fcodeYYalloc(new_size  );
03364 
03365                 else
03366                         (yy_start_stack) = (int *) fcodeYYrealloc((void *) (yy_start_stack),new_size  );
03367 
03368                 if ( ! (yy_start_stack) )
03369                         YY_FATAL_ERROR(
03370                         "out of memory expanding start-condition stack" );
03371                 }
03372 
03373         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
03374 
03375         BEGIN(new_state);
03376 }
03377 
03378     static void yy_pop_state  (void)
03379 {
03380         if ( --(yy_start_stack_ptr) < 0 )
03381                 YY_FATAL_ERROR( "start-condition stack underflow" );
03382 
03383         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
03384 }
03385 
03386     static int yy_top_state  (void)
03387 {
03388         return (yy_start_stack)[(yy_start_stack_ptr) - 1];
03389 }
03390 
03391 #ifndef YY_EXIT_FAILURE
03392 #define YY_EXIT_FAILURE 2
03393 #endif
03394 
03395 static void yy_fatal_error (yyconst char* msg )
03396 {
03397         (void) fprintf( stderr, "%s\n", msg );
03398         exit( YY_EXIT_FAILURE );
03399 }
03400 
03401 /* Redefine yyless() so it works in section 3 code. */
03402 
03403 #undef yyless
03404 #define yyless(n) \
03405         do \
03406                 { \
03407                 /* Undo effects of setting up fcodeYYtext. */ \
03408         int yyless_macro_arg = (n); \
03409         YY_LESS_LINENO(yyless_macro_arg);\
03410                 fcodeYYtext[fcodeYYleng] = (yy_hold_char); \
03411                 (yy_c_buf_p) = fcodeYYtext + yyless_macro_arg; \
03412                 (yy_hold_char) = *(yy_c_buf_p); \
03413                 *(yy_c_buf_p) = '\0'; \
03414                 fcodeYYleng = yyless_macro_arg; \
03415                 } \
03416         while ( 0 )
03417 
03418 /* Accessor  methods (get/set functions) to struct members. */
03419 
03423 int fcodeYYget_lineno  (void)
03424 {
03425         
03426     return fcodeYYlineno;
03427 }
03428 
03432 FILE *fcodeYYget_in  (void)
03433 {
03434         return fcodeYYin;
03435 }
03436 
03440 FILE *fcodeYYget_out  (void)
03441 {
03442         return fcodeYYout;
03443 }
03444 
03448 int fcodeYYget_leng  (void)
03449 {
03450         return fcodeYYleng;
03451 }
03452 
03457 char *fcodeYYget_text  (void)
03458 {
03459         return fcodeYYtext;
03460 }
03461 
03466 void fcodeYYset_lineno (int  line_number )
03467 {
03468     
03469     fcodeYYlineno = line_number;
03470 }
03471 
03478 void fcodeYYset_in (FILE *  in_str )
03479 {
03480         fcodeYYin = in_str ;
03481 }
03482 
03483 void fcodeYYset_out (FILE *  out_str )
03484 {
03485         fcodeYYout = out_str ;
03486 }
03487 
03488 int fcodeYYget_debug  (void)
03489 {
03490         return fcodeYY_flex_debug;
03491 }
03492 
03493 void fcodeYYset_debug (int  bdebug )
03494 {
03495         fcodeYY_flex_debug = bdebug ;
03496 }
03497 
03498 static int yy_init_globals (void)
03499 {
03500         /* Initialization is the same as for the non-reentrant scanner.
03501      * This function is called from fcodeYYlex_destroy(), so don't allocate here.
03502      */
03503 
03504     (yy_buffer_stack) = 0;
03505     (yy_buffer_stack_top) = 0;
03506     (yy_buffer_stack_max) = 0;
03507     (yy_c_buf_p) = (char *) 0;
03508     (yy_init) = 0;
03509     (yy_start) = 0;
03510 
03511     (yy_start_stack_ptr) = 0;
03512     (yy_start_stack_depth) = 0;
03513     (yy_start_stack) =  NULL;
03514 
03515     (yy_state_buf) = 0;
03516     (yy_state_ptr) = 0;
03517     (yy_full_match) = 0;
03518     (yy_lp) = 0;
03519 
03520 /* Defined in main.c */
03521 #ifdef YY_STDINIT
03522     fcodeYYin = stdin;
03523     fcodeYYout = stdout;
03524 #else
03525     fcodeYYin = (FILE *) 0;
03526     fcodeYYout = (FILE *) 0;
03527 #endif
03528 
03529     /* For future reference: Set errno on error, since we are called by
03530      * fcodeYYlex_init()
03531      */
03532     return 0;
03533 }
03534 
03535 /* fcodeYYlex_destroy is for both reentrant and non-reentrant scanners. */
03536 int fcodeYYlex_destroy  (void)
03537 {
03538     
03539     /* Pop the buffer stack, destroying each element. */
03540         while(YY_CURRENT_BUFFER){
03541                 fcodeYY_delete_buffer(YY_CURRENT_BUFFER  );
03542                 YY_CURRENT_BUFFER_LVALUE = NULL;
03543                 fcodeYYpop_buffer_state();
03544         }
03545 
03546         /* Destroy the stack itself. */
03547         fcodeYYfree((yy_buffer_stack) );
03548         (yy_buffer_stack) = NULL;
03549 
03550     /* Destroy the start condition stack. */
03551         fcodeYYfree((yy_start_stack)  );
03552         (yy_start_stack) = NULL;
03553 
03554     fcodeYYfree ( (yy_state_buf) );
03555     (yy_state_buf)  = NULL;
03556 
03557     /* Reset the globals. This is important in a non-reentrant scanner so the next time
03558      * fcodeYYlex() is called, initialization will occur. */
03559     yy_init_globals( );
03560 
03561     return 0;
03562 }
03563 
03564 /*
03565  * Internal utility routines.
03566  */
03567 
03568 #ifndef yytext_ptr
03569 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
03570 {
03571         register int i;
03572         for ( i = 0; i < n; ++i )
03573                 s1[i] = s2[i];
03574 }
03575 #endif
03576 
03577 #ifdef YY_NEED_STRLEN
03578 static int yy_flex_strlen (yyconst char * s )
03579 {
03580         register int n;
03581         for ( n = 0; s[n]; ++n )
03582                 ;
03583 
03584         return n;
03585 }
03586 #endif
03587 
03588 void *fcodeYYalloc (yy_size_t  size )
03589 {
03590         return (void *) malloc( size );
03591 }
03592 
03593 void *fcodeYYrealloc  (void * ptr, yy_size_t  size )
03594 {
03595         /* The cast to (char *) in the following accommodates both
03596          * implementations that use char* generic pointers, and those
03597          * that use void* generic pointers.  It works with the latter
03598          * because both ANSI C and C++ allow castless assignment from
03599          * any pointer type to void*, and deal with argument conversions
03600          * as though doing an assignment.
03601          */
03602         return (void *) realloc( (char *) ptr, size );
03603 }
03604 
03605 void fcodeYYfree (void * ptr )
03606 {
03607         free( (char *) ptr );   /* see fcodeYYrealloc() for (char *) cast */
03608 }
03609 
03610 #define YYTABLES_NAME "yytables"
03611 
03612 #line 879 "fortrancode.l"
03613 
03614 
03615 
03616 /*@ ----------------------------------------------------------------------------
03617  */
03618 
03619 /*===================================================================*/
03620 
03621 void resetFortranCodeParserState() {}
03622 
03623 void parseFortranCode(CodeOutputInterface &od,const char *className,const QCString &s, 
03624                   bool exBlock, const char *exName,FileDef *fd,
03625                   int startLine,int endLine,bool inlineFragment,
03626                   MemberDef *memberDef)
03627 {
03628   //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd);
03629 
03630   // used parameters
03631   (void)memberDef;
03632   (void)className;
03633 
03634   if (s.isEmpty()) return;
03635   g_code = &od;
03636   g_inputString   = s;
03637   g_inputPosition = 0;
03638   g_currentFontClass = 0;
03639   g_needsTermination = FALSE;
03640   if (endLine!=-1)
03641     g_inputLines  = endLine+1;
03642   else
03643     g_inputLines  = countLines();
03644 
03645   if (startLine!=-1)
03646     g_yyLineNr    = startLine;
03647   else
03648     g_yyLineNr    = 1;
03649 
03650   g_exampleBlock  = exBlock; 
03651   g_exampleName   = exName;
03652   g_sourceFileDef = fd;
03653   if (exBlock && fd==0)
03654   {
03655     // create a dummy filedef for the example
03656     g_sourceFileDef = new FileDef("",exName);
03657   }
03658   if (g_sourceFileDef) 
03659   {
03660     setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase());
03661   }
03662   g_currentDefinition = 0;
03663   g_currentMemberDef = 0;
03664   if (!g_exampleName.isEmpty())
03665   {
03666     g_exampleFile = convertNameToFile(g_exampleName+"-example");
03667   }
03668   g_includeCodeFragment = inlineFragment;
03669   startCodeLine();
03670   g_parmName.resize(0);
03671   g_parmType.resize(0);
03672   fcodeYYrestart( fcodeYYin );
03673   BEGIN( Start );
03674   fcodeYYlex();
03675   if (g_needsTermination)
03676   {
03677     endFontClass();
03678     g_code->endCodeLine();
03679   }
03680   if (exBlock && g_sourceFileDef)
03681   {
03682     // delete the temporary file definition used for this example
03683     delete g_sourceFileDef;
03684     g_sourceFileDef=0;
03685   }
03686   return;
03687 }
03688 
03689 #if !defined(YY_FLEX_SUBMINOR_VERSION) 
03690 extern "C" { // some bogus code to keep the compiler happy
03691   void fcodeYYdummy() { yy_flex_realloc(0,0); } 
03692 }
03693 #elif YY_FLEX_SUBMINOR_VERSION<33
03694 #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
03695 #else
03696 extern "C" { // some bogus code to keep the compiler happy
03697   void fcodeYYdummy() { yy_top_state(); } 
03698 }
03699 #endif
03700 
03701 



Generated on Mon Mar 31 10:58:38 2008 by  doxygen 1.5.1