vhdlcode.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 vhdlcodeYYrestart(vhdlcodeYYin  )
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 vhdlcodeYYleng;
00155 
00156 extern FILE *vhdlcodeYYin, *vhdlcodeYYout;
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 vhdlcodeYYtext. */ \
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 vhdlcodeYYtext 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 vhdlcodeYYrestart()), so that the user can continue scanning by
00248          * just pointing vhdlcodeYYin 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 vhdlcodeYYtext is formed. */
00276 static char yy_hold_char;
00277 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
00278 int vhdlcodeYYleng;
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 vhdlcodeYYwrap()'s to do buffer switches
00286  * instead of setting up a fresh vhdlcodeYYin.  A bit of a hack ...
00287  */
00288 static int yy_did_buffer_switch_on_eof;
00289 
00290 void vhdlcodeYYrestart (FILE *input_file  );
00291 void vhdlcodeYY_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
00292 YY_BUFFER_STATE vhdlcodeYY_create_buffer (FILE *file,int size  );
00293 void vhdlcodeYY_delete_buffer (YY_BUFFER_STATE b  );
00294 void vhdlcodeYY_flush_buffer (YY_BUFFER_STATE b  );
00295 void vhdlcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer  );
00296 void vhdlcodeYYpop_buffer_state (void );
00297 
00298 static void vhdlcodeYYensure_buffer_stack (void );
00299 static void vhdlcodeYY_load_buffer_state (void );
00300 static void vhdlcodeYY_init_buffer (YY_BUFFER_STATE b,FILE *file  );
00301 
00302 #define YY_FLUSH_BUFFER vhdlcodeYY_flush_buffer(YY_CURRENT_BUFFER )
00303 
00304 YY_BUFFER_STATE vhdlcodeYY_scan_buffer (char *base,yy_size_t size  );
00305 YY_BUFFER_STATE vhdlcodeYY_scan_string (yyconst char *yy_str  );
00306 YY_BUFFER_STATE vhdlcodeYY_scan_bytes (yyconst char *bytes,int len  );
00307 
00308 void *vhdlcodeYYalloc (yy_size_t  );
00309 void *vhdlcodeYYrealloc (void *,yy_size_t  );
00310 void vhdlcodeYYfree (void *  );
00311 
00312 #define yy_new_buffer vhdlcodeYY_create_buffer
00313 
00314 #define yy_set_interactive(is_interactive) \
00315         { \
00316         if ( ! YY_CURRENT_BUFFER ){ \
00317         vhdlcodeYYensure_buffer_stack (); \
00318                 YY_CURRENT_BUFFER_LVALUE =    \
00319             vhdlcodeYY_create_buffer(vhdlcodeYYin,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         vhdlcodeYYensure_buffer_stack (); \
00328                 YY_CURRENT_BUFFER_LVALUE =    \
00329             vhdlcodeYY_create_buffer(vhdlcodeYYin,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 vhdlcodeYYwrap(n) 1
00339 #define YY_SKIP_YYWRAP
00340 
00341 typedef unsigned char YY_CHAR;
00342 
00343 FILE *vhdlcodeYYin = (FILE *) 0, *vhdlcodeYYout = (FILE *) 0;
00344 
00345 typedef int yy_state_type;
00346 
00347 extern int vhdlcodeYYlineno;
00348 
00349 int vhdlcodeYYlineno = 1;
00350 
00351 extern char *vhdlcodeYYtext;
00352 #define yytext_ptr vhdlcodeYYtext
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 vhdlcodeYYtext.
00361  */
00362 #define YY_DO_BEFORE_ACTION \
00363         (yytext_ptr) = yy_bp; \
00364         vhdlcodeYYleng = (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 50
00370 #define YY_END_OF_BUFFER 51
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_accept[852] =
00379     {   0,
00380         0,    0,    0,    0,   12,   12,    0,    0,   20,   20,
00381        30,   30,   27,   27,    0,    0,    0,    0,    0,    0,
00382         0,    0,    3,    3,    0,    0,   51,    1,    1,   47,
00383         1,   48,   48,   47,   48,   48,   45,   48,   48,   45,
00384        45,   46,   45,   45,   45,   46,   45,   43,   46,   45,
00385        45,   45,   45,   42,   42,   42,   42,   42,   42,   42,
00386        42,   42,   42,   42,   42,   42,   45,   45,   48,   48,
00387        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
00388        42,   48,   12,    7,   48,   12,   12,   14,   15,   48,
00389        13,   13,   13,   12,   13,   48,   48,   48,    6,   20,
00390 
00391        21,   20,   20,   17,   18,   19,   23,   26,   26,   26,
00392        30,   30,   30,   30,   27,   27,   27,   28,   29,   27,
00393        16,    3,    3,    4,    2,    5,    4,    3,    0,    0,
00394        49,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00395         0,    0,    0,    0,    0,   45,    0,    0,    0,    0,
00396        42,   42,   45,    0,    0,    0,    0,    0,   43,   45,
00397        45,   45,    0,    0,   42,    0,   42,   42,   42,   42,
00398        42,   42,   42,   42,   42,   41,   42,   42,   42,   42,
00399        42,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00400         0,    0,    0,    0,    0,    0,   42,   42,   42,   42,
00401 
00402        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
00403         0,    0,   12,    0,   12,    0,    0,   12,   12,   13,
00404        13,    8,   13,   13,   12,    0,   13,    6,   20,   20,
00405        19,    0,    0,   22,    0,    0,   23,   26,   26,   26,
00406        30,   30,   30,   30,   27,   27,   27,   27,   16,    3,
00407         3,    3,    3,   49,    0,    0,    0,    0,    0,    0,
00408         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00409        42,   42,    0,    0,   43,    0,    0,    0,   42,   42,
00410        42,   42,   41,   42,   42,   42,   42,   42,   42,   42,
00411         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00412 
00413         0,    0,    0,    0,    0,   42,   42,   42,   42,   42,
00414        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
00415         0,    0,    0,    0,   13,    8,   13,   13,    0,   13,
00416         0,    0,   22,    0,   23,   26,   26,   30,   27,    3,
00417         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00418         0,    0,    0,    0,    0,    0,   42,    0,   43,    0,
00419         0,    0,    0,   42,   42,    0,    0,    0,   42,   42,
00420        42,   42,   42,    0,    0,    0,    0,    0,    0,    0,
00421         0,    0,    0,    0,    0,    0,    0,    0,    0,   42,
00422        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
00423 
00424        42,   42,   38,   38,   38,   42,    0,    0,    0,    0,
00425        13,   13,    0,    0,    0,   13,    0,    0,   23,   26,
00426        26,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00427         0,    0,    0,    0,    0,    0,    0,   42,    0,    0,
00428         0,    0,   42,    0,    0,   42,    0,    0,    0,   42,
00429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00430         0,    0,    0,   44,    0,   42,   42,   37,   42,   42,
00431        42,   42,   42,   42,   42,   42,   42,   42,    0,    9,
00432         0,    0,    0,    0,    0,    0,    0,    0,   11,    0,
00433         0,   26,    0,   24,    0,    0,    0,    0,    0,    0,
00434 
00435         0,    0,    0,    0,    0,    0,    0,    0,    0,   42,
00436         0,    0,   42,    0,    0,   42,   42,    0,    0,    0,
00437         0,    0,   37,    0,    0,    0,    0,    0,    0,    0,
00438         0,    0,    0,   42,   42,   37,   42,   42,   42,   42,
00439        42,   42,   42,   42,   42,    0,    0,    0,    0,    0,
00440         0,    0,    0,    0,    0,   11,   11,    0,   26,    0,
00441         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00442         0,    0,    0,   42,    0,    0,   42,    0,    0,   42,
00443         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00444         0,    0,    0,    0,   42,   42,   42,   42,   40,   40,
00445 
00446        40,   42,   42,   42,   42,    0,    0,    0,    0,    0,
00447         0,    0,    0,    0,    0,    0,   10,    0,    0,   26,
00448         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00449         0,    0,   42,    0,    0,   42,    0,    0,    0,    0,
00450         0,    0,    0,    0,    0,    0,    0,    0,   42,   42,
00451        42,   42,   40,   42,    0,    0,    0,   10,    0,    0,
00452         0,    0,    0,    0,    0,   25,   35,   35,   35,   35,
00453        35,   35,   35,    0,    0,    0,    0,    0,    0,    0,
00454         0,    0,    0,    0,    0,   35,   35,   35,   35,    0,
00455         0,    0,   31,    0,    0,    0,    0,    0,    0,    0,
00456 
00457        42,   42,    0,    0,    0,    0,   42,   40,   40,   40,
00458         0,    0,    0,    0,    0,    0,    0,   35,   35,   35,
00459        35,   35,   35,   35,   35,   35,    0,    0,    0,    0,
00460         0,    0,    0,    0,   35,   35,   35,   35,   35,   35,
00461        35,   35,    0,    0,    0,    0,    0,   42,    0,    0,
00462         0,    0,    0,    0,    0,    0,   39,    0,    0,   42,
00463         0,    0,    0,    0,    0,    0,   35,    0,    0,    0,
00464         0,   35,   36,   36,    0,    0,   42,   32,   32,    0,
00465         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00466         0,    0,    0,    0,   42,   32,   32,    0,    0,    0,
00467 
00468         0,    0,    0,    0,   31,    0,    0,    0,   31,    0,
00469         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00470         0,   34,   34,    0,    0,    0,    0,    0,   34,   34,
00471         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00472         0,    0,    0,    0,    0,    0,   33,   33,   33,   33,
00473         0
00474     } ;
00475 
00476 static yyconst flex_int32_t yy_ec[256] =
00477     {   0,
00478         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00479         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
00480         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00481         1,    5,    6,    7,    8,    9,   10,   11,   12,   13,
00482        14,   15,   16,   17,   18,   19,   20,   21,   21,   21,
00483        21,   21,   21,   21,   21,   21,   21,   22,   23,   24,
00484        25,   26,    1,    1,   29,   30,   31,   32,   33,   34,
00485        35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
00486        38,   45,   46,   47,   48,   49,   50,   38,   51,   38,
00487         1,    1,    1,   27,   28,    1,   29,   30,   31,   32,
00488 
00489        33,   34,   35,   36,   37,   38,   39,   40,   41,   42,
00490        43,   44,   38,   45,   46,   47,   48,   49,   50,   38,
00491        51,   38,    1,   52,    1,   53,    1,    1,    1,    1,
00492         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00493         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00494         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00495         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00496         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00497         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00498         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00499 
00500         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00501         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00502         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00503         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00504         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00505         1,    1,    1,    1,    1
00506     } ;
00507 
00508 static yyconst flex_int32_t yy_meta[54] =
00509     {   0,
00510         1,    2,    3,    4,    5,    1,    6,    1,    1,    1,
00511         7,    7,    8,    9,   10,   11,   12,   13,   14,   10,
00512        15,   16,   17,   10,   10,   10,    1,   18,   19,   19,
00513        19,   19,   20,   19,   21,   22,   22,   22,   22,   22,
00514        22,   22,   22,   21,   22,   22,   22,   22,   22,   22,
00515        22,    1,    1
00516     } ;
00517 
00518 static yyconst flex_int16_t yy_base[914] =
00519     {   0,
00520         0,    4,   22,   74,  123,   76,  176,    0,  229,    0,
00521        93,  281,  287,  293,  284,    0,    0,    0,    0,    0,
00522       329,    0,  335,  379,    0,    0, 2555, 4106,   75, 4106,
00523      2536, 2508,  396,  383,  402,  445,   57,  389, 2507,   58,
00524        75, 2496,   65,   66,   69,  407,  266,  417,  358,  399,
00525       364,  409,  388,  488,  531, 2494, 2509,  245, 2493,   56,
00526       305, 2492, 2495, 2484, 2479, 2475,  416, 2466,  556,  440,
00527       296,   52,  259,  416,   69,  307,  426,  260, 2457, 2455,
00528      2464, 2454,  605,  472,  482,  657, 2451, 2443, 2441,  377,
00529      2433,    0, 2415,  452, 2423, 4106,  476, 2436,    0,  519,
00530 
00531      4106,  524,  465, 4106, 4106, 2435,    0,    0, 2419, 2407,
00532         0,  517,    0, 2431,    0,  523,    0, 4106, 4106, 2430,
00533         0,    0,  525, 4106, 4106, 4106, 4106, 2420,  562, 2419,
00534         0, 2391,  496, 2390, 2389,  494,  543,  689,  714,  383,
00535       632,  641, 2388, 2378,  568, 4106,  569,  570,  645,  673,
00536         0, 2371, 4106,  634,  639,  698,    0,  720, 2365, 4106,
00537      2376, 2370,  722,  726,    0,  747, 2345, 2356, 2342, 2340,
00538      2349, 2347, 2329, 2331, 2325,    0, 2319, 2309, 2309, 2306,
00539      2314, 2304,  751,  309, 2310,  312,  388,  411,   51,  550,
00540       529,  437,  446,  555,  752,  753, 2310, 2290, 2299,  431,
00541 
00542       470, 2290, 2296, 2289, 2275, 2282, 2285, 2270, 2280, 2261,
00543      2263, 2259, 2257,  760, 2250,  622, 2239, 2242,  796,    0,
00544      2227,    0, 2222, 2230,  776, 2227, 2224,    0,    0,    0,
00545      2239, 2223, 2212,    0,    0, 2227,  680,    0, 2205, 2191,
00546         0,  765, 2217,  648,    0,  766, 2216,    1,    0,    0,
00547       774, 2214,    3,    0, 2187,  501,  780, 2185,  478,  652,
00548       602,  812,  822,  823,  775,  827,    8,  833,  846, 2171,
00549         0, 2169,  837, 2199,  850, 2179,  859,  871, 2149, 2158,
00550      2149, 2147,  880, 2128, 2133, 2118, 2116, 2111, 2109, 2115,
00551       858,  566,  619,  677,  704,  659,  527,  568,  825,  757,
00552 
00553       835,  693,  609, 2116,  754, 2112, 2102, 2100, 2092, 2089,
00554      2091, 2096, 2081, 2085, 2091, 2079, 2073, 2085,  892, 2080,
00555      2084, 2064, 2062, 2070, 2069,    0, 2058,  902, 2054, 2051,
00556      2044, 2039,    0, 2064, 2050, 2023, 2008,  866,  791,  885,
00557      2013, 2010,  739,  846,  906,  907,  912,  916,  920,  928,
00558       933,  943,  954,  977,  875, 1998, 2009,  964, 4106,  988,
00559       999,    0,  897, 2008, 1993, 1003, 1011, 1015, 1984, 1985,
00560      1024, 1983, 1994,  800,  824,  820,  665,  643,  506,  894,
00561       919,  899,  458,  934,  920,  845, 1993, 1036,  937, 1979,
00562      1978, 1972, 1969, 1964, 1963, 1953, 1970, 1968, 1963, 1965,
00563 
00564      1937,    0, 1046, 1058, 1062, 1953, 1068, 1949, 1948, 1072,
00565      1076, 1083, 1098, 1102, 1941, 1934, 1942, 1927, 4106, 1927,
00566      1106, 1938,  938, 1110, 1937, 1115, 1119, 1123,  943,  951,
00567      1934, 1923, 1930, 1919, 1144, 1148, 1930, 1899, 1133, 1887,
00568       954,  855, 1890, 1876, 1137,  494, 1159, 1165, 1170, 1878,
00569       978,  998, 1009,  942,  967,  989,  997, 1049, 1023, 1024,
00570      1886, 1025,  543, 1884, 1060, 1868, 1878, 1901, 1861, 1873,
00571      1846, 1857, 1836, 1832, 1834, 1824, 1813, 1824, 1181, 4106,
00572      1185, 1191, 1205, 1210, 1214, 1798, 1238, 1803, 1839, 1796,
00573      1218, 1803, 1222, 4106, 1782, 1057,  880, 1227, 1243, 1228,
00574 
00575      1084, 1781, 1783, 1779, 1772, 1760, 1249, 1253, 1771, 1757,
00576      1257, 1085, 1755, 1757, 1258, 1746, 1761, 1762, 1265, 1748,
00577      1050, 1101, 1111, 1138, 1125,  684, 1164, 1238, 1143, 1244,
00578       726,  782, 1169, 1747, 1730, 1280, 1743, 1725, 1302, 1721,
00579      1712, 1729, 1711, 1721, 1706, 1306, 1310, 1314, 1318, 1365,
00580      1702, 1701, 1679, 1677, 1667, 1698, 4106, 1665, 1668, 1652,
00581      1172, 1094, 1322, 1326, 1248, 1189, 1658, 1642, 1641, 1622,
00582      1347, 1352, 1607, 1604, 1337, 1243, 1603, 1609, 1356, 1593,
00583      1572, 1338, 1263, 1582, 1297, 1581, 1292, 1360, 1293, 1235,
00584      1579, 1299, 1564, 1259, 1565, 1540, 1540, 1524, 1372, 1386,
00585 
00586      1404, 1527, 1408, 1523, 1534, 1412, 1416, 1420, 1425, 1429,
00587      1442, 1451, 1457, 1522, 1501, 1504, 4106, 1501, 1512, 1466,
00588      1479, 1484, 1491, 1495, 1503, 1493, 1507, 1471, 1516, 1520,
00589      1524, 1469, 1528, 1532, 1339, 1547, 1481, 1537, 1553, 1559,
00590      1340, 1132, 1353, 1403, 1359, 1571, 1404, 1469, 1454, 1466,
00591      1451, 1603, 1581, 1440, 1586, 1590, 1597, 1575, 1628, 1425,
00592      1433, 1418, 1397, 1639, 1643, 4106, 1655, 1659, 1663, 1675,
00593      1679, 1683, 1691,  904, 1704, 1712, 1716, 1403, 1720, 1401,
00594      1724, 1729, 1733, 1738, 1767, 1781, 1785, 1793, 1814, 1358,
00595      1753, 1818, 4106, 1830, 1834, 1430, 1370, 1431, 1858, 1348,
00596 
00597      1331, 1747, 1846, 1867, 1888, 1883, 1909, 1896, 1934, 1938,
00598      1632, 1942, 1946, 1950, 1954, 1298, 1255, 1982, 1988, 1333,
00599      2000, 2004, 2016, 2020, 2032, 2044, 1445, 1268,  264, 1235,
00600      1230, 1215, 2048, 2056, 2060, 1225, 2065, 2078, 2090, 2094,
00601      2106, 2110, 1152, 1807, 1409, 2072, 2149, 1112, 2137, 2141,
00602      2174, 2181, 2195, 2220, 2224, 2236, 4106, 2241, 2248, 2269,
00603      1090, 1668, 2263, 2186, 1055, 1063, 2294, 1001, 1353,  980,
00604      2128, 2299, 4106, 1633, 1458, 2320,  952,    0, 2345, 2306,
00605      2353, 2374, 2395,  778, 1853, 2380, 2389,  651,  613, 2422,
00606      2426, 2438, 2442,  387, 2201,    0, 2470,  339, 2495, 2326,
00607 
00608      2456, 2275,  313, 2460, 4106, 2478, 2502, 2465, 2402, 2516,
00609      2521, 2528, 2540, 2545, 2555, 2564, 2585, 2571, 2580, 2591,
00610      2606,    0, 2627, 2595, 2617, 2612, 2633, 2652,    0, 2677,
00611      2658, 2683, 2705, 2709, 2713, 2717, 2759, 2721, 2726,   58,
00612      1808, 2738, 2748, 2784, 2788, 2809,    0, 2830,    0, 2855,
00613      4106, 2881, 2903, 2925, 2947, 2968, 2989, 3010, 3015, 3036,
00614      3057, 3079, 3098, 3119, 3134, 3152, 3173, 3180, 3202, 3224,
00615      3241, 3263, 3285, 3306, 3327, 3335, 3347, 3367, 3389, 3401,
00616      3421, 3443, 3465, 3486, 3507, 3528, 3549, 3570, 3591, 3612,
00617      3633, 3654, 3675, 3696, 3717, 3738, 3759, 3776, 3797, 3818,
00618 
00619      3839, 3860, 3881, 3898, 3919, 3940, 3961, 3982, 4003, 4024,
00620      4045, 4062, 4083
00621     } ;
00622 
00623 static yyconst flex_int16_t yy_def[914] =
00624     {   0,
00625       852,  852,  851,    3,  851,    5,  851,    7,  851,    9,
00626       853,  853,  854,  854,    7,   15,   15,   15,   15,   15,
00627        15,   21,  855,  855,   15,   15,  851,  851,  851,  851,
00628       851,  851,  856,  857,  857,  856,  851,  858,  859,  851,
00629       851,  851,  851,  851,  851,  860,  851,  860,  851,  851,
00630       851,  851,  851,  861,  861,   55,   55,   55,   55,   55,
00631        55,   55,   55,   55,   55,   55,  851,  851,   36,   69,
00632        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
00633        55,  851,  851,  862,  862,  863,  864,  851,  851,  851,
00634       865,  865,  865,   83,  865,  851,  851,  851,  866,  867,
00635 
00636       851,  867,  867,  851,  851,  851,  851,  868,  868,  868,
00637       869,  869,  869,  869,  870,  870,  870,  851,  851,  870,
00638       871,  872,  872,  851,  851,  851,  851,  872,  851,  851,
00639       873,  851,   36,   35,   36,  858,  860,  874,  874,  139,
00640       858,  858,   36,   36,  875,  851,  851,  858,  851,  858,
00641       876,  876,  851,  851,  860,  860,  877,  860,   48,  851,
00642       851,  851,  851,  860,   55,  875,   55,   55,   55,   55,
00643        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
00644        55,   69,   69,  139,  139,  139,  139,  139,  139,  139,
00645       139,  139,  139,  139,   69,   69,   55,   55,   55,   55,
00646 
00647        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
00648       851,  851,   83,  862,  864,  851,  851,  864,  865,  865,
00649       865,  878,  865,  865,   83,  851,  865,  866,  102,  103,
00650       851,  851,  851,  879,  880,  851,  851,  868,  868,  868,
00651       869,  869,  869,  881,  870,  870,  870,  882,  871,  872,
00652       872,  872,  883,  873,  851,  139,  858,  139,  139,  139,
00653       139,  858,  858,  858,  875,  875,  884,  875,  851,  851,
00654       876,  876,  860,  877,  860,  166,  166,  166,   55,   55,
00655        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
00656       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
00657 
00658       139,  139,  139,  139,  139,   55,   55,   55,   55,   55,
00659        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
00660       851,  851,  851,  851,  865,  878,  865,  865,  851,  865,
00661       851,  851,  879,  880,  851,  868,  868,  881,  882,  883,
00662       851,  139,  139,  139,  858,  858,  858,  278,  851,  278,
00663       851,  851,  884,  851,  278,  851,  876,  860,  851,  278,
00664       851,  360,  278,   55,   55,  851,  851,  860,   55,   55,
00665        55,   55,   55,  139,  139,  139,  139,  139,  139,  139,
00666       139,  139,  139,  139,  139,  139,  139,  139,  139,   55,
00667        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
00668 
00669        55,   55,  851,  851,  860,   55,  851,  851,  851,  851,
00670       865,  865,  851,  851,  851,  865,  851,  851,  851,  868,
00671       868,  851,  139,  139,  139,  858,  858,  858,  278,  278,
00672       851,  851,  851,  851,  884,  884,  851,  876,  860,  278,
00673       851,  278,   55,  851,  860,   55,  851,  851,  860,   55,
00674       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
00675       139,  139,  139,  139,  139,   55,   55,   55,   55,   55,
00676        55,   55,   55,   55,   55,   55,   55,   55,  885,  851,
00677       851,  851,  885,  483,  885,  851,  851,  851,  865,  851,
00678       851,  868,  851,  851,  851,  139,  139,  858,  851,  858,
00679 
00680       278,  278,  851,  851,  851,  851,  884,  884,  851,  876,
00681       860,  278,   55,  851,  860,   55,   55,  851,  860,  139,
00682       139,  139,  139,  139,  139,  139,  139,  139,  139,  139,
00683       139,  139,  139,   55,   55,  860,   55,   55,   55,   55,
00684        55,   55,   55,   55,   55,  886,  483,  483,  886,  483,
00685       851,  851,  851,  851,  851,  851,  851,  851,  868,  851,
00686       139,  139,  858,  858,  278,  278,  851,  851,  851,  851,
00687       884,  884,  851,  876,  860,  278,   55,  851,  860,   55,
00688       851,  860,  139,  139,  139,  139,  139,  139,  139,  139,
00689       139,  139,  139,  139,   55,   55,   55,   55,  851,  851,
00690 
00691       860,   55,   55,   55,   55,  851,  886,  550,  886,  886,
00692       886,  886,  886,  851,  851,  851,  851,  851,  851,  868,
00693       851,  139,  858,  278,  278,  851,  851,  851,  851,  884,
00694       884,  851,  876,  860,  278,   55,  851,  860,  851,  860,
00695       139,  139,  139,  139,  139,  139,  139,  139,   55,   55,
00696        55,  887,  860,   55,  886,  886,  886,  886,  886,  851,
00697       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00698       860,  851,  851,  278,  851,  851,  360,  851,  851,  851,
00699       851,  884,  851,  851,  884,  851,  851,  860,  278,  851,
00700       860,  851,  851,  851,  860,  139,  139,  139,  888,  139,
00701 
00702        55,   55,  889,  889,  890,  891,  892,  851,  851,  860,
00703       860,  886,  886,  886,  886,  851,  851,  851,  851,  851,
00704       851,  851,  851,  860,  851,  851,  278,  851,  278,  851,
00705       851,  851,  884,  884,  851,  851,  851,  860,  851,  851,
00706       360,  884,  851,  860,  139,  139,  893,   55,  894,  894,
00707       895,  896,  897,  851,  851,  891,  851,  851,  860,  892,
00708       851,  860,  886,  886,  851,  851,  851,  851,  278,  851,
00709       884,  851,  851,  860,  139,  893,   55,  898,  899,  896,
00710       851,  860,  897,  851,  860,  886,  886,  851,  851,  851,
00711       278,  851,  884,  139,   55,  898,  899,  851,  900,  886,
00712 
00713       886,  851,  851,  851,  851,  851,  851,  360,  884,  851,
00714       851,  851,  685,  139,  901,  901,  902,  903,  903,  903,
00715       900,  904,  905,  886,  886,  906,  907,  908,  904,  905,
00716       906,  909,  851,  907,  851,  860,  908,  851,  909,  851,
00717       860,  851,  860,  910,  910,  911,  912,  913,  912,  913,
00718         0,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00719       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00720       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00721       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00722       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00723 
00724       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
00725       851,  851,  851
00726     } ;
00727 
00728 static yyconst flex_int16_t yy_nxt[4160] =
00729     {   0,
00730       851,   29,   30,  245,   29,   29,   30,  235,   29,  351,
00731       352,  352,  353,  254,  254,  254,  254,   31,  236,  254,
00732       237,   31,   32,   33,   34,   35,   36,   37,   38,   32,
00733        39,   40,   41,   42,   42,   42,   43,   44,   42,   45,
00734        46,   47,   48,   49,   32,   50,   51,   52,   53,   54,
00735        55,   56,   57,   55,   58,   59,   60,   55,   61,   55,
00736        55,   62,   55,   63,   55,   64,   65,   55,   55,   55,
00737        55,   66,   55,   67,   68,   69,  129,   94,   70,  129,
00738        94,  146,  153,  258,  199,  146,  131,  298,  174,  153,
00739       153,  842,  130,  153,  112,  113,  168,  112,  175,  153,
00740 
00741       132,  132,   71,   72,   73,   95,   74,   75,  132,  132,
00742       114,  173,  132,   76,   96,   96,  202,   77,  132,   78,
00743        79,   80,   81,   82,   83,   84,   85,   83,   82,   86,
00744        82,   82,   82,   87,   87,   88,   89,   87,   87,   87,
00745        90,   82,   87,   82,   87,   87,   87,   87,   87,   82,
00746        91,   92,   92,   92,   92,   93,   92,   92,   92,   92,
00747        92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
00748        92,   92,   92,   92,   82,   82,   96,   97,   30,   96,
00749        97,   96,   96,   96,   96,   96,   96,   96,   96,   96,
00750        96,   96,   96,   98,   96,   96,   96,   96,   96,   96,
00751 
00752        96,   96,   96,   99,   99,   99,   99,   99,   99,   99,
00753        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
00754        99,   99,   99,   99,   99,   99,   99,   96,   96,   96,
00755       100,  101,   96,  102,   96,  103,   96,   96,   96,  103,
00756       103,  104,  105,  103,  103,  103,  106,   96,  103,  107,
00757       103,  103,  103,  103,  103,   96,  108,  108,  108,  108,
00758       108,  108,  108,  109,  108,  108,  108,  108,  108,  108,
00759       108,  108,  110,  108,  108,  108,  108,  108,  108,  108,
00760        96,   96,  112,  113,  170,  112,  171,  169,  116,  117,
00761       153,  116,  769,  172,  116,  117,  206,  116,  114,  118,
00762 
00763       119,  200,   96,   96,  120,  118,  119,  207,  268,  132,
00764       120,   96,   96,   96,   96,   96,   96,   96,   96,   96,
00765        96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
00766        96,   96,   96,   96,   96,  121,  123,  124,  176,  123,
00767       197,  258,  198,  203,  258,  617,  176,  125,  126,  177,
00768       176,  127,  128,  292,  295,  293,  121,  121,  121,  121,
00769       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
00770       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
00771       123,  124,  160,  123,  134,  134,  134,  134,  146,  818,
00772       147,  125,  126,  147,  222,  127,  128,  133,  134,  134,
00773 
00774       135,  132,  136,  134,  134,  134,  134,  132,  154,  211,
00775       149,  155,  153,  130,  137,  258,  137,  141,  154,  814,
00776       258,  155,  161,  146,  157,  260,  142,  261,  145,  296,
00777       139,  132,  150,  146,  162,  158,  141,  159,  145,  140,
00778       153,  195,  132,  258,  196,  142,  143,  134,  134,  144,
00779       156,  136,  132,  225,  204,  170,  225,  201,  297,  132,
00780       156,  145,  130,  137,  172,  137,  145,  146,  179,  258,
00781       205,  309,  310,  214,  214,  214,  214,  129,  258,  139,
00782       129,  226,  851,  214,  214,  214,  214,  303,  140,  163,
00783       258,  304,  164,  130,  148,  147,  460,  133,  147,  851,
00784 
00785       135,  283,  148,  148,  211,  148,  137,  148,  851,  166,
00786       258,  148,  148,  148,  211,  149,  311,  851,  242,  342,
00787       229,  242,  516,  229,  246,  229,  251,  246,  229,  251,
00788       517,  167,  163,  258,  243,  164,  231,  148,  258,  256,
00789       247,  231,  252,  260,  154,  148,  148,  155,  148,  137,
00790       148,  456,  166,  232,  148,  148,  148,  182,  232,  258,
00791       183,  258,  233,  129,  145,  301,  129,  233,  381,  265,
00792       147,  147,  266,  147,  147,  258,  302,  851,  299,  130,
00793       267,  267,  258,  305,  184,  185,  186,  258,  187,  188,
00794       149,  149,  260,  532,  300,  189,  375,  382,  258,  190,
00795 
00796       258,  191,  192,  193,  194,  212,  213,  214,  214,  213,
00797       212,  215,  212,  212,  212,  215,  215,  212,  212,  215,
00798       215,  215,  216,  212,  215,  212,  215,  215,  215,  215,
00799       215,  212,  212,  147,  258,  154,  147,  217,  154,  222,
00800       154,  258,  147,  155,  344,  147,  269,  269,  269,  269,
00801       241,  258,  387,  149,  322,  145,  212,  212,  218,  803,
00802       145,  218,  149,  219,  262,  376,  149,  218,  218,  254,
00803       254,  218,  218,  218,  147,  258,  218,  147,  218,  218,
00804       218,  218,  218,  263,  258,  264,  455,  235,  270,  221,
00805       163,  258,  802,  164,  149,  148,  343,  258,  236,  154,
00806 
00807       237,  454,  155,  148,  148,  380,  148,  137,  148,  258,
00808       166,  377,  148,  148,  148,  163,  258,  264,  164,  145,
00809       148,  154,  386,  163,  155,  258,  163,  163,  148,  148,
00810       164,  148,  137,  148,  588,  166,  258,  148,  148,  148,
00811       275,  145,  273,  166,  378,  379,  259,  166,  276,  269,
00812       269,  277,  195,  195,  195,  196,  196,  196,  258,  267,
00813       267,  214,  214,  214,  214,  464,  242,  246,  149,  242,
00814       246,  258,  145,  145,  145,  251,  265,  225,  251,  266,
00815       225,  147,  243,  247,  147,  424,  258,  267,  267,  258,
00816       278,  252,  322,  245,  291,  291,  291,  218,  389,  384,
00817 
00818       218,  149,  219,  254,  254,  226,  218,  218,  323,  798,
00819       218,  218,  218,  147,  258,  218,  147,  218,  218,  218,
00820       218,  218,  263,  147,  147,  593,  147,  147,  348,  349,
00821       349,  350,  258,  149,  354,  349,  349,  355,  154,  267,
00822       267,  155,  451,  149,  149,  267,  267,  269,  269,  269,
00823       269,  154,  258,  345,  155,  383,  258,  258,  145,  452,
00824       360,  361,  361,  362,  453,  347,  346,  258,  241,  385,
00825       275,  145,  354,  349,  349,  355,  425,  258,  258,  358,
00826       851,  366,  367,  367,  368,  512,  299,  254,  254,  270,
00827       258,  463,  851,  403,  404,  404,  405,  254,  254,  268,
00828 
00829       260,  254,  374,  413,  413,  413,  414,  147,  147,  429,
00830       147,  147,  258,  147,  268,  363,  147,  348,  430,  268,
00831       350,  349,  349,  349,  349,  562,  258,  149,  149,  348,
00832       457,  258,  350,  149,  351,  352,  352,  351,  426,  442,
00833       727,  268,  428,  459,  352,  352,  352,  352,  268,  458,
00834       429,  258,  258,  427,  431,  351,  352,  352,  353,  430,
00835       268,  462,  429,  432,  461,  154,  258,  433,  155,  258,
00836       258,  430,  268,  465,  258,  501,  434,  433,  354,  349,
00837       349,  354,  496,  523,  795,  145,  434,  268,  435,  360,
00838       361,  361,  362,  502,  439,  268,  504,  436,  356,  258,
00839 
00840       361,  361,  361,  361,  366,  367,  367,  366,  520,  524,
00841       258,  431,  367,  367,  367,  367,  366,  367,  367,  368,
00842       432,  258,  429,  792,  166,  447,  448,  448,  449,  258,
00843       258,  440,  268,  431,  521,  525,  166,  403,  404,  404,
00844       405,  258,  441,  526,  790,  522,  444,  403,  404,  404,
00845       403,  528,  529,  531,  444,  258,  258,  258,  445,  404,
00846       404,  404,  404,  403,  404,  404,  405,  166,  258,  479,
00847       479,  479,  479,  483,  483,  483,  484,  479,  479,  479,
00848       479,  258,  258,  166,  485,  485,  485,  485,  533,  258,
00849       480,  789,  258,  561,  480,  527,  584,  788,  480,  413,
00850 
00851       413,  413,  413,  487,  487,  487,  487,  493,  493,  493,
00852       493,  447,  448,  448,  449,  536,  147,  576,  494,  147,
00853       499,  448,  448,  499,  147,  565,  258,  147,  268,  268,
00854       585,  486,  784,  258,  154,  486,  149,  155,  154,  622,
00855       149,  155,  258,  258,  149,  351,  352,  352,  353,  351,
00856       352,  352,  353,  587,  145,  500,  777,  258,  145,  498,
00857       447,  448,  448,  447,  258,  511,  448,  448,  448,  448,
00858       258,  447,  448,  448,  449,  258,  507,  591,  697,  586,
00859       166,  515,  479,  479,  479,  479,  485,  485,  485,  485,
00860       508,  166,  547,  547,  547,  548,  258,  773,  594,  518,
00861 
00862       589,  258,  424,  480,  258,  518,  483,  483,  483,  483,
00863       519,  550,  550,  550,  550,  485,  485,  485,  485,  493,
00864       493,  493,  493,  493,  493,  493,  493,  480,  147,  147,
00865       494,  147,  147,  268,  494,  625,  851,  736,  549,  487,
00866       487,  487,  487,  770,  499,  448,  448,  499,  149,  149,
00867       351,  352,  352,  353,  351,  352,  352,  353,  154,  154,
00868       629,  155,  155,  563,  149,  627,  154,  258,  552,  155,
00869       258,  486,  553,  564,  554,  592,  258,  555,  145,  145,
00870       624,  163,  590,  518,  164,  388,  145,  268,  635,  562,
00871       571,  258,  268,  582,  592,  258,  768,  572,  648,  766,
00872 
00873       579,  166,  575,  599,  600,  600,  601,  606,  606,  606,
00874       606,  547,  547,  547,  547,  608,  608,  608,  608,  606,
00875       606,  606,  606,  147,  258,  258,  147,  147,  480,  258,
00876       147,  258,  851,  644,  765,  645,  851,  720,  154,  154,
00877       480,  155,  155,  149,  642,  720,  647,  149,  351,  352,
00878       352,  353,  427,  351,  352,  352,  353,  154,  145,  145,
00879       155,  599,  600,  600,  601,  609,  550,  550,  550,  550,
00880       696,  623,  258,  599,  600,  600,  599,  145,  748,  630,
00881       699,  640,  634,  268,  689,  258,  638,  600,  600,  600,
00882       600,  258,  258,  166,  698,  610,  791,  268,  631,  611,
00883 
00884       699,  612,  464,  743,  613,  599,  600,  600,  601,  599,
00885       600,  600,  653,  606,  606,  606,  606,  606,  606,  606,
00886       606,  608,  608,  608,  608,  166,  606,  606,  606,  606,
00887       606,  606,  606,  606,  480,  258,  258,  731,  480,  730,
00888       617,  258,  851,  606,  606,  606,  606,  480,  700,  464,
00889       717,  480,  606,  606,  606,  606,  775,  656,  606,  606,
00890       606,  606,  258,  258,  480,  617,  655,  665,  665,  665,
00891       665,  716,  652,  480,  657,  625,  745,  746,  666,  480,
00892       667,  667,  667,  668,  658,  670,  667,  667,  671,  268,
00893       258,  669,  672,  667,  667,  673,  669,  702,  402,  659,
00894 
00895       701,  464,  794,  669,  675,  676,  676,  677,  679,  679,
00896       679,  679,  149,  690,  686,  680,  258,  681,  681,  681,
00897       681,  351,  352,  352,  353,  683,  684,  684,  685,  667,
00898       667,  667,  668,  687,  667,  667,  688,  678,  154,  674,
00899       669,  155,  664,  663,  669,  662,  661,  268,  670,  667,
00900       667,  671,  660,  145,  692,  692,  692,  692,  145,  669,
00901       694,  692,  692,  695,  682,  693,  402,  654,  652,  691,
00902       402,  693,  599,  600,  600,  653,  606,  606,  606,  606,
00903       145,  651,  708,  709,  709,  710,  650,  606,  606,  606,
00904       606,  606,  606,  606,  606,  649,  464,  480,  606,  606,
00905 
00906       606,  606,  166,  258,  703,  704,  704,  705,  480,  706,
00907       711,  646,  480,  643,  641,  639,  712,  148,  148,  480,
00908       148,  137,  148,  165,  166,  176,  148,  148,  148,  606,
00909       606,  606,  606,  154,  154,  713,  155,  155,  714,  637,
00910       665,  665,  665,  665,  665,  665,  665,  665,  636,  633,
00911       480,  666,  632,  145,  145,  666,  667,  667,  667,  667,
00912       718,  718,  718,  719,  721,  721,  721,  722,  629,  154,
00913       715,  720,  155,  628,  762,  720,  670,  667,  667,  670,
00914       723,  718,  718,  724,  672,  667,  667,  672,  627,  145,
00915       626,  720,  725,  718,  718,  726,  166,  621,  620,  785,
00916 
00917       166,  619,  557,  720,  149,  675,  676,  676,  675,  618,
00918       617,  616,  149,  676,  676,  676,  676,  675,  676,  676,
00919       677,  679,  679,  679,  679,  681,  681,  681,  681,  615,
00920       351,  352,  352,  353,  683,  684,  684,  683,  431,  684,
00921       684,  684,  684,  614,  728,  605,  431,  432,  749,  750,
00922       750,  751,  728,  402,  154,  432,  729,  155,  604,  430,
00923       728,  603,  319,  602,  732,  733,  598,  433,  683,  684,
00924       684,  685,  433,  732,  145,  597,  434,  596,  732,  595,
00925       583,  434,  735,  735,  735,  735,  687,  667,  667,  687,
00926       581,  371,  580,  736,  737,  718,  718,  738,  744,  578,
00927 
00928       577,  435,  574,  573,  570,  720,  145,  734,  154,  154,
00929       436,  155,  155,  569,  145,  739,  740,  740,  741,  692,
00930       692,  692,  692,  568,  567,  566,  742,  560,  145,  145,
00931       693,  694,  692,  692,  694,  694,  692,  692,  695,  559,
00932       558,  843,  693,  557,  556,  551,  693,  703,  704,  704,
00933       703,  145,  774,  545,  154,  145,  544,  155,  268,  703,
00934       704,  704,  705,  402,  706,  543,  542,  166,  704,  704,
00935       704,  704,  148,  148,  145,  148,  137,  148,  258,  166,
00936       541,  148,  148,  148,  754,  755,  755,  754,  851,  703,
00937       704,  704,  705,  540,  752,  757,  539,  708,  709,  709,
00938 
00939       708,  538,  537,  799,  149,  536,  137,  535,  137,  166,
00940       758,  755,  755,  759,  534,  756,  258,  166,  530,  176,
00941       514,  757,  513,  756,  756,  761,  756,  137,  756,  502,
00942       166,  510,  756,  756,  756,  709,  709,  709,  709,  708,
00943       709,  709,  710,  606,  606,  606,  606,  606,  606,  606,
00944       606,  606,  606,  606,  606,  606,  606,  606,  606,  166,
00945       509,  506,  505,  761,  480,  504,  503,  711,  480,  497,
00946       495,  492,  480,  491,  490,  489,  480,  488,  658,  482,
00947       481,  478,  764,  718,  718,  718,  719,  477,  763,  718,
00948       718,  718,  719,  476,  720,  475,  474,  658,  473,  472,
00949 
00950       720,  721,  721,  721,  722,  721,  721,  721,  722,  471,
00951       470,  469,  720,  468,  467,  466,  720,  723,  718,  718,
00952       767,  723,  718,  718,  724,  464,  176,  450,  720,  446,
00953       176,  176,  720,  725,  718,  718,  726,  166,  443,  438,
00954       437,  166,  423,  422,  720,  725,  718,  718,  726,  351,
00955       352,  352,  353,  149,  421,  420,  720,  351,  352,  352,
00956       353,  735,  735,  735,  735,  149,  737,  718,  718,  772,
00957       335,  419,  736,  749,  750,  750,  751,  720,  631,  737,
00958       718,  718,  738,  418,  771,  417,  145,  416,  415,  412,
00959       720,  739,  740,  740,  739,  740,  740,  740,  740,  145,
00960 
00961       411,  410,  736,  409,  258,  408,  736,  739,  740,  740,
00962       741,  351,  352,  352,  353,  407,  406,  402,  742,  401,
00963       400,  399,  742,  398,  431,  397,  396,  395,  431,  351,
00964       352,  352,  353,  432,  394,  393,  392,  432,  749,  750,
00965       750,  749,  750,  750,  750,  750,  391,  390,  388,  430,
00966       758,  755,  755,  759,  373,  756,  372,  371,  166,  176,
00967       176,  757,  851,  756,  756,  370,  756,  137,  756,  369,
00968       166,  793,  756,  756,  756,  749,  750,  750,  751,  176,
00969       778,  176,  755,  755,  755,  755,  365,  606,  606,  606,
00970       606,  364,  137,  757,  137,  166,  781,  755,  755,  782,
00971 
00972       851,  780,  815,  816,  816,  817,  359,  757,  480,  780,
00973       780,  357,  780,  137,  780,  356,  145,  258,  780,  780,
00974       780,  754,  755,  755,  754,  755,  755,  755,  755,  341,
00975       787,  253,  757,  248,  244,  337,  757,  754,  755,  755,
00976       754,  149,  758,  755,  755,  758,  336,  335,  757,  758,
00977       755,  755,  759,  757,  332,  331,  234,  149,  330,  329,
00978       757,  328,  166,  327,  606,  606,  606,  606,  325,  166,
00979       758,  755,  755,  759,  851,  756,  826,  826,  826,  826,
00980       324,  757,  322,  756,  756,  480,  756,  137,  756,  323,
00981       166,  322,  756,  756,  756,  723,  718,  718,  767,  786,
00982 
00983       737,  718,  718,  772,  321,  320,  720,  755,  755,  755,
00984       755,  720,  319,  318,  317,  166,  316,  315,  757,  314,
00985       145,  758,  755,  755,  759,  313,  756,  606,  606,  606,
00986       606,  312,  757,  308,  756,  756,  307,  756,  137,  756,
00987       306,  166,  294,  756,  756,  756,  154,  291,  480,  155,
00988       290,  796,  289,  288,  781,  755,  755,  781,  176,  796,
00989       796,  287,  796,  137,  796,  757,  145,  824,  796,  796,
00990       796,  286,  285,  176,  145,  781,  755,  755,  782,  284,
00991       283,  606,  606,  606,  606,  282,  757,  281,  280,  279,
00992       606,  606,  606,  606,  153,  145,  781,  755,  755,  782,
00993 
00994       153,  780,  480,  351,  352,  352,  353,  757,  137,  780,
00995       780,  480,  780,  137,  780,  272,  145,  801,  780,  780,
00996       780,  256,  800,  804,  804,  804,  804,  806,  807,  807,
00997       808,  256,  256,  257,  805,  255,  131,  253,  809,  810,
00998       810,  810,  810,  811,  812,  812,  813,  248,  244,  240,
00999       805,  239,  234,  131,  809,  227,  224,  606,  606,  606,
01000       606,  804,  804,  804,  804,  223,  806,  807,  807,  808,
01001       268,  154,  805,  211,  155,  211,  796,  809,  480,  806,
01002       807,  807,  806,  211,  796,  796,  211,  796,  137,  796,
01003       805,  145,  210,  796,  796,  796,  819,  820,  820,  821,
01004 
01005       209,  822,  825,  807,  807,  807,  807,  208,  430,  132,
01006       181,  180,  431,  137,  805,  137,  145,  810,  810,  810,
01007       810,  432,  811,  812,  812,  811,  179,  178,  805,  812,
01008       812,  812,  812,  805,  177,  173,  431,  169,  168,  132,
01009       805,  811,  812,  812,  813,  432,  815,  816,  816,  817,
01010       152,  132,  809,  131,  851,  433,  815,  816,  816,  815,
01011       851,  851,  433,  851,  434,  816,  816,  816,  816,  851,
01012       851,  434,  820,  820,  820,  820,  166,  258,  851,  851,
01013       267,  819,  820,  820,  819,  851,  815,  816,  816,  817,
01014       851,  827,  820,  820,  820,  820,  831,  831,  831,  831,
01015 
01016       851,  145,  851,  137,  851,  137,  166,  819,  820,  820,
01017       821,  851,  822,  826,  826,  826,  826,  480,  606,  606,
01018       606,  606,  851,  851,  137,  851,  137,  145,  154,  851,
01019       851,  155,  851,  829,  833,  833,  833,  833,  851,  480,
01020       851,  829,  829,  851,  829,  137,  829,  851,  145,  658,
01021       829,  829,  829,  835,  833,  833,  836,  851,  834,  831,
01022       831,  831,  831,  851,  851,  851,  834,  834,  851,  834,
01023       137,  834,  851,  145,  851,  834,  834,  834,  154,  851,
01024       480,  155,  851,  829,  838,  838,  838,  838,  851,  851,
01025       851,  829,  829,  851,  829,  137,  829,  851,  145,  851,
01026 
01027       829,  829,  829,  851,  851,  480,  833,  833,  833,  833,
01028       833,  833,  833,  833,  835,  833,  833,  835,  835,  833,
01029       833,  836,  838,  838,  838,  838,  851,  838,  838,  838,
01030       838,  851,  851,  851,  145,  851,  851,  851,  145,  844,
01031       844,  844,  844,  480,  851,  851,  851,  840,  480,  845,
01032       844,  844,  846,  851,  851,  840,  851,  851,  851,  841,
01033       835,  833,  833,  836,  851,  834,  851,  851,  851,  145,
01034       851,  851,  851,  834,  834,  851,  834,  137,  834,  851,
01035       145,  851,  834,  834,  834,  844,  844,  844,  844,  845,
01036       844,  844,  845,  851,  851,  851,  851,  851,  851,  851,
01037 
01038       851,  851,  851,  851,  851,  851,  851,  851,  851,  145,
01039       845,  844,  844,  846,  851,  847,  851,  851,  851,  851,
01040       851,  851,  851,  851,  851,  851,  851,  137,  851,  137,
01041       145,  154,  851,  851,  155,  851,  849,  851,  851,  851,
01042       851,  851,  851,  851,  849,  849,  851,  849,  137,  849,
01043       851,  145,  851,  849,  849,  849,  154,  851,  851,  155,
01044       851,  849,  851,  851,  851,  851,  851,  851,  851,  849,
01045       849,  851,  849,  137,  849,  851,  145,  851,  849,  849,
01046       849,   28,   28,   28,   28,   28,   28,   28,   28,   28,
01047        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
01048 
01049        28,   28,   28,  111,  111,  111,  111,  111,  111,  111,
01050       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
01051       111,  111,  111,  111,  111,  115,  115,  115,  115,  115,
01052       115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
01053       115,  115,  115,  115,  115,  115,  115,  122,  122,  122,
01054       122,  122,  122,  122,  122,  122,  122,  122,  122,  122,
01055       122,  122,  122,  122,  122,  122,  122,  122,  122,  138,
01056       138,  138,  138,  138,  851,  851,  851,  851,  851,  851,
01057       138,  138,  138,  851,  851,  138,  138,  138,  138,  138,
01058       136,  136,  136,  136,  136,  851,  851,  851,  851,  851,
01059 
01060       851,  851,  851,  851,  851,  851,  136,  136,  136,  136,
01061       136,  148,  851,  851,  148,  148,  851,  851,  851,  148,
01062       148,  851,  148,  851,  148,  148,  851,  148,  148,  148,
01063       148,  148,  151,  151,  151,  151,  151,  137,  851,  851,
01064       137,  851,  851,  851,  851,  851,  851,  851,  851,  137,
01065       137,  137,  851,  137,  137,  137,  137,  137,  165,  851,
01066       851,  165,  165,  851,  851,  851,  165,  165,  851,  165,
01067       165,  165,  165,  851,  165,  165,  165,  165,  165,  212,
01068       212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
01069       212,  212,  212,  212,  212,  212,  212,  851,  212,  220,
01070 
01071       851,  851,  220,  220,  220,  851,  851,  220,  220,  220,
01072       851,  851,  220,  220,  220,  220,  220,  220,  220,  220,
01073       218,  851,  851,  218,  218,  218,  851,  851,  218,  218,
01074       218,  851,  851,  851,  218,  218,  851,  851,  218,  220,
01075       851,  851,  851,  851,  851,  851,  851,  851,  220,  851,
01076       851,  220,  220,  220,  220,  220,  228,  851,  851,  851,
01077       851,  851,  851,  851,  851,  851,  228,  851,  851,  228,
01078       228,  228,  228,  228,  230,  851,  851,  230,  230,  230,
01079       851,  851,  230,  230,  230,  230,  851,  851,  230,  230,
01080       851,  851,  851,  230,  238,  851,  851,  238,  238,  238,
01081 
01082       238,  238,  241,  241,  241,  241,  241,  241,  241,  241,
01083       241,  241,  241,  241,  241,  241,  241,  851,  851,  241,
01084       241,  241,  241,  241,  245,  245,  245,  245,  245,  245,
01085       245,  851,  851,  245,  245,  245,  245,  245,  245,  245,
01086       245,  245,  245,  245,  245,  245,  249,  851,  851,  851,
01087       249,  249,  851,  249,  851,  249,  851,  851,  249,  249,
01088       249,  249,  249,  250,  250,  851,  250,  250,  250,  250,
01089       851,  851,  250,  250,  851,  250,  250,  250,  250,  250,
01090       250,  250,  250,  250,  250,  254,  254,  851,  254,  254,
01091       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
01092 
01093       254,  254,  254,  254,  254,  254,  254,  258,  851,  851,
01094       258,  258,  851,  851,  851,  258,  258,  851,  258,  258,
01095       258,  258,  851,  258,  258,  258,  258,  258,  268,  851,
01096       851,  268,  851,  851,  268,  268,  851,  851,  851,  851,
01097       268,  268,  851,  851,  268,  268,  268,  268,  268,  271,
01098       851,  851,  271,  271,  271,  271,  271,  274,  851,  851,
01099       274,  274,  851,  851,  274,  274,  274,  326,  326,  851,
01100       326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
01101       326,  326,  326,  326,  326,  326,  326,  326,  326,  333,
01102       333,  851,  333,  333,  333,  333,  333,  333,  333,  333,
01103 
01104       333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
01105       333,  334,  851,  851,  334,  334,  851,  851,  334,  334,
01106       334,  338,  338,  338,  338,  338,  338,  338,  338,  338,
01107       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
01108       338,  338,  338,  339,  339,  339,  339,  339,  339,  339,
01109       339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
01110       339,  339,  339,  339,  339,  340,  340,  851,  340,  340,
01111       340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
01112       340,  340,  340,  340,  340,  340,  340,  267,  267,  267,
01113       267,  851,  851,  267,  267,  851,  851,  851,  851,  267,
01114 
01115       267,  851,  851,  267,  267,  267,  267,  267,  546,  546,
01116       546,  546,  546,  851,  851,  851,  851,  851,  851,  851,
01117       851,  851,  851,  546,  546,  546,  546,  546,  546,  607,
01118       607,  607,  607,  607,  851,  851,  851,  607,  607,  851,
01119       607,  851,  607,  851,  607,  607,  607,  607,  607,  607,
01120       707,  707,  707,  707,  707,  851,  851,  851,  707,  707,
01121       851,  707,  707,  707,  707,  851,  707,  707,  707,  707,
01122       707,  747,  747,  747,  747,  747,  851,  851,  851,  747,
01123       747,  851,  747,  747,  747,  747,  851,  747,  747,  747,
01124       747,  747,  752,  752,  752,  752,  752,  851,  851,  851,
01125 
01126       851,  851,  851,  851,  851,  851,  752,  851,  752,  752,
01127       752,  752,  752,  753,  753,  753,  753,  753,  851,  851,
01128       851,  851,  851,  851,  851,  753,  753,  753,  851,  753,
01129       753,  753,  753,  753,  756,  756,  756,  756,  756,  851,
01130       756,  851,  756,  756,  851,  756,  851,  756,  756,  851,
01131       756,  756,  756,  756,  756,  760,  760,  760,  760,  760,
01132       851,  760,  851,  760,  760,  851,  760,  760,  760,  760,
01133       851,  760,  760,  760,  760,  760,  776,  776,  776,  776,
01134       776,  851,  776,  851,  776,  776,  851,  776,  776,  776,
01135       776,  851,  776,  776,  776,  776,  776,  778,  778,  778,
01136 
01137       778,  778,  851,  851,  851,  851,  851,  851,  851,  851,
01138       851,  778,  851,  778,  778,  778,  778,  778,  779,  779,
01139       779,  779,  779,  851,  851,  851,  851,  851,  851,  851,
01140       779,  779,  779,  851,  779,  779,  779,  779,  779,  780,
01141       780,  780,  780,  780,  851,  780,  851,  780,  780,  851,
01142       780,  851,  780,  851,  851,  780,  780,  780,  780,  780,
01143       783,  783,  783,  783,  783,  851,  783,  851,  783,  783,
01144       851,  783,  783,  783,  783,  851,  783,  783,  783,  783,
01145       783,  796,  851,  851,  851,  796,  796,  851,  796,  851,
01146       796,  851,  851,  796,  796,  796,  796,  796,  797,  851,
01147 
01148       851,  797,  797,  851,  851,  851,  797,  797,  851,  797,
01149       797,  797,  797,  851,  797,  797,  797,  797,  797,  823,
01150       823,  823,  823,  823,  851,  851,  851,  851,  851,  851,
01151       851,  823,  823,  823,  851,  823,  823,  823,  823,  823,
01152       827,  827,  827,  827,  827,  851,  851,  851,  851,  851,
01153       851,  851,  851,  851,  827,  851,  827,  827,  827,  827,
01154       827,  828,  828,  828,  828,  828,  851,  851,  851,  851,
01155       851,  851,  851,  828,  828,  828,  851,  828,  828,  828,
01156       828,  828,  822,  822,  822,  822,  822,  851,  851,  851,
01157       851,  851,  851,  851,  851,  851,  851,  851,  822,  822,
01158 
01159       822,  822,  822,  829,  851,  851,  851,  829,  829,  851,
01160       829,  851,  829,  851,  851,  829,  829,  829,  829,  829,
01161       830,  851,  851,  830,  830,  851,  851,  851,  830,  830,
01162       851,  830,  830,  830,  830,  851,  830,  830,  830,  830,
01163       830,  832,  832,  832,  832,  832,  851,  851,  851,  851,
01164       851,  851,  851,  851,  851,  851,  851,  832,  832,  832,
01165       832,  832,  834,  834,  834,  834,  834,  851,  851,  851,
01166       834,  834,  851,  834,  851,  834,  851,  851,  834,  834,
01167       834,  834,  834,  837,  837,  837,  837,  837,  851,  851,
01168       851,  837,  837,  851,  837,  837,  837,  837,  851,  837,
01169 
01170       837,  837,  837,  837,  839,  839,  839,  839,  839,  851,
01171       851,  851,  839,  839,  851,  839,  851,  839,  851,  839,
01172       839,  839,  839,  839,  839,  847,  847,  847,  847,  847,
01173       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01174       851,  847,  847,  847,  847,  847,  848,  848,  848,  848,
01175       848,  851,  851,  851,  851,  851,  851,  851,  848,  848,
01176       848,  851,  848,  848,  848,  848,  848,  849,  851,  851,
01177       851,  849,  849,  851,  849,  851,  849,  851,  851,  849,
01178       849,  849,  849,  849,  850,  851,  851,  850,  850,  851,
01179       851,  851,  850,  850,  851,  850,  850,  850,  850,  851,
01180 
01181       850,  850,  850,  850,  850,   27,  851,  851,  851,  851,
01182       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01183       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01184       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01185       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01186       851,  851,  851,  851,  851,  851,  851,  851,  851
01187     } ;
01188 
01189 static yyconst flex_int16_t yy_chk[4160] =
01190     {   0,
01191         0,    1,    1,  248,    1,    2,    2,  107,    2,  267,
01192       267,  267,  267,  248,  248,  253,  253,    1,  107,  253,
01193       107,    2,    3,    3,    3,    3,    3,    3,    3,    3,
01194         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
01195         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
01196         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
01197         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
01198         3,    3,    3,    3,    3,    4,   29,    6,    4,   29,
01199         6,   37,   40,  189,   72,   41,   45,  189,   60,   43,
01200        44,  840,   29,   45,   11,   11,   72,   11,   60,   41,
01201 
01202        37,   40,    4,    4,    4,    6,    4,    4,   43,   44,
01203        11,   75,   45,    4,   11,   11,   75,    4,   41,    4,
01204         4,    4,    4,    5,    5,    5,    5,    5,    5,    5,
01205         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
01206         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
01207         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
01208         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
01209         5,    5,    5,    5,    5,    5,    7,    7,    7,    7,
01210         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
01211         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
01212 
01213         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
01214         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
01215         7,    7,    7,    7,    7,    7,    7,    7,    7,    9,
01216         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
01217         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
01218         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
01219         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
01220         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
01221         9,    9,   12,   12,   58,   12,   58,   73,   13,   13,
01222        47,   13,  729,   58,   14,   14,   78,   14,   12,   13,
01223 
01224        13,   73,   12,   12,   13,   14,   14,   78,  729,   47,
01225        14,   15,   15,   15,   15,   15,   15,   15,   15,   15,
01226        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
01227        15,   15,   15,   15,   15,   21,   23,   23,   61,   23,
01228        71,  184,   71,   76,  186,  803,   61,   23,   23,   76,
01229        61,   23,   23,  184,  186,  184,   21,   21,   21,   21,
01230        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
01231        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
01232        24,   24,   49,   24,   34,   34,   34,   34,   51,  798,
01233        38,   24,   24,   38,   90,   24,   24,   33,   33,   33,
01234 
01235        33,   49,   33,   35,   35,   35,   35,   51,   46,   90,
01236        38,   46,   53,   33,   33,  140,   33,   34,   48,  794,
01237       187,   48,   50,   50,   48,  140,   34,  140,   46,  187,
01238        33,   53,   38,   52,   52,   48,   35,   48,   48,   33,
01239        67,   70,   50,  188,   70,   35,   36,   36,   36,   36,
01240        46,   36,   52,   94,   77,   74,   94,   74,  188,   67,
01241        48,   70,   36,   36,   74,   36,   36,   67,   77,  192,
01242        77,  200,  200,   84,   84,   84,   84,   97,  193,   36,
01243        97,   94,  103,   85,   85,   85,   85,  192,   36,   54,
01244       383,  193,   54,   97,   54,  136,  383,  133,  136,  103,
01245 
01246       133,  201,   54,   54,   84,   54,   54,   54,  103,   54,
01247       259,   54,   54,   54,   85,  136,  201,  133,  112,  259,
01248       100,  112,  446,  100,  116,  102,  123,  116,  102,  123,
01249       446,   54,   55,  256,  112,   55,  100,   55,  379,  133,
01250       116,  102,  123,  256,  137,   55,   55,  137,   55,   55,
01251        55,  379,   55,  100,   55,   55,   55,   69,  102,  297,
01252        69,  191,  100,  129,  137,  191,  129,  102,  297,  145,
01253       147,  148,  145,  147,  148,  463,  191,   69,  190,  129,
01254       145,  145,  190,  194,   69,   69,   69,  194,   69,   69,
01255       147,  148,  190,  463,  190,   69,  292,  298,  292,   69,
01256 
01257       298,   69,   69,   69,   69,   83,   83,   83,   83,   83,
01258        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
01259        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
01260        83,   83,   83,  141,  261,  154,  141,   83,  154,  216,
01261       155,  303,  142,  155,  261,  142,  149,  149,  149,  149,
01262       244,  293,  303,  141,  216,  154,   83,   83,   86,  789,
01263       155,   86,  142,   86,  141,  293,  149,   86,   86,  244,
01264       244,   86,   86,   86,  150,  378,   86,  150,   86,   86,
01265        86,   86,   86,  142,  260,  142,  378,  237,  149,   86,
01266       138,  296,  788,  138,  150,  138,  260,  377,  237,  156,
01267 
01268       237,  377,  156,  138,  138,  296,  138,  138,  138,  294,
01269       138,  294,  138,  138,  138,  139,  526,  150,  139,  156,
01270       139,  158,  302,  163,  158,  302,  163,  164,  139,  139,
01271       164,  139,  139,  139,  526,  139,  295,  139,  139,  139,
01272       158,  158,  156,  163,  295,  295,  139,  164,  166,  166,
01273       166,  166,  183,  195,  196,  183,  195,  196,  531,  166,
01274       166,  214,  214,  214,  214,  531,  242,  246,  166,  242,
01275       246,  343,  183,  195,  196,  251,  265,  225,  251,  265,
01276       225,  257,  242,  246,  257,  343,  305,  265,  265,  300,
01277       166,  251,  214,  339,  183,  195,  196,  219,  305,  300,
01278 
01279       219,  257,  219,  339,  339,  225,  219,  219,  225,  784,
01280       219,  219,  219,  262,  532,  219,  262,  219,  219,  219,
01281       219,  219,  257,  263,  264,  532,  263,  264,  266,  266,
01282       266,  266,  374,  262,  268,  268,  268,  268,  273,  266,
01283       266,  273,  374,  263,  264,  268,  268,  269,  269,  269,
01284       269,  275,  376,  262,  275,  299,  375,  299,  273,  375,
01285       277,  277,  277,  277,  376,  264,  263,  301,  338,  301,
01286       275,  275,  278,  278,  278,  278,  344,  386,  344,  273,
01287       277,  283,  283,  283,  283,  442,  291,  338,  338,  269,
01288       291,  386,  278,  319,  319,  319,  319,  340,  340,  442,
01289 
01290       291,  340,  291,  328,  328,  328,  328,  345,  346,  355,
01291       345,  346,  497,  347,  278,  278,  347,  348,  355,  355,
01292       348,  349,  349,  349,  349,  497,  380,  345,  346,  350,
01293       380,  382,  350,  347,  351,  351,  351,  351,  345,  363,
01294       674,  363,  347,  382,  352,  352,  352,  352,  674,  381,
01295       348,  381,  385,  346,  349,  353,  353,  353,  353,  348,
01296       348,  385,  350,  349,  384,  358,  384,  351,  358,  389,
01297       423,  350,  350,  389,  454,  429,  351,  352,  354,  354,
01298       354,  354,  423,  454,  777,  358,  352,  429,  353,  360,
01299       360,  360,  360,  430,  358,  430,  441,  353,  441,  455,
01300 
01301       361,  361,  361,  361,  366,  366,  366,  366,  451,  455,
01302       451,  354,  367,  367,  367,  367,  368,  368,  368,  368,
01303       354,  456,  360,  770,  366,  371,  371,  371,  371,  457,
01304       452,  360,  360,  361,  452,  456,  368,  388,  388,  388,
01305       388,  453,  361,  457,  768,  453,  366,  403,  403,  403,
01306       403,  459,  460,  462,  367,  459,  460,  462,  368,  404,
01307       404,  404,  404,  405,  405,  405,  405,  403,  388,  407,
01308       407,  407,  407,  410,  410,  410,  410,  411,  411,  411,
01309       411,  458,  521,  405,  412,  412,  412,  412,  465,  496,
01310       407,  766,  465,  496,  410,  458,  521,  765,  411,  413,
01311 
01312       413,  413,  413,  414,  414,  414,  414,  421,  421,  421,
01313       421,  424,  424,  424,  424,  523,  426,  512,  421,  426,
01314       427,  427,  427,  427,  428,  501,  562,  428,  501,  512,
01315       522,  413,  761,  522,  439,  414,  426,  439,  445,  562,
01316       427,  445,  424,  523,  428,  435,  435,  435,  435,  436,
01317       436,  436,  436,  525,  439,  428,  748,  525,  445,  426,
01318       447,  447,  447,  447,  642,  439,  448,  448,  448,  448,
01319       524,  449,  449,  449,  449,  529,  435,  529,  642,  524,
01320       447,  445,  479,  479,  479,  479,  481,  481,  481,  481,
01321       436,  449,  482,  482,  482,  482,  527,  743,  533,  447,
01322 
01323       527,  533,  561,  479,  561,  448,  483,  483,  483,  483,
01324       449,  484,  484,  484,  484,  485,  485,  485,  485,  491,
01325       491,  491,  491,  493,  493,  493,  493,  483,  498,  500,
01326       491,  498,  500,  566,  493,  566,  485,  736,  483,  487,
01327       487,  487,  487,  732,  499,  499,  499,  499,  498,  500,
01328       507,  507,  507,  507,  508,  508,  508,  508,  511,  515,
01329       731,  511,  515,  498,  499,  730,  519,  590,  487,  519,
01330       528,  487,  487,  500,  487,  530,  530,  487,  511,  515,
01331       565,  536,  528,  499,  536,  590,  519,  576,  576,  530,
01332       507,  594,  565,  519,  583,  583,  728,  508,  594,  717,
01333 
01334       515,  536,  511,  539,  539,  539,  539,  546,  546,  546,
01335       546,  547,  547,  547,  547,  548,  548,  548,  548,  549,
01336       549,  549,  549,  563,  587,  589,  563,  564,  546,  585,
01337       564,  592,  547,  587,  716,  589,  548,  720,  575,  582,
01338       549,  575,  582,  563,  585,  720,  592,  564,  571,  571,
01339       571,  571,  563,  572,  572,  572,  572,  579,  575,  582,
01340       579,  588,  588,  588,  588,  549,  550,  550,  550,  550,
01341       641,  564,  641,  599,  599,  599,  599,  579,  701,  571,
01342       700,  582,  575,  635,  635,  643,  579,  600,  600,  600,
01343       600,  645,  588,  599,  643,  550,  769,  769,  572,  550,
01344 
01345       645,  550,  697,  690,  550,  601,  601,  601,  601,  603,
01346       603,  603,  603,  606,  606,  606,  606,  607,  607,  607,
01347       607,  608,  608,  608,  608,  601,  609,  609,  609,  609,
01348       610,  610,  610,  610,  606,  644,  647,  680,  607,  678,
01349       663,  745,  608,  611,  611,  611,  611,  609,  647,  644,
01350       662,  610,  612,  612,  612,  612,  745,  610,  613,  613,
01351       613,  613,  696,  698,  611,  661,  609,  620,  620,  620,
01352       620,  660,  654,  612,  611,  727,  696,  698,  620,  613,
01353       621,  621,  621,  621,  612,  622,  622,  622,  622,  727,
01354       775,  621,  623,  623,  623,  623,  622,  651,  650,  613,
01355 
01356       649,  648,  775,  623,  625,  625,  625,  625,  627,  627,
01357       627,  627,  623,  637,  632,  628,  622,  629,  629,  629,
01358       629,  630,  630,  630,  630,  631,  631,  631,  631,  633,
01359       633,  633,  633,  634,  634,  634,  634,  626,  638,  624,
01360       633,  638,  619,  618,  634,  616,  615,  625,  636,  636,
01361       636,  636,  614,  634,  639,  639,  639,  639,  638,  636,
01362       640,  640,  640,  640,  630,  639,  605,  604,  602,  638,
01363       598,  640,  646,  646,  646,  646,  658,  658,  658,  658,
01364       640,  597,  653,  653,  653,  653,  596,  655,  655,  655,
01365       655,  656,  656,  656,  656,  595,  593,  658,  657,  657,
01366 
01367       657,  657,  653,  646,  652,  652,  652,  652,  655,  652,
01368       653,  591,  656,  586,  584,  581,  655,  652,  652,  657,
01369       652,  652,  652,  652,  652,  580,  652,  652,  652,  659,
01370       659,  659,  659,  711,  774,  656,  711,  774,  657,  578,
01371       664,  664,  664,  664,  665,  665,  665,  665,  577,  574,
01372       659,  664,  573,  711,  774,  665,  667,  667,  667,  667,
01373       668,  668,  668,  668,  669,  669,  669,  669,  570,  762,
01374       659,  668,  762,  569,  711,  669,  670,  670,  670,  670,
01375       671,  671,  671,  671,  672,  672,  672,  672,  568,  762,
01376       567,  671,  673,  673,  673,  673,  670,  560,  559,  762,
01377 
01378       671,  558,  556,  673,  672,  675,  675,  675,  675,  555,
01379       554,  553,  673,  676,  676,  676,  676,  677,  677,  677,
01380       677,  679,  679,  679,  679,  681,  681,  681,  681,  552,
01381       682,  682,  682,  682,  683,  683,  683,  683,  675,  684,
01382       684,  684,  684,  551,  675,  545,  676,  675,  702,  702,
01383       702,  702,  676,  544,  691,  676,  677,  691,  543,  677,
01384       679,  542,  541,  540,  681,  682,  538,  683,  685,  685,
01385       685,  685,  684,  683,  691,  537,  683,  535,  684,  534,
01386       520,  684,  686,  686,  686,  686,  687,  687,  687,  687,
01387       518,  517,  516,  686,  688,  688,  688,  688,  691,  514,
01388 
01389       513,  685,  510,  509,  506,  688,  687,  685,  744,  841,
01390       685,  744,  841,  505,  688,  689,  689,  689,  689,  692,
01391       692,  692,  692,  504,  503,  502,  689,  495,  744,  841,
01392       692,  694,  694,  694,  694,  695,  695,  695,  695,  492,
01393       490,  841,  694,  489,  488,  486,  695,  703,  703,  703,
01394       703,  694,  744,  478,  785,  695,  477,  785,  689,  699,
01395       699,  699,  699,  476,  699,  475,  474,  703,  704,  704,
01396       704,  704,  699,  699,  785,  699,  699,  699,  699,  699,
01397       473,  699,  699,  699,  706,  706,  706,  706,  704,  705,
01398       705,  705,  705,  472,  705,  706,  471,  708,  708,  708,
01399 
01400       708,  470,  469,  785,  706,  468,  705,  467,  705,  705,
01401       707,  707,  707,  707,  466,  707,  464,  708,  461,  450,
01402       444,  707,  443,  707,  707,  708,  707,  707,  707,  440,
01403       707,  438,  707,  707,  707,  709,  709,  709,  709,  710,
01404       710,  710,  710,  712,  712,  712,  712,  713,  713,  713,
01405       713,  714,  714,  714,  714,  715,  715,  715,  715,  710,
01406       437,  434,  433,  709,  712,  432,  431,  710,  713,  425,
01407       422,  420,  714,  418,  417,  416,  715,  415,  713,  409,
01408       408,  406,  714,  718,  718,  718,  718,  401,  712,  719,
01409       719,  719,  719,  400,  718,  399,  398,  715,  397,  396,
01410 
01411       719,  721,  721,  721,  721,  722,  722,  722,  722,  395,
01412       394,  393,  721,  392,  391,  390,  722,  723,  723,  723,
01413       723,  724,  724,  724,  724,  387,  373,  372,  723,  370,
01414       369,  365,  724,  725,  725,  725,  725,  723,  364,  357,
01415       356,  724,  342,  341,  725,  726,  726,  726,  726,  733,
01416       733,  733,  733,  725,  337,  336,  726,  734,  734,  734,
01417       734,  735,  735,  735,  735,  726,  737,  737,  737,  737,
01418       335,  334,  735,  746,  746,  746,  746,  737,  733,  738,
01419       738,  738,  738,  332,  734,  331,  737,  330,  329,  327,
01420       738,  739,  739,  739,  739,  740,  740,  740,  740,  738,
01421 
01422       325,  324,  739,  323,  746,  322,  740,  741,  741,  741,
01423       741,  742,  742,  742,  742,  321,  320,  318,  741,  317,
01424       316,  315,  742,  314,  739,  313,  312,  311,  740,  771,
01425       771,  771,  771,  739,  310,  309,  308,  740,  749,  749,
01426       749,  749,  750,  750,  750,  750,  307,  306,  304,  741,
01427       747,  747,  747,  747,  290,  747,  289,  288,  749,  287,
01428       286,  747,  750,  747,  747,  285,  747,  747,  747,  284,
01429       747,  771,  747,  747,  747,  751,  751,  751,  751,  282,
01430       751,  281,  752,  752,  752,  752,  280,  764,  764,  764,
01431       764,  279,  751,  752,  751,  751,  753,  753,  753,  753,
01432 
01433       276,  753,  795,  795,  795,  795,  274,  753,  764,  753,
01434       753,  272,  753,  753,  753,  270,  753,  258,  753,  753,
01435       753,  754,  754,  754,  754,  755,  755,  755,  755,  255,
01436       764,  252,  754,  247,  243,  240,  755,  756,  756,  756,
01437       756,  754,  758,  758,  758,  758,  239,  236,  756,  759,
01438       759,  759,  759,  758,  233,  232,  231,  756,  227,  226,
01439       759,  224,  758,  223,  763,  763,  763,  763,  221,  759,
01440       760,  760,  760,  760,  218,  760,  802,  802,  802,  802,
01441       217,  760,  215,  760,  760,  763,  760,  760,  760,  213,
01442       760,  212,  760,  760,  760,  767,  767,  767,  767,  763,
01443 
01444       772,  772,  772,  772,  211,  210,  767,  780,  780,  780,
01445       780,  772,  209,  208,  207,  767,  206,  205,  780,  204,
01446       772,  776,  776,  776,  776,  203,  776,  800,  800,  800,
01447       800,  202,  776,  199,  776,  776,  198,  776,  776,  776,
01448       197,  776,  185,  776,  776,  776,  779,  182,  800,  779,
01449       181,  779,  180,  179,  781,  781,  781,  781,  178,  779,
01450       779,  177,  779,  779,  779,  781,  779,  800,  779,  779,
01451       779,  175,  174,  173,  781,  782,  782,  782,  782,  172,
01452       171,  786,  786,  786,  786,  170,  782,  169,  168,  167,
01453       787,  787,  787,  787,  162,  782,  783,  783,  783,  783,
01454 
01455       161,  783,  786,  809,  809,  809,  809,  783,  159,  783,
01456       783,  787,  783,  783,  783,  152,  783,  787,  783,  783,
01457       783,  144,  786,  790,  790,  790,  790,  791,  791,  791,
01458       791,  143,  135,  134,  790,  132,  130,  128,  791,  792,
01459       792,  792,  792,  793,  793,  793,  793,  120,  114,  110,
01460       792,  109,  106,   98,  793,   95,   93,  801,  801,  801,
01461       801,  804,  804,  804,  804,   91,  808,  808,  808,  808,
01462       791,  797,  804,   89,  797,   88,  797,  808,  801,  806,
01463       806,  806,  806,   87,  797,  797,   82,  797,  797,  797,
01464       806,  797,   81,  797,  797,  797,  799,  799,  799,  799,
01465 
01466        80,  799,  801,  807,  807,  807,  807,   79,  808,   68,
01467        66,   65,  806,  799,  807,  799,  799,  810,  810,  810,
01468       810,  806,  811,  811,  811,  811,   64,   63,  810,  812,
01469       812,  812,  812,  811,   62,   59,  807,   57,   56,   42,
01470       812,  813,  813,  813,  813,  807,  814,  814,  814,  814,
01471        39,   32,  813,   31,   27,  811,  815,  815,  815,  815,
01472         0,    0,  812,    0,  811,  816,  816,  816,  816,    0,
01473         0,  812,  818,  818,  818,  818,  815,  814,    0,    0,
01474       813,  819,  819,  819,  819,  816,  817,  817,  817,  817,
01475         0,  817,  820,  820,  820,  820,  824,  824,  824,  824,
01476 
01477         0,  819,    0,  817,    0,  817,  817,  821,  821,  821,
01478       821,    0,  821,  826,  826,  826,  826,  824,  825,  825,
01479       825,  825,    0,    0,  821,    0,  821,  821,  823,    0,
01480         0,  823,    0,  823,  827,  827,  827,  827,    0,  825,
01481         0,  823,  823,    0,  823,  823,  823,    0,  823,  825,
01482       823,  823,  823,  828,  828,  828,  828,    0,  828,  831,
01483       831,  831,  831,    0,    0,    0,  828,  828,    0,  828,
01484       828,  828,    0,  828,    0,  828,  828,  828,  830,    0,
01485       831,  830,    0,  830,  832,  832,  832,  832,    0,    0,
01486         0,  830,  830,    0,  830,  830,  830,    0,  830,    0,
01487 
01488       830,  830,  830,    0,    0,  832,  833,  833,  833,  833,
01489       834,  834,  834,  834,  835,  835,  835,  835,  836,  836,
01490       836,  836,  838,  838,  838,  838,    0,  839,  839,  839,
01491       839,    0,    0,    0,  835,    0,    0,    0,  836,  842,
01492       842,  842,  842,  838,    0,    0,    0,  833,  839,  843,
01493       843,  843,  843,    0,    0,  835,    0,    0,    0,  836,
01494       837,  837,  837,  837,    0,  837,    0,    0,    0,  843,
01495         0,    0,    0,  837,  837,    0,  837,  837,  837,    0,
01496       837,    0,  837,  837,  837,  844,  844,  844,  844,  845,
01497       845,  845,  845,    0,    0,    0,    0,    0,    0,    0,
01498 
01499         0,    0,    0,    0,    0,    0,    0,    0,    0,  845,
01500       846,  846,  846,  846,    0,  846,    0,    0,    0,    0,
01501         0,    0,    0,    0,    0,    0,    0,  846,    0,  846,
01502       846,  848,    0,    0,  848,    0,  848,    0,    0,    0,
01503         0,    0,    0,    0,  848,  848,    0,  848,  848,  848,
01504         0,  848,    0,  848,  848,  848,  850,    0,    0,  850,
01505         0,  850,    0,    0,    0,    0,    0,    0,    0,  850,
01506       850,    0,  850,  850,  850,    0,  850,    0,  850,  850,
01507       850,  852,  852,  852,  852,  852,  852,  852,  852,  852,
01508       852,  852,  852,  852,  852,  852,  852,  852,  852,  852,
01509 
01510       852,  852,  852,  853,  853,  853,  853,  853,  853,  853,
01511       853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
01512       853,  853,  853,  853,  853,  854,  854,  854,  854,  854,
01513       854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
01514       854,  854,  854,  854,  854,  854,  854,  855,  855,  855,
01515       855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
01516       855,  855,  855,  855,  855,  855,  855,  855,  855,  856,
01517       856,  856,  856,  856,    0,    0,    0,    0,    0,    0,
01518       856,  856,  856,    0,    0,  856,  856,  856,  856,  856,
01519       857,  857,  857,  857,  857,    0,    0,    0,    0,    0,
01520 
01521         0,    0,    0,    0,    0,    0,  857,  857,  857,  857,
01522       857,  858,    0,    0,  858,  858,    0,    0,    0,  858,
01523       858,    0,  858,    0,  858,  858,    0,  858,  858,  858,
01524       858,  858,  859,  859,  859,  859,  859,  860,    0,    0,
01525       860,    0,    0,    0,    0,    0,    0,    0,    0,  860,
01526       860,  860,    0,  860,  860,  860,  860,  860,  861,    0,
01527         0,  861,  861,    0,    0,    0,  861,  861,    0,  861,
01528       861,  861,  861,    0,  861,  861,  861,  861,  861,  862,
01529       862,  862,  862,  862,  862,  862,  862,  862,  862,  862,
01530       862,  862,  862,  862,  862,  862,  862,    0,  862,  863,
01531 
01532         0,    0,  863,  863,  863,    0,    0,  863,  863,  863,
01533         0,    0,  863,  863,  863,  863,  863,  863,  863,  863,
01534       864,    0,    0,  864,  864,  864,    0,    0,  864,  864,
01535       864,    0,    0,    0,  864,  864,    0,    0,  864,  865,
01536         0,    0,    0,    0,    0,    0,    0,    0,  865,    0,
01537         0,  865,  865,  865,  865,  865,  866,    0,    0,    0,
01538         0,    0,    0,    0,    0,    0,  866,    0,    0,  866,
01539       866,  866,  866,  866,  867,    0,    0,  867,  867,  867,
01540         0,    0,  867,  867,  867,  867,    0,    0,  867,  867,
01541         0,    0,    0,  867,  868,    0,    0,  868,  868,  868,
01542 
01543       868,  868,  869,  869,  869,  869,  869,  869,  869,  869,
01544       869,  869,  869,  869,  869,  869,  869,    0,    0,  869,
01545       869,  869,  869,  869,  870,  870,  870,  870,  870,  870,
01546       870,    0,    0,  870,  870,  870,  870,  870,  870,  870,
01547       870,  870,  870,  870,  870,  870,  871,    0,    0,    0,
01548       871,  871,    0,  871,    0,  871,    0,    0,  871,  871,
01549       871,  871,  871,  872,  872,    0,  872,  872,  872,  872,
01550         0,    0,  872,  872,    0,  872,  872,  872,  872,  872,
01551       872,  872,  872,  872,  872,  873,  873,    0,  873,  873,
01552       873,  873,  873,  873,  873,  873,  873,  873,  873,  873,
01553 
01554       873,  873,  873,  873,  873,  873,  873,  874,    0,    0,
01555       874,  874,    0,    0,    0,  874,  874,    0,  874,  874,
01556       874,  874,    0,  874,  874,  874,  874,  874,  875,    0,
01557         0,  875,    0,    0,  875,  875,    0,    0,    0,    0,
01558       875,  875,    0,    0,  875,  875,  875,  875,  875,  876,
01559         0,    0,  876,  876,  876,  876,  876,  877,    0,    0,
01560       877,  877,    0,    0,  877,  877,  877,  878,  878,    0,
01561       878,  878,  878,  878,  878,  878,  878,  878,  878,  878,
01562       878,  878,  878,  878,  878,  878,  878,  878,  878,  879,
01563       879,    0,  879,  879,  879,  879,  879,  879,  879,  879,
01564 
01565       879,  879,  879,  879,  879,  879,  879,  879,  879,  879,
01566       879,  880,    0,    0,  880,  880,    0,    0,  880,  880,
01567       880,  881,  881,  881,  881,  881,  881,  881,  881,  881,
01568       881,  881,  881,  881,  881,  881,  881,  881,  881,  881,
01569       881,  881,  881,  882,  882,  882,  882,  882,  882,  882,
01570       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
01571       882,  882,  882,  882,  882,  883,  883,    0,  883,  883,
01572       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
01573       883,  883,  883,  883,  883,  883,  883,  884,  884,  884,
01574       884,    0,    0,  884,  884,    0,    0,    0,    0,  884,
01575 
01576       884,    0,    0,  884,  884,  884,  884,  884,  885,  885,
01577       885,  885,  885,    0,    0,    0,    0,    0,    0,    0,
01578         0,    0,    0,  885,  885,  885,  885,  885,  885,  886,
01579       886,  886,  886,  886,    0,    0,    0,  886,  886,    0,
01580       886,    0,  886,    0,  886,  886,  886,  886,  886,  886,
01581       887,  887,  887,  887,  887,    0,    0,    0,  887,  887,
01582         0,  887,  887,  887,  887,    0,  887,  887,  887,  887,
01583       887,  888,  888,  888,  888,  888,    0,    0,    0,  888,
01584       888,    0,  888,  888,  888,  888,    0,  888,  888,  888,
01585       888,  888,  889,  889,  889,  889,  889,    0,    0,    0,
01586 
01587         0,    0,    0,    0,    0,    0,  889,    0,  889,  889,
01588       889,  889,  889,  890,  890,  890,  890,  890,    0,    0,
01589         0,    0,    0,    0,    0,  890,  890,  890,    0,  890,
01590       890,  890,  890,  890,  891,  891,  891,  891,  891,    0,
01591       891,    0,  891,  891,    0,  891,    0,  891,  891,    0,
01592       891,  891,  891,  891,  891,  892,  892,  892,  892,  892,
01593         0,  892,    0,  892,  892,    0,  892,  892,  892,  892,
01594         0,  892,  892,  892,  892,  892,  893,  893,  893,  893,
01595       893,    0,  893,    0,  893,  893,    0,  893,  893,  893,
01596       893,    0,  893,  893,  893,  893,  893,  894,  894,  894,
01597 
01598       894,  894,    0,    0,    0,    0,    0,    0,    0,    0,
01599         0,  894,    0,  894,  894,  894,  894,  894,  895,  895,
01600       895,  895,  895,    0,    0,    0,    0,    0,    0,    0,
01601       895,  895,  895,    0,  895,  895,  895,  895,  895,  896,
01602       896,  896,  896,  896,    0,  896,    0,  896,  896,    0,
01603       896,    0,  896,    0,    0,  896,  896,  896,  896,  896,
01604       897,  897,  897,  897,  897,    0,  897,    0,  897,  897,
01605         0,  897,  897,  897,  897,    0,  897,  897,  897,  897,
01606       897,  898,    0,    0,    0,  898,  898,    0,  898,    0,
01607       898,    0,    0,  898,  898,  898,  898,  898,  899,    0,
01608 
01609         0,  899,  899,    0,    0,    0,  899,  899,    0,  899,
01610       899,  899,  899,    0,  899,  899,  899,  899,  899,  900,
01611       900,  900,  900,  900,    0,    0,    0,    0,    0,    0,
01612         0,  900,  900,  900,    0,  900,  900,  900,  900,  900,
01613       901,  901,  901,  901,  901,    0,    0,    0,    0,    0,
01614         0,    0,    0,    0,  901,    0,  901,  901,  901,  901,
01615       901,  902,  902,  902,  902,  902,    0,    0,    0,    0,
01616         0,    0,    0,  902,  902,  902,    0,  902,  902,  902,
01617       902,  902,  903,  903,  903,  903,  903,    0,    0,    0,
01618         0,    0,    0,    0,    0,    0,    0,    0,  903,  903,
01619 
01620       903,  903,  903,  904,    0,    0,    0,  904,  904,    0,
01621       904,    0,  904,    0,    0,  904,  904,  904,  904,  904,
01622       905,    0,    0,  905,  905,    0,    0,    0,  905,  905,
01623         0,  905,  905,  905,  905,    0,  905,  905,  905,  905,
01624       905,  906,  906,  906,  906,  906,    0,    0,    0,    0,
01625         0,    0,    0,    0,    0,    0,    0,  906,  906,  906,
01626       906,  906,  907,  907,  907,  907,  907,    0,    0,    0,
01627       907,  907,    0,  907,    0,  907,    0,    0,  907,  907,
01628       907,  907,  907,  908,  908,  908,  908,  908,    0,    0,
01629         0,  908,  908,    0,  908,  908,  908,  908,    0,  908,
01630 
01631       908,  908,  908,  908,  909,  909,  909,  909,  909,    0,
01632         0,    0,  909,  909,    0,  909,    0,  909,    0,  909,
01633       909,  909,  909,  909,  909,  910,  910,  910,  910,  910,
01634         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
01635         0,  910,  910,  910,  910,  910,  911,  911,  911,  911,
01636       911,    0,    0,    0,    0,    0,    0,    0,  911,  911,
01637       911,    0,  911,  911,  911,  911,  911,  912,    0,    0,
01638         0,  912,  912,    0,  912,    0,  912,    0,    0,  912,
01639       912,  912,  912,  912,  913,    0,    0,  913,  913,    0,
01640         0,    0,  913,  913,    0,  913,  913,  913,  913,    0,
01641 
01642       913,  913,  913,  913,  913,  851,  851,  851,  851,  851,
01643       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01644       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01645       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01646       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
01647       851,  851,  851,  851,  851,  851,  851,  851,  851
01648     } ;
01649 
01650 static yy_state_type yy_last_accepting_state;
01651 static char *yy_last_accepting_cpos;
01652 
01653 extern int vhdlcodeYY_flex_debug;
01654 int vhdlcodeYY_flex_debug = 0;
01655 
01656 /* The intent behind this definition is that it'll catch
01657  * any uses of REJECT which flex missed.
01658  */
01659 #define REJECT reject_used_but_not_detected
01660 #define yymore() yymore_used_but_not_detected
01661 #define YY_MORE_ADJ 0
01662 #define YY_RESTORE_YY_MORE_OFFSET
01663 char *vhdlcodeYYtext;
01664 #line 1 "vhdlcode.l"
01665 /******************************************************************************
01666  *
01667  * Copyright (C) 1997-2008 by Dimitri van Heesch.
01668  *
01669  * Permission to use, copy, modify, and distribute this software and its
01670  * documentation under the terms of the GNU General Public License is hereby 
01671  * granted. No representations are made about the suitability of this software 
01672  * for any purpose. It is provided "as is" without express or implied warranty.
01673  * See the GNU General Public License for more details.
01674  *
01675  * Documents produced by Doxygen are derivative works derived from the
01676  * input used in their production; they are not affected by this license.
01677  *
01678  */
01679 /******************************************************************************
01680  * Parser for syntax hightlighting and references for vhdl subset
01681  * written by M. Kreis
01682  * supports VHDL-87
01683  * does not support all keywords of VHDL '93 (impure function/shared variables grouping ..)
01684  * and VHDL-AMS 
01685  ******************************************************************************/
01686 #line 24 "vhdlcode.l"
01687 
01688 /*
01689  *        includes
01690  */
01691 #include <stdio.h>
01692 #include <assert.h>
01693 #include <ctype.h>
01694 #include <qregexp.h>
01695 #include <qdir.h>
01696 #include <qstringlist.h>
01697 
01698 #include "qtbc.h"
01699 #include "entry.h"
01700 #include "doxygen.h"
01701 #include "message.h"
01702 #include "outputlist.h"
01703 #include "util.h"
01704 #include "membername.h"
01705 #include "searchindex.h"
01706 #include "vhdldocgen.h"
01707 
01708 #define YY_NEVER_INTERACTIVE 1
01709   
01710 // Toggle for some debugging info
01711 //#define DBG_CTX(x) fprintf x
01712 #define DBG_CTX(x) do { } while(0)
01713   
01714 
01715 /* -----------------------------------------------------------------
01716  *        statics
01717  */
01718 
01719 // ----------------- <vhdl> ----------------------------------
01720 
01721 //static bool isPackBody=FALSE;
01722 static bool isFuncProto=FALSE;
01723 static bool isComponent=FALSE;
01724 static bool isPackageBody=FALSE;
01725 static bool isStartMap;
01726 static bool isProto = FALSE;
01727 static bool isStripCode = FALSE;
01728 
01729 static QCString   g_PrevString;
01730 static QCString   g_CurrClass;
01731 static QDict<QCString>g_vhdlKeyDict;   
01732 static QCString   g_tempClass;
01733 static QCString   g_tempComp;
01734 static QCString   g_PortMapComp;
01735 static MemberDef *g_vhdlMember;
01736 static QCString   g_FuncProto;
01737 
01738 //-----------------------------------------------------------
01739   
01740 static CodeOutputInterface * g_code;
01741 static QCString      g_curClassName;
01742 static QCString      g_parmType;
01743 static QCString      g_parmName;
01744 static const char *  g_inputString;     
01745 static int           g_inputPosition;   
01746 static int           g_inputLines;      
01747 static int           g_yyLineNr;        
01748 static bool          g_needsTermination;
01749 
01750 static QCString      g_exampleName;
01751 static QCString      g_exampleFile;
01752 
01753 static QCString      g_type;
01754 static QCString      g_name;
01755 static QCString      g_args;
01756 static QCString      g_classScope;
01757    
01758 static QCString      g_CurrScope;
01759    
01760 static FileDef *     g_sourceFileDef;
01761 static Definition *  g_currentDefinition;
01762 static MemberDef *   g_currentMemberDef;
01763 static bool          g_includeCodeFragment;
01764 static const char *  g_currentFontClass;
01765 
01766 static bool          g_lexInit = FALSE;
01767 static int           g_braceCount=0;
01768 
01769 
01770 static void writeFont(const char *s,const char* text);
01771 static void generateMemLink(CodeOutputInterface &ol,QCString &clName,QCString& memberName);
01772 static bool writeColoredWord(QCString& word );
01773 static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool typeOnly=FALSE);
01774 static void endFontClass();
01775 
01776 //-------------------------------------------------------------------
01777 
01778 
01779 static void setCurrentDoc(const QCString &name,const QCString &base,const QCString &anchor="")
01780 {
01781   static bool searchEngineEnabled=Config_getBool("SEARCHENGINE");
01782   if (searchEngineEnabled)
01783   {
01784     Doxygen::searchIndex->setCurrentDoc(name,base,anchor);
01785   }
01786 }
01787 
01788 
01789 static void addToSearchIndex(const char *text)
01790 {
01791   static bool searchEngineEnabled=Config_getBool("SEARCHENGINE");
01792   if (searchEngineEnabled)
01793   {
01794     Doxygen::searchIndex->addWord(text,FALSE);
01795   }
01796 }
01797 
01798 
01803 static void startCodeLine()
01804 {
01805   //if (g_currentFontClass) { g_code->endFontClass(); }
01806   if (g_sourceFileDef)
01807   {
01808     //QCString lineNumber,lineAnchor;
01809     //lineNumber.sprintf("%05d",g_yyLineNr);
01810     //lineAnchor.sprintf("l%05d",g_yyLineNr);
01811     //  if ((g_yyLineNr % 500) == 0) 
01812     //         fprintf(stderr,"\n starting Line %d:",g_yyLineNr);
01813     Definition *d   = g_sourceFileDef->getSourceDefinition(g_yyLineNr);
01814     //printf("startCodeLine %d d=%s\n", g_yyLineNr,d ? d->name().data() : "<null>");
01815     if (!g_includeCodeFragment && d)
01816     {
01817       g_currentDefinition = d;
01818       g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
01819       if (!g_tempComp.isEmpty() && g_currentMemberDef )
01820       {
01821         //ClassDef *cf=VhdlDocGen::getClass(g_tempComp.data());
01822         QCString nn=g_currentMemberDef->name();
01823         MemberDef* mdeff=VhdlDocGen::findMember(g_tempComp,nn);
01824         if (mdeff)
01825         {
01826           g_currentMemberDef=mdeff;
01827         }
01828       }
01829 
01830       g_parmType.resize(0);
01831       g_parmName.resize(0);
01832       QCString lineAnchor;
01833       lineAnchor.sprintf("l%05d",g_yyLineNr);
01834       if (g_currentMemberDef)
01835       {
01836         g_code->writeLineNumber(g_currentMemberDef->getReference(),
01837                                 g_currentMemberDef->getOutputFileBase(),
01838                                 g_currentMemberDef->anchor(),g_yyLineNr);
01839         setCurrentDoc(g_currentMemberDef->qualifiedName(),
01840                       g_sourceFileDef->getSourceFileBase(),
01841                       lineAnchor);
01842       }
01843       else if (d->isLinkableInProject())
01844       {
01845         g_code->writeLineNumber(d->getReference(),
01846                                 d->getOutputFileBase(),
01847                                 0,g_yyLineNr);
01848         setCurrentDoc(d->qualifiedName(),
01849                       g_sourceFileDef->getSourceFileBase(),
01850                       lineAnchor);
01851       }
01852     }
01853     else
01854     {
01855       g_code->writeLineNumber(0,0,0,g_yyLineNr);
01856     }
01857   }
01858   g_code->startCodeLine(); 
01859   if (g_currentFontClass)
01860   {
01861     g_code->startFontClass(g_currentFontClass);
01862   }
01863 }
01864 
01865 static void endCodeLine()
01866 {
01867   if (g_currentFontClass) { g_code->endFontClass(); }
01868   g_code->endCodeLine();
01869 }
01870 
01876 static void writeWord(const char *word,const char* curr_class=0,bool classLink=FALSE)
01877 {
01878   bool found=FALSE;
01879   QCString temp; 
01880   QCString tclass(curr_class);
01881   QCString ttt(word);
01882   if (ttt.isEmpty()) return;
01883   for (unsigned int j=0;j<ttt.length();j++)
01884   {
01885     char c=ttt.at(j);
01886     if (c==' '|| c==',' || c==';' || c==':' || c=='(' || c==')' || c=='\r' || c=='\t')
01887     {
01888       if (found)
01889       {
01890         if (!writeColoredWord(temp)) // is it a keyword ?
01891         {
01892           //if (VhdlDocGen::findKeyWord(temp))
01893           // writeFont("vhdlkeyword",temp.data());
01894           //printf("writeWord: %s\n",temp.data());
01895           if (!tclass.isEmpty())
01896           {
01897             if (!classLink)
01898             {
01899               generateMemLink(*g_code,tclass,temp);
01900             }
01901             else
01902             {
01903               generateClassOrGlobalLink(*g_code,temp);
01904             }
01905           }
01906           else                                                                          
01907           {
01908             g_code->codify(temp.data());
01909           }
01910         }
01911         temp.resize(0);
01912         found=FALSE;
01913       }
01914 
01915       char cc[2];
01916       cc[0]=c;
01917       cc[1]=0;
01918       g_code->codify(cc);
01919     }
01920     else
01921     {
01922       found=TRUE;
01923       temp+=c;
01924     }
01925   } // for
01926 
01927   if (!temp.isEmpty())
01928   {
01929     if (!writeColoredWord(temp))
01930     {
01931       if (!tclass.isEmpty())
01932       {
01933         if (!classLink)
01934         {
01935           generateMemLink(*g_code,tclass,temp); // generateMemLink(*g_code,g_CurrClass,left); 
01936         }
01937         else
01938         {
01939           generateClassOrGlobalLink(*g_code,temp);
01940         }
01941       }
01942       else                 
01943       {
01944         g_code->codify(temp.data());
01945       }
01946     }
01947   }
01948 }// writeWord
01949 
01950 
01954 static void codifyLines(const char *text,const char *cl=0,bool classlink=FALSE)
01955 {
01956  // printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text);
01957   const char *p=text,*sp=p;
01958   char c;
01959   bool done=FALSE;
01960   while (!done)
01961   {
01962     sp=p;
01963     while ((c=*p++) && c!='\n');
01964     if (c=='\n')
01965     {
01966       g_yyLineNr++;
01967       QCString line = sp;
01968       line = line.left(p-sp-1);
01969       //*(p-1)='\0';
01970       //g_code->codify(sp);
01971       writeWord(line,cl,classlink);
01972       endCodeLine();
01973       if (g_yyLineNr<g_inputLines) 
01974       {
01975         startCodeLine();
01976       }
01977     }
01978     else
01979     {
01980       //g_code->codify(sp);
01981       writeWord(sp,cl,classlink);
01982       done=TRUE;
01983     }
01984   }
01985 }
01986 
01991 static void writeMultiLineCodeLink(CodeOutputInterface &ol,
01992                   const char *ref,const char *file,
01993                   const char *anchor,const char *text,
01994                   const char *tooltip)
01995 {
01996   bool done=FALSE;
01997   char *p=(char *)text;
01998   while (!done)
01999   {
02000     char *sp=p;
02001     char c;
02002     while ((c=*p++) && c!='\n');
02003     if (c=='\n')
02004     {
02005       g_yyLineNr++;
02006       *(p-1)='\0';
02007       // printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
02008       ol.writeCodeLink(ref,file,anchor,sp,tooltip);
02009       endCodeLine();
02010       if (g_yyLineNr<g_inputLines) 
02011       {
02012         startCodeLine();
02013       }
02014     }
02015     else
02016     {
02017       ol.writeCodeLink(ref,file,anchor,sp,tooltip);
02018       done=TRUE;
02019     }
02020   }
02021 }
02022 
02023 static void setParameterList(MemberDef *md)
02024 {
02025   g_classScope = md->getClassDef() ? md->getClassDef()->name().data() : "";
02026   LockingPtr<ArgumentList> al = md->argumentList();
02027   if (al==0) return; 
02028   Argument *a = al->first();
02029   while (a)
02030   {
02031     g_parmName = a->name.copy();
02032     g_parmType = a->type.copy();
02033     int i = g_parmType.find('*');
02034     if (i!=-1) g_parmType = g_parmType.left(i);
02035     i = g_parmType.find('&');
02036     if (i!=-1) g_parmType = g_parmType.left(i);
02037     g_parmType.stripPrefix("const ");
02038     g_parmType=g_parmType.stripWhiteSpace();
02039    // g_theVarContext.addVariable(g_parmType,g_parmName);
02040     a = al->next();
02041   }
02042 }
02043 
02044 
02048 static void generateFuncLink(CodeOutputInterface &ol,MemberDef* mdef)
02049 {
02050 
02051   //printf("generateFuncLink(FuncName=%s)\n",mdef->name().data());
02052   QCString memberName=mdef->name();
02053 
02054   if (mdef && mdef->isLinkable()) // is it a linkable class
02055   {
02056     writeMultiLineCodeLink(ol,mdef->getReference(),
02057                               mdef->getOutputFileBase(),
02058                               mdef->anchor(),
02059                               mdef->name(),
02060                               mdef->briefDescriptionAsTooltip());
02061     addToSearchIndex(memberName);
02062     return;
02063   }
02064   ol.linkableSymbol(g_yyLineNr,memberName,0,g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
02065   codifyLines(memberName.data());
02066   addToSearchIndex(memberName);
02067 } // generateFuncLink
02068 
02069 
02070 static void generateMemLink(CodeOutputInterface &ol,QCString &clName,QCString& memberName)
02071 {
02072   if (clName.isEmpty() || memberName.isEmpty()) return; 
02073   QCString className=clName;
02074 
02075   MemberDef *md=0;
02076   //MemberDef *comp=0;
02077   //bool isLocal=FALSE;
02078 
02079   md=VhdlDocGen::findMember(className,memberName);
02080   ClassDef *po=VhdlDocGen::getClass(className.data());
02081 
02082   if (md==0 && po && (VhdlDocGen::VhdlClasses)po->protection()==VhdlDocGen::PACKBODYCLASS) 
02083   {
02084     QCString temp=className;//.stripPrefix("_");
02085     temp.stripPrefix("_");
02086     md=VhdlDocGen::findMember(temp,memberName);
02087   }
02088 
02089   if (md && md->isLinkable()) // is it a linkable class
02090   {
02091     writeMultiLineCodeLink(ol,md->getReference(),
02092                               md->getOutputFileBase(),
02093                               md->anchor(),
02094                               memberName,
02095                               md->briefDescriptionAsTooltip());
02096     addToSearchIndex(memberName);
02097     return;
02098   }
02099   // nothing found, just write out the word
02100   ol.linkableSymbol(g_yyLineNr,memberName,0,g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
02101   codifyLines(memberName.data());
02102   addToSearchIndex(memberName);
02103 }// generateMemLink
02104 
02105 
02106 static void generateClassOrGlobalLink(CodeOutputInterface &ol,const char *clName, bool /*typeOnly*/)
02107 {
02108   QCString className=clName;
02109 
02110   if (className.isEmpty()) return;
02111 
02112   ClassDef *cd=0;
02113   //MemberDef *md=0;
02114   //bool isLocal=FALSE;
02115   className.stripPrefix("_");
02116   cd = getClass(className.data()); 
02117   while (cd)
02118   {
02119     //className.stripPrefix("_");
02120     QCString temp(clName);
02121     temp.stripPrefix("_");
02122     if (cd && cd->isLinkable()) // is it a linkable class
02123     {
02124       //if ((VhdlDocGen::VhdlClasses)cd->protection()==VhdlDocGen::ARCHITECTURECLASS)
02125       //{
02126       //  temp=VhdlDocGen::getClassName(cd);
02127       //}
02128       ol.linkableSymbol(g_yyLineNr,temp,cd,
02129                         g_currentMemberDef ? 
02130                         g_currentMemberDef : 
02131                         g_currentDefinition);
02132       writeMultiLineCodeLink(ol,cd->getReference(),
02133                                 cd->getOutputFileBase(),
02134                                 0,
02135                                 temp,
02136                                 cd->briefDescriptionAsTooltip());
02137       addToSearchIndex(className);
02138       return;
02139     }
02140     Definition *d = cd->getOuterScope();
02141     if (d && d->definitionType()==Definition::TypeClass)
02142     {
02143       cd = (ClassDef*)d;
02144     }
02145     else
02146     {
02147       cd = 0;
02148     }
02149   }
02150 
02151   // nothing found, just write out the word
02152   ol.linkableSymbol(g_yyLineNr,clName,0,g_currentMemberDef?g_currentMemberDef:g_currentDefinition);
02153   codifyLines(clName);
02154   addToSearchIndex(clName);
02155 }// generateClasss or global link
02156 
02157 
02159 static int countLines()
02160 {
02161   const char *p=g_inputString;
02162   char c;
02163   int count=1;
02164   while ((c=*p)) 
02165   { 
02166     p++ ; 
02167     if (c=='\n') count++;  
02168   }
02169   if (p>g_inputString && *(p-1)!='\n') 
02170   { // last line does not end with a \n, so we add an extra
02171     // line and explicitly terminate the line after parsing.
02172     count++, 
02173     g_needsTermination=TRUE; 
02174   } 
02175   return count;
02176 }
02177 
02178 static void endFontClass()
02179 {
02180   if (g_currentFontClass)
02181   {
02182     g_code->endFontClass();
02183     g_currentFontClass=0;
02184   }
02185 }
02186 
02187 static void startFontClass(const char *s)
02188 {
02189   if (s==0) return;
02190   endFontClass();
02191   g_code->startFontClass(s);
02192   g_currentFontClass=s;
02193 }
02194 
02195 static void writeFont(const char *s,const char* text)
02196 {
02197   if (s==0) return;
02198   g_code->startFontClass(s);
02199   g_code->codify(text);
02200   g_code->endFontClass();
02201 }
02202 
02203 //----------------------------------------------------------------------------
02204 
02205 static void appStringLower(QCString& qcs,const char* text)
02206 {
02207   qcs.resize(0);
02208   qcs.append(text);
02209   //qcs=qcs.lower();
02210   qcs=qcs.stripWhiteSpace();
02211 }
02212 
02213 //static void appString(QCString& qcs,const char* text)
02214 //{
02215 //  qcs.resize(0);
02216 //  qcs.append(text);
02217 //}
02218 
02219 static QCString g_temp;
02220 
02221 /* writes and links a port map statement */
02222 static void codifyMapLines(char *text)
02223 {
02224   g_temp.resize(0);       
02225   bool dot=FALSE;
02226   //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text);
02227   char *p=text,*sp=p;
02228   char c;
02229   bool done=FALSE;
02230   while (!done)
02231   {
02232     sp=p;
02233     while ((c=*p++) && c!='\n' && c!=':' && c != ' ' && c != '(')
02234     { 
02235       g_temp+=c; 
02236     }
02237     //printf("--> g_temp='%s'\n",g_temp.data());
02238     if (c=='\n')
02239     {
02240       g_yyLineNr++;
02241       *(p-1)='\0';
02242       //if (dot==TRUE)
02243       //{
02244         QCString tt=g_temp;
02245         tt=tt.lower();
02246         tt=tt.stripWhiteSpace();
02247         QCString *ss;
02248         if ((ss=VhdlDocGen::findKeyWord(tt)))
02249         {
02250           writeFont(ss->data(),g_temp);
02251         }
02252         else 
02253         {
02254           generateClassOrGlobalLink(*g_code,sp);
02255           g_PortMapComp=tt;
02256         }
02257         dot=FALSE;
02258         g_temp.resize(0);
02259       //}
02260       //else 
02261       //{ 
02262       //  g_code->codify(g_temp); 
02263       //  g_temp.resize(0); 
02264       //}
02265       endCodeLine();
02266       if (g_yyLineNr<g_inputLines) 
02267       {
02268         startCodeLine();
02269       }
02270     }
02271     else
02272     {
02273       if (c==':') 
02274       { 
02275         dot = TRUE;
02276         g_code->codify(g_temp);
02277         g_code->codify(":");
02278         g_temp.resize(0);
02279       }
02280 
02281       if (c==' ' && !g_temp.isEmpty())
02282       {
02283         //if (dot==TRUE)
02284         //{
02285           QCString tt=g_temp;
02286           tt=tt.lower();
02287 
02288           QCString *ss;
02289           if ((ss=VhdlDocGen::findKeyWord(tt)))
02290           {
02291             writeFont(ss->data(),g_temp);
02292           }
02293           else 
02294           {
02295             g_PortMapComp=tt;
02296             generateClassOrGlobalLink(*g_code,g_temp);
02297           }
02298           dot=FALSE;
02299           g_temp.resize(0);
02300           g_temp+=c;
02301         //}
02302         //else
02303         //{ 
02304         //  g_temp+=c;
02305         //  g_code->codify(g_temp.data()); 
02306         //  g_temp.resize(0); 
02307         //}
02308 
02309       }
02310       else if (!g_temp.isEmpty()) 
02311       { 
02312         if (c!='(' && c!=' ') 
02313         {
02314           g_temp+=c;
02315         }
02316         QCString *ss;
02317         if ((ss=VhdlDocGen::findKeyWord(g_temp.lower().stripWhiteSpace())))
02318         {
02319           writeFont(ss->data(),g_temp);
02320         }
02321         else 
02322         {
02323           g_code->codify(g_temp); 
02324         }
02325         g_temp.resize(0); 
02326       }
02327       else 
02328       {
02329         g_code->codify(" ");
02330       }
02331       if (c=='(')
02332       { 
02333         g_code->codify("(");  
02334         done=TRUE; 
02335       }
02336     }
02337   }//while
02338 }//codifymaplines
02339 
02340 /*
02341 * writes a function|procedure prototype  and links the function|procedure name 
02342 */
02343 
02344 static void writeFuncProto()
02345 {
02346   QList<Argument> ql;
02347   QCString name,ret;
02348   VhdlDocGen::parseFuncProto(g_FuncProto.data(),ql,name,ret,FALSE);
02349 
02350   QStringList qlist=QStringList::split(name.data(),g_FuncProto,FALSE);
02351   QCString temp=(QCString)qlist[0];
02352   codifyLines(temp.data());
02353   g_FuncProto.stripPrefix(temp.data());
02354   temp.resize(0);
02355   temp=g_CurrClass;
02356   if (isPackageBody) 
02357   {
02358     temp.stripPrefix("_");
02359   }
02360   MemberDef *mdef=VhdlDocGen::findFunction(ql,name,temp,FALSE);
02361 
02362   if (mdef)
02363   {
02364     generateFuncLink(*g_code,mdef);
02365     g_FuncProto.stripPrefix(name.data());
02366     codifyLines(g_FuncProto.data());
02367   }
02368   else
02369   {
02370     codifyLines(g_FuncProto.data());
02371   }
02372 }// writeFuncProto
02373 
02374 /* writes a process prototype to the ouput */
02375 
02376  static void writeProcessProto(){
02377  codifyLines(g_FuncProto.data(),g_CurrClass.data());
02378  g_vhdlKeyDict.clear();
02379 }// writeProcessProto
02380 
02381 /* writes a keyword */
02382 
02383 static bool writeColoredWord(QCString& word )
02384 {
02385   QCString qcs=word.lower();
02386   QCString *ss=VhdlDocGen::findKeyWord(qcs);
02387   if (ss) 
02388   {
02389     writeFont(ss->data(),word.data());
02390     return TRUE;
02391   }
02392   return FALSE;
02393 }
02394 
02395 #undef        YY_INPUT
02396 #define       YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
02397 
02398 static int yyread(char *buf,int max_size)
02399 {
02400   int c=0;
02401   while( c < max_size && g_inputString[g_inputPosition] )
02402   {
02403     *buf = g_inputString[g_inputPosition++] ;
02404     c++; buf++;
02405   }
02406   return c;
02407 }
02408 
02409 
02410 
02411 
02412 
02413 
02414 
02415 
02416 
02417 
02418 
02419 
02420 
02421 #line 2422 "<stdout>"
02422 
02423 #define INITIAL 0
02424 #define Bases 1
02425 #define ParseType 2
02426 #define ParseFuncProto 3
02427 #define ParseComponent 4
02428 #define ParsePackage 5
02429 #define ParseProcessProto 6
02430 #define ClassName 7
02431 #define PackageName 8
02432 #define ClassVar 9
02433 #define ClassesName 10
02434 #define Map 11
02435 #define Body 12
02436 
02437 #ifndef YY_NO_UNISTD_H
02438 /* Special case for "unistd.h", since it is non-ANSI. We include it way
02439  * down here because we want the user's section 1 to have been scanned first.
02440  * The user has a chance to override it with an option.
02441  */
02442 #include <unistd.h>
02443 #endif
02444 
02445 #ifndef YY_EXTRA_TYPE
02446 #define YY_EXTRA_TYPE void *
02447 #endif
02448 
02449 static int yy_init_globals (void );
02450 
02451 /* Macros after this point can all be overridden by user definitions in
02452  * section 1.
02453  */
02454 
02455 #ifndef YY_SKIP_YYWRAP
02456 #ifdef __cplusplus
02457 extern "C" int vhdlcodeYYwrap (void );
02458 #else
02459 extern int vhdlcodeYYwrap (void );
02460 #endif
02461 #endif
02462 
02463 #ifndef yytext_ptr
02464 static void yy_flex_strncpy (char *,yyconst char *,int );
02465 #endif
02466 
02467 #ifdef YY_NEED_STRLEN
02468 static int yy_flex_strlen (yyconst char * );
02469 #endif
02470 
02471 #ifndef YY_NO_INPUT
02472 
02473 #ifdef __cplusplus
02474 static int yyinput (void );
02475 #else
02476 static int input (void );
02477 #endif
02478 
02479 #endif
02480 
02481 /* Amount of stuff to slurp up with each read. */
02482 #ifndef YY_READ_BUF_SIZE
02483 #define YY_READ_BUF_SIZE 8192
02484 #endif
02485 
02486 /* Copy whatever the last rule matched to the standard output. */
02487 #ifndef ECHO
02488 /* This used to be an fputs(), but since the string might contain NUL's,
02489  * we now use fwrite().
02490  */
02491 #define ECHO (void) fwrite( vhdlcodeYYtext, vhdlcodeYYleng, 1, vhdlcodeYYout )
02492 #endif
02493 
02494 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
02495  * is returned in "result".
02496  */
02497 #ifndef YY_INPUT
02498 #define YY_INPUT(buf,result,max_size) \
02499         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
02500                 { \
02501                 int c = '*'; \
02502                 size_t n; \
02503                 for ( n = 0; n < max_size && \
02504                              (c = getc( vhdlcodeYYin )) != EOF && c != '\n'; ++n ) \
02505                         buf[n] = (char) c; \
02506                 if ( c == '\n' ) \
02507                         buf[n++] = (char) c; \
02508                 if ( c == EOF && ferror( vhdlcodeYYin ) ) \
02509                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
02510                 result = n; \
02511                 } \
02512         else \
02513                 { \
02514                 errno=0; \
02515                 while ( (result = fread(buf, 1, max_size, vhdlcodeYYin))==0 && ferror(vhdlcodeYYin)) \
02516                         { \
02517                         if( errno != EINTR) \
02518                                 { \
02519                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
02520                                 break; \
02521                                 } \
02522                         errno=0; \
02523                         clearerr(vhdlcodeYYin); \
02524                         } \
02525                 }\
02526 \
02527 
02528 #endif
02529 
02530 /* No semi-colon after return; correct usage is to write "yyterminate();" -
02531  * we don't want an extra ';' after the "return" because that will cause
02532  * some compilers to complain about unreachable statements.
02533  */
02534 #ifndef yyterminate
02535 #define yyterminate() return YY_NULL
02536 #endif
02537 
02538 /* Number of entries by which start-condition stack grows. */
02539 #ifndef YY_START_STACK_INCR
02540 #define YY_START_STACK_INCR 25
02541 #endif
02542 
02543 /* Report a fatal error. */
02544 #ifndef YY_FATAL_ERROR
02545 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
02546 #endif
02547 
02548 /* end tables serialization structures and prototypes */
02549 
02550 /* Default declaration of generated scanner - a define so the user can
02551  * easily add parameters.
02552  */
02553 #ifndef YY_DECL
02554 #define YY_DECL_IS_OURS 1
02555 
02556 extern int vhdlcodeYYlex (void);
02557 
02558 #define YY_DECL int vhdlcodeYYlex (void)
02559 #endif /* !YY_DECL */
02560 
02561 /* Code executed at the beginning of each rule, after vhdlcodeYYtext and vhdlcodeYYleng
02562  * have been set up.
02563  */
02564 #ifndef YY_USER_ACTION
02565 #define YY_USER_ACTION
02566 #endif
02567 
02568 /* Code executed at the end of each rule. */
02569 #ifndef YY_BREAK
02570 #define YY_BREAK break;
02571 #endif
02572 
02573 #define YY_RULE_SETUP \
02574         if ( vhdlcodeYYleng > 0 ) \
02575                 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
02576                                 (vhdlcodeYYtext[vhdlcodeYYleng - 1] == '\n'); \
02577         YY_USER_ACTION
02578 
02581 YY_DECL
02582 {
02583         register yy_state_type yy_current_state;
02584         register char *yy_cp, *yy_bp;
02585         register int yy_act;
02586     
02587 #line 809 "vhdlcode.l"
02588 
02589 
02590 #line 2591 "<stdout>"
02591 
02592         if ( !(yy_init) )
02593                 {
02594                 (yy_init) = 1;
02595 
02596 #ifdef YY_USER_INIT
02597                 YY_USER_INIT;
02598 #endif
02599 
02600                 if ( ! (yy_start) )
02601                         (yy_start) = 1; /* first start state */
02602 
02603                 if ( ! vhdlcodeYYin )
02604                         vhdlcodeYYin = stdin;
02605 
02606                 if ( ! vhdlcodeYYout )
02607                         vhdlcodeYYout = stdout;
02608 
02609                 if ( ! YY_CURRENT_BUFFER ) {
02610                         vhdlcodeYYensure_buffer_stack ();
02611                         YY_CURRENT_BUFFER_LVALUE =
02612                                 vhdlcodeYY_create_buffer(vhdlcodeYYin,YY_BUF_SIZE );
02613                 }
02614 
02615                 vhdlcodeYY_load_buffer_state( );
02616                 }
02617 
02618         while ( 1 )             /* loops until end-of-file is reached */
02619                 {
02620                 yy_cp = (yy_c_buf_p);
02621 
02622                 /* Support of vhdlcodeYYtext. */
02623                 *yy_cp = (yy_hold_char);
02624 
02625                 /* yy_bp points to the position in yy_ch_buf of the start of
02626                  * the current run.
02627                  */
02628                 yy_bp = yy_cp;
02629 
02630                 yy_current_state = (yy_start);
02631                 yy_current_state += YY_AT_BOL();
02632 yy_match:
02633                 do
02634                         {
02635                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
02636                         if ( yy_accept[yy_current_state] )
02637                                 {
02638                                 (yy_last_accepting_state) = yy_current_state;
02639                                 (yy_last_accepting_cpos) = yy_cp;
02640                                 }
02641                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02642                                 {
02643                                 yy_current_state = (int) yy_def[yy_current_state];
02644                                 if ( yy_current_state >= 852 )
02645                                         yy_c = yy_meta[(unsigned int) yy_c];
02646                                 }
02647                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02648                         ++yy_cp;
02649                         }
02650                 while ( yy_base[yy_current_state] != 4106 );
02651 
02652 yy_find_action:
02653                 yy_act = yy_accept[yy_current_state];
02654                 if ( yy_act == 0 )
02655                         { /* have to back up */
02656                         yy_cp = (yy_last_accepting_cpos);
02657                         yy_current_state = (yy_last_accepting_state);
02658                         yy_act = yy_accept[yy_current_state];
02659                         }
02660 
02661                 YY_DO_BEFORE_ACTION;
02662 
02663 do_action:      /* This label is used only to access EOF actions. */
02664 
02665                 switch ( yy_act )
02666         { /* beginning of action switch */
02667                         case 0: /* must back up */
02668                         /* undo the effects of YY_DO_BEFORE_ACTION */
02669                         *yy_cp = (yy_hold_char);
02670                         yy_cp = (yy_last_accepting_cpos);
02671                         yy_current_state = (yy_last_accepting_state);
02672                         goto yy_find_action;
02673 
02674 case 1:
02675 YY_RULE_SETUP
02676 #line 811 "vhdlcode.l"
02677 { 
02678                         BEGIN(Bases); 
02679                       }
02680         YY_BREAK
02681 case 2:
02682 YY_RULE_SETUP
02683 #line 815 "vhdlcode.l"
02684 {
02685                         g_braceCount++;
02686                         writeFont("vhdlchar",vhdlcodeYYtext);
02687                         BEGIN(Map);
02688                       }
02689         YY_BREAK
02690 case 3:
02691 YY_RULE_SETUP
02692 #line 821 "vhdlcode.l"
02693 { /* write and link a port map lines */
02694                         QCString tt(vhdlcodeYYtext);
02695                         VhdlDocGen::deleteAllChars(tt,',');
02696                         QRegExp r("=>");
02697                         QStringList ql=QStringList::split(r,tt,FALSE);
02698                         if (ql.count()>=2)
02699                         {
02700                           unsigned int index=0;
02701                           QCString t1=(QCString)ql[0];
02702                           char cc=t1.at(index);
02703                           while (cc==' ' || cc=='\t') 
02704                           {
02705                             char c2[2];
02706                             c2[0]=cc;
02707                             c2[1]=0;
02708                             g_code->codify(c2);
02709                             index++;
02710                             if (index>=t1.size()) break;
02711                             cc=t1.at(index);
02712                           }        
02713 
02714                           QCString s1=(QCString)ql[0];
02715                           s1=s1.stripWhiteSpace();
02716 
02717                           //         if (!g_PortMapComp.isEmpty())
02718                           generateMemLink(*g_code,g_PortMapComp,s1); 
02719                           while (index++<t1.size()) 
02720                           { 
02721                             char cc=t1.at(index);
02722                             if (cc==' ' || cc=='\t')
02723                             {
02724                               char c2[2];
02725                               c2[0]=cc;
02726                               c2[1]=0;
02727                               g_code->codify(c2);
02728                             }
02729                           }        
02730                           codifyLines("=>");
02731                           index=0;
02732                           QCString s2=(QCString)ql[1];
02733                           t1=s2;
02734                           cc=t1.at(index);
02735                           while (cc==' ' || cc=='\t') 
02736                           {
02737                             char c2[2];
02738                             c2[0]=cc;
02739                             c2[1]=0;
02740                             g_code->codify(c2);
02741                             index++;
02742                             if (index>=t1.size()) break;
02743                             cc=t1.at(index);
02744                           }        
02745                           s2=s2.stripWhiteSpace();
02746                           generateMemLink(*g_code,g_CurrClass,s2); 
02747                           while (index++<t1.size()) 
02748                           { 
02749                             if (t1.at(index)==' ')
02750                             {
02751                               g_code->codify(" "); 
02752                             }
02753                           }        
02754                         }
02755                         else
02756                         {
02757                           codifyLines(vhdlcodeYYtext,g_CurrClass.data());
02758                         }
02759                         BEGIN(Map);
02760                       }
02761         YY_BREAK
02762 case 4:
02763 /* rule 4 can match eol */
02764 YY_RULE_SETUP
02765 #line 890 "vhdlcode.l"
02766 {
02767                         codifyLines(vhdlcodeYYtext);
02768                         BEGIN(Map);
02769                       }
02770         YY_BREAK
02771 case 5:
02772 YY_RULE_SETUP
02773 #line 895 "vhdlcode.l"
02774 {
02775                         g_braceCount--;
02776                         writeFont("vhdlchar",vhdlcodeYYtext);
02777                         if (g_braceCount==0)
02778                         {
02779                           BEGIN(Bases);
02780                         }
02781                       }
02782         YY_BREAK
02783 case 6:
02784 YY_RULE_SETUP
02785 #line 904 "vhdlcode.l"
02786 {
02787                          QCString tmp(vhdlcodeYYtext);
02788                          tmp=tmp.stripWhiteSpace();
02789                          appStringLower(g_PrevString,vhdlcodeYYtext);
02790                          g_vhdlKeyDict.insert(g_PrevString,new QCString(g_PrevString.data()));
02791                          if (!writeColoredWord(tmp))
02792                          {
02793                            generateMemLink(*g_code,g_CurrClass,tmp); 
02794                          }
02795                          BEGIN(Bases);
02796                        }
02797         YY_BREAK
02798 case 7:
02799 /* rule 7 can match eol */
02800 YY_RULE_SETUP
02801 #line 916 "vhdlcode.l"
02802 {
02803                         g_FuncProto.append(vhdlcodeYYtext);
02804                         if (isProto)
02805                         {
02806                           codifyLines(vhdlcodeYYtext);
02807                         }
02808                         BEGIN(ParseType);
02809                       }
02810         YY_BREAK
02811 case 8:
02812 YY_RULE_SETUP
02813 #line 926 "vhdlcode.l"
02814 {
02815                         if (!isStripCode) 
02816                         {
02817                           g_FuncProto.append(vhdlcodeYYtext);                
02818                           if (isProto)                                                                 
02819                           {
02820                             writeFont("keyword",vhdlcodeYYtext);
02821                           }
02822                           BEGIN(ParseType); 
02823                          }
02824                        }
02825         YY_BREAK
02826 case 9:
02827 /* rule 9 can match eol */
02828 YY_RULE_SETUP
02829 #line 938 "vhdlcode.l"
02830 {
02831                         QCString tt(vhdlcodeYYtext);
02832                         codifyLines(vhdlcodeYYtext);
02833                         tt=tt.lower();
02834                         VhdlDocGen::deleteAllChars(tt,';');
02835                         tt.stripWhiteSpace();
02836                         QStringList ql=QStringList::split(" ",tt,FALSE);
02837                         int index=ql.findIndex(QCString("if"))+1;
02838                         index+=ql.findIndex(QCString("case"))+1;
02839                         index+=ql.findIndex(QCString("loop"))+1;
02840                         index+=ql.findIndex(QCString("generate"))+1;                        
02841                         if (index==0)
02842                         {
02843                           BEGIN(Bases);
02844                         }
02845                         else
02846                         {
02847                           BEGIN(ParseType);
02848                         }
02849                       }
02850         YY_BREAK
02851 case 10:
02852 /* rule 10 can match eol */
02853 YY_RULE_SETUP
02854 #line 959 "vhdlcode.l"
02855 {
02856                         codifyLines(vhdlcodeYYtext);
02857                         g_vhdlKeyDict.clear();
02858                       }
02859         YY_BREAK
02860 case 11:
02861 YY_RULE_SETUP
02862 #line 964 "vhdlcode.l"
02863 {
02864                         codifyLines(vhdlcodeYYtext);
02865                         isFuncProto=FALSE;
02866                       }
02867         YY_BREAK
02868 case 12:
02869 YY_RULE_SETUP
02870 #line 969 "vhdlcode.l"
02871 {
02872                         g_FuncProto.append(vhdlcodeYYtext);
02873                         if (isProto)
02874                         {
02875                           codifyLines(vhdlcodeYYtext);
02876                         }
02877                       }
02878         YY_BREAK
02879 case 13:
02880 YY_RULE_SETUP
02881 #line 977 "vhdlcode.l"
02882 {
02883                         QCString val(vhdlcodeYYtext);
02884                         g_FuncProto.append(vhdlcodeYYtext);
02885                         appStringLower(g_PrevString,vhdlcodeYYtext);
02886                                                         
02887                         if (isFuncProto && g_braceCount==0)
02888                         {
02889                           g_vhdlKeyDict.insert(g_PrevString,new QCString(g_PrevString.data()));
02890                         }
02891                                 
02892                         if (isProto) 
02893                         { 
02894                           if (!writeColoredWord(val))
02895                           {
02896                             if (!isFuncProto && !g_vhdlKeyDict.find(g_PrevString))
02897                             {
02898                               val=val.stripWhiteSpace();
02899                               generateMemLink(*g_code,g_CurrClass,val); 
02900                             }
02901                             else
02902                             {
02903                               codifyLines(vhdlcodeYYtext);
02904                             }
02905                           }
02906                         }
02907                         BEGIN(ParseType); 
02908                       }
02909         YY_BREAK
02910 case 14:
02911 YY_RULE_SETUP
02912 #line 1005 "vhdlcode.l"
02913 {
02914                         g_braceCount++;
02915                         g_FuncProto+='(';
02916                         if (isProto)
02917                         {
02918                           writeFont("vhdlchar",vhdlcodeYYtext);
02919                         }
02920                         BEGIN(ParseType);
02921                       }
02922         YY_BREAK
02923 case 15:
02924 YY_RULE_SETUP
02925 #line 1015 "vhdlcode.l"
02926 {
02927                         g_braceCount--;
02928                         g_FuncProto+=')';
02929                         if (isProto)
02930                         {
02931                           writeFont("vhdlchar",vhdlcodeYYtext);
02932                         }
02933                         if (g_braceCount==0 && !isProto)// && !isPackageBody)
02934                         {
02935                           isProto=TRUE;
02936                           appStringLower(g_PrevString,vhdlcodeYYtext);
02937                           writeFuncProto();
02938                           BEGIN(Bases);
02939                         }
02940                         if (isPackageBody)
02941                         {
02942                           BEGIN(ParseType);
02943                         }
02944                       }
02945         YY_BREAK
02946 case 16:
02947 YY_RULE_SETUP
02948 #line 1036 "vhdlcode.l"
02949 {
02950                          QDict<QCString> mem;
02951                          appStringLower(g_PrevString,vhdlcodeYYtext);
02952                          g_CurrClass.resize(0);
02953                          g_CurrClass.append(vhdlcodeYYtext);
02954                          g_CurrClass=g_CurrClass.stripWhiteSpace();
02955                                                   
02956                          if (!writeColoredWord(g_CurrScope))
02957                          {
02958                            generateClassOrGlobalLink(*g_code,vhdlcodeYYtext);
02959                          }
02960                          else
02961                          {
02962                            g_code->codify(vhdlcodeYYtext);
02963                          }
02964                          BEGIN(Bases);
02965                        }
02966         YY_BREAK
02967 case 17:
02968 YY_RULE_SETUP
02969 #line 1055 "vhdlcode.l"
02970 {
02971                          g_braceCount++;
02972                          g_code->codify(vhdlcodeYYtext);
02973                        }
02974         YY_BREAK
02975 case 18:
02976 YY_RULE_SETUP
02977 #line 1061 "vhdlcode.l"
02978 {
02979                          g_braceCount--;
02980                          g_code->codify(vhdlcodeYYtext);  
02981                          if (g_braceCount==0 && !isComponent)
02982                          {
02983                            g_tempComp.resize(0);
02984                            BEGIN(Bases);
02985                          }
02986                          else
02987                          {
02988                            BEGIN(ParseComponent);
02989                          }
02990                        }
02991         YY_BREAK
02992 case 19:
02993 YY_RULE_SETUP
02994 #line 1075 "vhdlcode.l"
02995 {    
02996                          if (strlen(vhdlcodeYYtext)>=2) // found text ?
02997                          {
02998                            writeFont("keyword",vhdlcodeYYtext);
02999                          }
03000                          else
03001                          {
03002                            writeFont("vhdlchar",vhdlcodeYYtext); 
03003                          }
03004                        }
03005         YY_BREAK
03006 case 20:
03007 YY_RULE_SETUP
03008 #line 1086 "vhdlcode.l"
03009 {
03010                          codifyLines(vhdlcodeYYtext);
03011                        }
03012         YY_BREAK
03013 case 21:
03014 /* rule 21 can match eol */
03015 YY_RULE_SETUP
03016 #line 1090 "vhdlcode.l"
03017 {
03018                          if (!isStripCode)
03019                          {
03020                            codifyLines(vhdlcodeYYtext);
03021                          }
03022                          else
03023                          {
03024                            g_yyLineNr++;
03025                          }
03026                        }
03027         YY_BREAK
03028 case 22:
03029 YY_RULE_SETUP
03030 #line 1101 "vhdlcode.l"
03031 {
03032                          QCString text(vhdlcodeYYtext);
03033                          if (!isStripCode) 
03034                          {
03035                            writeFont("keyword",vhdlcodeYYtext);
03036                          }
03037                        }
03038         YY_BREAK
03039 case 23:
03040 YY_RULE_SETUP
03041 #line 1109 "vhdlcode.l"
03042 { 
03043                          startFontClass("vhdllogic");
03044                          codifyLines(vhdlcodeYYtext);
03045                          endFontClass();
03046                        }
03047         YY_BREAK
03048 case 24:
03049 /* rule 24 can match eol */
03050 YY_RULE_SETUP
03051 #line 1115 "vhdlcode.l"
03052 { 
03053                          codifyLines(vhdlcodeYYtext);
03054                          g_braceCount=1;
03055                          isComponent=FALSE;
03056                        }
03057         YY_BREAK
03058 case 25:
03059 /* rule 25 can match eol */
03060 YY_RULE_SETUP
03061 #line 1121 "vhdlcode.l"
03062 { 
03063                          codifyLines(vhdlcodeYYtext);
03064                          g_braceCount=1;
03065                        }
03066         YY_BREAK
03067 case 26:
03068 YY_RULE_SETUP
03069 #line 1126 "vhdlcode.l"
03070 {
03071                          QCString temp(vhdlcodeYYtext);
03072                          appStringLower(g_PrevString,vhdlcodeYYtext);
03073                          if (!writeColoredWord(g_PrevString))
03074                          {
03075                            generateMemLink(*g_code,g_tempComp,temp); 
03076                          }
03077                        }
03078         YY_BREAK
03079 case 27:
03080 /* rule 27 can match eol */
03081 YY_RULE_SETUP
03082 #line 1135 "vhdlcode.l"
03083 { 
03084                          g_FuncProto.append(vhdlcodeYYtext);
03085                        }
03086         YY_BREAK
03087 case 28:
03088 YY_RULE_SETUP
03089 #line 1139 "vhdlcode.l"
03090 {
03091                          g_FuncProto.append(vhdlcodeYYtext);
03092                          g_braceCount++;
03093                        }
03094         YY_BREAK
03095 case 29:
03096 YY_RULE_SETUP
03097 #line 1144 "vhdlcode.l"
03098 {
03099                          g_FuncProto.append(vhdlcodeYYtext);
03100                          g_braceCount--;
03101                          if (g_braceCount==0) 
03102                          {
03103                             writeProcessProto();
03104                             BEGIN(Bases);
03105                           }
03106                         }
03107         YY_BREAK
03108 case 30:
03109 /* rule 30 can match eol */
03110 YY_RULE_SETUP
03111 #line 1154 "vhdlcode.l"
03112 { //found package 
03113                           QCString temp(vhdlcodeYYtext);
03114                           QStringList strl=QStringList::split(".",temp,FALSE);
03115                                 
03116                           if (strl.count()>2) 
03117                           {
03118                              QCString s1=(QCString)strl[0];  
03119                              QCString s2=(QCString)strl[1];  
03120                              QCString s3=(QCString)strl[2];  
03121                              s1.append(".");
03122                              s3.prepend(".");
03123                              codifyLines(s1.data());  
03124                              ClassDef *cd=VhdlDocGen::getPackageName(s2);
03125                              if (cd)
03126                              {
03127                                generateClassOrGlobalLink(*g_code,s2.data());
03128                              }
03129                              else 
03130                              {
03131                                codifyLines(s2.data());
03132                              }
03133                              codifyLines(s3.data());
03134                            }
03135                            else
03136                            {
03137                              writeFont("keywordflow",vhdlcodeYYtext);
03138                            }
03139                            BEGIN(Bases);
03140                          }
03141         YY_BREAK
03142 case 31:
03143 /* rule 31 can match eol */
03144 YY_RULE_SETUP
03145 #line 1184 "vhdlcode.l"
03146 { // found port or generic map
03147                            QCString tt(vhdlcodeYYtext);
03148                            if (tt.contains(':',FALSE))
03149                            {
03150                              isStartMap=TRUE;
03151                            }
03152                            else
03153                            {
03154                              isStartMap=FALSE;                                        
03155                            }
03156                            int j=tt.find('.');
03157                                                     
03158                            if (j>0)
03159                            {
03160                              QCString left=tt.left(j+1); 
03161                              codifyLines(left.data());
03162                              tt=tt.right(tt.length()-j-1);
03163                              left=VhdlDocGen::getIndexWord(tt.data(),0);
03164                              if (!left.isEmpty())
03165                              {          
03166                                if (left.contains('('))
03167                                {
03168                                  j=left.find('(',FALSE);
03169                                  QCString name=left.left(j);
03170                                  generateClassOrGlobalLink(*g_code,name.data()); 
03171                                  g_PortMapComp=name;
03172                                  name=tt.right(tt.length()-name.length());
03173                                  codifyLines(name.data());
03174                                }
03175                                else
03176                                {
03177                                  generateClassOrGlobalLink(*g_code,left.data()); 
03178                                  tt=tt.right(tt.length()-left.length()-1);
03179                                  tt.prepend(" ");
03180                                  g_PortMapComp=left;
03181                                  codifyLines(tt.data());
03182                                }
03183                              }
03184                            }
03185                            else
03186                            {
03187                              codifyMapLines(tt.data());
03188                            }
03189                            g_braceCount=1;
03190                            BEGIN(Map);
03191                          }
03192         YY_BREAK
03193 case 32:
03194 /* rule 32 can match eol */
03195 YY_RULE_SETUP
03196 #line 1231 "vhdlcode.l"
03197 { // found component
03198                            appStringLower(g_PrevString,vhdlcodeYYtext);
03199                            //  writeFont("keywordflow",VhdlDocGen::getIndexWord(vhdlcodeYYtext,0).data());
03200                            //  writeFont("vhdlkeyword"," ");
03201                            QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1);
03202                            temp=temp.stripWhiteSpace();
03203                            VhdlDocGen::deleteAllChars(temp,'\n');
03204                            g_tempComp=temp;
03205                            codifyLines(vhdlcodeYYtext,temp.data(),TRUE);
03206                            g_braceCount=0;
03207                          
03208                            //if (getClass(temp.data()))
03209                            //  generateClassOrGlobalLink(*g_code,temp.data());
03210                            //else
03211                            //  generateMemLink(*g_code,g_CurrClass,temp);
03212                          
03213                            isComponent=TRUE;
03214                            BEGIN(ParseComponent);
03215                          }
03216         YY_BREAK
03217 case 33:
03218 /* rule 33 can match eol */
03219 YY_RULE_SETUP
03220 #line 1253 "vhdlcode.l"
03221 { // found architecture
03222                            g_PortMapComp.resize(0);
03223                            //        writeFont("vhdlkeyword",VhdlDocGen::getIndexWord(vhdlcodeYYtext,0).data());
03224                            //        writeFont("vhdlkeyword"," ");
03225                            //        writeFont("vhdlchar",VhdlDocGen::getIndexWord(vhdlcodeYYtext,1).data());
03226                            //        writeFont("vhdlkeyword"," ");
03227                            //        writeFont("vhdlkeyword",VhdlDocGen::getIndexWord(vhdlcodeYYtext,2).data());
03228                            //        writeFont("vhdlkeyword"," ");
03229                            //QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1);
03230                            //temp=temp.stripWhiteSpace();
03231                            //temp+=("-");
03232                            //temp+=VhdlDocGen::getIndexWord(vhdlcodeYYtext,3);
03233                            QCString temp = VhdlDocGen::getIndexWord(vhdlcodeYYtext,3);
03234                            temp+="::";
03235                            temp+=VhdlDocGen::getIndexWord(vhdlcodeYYtext,1);
03236                            g_CurrClass=temp;
03237                            VhdlDocGen::deleteAllChars(temp,'\n');
03238                            codifyLines(vhdlcodeYYtext,temp.data(),TRUE);
03239                            //generateClassOrGlobalLink(*g_code,temp.data());
03240                            isPackageBody=FALSE;
03241                            BEGIN(ClassName);
03242                          }
03243         YY_BREAK
03244 case 34:
03245 /* rule 34 can match eol */
03246 YY_RULE_SETUP
03247 #line 1277 "vhdlcode.l"
03248 { // found package body  
03249                            QCString ss(vhdlcodeYYtext);
03250                            QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,2);
03251                            QStringList ql=QStringList::split(temp,ss,FALSE);
03252                            QCString ll=(QCString)ql[0];
03253                            codifyLines(ll.data());
03254                            temp=temp.stripWhiteSpace();
03255                            //          temp.prepend("_");
03256                            generateClassOrGlobalLink(*g_code,temp.data());
03257                            g_CurrClass.resize(0);
03258                            g_CurrClass=temp;
03259                            isProto=FALSE;
03260                            isPackageBody=TRUE;
03261                            // BEGIN(ClassesName);
03262                          }
03263         YY_BREAK
03264 case 35:
03265 /* rule 35 can match eol */
03266 YY_RULE_SETUP
03267 #line 1293 "vhdlcode.l"
03268 { // found process
03269                            isFuncProto=TRUE;
03270                            g_FuncProto.resize(0);
03271                            g_FuncProto.append(vhdlcodeYYtext);
03272                            g_vhdlKeyDict.clear();
03273                            appStringLower(g_PrevString,vhdlcodeYYtext);
03274                            if (g_PrevString.contains('(')) 
03275                            {
03276                              g_braceCount=1;
03277                              BEGIN(ParseProcessProto);
03278                            }
03279                            else
03280                            {
03281                              writeProcessProto();
03282                            }
03283                          }
03284         YY_BREAK
03285 case 36:
03286 /* rule 36 can match eol */
03287 YY_RULE_SETUP
03288 #line 1310 "vhdlcode.l"
03289 { // end of process
03290                            isFuncProto=FALSE;
03291                            codifyLines(vhdlcodeYYtext);
03292                            BEGIN(Bases);
03293                          }
03294         YY_BREAK
03295 case 37:
03296 YY_RULE_SETUP
03297 #line 1317 "vhdlcode.l"
03298 { 
03299                            isFuncProto=FALSE;
03300                            writeFont("vhdlkeyword",vhdlcodeYYtext);
03301                          }
03302         YY_BREAK
03303 case 38:
03304 /* rule 38 can match eol */
03305 YY_RULE_SETUP
03306 #line 1322 "vhdlcode.l"
03307 { //found including package or library
03308                            writeFont("vhdlkeyword",vhdlcodeYYtext);
03309                            BEGIN(ParsePackage);
03310                          }
03311         YY_BREAK
03312 case 39:
03313 /* rule 39 can match eol */
03314 YY_RULE_SETUP
03315 #line 1329 "vhdlcode.l"
03316 {  // founc function|procedure
03317                            g_vhdlKeyDict.clear();
03318                            g_FuncProto.resize(0);
03319                            isProto=FALSE;
03320                            g_FuncProto.append(vhdlcodeYYtext);
03321                            g_braceCount=1;
03322                            BEGIN(ParseType);
03323                          }
03324         YY_BREAK
03325 case 40:
03326 /* rule 40 can match eol */
03327 YY_RULE_SETUP
03328 #line 1340 "vhdlcode.l"
03329 { 
03330                            appStringLower(g_PrevString,vhdlcodeYYtext);
03331                            writeFont("keywordflow",vhdlcodeYYtext);
03332                            isPackageBody=FALSE;
03333                            BEGIN(ClassesName);
03334                          }
03335         YY_BREAK
03336 case 41:
03337 YY_RULE_SETUP
03338 #line 1348 "vhdlcode.l"
03339 { // found keyword
03340                            QCString qcs(vhdlcodeYYtext);
03341                            if (!writeColoredWord(qcs))
03342                            {
03343                              startFontClass("vhdlchar");
03344                              g_code->codify(vhdlcodeYYtext);
03345                              endFontClass();
03346                            }
03347                          }
03348         YY_BREAK
03349 case 42:
03350 YY_RULE_SETUP
03351 #line 1359 "vhdlcode.l"
03352 {
03353                            appStringLower(g_PrevString,vhdlcodeYYtext);
03354                            QCString temp(vhdlcodeYYtext);
03355                            temp=temp.stripWhiteSpace();
03356                         
03357                            if (!writeColoredWord(temp))
03358                            {
03359                              startFontClass("vhdlchar");
03360                              generateMemLink(*g_code,g_CurrClass,temp);
03361                              endFontClass();
03362                            }
03363                          }
03364         YY_BREAK
03365 case 43:
03366 YY_RULE_SETUP
03367 #line 1372 "vhdlcode.l"
03368 { 
03369                            startFontClass("vhdllogic");
03370                            codifyLines(vhdlcodeYYtext);
03371                            endFontClass();
03372                          }
03373         YY_BREAK
03374 case 44:
03375 YY_RULE_SETUP
03376 #line 1380 "vhdlcode.l"
03377 { 
03378                            codifyLines(vhdlcodeYYtext);
03379                            if (isFuncProto)
03380                            {
03381                              BEGIN(ParseFuncProto);
03382                            }
03383                            else 
03384                            {
03385                              BEGIN(Bases);
03386                            }
03387                          }
03388         YY_BREAK
03389 case 45:
03390 YY_RULE_SETUP
03391 #line 1392 "vhdlcode.l"
03392 {                            
03393                            startFontClass("vhdlchar");
03394                            g_code->codify(vhdlcodeYYtext);
03395                            endFontClass();
03396                          }
03397         YY_BREAK
03398 case 46:
03399 YY_RULE_SETUP
03400 #line 1398 "vhdlcode.l"
03401 { 
03402                            startFontClass("vhdlchar");
03403                            g_code->codify(vhdlcodeYYtext);
03404                            endFontClass();
03405                          }
03406         YY_BREAK
03407 case 47:
03408 /* rule 47 can match eol */
03409 YY_RULE_SETUP
03410 #line 1407 "vhdlcode.l"
03411 {
03412                            if (!isStripCode)
03413                            {
03414                              codifyLines(vhdlcodeYYtext);
03415                            }
03416                            else
03417                            {
03418                              g_yyLineNr++;
03419                            }
03420                            BEGIN(Bases);
03421                          }
03422         YY_BREAK
03423 case 48:
03424 YY_RULE_SETUP
03425 #line 1419 "vhdlcode.l"
03426 {
03427                            g_code->codify(vhdlcodeYYtext);
03428                          }
03429         YY_BREAK
03430 case 49:
03431 YY_RULE_SETUP
03432 #line 1423 "vhdlcode.l"
03433 { // found text
03434                            bool stripLine=FALSE;
03435                            QCString text(vhdlcodeYYtext);
03436                            if (Config_getBool("STRIP_CODE_COMMENTS")) 
03437                            {  
03438                              if (text.contains("--!"))
03439                              {
03440                                stripLine=TRUE;
03441                              }
03442                            }  
03443                            if (!isStripCode && !stripLine) 
03444                            {
03445                              writeFont("keyword",vhdlcodeYYtext);
03446                              BEGIN(Bases);
03447                            }
03448                          }
03449         YY_BREAK
03450 /*
03451 <*>{B}*"--#"[^\n]*       { // found one line comment
03452                            if (!Config_getBool("STRIP_CODE_COMMENTS"))
03453                            {
03454                              startFontClass("keyword");
03455                              codifyLines(vhdlcodeYYtext);
03456                              endFontClass(); 
03457                            }
03458                          }
03459     */
03460 case 50:
03461 YY_RULE_SETUP
03462 #line 1452 "vhdlcode.l"
03463 ECHO;
03464         YY_BREAK
03465 #line 3466 "<stdout>"
03466 case YY_STATE_EOF(INITIAL):
03467 case YY_STATE_EOF(Bases):
03468 case YY_STATE_EOF(ParseType):
03469 case YY_STATE_EOF(ParseFuncProto):
03470 case YY_STATE_EOF(ParseComponent):
03471 case YY_STATE_EOF(ParsePackage):
03472 case YY_STATE_EOF(ParseProcessProto):
03473 case YY_STATE_EOF(ClassName):
03474 case YY_STATE_EOF(PackageName):
03475 case YY_STATE_EOF(ClassVar):
03476 case YY_STATE_EOF(ClassesName):
03477 case YY_STATE_EOF(Map):
03478 case YY_STATE_EOF(Body):
03479         yyterminate();
03480 
03481         case YY_END_OF_BUFFER:
03482                 {
03483                 /* Amount of text matched not including the EOB char. */
03484                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
03485 
03486                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
03487                 *yy_cp = (yy_hold_char);
03488                 YY_RESTORE_YY_MORE_OFFSET
03489 
03490                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
03491                         {
03492                         /* We're scanning a new file or input source.  It's
03493                          * possible that this happened because the user
03494                          * just pointed vhdlcodeYYin at a new source and called
03495                          * vhdlcodeYYlex().  If so, then we have to assure
03496                          * consistency between YY_CURRENT_BUFFER and our
03497                          * globals.  Here is the right place to do so, because
03498                          * this is the first action (other than possibly a
03499                          * back-up) that will match for the new input source.
03500                          */
03501                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
03502                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = vhdlcodeYYin;
03503                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
03504                         }
03505 
03506                 /* Note that here we test for yy_c_buf_p "<=" to the position
03507                  * of the first EOB in the buffer, since yy_c_buf_p will
03508                  * already have been incremented past the NUL character
03509                  * (since all states make transitions on EOB to the
03510                  * end-of-buffer state).  Contrast this with the test
03511                  * in input().
03512                  */
03513                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
03514                         { /* This was really a NUL. */
03515                         yy_state_type yy_next_state;
03516 
03517                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
03518 
03519                         yy_current_state = yy_get_previous_state(  );
03520 
03521                         /* Okay, we're now positioned to make the NUL
03522                          * transition.  We couldn't have
03523                          * yy_get_previous_state() go ahead and do it
03524                          * for us because it doesn't know how to deal
03525                          * with the possibility of jamming (and we don't
03526                          * want to build jamming into it because then it
03527                          * will run more slowly).
03528                          */
03529 
03530                         yy_next_state = yy_try_NUL_trans( yy_current_state );
03531 
03532                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
03533 
03534                         if ( yy_next_state )
03535                                 {
03536                                 /* Consume the NUL. */
03537                                 yy_cp = ++(yy_c_buf_p);
03538                                 yy_current_state = yy_next_state;
03539                                 goto yy_match;
03540                                 }
03541 
03542                         else
03543                                 {
03544                                 yy_cp = (yy_c_buf_p);
03545                                 goto yy_find_action;
03546                                 }
03547                         }
03548 
03549                 else switch ( yy_get_next_buffer(  ) )
03550                         {
03551                         case EOB_ACT_END_OF_FILE:
03552                                 {
03553                                 (yy_did_buffer_switch_on_eof) = 0;
03554 
03555                                 if ( vhdlcodeYYwrap( ) )
03556                                         {
03557                                         /* Note: because we've taken care in
03558                                          * yy_get_next_buffer() to have set up
03559                                          * vhdlcodeYYtext, we can now set up
03560                                          * yy_c_buf_p so that if some total
03561                                          * hoser (like flex itself) wants to
03562                                          * call the scanner after we return the
03563                                          * YY_NULL, it'll still work - another
03564                                          * YY_NULL will get returned.
03565                                          */
03566                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
03567 
03568                                         yy_act = YY_STATE_EOF(YY_START);
03569                                         goto do_action;
03570                                         }
03571 
03572                                 else
03573                                         {
03574                                         if ( ! (yy_did_buffer_switch_on_eof) )
03575                                                 YY_NEW_FILE;
03576                                         }
03577                                 break;
03578                                 }
03579 
03580                         case EOB_ACT_CONTINUE_SCAN:
03581                                 (yy_c_buf_p) =
03582                                         (yytext_ptr) + yy_amount_of_matched_text;
03583 
03584                                 yy_current_state = yy_get_previous_state(  );
03585 
03586                                 yy_cp = (yy_c_buf_p);
03587                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
03588                                 goto yy_match;
03589 
03590                         case EOB_ACT_LAST_MATCH:
03591                                 (yy_c_buf_p) =
03592                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
03593 
03594                                 yy_current_state = yy_get_previous_state(  );
03595 
03596                                 yy_cp = (yy_c_buf_p);
03597                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
03598                                 goto yy_find_action;
03599                         }
03600                 break;
03601                 }
03602 
03603         default:
03604                 YY_FATAL_ERROR(
03605                         "fatal flex scanner internal error--no action found" );
03606         } /* end of action switch */
03607                 } /* end of scanning one token */
03608 } /* end of vhdlcodeYYlex */
03609 
03610 /* yy_get_next_buffer - try to read in a new buffer
03611  *
03612  * Returns a code representing an action:
03613  *      EOB_ACT_LAST_MATCH -
03614  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
03615  *      EOB_ACT_END_OF_FILE - end of file
03616  */
03617 static int yy_get_next_buffer (void)
03618 {
03619         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
03620         register char *source = (yytext_ptr);
03621         register int number_to_move, i;
03622         int ret_val;
03623 
03624         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
03625                 YY_FATAL_ERROR(
03626                 "fatal flex scanner internal error--end of buffer missed" );
03627 
03628         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
03629                 { /* Don't try to fill the buffer, so this is an EOF. */
03630                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
03631                         {
03632                         /* We matched a single character, the EOB, so
03633                          * treat this as a final EOF.
03634                          */
03635                         return EOB_ACT_END_OF_FILE;
03636                         }
03637 
03638                 else
03639                         {
03640                         /* We matched some text prior to the EOB, first
03641                          * process it.
03642                          */
03643                         return EOB_ACT_LAST_MATCH;
03644                         }
03645                 }
03646 
03647         /* Try to read more data. */
03648 
03649         /* First move last chars to start of buffer. */
03650         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
03651 
03652         for ( i = 0; i < number_to_move; ++i )
03653                 *(dest++) = *(source++);
03654 
03655         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
03656                 /* don't do the read, it's not guaranteed to return an EOF,
03657                  * just force an EOF
03658                  */
03659                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
03660 
03661         else
03662                 {
03663                         int num_to_read =
03664                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
03665 
03666                 while ( num_to_read <= 0 )
03667                         { /* Not enough room in the buffer - grow it. */
03668 
03669                         /* just a shorter name for the current buffer */
03670                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
03671 
03672                         int yy_c_buf_p_offset =
03673                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
03674 
03675                         if ( b->yy_is_our_buffer )
03676                                 {
03677                                 int new_size = b->yy_buf_size * 2;
03678 
03679                                 if ( new_size <= 0 )
03680                                         b->yy_buf_size += b->yy_buf_size / 8;
03681                                 else
03682                                         b->yy_buf_size *= 2;
03683 
03684                                 b->yy_ch_buf = (char *)
03685                                         /* Include room in for 2 EOB chars. */
03686                                         vhdlcodeYYrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
03687                                 }
03688                         else
03689                                 /* Can't grow it, we don't own it. */
03690                                 b->yy_ch_buf = 0;
03691 
03692                         if ( ! b->yy_ch_buf )
03693                                 YY_FATAL_ERROR(
03694                                 "fatal error - scanner input buffer overflow" );
03695 
03696                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
03697 
03698                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
03699                                                 number_to_move - 1;
03700 
03701                         }
03702 
03703                 if ( num_to_read > YY_READ_BUF_SIZE )
03704                         num_to_read = YY_READ_BUF_SIZE;
03705 
03706                 /* Read in more data. */
03707                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
03708                         (yy_n_chars), num_to_read );
03709 
03710                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
03711                 }
03712 
03713         if ( (yy_n_chars) == 0 )
03714                 {
03715                 if ( number_to_move == YY_MORE_ADJ )
03716                         {
03717                         ret_val = EOB_ACT_END_OF_FILE;
03718                         vhdlcodeYYrestart(vhdlcodeYYin  );
03719                         }
03720 
03721                 else
03722                         {
03723                         ret_val = EOB_ACT_LAST_MATCH;
03724                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
03725                                 YY_BUFFER_EOF_PENDING;
03726                         }
03727                 }
03728 
03729         else
03730                 ret_val = EOB_ACT_CONTINUE_SCAN;
03731 
03732         (yy_n_chars) += number_to_move;
03733         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
03734         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
03735 
03736         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
03737 
03738         return ret_val;
03739 }
03740 
03741 /* yy_get_previous_state - get the state just before the EOB char was reached */
03742 
03743     static yy_state_type yy_get_previous_state (void)
03744 {
03745         register yy_state_type yy_current_state;
03746         register char *yy_cp;
03747     
03748         yy_current_state = (yy_start);
03749         yy_current_state += YY_AT_BOL();
03750 
03751         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
03752                 {
03753                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
03754                 if ( yy_accept[yy_current_state] )
03755                         {
03756                         (yy_last_accepting_state) = yy_current_state;
03757                         (yy_last_accepting_cpos) = yy_cp;
03758                         }
03759                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
03760                         {
03761                         yy_current_state = (int) yy_def[yy_current_state];
03762                         if ( yy_current_state >= 852 )
03763                                 yy_c = yy_meta[(unsigned int) yy_c];
03764                         }
03765                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
03766                 }
03767 
03768         return yy_current_state;
03769 }
03770 
03771 /* yy_try_NUL_trans - try to make a transition on the NUL character
03772  *
03773  * synopsis
03774  *      next_state = yy_try_NUL_trans( current_state );
03775  */
03776     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
03777 {
03778         register int yy_is_jam;
03779         register char *yy_cp = (yy_c_buf_p);
03780 
03781         register YY_CHAR yy_c = 1;
03782         if ( yy_accept[yy_current_state] )
03783                 {
03784                 (yy_last_accepting_state) = yy_current_state;
03785                 (yy_last_accepting_cpos) = yy_cp;
03786                 }
03787         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
03788                 {
03789                 yy_current_state = (int) yy_def[yy_current_state];
03790                 if ( yy_current_state >= 852 )
03791                         yy_c = yy_meta[(unsigned int) yy_c];
03792                 }
03793         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
03794         yy_is_jam = (yy_current_state == 851);
03795 
03796         return yy_is_jam ? 0 : yy_current_state;
03797 }
03798 
03799 #ifndef YY_NO_INPUT
03800 #ifdef __cplusplus
03801     static int yyinput (void)
03802 #else
03803     static int input  (void)
03804 #endif
03805 
03806 {
03807         int c;
03808     
03809         *(yy_c_buf_p) = (yy_hold_char);
03810 
03811         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
03812                 {
03813                 /* yy_c_buf_p now points to the character we want to return.
03814                  * If this occurs *before* the EOB characters, then it's a
03815                  * valid NUL; if not, then we've hit the end of the buffer.
03816                  */
03817                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
03818                         /* This was really a NUL. */
03819                         *(yy_c_buf_p) = '\0';
03820 
03821                 else
03822                         { /* need more input */
03823                         int offset = (yy_c_buf_p) - (yytext_ptr);
03824                         ++(yy_c_buf_p);
03825 
03826                         switch ( yy_get_next_buffer(  ) )
03827                                 {
03828                                 case EOB_ACT_LAST_MATCH:
03829                                         /* This happens because yy_g_n_b()
03830                                          * sees that we've accumulated a
03831                                          * token and flags that we need to
03832                                          * try matching the token before
03833                                          * proceeding.  But for input(),
03834                                          * there's no matching to consider.
03835                                          * So convert the EOB_ACT_LAST_MATCH
03836                                          * to EOB_ACT_END_OF_FILE.
03837                                          */
03838 
03839                                         /* Reset buffer status. */
03840                                         vhdlcodeYYrestart(vhdlcodeYYin );
03841 
03842                                         /*FALLTHROUGH*/
03843 
03844                                 case EOB_ACT_END_OF_FILE:
03845                                         {
03846                                         if ( vhdlcodeYYwrap( ) )
03847                                                 return 0;
03848 
03849                                         if ( ! (yy_did_buffer_switch_on_eof) )
03850                                                 YY_NEW_FILE;
03851 #ifdef __cplusplus
03852                                         return yyinput();
03853 #else
03854                                         return input();
03855 #endif
03856                                         }
03857 
03858                                 case EOB_ACT_CONTINUE_SCAN:
03859                                         (yy_c_buf_p) = (yytext_ptr) + offset;
03860                                         break;
03861                                 }
03862                         }
03863                 }
03864 
03865         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
03866         *(yy_c_buf_p) = '\0';   /* preserve vhdlcodeYYtext */
03867         (yy_hold_char) = *++(yy_c_buf_p);
03868 
03869         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
03870 
03871         return c;
03872 }
03873 #endif  /* ifndef YY_NO_INPUT */
03874 
03880     void vhdlcodeYYrestart  (FILE * input_file )
03881 {
03882     
03883         if ( ! YY_CURRENT_BUFFER ){
03884         vhdlcodeYYensure_buffer_stack ();
03885                 YY_CURRENT_BUFFER_LVALUE =
03886             vhdlcodeYY_create_buffer(vhdlcodeYYin,YY_BUF_SIZE );
03887         }
03888 
03889         vhdlcodeYY_init_buffer(YY_CURRENT_BUFFER,input_file );
03890         vhdlcodeYY_load_buffer_state( );
03891 }
03892 
03897     void vhdlcodeYY_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
03898 {
03899     
03900         /* TODO. We should be able to replace this entire function body
03901          * with
03902          *              vhdlcodeYYpop_buffer_state();
03903          *              vhdlcodeYYpush_buffer_state(new_buffer);
03904      */
03905         vhdlcodeYYensure_buffer_stack ();
03906         if ( YY_CURRENT_BUFFER == new_buffer )
03907                 return;
03908 
03909         if ( YY_CURRENT_BUFFER )
03910                 {
03911                 /* Flush out information for old buffer. */
03912                 *(yy_c_buf_p) = (yy_hold_char);
03913                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
03914                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
03915                 }
03916 
03917         YY_CURRENT_BUFFER_LVALUE = new_buffer;
03918         vhdlcodeYY_load_buffer_state( );
03919 
03920         /* We don't actually know whether we did this switch during
03921          * EOF (vhdlcodeYYwrap()) processing, but the only time this flag
03922          * is looked at is after vhdlcodeYYwrap() is called, so it's safe
03923          * to go ahead and always set it.
03924          */
03925         (yy_did_buffer_switch_on_eof) = 1;
03926 }
03927 
03928 static void vhdlcodeYY_load_buffer_state  (void)
03929 {
03930         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
03931         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
03932         vhdlcodeYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
03933         (yy_hold_char) = *(yy_c_buf_p);
03934 }
03935 
03942     YY_BUFFER_STATE vhdlcodeYY_create_buffer  (FILE * file, int  size )
03943 {
03944         YY_BUFFER_STATE b;
03945     
03946         b = (YY_BUFFER_STATE) vhdlcodeYYalloc(sizeof( struct yy_buffer_state )  );
03947         if ( ! b )
03948                 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_create_buffer()" );
03949 
03950         b->yy_buf_size = size;
03951 
03952         /* yy_ch_buf has to be 2 characters longer than the size given because
03953          * we need to put in 2 end-of-buffer characters.
03954          */
03955         b->yy_ch_buf = (char *) vhdlcodeYYalloc(b->yy_buf_size + 2  );
03956         if ( ! b->yy_ch_buf )
03957                 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_create_buffer()" );
03958 
03959         b->yy_is_our_buffer = 1;
03960 
03961         vhdlcodeYY_init_buffer(b,file );
03962 
03963         return b;
03964 }
03965 
03970     void vhdlcodeYY_delete_buffer (YY_BUFFER_STATE  b )
03971 {
03972     
03973         if ( ! b )
03974                 return;
03975 
03976         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
03977                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
03978 
03979         if ( b->yy_is_our_buffer )
03980                 vhdlcodeYYfree((void *) b->yy_ch_buf  );
03981 
03982         vhdlcodeYYfree((void *) b  );
03983 }
03984 
03985 #ifndef __cplusplus
03986 extern int isatty (int );
03987 #endif /* __cplusplus */
03988     
03989 /* Initializes or reinitializes a buffer.
03990  * This function is sometimes called more than once on the same buffer,
03991  * such as during a vhdlcodeYYrestart() or at EOF.
03992  */
03993     static void vhdlcodeYY_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
03994 
03995 {
03996         int oerrno = errno;
03997     
03998         vhdlcodeYY_flush_buffer(b );
03999 
04000         b->yy_input_file = file;
04001         b->yy_fill_buffer = 1;
04002 
04003     /* If b is the current buffer, then vhdlcodeYY_init_buffer was _probably_
04004      * called from vhdlcodeYYrestart() or through yy_get_next_buffer.
04005      * In that case, we don't want to reset the lineno or column.
04006      */
04007     if (b != YY_CURRENT_BUFFER){
04008         b->yy_bs_lineno = 1;
04009         b->yy_bs_column = 0;
04010     }
04011 
04012         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
04013     
04014         errno = oerrno;
04015 }
04016 
04021     void vhdlcodeYY_flush_buffer (YY_BUFFER_STATE  b )
04022 {
04023         if ( ! b )
04024                 return;
04025 
04026         b->yy_n_chars = 0;
04027 
04028         /* We always need two end-of-buffer characters.  The first causes
04029          * a transition to the end-of-buffer state.  The second causes
04030          * a jam in that state.
04031          */
04032         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
04033         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
04034 
04035         b->yy_buf_pos = &b->yy_ch_buf[0];
04036 
04037         b->yy_at_bol = 1;
04038         b->yy_buffer_status = YY_BUFFER_NEW;
04039 
04040         if ( b == YY_CURRENT_BUFFER )
04041                 vhdlcodeYY_load_buffer_state( );
04042 }
04043 
04050 void vhdlcodeYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
04051 {
04052         if (new_buffer == NULL)
04053                 return;
04054 
04055         vhdlcodeYYensure_buffer_stack();
04056 
04057         /* This block is copied from vhdlcodeYY_switch_to_buffer. */
04058         if ( YY_CURRENT_BUFFER )
04059                 {
04060                 /* Flush out information for old buffer. */
04061                 *(yy_c_buf_p) = (yy_hold_char);
04062                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
04063                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
04064                 }
04065 
04066         /* Only push if top exists. Otherwise, replace top. */
04067         if (YY_CURRENT_BUFFER)
04068                 (yy_buffer_stack_top)++;
04069         YY_CURRENT_BUFFER_LVALUE = new_buffer;
04070 
04071         /* copied from vhdlcodeYY_switch_to_buffer. */
04072         vhdlcodeYY_load_buffer_state( );
04073         (yy_did_buffer_switch_on_eof) = 1;
04074 }
04075 
04080 void vhdlcodeYYpop_buffer_state (void)
04081 {
04082         if (!YY_CURRENT_BUFFER)
04083                 return;
04084 
04085         vhdlcodeYY_delete_buffer(YY_CURRENT_BUFFER );
04086         YY_CURRENT_BUFFER_LVALUE = NULL;
04087         if ((yy_buffer_stack_top) > 0)
04088                 --(yy_buffer_stack_top);
04089 
04090         if (YY_CURRENT_BUFFER) {
04091                 vhdlcodeYY_load_buffer_state( );
04092                 (yy_did_buffer_switch_on_eof) = 1;
04093         }
04094 }
04095 
04096 /* Allocates the stack if it does not exist.
04097  *  Guarantees space for at least one push.
04098  */
04099 static void vhdlcodeYYensure_buffer_stack (void)
04100 {
04101         int num_to_alloc;
04102     
04103         if (!(yy_buffer_stack)) {
04104 
04105                 /* First allocation is just for 2 elements, since we don't know if this
04106                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
04107                  * immediate realloc on the next call.
04108          */
04109                 num_to_alloc = 1;
04110                 (yy_buffer_stack) = (struct yy_buffer_state**)vhdlcodeYYalloc
04111                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
04112                                                                 );
04113                 
04114                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
04115                                 
04116                 (yy_buffer_stack_max) = num_to_alloc;
04117                 (yy_buffer_stack_top) = 0;
04118                 return;
04119         }
04120 
04121         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
04122 
04123                 /* Increase the buffer to prepare for a possible push. */
04124                 int grow_size = 8 /* arbitrary grow size */;
04125 
04126                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
04127                 (yy_buffer_stack) = (struct yy_buffer_state**)vhdlcodeYYrealloc
04128                                                                 ((yy_buffer_stack),
04129                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
04130                                                                 );
04131 
04132                 /* zero only the new slots.*/
04133                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
04134                 (yy_buffer_stack_max) = num_to_alloc;
04135         }
04136 }
04137 
04144 YY_BUFFER_STATE vhdlcodeYY_scan_buffer  (char * base, yy_size_t  size )
04145 {
04146         YY_BUFFER_STATE b;
04147     
04148         if ( size < 2 ||
04149              base[size-2] != YY_END_OF_BUFFER_CHAR ||
04150              base[size-1] != YY_END_OF_BUFFER_CHAR )
04151                 /* They forgot to leave room for the EOB's. */
04152                 return 0;
04153 
04154         b = (YY_BUFFER_STATE) vhdlcodeYYalloc(sizeof( struct yy_buffer_state )  );
04155         if ( ! b )
04156                 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_scan_buffer()" );
04157 
04158         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
04159         b->yy_buf_pos = b->yy_ch_buf = base;
04160         b->yy_is_our_buffer = 0;
04161         b->yy_input_file = 0;
04162         b->yy_n_chars = b->yy_buf_size;
04163         b->yy_is_interactive = 0;
04164         b->yy_at_bol = 1;
04165         b->yy_fill_buffer = 0;
04166         b->yy_buffer_status = YY_BUFFER_NEW;
04167 
04168         vhdlcodeYY_switch_to_buffer(b  );
04169 
04170         return b;
04171 }
04172 
04181 YY_BUFFER_STATE vhdlcodeYY_scan_string (yyconst char * yystr )
04182 {
04183     
04184         return vhdlcodeYY_scan_bytes(yystr,strlen(yystr) );
04185 }
04186 
04194 YY_BUFFER_STATE vhdlcodeYY_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
04195 {
04196         YY_BUFFER_STATE b;
04197         char *buf;
04198         yy_size_t n;
04199         int i;
04200     
04201         /* Get memory for full buffer, including space for trailing EOB's. */
04202         n = _yybytes_len + 2;
04203         buf = (char *) vhdlcodeYYalloc(n  );
04204         if ( ! buf )
04205                 YY_FATAL_ERROR( "out of dynamic memory in vhdlcodeYY_scan_bytes()" );
04206 
04207         for ( i = 0; i < _yybytes_len; ++i )
04208                 buf[i] = yybytes[i];
04209 
04210         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
04211 
04212         b = vhdlcodeYY_scan_buffer(buf,n );
04213         if ( ! b )
04214                 YY_FATAL_ERROR( "bad buffer in vhdlcodeYY_scan_bytes()" );
04215 
04216         /* It's okay to grow etc. this buffer, and we should throw it
04217          * away when we're done.
04218          */
04219         b->yy_is_our_buffer = 1;
04220 
04221         return b;
04222 }
04223 
04224 #ifndef YY_EXIT_FAILURE
04225 #define YY_EXIT_FAILURE 2
04226 #endif
04227 
04228 static void yy_fatal_error (yyconst char* msg )
04229 {
04230         (void) fprintf( stderr, "%s\n", msg );
04231         exit( YY_EXIT_FAILURE );
04232 }
04233 
04234 /* Redefine yyless() so it works in section 3 code. */
04235 
04236 #undef yyless
04237 #define yyless(n) \
04238         do \
04239                 { \
04240                 /* Undo effects of setting up vhdlcodeYYtext. */ \
04241         int yyless_macro_arg = (n); \
04242         YY_LESS_LINENO(yyless_macro_arg);\
04243                 vhdlcodeYYtext[vhdlcodeYYleng] = (yy_hold_char); \
04244                 (yy_c_buf_p) = vhdlcodeYYtext + yyless_macro_arg; \
04245                 (yy_hold_char) = *(yy_c_buf_p); \
04246                 *(yy_c_buf_p) = '\0'; \
04247                 vhdlcodeYYleng = yyless_macro_arg; \
04248                 } \
04249         while ( 0 )
04250 
04251 /* Accessor  methods (get/set functions) to struct members. */
04252 
04256 int vhdlcodeYYget_lineno  (void)
04257 {
04258         
04259     return vhdlcodeYYlineno;
04260 }
04261 
04265 FILE *vhdlcodeYYget_in  (void)
04266 {
04267         return vhdlcodeYYin;
04268 }
04269 
04273 FILE *vhdlcodeYYget_out  (void)
04274 {
04275         return vhdlcodeYYout;
04276 }
04277 
04281 int vhdlcodeYYget_leng  (void)
04282 {
04283         return vhdlcodeYYleng;
04284 }
04285 
04290 char *vhdlcodeYYget_text  (void)
04291 {
04292         return vhdlcodeYYtext;
04293 }
04294 
04299 void vhdlcodeYYset_lineno (int  line_number )
04300 {
04301     
04302     vhdlcodeYYlineno = line_number;
04303 }
04304 
04311 void vhdlcodeYYset_in (FILE *  in_str )
04312 {
04313         vhdlcodeYYin = in_str ;
04314 }
04315 
04316 void vhdlcodeYYset_out (FILE *  out_str )
04317 {
04318         vhdlcodeYYout = out_str ;
04319 }
04320 
04321 int vhdlcodeYYget_debug  (void)
04322 {
04323         return vhdlcodeYY_flex_debug;
04324 }
04325 
04326 void vhdlcodeYYset_debug (int  bdebug )
04327 {
04328         vhdlcodeYY_flex_debug = bdebug ;
04329 }
04330 
04331 static int yy_init_globals (void)
04332 {
04333         /* Initialization is the same as for the non-reentrant scanner.
04334      * This function is called from vhdlcodeYYlex_destroy(), so don't allocate here.
04335      */
04336 
04337     (yy_buffer_stack) = 0;
04338     (yy_buffer_stack_top) = 0;
04339     (yy_buffer_stack_max) = 0;
04340     (yy_c_buf_p) = (char *) 0;
04341     (yy_init) = 0;
04342     (yy_start) = 0;
04343 
04344 /* Defined in main.c */
04345 #ifdef YY_STDINIT
04346     vhdlcodeYYin = stdin;
04347     vhdlcodeYYout = stdout;
04348 #else
04349     vhdlcodeYYin = (FILE *) 0;
04350     vhdlcodeYYout = (FILE *) 0;
04351 #endif
04352 
04353     /* For future reference: Set errno on error, since we are called by
04354      * vhdlcodeYYlex_init()
04355      */
04356     return 0;
04357 }
04358 
04359 /* vhdlcodeYYlex_destroy is for both reentrant and non-reentrant scanners. */
04360 int vhdlcodeYYlex_destroy  (void)
04361 {
04362     
04363     /* Pop the buffer stack, destroying each element. */
04364         while(YY_CURRENT_BUFFER){
04365                 vhdlcodeYY_delete_buffer(YY_CURRENT_BUFFER  );
04366                 YY_CURRENT_BUFFER_LVALUE = NULL;
04367                 vhdlcodeYYpop_buffer_state();
04368         }
04369 
04370         /* Destroy the stack itself. */
04371         vhdlcodeYYfree((yy_buffer_stack) );
04372         (yy_buffer_stack) = NULL;
04373 
04374     /* Reset the globals. This is important in a non-reentrant scanner so the next time
04375      * vhdlcodeYYlex() is called, initialization will occur. */
04376     yy_init_globals( );
04377 
04378     return 0;
04379 }
04380 
04381 /*
04382  * Internal utility routines.
04383  */
04384 
04385 #ifndef yytext_ptr
04386 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
04387 {
04388         register int i;
04389         for ( i = 0; i < n; ++i )
04390                 s1[i] = s2[i];
04391 }
04392 #endif
04393 
04394 #ifdef YY_NEED_STRLEN
04395 static int yy_flex_strlen (yyconst char * s )
04396 {
04397         register int n;
04398         for ( n = 0; s[n]; ++n )
04399                 ;
04400 
04401         return n;
04402 }
04403 #endif
04404 
04405 void *vhdlcodeYYalloc (yy_size_t  size )
04406 {
04407         return (void *) malloc( size );
04408 }
04409 
04410 void *vhdlcodeYYrealloc  (void * ptr, yy_size_t  size )
04411 {
04412         /* The cast to (char *) in the following accommodates both
04413          * implementations that use char* generic pointers, and those
04414          * that use void* generic pointers.  It works with the latter
04415          * because both ANSI C and C++ allow castless assignment from
04416          * any pointer type to void*, and deal with argument conversions
04417          * as though doing an assignment.
04418          */
04419         return (void *) realloc( (char *) ptr, size );
04420 }
04421 
04422 void vhdlcodeYYfree (void * ptr )
04423 {
04424         free( (char *) ptr );   /* see vhdlcodeYYrealloc() for (char *) cast */
04425 }
04426 
04427 #define YYTABLES_NAME "yytables"
04428 
04429 #line 1452 "vhdlcode.l"
04430 
04431 
04432 
04433 /*@ ----------------------------------------------------------------------------
04434  */
04435 
04436 void resetVhdlCodeParserState()
04437 {
04438   g_vhdlKeyDict.setAutoDelete(TRUE);
04439   g_vhdlKeyDict.clear();
04440 }
04441 
04442 void parseVhdlCode(CodeOutputInterface &od,const char *className,const QCString &s, 
04443                   bool exBlock, const char *exName,FileDef *fd,
04444                   int startLine,int endLine,bool inlineFragment,
04445                   MemberDef *memberDef)
04446 {
04447   //printf("***parseCode() exBlock=%d exName=%s fd=%p\n",exBlock,exName,fd);
04448   if (s.isEmpty()) return;
04449   if (memberDef)
04450   {
04451     ClassDef *dd=memberDef->getClassDef();
04452     if (dd) g_CurrClass=dd->className();
04453     startLine--;
04454   }
04455   resetVhdlCodeParserState();
04456   g_code = &od;
04457   g_inputString   = s;
04458   g_inputPosition = 0;
04459   g_currentFontClass = 0;
04460   g_needsTermination = FALSE;
04461 
04462   if (endLine!=-1)
04463     g_inputLines  = endLine+1;
04464   else
04465     g_inputLines  = countLines();
04466 
04467   if (startLine!=-1)
04468     g_yyLineNr    = startLine;
04469   else
04470     g_yyLineNr    = 1;
04471 
04472 
04473   // g_theCallContext.clear();
04474   g_classScope    = className;
04475   g_exampleName   = exName;
04476   g_sourceFileDef = fd;
04477   if (exBlock && fd==0)
04478   {
04479     // create a dummy filedef for the example
04480     g_sourceFileDef = new FileDef("",exName);
04481   }
04482   if (g_sourceFileDef) 
04483   {
04484     setCurrentDoc(g_sourceFileDef->name(),g_sourceFileDef->getSourceFileBase());
04485   }
04486   g_currentDefinition = 0;
04487   g_currentMemberDef = 0;
04488   g_vhdlMember=0;
04489   if (!g_exampleName.isEmpty())
04490   {
04491     g_exampleFile = convertNameToFile(g_exampleName+"-example");
04492   }
04493   g_includeCodeFragment = inlineFragment;
04494   if (!memberDef)
04495   {
04496     startCodeLine();
04497   }
04498   // g_type.resize(0);
04499   // g_name.resize(0);
04500   // g_args.resize(0);
04501   g_parmName.resize(0);
04502   g_parmType.resize(0);
04503   if (memberDef) 
04504   {
04505     setParameterList(memberDef);
04506   }
04507   vhdlcodeYYrestart( vhdlcodeYYin );
04508   BEGIN( Bases );
04509   vhdlcodeYYlex();
04510   g_lexInit=TRUE;
04511   if (g_needsTermination)
04512   {
04513     endFontClass();
04514     g_code->endCodeLine();
04515   }
04516   if (exBlock && g_sourceFileDef)
04517   {
04518     // delete the temporary file definition used for this example
04519     delete g_sourceFileDef;
04520     g_sourceFileDef=0;
04521   }
04522   return;
04523 }
04524 
04525 void codeFreeVhdlScanner()
04526 {
04527 #if defined(YY_FLEX_SUBMINOR_VERSION) 
04528   if (g_lexInit)
04529   {
04530     vhdlcodeYYlex_destroy();
04531   }
04532 #endif
04533 }
04534 
04535 #if !defined(YY_FLEX_SUBMINOR_VERSION) 
04536 extern "C" { // some bogus code to keep the compiler happy
04537   void vhdlcodeYYdummy() { yy_flex_realloc(0,0); } 
04538 }
04539 #elif YY_FLEX_SUBMINOR_VERSION<33
04540 #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!"
04541 #endif
04542 
04543 
04544 
04545 
04546 



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