Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   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.22 2019/01/17 21:20:58 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-2019 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.22 $       $Date: 2019/01/17 21:20:58 $
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_NO_INPUT 1
00558 #define YY_NO_UNPUT 1
00559 #define YY_DECL extern "C" int yylex YY_PROTO(( void ))
00560 
00561 // this was compiled with flex, so I need a different input mechanism
00562 #undef YY_INPUT
00563 #define YY_INPUT(buf,result,max) { \
00564         int c = *atomparser_yystring; \
00565         result = (c == 0) ? YY_NULL : \
00566         (buf[0] = c, atomparser_yystring++, 1); \
00567 }
00568 #else
00569 // XXX Alternate input/unput routines, no longer used.
00570 #define input() (*atomparser_yystring++)
00571 #define unput(c) (*--atomparser_yystring = c)
00572 #endif
00573 
00574 /* Native Solaris lex has its own way of getting input when */
00575 /* using C++; lex_input() */
00576 #if 0
00577 //#if defined(ARCH_SOLARIS2) || defined(ARCH_SOLARIS2_64) || defined(ARCH_SOLARISX86)
00578 #undef lex_input
00579 #define lex_input() input()
00580 #endif
00581 
00582 /* Also, GCC on Solaris, and Sun C++ 5.x put "all" in read-only memory */
00583 /* which causes unput to core dump without this special case.          */
00584 /* This may also be a problem for other platforms, don't know yet      */
00585 #if defined(ARCH_SOLARIS2) || defined(ARCH_SOLARIS2_64) || defined(ARCH_SOLARISX86)
00586 #undef unput
00587 #define unput lex_unput_only_if_needed
00588 
00589 int lex_unput_only_if_needed(int c) {
00590   atomparser_yystring--;
00591   if (c != *atomparser_yystring) {
00592     *atomparser_yystring = c;
00593   }
00594   return c;
00595 }
00596 #endif
00597 
00598 #line 95 "AtomLexer.l"
00599  /* like_1A  catches raw words like 1A, 3', 5*A
00600                 (start with a number and contain an alpha or ', ", or *)
00601     like_C5' catches ones like C5' O*, O5*
00602                 (starts with an alpha and has a ', ", or *)
00603   */
00604  /*  Problem is that * is too easy to confuse, eg, "x* x"
00605    I won't worry about this until the next rewrite and only allow
00606    primes
00607 wierd           [\'\"\*]
00608   */
00609 
00610 #line 608 "lex.yy.c"
00611 
00612 /* Macros after this point can all be overridden by user definitions in
00613  * section 1.
00614  */
00615 
00616 #ifndef YY_SKIP_YYWRAP
00617 #ifdef __cplusplus
00618 extern "C" int yywrap YY_PROTO(( void ));
00619 #else
00620 extern int yywrap YY_PROTO(( void ));
00621 #endif
00622 #endif
00623 
00624 #ifndef YY_NO_UNPUT
00625 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
00626 #endif
00627 
00628 #ifndef yytext_ptr
00629 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
00630 #endif
00631 
00632 #ifdef YY_NEED_STRLEN
00633 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
00634 #endif
00635 
00636 #ifndef YY_NO_INPUT
00637 #ifdef __cplusplus
00638 static int yyinput YY_PROTO(( void ));
00639 #else
00640 static int input YY_PROTO(( void ));
00641 #endif
00642 #endif
00643 
00644 #if YY_STACK_USED
00645 static int yy_start_stack_ptr = 0;
00646 static int yy_start_stack_depth = 0;
00647 static int *yy_start_stack = 0;
00648 #ifndef YY_NO_PUSH_STATE
00649 static void yy_push_state YY_PROTO(( int new_state ));
00650 #endif
00651 #ifndef YY_NO_POP_STATE
00652 static void yy_pop_state YY_PROTO(( void ));
00653 #endif
00654 #ifndef YY_NO_TOP_STATE
00655 static int yy_top_state YY_PROTO(( void ));
00656 #endif
00657 
00658 #else
00659 #define YY_NO_PUSH_STATE 1
00660 #define YY_NO_POP_STATE 1
00661 #define YY_NO_TOP_STATE 1
00662 #endif
00663 
00664 #ifdef YY_MALLOC_DECL
00665 YY_MALLOC_DECL
00666 #else
00667 #if __STDC__
00668 #ifndef __cplusplus
00669 #include <stdlib.h>
00670 #endif
00671 #else
00672 /* Just try to get by without declaring the routines.  This will fail
00673  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
00674  * or sizeof(void*) != sizeof(int).
00675  */
00676 #endif
00677 #endif
00678 
00679 /* Amount of stuff to slurp up with each read. */
00680 #ifndef YY_READ_BUF_SIZE
00681 #define YY_READ_BUF_SIZE 8192
00682 #endif
00683 
00684 /* Copy whatever the last rule matched to the standard output. */
00685 
00686 #ifndef ECHO
00687 /* This used to be an fputs(), but since the string might contain NUL's,
00688  * we now use fwrite().
00689  */
00690 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
00691 #endif
00692 
00693 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
00694  * is returned in "result".
00695  */
00696 #ifndef YY_INPUT
00697 #define YY_INPUT(buf,result,max_size) \
00698         if ( yy_current_buffer->yy_is_interactive ) \
00699                 { \
00700                 int c = '*', n; \
00701                 for ( n = 0; n < max_size && \
00702                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
00703                         buf[n] = (char) c; \
00704                 if ( c == '\n' ) \
00705                         buf[n++] = (char) c; \
00706                 if ( c == EOF && ferror( yyin ) ) \
00707                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
00708                 result = n; \
00709                 } \
00710         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
00711                   && ferror( yyin ) ) \
00712                 YY_FATAL_ERROR( "input in flex scanner failed" );
00713 #endif
00714 
00715 /* No semi-colon after return; correct usage is to write "yyterminate();" -
00716  * we don't want an extra ';' after the "return" because that will cause
00717  * some compilers to complain about unreachable statements.
00718  */
00719 #ifndef yyterminate
00720 #define yyterminate() return YY_NULL
00721 #endif
00722 
00723 /* Number of entries by which start-condition stack grows. */
00724 #ifndef YY_START_STACK_INCR
00725 #define YY_START_STACK_INCR 25
00726 #endif
00727 
00728 /* Report a fatal error. */
00729 #ifndef YY_FATAL_ERROR
00730 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
00731 #endif
00732 
00733 /* Default declaration of generated scanner - a define so the user can
00734  * easily add parameters.
00735  */
00736 #ifndef YY_DECL
00737 #define YY_DECL int yylex YY_PROTO(( void ))
00738 #endif
00739 
00740 /* Code executed at the beginning of each rule, after yytext and yyleng
00741  * have been set up.
00742  */
00743 #ifndef YY_USER_ACTION
00744 #define YY_USER_ACTION
00745 #endif
00746 
00747 /* Code executed at the end of each rule. */
00748 #ifndef YY_BREAK
00749 #define YY_BREAK break;
00750 #endif
00751 
00752 #define YY_RULE_SETUP \
00753         YY_USER_ACTION
00754 
00755 YY_DECL
00756         {
00757         register yy_state_type yy_current_state;
00758         register char *yy_cp, *yy_bp;
00759         register int yy_act;
00760 
00761 #line 112 "AtomLexer.l"
00762 
00763 #line 761 "lex.yy.c"
00764 
00765         if ( yy_init )
00766                 {
00767                 yy_init = 0;
00768 
00769 #ifdef YY_USER_INIT
00770                 YY_USER_INIT;
00771 #endif
00772 
00773                 if ( ! yy_start )
00774                         yy_start = 1;   /* first start state */
00775 
00776                 if ( ! yyin )
00777                         yyin = stdin;
00778 
00779                 if ( ! yyout )
00780                         yyout = stdout;
00781 
00782                 if ( ! yy_current_buffer )
00783                         yy_current_buffer =
00784                                 yy_create_buffer( yyin, YY_BUF_SIZE );
00785 
00786                 yy_load_buffer_state();
00787                 }
00788 
00789         while ( 1 )             /* loops until end-of-file is reached */
00790                 {
00791                 yy_cp = yy_c_buf_p;
00792 
00793                 /* Support of yytext. */
00794                 *yy_cp = yy_hold_char;
00795 
00796                 /* yy_bp points to the position in yy_ch_buf of the start of
00797                  * the current run.
00798                  */
00799                 yy_bp = yy_cp;
00800 
00801                 yy_current_state = yy_start;
00802 yy_match:
00803                 do
00804                         {
00805                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
00806                         if ( yy_accept[yy_current_state] )
00807                                 {
00808                                 yy_last_accepting_state = yy_current_state;
00809                                 yy_last_accepting_cpos = yy_cp;
00810                                 }
00811                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
00812                                 {
00813                                 yy_current_state = (int) yy_def[yy_current_state];
00814                                 if ( yy_current_state >= 155 )
00815                                         yy_c = yy_meta[(unsigned int) yy_c];
00816                                 }
00817                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
00818                         ++yy_cp;
00819                         }
00820                 while ( yy_base[yy_current_state] != 386 );
00821 
00822 yy_find_action:
00823                 yy_act = yy_accept[yy_current_state];
00824                 if ( yy_act == 0 )
00825                         { /* have to back up */
00826                         yy_cp = yy_last_accepting_cpos;
00827                         yy_current_state = yy_last_accepting_state;
00828                         yy_act = yy_accept[yy_current_state];
00829                         }
00830 
00831                 YY_DO_BEFORE_ACTION;
00832 
00833 
00834 do_action:      /* This label is used only to access EOF actions. */
00835 
00836 
00837                 switch ( yy_act )
00838         { /* beginning of action switch */
00839                         case 0: /* must back up */
00840                         /* undo the effects of YY_DO_BEFORE_ACTION */
00841                         *yy_cp = yy_hold_char;
00842                         yy_cp = yy_last_accepting_cpos;
00843                         yy_current_state = yy_last_accepting_state;
00844                         goto yy_find_action;
00845 
00846 case 1:
00847 YY_RULE_SETUP
00848 #line 113 "AtomLexer.l"
00849 {
00850                   yylval.dval = atof((char *) yytext);
00851                   return(FLOATVAL);
00852                 }
00853         YY_BREAK
00854 case 2:
00855 YY_RULE_SETUP
00856 #line 117 "AtomLexer.l"
00857 { return('('); /* allow '(' and '{' */ }
00858         YY_BREAK
00859 case 3:
00860 YY_RULE_SETUP
00861 #line 118 "AtomLexer.l"
00862 { return(')'); /* allow ')' and '}' */ }
00863         YY_BREAK
00864 case 4:
00865 YY_RULE_SETUP
00866 #line 119 "AtomLexer.l"
00867 { return(AND);}
00868         YY_BREAK
00869 case 5:
00870 YY_RULE_SETUP
00871 #line 120 "AtomLexer.l"
00872 { return(OR);}
00873         YY_BREAK
00874 case 6:
00875 YY_RULE_SETUP
00876 #line 121 "AtomLexer.l"
00877 { return(NOT);}
00878         YY_BREAK
00879 case 7:
00880 YY_RULE_SETUP
00881 #line 122 "AtomLexer.l"
00882 { return(WITHIN);}
00883         YY_BREAK
00884 case 8:
00885 YY_RULE_SETUP
00886 #line 123 "AtomLexer.l"
00887 { return(EXWITHIN);}
00888         YY_BREAK
00889 case 9:
00890 YY_RULE_SETUP
00891 #line 124 "AtomLexer.l"
00892 { return(PBWITHIN);}
00893         YY_BREAK
00894 case 10:
00895 YY_RULE_SETUP
00896 #line 125 "AtomLexer.l"
00897 { return(WITHINBONDS);}
00898         YY_BREAK
00899 case 11:
00900 YY_RULE_SETUP
00901 #line 126 "AtomLexer.l"
00902 { return(MAXRINGSIZE);}
00903         YY_BREAK
00904 case 12:
00905 YY_RULE_SETUP
00906 #line 127 "AtomLexer.l"
00907 { return(RINGSIZE);}
00908         YY_BREAK
00909 case 13:
00910 YY_RULE_SETUP
00911 #line 128 "AtomLexer.l"
00912 { return(OF);}
00913         YY_BREAK
00914 case 14:
00915 YY_RULE_SETUP
00916 #line 129 "AtomLexer.l"
00917 { return(FROM);}
00918         YY_BREAK
00919 case 15:
00920 YY_RULE_SETUP
00921 #line 130 "AtomLexer.l"
00922 { return(SAME);}
00923         YY_BREAK
00924 case 16:
00925 YY_RULE_SETUP
00926 #line 131 "AtomLexer.l"
00927 { return(AS);}
00928         YY_BREAK
00929 case 17:
00930 YY_RULE_SETUP
00931 #line 132 "AtomLexer.l"
00932 { return(THROUGH);}
00933         YY_BREAK
00934 case 18:
00935 YY_RULE_SETUP
00936 #line 133 "AtomLexer.l"
00937 { return(WHERE);}
00938         YY_BREAK
00939 case 19:
00940 YY_RULE_SETUP
00941 #line 134 "AtomLexer.l"
00942 { return(NEAREST);}
00943         YY_BREAK
00944 case 20:
00945 YY_RULE_SETUP
00946 #line 136 "AtomLexer.l"
00947 { return(RANGE);}
00948         YY_BREAK
00949 case 21:
00950 YY_RULE_SETUP
00951 #line 137 "AtomLexer.l"
00952 { /* escapes \ and " in a "string"  */
00953                   yylval.node = new atomparser_node(STRWORD);
00954                   yylval.node->sele.s = ((char *) yytext)+1;
00955                   /* GNU needs a "chop" */
00956                   yylval.node->sele.s.chop(1);
00957                   /* replace \\ with \ */
00958                   yylval.node->sele.s.gsub("\\\"", "\"");
00959                   /* replace \" with " */
00960                   yylval.node->sele.s.gsub("\\\\", "\\");
00961                   yylval.node->sele.st = DQ_STRING;
00962                   return STRWORD;
00963                 }
00964         YY_BREAK
00965 case 22:
00966 YY_RULE_SETUP
00967 #line 149 "AtomLexer.l"
00968 { /* escapes \ and ' in a 'string', */
00969                   /* for instance, this lets you do 'C5\''  */
00970                   yylval.node = new atomparser_node(STRWORD);
00971                   yylval.node->sele.s = ((char *) yytext)+1;
00972                   /* GNU needs a "chop" */
00973                   yylval.node->sele.s.chop(1);
00974                   /* replace \' with ' */
00975                   yylval.node->sele.s.gsub("\\'", "'");
00976                   /* replace \\ with \ */
00977                   yylval.node->sele.s.gsub("\\\\", "\\");
00978                   yylval.node->sele.st = SQ_STRING;
00979                   return STRWORD;
00980                 }
00981         YY_BREAK
00982 case 23:
00983 YY_RULE_SETUP
00984 #line 162 "AtomLexer.l"
00985 {
00986                   msgErr << "Unterminated double quoted string: "
00987                            << (char *) yytext << sendmsg;
00988                   return PARSEERROR;
00989                 }
00990         YY_BREAK
00991 case 24:
00992 YY_RULE_SETUP
00993 #line 167 "AtomLexer.l"
00994 {
00995                   msgErr << "Unterminated single quoted string: "
00996                            << (char *) yytext << sendmsg;
00997                   return PARSEERROR;
00998                 }
00999         YY_BREAK
01000 case 25:
01001 YY_RULE_SETUP
01002 #line 173 "AtomLexer.l"
01003 { return(NLT); /* these are for numeric comparisons */}
01004         YY_BREAK
01005 case 26:
01006 YY_RULE_SETUP
01007 #line 174 "AtomLexer.l"
01008 { return(NLE);}
01009         YY_BREAK
01010 case 27:
01011 YY_RULE_SETUP
01012 #line 175 "AtomLexer.l"
01013 { return(NEQ);}
01014         YY_BREAK
01015 case 28:
01016 YY_RULE_SETUP
01017 #line 176 "AtomLexer.l"
01018 { return(NEQ); /* many people use it */}
01019         YY_BREAK
01020 case 29:
01021 YY_RULE_SETUP
01022 #line 177 "AtomLexer.l"
01023 { return(NGE);}
01024         YY_BREAK
01025 case 30:
01026 YY_RULE_SETUP
01027 #line 178 "AtomLexer.l"
01028 { return(NGT);}
01029         YY_BREAK
01030 case 31:
01031 YY_RULE_SETUP
01032 #line 179 "AtomLexer.l"
01033 { return(NNE);}
01034         YY_BREAK
01035 case 32:
01036 YY_RULE_SETUP
01037 #line 181 "AtomLexer.l"
01038 { return(SLT); /* these are for string comparisons */}
01039         YY_BREAK
01040 case 33:
01041 YY_RULE_SETUP
01042 #line 182 "AtomLexer.l"
01043 { return(SLE);}
01044         YY_BREAK
01045 case 34:
01046 YY_RULE_SETUP
01047 #line 183 "AtomLexer.l"
01048 { return(SEQ);}
01049         YY_BREAK
01050 case 35:
01051 YY_RULE_SETUP
01052 #line 184 "AtomLexer.l"
01053 { return(SGE);}
01054         YY_BREAK
01055 case 36:
01056 YY_RULE_SETUP
01057 #line 185 "AtomLexer.l"
01058 { return(SGT);}
01059         YY_BREAK
01060 case 37:
01061 YY_RULE_SETUP
01062 #line 186 "AtomLexer.l"
01063 { return(SNE);}
01064         YY_BREAK
01065 case 38:
01066 YY_RULE_SETUP
01067 #line 187 "AtomLexer.l"
01068 { return(MATCH);}
01069         YY_BREAK
01070 case 39:
01071 YY_RULE_SETUP
01072 #line 189 "AtomLexer.l"
01073 { return(ADD);}
01074         YY_BREAK
01075 case 40:
01076 YY_RULE_SETUP
01077 #line 190 "AtomLexer.l"
01078 { return(SUB);}
01079         YY_BREAK
01080 case 41:
01081 YY_RULE_SETUP
01082 #line 191 "AtomLexer.l"
01083 { return(DIV);}
01084         YY_BREAK
01085 case 42:
01086 YY_RULE_SETUP
01087 #line 192 "AtomLexer.l"
01088 { return(MULT);}
01089         YY_BREAK
01090 case 43:
01091 YY_RULE_SETUP
01092 #line 193 "AtomLexer.l"
01093 { return(MOD);}
01094         YY_BREAK
01095 case 44:
01096 YY_RULE_SETUP
01097 #line 194 "AtomLexer.l"
01098 { return(EXP);}
01099         YY_BREAK
01100 case 45:
01101 YY_RULE_SETUP
01102 #line 195 "AtomLexer.l"
01103 { return(EXP);}
01104         YY_BREAK
01105 case 46:
01106 YY_RULE_SETUP
01107 #line 197 "AtomLexer.l"
01108 ;
01109         YY_BREAK
01110 case 47:
01111 YY_RULE_SETUP
01112 #line 199 "AtomLexer.l"
01113 { /* catch raw names like: */
01114                   /* 5' 1A C4' 3'A           */
01115                   yylval.node = new atomparser_node(STRWORD);
01116                   yylval.node->sele.s = (char *) yytext;
01117                   yylval.node->sele.st = RAW_STRING;
01118                   return STRWORD;
01119                 }
01120         YY_BREAK
01121 case 48:
01122 YY_RULE_SETUP
01123 #line 206 "AtomLexer.l"
01124 { yylval.ival = atoi((char *) yytext); 
01125                   return(INTVAL); 
01126                 }
01127         YY_BREAK
01128 case 49:
01129 YY_RULE_SETUP
01130 #line 209 "AtomLexer.l"
01131 {  
01132                        /* standard variable names */
01133                   yylval.node = new atomparser_node(STRWORD);
01134                   yylval.node->sele.s = (char *) yytext;
01135                   yylval.node->sele.st = RAW_STRING;
01136                   int len = strlen((char *) yytext);
01137                   int i;
01138                   if ((i= atomparser_yylookup((char *) yytext, len)) >= 0) {
01139                      yylval.node->extra_type = i;
01140                      if (atomparser_symbols->fctns.data(i)->is_a ==
01141                          SymbolTableElement::FUNCTION) {
01142                         yylval.node->node_type = FUNC;
01143                         return FUNC;
01144                      } else if (atomparser_symbols->fctns.data(i)->is_a ==
01145                                 SymbolTableElement::KEYWORD) {
01146                         yylval.node->node_type = KEY;
01147                         return KEY;
01148                      } else if (atomparser_symbols->fctns.data(i)->is_a ==
01149                                 SymbolTableElement::SINGLEWORD) {
01150                         yylval.node->node_type = SINGLE;
01151                         return SINGLE;
01152                      } else if (atomparser_symbols->fctns.data(i)->is_a ==
01153                                 SymbolTableElement::STRINGFCTN) {
01154                         yylval.node->node_type = STRFCTN;
01155                         return STRFCTN;
01156                      }
01157                   }
01158                   return STRWORD;
01159                 }
01160         YY_BREAK
01161 case 50:
01162 YY_RULE_SETUP
01163 #line 238 "AtomLexer.l"
01164 { msgErr << "Bad character:"
01165                          << int(*yytext) << ':'
01166                          << *yytext << sendmsg; 
01167                   return PARSEERROR; 
01168                 }
01169         YY_BREAK
01170 case 51:
01171 YY_RULE_SETUP
01172 #line 243 "AtomLexer.l"
01173 ECHO;
01174         YY_BREAK
01175 #line 1173 "lex.yy.c"
01176 case YY_STATE_EOF(INITIAL):
01177         yyterminate();
01178 
01179         case YY_END_OF_BUFFER:
01180                 {
01181                 /* Amount of text matched not including the EOB char. */
01182                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
01183 
01184                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
01185                 *yy_cp = yy_hold_char;
01186                 YY_RESTORE_YY_MORE_OFFSET
01187 
01188                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
01189                         {
01190                         /* We're scanning a new file or input source.  It's
01191                          * possible that this happened because the user
01192                          * just pointed yyin at a new source and called
01193                          * yylex().  If so, then we have to assure
01194                          * consistency between yy_current_buffer and our
01195                          * globals.  Here is the right place to do so, because
01196                          * this is the first action (other than possibly a
01197                          * back-up) that will match for the new input source.
01198                          */
01199                         yy_n_chars = yy_current_buffer->yy_n_chars;
01200                         yy_current_buffer->yy_input_file = yyin;
01201                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
01202                         }
01203 
01204                 /* Note that here we test for yy_c_buf_p "<=" to the position
01205                  * of the first EOB in the buffer, since yy_c_buf_p will
01206                  * already have been incremented past the NUL character
01207                  * (since all states make transitions on EOB to the
01208                  * end-of-buffer state).  Contrast this with the test
01209                  * in input().
01210                  */
01211                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01212                         { /* This was really a NUL. */
01213                         yy_state_type yy_next_state;
01214 
01215                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
01216 
01217                         yy_current_state = yy_get_previous_state();
01218 
01219                         /* Okay, we're now positioned to make the NUL
01220                          * transition.  We couldn't have
01221                          * yy_get_previous_state() go ahead and do it
01222                          * for us because it doesn't know how to deal
01223                          * with the possibility of jamming (and we don't
01224                          * want to build jamming into it because then it
01225                          * will run more slowly).
01226                          */
01227 
01228                         yy_next_state = yy_try_NUL_trans( yy_current_state );
01229 
01230                         yy_bp = yytext_ptr + YY_MORE_ADJ;
01231 
01232                         if ( yy_next_state )
01233                                 {
01234                                 /* Consume the NUL. */
01235                                 yy_cp = ++yy_c_buf_p;
01236                                 yy_current_state = yy_next_state;
01237                                 goto yy_match;
01238                                 }
01239 
01240                         else
01241                                 {
01242                                 yy_cp = yy_c_buf_p;
01243                                 goto yy_find_action;
01244                                 }
01245                         }
01246 
01247                 else switch ( yy_get_next_buffer() )
01248                         {
01249                         case EOB_ACT_END_OF_FILE:
01250                                 {
01251                                 yy_did_buffer_switch_on_eof = 0;
01252 
01253                                 if ( yywrap() )
01254                                         {
01255                                         /* Note: because we've taken care in
01256                                          * yy_get_next_buffer() to have set up
01257                                          * yytext, we can now set up
01258                                          * yy_c_buf_p so that if some total
01259                                          * hoser (like flex itself) wants to
01260                                          * call the scanner after we return the
01261                                          * YY_NULL, it'll still work - another
01262                                          * YY_NULL will get returned.
01263                                          */
01264                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
01265 
01266                                         yy_act = YY_STATE_EOF(YY_START);
01267                                         goto do_action;
01268                                         }
01269 
01270                                 else
01271                                         {
01272                                         if ( ! yy_did_buffer_switch_on_eof )
01273                                                 YY_NEW_FILE;
01274                                         }
01275                                 break;
01276                                 }
01277 
01278                         case EOB_ACT_CONTINUE_SCAN:
01279                                 yy_c_buf_p =
01280                                         yytext_ptr + yy_amount_of_matched_text;
01281 
01282                                 yy_current_state = yy_get_previous_state();
01283 
01284                                 yy_cp = yy_c_buf_p;
01285                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
01286                                 goto yy_match;
01287 
01288                         case EOB_ACT_LAST_MATCH:
01289                                 yy_c_buf_p =
01290                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
01291 
01292                                 yy_current_state = yy_get_previous_state();
01293 
01294                                 yy_cp = yy_c_buf_p;
01295                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
01296                                 goto yy_find_action;
01297                         }
01298                 break;
01299                 }
01300 
01301         default:
01302                 YY_FATAL_ERROR(
01303                         "fatal flex scanner internal error--no action found" );
01304         } /* end of action switch */
01305                 } /* end of scanning one token */
01306         } /* end of yylex */
01307 
01308 
01309 /* yy_get_next_buffer - try to read in a new buffer
01310  *
01311  * Returns a code representing an action:
01312  *      EOB_ACT_LAST_MATCH -
01313  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
01314  *      EOB_ACT_END_OF_FILE - end of file
01315  */
01316 
01317 static int yy_get_next_buffer()
01318         {
01319         register char *dest = yy_current_buffer->yy_ch_buf;
01320         register char *source = yytext_ptr;
01321         register int number_to_move, i;
01322         int ret_val;
01323 
01324         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
01325                 YY_FATAL_ERROR(
01326                 "fatal flex scanner internal error--end of buffer missed" );
01327 
01328         if ( yy_current_buffer->yy_fill_buffer == 0 )
01329                 { /* Don't try to fill the buffer, so this is an EOF. */
01330                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
01331                         {
01332                         /* We matched a single character, the EOB, so
01333                          * treat this as a final EOF.
01334                          */
01335                         return EOB_ACT_END_OF_FILE;
01336                         }
01337 
01338                 else
01339                         {
01340                         /* We matched some text prior to the EOB, first
01341                          * process it.
01342                          */
01343                         return EOB_ACT_LAST_MATCH;
01344                         }
01345                 }
01346 
01347         /* Try to read more data. */
01348 
01349         /* First move last chars to start of buffer. */
01350         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
01351 
01352         for ( i = 0; i < number_to_move; ++i )
01353                 *(dest++) = *(source++);
01354 
01355         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
01356                 /* don't do the read, it's not guaranteed to return an EOF,
01357                  * just force an EOF
01358                  */
01359                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
01360 
01361         else
01362                 {
01363                 int num_to_read =
01364                         yy_current_buffer->yy_buf_size - number_to_move - 1;
01365 
01366                 while ( num_to_read <= 0 )
01367                         { /* Not enough room in the buffer - grow it. */
01368 #ifdef YY_USES_REJECT
01369                         YY_FATAL_ERROR(
01370 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
01371 #else
01372 
01373                         /* just a shorter name for the current buffer */
01374                         YY_BUFFER_STATE b = yy_current_buffer;
01375 
01376                         int yy_c_buf_p_offset =
01377                                 (int) (yy_c_buf_p - b->yy_ch_buf);
01378 
01379                         if ( b->yy_is_our_buffer )
01380                                 {
01381                                 int new_size = b->yy_buf_size * 2;
01382 
01383                                 if ( new_size <= 0 )
01384                                         b->yy_buf_size += b->yy_buf_size / 8;
01385                                 else
01386                                         b->yy_buf_size *= 2;
01387 
01388                                 b->yy_ch_buf = (char *)
01389                                         /* Include room in for 2 EOB chars. */
01390                                         yy_flex_realloc( (void *) b->yy_ch_buf,
01391                                                          b->yy_buf_size + 2 );
01392                                 }
01393                         else
01394                                 /* Can't grow it, we don't own it. */
01395                                 b->yy_ch_buf = 0;
01396 
01397                         if ( ! b->yy_ch_buf )
01398                                 YY_FATAL_ERROR(
01399                                 "fatal error - scanner input buffer overflow" );
01400 
01401                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
01402 
01403                         num_to_read = yy_current_buffer->yy_buf_size -
01404                                                 number_to_move - 1;
01405 #endif
01406                         }
01407 
01408                 if ( num_to_read > YY_READ_BUF_SIZE )
01409                         num_to_read = YY_READ_BUF_SIZE;
01410 
01411                 /* Read in more data. */
01412                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
01413                         yy_n_chars, num_to_read );
01414 
01415                 yy_current_buffer->yy_n_chars = yy_n_chars;
01416                 }
01417 
01418         if ( yy_n_chars == 0 )
01419                 {
01420                 if ( number_to_move == YY_MORE_ADJ )
01421                         {
01422                         ret_val = EOB_ACT_END_OF_FILE;
01423                         yyrestart( yyin );
01424                         }
01425 
01426                 else
01427                         {
01428                         ret_val = EOB_ACT_LAST_MATCH;
01429                         yy_current_buffer->yy_buffer_status =
01430                                 YY_BUFFER_EOF_PENDING;
01431                         }
01432                 }
01433 
01434         else
01435                 ret_val = EOB_ACT_CONTINUE_SCAN;
01436 
01437         yy_n_chars += number_to_move;
01438         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
01439         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
01440 
01441         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
01442 
01443         return ret_val;
01444         }
01445 
01446 
01447 /* yy_get_previous_state - get the state just before the EOB char was reached */
01448 
01449 static yy_state_type yy_get_previous_state()
01450         {
01451         register yy_state_type yy_current_state;
01452         register char *yy_cp;
01453 
01454         yy_current_state = yy_start;
01455 
01456         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
01457                 {
01458                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
01459                 if ( yy_accept[yy_current_state] )
01460                         {
01461                         yy_last_accepting_state = yy_current_state;
01462                         yy_last_accepting_cpos = yy_cp;
01463                         }
01464                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01465                         {
01466                         yy_current_state = (int) yy_def[yy_current_state];
01467                         if ( yy_current_state >= 155 )
01468                                 yy_c = yy_meta[(unsigned int) yy_c];
01469                         }
01470                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01471                 }
01472 
01473         return yy_current_state;
01474         }
01475 
01476 
01477 /* yy_try_NUL_trans - try to make a transition on the NUL character
01478  *
01479  * synopsis
01480  *      next_state = yy_try_NUL_trans( current_state );
01481  */
01482 
01483 #ifdef YY_USE_PROTOS
01484 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
01485 #else
01486 static yy_state_type yy_try_NUL_trans( yy_current_state )
01487 yy_state_type yy_current_state;
01488 #endif
01489         {
01490         register int yy_is_jam;
01491         register char *yy_cp = yy_c_buf_p;
01492 
01493         register YY_CHAR yy_c = 1;
01494         if ( yy_accept[yy_current_state] )
01495                 {
01496                 yy_last_accepting_state = yy_current_state;
01497                 yy_last_accepting_cpos = yy_cp;
01498                 }
01499         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01500                 {
01501                 yy_current_state = (int) yy_def[yy_current_state];
01502                 if ( yy_current_state >= 155 )
01503                         yy_c = yy_meta[(unsigned int) yy_c];
01504                 }
01505         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01506         yy_is_jam = (yy_current_state == 154);
01507 
01508         return yy_is_jam ? 0 : yy_current_state;
01509         }
01510 
01511 
01512 #ifndef YY_NO_UNPUT
01513 #ifdef YY_USE_PROTOS
01514 static void yyunput( int c, register char *yy_bp )
01515 #else
01516 static void yyunput( c, yy_bp )
01517 int c;
01518 register char *yy_bp;
01519 #endif
01520         {
01521         register char *yy_cp = yy_c_buf_p;
01522 
01523         /* undo effects of setting up yytext */
01524         *yy_cp = yy_hold_char;
01525 
01526         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01527                 { /* need to shift things up to make room */
01528                 /* +2 for EOB chars. */
01529                 register int number_to_move = yy_n_chars + 2;
01530                 register char *dest = &yy_current_buffer->yy_ch_buf[
01531                                         yy_current_buffer->yy_buf_size + 2];
01532                 register char *source =
01533                                 &yy_current_buffer->yy_ch_buf[number_to_move];
01534 
01535                 while ( source > yy_current_buffer->yy_ch_buf )
01536                         *--dest = *--source;
01537 
01538                 yy_cp += (int) (dest - source);
01539                 yy_bp += (int) (dest - source);
01540                 yy_current_buffer->yy_n_chars =
01541                         yy_n_chars = yy_current_buffer->yy_buf_size;
01542 
01543                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01544                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
01545                 }
01546 
01547         *--yy_cp = (char) c;
01548 
01549 
01550         yytext_ptr = yy_bp;
01551         yy_hold_char = *yy_cp;
01552         yy_c_buf_p = yy_cp;
01553         }
01554 #endif  /* ifndef YY_NO_UNPUT */
01555 
01556 
01557 #if !defined(YY_NO_INPUT)
01558 #ifdef __cplusplus
01559 static int yyinput()
01560 #else
01561 static int input()
01562 #endif
01563         {
01564         int c;
01565 
01566         *yy_c_buf_p = yy_hold_char;
01567 
01568         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
01569                 {
01570                 /* yy_c_buf_p now points to the character we want to return.
01571                  * If this occurs *before* the EOB characters, then it's a
01572                  * valid NUL; if not, then we've hit the end of the buffer.
01573                  */
01574                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01575                         /* This was really a NUL. */
01576                         *yy_c_buf_p = '\0';
01577 
01578                 else
01579                         { /* need more input */
01580                         int offset = yy_c_buf_p - yytext_ptr;
01581                         ++yy_c_buf_p;
01582 
01583                         switch ( yy_get_next_buffer() )
01584                                 {
01585                                 case EOB_ACT_LAST_MATCH:
01586                                         /* This happens because yy_g_n_b()
01587                                          * sees that we've accumulated a
01588                                          * token and flags that we need to
01589                                          * try matching the token before
01590                                          * proceeding.  But for input(),
01591                                          * there's no matching to consider.
01592                                          * So convert the EOB_ACT_LAST_MATCH
01593                                          * to EOB_ACT_END_OF_FILE.
01594                                          */
01595 
01596                                         /* Reset buffer status. */
01597                                         yyrestart( yyin );
01598 
01599                                         /* fall through */
01600 
01601                                 case EOB_ACT_END_OF_FILE:
01602                                         {
01603                                         if ( yywrap() )
01604                                                 return EOF;
01605 
01606                                         if ( ! yy_did_buffer_switch_on_eof )
01607                                                 YY_NEW_FILE;
01608 #ifdef __cplusplus
01609                                         return yyinput();
01610 #else
01611                                         return input();
01612 #endif
01613                                         }
01614 
01615                                 case EOB_ACT_CONTINUE_SCAN:
01616                                         yy_c_buf_p = yytext_ptr + offset;
01617                                         break;
01618                                 }
01619                         }
01620                 }
01621 
01622         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
01623         *yy_c_buf_p = '\0';     /* preserve yytext */
01624         yy_hold_char = *++yy_c_buf_p;
01625 
01626 
01627         return c;
01628         }
01629 #endif // yyinput()
01630 
01631 #ifdef YY_USE_PROTOS
01632 void yyrestart( FILE *input_file )
01633 #else
01634 void yyrestart( input_file )
01635 FILE *input_file;
01636 #endif
01637         {
01638         if ( ! yy_current_buffer )
01639                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
01640 
01641         yy_init_buffer( yy_current_buffer, input_file );
01642         yy_load_buffer_state();
01643         }
01644 
01645 
01646 #ifdef YY_USE_PROTOS
01647 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
01648 #else
01649 void yy_switch_to_buffer( new_buffer )
01650 YY_BUFFER_STATE new_buffer;
01651 #endif
01652         {
01653         if ( yy_current_buffer == new_buffer )
01654                 return;
01655 
01656         if ( yy_current_buffer )
01657                 {
01658                 /* Flush out information for old buffer. */
01659                 *yy_c_buf_p = yy_hold_char;
01660                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
01661                 yy_current_buffer->yy_n_chars = yy_n_chars;
01662                 }
01663 
01664         yy_current_buffer = new_buffer;
01665         yy_load_buffer_state();
01666 
01667         /* We don't actually know whether we did this switch during
01668          * EOF (yywrap()) processing, but the only time this flag
01669          * is looked at is after yywrap() is called, so it's safe
01670          * to go ahead and always set it.
01671          */
01672         yy_did_buffer_switch_on_eof = 1;
01673         }
01674 
01675 
01676 #ifdef YY_USE_PROTOS
01677 void yy_load_buffer_state( void )
01678 #else
01679 void yy_load_buffer_state()
01680 #endif
01681         {
01682         yy_n_chars = yy_current_buffer->yy_n_chars;
01683         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
01684         yyin = yy_current_buffer->yy_input_file;
01685         yy_hold_char = *yy_c_buf_p;
01686         }
01687 
01688 
01689 #ifdef YY_USE_PROTOS
01690 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
01691 #else
01692 YY_BUFFER_STATE yy_create_buffer( file, size )
01693 FILE *file;
01694 int size;
01695 #endif
01696         {
01697         YY_BUFFER_STATE b;
01698 
01699         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01700         if ( ! b )
01701                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01702 
01703         b->yy_buf_size = size;
01704 
01705         /* yy_ch_buf has to be 2 characters longer than the size given because
01706          * we need to put in 2 end-of-buffer characters.
01707          */
01708         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
01709         if ( ! b->yy_ch_buf )
01710                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
01711 
01712         b->yy_is_our_buffer = 1;
01713 
01714         yy_init_buffer( b, file );
01715 
01716         return b;
01717         }
01718 
01719 
01720 #ifdef YY_USE_PROTOS
01721 void yy_delete_buffer( YY_BUFFER_STATE b )
01722 #else
01723 void yy_delete_buffer( b )
01724 YY_BUFFER_STATE b;
01725 #endif
01726         {
01727         if ( ! b )
01728                 return;
01729 
01730         if ( b == yy_current_buffer )
01731                 yy_current_buffer = (YY_BUFFER_STATE) 0;
01732 
01733         if ( b->yy_is_our_buffer )
01734                 yy_flex_free( (void *) b->yy_ch_buf );
01735 
01736         yy_flex_free( (void *) b );
01737         }
01738 
01739 
01740 #ifndef YY_ALWAYS_INTERACTIVE
01741 #ifndef YY_NEVER_INTERACTIVE
01742 extern int isatty YY_PROTO(( int ));
01743 #endif
01744 #endif
01745 
01746 #ifdef YY_USE_PROTOS
01747 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
01748 #else
01749 void yy_init_buffer( b, file )
01750 YY_BUFFER_STATE b;
01751 FILE *file;
01752 #endif
01753 
01754 
01755         {
01756         yy_flush_buffer( b );
01757 
01758         b->yy_input_file = file;
01759         b->yy_fill_buffer = 1;
01760 
01761 #if YY_ALWAYS_INTERACTIVE
01762         b->yy_is_interactive = 1;
01763 #else
01764 #if YY_NEVER_INTERACTIVE
01765         b->yy_is_interactive = 0;
01766 #else
01767         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
01768 #endif
01769 #endif
01770         }
01771 
01772 
01773 #ifdef YY_USE_PROTOS
01774 void yy_flush_buffer( YY_BUFFER_STATE b )
01775 #else
01776 void yy_flush_buffer( b )
01777 YY_BUFFER_STATE b;
01778 #endif
01779 
01780         {
01781         if ( ! b )
01782                 return;
01783 
01784         b->yy_n_chars = 0;
01785 
01786         /* We always need two end-of-buffer characters.  The first causes
01787          * a transition to the end-of-buffer state.  The second causes
01788          * a jam in that state.
01789          */
01790         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
01791         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
01792 
01793         b->yy_buf_pos = &b->yy_ch_buf[0];
01794 
01795         b->yy_at_bol = 1;
01796         b->yy_buffer_status = YY_BUFFER_NEW;
01797 
01798         if ( b == yy_current_buffer )
01799                 yy_load_buffer_state();
01800         }
01801 
01802 
01803 #ifndef YY_NO_SCAN_BUFFER
01804 #ifdef YY_USE_PROTOS
01805 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
01806 #else
01807 YY_BUFFER_STATE yy_scan_buffer( base, size )
01808 char *base;
01809 yy_size_t size;
01810 #endif
01811         {
01812         YY_BUFFER_STATE b;
01813 
01814         if ( size < 2 ||
01815              base[size-2] != YY_END_OF_BUFFER_CHAR ||
01816              base[size-1] != YY_END_OF_BUFFER_CHAR )
01817                 /* They forgot to leave room for the EOB's. */
01818                 return 0;
01819 
01820         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
01821         if ( ! b )
01822                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
01823 
01824         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
01825         b->yy_buf_pos = b->yy_ch_buf = base;
01826         b->yy_is_our_buffer = 0;
01827         b->yy_input_file = 0;
01828         b->yy_n_chars = b->yy_buf_size;
01829         b->yy_is_interactive = 0;
01830         b->yy_at_bol = 1;
01831         b->yy_fill_buffer = 0;
01832         b->yy_buffer_status = YY_BUFFER_NEW;
01833 
01834         yy_switch_to_buffer( b );
01835 
01836         return b;
01837         }
01838 #endif
01839 
01840 
01841 #ifndef YY_NO_SCAN_STRING
01842 #ifdef YY_USE_PROTOS
01843 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
01844 #else
01845 YY_BUFFER_STATE yy_scan_string( yy_str )
01846 yyconst char *yy_str;
01847 #endif
01848         {
01849         int len;
01850         for ( len = 0; yy_str[len]; ++len )
01851                 ;
01852 
01853         return yy_scan_bytes( yy_str, len );
01854         }
01855 #endif
01856 
01857 
01858 #ifndef YY_NO_SCAN_BYTES
01859 #ifdef YY_USE_PROTOS
01860 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
01861 #else
01862 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
01863 yyconst char *bytes;
01864 int len;
01865 #endif
01866         {
01867         YY_BUFFER_STATE b;
01868         char *buf;
01869         yy_size_t n;
01870         int i;
01871 
01872         /* Get memory for full buffer, including space for trailing EOB's. */
01873         n = len + 2;
01874         buf = (char *) yy_flex_alloc( n );
01875         if ( ! buf )
01876                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
01877 
01878         for ( i = 0; i < len; ++i )
01879                 buf[i] = bytes[i];
01880 
01881         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
01882 
01883         b = yy_scan_buffer( buf, n );
01884         if ( ! b )
01885                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
01886 
01887         /* It's okay to grow etc. this buffer, and we should throw it
01888          * away when we're done.
01889          */
01890         b->yy_is_our_buffer = 1;
01891 
01892         return b;
01893         }
01894 #endif
01895 
01896 
01897 #ifndef YY_NO_PUSH_STATE
01898 #ifdef YY_USE_PROTOS
01899 static void yy_push_state( int new_state )
01900 #else
01901 static void yy_push_state( new_state )
01902 int new_state;
01903 #endif
01904         {
01905         if ( yy_start_stack_ptr >= yy_start_stack_depth )
01906                 {
01907                 yy_size_t new_size;
01908 
01909                 yy_start_stack_depth += YY_START_STACK_INCR;
01910                 new_size = yy_start_stack_depth * sizeof( int );
01911 
01912                 if ( ! yy_start_stack )
01913                         yy_start_stack = (int *) yy_flex_alloc( new_size );
01914 
01915                 else
01916                         yy_start_stack = (int *) yy_flex_realloc(
01917                                         (void *) yy_start_stack, new_size );
01918 
01919                 if ( ! yy_start_stack )
01920                         YY_FATAL_ERROR(
01921                         "out of memory expanding start-condition stack" );
01922                 }
01923 
01924         yy_start_stack[yy_start_stack_ptr++] = YY_START;
01925 
01926         BEGIN(new_state);
01927         }
01928 #endif
01929 
01930 
01931 #ifndef YY_NO_POP_STATE
01932 static void yy_pop_state()
01933         {
01934         if ( --yy_start_stack_ptr < 0 )
01935                 YY_FATAL_ERROR( "start-condition stack underflow" );
01936 
01937         BEGIN(yy_start_stack[yy_start_stack_ptr]);
01938         }
01939 #endif
01940 
01941 
01942 #ifndef YY_NO_TOP_STATE
01943 static int yy_top_state()
01944         {
01945         return yy_start_stack[yy_start_stack_ptr - 1];
01946         }
01947 #endif
01948 
01949 #ifndef YY_EXIT_FAILURE
01950 #define YY_EXIT_FAILURE 2
01951 #endif
01952 
01953 #ifdef YY_USE_PROTOS
01954 static void yy_fatal_error( yyconst char msg[] )
01955 #else
01956 static void yy_fatal_error( msg )
01957 char msg[];
01958 #endif
01959         {
01960         (void) fprintf( stderr, "%s\n", msg );
01961         exit( YY_EXIT_FAILURE );
01962         }
01963 
01964 
01965 
01966 /* Redefine yyless() so it works in section 3 code. */
01967 
01968 #undef yyless
01969 #define yyless(n) \
01970         do \
01971                 { \
01972                 /* Undo effects of setting up yytext. */ \
01973                 yytext[yyleng] = yy_hold_char; \
01974                 yy_c_buf_p = yytext + n; \
01975                 yy_hold_char = *yy_c_buf_p; \
01976                 *yy_c_buf_p = '\0'; \
01977                 yyleng = n; \
01978                 } \
01979         while ( 0 )
01980 
01981 
01982 /* Internal utility routines. */
01983 
01984 #ifndef yytext_ptr
01985 #ifdef YY_USE_PROTOS
01986 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
01987 #else
01988 static void yy_flex_strncpy( s1, s2, n )
01989 char *s1;
01990 yyconst char *s2;
01991 int n;
01992 #endif
01993         {
01994         register int i;
01995         for ( i = 0; i < n; ++i )
01996                 s1[i] = s2[i];
01997         }
01998 #endif
01999 
02000 #ifdef YY_NEED_STRLEN
02001 #ifdef YY_USE_PROTOS
02002 static int yy_flex_strlen( yyconst char *s )
02003 #else
02004 static int yy_flex_strlen( s )
02005 yyconst char *s;
02006 #endif
02007         {
02008         register int n;
02009         for ( n = 0; s[n]; ++n )
02010                 ;
02011 
02012         return n;
02013         }
02014 #endif
02015 
02016 
02017 #ifdef YY_USE_PROTOS
02018 static void *yy_flex_alloc( yy_size_t size )
02019 #else
02020 static void *yy_flex_alloc( size )
02021 yy_size_t size;
02022 #endif
02023         {
02024         return (void *) malloc( size );
02025         }
02026 
02027 #ifdef YY_USE_PROTOS
02028 static void *yy_flex_realloc( void *ptr, yy_size_t size )
02029 #else
02030 static void *yy_flex_realloc( ptr, size )
02031 void *ptr;
02032 yy_size_t size;
02033 #endif
02034         {
02035         /* The cast to (char *) in the following accommodates both
02036          * implementations that use char* generic pointers, and those
02037          * that use void* generic pointers.  It works with the latter
02038          * because both ANSI C and C++ allow castless assignment from
02039          * any pointer type to void*, and deal with argument conversions
02040          * as though doing an assignment.
02041          */
02042         return (void *) realloc( (char *) ptr, size );
02043         }
02044 
02045 #ifdef YY_USE_PROTOS
02046 static void yy_flex_free( void *ptr )
02047 #else
02048 static void yy_flex_free( ptr )
02049 void *ptr;
02050 #endif
02051         {
02052         free( ptr );
02053         }
02054 
02055 #if YY_MAIN
02056 int main()
02057         {
02058         yylex();
02059         return 0;
02060         }
02061 #endif
02062 #line 243 "AtomLexer.l"
02063 
02064 
02065 #include "SymbolTable.h"
02066 
02067 int atomparser_yylookup(const char *s, int) 
02068 {
02069   return atomparser_symbols->find_attribute(s);
02070 }
02071 
02072 // pointer to the input string
02073 char *atomparser_yystring;
02074 
02075 // pointer to the array of symbols
02076 SymbolTable *atomparser_symbols;
02077 
02078 

Generated on Thu Apr 18 02:43:56 2024 for VMD (current) by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002