Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

AtomLexer.C

Go to the documentation of this file.
00001 /* A lexical scanner generated by flex */
00002 
00003 /* Scanner skeleton version:
00004  * $Header: /home/cvs/vmd/cvsroot/vmd/src/AtomLexer.C,v 1.19 2011/03/12 19:27:37 johns Exp $
00005  */
00006 
00007 #define FLEX_SCANNER
00008 #define YY_FLEX_MAJOR_VERSION 2
00009 #define YY_FLEX_MINOR_VERSION 5
00010 
00011 #include <stdio.h>
00012 
00013 
00014 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
00015 #ifdef c_plusplus
00016 #ifndef __cplusplus
00017 #define __cplusplus
00018 #endif
00019 #endif
00020 
00021 
00022 #ifdef __cplusplus
00023 
00024 #include <stdlib.h>
00025 // #include <unistd.h>
00026 
00027 /* Use prototypes in function declarations. */
00028 #define YY_USE_PROTOS
00029 
00030 /* The "const" storage-class-modifier is valid. */
00031 #define YY_USE_CONST
00032 
00033 #else   /* ! __cplusplus */
00034 
00035 #if 1
00036 // #if __STDC__
00037 
00038 #define YY_USE_PROTOS
00039 #define YY_USE_CONST
00040 
00041 #endif  /* __STDC__ */
00042 #endif  /* ! __cplusplus */
00043 
00044 #ifdef __TURBOC__
00045  #pragma warn -rch
00046  #pragma warn -use
00047 #include <io.h>
00048 #include <stdlib.h>
00049 #define YY_USE_CONST
00050 #define YY_USE_PROTOS
00051 #endif
00052 
00053 #ifdef YY_USE_CONST
00054 #define yyconst const
00055 #else
00056 #define yyconst
00057 #endif
00058 
00059 
00060 #ifdef YY_USE_PROTOS
00061 #define YY_PROTO(proto) proto
00062 #else
00063 #define YY_PROTO(proto) ()
00064 #endif
00065 
00066 /* Returned upon end-of-file. */
00067 #define YY_NULL 0
00068 
00069 /* Promotes a possibly negative, possibly signed char to an unsigned
00070  * integer for use as an array index.  If the signed char is negative,
00071  * we want to instead treat it as an 8-bit unsigned char, hence the
00072  * double cast.
00073  */
00074 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00075 
00076 /* Enter a start condition.  This macro really ought to take a parameter,
00077  * but we do it the disgusting crufty way forced on us by the ()-less
00078  * definition of BEGIN.
00079  */
00080 #define BEGIN yy_start = 1 + 2 *
00081 
00082 /* Translate the current start state into a value that can be later handed
00083  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00084  * compatibility.
00085  */
00086 #define YY_START ((yy_start - 1) / 2)
00087 #define YYSTATE YY_START
00088 
00089 /* Action number for EOF rule of a given start state. */
00090 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00091 
00092 /* Special action meaning "start processing a new file". */
00093 #define YY_NEW_FILE yyrestart( yyin )
00094 
00095 #define YY_END_OF_BUFFER_CHAR 0
00096 
00097 /* Size of default input buffer. */
00098 #define YY_BUF_SIZE 16384
00099 
00100 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00101 
00102 extern int yyleng;
00103 extern FILE *yyin, *yyout;
00104 
00105 #define EOB_ACT_CONTINUE_SCAN 0
00106 #define EOB_ACT_END_OF_FILE 1
00107 #define EOB_ACT_LAST_MATCH 2
00108 
00109 /* The funky do-while in the following #define is used to turn the definition
00110  * int a single C statement (which needs a semi-colon terminator).  This
00111  * avoids problems with code like:
00112  *
00113  *      if ( condition_holds )
00114  *              yyless( 5 );
00115  *      else
00116  *              do_something_else();
00117  *
00118  * Prior to using the do-while the compiler would get upset at the
00119  * "else" because it interpreted the "if" statement as being all
00120  * done when it reached the ';' after the yyless() call.
00121  */
00122 
00123 /* Return all but the first 'n' matched characters back to the input stream. */
00124 
00125 #define yyless(n) \
00126         do \
00127                 { \
00128                 /* Undo effects of setting up yytext. */ \
00129                 *yy_cp = yy_hold_char; \
00130                 YY_RESTORE_YY_MORE_OFFSET \
00131                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
00132                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00133                 } \
00134         while ( 0 )
00135 
00136 #define unput(c) yyunput( c, yytext_ptr )
00137 
00138 /* The following is because we cannot portably get our hands on size_t
00139  * (without autoconf's help, which isn't available because we want
00140  * flex-generated scanners to compile on their own).
00141  */
00142 typedef unsigned int yy_size_t;
00143 
00144 
00145 struct yy_buffer_state
00146         {
00147         FILE *yy_input_file;
00148 
00149         char *yy_ch_buf;                /* input buffer */
00150         char *yy_buf_pos;               /* current position in input buffer */
00151 
00152         /* Size of input buffer in bytes, not including room for EOB
00153          * characters.
00154          */
00155         yy_size_t yy_buf_size;
00156 
00157         /* Number of characters read into yy_ch_buf, not including EOB
00158          * characters.
00159          */
00160         int yy_n_chars;
00161 
00162         /* Whether we "own" the buffer - i.e., we know we created it,
00163          * and can realloc() it to grow it, and should free() it to
00164          * delete it.
00165          */
00166         int yy_is_our_buffer;
00167 
00168         /* Whether this is an "interactive" input source; if so, and
00169          * if we're using stdio for input, then we want to use getc()
00170          * instead of fread(), to make sure we stop fetching input after
00171          * each newline.
00172          */
00173         int yy_is_interactive;
00174 
00175         /* Whether we're considered to be at the beginning of a line.
00176          * If so, '^' rules will be active on the next match, otherwise
00177          * not.
00178          */
00179         int yy_at_bol;
00180 
00181         /* Whether to try to fill the input buffer when we reach the
00182          * end of it.
00183          */
00184         int yy_fill_buffer;
00185 
00186         int yy_buffer_status;
00187 #define YY_BUFFER_NEW 0
00188 #define YY_BUFFER_NORMAL 1
00189         /* When an EOF's been seen but there's still some text to process
00190          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00191          * shouldn't try reading from the input source any more.  We might
00192          * still have a bunch of tokens to match, though, because of
00193          * possible backing-up.
00194          *
00195          * When we actually see the EOF, we change the status to "new"
00196          * (via yyrestart()), so that the user can continue scanning by
00197          * just pointing yyin at a new input file.
00198          */
00199 #define YY_BUFFER_EOF_PENDING 2
00200         };
00201 
00202 static YY_BUFFER_STATE yy_current_buffer = 0;
00203 
00204 /* We provide macros for accessing buffer states in case in the
00205  * future we want to put the buffer states in a more general
00206  * "scanner state".
00207  */
00208 #define YY_CURRENT_BUFFER yy_current_buffer
00209 
00210 
00211 /* yy_hold_char holds the character lost when yytext is formed. */
00212 static char yy_hold_char;
00213 
00214 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
00215 
00216 
00217 int yyleng;
00218 
00219 /* Points to current character in buffer. */
00220 static char *yy_c_buf_p = (char *) 0;
00221 static int yy_init = 1;         /* whether we need to initialize */
00222 static int yy_start = 0;        /* start state number */
00223 
00224 /* Flag which is used to allow yywrap()'s to do buffer switches
00225  * instead of setting up a fresh yyin.  A bit of a hack ...
00226  */
00227 static int yy_did_buffer_switch_on_eof;
00228 
00229 void yyrestart YY_PROTO(( FILE *input_file ));
00230 
00231 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
00232 void yy_load_buffer_state YY_PROTO(( void ));
00233 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
00234 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00235 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
00236 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00237 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
00238 
00239 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
00240 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
00241 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
00242 
00243 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
00244 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
00245 static void yy_flex_free YY_PROTO(( void * ));
00246 
00247 #define yy_new_buffer yy_create_buffer
00248 
00249 #define yy_set_interactive(is_interactive) \
00250         { \
00251         if ( ! yy_current_buffer ) \
00252                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00253         yy_current_buffer->yy_is_interactive = is_interactive; \
00254         }
00255 
00256 #define yy_set_bol(at_bol) \
00257         { \
00258         if ( ! yy_current_buffer ) \
00259                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00260         yy_current_buffer->yy_at_bol = at_bol; \
00261         }
00262 
00263 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
00264 
00265 typedef unsigned char YY_CHAR;
00266 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
00267 typedef int yy_state_type;
00268 extern char *yytext;
00269 #define yytext_ptr yytext
00270 
00271 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
00272 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
00273 static int yy_get_next_buffer YY_PROTO(( void ));
00274 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
00275 
00276 /* Done after the current pattern has been matched and before the
00277  * corresponding action - sets up yytext.
00278  */
00279 #define YY_DO_BEFORE_ACTION \
00280         yytext_ptr = yy_bp; \
00281         yyleng = (int) (yy_cp - yy_bp); \
00282         yy_hold_char = *yy_cp; \
00283         *yy_cp = '\0'; \
00284         yy_c_buf_p = yy_cp;
00285 
00286 #define YY_NUM_RULES 51
00287 #define YY_END_OF_BUFFER 52
00288 static yyconst short int yy_accept[155] =
00289     {   0,
00290         0,    0,   52,   50,   46,   46,   50,   23,   49,   43,
00291        50,   24,    2,    3,   42,   39,   40,   50,   41,   48,
00292        20,   25,   28,   30,   49,   49,   44,   49,   49,   49,
00293        49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
00294        50,   31,   23,   21,   23,   49,    4,   24,   22,   24,
00295        45,    0,    1,   47,    1,   48,   26,   27,   38,   29,
00296        49,   47,   49,   49,   49,   16,   34,   49,   49,   35,
00297        36,   33,   32,   49,   37,   49,   13,    5,   49,   49,
00298        49,   17,   49,   49,    5,   21,   23,   22,   24,   17,
00299         0,   47,   47,   47,   47,    4,   49,   49,   49,   49,
00300 
00301         6,   49,   49,   49,   49,   49,    0,    0,    0,    0,
00302         0,    1,   49,   14,   49,   49,   49,   49,   15,   49,
00303        49,    0,    0,   49,   49,   49,   49,   49,   18,   49,
00304        49,   49,   49,   49,   49,    7,   49,   49,   19,   49,
00305        49,   49,    8,   49,    9,   12,   49,   49,   49,   49,
00306        49,   11,   10,    0
00307     } ;
00308 
00309 static yyconst int yy_ec[256] =
00310     {   0,
00311         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00312         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00313         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00314         1,    2,    4,    5,    1,    6,    7,    8,    9,   10,
00315        11,   12,   13,    1,   14,   15,   16,   17,   17,   17,
00316        17,   17,   17,   17,   17,   17,   17,   18,    1,   19,
00317        20,   21,    1,   22,   23,   23,   23,   23,   24,   23,
00318        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
00319        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
00320         1,   25,    1,   26,   23,    1,   27,   28,   23,   29,
00321 
00322        30,   31,   32,   33,   34,   23,   23,   35,   36,   37,
00323        38,   39,   40,   41,   42,   43,   23,   23,   44,   45,
00324        23,   46,   47,   48,   49,   50,    1,    1,    1,    1,
00325         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00326         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00327         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00328         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00329         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00330         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00331         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00332 
00333         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00334         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00335         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00336         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00337         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00338         1,    1,    1,    1,    1
00339     } ;
00340 
00341 static yyconst int yy_meta[51] =
00342     {   0,
00343         1,    1,    1,    1,    2,    1,    1,    1,    2,    1,
00344         1,    1,    1,    1,    3,    1,    4,    1,    1,    1,
00345         1,    1,    4,    4,    1,    1,    4,    4,    4,    4,
00346         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
00347         4,    4,    4,    4,    4,    4,    1,    1,    1,    1
00348     } ;
00349 
00350 static yyconst short int yy_base[167] =
00351     {   0,
00352         0,    0,  323,  386,  386,  386,  286,   46,    0,  386,
00353       286,   43,  386,  386,  279,  386,  386,   38,  386,   39,
00354       386,  253,   37,  246,    0,   53,  386,   55,   36,   24,
00355        37,   47,   56,   58,   68,   66,   70,   64,   76,   82,
00356       162,  386,   77,  386,  106,    0,  386,   50,  386,   60,
00357       386,  184,  103,  178,  153,  106,  386,  386,  386,  386,
00358         0,  117,  120,   93,   99,   95,   97,  101,  109,  107,
00359       111,  113,  115,  117,  129,  121,  123,  130,  131,  132,
00360       140,  141,  149,  147,  386,  156,  175,  176,  178,  386,
00361       179,  125,    0,  189,    0,  160,  170,  169,  172,  178,
00362 
00363       179,  188,  186,  187,  190,  200,  183,  221,  225,  226,
00364       123,  100,  201,  199,  211,  210,  212,  219,  220,  228,
00365       226,  234,  255,  234,  232,  235,  242,  244,  245,  246,
00366       255,  253,  256,  266,  259,  274,  267,  270,  273,  276,
00367       284,  282,  280,  291,  290,  292,  293,  294,  308,  309,
00368       301,  305,  307,  386,  351,   82,  355,  358,   59,  361,
00369       364,  367,  370,  374,  378,  381
00370     } ;
00371 
00372 static yyconst short int yy_def[167] =
00373     {   0,
00374       154,    1,  154,  154,  154,  154,  154,  155,  156,  154,
00375       154,  157,  154,  154,  154,  154,  154,  154,  154,  158,
00376       154,  154,  154,  154,  159,  160,  154,  160,   28,   28,
00377        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00378       154,  154,  155,  154,  155,  156,  154,  157,  154,  157,
00379       154,  154,  154,  161,  154,  158,  154,  154,  154,  154,
00380       159,  162,  163,   28,   28,   28,   28,   28,   28,   28,
00381        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00382        28,   28,   28,   28,  154,  164,  155,  165,  157,  154,
00383       154,  161,  166,  162,  162,   28,   28,   28,   28,   28,
00384 
00385        28,   28,   28,   28,   28,   28,  164,  164,  165,  165,
00386       154,  154,   28,   28,   28,   28,   28,   28,   28,   28,
00387        28,  164,  165,   28,   28,   28,   28,   28,   28,   28,
00388        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00389        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00390        28,   28,   28,    0,  154,  154,  154,  154,  154,  154,
00391       154,  154,  154,  154,  154,  154
00392     } ;
00393 
00394 static yyconst short int yy_nxt[437] =
00395     {   0,
00396         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
00397        14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
00398        24,   25,   26,   26,    4,   27,   28,   26,   26,   29,
00399        30,   31,   26,   26,   32,   33,   34,   35,   36,   26,
00400        37,   38,   39,   40,   26,   26,   13,   41,   14,    4,
00401        44,   49,   52,   55,   53,   56,   58,   62,   49,   62,
00402        64,   62,   61,   62,   69,   64,   70,   50,   88,   63,
00403        45,   63,   64,   64,   50,   67,   72,   64,   64,   71,
00404        68,   44,   74,   64,   89,   46,   59,   75,   64,   73,
00405        81,   65,   64,   79,   64,   76,   66,   64,   77,   64,
00406 
00407        64,   45,   64,   80,   64,   64,   64,   64,   78,   64,
00408        86,   64,   64,   82,   83,   84,  112,   64,   64,   53,
00409        55,   94,   56,   64,   62,   94,   91,   96,   62,   64,
00410        87,   64,   91,   64,   64,   64,   64,   64,   64,  112,
00411        64,   93,   64,   64,   97,   64,   98,   64,   64,   64,
00412        64,   64,   64,   64,   64,  100,   64,   64,   64,   64,
00413        44,   99,   64,  101,   64,   64,   64,   64,  103,   53,
00414        64,   64,   64,   64,  102,  104,   64,   64,  105,   86,
00415       108,   64,   64,   64,   49,   64,   88,   44,   64,  106,
00416        64,  111,  111,   94,   93,  112,   64,   94,   90,   87,
00417 
00418       110,   64,   89,  113,  114,   64,   64,  108,   64,   85,
00419        64,   64,  115,   64,   64,   64,  119,  118,  116,   64,
00420        64,  117,   64,   64,   64,   86,   64,   64,   64,   64,
00421       120,   64,  121,   49,   88,   64,   64,   64,   86,  126,
00422        64,   64,   64,  124,  125,  122,   64,   64,   64,  110,
00423       123,   64,   64,   64,  127,   64,   64,  129,  122,  130,
00424       128,   64,   64,   88,   64,   60,  131,   64,  132,   64,
00425        64,   64,   57,   64,  134,   64,  133,  135,   64,  123,
00426        64,   64,  136,   64,  138,   64,   64,   64,  137,   64,
00427        51,   64,   64,   47,   64,   64,   64,   64,  139,  140,
00428 
00429        64,  142,   64,  143,  141,   42,   64,   64,   64,   64,
00430        64,  144,  145,  146,   64,   64,   64,   64,   64,  147,
00431        64,   64,  154,   64,  148,   64,   64,   64,   64,  149,
00432        64,   64,   64,   64,   64,   64,  151,   64,  152,  150,
00433       154,   64,  153,   64,   64,   64,   64,  154,   64,   64,
00434        64,   43,   43,   43,   43,   48,   48,   48,   48,   54,
00435        54,   54,   64,  154,   64,   92,  154,   92,   95,  154,
00436        95,   63,  154,   63,  107,  107,  107,  107,  109,  109,
00437       109,  109,   93,  154,   93,    3,  154,  154,  154,  154,
00438       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00439 
00440       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00441       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00442       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00443       154,  154,  154,  154,  154,  154
00444     } ;
00445 
00446 static yyconst short int yy_chk[437] =
00447     {   0,
00448         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00449         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00450         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00451         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00452         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00453         8,   12,   18,   20,   18,   20,   23,   26,   48,   28,
00454        30,   26,  159,   28,   30,   30,   31,   12,   50,   26,
00455         8,   28,   29,   31,   48,   29,   32,   29,   31,   31,
00456        29,   43,   33,   32,   50,  156,   23,   34,   32,   32,
00457        38,   28,   33,   36,   34,   34,   28,   33,   35,   34,
00458 
00459        38,   43,   36,   37,   35,   38,   37,   36,   35,   35,
00460        45,   37,   39,   39,   40,   40,  112,   39,   40,   53,
00461        56,   62,   56,   40,   63,   62,   53,   65,   63,   64,
00462        45,   66,   53,   67,   64,   65,   66,   68,   67,  111,
00463        65,   92,   68,   70,   68,   69,   69,   71,   70,   72,
00464        69,   73,   71,   74,   72,   75,   73,   76,   74,   77,
00465        86,   74,   76,   76,   77,   75,   78,   79,   80,   55,
00466        75,   78,   79,   80,   79,   81,   81,   82,   83,   87,
00467        86,   81,   82,   84,   88,   83,   89,  107,   84,   84,
00468        83,   91,   91,   94,   54,   91,   96,   94,   52,   87,
00469 
00470        88,   96,   89,   97,   98,   98,   97,  107,   99,   41,
00471        98,   97,   99,   99,  100,  101,  104,  103,  100,  100,
00472       101,  102,  103,  104,  102,  108,  105,  103,  104,  102,
00473       105,  105,  106,  109,  110,  114,  106,  113,  122,  116,
00474       114,  106,  113,  113,  115,  108,  116,  115,  117,  109,
00475       110,  116,  115,  117,  117,  118,  119,  120,  122,  121,
00476       118,  119,  121,  123,  120,   24,  124,  121,  125,  120,
00477       124,  126,   22,  125,  127,  124,  126,  128,  127,  123,
00478       128,  129,  130,  127,  132,  128,  129,  130,  131,  132,
00479        15,  131,  133,   11,  132,  135,  131,  133,  133,  134,
00480 
00481       135,  136,  134,  137,  135,    7,  138,  134,  137,  139,
00482       136,  138,  140,  141,  139,  136,  143,  140,  142,  142,
00483       141,  143,    3,  142,  144,  141,  145,  144,  146,  147,
00484       148,  145,  144,  146,  147,  148,  149,  151,  150,  148,
00485         0,  152,  151,  153,  149,  150,  152,    0,  153,  149,
00486       150,  155,  155,  155,  155,  157,  157,  157,  157,  158,
00487       158,  158,  160,    0,  160,  161,    0,  161,  162,    0,
00488       162,  163,    0,  163,  164,  164,  164,  164,  165,  165,
00489       165,  165,  166,    0,  166,  154,  154,  154,  154,  154,
00490       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00491 
00492       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00493       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00494       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
00495       154,  154,  154,  154,  154,  154
00496     } ;
00497 
00498 static yy_state_type yy_last_accepting_state;
00499 static char *yy_last_accepting_cpos;
00500 
00501 /* The intent behind this definition is that it'll catch
00502  * any uses of REJECT which flex missed.
00503  */
00504 #define REJECT reject_used_but_not_detected
00505 #define yymore() yymore_used_but_not_detected
00506 #define YY_MORE_ADJ 0
00507 #define YY_RESTORE_YY_MORE_OFFSET
00508 char *yytext;
00509 #line 1 "AtomLexer.l"
00510 #define INITIAL 0
00511 #line 3 "AtomLexer.l"
00512 
00513 
00514 /***************************************************************************
00515  *cr                                                                       
00516  *cr            (C) Copyright 1995-2011 The Board of Trustees of the           
00517  *cr                        University of Illinois                       
00518  *cr                         All Rights Reserved                        
00519  *cr                                                                   
00520  ***************************************************************************/
00521 
00522 /***************************************************************************
00523  * RCS INFORMATION:
00524  *
00525  *      $RCSfile: AtomLexer.C,v $
00526  *      $Author: johns $        $Locker:  $             $State: Exp $
00527  *      $Revision: 1.19 $       $Date: 2011/03/12 19:27:37 $
00528  *
00529  ***************************************************************************
00530  * DESCRIPTION:
00531  *
00532  * break atom selection information into its tokens
00533  *
00534  ***************************************************************************/
00535 
00536 
00537 // Avoid compilation problems on Redhat Linux 7.x and Windows.
00538 #define YY_ALWAYS_INTERACTIVE 1
00539 
00540 #include <stdlib.h>
00541 
00542 #if defined(ARCH_AIX4) || defined(ARCH_AIX3)
00543 #include <strings.h>
00544 #else
00545 #include <string.h>
00546 #endif
00547 
00548 #include "AtomParser.h"
00549 #include "y.tab.h"
00550 #include "Inform.h"
00551 #include "SymbolTable.h"
00552 
00553 /* redefine the input to come from a string */
00554 #undef input
00555 #undef unput
00556 #if 1
00557 #define YY_DECL extern "C" int yylex YY_PROTO(( void ))
00558 
00559 // this was compiled with flex, so I need a different input mechanism
00560 #undef YY_INPUT
00561 #define YY_INPUT(buf,result,max) { \
00562         int c = *atomparser_yystring; \
00563         result = (c == 0) ? YY_NULL : \
00564         (buf[0] = c, atomparser_yystring++, 1); \
00565 }
00566 #else
00567 // XXX Alternate input/unput routines, no longer used.
00568 #define input() (*atomparser_yystring++)
00569 #define unput(c) (*--atomparser_yystring = c)
00570 #endif
00571 
00572 /* Native Solaris lex has its own way of getting input when */
00573 /* using C++; lex_input() */
00574 #if 0
00575 //#if defined(ARCH_SOLARIS2) || defined(ARCH_SOLARIS2_64) || defined(ARCH_SOLARISX86)
00576 #undef lex_input
00577 #define lex_input() input()
00578 #endif
00579 
00580 /* Also, GCC on Solaris, and Sun C++ 5.x put "all" in read-only memory */
00581 /* which causes unput to core dump without this special case.          */
00582 /* This may also be a problem for other platforms, don't know yet      */
00583 #if defined(ARCH_SOLARIS2) || defined(ARCH_SOLARIS2_64) || defined(ARCH_SOLARISX86)
00584 #undef unput
00585 #define unput lex_unput_only_if_needed
00586 
00587 int lex_unput_only_if_needed(int c) {
00588   atomparser_yystring--;
00589   if (c != *atomparser_yystring) {
00590     *atomparser_yystring = c;
00591   }
00592   return c;
00593 }
00594 #endif
00595 
00596 #line 95 "AtomLexer.l"
00597  /* like_1A  catches raw words like 1A, 3', 5*A
00598                 (start with a number and contain an alpha or ', ", or *)
00599     like_C5' catches ones like C5' O*, O5*
00600                 (starts with an alpha and has a ', ", or *)
00601   */
00602  /*  Problem is that * is too easy to confuse, eg, "x* x"
00603    I won't worry about this until the next rewrite and only allow
00604    primes
00605 wierd           [\'\"\*]
00606   */
00607 
00608 #line 608 "lex.yy.c"
00609 
00610 /* Macros after this point can all be overridden by user definitions in
00611  * section 1.
00612  */
00613 
00614 #ifndef YY_SKIP_YYWRAP
00615 #ifdef __cplusplus
00616 extern "C" int yywrap YY_PROTO(( void ));
00617 #else
00618 extern int yywrap YY_PROTO(( void ));
00619 #endif
00620 #endif
00621 
00622 #ifndef YY_NO_UNPUT
00623 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
00624 #endif
00625 
00626 #ifndef yytext_ptr
00627 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
00628 #endif
00629 
00630 #ifdef YY_NEED_STRLEN
00631 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
00632 #endif
00633 
00634 #ifndef YY_NO_INPUT
00635 #ifdef __cplusplus
00636 static int yyinput YY_PROTO(( void ));
00637 #else
00638 static int input YY_PROTO(( void ));
00639 #endif
00640 #endif
00641 
00642 #if YY_STACK_USED
00643 static int yy_start_stack_ptr = 0;
00644 static int yy_start_stack_depth = 0;
00645 static int *yy_start_stack = 0;
00646 #ifndef YY_NO_PUSH_STATE
00647 static void yy_push_state YY_PROTO(( int new_state ));
00648 #endif
00649 #ifndef YY_NO_POP_STATE
00650 static void yy_pop_state YY_PROTO(( void ));
00651 #endif
00652 #ifndef YY_NO_TOP_STATE
00653 static int yy_top_state YY_PROTO(( void ));
00654 #endif
00655 
00656 #else
00657 #define YY_NO_PUSH_STATE 1
00658 #define YY_NO_POP_STATE 1
00659 #define YY_NO_TOP_STATE 1
00660 #endif
00661 
00662 #ifdef YY_MALLOC_DECL
00663 YY_MALLOC_DECL
00664 #else
00665 #if __STDC__
00666 #ifndef __cplusplus
00667 #include <stdlib.h>
00668 #endif
00669 #else
00670 /* Just try to get by without declaring the routines.  This will fail
00671  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
00672  * or sizeof(void*) != sizeof(int).
00673  */
00674 #endif
00675 #endif
00676 
00677 /* Amount of stuff to slurp up with each read. */
00678 #ifndef YY_READ_BUF_SIZE
00679 #define YY_READ_BUF_SIZE 8192
00680 #endif
00681 
00682 /* Copy whatever the last rule matched to the standard output. */
00683 
00684 #ifndef ECHO
00685 /* This used to be an fputs(), but since the string might contain NUL's,
00686  * we now use fwrite().
00687  */
00688 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
00689 #endif
00690 
00691 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
00692  * is returned in "result".
00693  */
00694 #ifndef YY_INPUT
00695 #define YY_INPUT(buf,result,max_size) \
00696         if ( yy_current_buffer->yy_is_interactive ) \
00697                 { \
00698                 int c = '*', n; \
00699                 for ( n = 0; n < max_size && \
00700                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
00701                         buf[n] = (char) c; \
00702                 if ( c == '\n' ) \
00703                         buf[n++] = (char) c; \
00704                 if ( c == EOF && ferror( yyin ) ) \
00705                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
00706                 result = n; \
00707                 } \
00708         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
00709                   && ferror( yyin ) ) \
00710                 YY_FATAL_ERROR( "input in flex scanner failed" );
00711 #endif
00712 
00713 /* No semi-colon after return; correct usage is to write "yyterminate();" -
00714  * we don't want an extra ';' after the "return" because that will cause
00715  * some compilers to complain about unreachable statements.
00716  */
00717 #ifndef yyterminate
00718 #define yyterminate() return YY_NULL
00719 #endif
00720 
00721 /* Number of entries by which start-condition stack grows. */
00722 #ifndef YY_START_STACK_INCR
00723 #define YY_START_STACK_INCR 25
00724 #endif
00725 
00726 /* Report a fatal error. */
00727 #ifndef YY_FATAL_ERROR
00728 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
00729 #endif
00730 
00731 /* Default declaration of generated scanner - a define so the user can
00732  * easily add parameters.
00733  */
00734 #ifndef YY_DECL
00735 #define YY_DECL int yylex YY_PROTO(( void ))
00736 #endif
00737 
00738 /* Code executed at the beginning of each rule, after yytext and yyleng
00739  * have been set up.
00740  */
00741 #ifndef YY_USER_ACTION
00742 #define YY_USER_ACTION
00743 #endif
00744 
00745 /* Code executed at the end of each rule. */
00746 #ifndef YY_BREAK
00747 #define YY_BREAK break;
00748 #endif
00749 
00750 #define YY_RULE_SETUP \
00751         YY_USER_ACTION
00752 
00753 YY_DECL
00754         {
00755         register yy_state_type yy_current_state;
00756         register char *yy_cp, *yy_bp;
00757         register int yy_act;
00758 
00759 #line 112 "AtomLexer.l"
00760 
00761 #line 761 "lex.yy.c"
00762 
00763         if ( yy_init )
00764                 {
00765                 yy_init = 0;
00766 
00767 #ifdef YY_USER_INIT
00768                 YY_USER_INIT;
00769 #endif
00770 
00771                 if ( ! yy_start )
00772                         yy_start = 1;   /* first start state */
00773 
00774                 if ( ! yyin )
00775                         yyin = stdin;
00776 
00777                 if ( ! yyout )
00778                         yyout = stdout;
00779 
00780                 if ( ! yy_current_buffer )
00781                         yy_current_buffer =
00782                                 yy_create_buffer( yyin, YY_BUF_SIZE );
00783 
00784                 yy_load_buffer_state();
00785                 }
00786 
00787         while ( 1 )             /* loops until end-of-file is reached */
00788                 {
00789                 yy_cp = yy_c_buf_p;
00790 
00791                 /* Support of yytext. */
00792                 *yy_cp = yy_hold_char;
00793 
00794                 /* yy_bp points to the position in yy_ch_buf of the start of
00795                  * the current run.
00796                  */
00797                 yy_bp = yy_cp;
00798 
00799                 yy_current_state = yy_start;
00800 yy_match:
00801                 do
00802                         {
00803                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
00804                         if ( yy_accept[yy_current_state] )
00805                                 {
00806                                 yy_last_accepting_state = yy_current_state;
00807                                 yy_last_accepting_cpos = yy_cp;
00808                                 }
00809                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
00810                                 {
00811                                 yy_current_state = (int) yy_def[yy_current_state];
00812                                 if ( yy_current_state >= 155 )
00813                                         yy_c = yy_meta[(unsigned int) yy_c];
00814                                 }
00815                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
00816                         ++yy_cp;
00817                         }
00818                 while ( yy_base[yy_current_state] != 386 );
00819 
00820 yy_find_action:
00821                 yy_act = yy_accept[yy_current_state];
00822                 if ( yy_act == 0 )
00823                         { /* have to back up */
00824                         yy_cp = yy_last_accepting_cpos;
00825                         yy_current_state = yy_last_accepting_state;
00826                         yy_act = yy_accept[yy_current_state];
00827                         }
00828 
00829                 YY_DO_BEFORE_ACTION;
00830 
00831 
00832 do_action:      /* This label is used only to access EOF actions. */
00833 
00834 
00835                 switch ( yy_act )
00836         { /* beginning of action switch */
00837                         case 0: /* must back up */
00838                         /* undo the effects of YY_DO_BEFORE_ACTION */
00839                         *yy_cp = yy_hold_char;
00840                         yy_cp = yy_last_accepting_cpos;
00841                         yy_current_state = yy_last_accepting_state;
00842                         goto yy_find_action;
00843 
00844 case 1:
00845 YY_RULE_SETUP
00846 #line 113 "AtomLexer.l"
00847 {
00848                   yylval.dval = atof((char *) yytext);
00849                   return(FLOATVAL);
00850                 }
00851         YY_BREAK
00852 case 2:
00853 YY_RULE_SETUP
00854 #line 117 "AtomLexer.l"
00855 { return('('); /* allow '(' and '{' */ }
00856         YY_BREAK
00857 case 3:
00858 YY_RULE_SETUP
00859 #line 118 "AtomLexer.l"
00860 { return(')'); /* allow ')' and '}' */ }
00861         YY_BREAK
00862 case 4:
00863 YY_RULE_SETUP
00864 #line 119 "AtomLexer.l"
00865 { return(AND);}
00866         YY_BREAK
00867 case 5:
00868 YY_RULE_SETUP
00869 #line 120 "AtomLexer.l"
00870 { return(OR);}
00871         YY_BREAK
00872 case 6:
00873 YY_RULE_SETUP
00874 #line 121 "AtomLexer.l"
00875 { return(NOT);}
00876         YY_BREAK
00877 case 7:
00878 YY_RULE_SETUP
00879 #line 122 "AtomLexer.l"
00880 { return(WITHIN);}
00881         YY_BREAK
00882 case 8:
00883 YY_RULE_SETUP
00884 #line 123 "AtomLexer.l"
00885 { return(EXWITHIN);}
00886         YY_BREAK
00887 case 9:
00888 YY_RULE_SETUP
00889 #line 124 "AtomLexer.l"
00890 { return(PBWITHIN);}
00891         YY_BREAK
00892 case 10:
00893 YY_RULE_SETUP
00894 #line 125 "AtomLexer.l"
00895 { return(WITHINBONDS);}
00896         YY_BREAK
00897 case 11:
00898 YY_RULE_SETUP
00899 #line 126 "AtomLexer.l"
00900 { return(MAXRINGSIZE);}
00901         YY_BREAK
00902 case 12:
00903 YY_RULE_SETUP
00904 #line 127 "AtomLexer.l"
00905 { return(RINGSIZE);}
00906         YY_BREAK
00907 case 13:
00908 YY_RULE_SETUP
00909 #line 128 "AtomLexer.l"
00910 { return(OF);}
00911         YY_BREAK
00912 case 14:
00913 YY_RULE_SETUP
00914 #line 129 "AtomLexer.l"
00915 { return(FROM);}
00916         YY_BREAK
00917 case 15:
00918 YY_RULE_SETUP
00919 #line 130 "AtomLexer.l"
00920 { return(SAME);}
00921         YY_BREAK
00922 case 16:
00923 YY_RULE_SETUP
00924 #line 131 "AtomLexer.l"
00925 { return(AS);}
00926         YY_BREAK
00927 case 17:
00928 YY_RULE_SETUP
00929 #line 132 "AtomLexer.l"
00930 { return(THROUGH);}
00931         YY_BREAK
00932 case 18:
00933 YY_RULE_SETUP
00934 #line 133 "AtomLexer.l"
00935 { return(WHERE);}
00936         YY_BREAK
00937 case 19:
00938 YY_RULE_SETUP
00939 #line 134 "AtomLexer.l"
00940 { return(NEAREST);}
00941         YY_BREAK
00942 case 20:
00943 YY_RULE_SETUP
00944 #line 136 "AtomLexer.l"
00945 { return(RANGE);}
00946         YY_BREAK
00947 case 21:
00948 YY_RULE_SETUP
00949 #line 137 "AtomLexer.l"
00950 { /* escapes \ and " in a "string"  */
00951                   yylval.node = new atomparser_node(STRWORD);
00952                   yylval.node->sele.s = ((char *) yytext)+1;
00953                   /* GNU needs a "chop" */
00954                   yylval.node->sele.s.chop(1);
00955                   /* replace \\ with \ */
00956                   yylval.node->sele.s.gsub("\\\"", "\"");
00957                   /* replace \" with " */
00958                   yylval.node->sele.s.gsub("\\\\", "\\");
00959                   yylval.node->sele.st = DQ_STRING;
00960                   return STRWORD;
00961                 }
00962         YY_BREAK
00963 case 22:
00964 YY_RULE_SETUP
00965 #line 149 "AtomLexer.l"
00966 { /* escapes \ and ' in a 'string', */
00967                   /* for instance, this lets you do 'C5\''  */
00968                   yylval.node = new atomparser_node(STRWORD);
00969                   yylval.node->sele.s = ((char *) yytext)+1;
00970                   /* GNU needs a "chop" */
00971                   yylval.node->sele.s.chop(1);
00972                   /* replace \' with ' */
00973                   yylval.node->sele.s.gsub("\\'", "'");
00974                   /* replace \\ with \ */
00975                   yylval.node->sele.s.gsub("\\\\", "\\");
00976                   yylval.node->sele.st = SQ_STRING;
00977                   return STRWORD;
00978                 }
00979         YY_BREAK
00980 case 23:
00981 YY_RULE_SETUP
00982 #line 162 "AtomLexer.l"
00983 {
00984                   msgErr << "Unterminated double quoted string: "
00985                            << (char *) yytext << sendmsg;
00986                   return PARSEERROR;
00987                 }
00988         YY_BREAK
00989 case 24:
00990 YY_RULE_SETUP
00991 #line 167 "AtomLexer.l"
00992 {
00993                   msgErr << "Unterminated single quoted string: "
00994                            << (char *) yytext << sendmsg;
00995                   return PARSEERROR;
00996                 }
00997         YY_BREAK
00998 case 25:
00999 YY_RULE_SETUP
01000 #line 173 "AtomLexer.l"
01001 { return(NLT); /* these are for numeric comparisons */}
01002         YY_BREAK
01003 case 26:
01004 YY_RULE_SETUP
01005 #line 174 "AtomLexer.l"
01006 { return(NLE);}
01007         YY_BREAK
01008 case 27:
01009 YY_RULE_SETUP
01010 #line 175 "AtomLexer.l"
01011 { return(NEQ);}
01012         YY_BREAK
01013 case 28:
01014 YY_RULE_SETUP
01015 #line 176 "AtomLexer.l"
01016 { return(NEQ); /* many people use it */}
01017         YY_BREAK
01018 case 29:
01019 YY_RULE_SETUP
01020 #line 177 "AtomLexer.l"
01021 { return(NGE);}
01022         YY_BREAK
01023 case 30:
01024 YY_RULE_SETUP
01025 #line 178 "AtomLexer.l"
01026 { return(NGT);}
01027         YY_BREAK
01028 case 31:
01029 YY_RULE_SETUP
01030 #line 179 "AtomLexer.l"
01031 { return(NNE);}
01032         YY_BREAK
01033 case 32:
01034 YY_RULE_SETUP
01035 #line 181 "AtomLexer.l"
01036 { return(SLT); /* these are for string comparisons */}
01037         YY_BREAK
01038 case 33:
01039 YY_RULE_SETUP
01040 #line 182 "AtomLexer.l"
01041 { return(SLE);}
01042         YY_BREAK
01043 case 34:
01044 YY_RULE_SETUP
01045 #line 183 "AtomLexer.l"
01046 { return(SEQ);}
01047         YY_BREAK
01048 case 35:
01049 YY_RULE_SETUP
01050 #line 184 "AtomLexer.l"
01051 { return(SGE);}
01052         YY_BREAK
01053 case 36:
01054 YY_RULE_SETUP
01055 #line 185 "AtomLexer.l"
01056 { return(SGT);}
01057         YY_BREAK
01058 case 37:
01059 YY_RULE_SETUP
01060 #line 186 "AtomLexer.l"
01061 { return(SNE);}
01062         YY_BREAK
01063 case 38:
01064 YY_RULE_SETUP
01065 #line 187 "AtomLexer.l"
01066 { return(MATCH);}
01067         YY_BREAK
01068 case 39:
01069 YY_RULE_SETUP
01070 #line 189 "AtomLexer.l"
01071 { return(ADD);}
01072         YY_BREAK
01073 case 40:
01074 YY_RULE_SETUP
01075 #line 190 "AtomLexer.l"
01076 { return(SUB);}
01077         YY_BREAK
01078 case 41:
01079 YY_RULE_SETUP
01080 #line 191 "AtomLexer.l"
01081 { return(DIV);}
01082         YY_BREAK
01083 case 42:
01084 YY_RULE_SETUP
01085 #line 192 "AtomLexer.l"
01086 { return(MULT);}
01087         YY_BREAK
01088 case 43:
01089 YY_RULE_SETUP
01090 #line 193 "AtomLexer.l"
01091 { return(MOD);}
01092         YY_BREAK
01093 case 44:
01094 YY_RULE_SETUP
01095 #line 194 "AtomLexer.l"
01096 { return(EXP);}
01097         YY_BREAK
01098 case 45:
01099 YY_RULE_SETUP
01100 #line 195 "AtomLexer.l"
01101 { return(EXP);}
01102         YY_BREAK
01103 case 46:
01104 YY_RULE_SETUP
01105 #line 197 "AtomLexer.l"
01106 ;
01107         YY_BREAK
01108 case 47:
01109 YY_RULE_SETUP
01110 #line 199 "AtomLexer.l"
01111 { /* catch raw names like: */
01112                   /* 5' 1A C4' 3'A           */
01113                   yylval.node = new atomparser_node(STRWORD);
01114                   yylval.node->sele.s = (char *) yytext;
01115                   yylval.node->sele.st = RAW_STRING;
01116                   return STRWORD;
01117                 }
01118         YY_BREAK
01119 case 48:
01120 YY_RULE_SETUP
01121 #line 206 "AtomLexer.l"
01122 { yylval.ival = atoi((char *) yytext); 
01123                   return(INTVAL); 
01124                 }
01125         YY_BREAK
01126 case 49:
01127 YY_RULE_SETUP
01128 #line 209 "AtomLexer.l"
01129 {  
01130                        /* standard variable names */
01131                   yylval.node = new atomparser_node(STRWORD);
01132                   yylval.node->sele.s = (char *) yytext;
01133                   yylval.node->sele.st = RAW_STRING;
01134                   int len = strlen((char *) yytext);
01135                   int i;
01136                   if ((i= atomparser_yylookup((char *) yytext, len)) >= 0) {
01137                      yylval.node->extra_type = i;
01138                      if (atomparser_symbols->fctns.data(i)->is_a ==
01139                          SymbolTableElement::FUNCTION) {
01140                         yylval.node->node_type = FUNC;
01141                         return FUNC;
01142                      } else if (atomparser_symbols->fctns.data(i)->is_a ==
01143                                 SymbolTableElement::KEYWORD) {
01144                         yylval.node->node_type = KEY;
01145                         return KEY;
01146                      } else if (atomparser_symbols->fctns.data(i)->is_a ==
01147                                 SymbolTableElement::SINGLEWORD) {
01148                         yylval.node->node_type = SINGLE;
01149                         return SINGLE;
01150                      } else if (atomparser_symbols->fctns.data(i)->is_a ==
01151                                 SymbolTableElement::STRINGFCTN) {
01152                         yylval.node->node_type = STRFCTN;
01153                         return STRFCTN;
01154                      }
01155                   }
01156                   return STRWORD;
01157                 }
01158         YY_BREAK
01159 case 50:
01160 YY_RULE_SETUP
01161 #line 238 "AtomLexer.l"
01162 { msgErr << "Bad character:"
01163                          << int(*yytext) << ':'
01164                          << *yytext << sendmsg; 
01165                   return PARSEERROR; 
01166                 }
01167         YY_BREAK
01168 case 51:
01169 YY_RULE_SETUP
01170 #line 243 "AtomLexer.l"
01171 ECHO;
01172         YY_BREAK
01173 #line 1173 "lex.yy.c"
01174 case YY_STATE_EOF(INITIAL):
01175         yyterminate();
01176 
01177         case YY_END_OF_BUFFER:
01178                 {
01179                 /* Amount of text matched not including the EOB char. */
01180                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
01181 
01182                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
01183                 *yy_cp = yy_hold_char;
01184                 YY_RESTORE_YY_MORE_OFFSET
01185 
01186                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
01187                         {
01188                         /* We're scanning a new file or input source.  It's
01189                          * possible that this happened because the user
01190                          * just pointed yyin at a new source and called
01191                          * yylex().  If so, then we have to assure
01192                          * consistency between yy_current_buffer and our
01193                          * globals.  Here is the right place to do so, because
01194                          * this is the first action (other than possibly a
01195                          * back-up) that will match for the new input source.
01196                          */
01197                         yy_n_chars = yy_current_buffer->yy_n_chars;
01198                         yy_current_buffer->yy_input_file = yyin;
01199                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
01200                         }
01201 
01202                 /* Note that here we test for yy_c_buf_p "<=" to the position
01203                  * of the first EOB in the buffer, since yy_c_buf_p will
01204                  * already have been incremented past the NUL character
01205                  * (since all states make transitions on EOB to the
01206                  * end-of-buffer state).  Contrast this with the test
01207                  * in input().
01208                  */
01209                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01210                         { /* This was really a NUL. */
01211                         yy_state_type yy_next_state;
01212 
01213                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
01214 
01215                         yy_current_state = yy_get_previous_state();
01216 
01217                         /* Okay, we're now positioned to make the NUL
01218                          * transition.  We couldn't have
01219                          * yy_get_previous_state() go ahead and do it
01220                          * for us because it doesn't know how to deal
01221                          * with the possibility of jamming (and we don't
01222                          * want to build jamming into it because then it
01223                          * will run more slowly).
01224                          */
01225 
01226                         yy_next_state = yy_try_NUL_trans( yy_current_state );
01227 
01228                         yy_bp = yytext_ptr + YY_MORE_ADJ;
01229 
01230                         if ( yy_next_state )
01231                                 {
01232                                 /* Consume the NUL. */
01233                                 yy_cp = ++yy_c_buf_p;
01234                                 yy_current_state = yy_next_state;
01235                                 goto yy_match;
01236                                 }
01237 
01238                         else
01239                                 {
01240                                 yy_cp = yy_c_buf_p;
01241                                 goto yy_find_action;
01242                                 }
01243                         }
01244 
01245                 else switch ( yy_get_next_buffer() )
01246                         {
01247                         case EOB_ACT_END_OF_FILE:
01248                                 {
01249                                 yy_did_buffer_switch_on_eof = 0;
01250 
01251                                 if ( yywrap() )
01252                                         {
01253                                         /* Note: because we've taken care in
01254                                          * yy_get_next_buffer() to have set up
01255                                          * yytext, we can now set up
01256                                          * yy_c_buf_p so that if some total
01257                                          * hoser (like flex itself) wants to
01258                                          * call the scanner after we return the
01259                                          * YY_NULL, it'll still work - another
01260                                          * YY_NULL will get returned.
01261                                          */
01262                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
01263 
01264                                         yy_act = YY_STATE_EOF(YY_START);
01265                                         goto do_action;
01266                                         }
01267 
01268                                 else
01269                                         {
01270                                         if ( ! yy_did_buffer_switch_on_eof )
01271                                                 YY_NEW_FILE;
01272                                         }
01273                                 break;
01274                                 }
01275 
01276                         case EOB_ACT_CONTINUE_SCAN:
01277                                 yy_c_buf_p =
01278                                         yytext_ptr + yy_amount_of_matched_text;
01279 
01280                                 yy_current_state = yy_get_previous_state();
01281 
01282                                 yy_cp = yy_c_buf_p;
01283                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
01284                                 goto yy_match;
01285 
01286                         case EOB_ACT_LAST_MATCH:
01287                                 yy_c_buf_p =
01288                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
01289 
01290                                 yy_current_state = yy_get_previous_state();
01291 
01292                                 yy_cp = yy_c_buf_p;
01293                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
01294                                 goto yy_find_action;
01295                         }
01296                 break;
01297                 }
01298 
01299         default:
01300                 YY_FATAL_ERROR(
01301                         "fatal flex scanner internal error--no action found" );
01302         } /* end of action switch */
01303                 } /* end of scanning one token */
01304         } /* end of yylex */
01305 
01306 
01307 /* yy_get_next_buffer - try to read in a new buffer
01308  *
01309  * Returns a code representing an action:
01310  *      EOB_ACT_LAST_MATCH -
01311  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
01312  *      EOB_ACT_END_OF_FILE - end of file
01313  */
01314 
01315 static int yy_get_next_buffer()
01316         {
01317         register char *dest = yy_current_buffer->yy_ch_buf;
01318         register char *source = yytext_ptr;
01319         register int number_to_move, i;
01320         int ret_val;
01321 
01322         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
01323                 YY_FATAL_ERROR(
01324                 "fatal flex scanner internal error--end of buffer missed" );
01325 
01326         if ( yy_current_buffer->yy_fill_buffer == 0 )
01327                 { /* Don't try to fill the buffer, so this is an EOF. */
01328                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
01329                         {
01330                         /* We matched a single character, the EOB, so
01331                          * treat this as a final EOF.
01332                          */
01333                         return EOB_ACT_END_OF_FILE;
01334                         }
01335 
01336                 else
01337                         {
01338                         /* We matched some text prior to the EOB, first
01339                          * process it.
01340                          */
01341                         return EOB_ACT_LAST_MATCH;
01342                         }
01343                 }
01344 
01345         /* Try to read more data. */
01346 
01347         /* First move last chars to start of buffer. */
01348         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
01349 
01350         for ( i = 0; i < number_to_move; ++i )
01351                 *(dest++) = *(source++);
01352 
01353         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
01354                 /* don't do the read, it's not guaranteed to return an EOF,
01355                  * just force an EOF
01356                  */
01357                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
01358 
01359         else
01360                 {
01361                 int num_to_read =
01362                         yy_current_buffer->yy_buf_size - number_to_move - 1;
01363 
01364                 while ( num_to_read <= 0 )
01365                         { /* Not enough room in the buffer - grow it. */
01366 #ifdef YY_USES_REJECT
01367                         YY_FATAL_ERROR(
01368 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
01369 #else
01370 
01371                         /* just a shorter name for the current buffer */
01372                         YY_BUFFER_STATE b = yy_current_buffer;
01373 
01374                         int yy_c_buf_p_offset =
01375                                 (int) (yy_c_buf_p - b->yy_ch_buf);
01376 
01377                         if ( b->yy_is_our_buffer )
01378                                 {
01379                                 int new_size = b->yy_buf_size * 2;
01380 
01381                                 if ( new_size <= 0 )
01382                                         b->yy_buf_size += b->yy_buf_size / 8;
01383                                 else
01384                                         b->yy_buf_size *= 2;
01385 
01386                                 b->yy_ch_buf = (char *)
01387                                         /* Include room in for 2 EOB chars. */
01388                                         yy_flex_realloc( (void *) b->yy_ch_buf,
01389                                                          b->yy_buf_size + 2 );
01390                                 }
01391                         else
01392                                 /* Can't grow it, we don't own it. */
01393                                 b->yy_ch_buf = 0;
01394 
01395                         if ( ! b->yy_ch_buf )
01396                                 YY_FATAL_ERROR(
01397                                 "fatal error - scanner input buffer overflow" );
01398 
01399                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
01400 
01401                         num_to_read = yy_current_buffer->yy_buf_size -
01402                                                 number_to_move - 1;
01403 #endif
01404                         }
01405 
01406                 if ( num_to_read > YY_READ_BUF_SIZE )
01407                         num_to_read = YY_READ_BUF_SIZE;
01408 
01409                 /* Read in more data. */
01410                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
01411                         yy_n_chars, num_to_read );
01412 
01413                 yy_current_buffer->yy_n_chars = yy_n_chars;
01414                 }
01415 
01416         if ( yy_n_chars == 0 )
01417                 {
01418                 if ( number_to_move == YY_MORE_ADJ )
01419                         {
01420                         ret_val = EOB_ACT_END_OF_FILE;
01421                         yyrestart( yyin );
01422                         }
01423 
01424                 else
01425                         {
01426                         ret_val = EOB_ACT_LAST_MATCH;
01427                         yy_current_buffer->yy_buffer_status =
01428                                 YY_BUFFER_EOF_PENDING;
01429                         }
01430                 }
01431 
01432         else
01433                 ret_val = EOB_ACT_CONTINUE_SCAN;
01434 
01435         yy_n_chars += number_to_move;
01436         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
01437         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
01438 
01439         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
01440 
01441         return ret_val;
01442         }
01443 
01444 
01445 /* yy_get_previous_state - get the state just before the EOB char was reached */
01446 
01447 static yy_state_type yy_get_previous_state()
01448         {
01449         register yy_state_type yy_current_state;
01450         register char *yy_cp;
01451 
01452         yy_current_state = yy_start;
01453 
01454         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
01455                 {
01456                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
01457                 if ( yy_accept[yy_current_state] )
01458                         {
01459                         yy_last_accepting_state = yy_current_state;
01460                         yy_last_accepting_cpos = yy_cp;
01461                         }
01462                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01463                         {
01464                         yy_current_state = (int) yy_def[yy_current_state];
01465                         if ( yy_current_state >= 155 )
01466                                 yy_c = yy_meta[(unsigned int) yy_c];
01467                         }
01468                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01469                 }
01470 
01471         return yy_current_state;
01472         }
01473 
01474 
01475 /* yy_try_NUL_trans - try to make a transition on the NUL character
01476  *
01477  * synopsis
01478  *      next_state = yy_try_NUL_trans( current_state );
01479  */
01480 
01481 #ifdef YY_USE_PROTOS
01482 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
01483 #else
01484 static yy_state_type yy_try_NUL_trans( yy_current_state )
01485 yy_state_type yy_current_state;
01486 #endif
01487         {
01488         register int yy_is_jam;
01489         register char *yy_cp = yy_c_buf_p;
01490 
01491         register YY_CHAR yy_c = 1;
01492         if ( yy_accept[yy_current_state] )
01493                 {
01494                 yy_last_accepting_state = yy_current_state;
01495                 yy_last_accepting_cpos = yy_cp;
01496                 }
01497         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01498                 {
01499                 yy_current_state = (int) yy_def[yy_current_state];
01500                 if ( yy_current_state >= 155 )
01501                         yy_c = yy_meta[(unsigned int) yy_c];
01502                 }
01503         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01504         yy_is_jam = (yy_current_state == 154);
01505 
01506         return yy_is_jam ? 0 : yy_current_state;
01507         }
01508 
01509 
01510 #ifndef YY_NO_UNPUT
01511 #ifdef YY_USE_PROTOS
01512 static void yyunput( int c, register char *yy_bp )
01513 #else
01514 static void yyunput( c, yy_bp )
01515 int c;
01516 register char *yy_bp;
01517 #endif
01518         {
01519         register char *yy_cp = yy_c_buf_p;
01520 
01521         /* undo effects of setting up yytext */
01522         *yy_cp = yy_hold_char;
01523 
01524         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01525                 { /* need to shift things up to make room */
01526                 /* +2 for EOB chars. */
01527                 register int number_to_move = yy_n_chars + 2;
01528                 register char *dest = &yy_current_buffer->yy_ch_buf[
01529                                         yy_current_buffer->yy_buf_size + 2];
01530                 register char *source =
01531                                 &yy_current_buffer->yy_ch_buf[number_to_move];
01532 
01533                 while ( source > yy_current_buffer->yy_ch_buf )
01534                         *--dest = *--source;
01535 
01536                 yy_cp += (int) (dest - source);
01537                 yy_bp += (int) (dest - source);
01538                 yy_current_buffer->yy_n_chars =
01539                         yy_n_chars = yy_current_buffer->yy_buf_size;
01540 
01541                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01542                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
01543                 }
01544 
01545         *--yy_cp = (char) c;
01546 
01547 
01548         yytext_ptr = yy_bp;
01549         yy_hold_char = *yy_cp;
01550         yy_c_buf_p = yy_cp;
01551         }
01552 #endif  /* ifndef YY_NO_UNPUT */
01553 
01554 
01555 #ifdef __cplusplus
01556 static int yyinput()
01557 #else
01558 static int input()
01559 #endif
01560         {
01561         int c;
01562 
01563         *yy_c_buf_p = yy_hold_char;
01564 
01565         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
01566                 {
01567                 /* yy_c_buf_p now points to the character we want to return.
01568                  * If this occurs *before* the EOB characters, then it's a
01569                  * valid NUL; if not, then we've hit the end of the buffer.
01570                  */
01571                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01572                         /* This was really a NUL. */
01573                         *yy_c_buf_p = '\0';
01574 
01575                 else
01576                         { /* need more input */
01577                         int offset = yy_c_buf_p - yytext_ptr;
01578                         ++yy_c_buf_p;
01579 
01580                         switch ( yy_get_next_buffer() )
01581                                 {
01582                                 case EOB_ACT_LAST_MATCH:
01583                                         /* This happens because yy_g_n_b()
01584                                          * sees that we've accumulated a
01585                                          * token and flags that we need to
01586                                          * try matching the token before
01587                                          * proceeding.  But for input(),
01588                                          * there's no matching to consider.
01589                                          * So convert the EOB_ACT_LAST_MATCH
01590                                          * to EOB_ACT_END_OF_FILE.
01591                                          */
01592 
01593                                         /* Reset buffer status. */
01594                                         yyrestart( yyin );
01595 
01596                                         /* fall through */
01597 
01598                                 case EOB_ACT_END_OF_FILE:
01599                                         {
01600                                         if ( yywrap() )
01601                                                 return EOF;
01602 
01603                                         if ( ! yy_did_buffer_switch_on_eof )
01604                                                 YY_NEW_FILE;
01605 #ifdef __cplusplus
01606                                         return yyinput();
01607 #else
01608                                         return input();
01609 #endif
01610                                         }
01611 
01612                                 case EOB_ACT_CONTINUE_SCAN:
01613                                         yy_c_buf_p = yytext_ptr + offset;
01614                                         break;
01615                                 }
01616                         }
01617                 }
01618 
01619         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
01620         *yy_c_buf_p = '\0';     /* preserve yytext */
01621         yy_hold_char = *++yy_c_buf_p;
01622 
01623 
01624         return c;
01625         }
01626 
01627 
01628 #ifdef YY_USE_PROTOS
01629 void yyrestart( FILE *input_file )
01630 #else
01631 void yyrestart( input_file )
01632 FILE *input_file;
01633 #endif
01634         {
01635         if ( ! yy_current_buffer )
01636                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
01637 
01638         yy_init_buffer( yy_current_buffer, input_file );
01639         yy_load_buffer_state();
01640         }
01641 
01642 
01643 #ifdef YY_USE_PROTOS
01644 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
01645 #else
01646 void yy_switch_to_buffer( new_buffer )
01647 YY_BUFFER_STATE new_buffer;
01648 #endif
01649         {
01650         if ( yy_current_buffer == new_buffer )
01651                 return;
01652 
01653         if ( yy_current_buffer )
01654                 {
01655                 /* Flush out information for old buffer. */
01656                 *yy_c_buf_p = yy_hold_char;
01657                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
01658                 yy_current_buffer->yy_n_chars = yy_n_chars;
01659                 }
01660 
01661         yy_current_buffer = new_buffer;
01662         yy_load_buffer_state();
01663 
01664         /* We don't actually know whether we did this switch during
01665          * EOF (yywrap()) processing, but the only time this flag
01666          * is looked at is after yywrap() is called, so it's safe
01667          * to go ahead and always set it.
01668          */
01669         yy_did_buffer_switch_on_eof = 1;
01670         }
01671 
01672 
01673 #ifdef YY_USE_PROTOS
01674 void yy_load_buffer_state( void )
01675 #else
01676 void yy_load_buffer_state()
01677 #endif
01678         {
01679         yy_n_chars = yy_current_buffer->yy_n_chars;
01680         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
01681         yyin = yy_current_buffer->yy_input_file;
01682         yy_hold_char = *yy_c_buf_p;
01683         }
01684 
01685 
01686 #ifdef YY_USE_PROTOS
01687 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
01688 #else
01689 YY_BUFFER_STATE yy_create_buffer( file, size )
01690 FILE *file;
01691 int size;
01692 #endif
01693         {
01694         YY_BUFFER_STATE b;
01695 
01696         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01697         if ( ! b )
01698                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01699 
01700         b->yy_buf_size = size;
01701 
01702         /* yy_ch_buf has to be 2 characters longer than the size given because
01703          * we need to put in 2 end-of-buffer characters.
01704          */
01705         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
01706         if ( ! b->yy_ch_buf )
01707                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01708 
01709         b->yy_is_our_buffer = 1;
01710 
01711         yy_init_buffer( b, file );
01712 
01713         return b;
01714         }
01715 
01716 
01717 #ifdef YY_USE_PROTOS
01718 void yy_delete_buffer( YY_BUFFER_STATE b )
01719 #else
01720 void yy_delete_buffer( b )
01721 YY_BUFFER_STATE b;
01722 #endif
01723         {
01724         if ( ! b )
01725                 return;
01726 
01727         if ( b == yy_current_buffer )
01728                 yy_current_buffer = (YY_BUFFER_STATE) 0;
01729 
01730         if ( b->yy_is_our_buffer )
01731                 yy_flex_free( (void *) b->yy_ch_buf );
01732 
01733         yy_flex_free( (void *) b );
01734         }
01735 
01736 
01737 #ifndef YY_ALWAYS_INTERACTIVE
01738 #ifndef YY_NEVER_INTERACTIVE
01739 extern int isatty YY_PROTO(( int ));
01740 #endif
01741 #endif
01742 
01743 #ifdef YY_USE_PROTOS
01744 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
01745 #else
01746 void yy_init_buffer( b, file )
01747 YY_BUFFER_STATE b;
01748 FILE *file;
01749 #endif
01750 
01751 
01752         {
01753         yy_flush_buffer( b );
01754 
01755         b->yy_input_file = file;
01756         b->yy_fill_buffer = 1;
01757 
01758 #if YY_ALWAYS_INTERACTIVE
01759         b->yy_is_interactive = 1;
01760 #else
01761 #if YY_NEVER_INTERACTIVE
01762         b->yy_is_interactive = 0;
01763 #else
01764         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
01765 #endif
01766 #endif
01767         }
01768 
01769 
01770 #ifdef YY_USE_PROTOS
01771 void yy_flush_buffer( YY_BUFFER_STATE b )
01772 #else
01773 void yy_flush_buffer( b )
01774 YY_BUFFER_STATE b;
01775 #endif
01776 
01777         {
01778         if ( ! b )
01779                 return;
01780 
01781         b->yy_n_chars = 0;
01782 
01783         /* We always need two end-of-buffer characters.  The first causes
01784          * a transition to the end-of-buffer state.  The second causes
01785          * a jam in that state.
01786          */
01787         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
01788         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
01789 
01790         b->yy_buf_pos = &b->yy_ch_buf[0];
01791 
01792         b->yy_at_bol = 1;
01793         b->yy_buffer_status = YY_BUFFER_NEW;
01794 
01795         if ( b == yy_current_buffer )
01796                 yy_load_buffer_state();
01797         }
01798 
01799 
01800 #ifndef YY_NO_SCAN_BUFFER
01801 #ifdef YY_USE_PROTOS
01802 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
01803 #else
01804 YY_BUFFER_STATE yy_scan_buffer( base, size )
01805 char *base;
01806 yy_size_t size;
01807 #endif
01808         {
01809         YY_BUFFER_STATE b;
01810 
01811         if ( size < 2 ||
01812              base[size-2] != YY_END_OF_BUFFER_CHAR ||
01813              base[size-1] != YY_END_OF_BUFFER_CHAR )
01814                 /* They forgot to leave room for the EOB's. */
01815                 return 0;
01816 
01817         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01818         if ( ! b )
01819                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
01820 
01821         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
01822         b->yy_buf_pos = b->yy_ch_buf = base;
01823         b->yy_is_our_buffer = 0;
01824         b->yy_input_file = 0;
01825         b->yy_n_chars = b->yy_buf_size;
01826         b->yy_is_interactive = 0;
01827         b->yy_at_bol = 1;
01828         b->yy_fill_buffer = 0;
01829         b->yy_buffer_status = YY_BUFFER_NEW;
01830 
01831         yy_switch_to_buffer( b );
01832 
01833         return b;
01834         }
01835 #endif
01836 
01837 
01838 #ifndef YY_NO_SCAN_STRING
01839 #ifdef YY_USE_PROTOS
01840 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
01841 #else
01842 YY_BUFFER_STATE yy_scan_string( yy_str )
01843 yyconst char *yy_str;
01844 #endif
01845         {
01846         int len;
01847         for ( len = 0; yy_str[len]; ++len )
01848                 ;
01849 
01850         return yy_scan_bytes( yy_str, len );
01851         }
01852 #endif
01853 
01854 
01855 #ifndef YY_NO_SCAN_BYTES
01856 #ifdef YY_USE_PROTOS
01857 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
01858 #else
01859 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
01860 yyconst char *bytes;
01861 int len;
01862 #endif
01863         {
01864         YY_BUFFER_STATE b;
01865         char *buf;
01866         yy_size_t n;
01867         int i;
01868 
01869         /* Get memory for full buffer, including space for trailing EOB's. */
01870         n = len + 2;
01871         buf = (char *) yy_flex_alloc( n );
01872         if ( ! buf )
01873                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
01874 
01875         for ( i = 0; i < len; ++i )
01876                 buf[i] = bytes[i];
01877 
01878         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
01879 
01880         b = yy_scan_buffer( buf, n );
01881         if ( ! b )
01882                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
01883 
01884         /* It's okay to grow etc. this buffer, and we should throw it
01885          * away when we're done.
01886          */
01887         b->yy_is_our_buffer = 1;
01888 
01889         return b;
01890         }
01891 #endif
01892 
01893 
01894 #ifndef YY_NO_PUSH_STATE
01895 #ifdef YY_USE_PROTOS
01896 static void yy_push_state( int new_state )
01897 #else
01898 static void yy_push_state( new_state )
01899 int new_state;
01900 #endif
01901         {
01902         if ( yy_start_stack_ptr >= yy_start_stack_depth )
01903                 {
01904                 yy_size_t new_size;
01905 
01906                 yy_start_stack_depth += YY_START_STACK_INCR;
01907                 new_size = yy_start_stack_depth * sizeof( int );
01908 
01909                 if ( ! yy_start_stack )
01910                         yy_start_stack = (int *) yy_flex_alloc( new_size );
01911 
01912                 else
01913                         yy_start_stack = (int *) yy_flex_realloc(
01914                                         (void *) yy_start_stack, new_size );
01915 
01916                 if ( ! yy_start_stack )
01917                         YY_FATAL_ERROR(
01918                         "out of memory expanding start-condition stack" );
01919                 }
01920 
01921         yy_start_stack[yy_start_stack_ptr++] = YY_START;
01922 
01923         BEGIN(new_state);
01924         }
01925 #endif
01926 
01927 
01928 #ifndef YY_NO_POP_STATE
01929 static void yy_pop_state()
01930         {
01931         if ( --yy_start_stack_ptr < 0 )
01932                 YY_FATAL_ERROR( "start-condition stack underflow" );
01933 
01934         BEGIN(yy_start_stack[yy_start_stack_ptr]);
01935         }
01936 #endif
01937 
01938 
01939 #ifndef YY_NO_TOP_STATE
01940 static int yy_top_state()
01941         {
01942         return yy_start_stack[yy_start_stack_ptr - 1];
01943         }
01944 #endif
01945 
01946 #ifndef YY_EXIT_FAILURE
01947 #define YY_EXIT_FAILURE 2
01948 #endif
01949 
01950 #ifdef YY_USE_PROTOS
01951 static void yy_fatal_error( yyconst char msg[] )
01952 #else
01953 static void yy_fatal_error( msg )
01954 char msg[];
01955 #endif
01956         {
01957         (void) fprintf( stderr, "%s\n", msg );
01958         exit( YY_EXIT_FAILURE );
01959         }
01960 
01961 
01962 
01963 /* Redefine yyless() so it works in section 3 code. */
01964 
01965 #undef yyless
01966 #define yyless(n) \
01967         do \
01968                 { \
01969                 /* Undo effects of setting up yytext. */ \
01970                 yytext[yyleng] = yy_hold_char; \
01971                 yy_c_buf_p = yytext + n; \
01972                 yy_hold_char = *yy_c_buf_p; \
01973                 *yy_c_buf_p = '\0'; \
01974                 yyleng = n; \
01975                 } \
01976         while ( 0 )
01977 
01978 
01979 /* Internal utility routines. */
01980 
01981 #ifndef yytext_ptr
01982 #ifdef YY_USE_PROTOS
01983 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
01984 #else
01985 static void yy_flex_strncpy( s1, s2, n )
01986 char *s1;
01987 yyconst char *s2;
01988 int n;
01989 #endif
01990         {
01991         register int i;
01992         for ( i = 0; i < n; ++i )
01993                 s1[i] = s2[i];
01994         }
01995 #endif
01996 
01997 #ifdef YY_NEED_STRLEN
01998 #ifdef YY_USE_PROTOS
01999 static int yy_flex_strlen( yyconst char *s )
02000 #else
02001 static int yy_flex_strlen( s )
02002 yyconst char *s;
02003 #endif
02004         {
02005         register int n;
02006         for ( n = 0; s[n]; ++n )
02007                 ;
02008 
02009         return n;
02010         }
02011 #endif
02012 
02013 
02014 #ifdef YY_USE_PROTOS
02015 static void *yy_flex_alloc( yy_size_t size )
02016 #else
02017 static void *yy_flex_alloc( size )
02018 yy_size_t size;
02019 #endif
02020         {
02021         return (void *) malloc( size );
02022         }
02023 
02024 #ifdef YY_USE_PROTOS
02025 static void *yy_flex_realloc( void *ptr, yy_size_t size )
02026 #else
02027 static void *yy_flex_realloc( ptr, size )
02028 void *ptr;
02029 yy_size_t size;
02030 #endif
02031         {
02032         /* The cast to (char *) in the following accommodates both
02033          * implementations that use char* generic pointers, and those
02034          * that use void* generic pointers.  It works with the latter
02035          * because both ANSI C and C++ allow castless assignment from
02036          * any pointer type to void*, and deal with argument conversions
02037          * as though doing an assignment.
02038          */
02039         return (void *) realloc( (char *) ptr, size );
02040         }
02041 
02042 #ifdef YY_USE_PROTOS
02043 static void yy_flex_free( void *ptr )
02044 #else
02045 static void yy_flex_free( ptr )
02046 void *ptr;
02047 #endif
02048         {
02049         free( ptr );
02050         }
02051 
02052 #if YY_MAIN
02053 int main()
02054         {
02055         yylex();
02056         return 0;
02057         }
02058 #endif
02059 #line 243 "AtomLexer.l"
02060 
02061 
02062 #include "SymbolTable.h"
02063 
02064 int atomparser_yylookup(const char *s, int) 
02065 {
02066   return atomparser_symbols->find_attribute(s);
02067 }
02068 
02069 // pointer to the input string
02070 char *atomparser_yystring;
02071 
02072 // pointer to the array of symbols
02073 SymbolTable *atomparser_symbols;
02074 
02075 

Generated on Wed May 16 01:48:58 2012 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002