/home/coin/SVN-release/OS-2.4.2/OS/src/OSParsers/OSParseosss.cpp

Go to the documentation of this file.
00001 #line 2 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.cpp"
00002 
00003 #line 4 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.cpp"
00004 
00005 #define  YY_INT_ALIGNED short int
00006 
00007 /* A lexical scanner generated by flex */
00008 
00009 #define FLEX_SCANNER
00010 #define YY_FLEX_MAJOR_VERSION 2
00011 #define YY_FLEX_MINOR_VERSION 5
00012 #define YY_FLEX_SUBMINOR_VERSION 35
00013 #if YY_FLEX_SUBMINOR_VERSION > 0
00014 #define FLEX_BETA
00015 #endif
00016 
00017 /* First, we deal with  platform-specific or compiler-specific issues. */
00018 
00019 /* begin standard C headers. */
00020 #include <stdio.h>
00021 #include <string.h>
00022 #include <errno.h>
00023 #include <stdlib.h>
00024 
00025 /* end standard C headers. */
00026 
00027 /* flex integer type definitions */
00028 
00029 #ifndef FLEXINT_H
00030 #define FLEXINT_H
00031 
00032 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
00033 
00034 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
00035 
00036 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
00037  * if you want the limit (max/min) macros for int types. 
00038  */
00039 #ifndef __STDC_LIMIT_MACROS
00040 #define __STDC_LIMIT_MACROS 1
00041 #endif
00042 
00043 #include <inttypes.h>
00044 typedef int8_t flex_int8_t;
00045 typedef uint8_t flex_uint8_t;
00046 typedef int16_t flex_int16_t;
00047 typedef uint16_t flex_uint16_t;
00048 typedef int32_t flex_int32_t;
00049 typedef uint32_t flex_uint32_t;
00050 #else
00051 typedef signed char flex_int8_t;
00052 typedef short int flex_int16_t;
00053 typedef int flex_int32_t;
00054 typedef unsigned char flex_uint8_t; 
00055 typedef unsigned short int flex_uint16_t;
00056 typedef unsigned int flex_uint32_t;
00057 
00058 /* Limits of integral types. */
00059 #ifndef INT8_MIN
00060 #define INT8_MIN               (-128)
00061 #endif
00062 #ifndef INT16_MIN
00063 #define INT16_MIN              (-32767-1)
00064 #endif
00065 #ifndef INT32_MIN
00066 #define INT32_MIN              (-2147483647-1)
00067 #endif
00068 #ifndef INT8_MAX
00069 #define INT8_MAX               (127)
00070 #endif
00071 #ifndef INT16_MAX
00072 #define INT16_MAX              (32767)
00073 #endif
00074 #ifndef INT32_MAX
00075 #define INT32_MAX              (2147483647)
00076 #endif
00077 #ifndef UINT8_MAX
00078 #define UINT8_MAX              (255U)
00079 #endif
00080 #ifndef UINT16_MAX
00081 #define UINT16_MAX             (65535U)
00082 #endif
00083 #ifndef UINT32_MAX
00084 #define UINT32_MAX             (4294967295U)
00085 #endif
00086 
00087 #endif /* ! C99 */
00088 
00089 #endif /* ! FLEXINT_H */
00090 
00091 #ifdef __cplusplus
00092 
00093 /* The "const" storage-class-modifier is valid. */
00094 #define YY_USE_CONST
00095 
00096 #else   /* ! __cplusplus */
00097 
00098 /* C99 requires __STDC__ to be defined as 1. */
00099 #if defined (__STDC__)
00100 
00101 #define YY_USE_CONST
00102 
00103 #endif  /* defined (__STDC__) */
00104 #endif  /* ! __cplusplus */
00105 
00106 #ifdef YY_USE_CONST
00107 #define yyconst const
00108 #else
00109 #define yyconst
00110 #endif
00111 
00112 /* Returned upon end-of-file. */
00113 #define YY_NULL 0
00114 
00115 /* Promotes a possibly negative, possibly signed char to an unsigned
00116  * integer for use as an array index.  If the signed char is negative,
00117  * we want to instead treat it as an 8-bit unsigned char, hence the
00118  * double cast.
00119  */
00120 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00121 
00122 /* An opaque pointer. */
00123 #ifndef YY_TYPEDEF_YY_SCANNER_T
00124 #define YY_TYPEDEF_YY_SCANNER_T
00125 typedef void* yyscan_t;
00126 #endif
00127 
00128 /* For convenience, these vars (plus the bison vars far below)
00129    are macros in the reentrant scanner. */
00130 #define yyin yyg->yyin_r
00131 #define yyout yyg->yyout_r
00132 #define yyextra yyg->yyextra_r
00133 #define yyleng yyg->yyleng_r
00134 #define yytext yyg->yytext_r
00135 #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
00136 #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
00137 #define yy_flex_debug yyg->yy_flex_debug_r
00138 
00139 /* Enter a start condition.  This macro really ought to take a parameter,
00140  * but we do it the disgusting crufty way forced on us by the ()-less
00141  * definition of BEGIN.
00142  */
00143 #define BEGIN yyg->yy_start = 1 + 2 *
00144 
00145 /* Translate the current start state into a value that can be later handed
00146  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00147  * compatibility.
00148  */
00149 #define YY_START ((yyg->yy_start - 1) / 2)
00150 #define YYSTATE YY_START
00151 
00152 /* Action number for EOF rule of a given start state. */
00153 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00154 
00155 /* Special action meaning "start processing a new file". */
00156 #define YY_NEW_FILE osssrestart(yyin ,yyscanner )
00157 
00158 #define YY_END_OF_BUFFER_CHAR 0
00159 
00160 /* Size of default input buffer. */
00161 #ifndef YY_BUF_SIZE
00162 #ifdef __ia64__
00163 /* On IA-64, the buffer size is 16k, not 8k.
00164  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
00165  * Ditto for the __ia64__ case accordingly.
00166  */
00167 #define YY_BUF_SIZE 32768
00168 #else
00169 #define YY_BUF_SIZE 16384
00170 #endif /* __ia64__ */
00171 #endif
00172 
00173 /* The state buf must be large enough to hold one state per character in the main buffer.
00174  */
00175 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
00176 
00177 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
00178 #define YY_TYPEDEF_YY_BUFFER_STATE
00179 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00180 #endif
00181 
00182 #define EOB_ACT_CONTINUE_SCAN 0
00183 #define EOB_ACT_END_OF_FILE 1
00184 #define EOB_ACT_LAST_MATCH 2
00185 
00186     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
00187      *       access to the local variable yy_act. Since yyless() is a macro, it would break
00188      *       existing scanners that call yyless() from OUTSIDE ossslex. 
00189      *       One obvious solution it to make yy_act a global. I tried that, and saw
00190      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
00191      *       normally declared as a register variable-- so it is not worth it.
00192      */
00193     #define  YY_LESS_LINENO(n) \
00194             do { \
00195                 int yyl;\
00196                 for ( yyl = n; yyl < yyleng; ++yyl )\
00197                     if ( yytext[yyl] == '\n' )\
00198                         --yylineno;\
00199             }while(0)
00200     
00201 /* Return all but the first "n" matched characters back to the input stream. */
00202 #define yyless(n) \
00203         do \
00204                 { \
00205                 /* Undo effects of setting up yytext. */ \
00206         int yyless_macro_arg = (n); \
00207         YY_LESS_LINENO(yyless_macro_arg);\
00208                 *yy_cp = yyg->yy_hold_char; \
00209                 YY_RESTORE_YY_MORE_OFFSET \
00210                 yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
00211                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00212                 } \
00213         while ( 0 )
00214 
00215 #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
00216 
00217 #ifndef YY_TYPEDEF_YY_SIZE_T
00218 #define YY_TYPEDEF_YY_SIZE_T
00219 typedef size_t yy_size_t;
00220 #endif
00221 
00222 #ifndef YY_STRUCT_YY_BUFFER_STATE
00223 #define YY_STRUCT_YY_BUFFER_STATE
00224 struct yy_buffer_state
00225         {
00226         FILE *yy_input_file;
00227 
00228         char *yy_ch_buf;                /* input buffer */
00229         char *yy_buf_pos;               /* current position in input buffer */
00230 
00231         /* Size of input buffer in bytes, not including room for EOB
00232          * characters.
00233          */
00234         yy_size_t yy_buf_size;
00235 
00236         /* Number of characters read into yy_ch_buf, not including EOB
00237          * characters.
00238          */
00239         int yy_n_chars;
00240 
00241         /* Whether we "own" the buffer - i.e., we know we created it,
00242          * and can realloc() it to grow it, and should free() it to
00243          * delete it.
00244          */
00245         int yy_is_our_buffer;
00246 
00247         /* Whether this is an "interactive" input source; if so, and
00248          * if we're using stdio for input, then we want to use getc()
00249          * instead of fread(), to make sure we stop fetching input after
00250          * each newline.
00251          */
00252         int yy_is_interactive;
00253 
00254         /* Whether we're considered to be at the beginning of a line.
00255          * If so, '^' rules will be active on the next match, otherwise
00256          * not.
00257          */
00258         int yy_at_bol;
00259 
00260     int yy_bs_lineno; 
00261     int yy_bs_column; 
00263         /* Whether to try to fill the input buffer when we reach the
00264          * end of it.
00265          */
00266         int yy_fill_buffer;
00267 
00268         int yy_buffer_status;
00269 
00270 #define YY_BUFFER_NEW 0
00271 #define YY_BUFFER_NORMAL 1
00272         /* When an EOF's been seen but there's still some text to process
00273          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00274          * shouldn't try reading from the input source any more.  We might
00275          * still have a bunch of tokens to match, though, because of
00276          * possible backing-up.
00277          *
00278          * When we actually see the EOF, we change the status to "new"
00279          * (via osssrestart()), so that the user can continue scanning by
00280          * just pointing yyin at a new input file.
00281          */
00282 #define YY_BUFFER_EOF_PENDING 2
00283 
00284         };
00285 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
00286 
00287 /* We provide macros for accessing buffer states in case in the
00288  * future we want to put the buffer states in a more general
00289  * "scanner state".
00290  *
00291  * Returns the top of the stack, or NULL.
00292  */
00293 #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
00294                           ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
00295                           : NULL)
00296 
00297 /* Same as previous macro, but useful when we know that the buffer stack is not
00298  * NULL or when we need an lvalue. For internal use only.
00299  */
00300 #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
00301 
00302 void osssrestart (FILE *input_file ,yyscan_t yyscanner );
00303 void osss_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00304 YY_BUFFER_STATE osss_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
00305 void osss_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00306 void osss_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
00307 void ossspush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
00308 void ossspop_buffer_state (yyscan_t yyscanner );
00309 
00310 static void osssensure_buffer_stack (yyscan_t yyscanner );
00311 static void osss_load_buffer_state (yyscan_t yyscanner );
00312 static void osss_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
00313 
00314 #define YY_FLUSH_BUFFER osss_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
00315 
00316 YY_BUFFER_STATE osss_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
00317 YY_BUFFER_STATE osss_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
00318 YY_BUFFER_STATE osss_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );
00319 
00320 void *osssalloc (yy_size_t ,yyscan_t yyscanner );
00321 void *osssrealloc (void *,yy_size_t ,yyscan_t yyscanner );
00322 void osssfree (void * ,yyscan_t yyscanner );
00323 
00324 #define yy_new_buffer osss_create_buffer
00325 
00326 #define yy_set_interactive(is_interactive) \
00327         { \
00328         if ( ! YY_CURRENT_BUFFER ){ \
00329         osssensure_buffer_stack (yyscanner); \
00330                 YY_CURRENT_BUFFER_LVALUE =    \
00331             osss_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00332         } \
00333         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
00334         }
00335 
00336 #define yy_set_bol(at_bol) \
00337         { \
00338         if ( ! YY_CURRENT_BUFFER ){\
00339         osssensure_buffer_stack (yyscanner); \
00340                 YY_CURRENT_BUFFER_LVALUE =    \
00341             osss_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
00342         } \
00343         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
00344         }
00345 
00346 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
00347 
00348 /* Begin user sect3 */
00349 
00350 #define ossswrap(n) 1
00351 #define YY_SKIP_YYWRAP
00352 
00353 typedef unsigned char YY_CHAR;
00354 
00355 typedef int yy_state_type;
00356 
00357 #define yytext_ptr yytext_r
00358 
00359 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
00360 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
00361 static int yy_get_next_buffer (yyscan_t yyscanner );
00362 static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
00363 
00364 /* Done after the current pattern has been matched and before the
00365  * corresponding action - sets up yytext.
00366  */
00367 #define YY_DO_BEFORE_ACTION \
00368         yyg->yytext_ptr = yy_bp; \
00369         yyleng = (size_t) (yy_cp - yy_bp); \
00370         yyg->yy_hold_char = *yy_cp; \
00371         *yy_cp = '\0'; \
00372         yyg->yy_c_buf_p = yy_cp;
00373 
00374 #define YY_NUM_RULES 55
00375 #define YY_END_OF_BUFFER 56
00376 /* This struct is not used in this scanner,
00377    but its presence is necessary. */
00378 struct yy_trans_info
00379         {
00380         flex_int32_t yy_verify;
00381         flex_int32_t yy_nxt;
00382         };
00383 static yyconst flex_int16_t yy_accept[405] =
00384     {   0,
00385         1,    1,   56,   54,    1,    1,   54,   54,   54,   54,
00386        54,   54,   54,   54,   54,   54,   54,   54,   54,    1,
00387         0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
00388         0,   12,    0,    0,    0,    0,    0,    0,    0,    0,
00389         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00390         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00391         0,    0,    0,    0,   44,    0,    0,    0,    0,    0,
00392         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00393         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00394         0,    0,   47,    6,    0,   41,   43,    0,    0,    0,
00395 
00396         0,    0,    0,   13,    0,    0,    0,    0,    0,    0,
00397         0,    0,    0,    0,    0,   42,    0,    0,    0,    0,
00398         0,    0,    0,    0,    0,    0,   46,    0,    0,   40,
00399         0,    0,   43,   16,   25,    0,   19,    0,    0,    0,
00400         0,    5,    0,    0,    0,    0,   45,    0,    0,   39,
00401         0,    0,   42,    0,    0,    0,    0,    0,    0,    0,
00402         0,    0,    0,    0,   46,    0,    0,   40,   15,    0,
00403        24,    0,    0,   18,    0,    0,    0,    0,    0,    0,
00404         0,    0,    0,    0,    0,   45,    0,    0,   39,   14,
00405         0,   23,    0,    0,    0,   17,    0,    0,    0,    0,
00406 
00407         0,    4,    0,    0,   15,    0,   24,    0,    0,   18,
00408         0,    0,    0,   50,   10,    0,    0,    0,    0,    0,
00409         0,   14,    0,   23,    0,    0,    0,   17,    0,    0,
00410         0,   53,    3,    0,   22,    0,    0,    0,    0,    0,
00411        49,    0,    0,   11,    0,    2,    0,    0,    0,    0,
00412         0,    0,    0,   48,    0,   52,    0,    0,    3,   21,
00413         0,    0,    0,   32,    0,    0,    0,   49,    0,   51,
00414         0,    0,    2,   20,    0,    0,    0,    0,    0,    0,
00415         0,   48,    0,   52,    0,   21,   28,    9,   31,    0,
00416         0,    0,    0,    0,   51,    0,   20,    0,    0,   30,
00417 
00418         0,    0,    0,   27,    0,    0,   31,    0,    0,    8,
00419        26,    0,    0,    0,   30,    0,    0,    0,   27,    0,
00420         0,    0,   26,   29,    0,    0,    0,    0,    0,    0,
00421        29,    0,    0,    0,   35,    0,    0,    0,    0,    0,
00422         0,    0,    0,    0,    0,    0,    0,   38,    0,    0,
00423         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00424         0,   37,    0,    0,    0,    0,    0,    0,    0,   36,
00425         0,    0,    0,    0,    0,    0,    0,    0,   37,    0,
00426        34,    0,    0,    0,    0,   36,    0,   33,    0,    0,
00427         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00428 
00429         0,    0,    0,    0
00430     } ;
00431 
00432 static yyconst flex_int32_t yy_ec[256] =
00433     {   0,
00434         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00435         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
00436         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00437         1,    2,    4,    5,    4,    4,    1,    4,    1,    4,
00438         4,    4,    4,    1,    6,    4,    4,    4,    4,    4,
00439         4,    4,    4,    4,    4,    4,    4,    4,    1,    1,
00440         1,    1,    4,    4,    4,    4,    4,    7,    4,    4,
00441         4,    4,    8,    9,    4,   10,   11,    4,   12,    4,
00442         4,   13,    4,    4,    4,    4,    4,    4,    4,    4,
00443         1,    4,    1,    1,    4,    1,   14,   15,   16,   17,
00444 
00445        18,   19,   20,   21,   22,    4,   23,   24,   25,   26,
00446        27,   28,   29,   30,   31,   32,   33,   34,   35,    4,
00447         4,    4,    1,    1,    1,    4,    1,    1,    1,    1,
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         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00454         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00455 
00456         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00457         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00458         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00459         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00460         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00461         1,    1,    1,    1,    1
00462     } ;
00463 
00464 static yyconst flex_int32_t yy_meta[36] =
00465     {   0,
00466         1,    2,    3,    2,    2,    2,    2,    2,    2,    2,
00467         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
00468         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
00469         2,    2,    2,    2,    2
00470     } ;
00471 
00472 static yyconst flex_int16_t yy_base[459] =
00473     {   0,
00474         0,    0,  684,  685,   34,   36,   34,  653,  655,  667,
00475       662,  653,  650,  653,  645,  645,  641,   25,  655,   39,
00476        36,  642,  644,  656,  685,  643,  640,  643,  635,  635,
00477        26,  685,  637,  637,  630,  637,  629,  628,   43,   44,
00478       636,  635,  626,  631,  624,  635,  622,  633,  623,  623,
00479       616,  616,  615,   45,   51,  623,  614,  619,  607,  622,
00480        73,  612,  629,   80,   82,  614,  613,  612,  611,  608,
00481       601,  598,  597,  599,  605,  606,  597,  591,  606,   86,
00482       614,   88,   90,  599,  598,  597,  596,  593,  584,  583,
00483       585,  593,   94,  685,  592,   98,  102,  608,  106,  108,
00484 
00485       604,  110,  579,  685,  588,  591,  586,  579,  580,  574,
00486       573,  581,  112,  580,  116,  120,  596,  124,  126,   46,
00487       128,  568,  577,  580,  579,  576,  130,  590,  563,  134,
00488       588,  587,  685,  138,  142,  565,  146,   56,  574,  559,
00489       561,  685,  555,  564,  567,  564,  150,  578,  551,  154,
00490       576,  575,  685,  158,  162,  553,  545,  166,  564,  560,
00491       545,  544,  170,  568,  685,  540,  566,  685,  172,  565,
00492       176,  564,  540,  180,  562,  539,  538,  546,  184,  537,
00493       551,  534,  530,  186,  554,  685,  526,  552,  685,  188,
00494       551,  192,  550,  526,  521,  196,  547,  524,  532,  200,
00495 
00496       202,  204,  208,  544,  685,  543,  685,  514,  541,  685,
00497       528,  509,  202,  212,  685,  516,  516,  216,  218,  222,
00498       536,  685,  535,  685,  506,  510,  532,  685,  501,  216,
00499       226,  230,  234,  530,  238,  502,  515,  242,  505,  513,
00500       244,  525,  512,  685,  248,  252,  523,  256,  495,  493,
00501       260,  498,  506,  262,  518,  266,  517,  516,  685,  270,
00502       515,  274,  495,  276,  502,  485,  511,  685,  497,  280,
00503       509,  508,  685,  284,  507,  288,  479,  290,  494,  477,
00504       503,  685,  502,  685,  501,  685,  294,  685,  298,  500,
00505       490,  482,  478,  386,  685,  385,  685,  302,  306,  308,
00506 
00507       384,  374,  366,  312,  381,  379,  685,  351,  354,  685,
00508       316,  375,  320,  374,  685,  346,  350,  371,  685,  353,
00509       357,  368,  685,  324,  367,  349,  353,  342,  328,  363,
00510       685,  340,  330,  340,  332,  335,  362,  334,  342,   72,
00511       340,   59,  336,  336,   80,  329,  322,  339,  311,  304,
00512       297,  288,  290,  288,  343,  274,  278,  271,  262,  262,
00513       260,  348,  275,  265,  246,  250,  230,  239,  218,  354,
00514       243,  233,  214,  218,  200,  205,  182,  203,  685,  173,
00515       685,  173,  170,  166,  175,  685,  149,  685,  147,  144,
00516       144,  143,  136,  135,  128,  134,  104,  126,   90,  113,
00517 
00518        98,   73,   45,  685,  392,  394,  396,  398,  401,  402,
00519       404,  407,  409,  411,  412,  414,  416,  419,  421,  422,
00520       424,  426,  429,  431,  433,  435,  437,  439,  440,  442,
00521       444,  446,  448,  451,  452,  455,  456,  459,  460,  463,
00522       465,  467,  468,  471,  473,  474,  476,  479,  480,  483,
00523       485,  487,  488,  491,  492,  494,  497,  499
00524     } ;
00525 
00526 static yyconst flex_int16_t yy_def[459] =
00527     {   0,
00528       404,    1,  404,  404,  404,  404,  404,  404,  404,  404,
00529       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00530       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00531       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00532       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00533       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00534       404,  404,  404,  404,  405,  404,  404,  404,  404,  404,
00535       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00536       404,  404,  406,  404,  404,  404,  404,  404,  404,  404,
00537       404,  404,  407,  404,  404,  408,  405,  409,  404,  404,
00538 
00539       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00540       404,  404,  410,  404,  411,  406,  412,  404,  404,  404,
00541       404,  404,  404,  404,  404,  404,  407,  413,  404,  408,
00542       414,  409,  404,  415,  416,  404,  417,  404,  404,  404,
00543       404,  404,  404,  404,  404,  404,  410,  418,  404,  411,
00544       419,  412,  404,  420,  421,  404,  404,  422,  404,  404,
00545       404,  404,  404,  413,  404,  404,  414,  404,  415,  423,
00546       416,  424,  404,  417,  425,  404,  404,  404,  404,  404,
00547       404,  404,  404,  404,  418,  404,  404,  419,  404,  420,
00548       426,  421,  427,  404,  404,  422,  428,  404,  404,  404,
00549 
00550       404,  429,  404,  423,  404,  424,  404,  404,  425,  404,
00551       404,  404,  404,  430,  404,  404,  404,  404,  431,  404,
00552       426,  404,  427,  404,  404,  404,  428,  404,  404,  404,
00553       432,  433,  429,  434,  435,  404,  404,  404,  404,  404,
00554       430,  436,  404,  404,  437,  431,  438,  439,  404,  404,
00555       404,  404,  404,  432,  440,  433,  441,  434,  404,  435,
00556       442,  404,  404,  443,  404,  404,  436,  404,  404,  437,
00557       444,  438,  404,  439,  445,  404,  404,  446,  404,  404,
00558       440,  404,  441,  404,  442,  404,  447,  404,  443,  448,
00559       404,  404,  404,  444,  404,  445,  404,  449,  404,  446,
00560 
00561       450,  404,  404,  447,  451,  448,  404,  404,  404,  404,
00562       449,  452,  453,  450,  404,  404,  404,  451,  404,  404,
00563       404,  452,  404,  453,  454,  404,  404,  404,  404,  454,
00564       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00565       404,  404,  404,  404,  404,  404,  404,  455,  404,  404,
00566       404,  404,  404,  404,  456,  404,  404,  404,  404,  404,
00567       404,  455,  457,  404,  404,  404,  404,  404,  404,  456,
00568       458,  404,  404,  404,  404,  404,  404,  457,  404,  404,
00569       404,  404,  404,  404,  458,  404,  404,  404,  404,  404,
00570       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00571 
00572       404,  404,  404,    0,  404,  404,  404,  404,  404,  404,
00573       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00574       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00575       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00576       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00577       404,  404,  404,  404,  404,  404,  404,  404
00578     } ;
00579 
00580 static yyconst flex_int16_t yy_nxt[721] =
00581     {   0,
00582         4,    5,    6,    4,    4,    7,    4,    4,    4,    4,
00583         4,    4,    4,    4,    8,    9,   10,    4,    4,    4,
00584        11,   12,    4,    4,   13,   14,   15,   16,   17,    4,
00585        18,    4,    4,   19,    4,   20,   20,   20,   20,   21,
00586        20,   20,   43,   57,   65,   65,   83,   83,   22,   23,
00587        24,   44,   58,  156,   25,   26,   46,  157,   27,   28,
00588        29,   30,  388,   47,   31,   66,  176,   32,  177,   48,
00589        67,   68,   84,   69,   93,   93,  353,   85,   86,  388,
00590        87,   96,   96,   65,   65,  354,   98,  113,  113,  115,
00591       115,   83,   83,  350,  117,   93,   93,  351,  128,   96,
00592 
00593        96,  357,  131,  404,  404,  358,  404,  134,  134,  135,
00594       135,  137,  137,  113,  113,  381,  148,  115,  115,  381,
00595       151,  404,  404,  403,  404,  154,  154,  155,  155,  158,
00596       158,  404,  404,  402,  404,  404,  404,  401,  404,  134,
00597       134,  400,  170,  135,  135,  399,  172,  137,  137,  398,
00598       175,  404,  404,  397,  404,  404,  404,  396,  404,  154,
00599       154,  388,  191,  155,  155,  395,  193,  158,  158,  388,
00600       197,  202,  202,  404,  404,  394,  404,  404,  404,  386,
00601       404,  404,  404,  381,  404,  214,  214,  219,  219,  404,
00602       404,  393,  404,  404,  404,  381,  404,  404,  404,  392,
00603 
00604       404,  231,  231,  232,  232,  202,  202,  379,  234,  235,
00605       235,  239,  240,  214,  214,  391,  242,  245,  245,  219,
00606       219,  388,  247,  248,  248,  252,  253,  231,  231,  390,
00607       255,  232,  232,  389,  257,  404,  404,  388,  404,  235,
00608       235,  387,  261,  264,  264,  404,  404,  386,  404,  245,
00609       245,  384,  271,  404,  404,  381,  404,  248,  248,  383,
00610       275,  278,  278,  404,  404,  382,  404,  404,  404,  381,
00611       404,  404,  404,  380,  404,  287,  287,  264,  264,  379,
00612       290,  404,  404,  377,  404,  404,  404,  376,  404,  298,
00613       298,  278,  278,  375,  301,  287,  287,  374,  305,  404,
00614 
00615       404,  373,  404,  298,  298,  372,  312,  313,  313,  404,
00616       404,  369,  404,  404,  404,  368,  404,  404,  404,  367,
00617       404,  313,  313,  366,  325,  404,  404,  365,  404,  335,
00618       335,  337,  337,  335,  335,  348,  348,  355,  355,  360,
00619       348,  348,  364,  363,  355,  355,  359,  371,  361,  404,
00620       404,  339,  404,  356,  340,  404,  404,  352,  404,  349,
00621       343,  341,  342,  337,  337,  338,  336,  331,  334,  333,
00622       332,  331,  323,  329,  328,  319,  327,  326,  315,  323,
00623       321,  344,  320,  307,  345,  319,  317,  316,  315,  297,
00624       295,  346,  347,   97,   97,  116,  116,  127,  127,  130,
00625 
00626       130,  132,  132,  147,  147,  150,  150,  152,  152,  164,
00627       164,  167,  167,  169,  169,  171,  171,  174,  174,  185,
00628       185,  188,  188,  190,  190,  192,  192,  196,  196,  204,
00629       204,  206,  206,  209,  209,  221,  221,  223,  223,  227,
00630       227,  233,  233,  241,  241,  246,  246,  254,  254,  256,
00631       256,  258,  258,  260,  260,  267,  267,  270,  270,  272,
00632       272,  274,  274,  281,  281,  283,  283,  285,  285,  289,
00633       289,  294,  294,  296,  296,  300,  300,  304,  304,  306,
00634       306,  311,  311,  314,  314,  318,  318,  322,  322,  324,
00635       324,  330,  330,  362,  362,  370,  370,  378,  378,  385,
00636 
00637       385,  310,  309,  308,  307,  286,  284,  282,  303,  302,
00638       299,  297,  273,  295,  293,  268,  292,  291,  288,  286,
00639       259,  284,  282,  280,  279,  277,  276,  273,  269,  268,
00640       266,  265,  263,  262,  259,  251,  228,  250,  249,  224,
00641       222,  244,  243,  238,  237,  210,  236,  207,  205,  230,
00642       229,  228,  226,  225,  224,  222,  189,  220,  186,  218,
00643       217,  216,  215,  213,  212,  211,  210,  208,  207,  205,
00644       168,  203,  165,  201,  200,  199,  198,  195,  194,  153,
00645       189,  187,  186,  184,  183,  182,  181,  180,  179,  178,
00646       173,  133,  168,  166,  165,  163,  162,  161,  160,  159,
00647 
00648       153,  149,  146,  145,  144,  143,  142,  141,  140,  139,
00649       138,  136,  133,  129,  126,  125,  124,  123,  122,  121,
00650       120,  119,  118,  114,  112,  111,  110,  109,  108,  107,
00651       106,  105,  104,  103,  102,  101,  100,   99,   95,   94,
00652        92,   91,   90,   89,   88,   82,   81,   80,   79,   78,
00653        77,   76,   75,   74,   73,   72,   71,   70,   64,   63,
00654        62,   61,   60,   59,   56,   55,   54,   53,   52,   51,
00655        50,   49,   45,   42,   41,   40,   39,   38,   37,   36,
00656        35,   34,   33,  404,    3,  404,  404,  404,  404,  404,
00657       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00658 
00659       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00660       404,  404,  404,  404,  404,  404,  404,  404,  404,  404
00661     } ;
00662 
00663 static yyconst flex_int16_t yy_chk[721] =
00664     {   0,
00665         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00666         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00667         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00668         1,    1,    1,    1,    1,    5,    5,    6,    6,    7,
00669        20,   20,   18,   31,   39,   39,   54,   54,    7,    7,
00670         7,   18,   31,  120,    7,    7,   21,  120,    7,    7,
00671         7,    7,  403,   21,    7,   40,  138,    7,  138,   21,
00672        40,   40,   55,   40,   61,   61,  342,   55,   55,  402,
00673        55,   64,   64,   65,   65,  342,   65,   80,   80,   82,
00674        82,   83,   83,  340,   83,   93,   93,  340,   93,   96,
00675 
00676        96,  345,   96,   97,   97,  345,   97,   99,   99,  100,
00677       100,  102,  102,  113,  113,  401,  113,  115,  115,  400,
00678       115,  116,  116,  399,  116,  118,  118,  119,  119,  121,
00679       121,  127,  127,  398,  127,  130,  130,  397,  130,  134,
00680       134,  396,  134,  135,  135,  395,  135,  137,  137,  394,
00681       137,  147,  147,  393,  147,  150,  150,  392,  150,  154,
00682       154,  391,  154,  155,  155,  390,  155,  158,  158,  389,
00683       158,  163,  163,  169,  169,  387,  169,  171,  171,  385,
00684       171,  174,  174,  384,  174,  179,  179,  184,  184,  190,
00685       190,  383,  190,  192,  192,  382,  192,  196,  196,  380,
00686 
00687       196,  200,  200,  201,  201,  202,  202,  378,  202,  203,
00688       203,  213,  213,  214,  214,  377,  214,  218,  218,  219,
00689       219,  376,  219,  220,  220,  230,  230,  231,  231,  375,
00690       231,  232,  232,  374,  232,  233,  233,  373,  233,  235,
00691       235,  372,  235,  238,  238,  241,  241,  371,  241,  245,
00692       245,  369,  245,  246,  246,  368,  246,  248,  248,  367,
00693       248,  251,  251,  254,  254,  366,  254,  256,  256,  365,
00694       256,  260,  260,  364,  260,  262,  262,  264,  264,  363,
00695       264,  270,  270,  361,  270,  274,  274,  360,  274,  276,
00696       276,  278,  278,  359,  278,  287,  287,  358,  287,  289,
00697 
00698       289,  357,  289,  298,  298,  356,  298,  299,  299,  300,
00699       300,  354,  300,  304,  304,  353,  304,  311,  311,  352,
00700       311,  313,  313,  351,  313,  324,  324,  350,  324,  329,
00701       329,  333,  333,  335,  335,  338,  338,  343,  343,  347,
00702       348,  348,  349,  348,  355,  355,  346,  355,  347,  362,
00703       362,  335,  362,  344,  335,  370,  370,  341,  370,  339,
00704       336,  335,  335,  337,  337,  334,  332,  330,  328,  327,
00705       326,  325,  322,  321,  320,  318,  317,  316,  314,  312,
00706       309,  337,  308,  306,  337,  305,  303,  302,  301,  296,
00707       294,  337,  337,  405,  405,  406,  406,  407,  407,  408,
00708 
00709       408,  409,  409,  410,  410,  411,  411,  412,  412,  413,
00710       413,  414,  414,  415,  415,  416,  416,  417,  417,  418,
00711       418,  419,  419,  420,  420,  421,  421,  422,  422,  423,
00712       423,  424,  424,  425,  425,  426,  426,  427,  427,  428,
00713       428,  429,  429,  430,  430,  431,  431,  432,  432,  433,
00714       433,  434,  434,  435,  435,  436,  436,  437,  437,  438,
00715       438,  439,  439,  440,  440,  441,  441,  442,  442,  443,
00716       443,  444,  444,  445,  445,  446,  446,  447,  447,  448,
00717       448,  449,  449,  450,  450,  451,  451,  452,  452,  453,
00718       453,  454,  454,  455,  455,  456,  456,  457,  457,  458,
00719 
00720       458,  293,  292,  291,  290,  285,  283,  281,  280,  279,
00721       277,  275,  272,  271,  269,  267,  266,  265,  263,  261,
00722       258,  257,  255,  253,  252,  250,  249,  247,  243,  242,
00723       240,  239,  237,  236,  234,  229,  227,  226,  225,  223,
00724       221,  217,  216,  212,  211,  209,  208,  206,  204,  199,
00725       198,  197,  195,  194,  193,  191,  188,  187,  185,  183,
00726       182,  181,  180,  178,  177,  176,  175,  173,  172,  170,
00727       167,  166,  164,  162,  161,  160,  159,  157,  156,  152,
00728       151,  149,  148,  146,  145,  144,  143,  141,  140,  139,
00729       136,  132,  131,  129,  128,  126,  125,  124,  123,  122,
00730 
00731       117,  114,  112,  111,  110,  109,  108,  107,  106,  105,
00732       103,  101,   98,   95,   92,   91,   90,   89,   88,   87,
00733        86,   85,   84,   81,   79,   78,   77,   76,   75,   74,
00734        73,   72,   71,   70,   69,   68,   67,   66,   63,   62,
00735        60,   59,   58,   57,   56,   53,   52,   51,   50,   49,
00736        48,   47,   46,   45,   44,   43,   42,   41,   38,   37,
00737        36,   35,   34,   33,   30,   29,   28,   27,   26,   24,
00738        23,   22,   19,   17,   16,   15,   14,   13,   12,   11,
00739        10,    9,    8,    3,  404,  404,  404,  404,  404,  404,
00740       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00741 
00742       404,  404,  404,  404,  404,  404,  404,  404,  404,  404,
00743       404,  404,  404,  404,  404,  404,  404,  404,  404,  404
00744     } ;
00745 
00746 /* Table of booleans, true if rule could match eol. */
00747 static yyconst flex_int32_t yy_rule_can_match_eol[56] =
00748     {   0,
00749 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 
00750     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
00751     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,     };
00752 
00753 /* The intent behind this definition is that it'll catch
00754  * any uses of REJECT which flex missed.
00755  */
00756 #define REJECT reject_used_but_not_detected
00757 #define yymore() yymore_used_but_not_detected
00758 #define YY_MORE_ADJ 0
00759 #define YY_RESTORE_YY_MORE_OFFSET
00760 #line 1 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
00761 /* $Id: OSParseosss.cpp 4381 2011-11-09 09:10:35Z kmartin $ */
00774 #line 16 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
00775 
00776 
00777 #include <iostream>
00778 #include "OSConfig.h"
00779 
00780 
00781 #ifdef HAVE_CSTRING
00782 # include <cstring>
00783 #else
00784 # ifdef HAVE_STRING_H
00785 #  include <string.h>
00786 # else
00787 #  error "don't have header file for string"
00788 # endif
00789 #endif
00790 
00791 #ifdef HAVE_CSTDIO
00792 # include <cstdio>
00793 #else
00794 # ifdef HAVE_STDIO_H
00795 #  include <stdio.h>
00796 # else
00797 #  error "don't have header file for stdio"
00798 # endif
00799 #endif
00800 #include "OSErrorClass.h"
00801 #include <sstream>   
00802 #include "OSOptionsStruc.h" 
00803 
00804 
00805 using std::cout;
00806 using std::endl;
00807 using std::ostringstream;
00808 
00809 //#define PARSERDEBUG
00810 #ifdef PARSERDEBUG
00811         #define YY_PRINT  printf("Found option:  %s\n", yytext);
00812 #else     
00813         #define YY_PRINT  ;
00814 #endif
00815 
00816 
00817 #ifdef WIN_
00818   #define YY_NO_UNISTD_H
00819   #include <io.h>
00820   #include <process.h>
00821   #ifdef USE_OLD_UNISTD
00822      #include<sys/unistd.h>  
00823   #endif
00824 #endif
00825 
00826 
00827 #define YY_EXTRA_TYPE struct osOptionsStruc*
00828 
00829 void setyyextra( osOptionsStruc *osoptions, void* scanner);
00830 
00831  /*
00832  * INPUTS:
00833  * -osil xxx.osil (file name on local machine of optimization instance, 
00834  *       this is "" by default, however if this remains "" a problem
00835  *               instance must be specified in the osol file)
00836  * -osol xxx.osol (file name on local machine of solver options, 
00837  *       default default value is "")
00838  * -osrl xxx.osrl (file name on local machine where the optimization 
00839  *       result is put, default is "")
00840  * -serviceLocation location URL (the URL  of the server that is called 
00841  *       remotely if the problem not solved locally, default is "")
00842  * -serviceMethod  (send, solve, kill, knock, getJobID, retrieve, 
00843  *       default value is solve)
00844  * -osplInput xxx.ospl  (Not used for now -- ignore)
00845  * -osplOutput xxx.ospl (Not used for now -- ignore)
00846  * -mps xxxx.mps (converts mps format to osil and has same effect as -osil)
00847  * -nl xxxx.nl (converts nl format to osil and has same effect as -osil)
00848  * -solver solverName (the name of the solver to be invoked)
00849  * -browser path location to browser e.g. 
00850  *       /Applications/Firefox.app/Contents/MacOS/firefox (default is "")
00851  * -config pathToConfigFile is the path to a configure file with the problem 
00852  *           parameters
00853  * -insList xxx.dat (used only for LINDO, file location on local 
00854  *       machine of LINDO instruction list)
00855 */
00856 
00857 
00858 #line 859 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.cpp"
00859 
00860 #define INITIAL 0
00861 
00862 #ifndef YY_NO_UNISTD_H
00863 /* Special case for "unistd.h", since it is non-ANSI. We include it way
00864  * down here because we want the user's section 1 to have been scanned first.
00865  * The user has a chance to override it with an option.
00866  */
00867 #include <unistd.h>
00868 #endif
00869 
00870 #ifndef YY_EXTRA_TYPE
00871 #define YY_EXTRA_TYPE void *
00872 #endif
00873 
00874 /* Holds the entire state of the reentrant scanner. */
00875 struct yyguts_t
00876     {
00877 
00878     /* User-defined. Not touched by flex. */
00879     YY_EXTRA_TYPE yyextra_r;
00880 
00881     /* The rest are the same as the globals declared in the non-reentrant scanner. */
00882     FILE *yyin_r, *yyout_r;
00883     size_t yy_buffer_stack_top; 
00884     size_t yy_buffer_stack_max; 
00885     YY_BUFFER_STATE * yy_buffer_stack; 
00886     char yy_hold_char;
00887     int yy_n_chars;
00888     int yyleng_r;
00889     char *yy_c_buf_p;
00890     int yy_init;
00891     int yy_start;
00892     int yy_did_buffer_switch_on_eof;
00893     int yy_start_stack_ptr;
00894     int yy_start_stack_depth;
00895     int *yy_start_stack;
00896     yy_state_type yy_last_accepting_state;
00897     char* yy_last_accepting_cpos;
00898 
00899     int yylineno_r;
00900     int yy_flex_debug_r;
00901 
00902     char *yytext_r;
00903     int yy_more_flag;
00904     int yy_more_len;
00905 
00906     }; /* end struct yyguts_t */
00907 
00908 static int yy_init_globals (yyscan_t yyscanner );
00909 
00910 int ossslex_init (yyscan_t* scanner);
00911 
00912 int ossslex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
00913 
00914 /* Accessor methods to globals.
00915    These are made visible to non-reentrant scanners for convenience. */
00916 
00917 int ossslex_destroy (yyscan_t yyscanner );
00918 
00919 int osssget_debug (yyscan_t yyscanner );
00920 
00921 void osssset_debug (int debug_flag ,yyscan_t yyscanner );
00922 
00923 YY_EXTRA_TYPE osssget_extra (yyscan_t yyscanner );
00924 
00925 void osssset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
00926 
00927 FILE *osssget_in (yyscan_t yyscanner );
00928 
00929 void osssset_in  (FILE * in_str ,yyscan_t yyscanner );
00930 
00931 FILE *osssget_out (yyscan_t yyscanner );
00932 
00933 void osssset_out  (FILE * out_str ,yyscan_t yyscanner );
00934 
00935 int osssget_leng (yyscan_t yyscanner );
00936 
00937 char *osssget_text (yyscan_t yyscanner );
00938 
00939 int osssget_lineno (yyscan_t yyscanner );
00940 
00941 void osssset_lineno (int line_number ,yyscan_t yyscanner );
00942 
00943 /* Macros after this point can all be overridden by user definitions in
00944  * section 1.
00945  */
00946 
00947 #ifndef YY_SKIP_YYWRAP
00948 #ifdef __cplusplus
00949 extern "C" int ossswrap (yyscan_t yyscanner );
00950 #else
00951 extern int ossswrap (yyscan_t yyscanner );
00952 #endif
00953 #endif
00954 
00955 #ifndef yytext_ptr
00956 static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
00957 #endif
00958 
00959 #ifdef YY_NEED_STRLEN
00960 static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
00961 #endif
00962 
00963 #ifndef YY_NO_INPUT
00964 
00965 #ifdef __cplusplus
00966 static int yyinput (yyscan_t yyscanner );
00967 #else
00968 static int input (yyscan_t yyscanner );
00969 #endif
00970 
00971 #endif
00972 
00973 /* Amount of stuff to slurp up with each read. */
00974 #ifndef YY_READ_BUF_SIZE
00975 #ifdef __ia64__
00976 /* On IA-64, the buffer size is 16k, not 8k */
00977 #define YY_READ_BUF_SIZE 16384
00978 #else
00979 #define YY_READ_BUF_SIZE 8192
00980 #endif /* __ia64__ */
00981 #endif
00982 
00983 /* Copy whatever the last rule matched to the standard output. */
00984 #ifndef ECHO
00985 /* This used to be an fputs(), but since the string might contain NUL's,
00986  * we now use fwrite().
00987  */
00988 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
00989 #endif
00990 
00991 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
00992  * is returned in "result".
00993  */
00994 #ifndef YY_INPUT
00995 #define YY_INPUT(buf,result,max_size) \
00996         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
00997                 { \
00998                 int c = '*'; \
00999                 size_t n; \
01000                 for ( n = 0; n < max_size && \
01001                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
01002                         buf[n] = (char) c; \
01003                 if ( c == '\n' ) \
01004                         buf[n++] = (char) c; \
01005                 if ( c == EOF && ferror( yyin ) ) \
01006                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
01007                 result = n; \
01008                 } \
01009         else \
01010                 { \
01011                 errno=0; \
01012                 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
01013                         { \
01014                         if( errno != EINTR) \
01015                                 { \
01016                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
01017                                 break; \
01018                                 } \
01019                         errno=0; \
01020                         clearerr(yyin); \
01021                         } \
01022                 }\
01023 \
01024 
01025 #endif
01026 
01027 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01028  * we don't want an extra ';' after the "return" because that will cause
01029  * some compilers to complain about unreachable statements.
01030  */
01031 #ifndef yyterminate
01032 #define yyterminate() return YY_NULL
01033 #endif
01034 
01035 /* Number of entries by which start-condition stack grows. */
01036 #ifndef YY_START_STACK_INCR
01037 #define YY_START_STACK_INCR 25
01038 #endif
01039 
01040 /* Report a fatal error. */
01041 #ifndef YY_FATAL_ERROR
01042 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
01043 #endif
01044 
01045 /* end tables serialization structures and prototypes */
01046 
01047 /* Default declaration of generated scanner - a define so the user can
01048  * easily add parameters.
01049  */
01050 #ifndef YY_DECL
01051 #define YY_DECL_IS_OURS 1
01052 
01053 extern int ossslex (yyscan_t yyscanner);
01054 
01055 #define YY_DECL int ossslex (yyscan_t yyscanner)
01056 #endif /* !YY_DECL */
01057 
01058 /* Code executed at the beginning of each rule, after yytext and yyleng
01059  * have been set up.
01060  */
01061 #ifndef YY_USER_ACTION
01062 #define YY_USER_ACTION
01063 #endif
01064 
01065 /* Code executed at the end of each rule. */
01066 #ifndef YY_BREAK
01067 #define YY_BREAK break;
01068 #endif
01069 
01070 #define YY_RULE_SETUP \
01071         YY_USER_ACTION
01072 
01075 YY_DECL
01076 {
01077         register yy_state_type yy_current_state;
01078         register char *yy_cp, *yy_bp;
01079         register int yy_act;
01080     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
01081 
01082 #line 112 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01083 
01084 
01085 #line 1086 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.cpp"
01086 
01087         if ( !yyg->yy_init )
01088                 {
01089                 yyg->yy_init = 1;
01090 
01091 #ifdef YY_USER_INIT
01092                 YY_USER_INIT;
01093 #endif
01094 
01095                 if ( ! yyg->yy_start )
01096                         yyg->yy_start = 1;      /* first start state */
01097 
01098                 if ( ! yyin )
01099                         yyin = stdin;
01100 
01101                 if ( ! yyout )
01102                         yyout = stdout;
01103 
01104                 if ( ! YY_CURRENT_BUFFER ) {
01105                         osssensure_buffer_stack (yyscanner);
01106                         YY_CURRENT_BUFFER_LVALUE =
01107                                 osss_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
01108                 }
01109 
01110                 osss_load_buffer_state(yyscanner );
01111                 }
01112 
01113         while ( 1 )             /* loops until end-of-file is reached */
01114                 {
01115                 yy_cp = yyg->yy_c_buf_p;
01116 
01117                 /* Support of yytext. */
01118                 *yy_cp = yyg->yy_hold_char;
01119 
01120                 /* yy_bp points to the position in yy_ch_buf of the start of
01121                  * the current run.
01122                  */
01123                 yy_bp = yy_cp;
01124 
01125                 yy_current_state = yyg->yy_start;
01126 yy_match:
01127                 do
01128                         {
01129                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
01130                         if ( yy_accept[yy_current_state] )
01131                                 {
01132                                 yyg->yy_last_accepting_state = yy_current_state;
01133                                 yyg->yy_last_accepting_cpos = yy_cp;
01134                                 }
01135                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01136                                 {
01137                                 yy_current_state = (int) yy_def[yy_current_state];
01138                                 if ( yy_current_state >= 405 )
01139                                         yy_c = yy_meta[(unsigned int) yy_c];
01140                                 }
01141                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01142                         ++yy_cp;
01143                         }
01144                 while ( yy_base[yy_current_state] != 685 );
01145 
01146 yy_find_action:
01147                 yy_act = yy_accept[yy_current_state];
01148                 if ( yy_act == 0 )
01149                         { /* have to back up */
01150                         yy_cp = yyg->yy_last_accepting_cpos;
01151                         yy_current_state = yyg->yy_last_accepting_state;
01152                         yy_act = yy_accept[yy_current_state];
01153                         }
01154 
01155                 YY_DO_BEFORE_ACTION;
01156 
01157                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
01158                         {
01159                         int yyl;
01160                         for ( yyl = 0; yyl < yyleng; ++yyl )
01161                                 if ( yytext[yyl] == '\n' )
01162                                            
01163     do{ yylineno++;
01164         yycolumn=0;
01165     }while(0)
01166 ;
01167                         }
01168 
01169 do_action:      /* This label is used only to access EOF actions. */
01170 
01171                 switch ( yy_act )
01172         { /* beginning of action switch */
01173                         case 0: /* must back up */
01174                         /* undo the effects of YY_DO_BEFORE_ACTION */
01175                         *yy_cp = yyg->yy_hold_char;
01176                         yy_cp = yyg->yy_last_accepting_cpos;
01177                         yy_current_state = yyg->yy_last_accepting_state;
01178                         goto yy_find_action;
01179 
01180 case 1:
01181 /* rule 1 can match eol */
01182 YY_RULE_SETUP
01183 #line 114 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01184 
01185         YY_BREAK
01186 case 2:
01187 /* rule 2 can match eol */
01188 YY_RULE_SETUP
01189 #line 118 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01190 {
01191         YY_PRINT  
01192         //char *ch = strdup(yytext);
01193         char *ch = yytext;
01194         // move past -config
01195         ch+=7;
01196         for(; isspace(*ch); ch++);
01197         std::string str(  ch);
01198         yyextra->configFile = str;
01199 
01200 }
01201         YY_BREAK
01202 case 3:
01203 /* rule 3 can match eol */
01204 YY_RULE_SETUP
01205 #line 132 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01206 {
01207         YY_PRINT  
01208         //char *ch = strdup(yytext);
01209         char *ch = yytext;
01210         // move past -config
01211         ch+=6;
01212         for(; isspace(*ch); ch++);
01213         std::string str(  ch);
01214         yyextra->configFile = str;
01215 
01216 }
01217         YY_BREAK
01218 case 4:
01219 /* rule 4 can match eol */
01220 YY_RULE_SETUP
01221 #line 145 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01222 {
01223         YY_PRINT  
01224         //char *ch = strdup(yytext);
01225         char *ch = yytext;
01226         // move past -config
01227         ch+=6;
01228         for(; isspace(*ch); ch++);
01229         std::string str(  ch);
01230         yyextra->configFile = str;
01231 
01232 }
01233         YY_BREAK
01234 case 5:
01235 YY_RULE_SETUP
01236 #line 158 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01237 {
01238         YY_PRINT  
01239         yyextra->invokeHelp = true;
01240 
01241 }
01242         YY_BREAK
01243 case 6:
01244 YY_RULE_SETUP
01245 #line 164 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01246 {
01247     YY_PRINT  
01248     yyextra->invokeHelp = true;
01249  
01250  }
01251         YY_BREAK
01252 case 7:
01253 YY_RULE_SETUP
01254 #line 170 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01255 {
01256         YY_PRINT
01257         yyextra->invokeHelp = true;
01258         
01259 }
01260         YY_BREAK
01261 case 8:
01262 YY_RULE_SETUP
01263 #line 178 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01264 {
01265     YY_PRINT  
01266     yyextra->printModel = true;
01267  
01268  }
01269         YY_BREAK
01270 case 9:
01271 YY_RULE_SETUP
01272 #line 185 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01273 {
01274     YY_PRINT  
01275     yyextra->printModel = true;
01276  
01277  }
01278         YY_BREAK
01279 case 10:
01280 YY_RULE_SETUP
01281 #line 192 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01282 {
01283         YY_PRINT  
01284         yyextra->writeVersion = true;
01285 }
01286         YY_BREAK
01287 case 11:
01288 YY_RULE_SETUP
01289 #line 198 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01290 {
01291         YY_PRINT  
01292         yyextra->writeVersion = true;
01293 }
01294         YY_BREAK
01295 case 12:
01296 YY_RULE_SETUP
01297 #line 203 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01298 {
01299         YY_PRINT 
01300         yyextra->writeVersion = true;
01301 }
01302         YY_BREAK
01303 case 13:
01304 YY_RULE_SETUP
01305 #line 209 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01306 {
01307    YY_PRINT  
01308    yyextra->quit = true;
01309  
01310 }
01311         YY_BREAK
01312 case 14:
01313 /* rule 14 can match eol */
01314 YY_RULE_SETUP
01315 #line 216 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01316 {
01317         //if(yyextra->osilFile == ""){
01318                 YY_PRINT  
01319                 //char *ch = strdup(yytext);
01320                 char *ch = yytext;
01321                 // move past -osil
01322                 ch+=5;
01323                 for(; isspace(*ch); ch++);
01324                 std::string str(  ch);
01325                 yyextra->osilFile = str;
01326         //} 
01327 }
01328         YY_BREAK
01329 case 15:
01330 /* rule 15 can match eol */
01331 YY_RULE_SETUP
01332 #line 232 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01333 {
01334         // if(yyextra->osilFile == ""){
01335                  YY_PRINT  
01336                  //char *ch = strdup(yytext);
01337                  char *ch = yytext;
01338                  // move past osil
01339                  ch+=4;
01340                  for(; isspace(*ch); ch++);
01341                  std::string str(  ch);
01342                  yyextra->osilFile = str;
01343         // } 
01344  }
01345         YY_BREAK
01346 case 16:
01347 /* rule 16 can match eol */
01348 YY_RULE_SETUP
01349 #line 246 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01350 {
01351         // if(yyextra->osilFile == ""){
01352                  YY_PRINT  
01353                  //char *ch = strdup(yytext);
01354                  char *ch = yytext;
01355                  // move past osil
01356                  ch+=4;
01357                  for(; isspace(*ch); ch++);
01358                  std::string str(  ch);
01359                  yyextra->osilFile = str;
01360         // } 
01361  }
01362         YY_BREAK
01363 case 17:
01364 /* rule 17 can match eol */
01365 YY_RULE_SETUP
01366 #line 259 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01367 {
01368         //if(yyextra->osrlFile == ""){
01369                 YY_PRINT 
01370                 //char *ch = strdup(yytext);
01371                 char *ch = yytext;
01372                 // move past -osrl
01373                 ch+=5;
01374                 for(; isspace(*ch); ch++);
01375                 std::string str(  ch);
01376                 yyextra->osrlFile = str;
01377         //}  
01378 }  
01379         YY_BREAK
01380 case 18:
01381 /* rule 18 can match eol */
01382 YY_RULE_SETUP
01383 #line 272 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01384 {
01385          //if(yyextra->osrlFile == ""){
01386                  YY_PRINT 
01387                  //char *ch = strdup(yytext);
01388                  char *ch = yytext;
01389                  // move past -osrl
01390                  ch+=4;
01391                  for(; isspace(*ch); ch++);
01392                  std::string str(  ch);
01393                  yyextra->osrlFile = str;
01394          //}  
01395  }                       
01396         YY_BREAK
01397 case 19:
01398 /* rule 19 can match eol */
01399 YY_RULE_SETUP
01400 #line 286 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01401 {
01402         // if(yyextra->osrlFile == ""){
01403                  YY_PRINT 
01404                  //char *ch = strdup(yytext);
01405                  char *ch = yytext;
01406                  // move past -osrl
01407                  ch+=4;
01408                  for(; isspace(*ch); ch++);
01409                  std::string str(  ch);
01410                  yyextra->osrlFile = str;
01411         // }  
01412  }                       
01413         YY_BREAK
01414 case 20:
01415 /* rule 20 can match eol */
01416 YY_RULE_SETUP
01417 #line 301 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01418 {
01419         //if(yyextra->insListFile == ""){
01420                 YY_PRINT
01421                 //char *ch = strdup(yytext);
01422                 char *ch = yytext;
01423                 // move past -insList
01424                 ch+=8;
01425                 for(; isspace(*ch); ch++);
01426                 std::string str(  ch);
01427                 yyextra->insListFile = str;
01428         //}  
01429 }  
01430         YY_BREAK
01431 case 21:
01432 /* rule 21 can match eol */
01433 YY_RULE_SETUP
01434 #line 316 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01435 {
01436          //if(yyextra->insListFile == ""){
01437                  YY_PRINT
01438                  //char *ch = strdup(yytext);
01439                  char *ch = yytext;
01440                  // move past -insList
01441                  ch+=7;
01442                  for(; isspace(*ch); ch++);
01443                  std::string str(  ch);
01444                  yyextra->insListFile = str;
01445         // }  
01446  }
01447         YY_BREAK
01448 case 22:
01449 /* rule 22 can match eol */
01450 YY_RULE_SETUP
01451 #line 330 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01452 {
01453         // if(yyextra->insListFile == ""){
01454                  YY_PRINT
01455                  //char *ch = strdup(yytext);
01456                  char *ch = yytext;
01457                  // move past -insList
01458                  ch+=7;
01459                  for(; isspace(*ch); ch++);
01460                  std::string str(  ch);
01461                  yyextra->insListFile = str;
01462         // }  
01463  }
01464         YY_BREAK
01465 case 23:
01466 /* rule 23 can match eol */
01467 YY_RULE_SETUP
01468 #line 344 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01469 {
01470         //if(yyextra->osolFile == ""){
01471                 YY_PRINT 
01472                 //char *ch = strdup(yytext);
01473                 char *ch = yytext;
01474                 // move past -osol
01475                 ch+=5;
01476                 for(; isspace(*ch); ch++);
01477                 std::string str(  ch);
01478                 yyextra->osolFile = str;  
01479         //}
01480 }
01481         YY_BREAK
01482 case 24:
01483 /* rule 24 can match eol */
01484 YY_RULE_SETUP
01485 #line 359 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01486 {
01487         //if(yyextra->osolFile == ""){
01488                  YY_PRINT 
01489                  //char *ch = strdup(yytext);
01490                  char *ch = yytext;
01491                  // move past -osol
01492                  ch+=4;
01493                  for(; isspace(*ch); ch++);
01494                  std::string str(  ch);
01495                  yyextra->osolFile = str;  
01496         //}
01497 }
01498         YY_BREAK
01499 case 25:
01500 /* rule 25 can match eol */
01501 YY_RULE_SETUP
01502 #line 373 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01503 {
01504          //if(yyextra->osolFile == ""){
01505                  YY_PRINT 
01506                  //char *ch = strdup(yytext);
01507                  char *ch = yytext;
01508                  // move past -osol
01509                  ch+=4;
01510                  for(; isspace(*ch); ch++);
01511                  std::string str(  ch);
01512                  yyextra->osolFile = str;  
01513         // }
01514  }
01515         YY_BREAK
01516 case 26:
01517 /* rule 26 can match eol */
01518 YY_RULE_SETUP
01519 #line 388 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01520 {
01521         //if(yyextra->osplInputFile == ""){
01522                 YY_PRINT 
01523                 //char *ch = strdup(yytext);
01524                 char *ch = yytext;
01525                 // move past -osplInput
01526                 ch+=10;
01527                 for(; isspace(*ch); ch++);
01528                 std::string str(  ch);
01529                 yyextra->osplInputFile = str;  
01530         //}
01531 }
01532         YY_BREAK
01533 case 27:
01534 /* rule 27 can match eol */
01535 YY_RULE_SETUP
01536 #line 402 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01537 {
01538         // if(yyextra->osplInputFile == ""){
01539                  YY_PRINT 
01540                  //char *ch = strdup(yytext);
01541                  char *ch = yytext;
01542                  // move past -osplInput
01543                  ch+=9;
01544                  for(; isspace(*ch); ch++);
01545                  std::string str(  ch);
01546                  yyextra->osplInputFile = str;  
01547         // }
01548 }
01549         YY_BREAK
01550 case 28:
01551 /* rule 28 can match eol */
01552 YY_RULE_SETUP
01553 #line 415 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01554 {
01555         // if(yyextra->osplInputFile == ""){
01556                  YY_PRINT 
01557                  //char *ch = strdup(yytext);
01558                  char *ch = yytext;
01559                  // move past -osplInput
01560                  ch+=9;
01561                  for(; isspace(*ch); ch++);
01562                  std::string str(  ch);
01563                  yyextra->osplInputFile = str;  
01564         // }
01565 }
01566         YY_BREAK
01567 case 29:
01568 /* rule 29 can match eol */
01569 YY_RULE_SETUP
01570 #line 428 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01571 {
01572         //if(yyextra->osplOutputFile == ""){
01573                 YY_PRINT 
01574                 //char *ch = strdup(yytext);
01575                 char *ch = yytext;
01576                 // move past -osplInput
01577                 ch+=11;
01578                 for(; isspace(*ch); ch++);
01579                 std::string str(  ch);
01580                 yyextra->osplOutputFile = str;  
01581         //}
01582 }
01583         YY_BREAK
01584 case 30:
01585 /* rule 30 can match eol */
01586 YY_RULE_SETUP
01587 #line 441 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01588 {
01589         //if(yyextra->printRow == ""){
01590                 YY_PRINT 
01591                 //yyextra->printRowNumberAsString = strdup(yytext);
01592                 yyextra->printRowNumberAsString =  yytext;
01593                 //char *ch = strdup(yytext);
01594                 char *ch = yytext;
01595                 // move past -printRow
01596                 ch+=8;
01597                 for(; isspace(*ch); ch++);
01598                 std::string str(  ch);
01599                 yyextra->printRowNumberAsString = str; 
01600         //}
01601 }
01602         YY_BREAK
01603 case 31:
01604 /* rule 31 can match eol */
01605 YY_RULE_SETUP
01606 #line 457 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01607 {
01608         //if(yyextra->printRow == ""){
01609                 YY_PRINT 
01610                 //yyextra->printRowNumberAsString = strdup(yytext);
01611                 yyextra->printRowNumberAsString =  yytext;
01612                 //char *ch = strdup(yytext);
01613                 char *ch = yytext;
01614                 // move past -printRow
01615                 ch+=8;
01616                 for(; isspace(*ch); ch++);
01617                 std::string str(  ch);
01618                 yyextra->printRowNumberAsString = str; 
01619         //}
01620 }
01621         YY_BREAK
01622 case 32:
01623 /* rule 32 can match eol */
01624 YY_RULE_SETUP
01625 #line 472 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01626 {
01627         //if(yyextra->printRow == ""){
01628                 YY_PRINT 
01629                 //yyextra->printRowNumberAsString = strdup(yytext);
01630                 yyextra->printRowNumberAsString =  yytext;
01631                 //char *ch = strdup(yytext);
01632                 char *ch = yytext;
01633                 // move past -printRow
01634                 ch+=8;
01635                 for(; isspace(*ch); ch++);
01636                 std::string str(  ch);
01637                 yyextra->printRowNumberAsString = str; 
01638         //}
01639 }
01640         YY_BREAK
01641 case 33:
01642 /* rule 33 can match eol */
01643 YY_RULE_SETUP
01644 #line 487 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01645 {
01646         //if(yyextra->serviceMethod == ""){
01647                 YY_PRINT
01648                 //char *ch = strdup(yytext);
01649                 char *ch = yytext;
01650                 // move past -serviceMethod
01651                 ch+=14;
01652                 for(; isspace(*ch); ch++);
01653                 std::string str(  ch);
01654                 yyextra->serviceMethod = str; 
01655         //}
01656 }
01657         YY_BREAK
01658 case 34:
01659 /* rule 34 can match eol */
01660 YY_RULE_SETUP
01661 #line 500 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01662 {
01663         // if(yyextra->serviceMethod == ""){
01664                  YY_PRINT
01665                  //char *ch = strdup(yytext);
01666                  char *ch = yytext;
01667                  // move past -serviceMethod
01668                  ch+=13;
01669                  for(; isspace(*ch); ch++);
01670                  std::string str(  ch);
01671                  yyextra->serviceMethod = str; 
01672         // }
01673 }
01674         YY_BREAK
01675 case 35:
01676 /* rule 35 can match eol */
01677 YY_RULE_SETUP
01678 #line 513 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01679 {
01680         // if(yyextra->serviceMethod == ""){
01681                  YY_PRINT
01682                  //char *ch = strdup(yytext);
01683                  char *ch = yytext;
01684                  // move past -serviceMethod
01685                  ch+=13;
01686                  for(; isspace(*ch); ch++);
01687                  std::string str(  ch);
01688                  yyextra->serviceMethod = str; 
01689         // }
01690 }
01691         YY_BREAK
01692 case 36:
01693 /* rule 36 can match eol */
01694 YY_RULE_SETUP
01695 #line 526 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01696 {
01697         //if(yyextra->serviceLocation == ""){
01698                 YY_PRINT 
01699                 //yyextra->serviceLocation = strdup(yytext);
01700                 yyextra->serviceLocation =  yytext;
01701                 //char *ch = strdup(yytext);
01702                 char *ch = yytext;
01703                 // move past -serviceLocation
01704                 ch+=16;
01705                 for(; isspace(*ch); ch++);
01706                 std::string str(  ch);
01707                 yyextra->serviceLocation = str; 
01708         //}
01709 }
01710         YY_BREAK
01711 case 37:
01712 /* rule 37 can match eol */
01713 YY_RULE_SETUP
01714 #line 543 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01715 {
01716         // if(yyextra->serviceLocation == ""){
01717                  YY_PRINT 
01718                  //yyextra->serviceLocation = strdup(yytext);
01719                  yyextra->serviceLocation =  yytext;
01720                  //char *ch = strdup(yytext);
01721                  char *ch = yytext;
01722                  // move past -serviceLocation
01723                  ch+=15;
01724                  for(; isspace(*ch); ch++);
01725                  std::string str(  ch);
01726                  yyextra->serviceLocation = str; 
01727         // }
01728 }
01729         YY_BREAK
01730 case 38:
01731 /* rule 38 can match eol */
01732 YY_RULE_SETUP
01733 #line 559 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01734 {
01735         // if(yyextra->serviceLocation == ""){
01736                  YY_PRINT 
01737                  //yyextra->serviceLocation = strdup(yytext);
01738                  yyextra->serviceLocation =  yytext;
01739                  //char *ch = strdup(yytext);
01740                  char *ch = yytext;
01741                  // move past -serviceLocation
01742                  ch+=15;
01743                  for(; isspace(*ch); ch++);
01744                  std::string str(  ch);
01745                  yyextra->serviceLocation = str; 
01746         // }
01747 }
01748         YY_BREAK
01749 case 39:
01750 /* rule 39 can match eol */
01751 YY_RULE_SETUP
01752 #line 575 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01753 {
01754         //if(yyextra->mpsFile == ""){
01755                 YY_PRINT 
01756                 //char *ch = strdup(yytext);
01757                 char *ch = yytext;
01758                 // move past -mps
01759                 ch+=4;
01760                 for(; isspace(*ch); ch++);
01761                 std::string str(  ch);
01762                 yyextra->mpsFile = str; 
01763         //}
01764 }
01765         YY_BREAK
01766 case 40:
01767 /* rule 40 can match eol */
01768 YY_RULE_SETUP
01769 #line 591 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01770 {
01771         // if(yyextra->mpsFile == ""){
01772                  YY_PRINT 
01773                  //char *ch = strdup(yytext);
01774                  char *ch = yytext;
01775                  // move past -mps
01776                  ch+=3;
01777                  for(; isspace(*ch); ch++);
01778                  std::string str(  ch);
01779                  yyextra->mpsFile = str; 
01780         // }
01781 }
01782         YY_BREAK
01783 case 41:
01784 /* rule 41 can match eol */
01785 YY_RULE_SETUP
01786 #line 606 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01787 {
01788         // if(yyextra->mpsFile == ""){
01789                  YY_PRINT 
01790                  //char *ch = strdup(yytext);
01791                  char *ch = yytext;
01792                  // move past -mps
01793                  ch+=3;
01794                  for(; isspace(*ch); ch++);
01795                  std::string str(  ch);
01796                  yyextra->mpsFile = str; 
01797         // }
01798 }
01799         YY_BREAK
01800 case 42:
01801 /* rule 42 can match eol */
01802 YY_RULE_SETUP
01803 #line 619 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01804 {
01805         //if(yyextra->nlFile == ""){
01806                 YY_PRINT
01807                 //char *ch = strdup(yytext);
01808                 char *ch = yytext;
01809                 // move past -nl
01810                 ch+=3;
01811                 for(; isspace(*ch); ch++);
01812                 std::string str(  ch);
01813                 yyextra->nlFile = str; 
01814         //} 
01815 }
01816         YY_BREAK
01817 case 43:
01818 /* rule 43 can match eol */
01819 YY_RULE_SETUP
01820 #line 635 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01821 {
01822         // if(yyextra->nlFile == ""){
01823                  YY_PRINT
01824                  //char *ch = strdup(yytext);
01825                  char *ch = yytext;
01826                  // move past -nl
01827                  ch+=2;
01828                  for(; isspace(*ch); ch++);
01829                  std::string str(  ch);
01830                  yyextra->nlFile = str; 
01831         // } 
01832 }
01833         YY_BREAK
01834 case 44:
01835 /* rule 44 can match eol */
01836 YY_RULE_SETUP
01837 #line 649 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01838 {
01839         // if(yyextra->nlFile == ""){
01840                  YY_PRINT
01841                  //char *ch = strdup(yytext);
01842                  char *ch = yytext;
01843                  // move past -nl
01844                  ch+=2;
01845                  for(; isspace(*ch); ch++);
01846                  std::string str(  ch);
01847                  yyextra->nlFile = str; 
01848         // } 
01849 }
01850         YY_BREAK
01851 case 45:
01852 /* rule 45 can match eol */
01853 YY_RULE_SETUP
01854 #line 665 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01855 {
01856         //if(yyextra->gamsControlFile == ""){
01857                 YY_PRINT
01858                 //char *ch = strdup(yytext);
01859                 char *ch = yytext;
01860                 // move past -dat
01861                 ch+=4;
01862                 for(; isspace(*ch); ch++);
01863                 std::string str(  ch);
01864                 yyextra->gamsControlFile = str;
01865         //} 
01866 }
01867         YY_BREAK
01868 case 46:
01869 /* rule 46 can match eol */
01870 YY_RULE_SETUP
01871 #line 680 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01872 {
01873         // if(yyextra->gamsControlFile == ""){
01874                  YY_PRINT
01875                  //char *ch = strdup(yytext);
01876                  char *ch = yytext;
01877                  // move past -dat
01878                  ch+=3;
01879                  for(; isspace(*ch); ch++);
01880                  std::string str(  ch);
01881                  yyextra->gamsControlFile = str;
01882         // } 
01883 }
01884         YY_BREAK
01885 case 47:
01886 /* rule 47 can match eol */
01887 YY_RULE_SETUP
01888 #line 693 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01889 {
01890          //if(yyextra->gamsControlFile == ""){
01891                  YY_PRINT
01892                  //char *ch = strdup(yytext);
01893                  char *ch = yytext;
01894                  // move past -dat
01895                  ch+=3;
01896                  for(; isspace(*ch); ch++);
01897                  std::string str(  ch);
01898                  yyextra->gamsControlFile = str;
01899         // } 
01900 }
01901         YY_BREAK
01902 case 48:
01903 /* rule 48 can match eol */
01904 YY_RULE_SETUP
01905 #line 706 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01906 {
01907         //if(yyextra->solverName == ""){
01908                 YY_PRINT 
01909                 //char *ch = strdup(yytext);
01910                 char *ch = yytext;
01911                 // move past -solver
01912                 ch+=7;
01913                 for(; isspace(*ch); ch++);
01914                 std::string str(  ch);
01915                 yyextra->solverName = str;
01916         //} 
01917 }
01918         YY_BREAK
01919 case 49:
01920 /* rule 49 can match eol */
01921 YY_RULE_SETUP
01922 #line 720 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01923 {
01924          //if(yyextra->solverName == ""){
01925                  YY_PRINT 
01926                  //char *ch = strdup(yytext);
01927                  char *ch = yytext;
01928                  // move past -solver
01929                  ch+=6;
01930                  for(; isspace(*ch); ch++);
01931                  std::string str(  ch);
01932                  yyextra->solverName = str;
01933         // } 
01934 }
01935         YY_BREAK
01936 case 50:
01937 /* rule 50 can match eol */
01938 YY_RULE_SETUP
01939 #line 733 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01940 {
01941         // if(yyextra->solverName == ""){
01942                  YY_PRINT 
01943                  //char *ch = strdup(yytext);
01944                  char *ch = yytext;
01945                  // move past -solver
01946                  ch+=6;
01947                  for(; isspace(*ch); ch++);
01948                  std::string str(  ch);
01949                  yyextra->solverName = str;
01950         // } 
01951 }
01952         YY_BREAK
01953 case 51:
01954 /* rule 51 can match eol */
01955 YY_RULE_SETUP
01956 #line 746 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01957 {
01958         //if(yyextra->browser == ""){
01959                 YY_PRINT  
01960                 //char *ch = strdup(yytext);
01961                 char *ch = yytext;
01962                 // move past -browser
01963                 ch+=8;
01964                 for(; isspace(*ch); ch++);
01965                 std::string str(  ch);
01966                 yyextra->browser = str; 
01967         //}
01968 }
01969         YY_BREAK
01970 case 52:
01971 /* rule 52 can match eol */
01972 YY_RULE_SETUP
01973 #line 760 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01974 {
01975         // if(yyextra->browser == ""){
01976                  YY_PRINT  
01977                  //char *ch = strdup(yytext);
01978                  char *ch = yytext;
01979                  // move past -browser
01980                  ch+=7;
01981                  for(; isspace(*ch); ch++);
01982                  std::string str(  ch);
01983                  yyextra->browser = str; 
01984         // }
01985 }
01986         YY_BREAK
01987 case 53:
01988 /* rule 53 can match eol */
01989 YY_RULE_SETUP
01990 #line 774 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
01991 {
01992         // if(yyextra->browser == ""){
01993                  YY_PRINT  
01994                  //char *ch = strdup(yytext);
01995                  char *ch = yytext;
01996                  // move past -browser
01997                  ch+=7;
01998                  for(; isspace(*ch); ch++);
01999                  std::string str(  ch);
02000                  yyextra->browser = str; 
02001         // }
02002 }
02003         YY_BREAK
02004 case 54:
02005 YY_RULE_SETUP
02006 #line 787 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
02007 {
02008         std::string error;
02009         std::ostringstream outStr;
02010         outStr << "encountered a spurious character in the lexer" << endl;
02011         outStr << "Please make sure your options are spelled correctly" << endl;
02012         outStr << "Type OSSolverService -h or OSSolverService --help for valid commands" << endl;
02013         outStr << "The first character is: ";
02014         outStr <<  yytext;
02015         outStr << endl;
02016         //outStr << "See line number: " << yylineno << endl;  
02017         error = outStr.str();
02018         throw ErrorClass( error);  
02019 }
02020         YY_BREAK
02021 case 55:
02022 YY_RULE_SETUP
02023 #line 800 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
02024 ECHO;
02025         YY_BREAK
02026 #line 2027 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.cpp"
02027 case YY_STATE_EOF(INITIAL):
02028         yyterminate();
02029 
02030         case YY_END_OF_BUFFER:
02031                 {
02032                 /* Amount of text matched not including the EOB char. */
02033                 int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
02034 
02035                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
02036                 *yy_cp = yyg->yy_hold_char;
02037                 YY_RESTORE_YY_MORE_OFFSET
02038 
02039                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
02040                         {
02041                         /* We're scanning a new file or input source.  It's
02042                          * possible that this happened because the user
02043                          * just pointed yyin at a new source and called
02044                          * ossslex().  If so, then we have to assure
02045                          * consistency between YY_CURRENT_BUFFER and our
02046                          * globals.  Here is the right place to do so, because
02047                          * this is the first action (other than possibly a
02048                          * back-up) that will match for the new input source.
02049                          */
02050                         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02051                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
02052                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
02053                         }
02054 
02055                 /* Note that here we test for yy_c_buf_p "<=" to the position
02056                  * of the first EOB in the buffer, since yy_c_buf_p will
02057                  * already have been incremented past the NUL character
02058                  * (since all states make transitions on EOB to the
02059                  * end-of-buffer state).  Contrast this with the test
02060                  * in input().
02061                  */
02062                 if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
02063                         { /* This was really a NUL. */
02064                         yy_state_type yy_next_state;
02065 
02066                         yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
02067 
02068                         yy_current_state = yy_get_previous_state( yyscanner );
02069 
02070                         /* Okay, we're now positioned to make the NUL
02071                          * transition.  We couldn't have
02072                          * yy_get_previous_state() go ahead and do it
02073                          * for us because it doesn't know how to deal
02074                          * with the possibility of jamming (and we don't
02075                          * want to build jamming into it because then it
02076                          * will run more slowly).
02077                          */
02078 
02079                         yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
02080 
02081                         yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02082 
02083                         if ( yy_next_state )
02084                                 {
02085                                 /* Consume the NUL. */
02086                                 yy_cp = ++yyg->yy_c_buf_p;
02087                                 yy_current_state = yy_next_state;
02088                                 goto yy_match;
02089                                 }
02090 
02091                         else
02092                                 {
02093                                 yy_cp = yyg->yy_c_buf_p;
02094                                 goto yy_find_action;
02095                                 }
02096                         }
02097 
02098                 else switch ( yy_get_next_buffer( yyscanner ) )
02099                         {
02100                         case EOB_ACT_END_OF_FILE:
02101                                 {
02102                                 yyg->yy_did_buffer_switch_on_eof = 0;
02103 
02104                                 if ( ossswrap(yyscanner ) )
02105                                         {
02106                                         /* Note: because we've taken care in
02107                                          * yy_get_next_buffer() to have set up
02108                                          * yytext, we can now set up
02109                                          * yy_c_buf_p so that if some total
02110                                          * hoser (like flex itself) wants to
02111                                          * call the scanner after we return the
02112                                          * YY_NULL, it'll still work - another
02113                                          * YY_NULL will get returned.
02114                                          */
02115                                         yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
02116 
02117                                         yy_act = YY_STATE_EOF(YY_START);
02118                                         goto do_action;
02119                                         }
02120 
02121                                 else
02122                                         {
02123                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
02124                                                 YY_NEW_FILE;
02125                                         }
02126                                 break;
02127                                 }
02128 
02129                         case EOB_ACT_CONTINUE_SCAN:
02130                                 yyg->yy_c_buf_p =
02131                                         yyg->yytext_ptr + yy_amount_of_matched_text;
02132 
02133                                 yy_current_state = yy_get_previous_state( yyscanner );
02134 
02135                                 yy_cp = yyg->yy_c_buf_p;
02136                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02137                                 goto yy_match;
02138 
02139                         case EOB_ACT_LAST_MATCH:
02140                                 yyg->yy_c_buf_p =
02141                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
02142 
02143                                 yy_current_state = yy_get_previous_state( yyscanner );
02144 
02145                                 yy_cp = yyg->yy_c_buf_p;
02146                                 yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
02147                                 goto yy_find_action;
02148                         }
02149                 break;
02150                 }
02151 
02152         default:
02153                 YY_FATAL_ERROR(
02154                         "fatal flex scanner internal error--no action found" );
02155         } /* end of action switch */
02156                 } /* end of scanning one token */
02157 } /* end of ossslex */
02158 
02159 /* yy_get_next_buffer - try to read in a new buffer
02160  *
02161  * Returns a code representing an action:
02162  *      EOB_ACT_LAST_MATCH -
02163  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
02164  *      EOB_ACT_END_OF_FILE - end of file
02165  */
02166 static int yy_get_next_buffer (yyscan_t yyscanner)
02167 {
02168     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02169         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
02170         register char *source = yyg->yytext_ptr;
02171         register int number_to_move, i;
02172         int ret_val;
02173 
02174         if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
02175                 YY_FATAL_ERROR(
02176                 "fatal flex scanner internal error--end of buffer missed" );
02177 
02178         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
02179                 { /* Don't try to fill the buffer, so this is an EOF. */
02180                 if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
02181                         {
02182                         /* We matched a single character, the EOB, so
02183                          * treat this as a final EOF.
02184                          */
02185                         return EOB_ACT_END_OF_FILE;
02186                         }
02187 
02188                 else
02189                         {
02190                         /* We matched some text prior to the EOB, first
02191                          * process it.
02192                          */
02193                         return EOB_ACT_LAST_MATCH;
02194                         }
02195                 }
02196 
02197         /* Try to read more data. */
02198 
02199         /* First move last chars to start of buffer. */
02200         number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
02201 
02202         for ( i = 0; i < number_to_move; ++i )
02203                 *(dest++) = *(source++);
02204 
02205         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
02206                 /* don't do the read, it's not guaranteed to return an EOF,
02207                  * just force an EOF
02208                  */
02209                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
02210 
02211         else
02212                 {
02213                         int num_to_read =
02214                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
02215 
02216                 while ( num_to_read <= 0 )
02217                         { /* Not enough room in the buffer - grow it. */
02218 
02219                         /* just a shorter name for the current buffer */
02220                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
02221 
02222                         int yy_c_buf_p_offset =
02223                                 (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
02224 
02225                         if ( b->yy_is_our_buffer )
02226                                 {
02227                                 int new_size = b->yy_buf_size * 2;
02228 
02229                                 if ( new_size <= 0 )
02230                                         b->yy_buf_size += b->yy_buf_size / 8;
02231                                 else
02232                                         b->yy_buf_size *= 2;
02233 
02234                                 b->yy_ch_buf = (char *)
02235                                         /* Include room in for 2 EOB chars. */
02236                                         osssrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
02237                                 }
02238                         else
02239                                 /* Can't grow it, we don't own it. */
02240                                 b->yy_ch_buf = 0;
02241 
02242                         if ( ! b->yy_ch_buf )
02243                                 YY_FATAL_ERROR(
02244                                 "fatal error - scanner input buffer overflow" );
02245 
02246                         yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
02247 
02248                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
02249                                                 number_to_move - 1;
02250 
02251                         }
02252 
02253                 if ( num_to_read > YY_READ_BUF_SIZE )
02254                         num_to_read = YY_READ_BUF_SIZE;
02255 
02256                 /* Read in more data. */
02257                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
02258                         yyg->yy_n_chars, (size_t) num_to_read );
02259 
02260                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02261                 }
02262 
02263         if ( yyg->yy_n_chars == 0 )
02264                 {
02265                 if ( number_to_move == YY_MORE_ADJ )
02266                         {
02267                         ret_val = EOB_ACT_END_OF_FILE;
02268                         osssrestart(yyin  ,yyscanner);
02269                         }
02270 
02271                 else
02272                         {
02273                         ret_val = EOB_ACT_LAST_MATCH;
02274                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
02275                                 YY_BUFFER_EOF_PENDING;
02276                         }
02277                 }
02278 
02279         else
02280                 ret_val = EOB_ACT_CONTINUE_SCAN;
02281 
02282         if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
02283                 /* Extend the array by 50%, plus the number we really need. */
02284                 yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
02285                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) osssrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
02286                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
02287                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
02288         }
02289 
02290         yyg->yy_n_chars += number_to_move;
02291         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
02292         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
02293 
02294         yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
02295 
02296         return ret_val;
02297 }
02298 
02299 /* yy_get_previous_state - get the state just before the EOB char was reached */
02300 
02301     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
02302 {
02303         register yy_state_type yy_current_state;
02304         register char *yy_cp;
02305     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02306 
02307         yy_current_state = yyg->yy_start;
02308 
02309         for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
02310                 {
02311                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
02312                 if ( yy_accept[yy_current_state] )
02313                         {
02314                         yyg->yy_last_accepting_state = yy_current_state;
02315                         yyg->yy_last_accepting_cpos = yy_cp;
02316                         }
02317                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02318                         {
02319                         yy_current_state = (int) yy_def[yy_current_state];
02320                         if ( yy_current_state >= 405 )
02321                                 yy_c = yy_meta[(unsigned int) yy_c];
02322                         }
02323                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02324                 }
02325 
02326         return yy_current_state;
02327 }
02328 
02329 /* yy_try_NUL_trans - try to make a transition on the NUL character
02330  *
02331  * synopsis
02332  *      next_state = yy_try_NUL_trans( current_state );
02333  */
02334     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state , yyscan_t yyscanner)
02335 {
02336         register int yy_is_jam;
02337     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
02338         register char *yy_cp = yyg->yy_c_buf_p;
02339 
02340         register YY_CHAR yy_c = 1;
02341         if ( yy_accept[yy_current_state] )
02342                 {
02343                 yyg->yy_last_accepting_state = yy_current_state;
02344                 yyg->yy_last_accepting_cpos = yy_cp;
02345                 }
02346         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02347                 {
02348                 yy_current_state = (int) yy_def[yy_current_state];
02349                 if ( yy_current_state >= 405 )
02350                         yy_c = yy_meta[(unsigned int) yy_c];
02351                 }
02352         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02353         yy_is_jam = (yy_current_state == 404);
02354 
02355         return yy_is_jam ? 0 : yy_current_state;
02356 }
02357 
02358 #ifndef YY_NO_INPUT
02359 #ifdef __cplusplus
02360     static int yyinput (yyscan_t yyscanner)
02361 #else
02362     static int input  (yyscan_t yyscanner)
02363 #endif
02364 
02365 {
02366         int c;
02367     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02368 
02369         *yyg->yy_c_buf_p = yyg->yy_hold_char;
02370 
02371         if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
02372                 {
02373                 /* yy_c_buf_p now points to the character we want to return.
02374                  * If this occurs *before* the EOB characters, then it's a
02375                  * valid NUL; if not, then we've hit the end of the buffer.
02376                  */
02377                 if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
02378                         /* This was really a NUL. */
02379                         *yyg->yy_c_buf_p = '\0';
02380 
02381                 else
02382                         { /* need more input */
02383                         int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
02384                         ++yyg->yy_c_buf_p;
02385 
02386                         switch ( yy_get_next_buffer( yyscanner ) )
02387                                 {
02388                                 case EOB_ACT_LAST_MATCH:
02389                                         /* This happens because yy_g_n_b()
02390                                          * sees that we've accumulated a
02391                                          * token and flags that we need to
02392                                          * try matching the token before
02393                                          * proceeding.  But for input(),
02394                                          * there's no matching to consider.
02395                                          * So convert the EOB_ACT_LAST_MATCH
02396                                          * to EOB_ACT_END_OF_FILE.
02397                                          */
02398 
02399                                         /* Reset buffer status. */
02400                                         osssrestart(yyin ,yyscanner);
02401 
02402                                         /*FALLTHROUGH*/
02403 
02404                                 case EOB_ACT_END_OF_FILE:
02405                                         {
02406                                         if ( ossswrap(yyscanner ) )
02407                                                 return EOF;
02408 
02409                                         if ( ! yyg->yy_did_buffer_switch_on_eof )
02410                                                 YY_NEW_FILE;
02411 #ifdef __cplusplus
02412                                         return yyinput(yyscanner);
02413 #else
02414                                         return input(yyscanner);
02415 #endif
02416                                         }
02417 
02418                                 case EOB_ACT_CONTINUE_SCAN:
02419                                         yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
02420                                         break;
02421                                 }
02422                         }
02423                 }
02424 
02425         c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
02426         *yyg->yy_c_buf_p = '\0';        /* preserve yytext */
02427         yyg->yy_hold_char = *++yyg->yy_c_buf_p;
02428 
02429         if ( c == '\n' )
02430                    
02431     do{ yylineno++;
02432         yycolumn=0;
02433     }while(0)
02434 ;
02435 
02436         return c;
02437 }
02438 #endif  /* ifndef YY_NO_INPUT */
02439 
02445     void osssrestart  (FILE * input_file , yyscan_t yyscanner)
02446 {
02447     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02448 
02449         if ( ! YY_CURRENT_BUFFER ){
02450         osssensure_buffer_stack (yyscanner);
02451                 YY_CURRENT_BUFFER_LVALUE =
02452             osss_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
02453         }
02454 
02455         osss_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
02456         osss_load_buffer_state(yyscanner );
02457 }
02458 
02463     void osss_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
02464 {
02465     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02466 
02467         /* TODO. We should be able to replace this entire function body
02468          * with
02469          *              ossspop_buffer_state();
02470          *              ossspush_buffer_state(new_buffer);
02471      */
02472         osssensure_buffer_stack (yyscanner);
02473         if ( YY_CURRENT_BUFFER == new_buffer )
02474                 return;
02475 
02476         if ( YY_CURRENT_BUFFER )
02477                 {
02478                 /* Flush out information for old buffer. */
02479                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
02480                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02481                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02482                 }
02483 
02484         YY_CURRENT_BUFFER_LVALUE = new_buffer;
02485         osss_load_buffer_state(yyscanner );
02486 
02487         /* We don't actually know whether we did this switch during
02488          * EOF (ossswrap()) processing, but the only time this flag
02489          * is looked at is after ossswrap() is called, so it's safe
02490          * to go ahead and always set it.
02491          */
02492         yyg->yy_did_buffer_switch_on_eof = 1;
02493 }
02494 
02495 static void osss_load_buffer_state  (yyscan_t yyscanner)
02496 {
02497     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02498         yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
02499         yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
02500         yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
02501         yyg->yy_hold_char = *yyg->yy_c_buf_p;
02502 }
02503 
02510     YY_BUFFER_STATE osss_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
02511 {
02512         YY_BUFFER_STATE b;
02513     
02514         b = (YY_BUFFER_STATE) osssalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02515         if ( ! b )
02516                 YY_FATAL_ERROR( "out of dynamic memory in osss_create_buffer()" );
02517 
02518         b->yy_buf_size = size;
02519 
02520         /* yy_ch_buf has to be 2 characters longer than the size given because
02521          * we need to put in 2 end-of-buffer characters.
02522          */
02523         b->yy_ch_buf = (char *) osssalloc(b->yy_buf_size + 2 ,yyscanner );
02524         if ( ! b->yy_ch_buf )
02525                 YY_FATAL_ERROR( "out of dynamic memory in osss_create_buffer()" );
02526 
02527         b->yy_is_our_buffer = 1;
02528 
02529         osss_init_buffer(b,file ,yyscanner);
02530 
02531         return b;
02532 }
02533 
02538     void osss_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02539 {
02540     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02541 
02542         if ( ! b )
02543                 return;
02544 
02545         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
02546                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
02547 
02548         if ( b->yy_is_our_buffer )
02549                 osssfree((void *) b->yy_ch_buf ,yyscanner );
02550 
02551         osssfree((void *) b ,yyscanner );
02552 }
02553 
02554 #ifndef __cplusplus
02555 extern int isatty (int );
02556 #endif /* __cplusplus */
02557     
02558 /* Initializes or reinitializes a buffer.
02559  * This function is sometimes called more than once on the same buffer,
02560  * such as during a osssrestart() or at EOF.
02561  */
02562     static void osss_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
02563 
02564 {
02565         int oerrno = errno;
02566     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02567 
02568         osss_flush_buffer(b ,yyscanner);
02569 
02570         b->yy_input_file = file;
02571         b->yy_fill_buffer = 1;
02572 
02573     /* If b is the current buffer, then osss_init_buffer was _probably_
02574      * called from osssrestart() or through yy_get_next_buffer.
02575      * In that case, we don't want to reset the lineno or column.
02576      */
02577     if (b != YY_CURRENT_BUFFER){
02578         b->yy_bs_lineno = 1;
02579         b->yy_bs_column = 0;
02580     }
02581 
02582         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
02583     
02584         errno = oerrno;
02585 }
02586 
02591     void osss_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
02592 {
02593     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02594         if ( ! b )
02595                 return;
02596 
02597         b->yy_n_chars = 0;
02598 
02599         /* We always need two end-of-buffer characters.  The first causes
02600          * a transition to the end-of-buffer state.  The second causes
02601          * a jam in that state.
02602          */
02603         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
02604         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
02605 
02606         b->yy_buf_pos = &b->yy_ch_buf[0];
02607 
02608         b->yy_at_bol = 1;
02609         b->yy_buffer_status = YY_BUFFER_NEW;
02610 
02611         if ( b == YY_CURRENT_BUFFER )
02612                 osss_load_buffer_state(yyscanner );
02613 }
02614 
02621 void ossspush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
02622 {
02623     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02624         if (new_buffer == NULL)
02625                 return;
02626 
02627         osssensure_buffer_stack(yyscanner);
02628 
02629         /* This block is copied from osss_switch_to_buffer. */
02630         if ( YY_CURRENT_BUFFER )
02631                 {
02632                 /* Flush out information for old buffer. */
02633                 *yyg->yy_c_buf_p = yyg->yy_hold_char;
02634                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
02635                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
02636                 }
02637 
02638         /* Only push if top exists. Otherwise, replace top. */
02639         if (YY_CURRENT_BUFFER)
02640                 yyg->yy_buffer_stack_top++;
02641         YY_CURRENT_BUFFER_LVALUE = new_buffer;
02642 
02643         /* copied from osss_switch_to_buffer. */
02644         osss_load_buffer_state(yyscanner );
02645         yyg->yy_did_buffer_switch_on_eof = 1;
02646 }
02647 
02652 void ossspop_buffer_state (yyscan_t yyscanner)
02653 {
02654     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02655         if (!YY_CURRENT_BUFFER)
02656                 return;
02657 
02658         osss_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
02659         YY_CURRENT_BUFFER_LVALUE = NULL;
02660         if (yyg->yy_buffer_stack_top > 0)
02661                 --yyg->yy_buffer_stack_top;
02662 
02663         if (YY_CURRENT_BUFFER) {
02664                 osss_load_buffer_state(yyscanner );
02665                 yyg->yy_did_buffer_switch_on_eof = 1;
02666         }
02667 }
02668 
02669 /* Allocates the stack if it does not exist.
02670  *  Guarantees space for at least one push.
02671  */
02672 static void osssensure_buffer_stack (yyscan_t yyscanner)
02673 {
02674         int num_to_alloc;
02675     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02676 
02677         if (!yyg->yy_buffer_stack) {
02678 
02679                 /* First allocation is just for 2 elements, since we don't know if this
02680                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
02681                  * immediate realloc on the next call.
02682          */
02683                 num_to_alloc = 1;
02684                 yyg->yy_buffer_stack = (struct yy_buffer_state**)osssalloc
02685                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
02686                                                                 , yyscanner);
02687                 if ( ! yyg->yy_buffer_stack )
02688                         YY_FATAL_ERROR( "out of dynamic memory in osssensure_buffer_stack()" );
02689                                                                   
02690                 memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
02691                                 
02692                 yyg->yy_buffer_stack_max = num_to_alloc;
02693                 yyg->yy_buffer_stack_top = 0;
02694                 return;
02695         }
02696 
02697         if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
02698 
02699                 /* Increase the buffer to prepare for a possible push. */
02700                 int grow_size = 8 /* arbitrary grow size */;
02701 
02702                 num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
02703                 yyg->yy_buffer_stack = (struct yy_buffer_state**)osssrealloc
02704                                                                 (yyg->yy_buffer_stack,
02705                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
02706                                                                 , yyscanner);
02707                 if ( ! yyg->yy_buffer_stack )
02708                         YY_FATAL_ERROR( "out of dynamic memory in osssensure_buffer_stack()" );
02709 
02710                 /* zero only the new slots.*/
02711                 memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
02712                 yyg->yy_buffer_stack_max = num_to_alloc;
02713         }
02714 }
02715 
02722 YY_BUFFER_STATE osss_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
02723 {
02724         YY_BUFFER_STATE b;
02725     
02726         if ( size < 2 ||
02727              base[size-2] != YY_END_OF_BUFFER_CHAR ||
02728              base[size-1] != YY_END_OF_BUFFER_CHAR )
02729                 /* They forgot to leave room for the EOB's. */
02730                 return 0;
02731 
02732         b = (YY_BUFFER_STATE) osssalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
02733         if ( ! b )
02734                 YY_FATAL_ERROR( "out of dynamic memory in osss_scan_buffer()" );
02735 
02736         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
02737         b->yy_buf_pos = b->yy_ch_buf = base;
02738         b->yy_is_our_buffer = 0;
02739         b->yy_input_file = 0;
02740         b->yy_n_chars = b->yy_buf_size;
02741         b->yy_is_interactive = 0;
02742         b->yy_at_bol = 1;
02743         b->yy_fill_buffer = 0;
02744         b->yy_buffer_status = YY_BUFFER_NEW;
02745 
02746         osss_switch_to_buffer(b ,yyscanner );
02747 
02748         return b;
02749 }
02750 
02759 YY_BUFFER_STATE osss_scan_string (yyconst char * yystr , yyscan_t yyscanner)
02760 {
02761     
02762         return osss_scan_bytes(yystr,strlen(yystr) ,yyscanner);
02763 }
02764 
02772 YY_BUFFER_STATE osss_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
02773 {
02774         YY_BUFFER_STATE b;
02775         char *buf;
02776         yy_size_t n;
02777         int i;
02778     
02779         /* Get memory for full buffer, including space for trailing EOB's. */
02780         n = _yybytes_len + 2;
02781         buf = (char *) osssalloc(n ,yyscanner );
02782         if ( ! buf )
02783                 YY_FATAL_ERROR( "out of dynamic memory in osss_scan_bytes()" );
02784 
02785         for ( i = 0; i < _yybytes_len; ++i )
02786                 buf[i] = yybytes[i];
02787 
02788         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
02789 
02790         b = osss_scan_buffer(buf,n ,yyscanner);
02791         if ( ! b )
02792                 YY_FATAL_ERROR( "bad buffer in osss_scan_bytes()" );
02793 
02794         /* It's okay to grow etc. this buffer, and we should throw it
02795          * away when we're done.
02796          */
02797         b->yy_is_our_buffer = 1;
02798 
02799         return b;
02800 }
02801 
02802 #ifndef YY_EXIT_FAILURE
02803 #define YY_EXIT_FAILURE 2
02804 #endif
02805 
02806 static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
02807 {
02808         (void) fprintf( stderr, "%s\n", msg );
02809         exit( YY_EXIT_FAILURE );
02810 }
02811 
02812 /* Redefine yyless() so it works in section 3 code. */
02813 
02814 #undef yyless
02815 #define yyless(n) \
02816         do \
02817                 { \
02818                 /* Undo effects of setting up yytext. */ \
02819         int yyless_macro_arg = (n); \
02820         YY_LESS_LINENO(yyless_macro_arg);\
02821                 yytext[yyleng] = yyg->yy_hold_char; \
02822                 yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
02823                 yyg->yy_hold_char = *yyg->yy_c_buf_p; \
02824                 *yyg->yy_c_buf_p = '\0'; \
02825                 yyleng = yyless_macro_arg; \
02826                 } \
02827         while ( 0 )
02828 
02829 /* Accessor  methods (get/set functions) to struct members. */
02830 
02834 YY_EXTRA_TYPE osssget_extra  (yyscan_t yyscanner)
02835 {
02836     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02837     return yyextra;
02838 }
02839 
02843 int osssget_lineno  (yyscan_t yyscanner)
02844 {
02845     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02846     
02847         if (! YY_CURRENT_BUFFER)
02848             return 0;
02849     
02850     return yylineno;
02851 }
02852 
02856 int osssget_column  (yyscan_t yyscanner)
02857 {
02858     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02859     
02860         if (! YY_CURRENT_BUFFER)
02861             return 0;
02862     
02863     return yycolumn;
02864 }
02865 
02869 FILE *osssget_in  (yyscan_t yyscanner)
02870 {
02871     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02872     return yyin;
02873 }
02874 
02878 FILE *osssget_out  (yyscan_t yyscanner)
02879 {
02880     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02881     return yyout;
02882 }
02883 
02887 int osssget_leng  (yyscan_t yyscanner)
02888 {
02889     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02890     return yyleng;
02891 }
02892 
02897 char *osssget_text  (yyscan_t yyscanner)
02898 {
02899     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02900     return yytext;
02901 }
02902 
02907 void osssset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
02908 {
02909     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02910     yyextra = user_defined ;
02911 }
02912 
02917 void osssset_lineno (int  line_number , yyscan_t yyscanner)
02918 {
02919     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02920 
02921         /* lineno is only valid if an input buffer exists. */
02922         if (! YY_CURRENT_BUFFER )
02923            yy_fatal_error( "osssset_lineno called with no buffer" , yyscanner); 
02924     
02925     yylineno = line_number;
02926 }
02927 
02932 void osssset_column (int  column_no , yyscan_t yyscanner)
02933 {
02934     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02935 
02936         /* column is only valid if an input buffer exists. */
02937         if (! YY_CURRENT_BUFFER )
02938            yy_fatal_error( "osssset_column called with no buffer" , yyscanner); 
02939     
02940     yycolumn = column_no;
02941 }
02942 
02949 void osssset_in (FILE *  in_str , yyscan_t yyscanner)
02950 {
02951     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02952     yyin = in_str ;
02953 }
02954 
02955 void osssset_out (FILE *  out_str , yyscan_t yyscanner)
02956 {
02957     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02958     yyout = out_str ;
02959 }
02960 
02961 int osssget_debug  (yyscan_t yyscanner)
02962 {
02963     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02964     return yy_flex_debug;
02965 }
02966 
02967 void osssset_debug (int  bdebug , yyscan_t yyscanner)
02968 {
02969     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
02970     yy_flex_debug = bdebug ;
02971 }
02972 
02973 /* Accessor methods for yylval and yylloc */
02974 
02975 /* User-visible API */
02976 
02977 /* ossslex_init is special because it creates the scanner itself, so it is
02978  * the ONLY reentrant function that doesn't take the scanner as the last argument.
02979  * That's why we explicitly handle the declaration, instead of using our macros.
02980  */
02981 
02982 int ossslex_init(yyscan_t* ptr_yy_globals)
02983 
02984 {
02985     if (ptr_yy_globals == NULL){
02986         errno = EINVAL;
02987         return 1;
02988     }
02989 
02990     *ptr_yy_globals = (yyscan_t) osssalloc ( sizeof( struct yyguts_t ), NULL );
02991 
02992     if (*ptr_yy_globals == NULL){
02993         errno = ENOMEM;
02994         return 1;
02995     }
02996 
02997     /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
02998     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
02999 
03000     return yy_init_globals ( *ptr_yy_globals );
03001 }
03002 
03003 /* ossslex_init_extra has the same functionality as ossslex_init, but follows the
03004  * convention of taking the scanner as the last argument. Note however, that
03005  * this is a *pointer* to a scanner, as it will be allocated by this call (and
03006  * is the reason, too, why this function also must handle its own declaration).
03007  * The user defined value in the first argument will be available to osssalloc in
03008  * the yyextra field.
03009  */
03010 
03011 int ossslex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
03012 
03013 {
03014     struct yyguts_t dummy_yyguts;
03015 
03016     osssset_extra (yy_user_defined, &dummy_yyguts);
03017 
03018     if (ptr_yy_globals == NULL){
03019         errno = EINVAL;
03020         return 1;
03021     }
03022         
03023     *ptr_yy_globals = (yyscan_t) osssalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
03024         
03025     if (*ptr_yy_globals == NULL){
03026         errno = ENOMEM;
03027         return 1;
03028     }
03029     
03030     /* By setting to 0xAA, we expose bugs in
03031     yy_init_globals. Leave at 0x00 for releases. */
03032     memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
03033     
03034     osssset_extra (yy_user_defined, *ptr_yy_globals);
03035     
03036     return yy_init_globals ( *ptr_yy_globals );
03037 }
03038 
03039 static int yy_init_globals (yyscan_t yyscanner)
03040 {
03041     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03042     /* Initialization is the same as for the non-reentrant scanner.
03043      * This function is called from ossslex_destroy(), so don't allocate here.
03044      */
03045 
03046     yyg->yy_buffer_stack = 0;
03047     yyg->yy_buffer_stack_top = 0;
03048     yyg->yy_buffer_stack_max = 0;
03049     yyg->yy_c_buf_p = (char *) 0;
03050     yyg->yy_init = 0;
03051     yyg->yy_start = 0;
03052 
03053     yyg->yy_start_stack_ptr = 0;
03054     yyg->yy_start_stack_depth = 0;
03055     yyg->yy_start_stack =  NULL;
03056 
03057 /* Defined in main.c */
03058 #ifdef YY_STDINIT
03059     yyin = stdin;
03060     yyout = stdout;
03061 #else
03062     yyin = (FILE *) 0;
03063     yyout = (FILE *) 0;
03064 #endif
03065 
03066     /* For future reference: Set errno on error, since we are called by
03067      * ossslex_init()
03068      */
03069     return 0;
03070 }
03071 
03072 /* ossslex_destroy is for both reentrant and non-reentrant scanners. */
03073 int ossslex_destroy  (yyscan_t yyscanner)
03074 {
03075     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
03076 
03077     /* Pop the buffer stack, destroying each element. */
03078         while(YY_CURRENT_BUFFER){
03079                 osss_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
03080                 YY_CURRENT_BUFFER_LVALUE = NULL;
03081                 ossspop_buffer_state(yyscanner);
03082         }
03083 
03084         /* Destroy the stack itself. */
03085         osssfree(yyg->yy_buffer_stack ,yyscanner);
03086         yyg->yy_buffer_stack = NULL;
03087 
03088     /* Destroy the start condition stack. */
03089         osssfree(yyg->yy_start_stack ,yyscanner );
03090         yyg->yy_start_stack = NULL;
03091 
03092     /* Reset the globals. This is important in a non-reentrant scanner so the next time
03093      * ossslex() is called, initialization will occur. */
03094     yy_init_globals( yyscanner);
03095 
03096     /* Destroy the main struct (reentrant only). */
03097     osssfree ( yyscanner , yyscanner );
03098     yyscanner = NULL;
03099     return 0;
03100 }
03101 
03102 /*
03103  * Internal utility routines.
03104  */
03105 
03106 #ifndef yytext_ptr
03107 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
03108 {
03109         register int i;
03110         for ( i = 0; i < n; ++i )
03111                 s1[i] = s2[i];
03112 }
03113 #endif
03114 
03115 #ifdef YY_NEED_STRLEN
03116 static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
03117 {
03118         register int n;
03119         for ( n = 0; s[n]; ++n )
03120                 ;
03121 
03122         return n;
03123 }
03124 #endif
03125 
03126 void *osssalloc (yy_size_t  size , yyscan_t yyscanner)
03127 {
03128         return (void *) malloc( size );
03129 }
03130 
03131 void *osssrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
03132 {
03133         /* The cast to (char *) in the following accommodates both
03134          * implementations that use char* generic pointers, and those
03135          * that use void* generic pointers.  It works with the latter
03136          * because both ANSI C and C++ allow castless assignment from
03137          * any pointer type to void*, and deal with argument conversions
03138          * as though doing an assignment.
03139          */
03140         return (void *) realloc( (char *) ptr, size );
03141 }
03142 
03143 void osssfree (void * ptr , yyscan_t yyscanner)
03144 {
03145         free( (char *) ptr );   /* see osssrealloc() for (char *) cast */
03146 }
03147 
03148 #define YYTABLES_NAME "yytables"
03149 
03150 #line 800 "/Users/kmartin/coin/os-trunk/OS/src/OSParsers/OSParseosss.l"
03151 
03152 
03153 
03154 void setyyextra(osOptionsStruc *osoptions, void* scanner){
03155         osssset_extra(osoptions, scanner);
03156 }
03157 
03158 
03159 

Generated on Wed Nov 30 03:04:23 2011 by  doxygen 1.4.7