dcop Library API Documentation

scanner.cc

00001 #line 2 "scanner.cc"
00002 /* A lexical scanner generated by flex */
00003 
00004 /* Scanner skeleton version:
00005  * $Header: /home/kde/kdelibs/dcop/dcopidl/scanner.cc,v 1.55 2002/07/26 14:24:57 future Exp $
00006  */
00007 
00008 #define FLEX_SCANNER
00009 #define YY_FLEX_MAJOR_VERSION 2
00010 #define YY_FLEX_MINOR_VERSION 5
00011 
00012 #include <stdio.h>
00013 #include <errno.h>
00014 
00015 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
00016 #ifdef c_plusplus
00017 #ifndef __cplusplus
00018 #define __cplusplus
00019 #endif
00020 #endif
00021 
00022 
00023 #ifdef __cplusplus
00024 
00025 #include <stdlib.h>
00026 #ifndef _WIN32
00027 #include <unistd.h>
00028 #else
00029 #ifndef YY_ALWAYS_INTERACTIVE
00030 #ifndef YY_NEVER_INTERACTIVE
00031 extern int isatty YY_PROTO(( int ));
00032 #endif
00033 #endif
00034 #endif
00035 
00036 /* Use prototypes in function declarations. */
00037 #define YY_USE_PROTOS
00038 
00039 /* The "const" storage-class-modifier is valid. */
00040 #define YY_USE_CONST
00041 
00042 #else   /* ! __cplusplus */
00043 
00044 #if __STDC__
00045 
00046 #define YY_USE_PROTOS
00047 #define YY_USE_CONST
00048 
00049 #endif  /* __STDC__ */
00050 #endif  /* ! __cplusplus */
00051 
00052 #ifdef __TURBOC__
00053  #pragma warn -rch
00054  #pragma warn -use
00055 #include <io.h>
00056 #include <stdlib.h>
00057 #define YY_USE_CONST
00058 #define YY_USE_PROTOS
00059 #endif
00060 
00061 #ifdef YY_USE_CONST
00062 #define yyconst const
00063 #else
00064 #define yyconst
00065 #endif
00066 
00067 
00068 #ifdef YY_USE_PROTOS
00069 #define YY_PROTO(proto) proto
00070 #else
00071 #define YY_PROTO(proto) ()
00072 #endif
00073 
00074 /* Returned upon end-of-file. */
00075 #define YY_NULL 0
00076 
00077 /* Promotes a possibly negative, possibly signed char to an unsigned
00078  * integer for use as an array index.  If the signed char is negative,
00079  * we want to instead treat it as an 8-bit unsigned char, hence the
00080  * double cast.
00081  */
00082 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00083 
00084 /* Enter a start condition.  This macro really ought to take a parameter,
00085  * but we do it the disgusting crufty way forced on us by the ()-less
00086  * definition of BEGIN.
00087  */
00088 #define BEGIN yy_start = 1 + 2 *
00089 
00090 /* Translate the current start state into a value that can be later handed
00091  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00092  * compatibility.
00093  */
00094 #define YY_START ((yy_start - 1) / 2)
00095 #define YYSTATE YY_START
00096 
00097 /* Action number for EOF rule of a given start state. */
00098 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00099 
00100 /* Special action meaning "start processing a new file". */
00101 #define YY_NEW_FILE yyrestart( yyin )
00102 
00103 #define YY_END_OF_BUFFER_CHAR 0
00104 
00105 /* Size of default input buffer. */
00106 #define YY_BUF_SIZE 16384
00107 
00108 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00109 
00110 extern int yyleng;
00111 extern FILE *yyin, *yyout;
00112 
00113 #define EOB_ACT_CONTINUE_SCAN 0
00114 #define EOB_ACT_END_OF_FILE 1
00115 #define EOB_ACT_LAST_MATCH 2
00116 
00117 /* The funky do-while in the following #define is used to turn the definition
00118  * int a single C statement (which needs a semi-colon terminator).  This
00119  * avoids problems with code like:
00120  *
00121  *  if ( condition_holds )
00122  *      yyless( 5 );
00123  *  else
00124  *      do_something_else();
00125  *
00126  * Prior to using the do-while the compiler would get upset at the
00127  * "else" because it interpreted the "if" statement as being all
00128  * done when it reached the ';' after the yyless() call.
00129  */
00130 
00131 /* Return all but the first 'n' matched characters back to the input stream. */
00132 
00133 #define yyless(n) \
00134     do \
00135         { \
00136         /* Undo effects of setting up yytext. */ \
00137         *yy_cp = yy_hold_char; \
00138         YY_RESTORE_YY_MORE_OFFSET \
00139         yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
00140         YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00141         } \
00142     while ( 0 )
00143 
00144 #define unput(c) yyunput( c, yytext_ptr )
00145 
00146 /* The following is because we cannot portably get our hands on size_t
00147  * (without autoconf's help, which isn't available because we want
00148  * flex-generated scanners to compile on their own).
00149  */
00150 typedef unsigned int yy_size_t;
00151 
00152 
00153 struct yy_buffer_state
00154     {
00155     FILE *yy_input_file;
00156 
00157     char *yy_ch_buf;        /* input buffer */
00158     char *yy_buf_pos;       /* current position in input buffer */
00159 
00160     /* Size of input buffer in bytes, not including room for EOB
00161      * characters.
00162      */
00163     yy_size_t yy_buf_size;
00164 
00165     /* Number of characters read into yy_ch_buf, not including EOB
00166      * characters.
00167      */
00168     int yy_n_chars;
00169 
00170     /* Whether we "own" the buffer - i.e., we know we created it,
00171      * and can realloc() it to grow it, and should free() it to
00172      * delete it.
00173      */
00174     int yy_is_our_buffer;
00175 
00176     /* Whether this is an "interactive" input source; if so, and
00177      * if we're using stdio for input, then we want to use getc()
00178      * instead of fread(), to make sure we stop fetching input after
00179      * each newline.
00180      */
00181     int yy_is_interactive;
00182 
00183     /* Whether we're considered to be at the beginning of a line.
00184      * If so, '^' rules will be active on the next match, otherwise
00185      * not.
00186      */
00187     int yy_at_bol;
00188 
00189     /* Whether to try to fill the input buffer when we reach the
00190      * end of it.
00191      */
00192     int yy_fill_buffer;
00193 
00194     int yy_buffer_status;
00195 #define YY_BUFFER_NEW 0
00196 #define YY_BUFFER_NORMAL 1
00197     /* When an EOF's been seen but there's still some text to process
00198      * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00199      * shouldn't try reading from the input source any more.  We might
00200      * still have a bunch of tokens to match, though, because of
00201      * possible backing-up.
00202      *
00203      * When we actually see the EOF, we change the status to "new"
00204      * (via yyrestart()), so that the user can continue scanning by
00205      * just pointing yyin at a new input file.
00206      */
00207 #define YY_BUFFER_EOF_PENDING 2
00208     };
00209 
00210 static YY_BUFFER_STATE yy_current_buffer = 0;
00211 
00212 /* We provide macros for accessing buffer states in case in the
00213  * future we want to put the buffer states in a more general
00214  * "scanner state".
00215  */
00216 #define YY_CURRENT_BUFFER yy_current_buffer
00217 
00218 
00219 /* yy_hold_char holds the character lost when yytext is formed. */
00220 static char yy_hold_char;
00221 
00222 static int yy_n_chars;      /* number of characters read into yy_ch_buf */
00223 
00224 
00225 int yyleng;
00226 
00227 /* Points to current character in buffer. */
00228 static char *yy_c_buf_p = (char *) 0;
00229 static int yy_init = 1;     /* whether we need to initialize */
00230 static int yy_start = 0;    /* start state number */
00231 
00232 /* Flag which is used to allow yywrap()'s to do buffer switches
00233  * instead of setting up a fresh yyin.  A bit of a hack ...
00234  */
00235 static int yy_did_buffer_switch_on_eof;
00236 
00237 void yyrestart YY_PROTO(( FILE *input_file ));
00238 
00239 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
00240 void yy_load_buffer_state YY_PROTO(( void ));
00241 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
00242 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00243 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
00244 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00245 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
00246 
00247 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
00248 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
00249 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
00250 
00251 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
00252 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
00253 static void yy_flex_free YY_PROTO(( void * ));
00254 
00255 #define yy_new_buffer yy_create_buffer
00256 
00257 #define yy_set_interactive(is_interactive) \
00258     { \
00259     if ( ! yy_current_buffer ) \
00260         yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00261     yy_current_buffer->yy_is_interactive = is_interactive; \
00262     }
00263 
00264 #define yy_set_bol(at_bol) \
00265     { \
00266     if ( ! yy_current_buffer ) \
00267         yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00268     yy_current_buffer->yy_at_bol = at_bol; \
00269     }
00270 
00271 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
00272 
00273 
00274 #define YY_USES_REJECT
00275 
00276 #define yywrap() 1
00277 #define YY_SKIP_YYWRAP
00278 typedef unsigned char YY_CHAR;
00279 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
00280 typedef int yy_state_type;
00281 extern char *yytext;
00282 #define yytext_ptr yytext
00283 
00284 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
00285 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
00286 static int yy_get_next_buffer YY_PROTO(( void ));
00287 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
00288 
00289 /* Done after the current pattern has been matched and before the
00290  * corresponding action - sets up yytext.
00291  */
00292 #define YY_DO_BEFORE_ACTION \
00293     yytext_ptr = yy_bp; \
00294     yyleng = (int) (yy_cp - yy_bp); \
00295     yy_hold_char = *yy_cp; \
00296     *yy_cp = '\0'; \
00297     yy_c_buf_p = yy_cp;
00298 
00299 #define YY_NUM_RULES 83
00300 #define YY_END_OF_BUFFER 84
00301 static yyconst short int yy_acclist[655] =
00302     {   0,
00303         6,    6,   84,    6,   82,   83,    1,    6,   82,   83,
00304         2,   83,    6,   82,   83,    6,   82,   83,    6,   82,
00305        83,    6,   23,   82,   83,    6,   82,   83,    6,   14,
00306        82,   83,    6,   15,   82,   83,    7,   21,   82,   83,
00307         6,   17,   82,   83,    6,   20,   82,   83,    6,   18,
00308        82,   83,    6,   28,   82,   83,    6,   82,   83,    6,
00309        68,   78,   82,   83,    6,   77,   82,   83,    6,   16,
00310        82,   83,    6,   22,   82,   83,    6,   24,   82,   83,
00311         6,   27,   82,   83,    6,   25,   82,   83,    6,   71,
00312        82,   83,    6,   71,   82,   83,    6,   71,   82,   83,
00313 
00314         6,   71,   82,   83,    6,   71,   82,   83,    6,   30,
00315        82,   83,    6,   31,   82,   83,    6,   71,   82,   83,
00316         6,   71,   82,   83,    6,   71,   82,   83,    6,   71,
00317        82,   83,    6,   71,   82,   83,    6,   71,   82,   83,
00318         6,   71,   82,   83,    6,   71,   82,   83,    6,   71,
00319        82,   83,    6,   71,   82,   83,    6,   71,   82,   83,
00320         6,   71,   82,   83,    6,   71,   82,   83,    6,   71,
00321        82,   83,    6,   71,   82,   83,    6,   12,   82,   83,
00322         5,   13,   82,   83,    6,   19,   82,   83,    6,    6,
00323        34,    6,    6,   81,    6,    6,   11,    6,    9,    6,
00324 
00325         6,    6,    4,    6,   32,    6,    6,   75,    3,    6,
00326         8,    6,    6,   78,    6,    6,    6,   68,    6,   79,
00327         6,   77,    6,   77,    6,   26,    6,   33,    6,   71,
00328         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00329         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00330         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00331         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00332         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00333         6,   71,    6,   71,    6,   71,    6,   71,   81,    6,
00334         6,    6,    9,    9,    6,    6,   80,   80,    6,   80,
00335 
00336         6,    6,    6,   29,    6,    6,    8,    8,    6,   74,
00337         6,    6,   73,    6,   79,    6,   71,    6,   71,    6,
00338        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00339        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00340        58,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00341         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00342         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00343         6,   71,    6,   71,    6,   71,    6,   71,    6,   71,
00344         6,    6,    6,    6,    6,    6,    6,   76,    6,    6,
00345        71,    6,   71,    6,   71,    6,   61,   71,    6,   59,
00346 
00347        71,    6,   71,    6,   71,    6,   36,   71,    6,   71,
00348         6,   71,    6,   71,    6,   71,    6,   71,    6,   50,
00349        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00350        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00351        71,    6,   71,    6,   71,    6,   57,   71,    6,   71,
00352         6,   71,    6,   71,    6,   71,    6,    6,    6,    6,
00353         6,    6,   72,    6,   62,   71,    6,   71,    6,   71,
00354         6,   39,   71,    6,   35,   71,    6,   71,    6,   60,
00355        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00356        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00357 
00358        71,    6,   49,   71,    6,   71,    6,   71,    6,   56,
00359        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00360        38,   71,    6,   71,    6,    6,   66,   71,    6,   71,
00361         6,   71,    6,   51,   71,    6,   44,   71,    6,   63,
00362        71,    6,   71,    6,   71,    6,   71,    6,   71,    6,
00363        71,    6,   43,   71,    6,   55,   71,    6,   71,    6,
00364        47,   71,    6,   45,   71,    6,   40,   71,    6,   71,
00365         6,   71,    6,   71,    6,    6,   71,    6,    6,   71,
00366         6,   46,   71,    6,   71,    6,   71,    6,   53,   71,
00367         6,   71,    6,   54,   71,    6,   65,   71,    6,   71,
00368 
00369         6,   42,   71,    6,    6,   67,   71,    6,   69,    6,
00370        69,    6,   71,    6,   71,    6,   41,   71,    6,   71,
00371         6,   48,   71,    6,    6,    6,    6,   71,    6,   37,
00372        71,    6,   52,   71,    6,   11,    6,    6,   70,    6,
00373        71,   10,   11,    6,    6,   71,   10,    6,   71,    6,
00374        71,    6,   64,   71
00375     } ;
00376 
00377 static yyconst short int yy_accept[312] =
00378     {   0,
00379         1,    2,    3,    4,    7,   11,   13,   16,   19,   22,
00380        26,   29,   33,   37,   41,   45,   49,   53,   57,   60,
00381        65,   69,   73,   77,   81,   85,   89,   93,   97,  101,
00382       105,  109,  113,  117,  121,  125,  129,  133,  137,  141,
00383       145,  149,  153,  157,  161,  165,  169,  173,  177,  181,
00384       185,  189,  190,  192,  193,  195,  195,  196,  197,  198,
00385       200,  200,  201,  202,  202,  203,  204,  206,  207,  209,
00386       210,  212,  213,  215,  216,  217,  219,  221,  223,  225,
00387       227,  229,  231,  233,  235,  237,  239,  241,  243,  245,
00388       247,  249,  251,  253,  255,  257,  259,  261,  263,  265,
00389 
00390       267,  269,  271,  273,  275,  277,  279,  281,  283,  285,
00391       287,  289,  290,  290,  291,  292,  294,  295,  296,  298,
00392       299,  301,  302,  303,  305,  306,  308,  309,  311,  312,
00393       314,  316,  318,  320,  322,  324,  326,  328,  330,  332,
00394       334,  336,  338,  340,  343,  345,  347,  349,  351,  353,
00395       355,  357,  359,  361,  363,  365,  367,  369,  371,  373,
00396       375,  377,  379,  381,  381,  381,  382,  383,  384,  385,
00397       386,  387,  389,  390,  392,  394,  396,  399,  402,  404,
00398       406,  409,  411,  413,  415,  417,  419,  422,  424,  426,
00399       428,  430,  432,  434,  436,  438,  440,  442,  444,  446,
00400 
00401       449,  451,  453,  455,  457,  457,  457,  458,  459,  460,
00402       461,  462,  464,  467,  469,  471,  474,  477,  479,  482,
00403       484,  486,  488,  490,  492,  494,  496,  498,  500,  502,
00404       505,  507,  509,  512,  514,  516,  518,  520,  523,  525,
00405       525,  525,  526,  529,  531,  533,  536,  539,  542,  544,
00406       546,  548,  550,  552,  555,  558,  560,  563,  566,  569,
00407       571,  573,  575,  576,  578,  579,  581,  584,  586,  588,
00408       591,  593,  596,  599,  601,  604,  605,  608,  610,  611,
00409       612,  614,  616,  619,  621,  624,  625,  626,  627,  629,
00410       632,  635,  636,  637,  638,  638,  640,  642,  642,  642,
00411 
00412       644,  645,  645,  647,  648,  648,  648,  650,  652,  655,
00413       655
00414     } ;
00415 
00416 static yyconst int yy_ec[256] =
00417     {   0,
00418         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00419         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00420         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00421         1,    4,    5,    6,    7,    1,    1,    8,    9,   10,
00422        11,   12,   13,   14,   15,   16,   17,   18,   19,   19,
00423        19,   19,   19,   19,   19,   20,   20,   21,   22,   23,
00424        24,   25,   26,    1,   27,   28,   29,   30,   31,   32,
00425        33,   33,   33,   34,   35,   36,   33,   33,   37,   38,
00426        39,   40,   41,   42,   43,   33,   33,   44,   33,   33,
00427        45,   46,   47,    1,   48,    1,   49,   50,   51,   52,
00428 
00429        53,   54,   55,   56,   57,   33,   58,   59,   60,   61,
00430        62,   63,   33,   64,   65,   66,   67,   68,   33,   69,
00431        70,   33,   71,    1,   72,   73,    1,    1,    1,    1,
00432         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00433         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00434         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00435         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00436         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00437         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00438         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00439 
00440         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00441         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00442         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00443         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00444         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00445         1,    1,    1,    1,    1
00446     } ;
00447 
00448 static yyconst int yy_meta[74] =
00449     {   0,
00450         1,    2,    3,    4,    1,    5,    1,    1,    5,    1,
00451         1,    6,    1,    1,    1,    1,    1,    7,    7,    8,
00452         1,    1,    1,    1,    1,    5,    8,    8,    8,    8,
00453         8,    8,    4,    4,    4,    4,    4,    4,    4,    4,
00454         4,    4,    4,    9,    1,    5,    1,    4,    7,    7,
00455         8,    8,    8,    7,    4,    4,    4,    4,    4,    4,
00456         9,    4,    4,    9,    4,    9,    4,    9,    9,    4,
00457         1,   10,    1
00458     } ;
00459 
00460 static yyconst short int yy_base[329] =
00461     {   0,
00462         0,    0,  904,    0,    0, 1106,  879,   72,   74,    0,
00463        73,    0,    0,  885,    0,    0,  876,   71,   64,   79,
00464        85,  879,    0,   69,  874,   82,  148,  221,   61,   69,
00465        73,    0,    0,   81,   53,   75,   67,   85,   98,   84,
00466        93,  103,  114,  148,  120,  140,  141,  155,    0, 1106,
00467         0,    0,    0,  178,    0,  193,  289,  124, 1106,  180,
00468       887,  188,  880,  879,  353, 1106,    0,  858,  238, 1106,
00469       117,  189,  243,  257,  198,    0,  405,  266,    0,    0,
00470         0,  846,   99,  158,  160,  171,  206,  238,  193,  213,
00471       224,  244,  226,  245,  237,  251,  243,  254,  188,  266,
00472 
00473       272,  252,  274,  279,  278,  297,  289,  286,  298,  273,
00474       290, 1106,  308,  372,  442,  317,  869,  329,    0, 1106,
00475       860,  351,  479,    0,  368,  332,    0,  374,  346,  390,
00476         0,  304,  176,  320,  369,  348,  341,  346,  355,  386,
00477       399,  389,  294,  840,  401,  340,  349,  393,  402,  411,
00478       414,  404,  416,  403,  420,  418,  421,  422,  423,  424,
00479       448,  441,  438,  494,    0,  532,  603,  511,  506,  667,
00480       498,  501,  528,  451,  499,  508,  839,  838,  474,  461,
00481       837,  426,  510,  495,  518,  522,  836,  525,  526,  527,
00482       528,  532,  530,  531,  533,  537,  535,  539,  538,  835,
00483 
00484       540,  542,  546,  541,  592,  716,  600,  601,  569,  852,
00485       598,  606,  832,  544,  612,  831,  830,  553,  829,  567,
00486       610,  566,  561,  601,  600,  613,  617,  618,  621,  827,
00487       615,  631,  824,  633,  623,  624,  632,  820,  643,  655,
00488       656,  678,  813,  638,  676,  807,  805,  661,  651,  664,
00489       644,  673,  683,  797,  763,  687,  762,  756,  732,  678,
00490       680,  681,  725,  685,  797,  688,  715,  704,  696,  697,
00491       698,  547,  534,  702,  476,  769,  459,  870,  456,    0,
00492       684,  711,  413,  730,  358,  825,  774,  336,  729,  310,
00493       107,  827,  733,  773,  790,    0,  734,  810,  760, 1106,
00494 
00495       788,  771,  752, 1106,  784,  785,  767,  790,   56, 1106,
00496       943,  952,  962,  972,  982,  991, 1001, 1011, 1021, 1027,
00497      1036, 1046, 1050, 1058, 1066, 1075, 1085, 1095
00498     } ;
00499 
00500 static yyconst short int yy_def[329] =
00501     {   0,
00502       310,    1,  310,  311,  311,  310,  311,  312,  313,  311,
00503       314,  311,  311,  310,  311,  311,  311,  311,  311,  311,
00504       311,  311,  311,  311,  311,  311,  315,  315,   28,   28,
00505        28,  311,  311,   28,   28,   28,   28,   28,   28,   28,
00506        28,   28,   28,   28,   28,   28,   28,   28,  311,  310,
00507       311,  311,  311,  312,  311,  316,  311,  313,  310,  317,
00508       318,  313,  311,  310,  311,  310,  311,  311,  311,  310,
00509       319,  311,  311,  311,  311,  311,  311,  311,  311,  311,
00510       311,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00511        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00512 
00513        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00514        28,  310,  320,  312,  311,  317,  321,  313,  311,  310,
00515       311,  311,  311,  311,  311,  319,  322,  311,  311,  311,
00516        77,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00517        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00518        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00519        28,   28,   28,  316,  323,  312,  312,  313,  311,  311,
00520       311,  311,  311,   28,   28,   28,   28,   28,   28,   28,
00521        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00522        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00523 
00524        28,   28,   28,   28,  316,  316,  312,  312,  313,  311,
00525       311,  311,   28,   28,   28,   28,   28,   28,   28,   28,
00526        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00527        28,   28,   28,   28,   28,   28,   28,   28,   28,  316,
00528       316,  313,   28,   28,   28,   28,   28,   28,   28,   28,
00529        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
00530        28,   28,  313,   28,  324,   28,   28,   28,   28,   28,
00531        28,   28,   28,   28,   28,  313,   28,  324,  311,  325,
00532        28,   28,   28,   28,   28,  313,  326,  311,   28,   28,
00533        28,  326,  327,  313,  328,  311,   28,  327,  310,  310,
00534 
00535       313,  318,   28,  310,  310,  318,   28,   28,   28,    0,
00536       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00537       310,  310,  310,  310,  310,  310,  310,  310
00538     } ;
00539 
00540 static yyconst short int yy_nxt[1180] =
00541     {   0,
00542         4,    5,    6,    5,    7,    8,    9,   10,   11,   12,
00543        13,   14,   15,   16,   17,   18,   19,   20,   21,   21,
00544        22,   23,   24,   25,   26,    4,   27,   27,   27,   27,
00545        27,   28,   27,   27,   29,   27,   27,   27,   30,   27,
00546        27,   31,   27,   27,   32,    4,   33,   27,   27,   27,
00547        34,   27,   35,   36,   27,   27,   37,   38,   39,   40,
00548        41,   42,   43,   44,   45,   46,   47,   48,   27,   27,
00549        49,   50,   51,   52,   52,   70,   59,   55,   60,   82,
00550        71,   52,   82,   56,   64,   61,   68,   82,   69,   69,
00551        69,   81,   53,   82,   72,   82,   73,   73,   74,   82,
00552 
00553        72,   82,   78,   78,   78,   53,   81,   82,   84,   75,
00554        82,   82,   86,   90,   76,   75,   85,   57,   65,   82,
00555        79,   91,   77,   92,   82,   82,   59,   94,  127,   82,
00556        62,   75,   95,   82,  132,   61,   87,   75,   93,   88,
00557        82,   98,   89,   56,   64,   61,   82,   77,   52,   52,
00558        97,   52,   52,   52,   52,   52,   52,   52,   52,   96,
00559        52,   52,   52,   52,   52,   99,   82,   82,   52,   52,
00560        52,   52,   52,   52,   82,  103,  104,  100,  105,   52,
00561       101,   82,   59,   55,   82,  106,   82,  133,  127,   56,
00562        59,  117,   52,   52,   52,   61,  134,   82,  112,   61,
00563 
00564       102,  109,   82,  107,  175,  110,  128,  128,  128,  108,
00565       129,  111,  129,  135,   82,  130,  130,  130,   52,   82,
00566        52,   52,   52,   57,   52,   52,   52,   52,   52,   52,
00567        52,   52,   82,   52,   52,   52,   52,   52,  113,   82,
00568       149,   52,   52,   52,   52,   52,   52,   83,  118,   56,
00569        82,  117,   82,  138,  136,   69,   69,   69,   72,   61,
00570        73,   73,   74,   82,   82,   52,   52,   52,  125,   82,
00571        82,   82,   72,   75,   74,   74,   74,   82,   82,  139,
00572        82,   72,  142,   78,   78,   78,  137,   75,  145,  140,
00573       125,   52,   82,   52,   54,   75,   75,   54,   82,   82,
00574 
00575        82,   79,  141,  143,   82,   82,  114,  114,  147,   75,
00576       144,  146,   82,  148,   54,   82,   82,  153,   75,   59,
00577        82,  152,  150,   82,   82,  164,  164,  151,  117,  162,
00578        82,   59,  115,  155,   54,  154,   82,   54,   54,  156,
00579        61,  296,   54,  127,  174,  157,   82,  176,  160,   54,
00580       185,  165,   54,  163,   54,  159,   54,  115,   63,  119,
00581       158,  121,  161,  130,  130,  130,   82,   82,  169,  169,
00582       122,  122,   82,   52,   82,   82,  165,   55,   63,  168,
00583       171,   82,  171,   56,   82,  172,  172,  172,  117,  166,
00584       166,  128,  128,  128,  187,   82,  123,  188,   63,  177,
00585 
00586        61,   63,   63,  127,  173,  179,   63,  130,  130,  130,
00587       180,  178,   82,   63,  181,   82,   63,   57,   63,   82,
00588        63,  123,  131,  131,  131,   82,  173,   82,   82,   82,
00589        82,  131,  131,  131,  131,  131,  131,   82,  182,   82,
00590        82,  184,   82,   56,   82,  189,   82,   82,   82,   82,
00591        82,  186,   82,  131,  131,  131,  131,  131,  131,  167,
00592       167,  167,  193,  183,   82,  190,  195,   82,  167,  167,
00593       167,  167,  167,  167,   82,  200,  201,   82,  191,  192,
00594       196,  213,  194,  197,  288,   82,  198,   82,  199,  218,
00595       167,  167,  167,  167,  167,  167,  170,  170,  170,  112,
00596 
00597        82,  203,   82,  204,  202,  170,  170,  170,  170,  170,
00598       170,  205,  205,   59,  119,  172,  172,  172,  172,  172,
00599       172,   82,   61,   63,   63,   82,  217,  170,  170,  170,
00600       170,  170,  170,   52,   82,  214,   82,   55,  216,  113,
00601       211,  215,  211,   56,   82,  212,  212,  212,   82,  207,
00602       207,   82,   82,   82,   82,  220,   82,   82,   82,   82,
00603        82,   82,  219,   82,   82,   82,   82,   82,   82,  209,
00604        82,   59,   82,   82,  223,  225,  226,   57,  221,   82,
00605        61,  243,   61,  222,  227,  231,  228,   82,  235,  232,
00606       224,  236,   82,   82,  229,  234,  237,  112,  230,  233,
00607 
00608       238,   52,   52,   56,   52,   55,   55,  239,   55,  240,
00609       240,   56,   56,  245,   56,  212,  212,  212,  246,  249,
00610       208,  208,  208,  212,  212,  212,   82,   82,  248,  208,
00611       208,  208,  208,  208,  208,  242,   82,  113,   82,   82,
00612        61,   82,  244,   82,   82,   57,   57,   82,   57,   82,
00613        82,  208,  208,  208,  208,  208,  208,   82,   82,   82,
00614       112,  112,  247,  250,   82,  251,  264,  253,  254,   82,
00615        82,   56,   56,  256,   56,  119,  260,   82,  252,  265,
00616        59,  255,  257,  258,  210,  210,  210,   82,  259,   61,
00617        82,  262,  261,  210,  210,  210,  210,  210,  210,   82,
00618 
00619       113,  113,   82,  267,   82,  269,   82,   82,  266,   82,
00620        82,   82,  268,   82,   82,  210,  210,  210,  210,  210,
00621       210,  112,   82,   82,   82,  270,  277,   59,   82,  263,
00622        82,  273,  274,  241,  241,  241,   61,   82,  299,  275,
00623       289,   82,  241,  241,  241,  241,  241,  241,  271,   61,
00624       284,  272,  281,  285,  282,   82,   82,  299,   82,  283,
00625        82,  113,  304,  290,  241,  241,  241,  241,  241,  241,
00626       286,   59,  286,  300,  287,  300,  293,  276,   82,  294,
00627        61,  291,   82,  297,   61,  295,  304,  300,   82,   82,
00628       300,  287,  293,   82,  303,  302,   61,   52,  294,   61,
00629 
00630       307,   52,  279,   52,   52,   52,   52,   52,  280,   52,
00631        52,   52,   52,   52,  302,  299,   82,   52,   52,   52,
00632        52,   52,   52,   82,  305,  308,  286,   59,  286,  293,
00633       287,   82,  294,   82,  299,  306,   61,  301,  295,   82,
00634        61,   52,   52,   52,   61,  295,   82,  287,  305,  306,
00635        82,  294,  301,   82,  309,   82,   82,   82,   82,   61,
00636       119,   82,   82,   82,   82,   82,   82,   52,  119,   52,
00637        52,   59,   82,  124,   52,   52,   52,   52,   52,   52,
00638        52,  280,   52,   52,   52,   52,   52,  120,  119,   59,
00639        52,   52,   52,   52,   52,   52,   61,   53,  295,   80,
00640 
00641        67,   66,   53,  310,  310,  310,  310,  310,  310,  310,
00642       310,  310,  310,  310,   52,   52,   52,  310,  310,  310,
00643       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00644       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00645        52,  310,   52,   52,   52,  310,   52,   52,  310,   52,
00646        52,   52,   54,   54,  310,   54,   54,   54,   54,   54,
00647        54,   54,   58,   58,   58,   58,   58,   58,   58,   58,
00648        58,   58,   63,   63,  310,   63,   63,   63,   63,   63,
00649        63,   63,   82,   82,  310,   82,   82,  310,   82,   82,
00650        82,   56,  310,  310,   56,   56,   56,   56,   56,   56,
00651 
00652        56,  116,  116,  116,  116,  116,  116,  116,  116,  116,
00653       116,   61,   61,   61,   61,   61,   61,   61,   61,   61,
00654        61,  126,  126,  310,  126,  126,  126,  126,  126,  126,
00655       126,   56,  310,   56,  310,   56,  117,  117,  117,  117,
00656       117,  117,  117,  117,  117,  117,  127,  127,  310,  127,
00657       127,  127,  127,  127,  127,  127,  206,  206,  278,  278,
00658       310,  278,  278,  278,  278,  278,  278,  280,  310,  280,
00659       310,  280,  280,  280,  280,  292,  292,  292,  292,  292,
00660       292,  292,  292,  292,  292,  298,  298,  298,  298,  298,
00661       298,  298,  298,  298,  298,  295,  295,  295,  295,  295,
00662 
00663       295,  295,  295,  295,  295,    3,  310,  310,  310,  310,
00664       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00665       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00666       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00667       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00668       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00669       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00670       310,  310,  310,  310,  310,  310,  310,  310,  310
00671     } ;
00672 
00673 static yyconst short int yy_chk[1180] =
00674     {   0,
00675         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00676         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00677         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00678         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00679         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00680         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00681         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00682         1,    1,    1,    8,   11,   19,    9,    8,    9,   35,
00683        19,   11,  309,    8,   11,    9,   18,   29,   18,   18,
00684        18,   24,   24,   37,   20,   30,   20,   20,   20,   31,
00685 
00686        21,   36,   21,   21,   21,   26,   26,   34,   29,   20,
00687        40,   38,   31,   35,   20,   21,   30,    8,   11,   41,
00688        21,   35,   20,   36,   39,   83,   58,   37,   71,   42,
00689         9,   20,   38,  291,   83,   58,   34,   21,   36,   34,
00690        43,   41,   34,    8,   11,    9,   45,   20,   27,   27,
00691        40,   27,   27,   27,   27,   27,   27,   27,   27,   39,
00692        27,   27,   27,   27,   27,   42,   46,   47,   27,   27,
00693        27,   27,   27,   27,   44,   45,   45,   43,   45,   54,
00694        43,   48,   60,   54,   84,   45,   85,   84,   71,   54,
00695        62,   60,   27,   27,   27,   58,   85,   86,   56,   62,
00696 
00697        44,   47,  133,   46,  133,   47,   72,   72,   72,   46,
00698        75,   48,   75,   86,   99,   75,   75,   75,   27,   89,
00699        27,   28,   28,   54,   28,   28,   28,   28,   28,   28,
00700        28,   28,   87,   28,   28,   28,   28,   28,   56,   90,
00701        99,   28,   28,   28,   28,   28,   28,   28,   62,   54,
00702        91,   60,   93,   89,   87,   69,   69,   69,   73,   62,
00703        73,   73,   73,   95,   88,   28,   28,   28,   69,   97,
00704        92,   94,   74,   73,   74,   74,   74,   96,  102,   90,
00705        98,   78,   93,   78,   78,   78,   88,   74,   95,   91,
00706        69,   28,  100,   28,   57,   73,   78,   57,  101,  110,
00707 
00708       103,   78,   92,   94,  105,  104,   57,   57,   97,   74,
00709        94,   96,  108,   98,   57,  107,  111,  102,   78,  116,
00710       143,  101,  100,  106,  109,  113,  113,  100,  116,  110,
00711       132,  118,   57,  104,   57,  103,  290,   57,   57,  105,
00712       118,  288,   57,  126,  132,  106,  134,  134,  108,   57,
00713       143,  113,   57,  111,   57,  107,   57,   57,   65,  122,
00714       106,   65,  109,  129,  129,  129,  146,  137,  122,  122,
00715        65,   65,  138,  114,  136,  147,  113,  114,   65,  118,
00716       125,  139,  125,  114,  285,  125,  125,  125,  116,  114,
00717       114,  128,  128,  128,  146,  135,   65,  147,   65,  135,
00718 
00719       118,   65,   65,  126,  128,  137,   65,  130,  130,  130,
00720       138,  136,  140,   65,  139,  142,   65,  114,   65,  148,
00721        65,   65,   77,   77,   77,  141,  128,  145,  149,  154,
00722       152,   77,   77,   77,   77,   77,   77,  150,  140,  283,
00723       151,  142,  153,  114,  156,  148,  155,  157,  158,  159,
00724       160,  145,  182,   77,   77,   77,   77,   77,   77,  115,
00725       115,  115,  152,  141,  163,  149,  154,  162,  115,  115,
00726       115,  115,  115,  115,  161,  159,  160,  174,  150,  151,
00727       155,  174,  153,  156,  279,  277,  157,  180,  158,  182,
00728       115,  115,  115,  115,  115,  115,  123,  123,  123,  164,
00729 
00730       179,  162,  275,  163,  161,  123,  123,  123,  123,  123,
00731       123,  164,  164,  168,  169,  171,  171,  171,  172,  172,
00732       172,  184,  168,  169,  169,  175,  180,  123,  123,  123,
00733       123,  123,  123,  166,  176,  175,  183,  166,  179,  164,
00734       173,  176,  173,  166,  185,  173,  173,  173,  186,  166,
00735       166,  188,  189,  190,  191,  184,  193,  194,  192,  195,
00736       273,  197,  183,  196,  199,  198,  201,  204,  202,  168,
00737       214,  209,  203,  272,  188,  190,  191,  166,  185,  218,
00738       209,  214,  168,  186,  192,  196,  193,  223,  199,  196,
00739       189,  201,  222,  220,  194,  198,  202,  205,  195,  197,
00740 
00741       203,  207,  208,  166,  167,  207,  208,  204,  167,  205,
00742       205,  207,  208,  218,  167,  211,  211,  211,  220,  223,
00743       167,  167,  167,  212,  212,  212,  225,  224,  222,  167,
00744       167,  167,  167,  167,  167,  209,  221,  205,  215,  226,
00745       209,  231,  215,  227,  228,  207,  208,  229,  167,  235,
00746       236,  167,  167,  167,  167,  167,  167,  232,  237,  234,
00747       240,  241,  221,  224,  244,  225,  244,  227,  228,  239,
00748       251,  207,  208,  231,  167,  170,  236,  249,  226,  245,
00749       242,  229,  232,  234,  170,  170,  170,  248,  235,  242,
00750       250,  239,  237,  170,  170,  170,  170,  170,  170,  252,
00751 
00752       240,  241,  245,  249,  260,  251,  261,  262,  248,  253,
00753       281,  264,  250,  256,  266,  170,  170,  170,  170,  170,
00754       170,  206,  269,  270,  271,  252,  264,  263,  274,  242,
00755       268,  260,  261,  206,  206,  206,  263,  282,  293,  262,
00756       281,  267,  206,  206,  206,  206,  206,  206,  253,  242,
00757       271,  256,  266,  274,  268,  289,  284,  293,  259,  269,
00758       297,  206,  299,  282,  206,  206,  206,  206,  206,  206,
00759       276,  276,  276,  302,  276,  294,  287,  263,  303,  287,
00760       276,  284,  258,  289,  294,  287,  305,  306,  257,  255,
00761       301,  276,  295,  307,  297,  295,  263,  265,  287,  301,
00762 
00763       303,  265,  265,  265,  265,  265,  265,  265,  265,  265,
00764       265,  265,  265,  265,  295,  298,  308,  265,  265,  265,
00765       265,  265,  265,  254,  299,  307,  286,  286,  286,  292,
00766       286,  247,  292,  246,  298,  302,  286,  294,  292,  243,
00767       276,  265,  265,  265,  294,  287,  238,  286,  305,  306,
00768       233,  292,  301,  230,  308,  219,  217,  216,  213,  301,
00769       210,  200,  187,  181,  178,  177,  144,  265,  121,  265,
00770       278,  117,   82,   68,  278,  278,  278,  278,  278,  278,
00771       278,  278,  278,  278,  278,  278,  278,   64,   63,   61,
00772       278,  278,  278,  278,  278,  278,  286,   25,  292,   22,
00773 
00774        17,   14,    7,    3,    0,    0,    0,    0,    0,    0,
00775         0,    0,    0,    0,  278,  278,  278,    0,    0,    0,
00776         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00777         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00778       278,    0,  278,  311,  311,    0,  311,  311,    0,  311,
00779       311,  311,  312,  312,    0,  312,  312,  312,  312,  312,
00780       312,  312,  313,  313,  313,  313,  313,  313,  313,  313,
00781       313,  313,  314,  314,    0,  314,  314,  314,  314,  314,
00782       314,  314,  315,  315,    0,  315,  315,    0,  315,  315,
00783       315,  316,    0,    0,  316,  316,  316,  316,  316,  316,
00784 
00785       316,  317,  317,  317,  317,  317,  317,  317,  317,  317,
00786       317,  318,  318,  318,  318,  318,  318,  318,  318,  318,
00787       318,  319,  319,    0,  319,  319,  319,  319,  319,  319,
00788       319,  320,    0,  320,    0,  320,  321,  321,  321,  321,
00789       321,  321,  321,  321,  321,  321,  322,  322,    0,  322,
00790       322,  322,  322,  322,  322,  322,  323,  323,  324,  324,
00791         0,  324,  324,  324,  324,  324,  324,  325,    0,  325,
00792         0,  325,  325,  325,  325,  326,  326,  326,  326,  326,
00793       326,  326,  326,  326,  326,  327,  327,  327,  327,  327,
00794       327,  327,  327,  327,  327,  328,  328,  328,  328,  328,
00795 
00796       328,  328,  328,  328,  328,  310,  310,  310,  310,  310,
00797       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00798       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00799       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00800       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00801       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00802       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
00803       310,  310,  310,  310,  310,  310,  310,  310,  310
00804     } ;
00805 
00806 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
00807 static char *yy_full_match;
00808 static int yy_lp;
00809 #define REJECT \
00810 { \
00811 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
00812 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
00813 ++yy_lp; \
00814 goto find_rule; \
00815 }
00816 #define yymore() yymore_used_but_not_detected
00817 #define YY_MORE_ADJ 0
00818 #define YY_RESTORE_YY_MORE_OFFSET
00819 char *yytext;
00820 #line 1 "scanner.ll"
00821 #define INITIAL 0
00822 #line 2 "scanner.ll"
00823 /*****************************************************************
00824 Copyright (c) 1999 Torben Weis <weis@kde.org>
00825 Copyright (c) 2000 Matthias Ettrich <ettrich@kde.org>
00826 
00827 Permission is hereby granted, free of charge, to any person obtaining a copy
00828 of this software and associated documentation files (the "Software"), to deal
00829 in the Software without restriction, including without limitation the rights
00830 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00831 copies of the Software, and to permit persons to whom the Software is
00832 furnished to do so, subject to the following conditions:
00833 
00834 The above copyright notice and this permission notice shall be included in
00835 all copies or substantial portions of the Software.
00836 
00837 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00838 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00839 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
00840 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
00841 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
00842 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00843 
00844 ******************************************************************/
00845 
00846 #define YY_NO_UNPUT
00847 #include <stdlib.h>
00848 #include <ctype.h>
00849 
00850 class QString;
00851 
00852 #ifndef KDE_USE_FINAL
00853 #include "yacc.cc.h"
00854 #endif
00855 
00856 extern int idl_line_no;
00857 int comment_mode;
00858 int function_mode = 0;
00859 
00860 #include <qstring.h>
00861 #include <qregexp.h>
00862 
00863 static long ascii_to_longlong( long base, const char *s )
00864 {
00865   long ll = 0;
00866   while( *s != '\0' ) {
00867     char c = *s++;
00868     if( c >= 'a' )
00869       c -= 'a' - 'A';
00870     c -= '0';
00871     if( c > 9 )
00872       c -= 'A' - '0' - 10;
00873     ll = ll * base + c;
00874   }
00875   return ll;
00876 }
00877 
00878 static double ascii_to_longdouble (const char *s)
00879 {
00880   double d;
00881 #ifdef HAVE_SCANF_LF
00882   sscanf (s, "%Lf", &d);
00883 #else
00884   /*
00885    * this is only an approximation and will probably break fixed<>
00886    * parameter calculation on systems where
00887    * sizeof(double) < sizeof(long double). but fortunately all
00888    * systems where scanf("%Lf") is known to be broken (Linux/Alpha
00889    * and HPUX) have sizeof(double) == sizeof(long double).
00890    */
00891   d = strtod (s, NULL);
00892 #endif
00893   return d;
00894 }
00895 
00896 static char translate_char( const char *s )
00897 {
00898   char c = *s++;
00899 
00900   if( c != '\\' )
00901     return c;
00902   c = *s++;
00903   switch( c ) {
00904   case 'n':
00905     return '\n';
00906   case 't':
00907     return '\t';
00908   case 'v':
00909     return '\v';
00910   case 'b':
00911     return '\b';
00912   case 'r':
00913     return '\r';
00914   case 'f':
00915     return '\f';
00916   case 'a':
00917     return '\a';
00918   case '\\':
00919     return '\\';
00920   case '?':
00921     return '\?';
00922   case '\'':
00923     return '\'';
00924   case '"':
00925     return '"';
00926   case 'x':
00927   case 'X':
00928     return (char) ascii_to_longlong( 16, s );
00929   default:
00930     // Gotta be an octal
00931     return (char) ascii_to_longlong( 8, s );
00932   }
00933 }
00934 
00935 
00936 #define YY_NEVER_INTERACTIVE 1
00937 /*--------------------------------------------------------------------------*/
00938 /*--------------------------------------------------------------------------*/
00939 /*--------------------------------------------------------------------------*/
00940 #line 941 "scanner.cc"
00941 
00942 /* Macros after this point can all be overridden by user definitions in
00943  * section 1.
00944  */
00945 
00946 #ifndef YY_SKIP_YYWRAP
00947 #ifdef __cplusplus
00948 extern "C" int yywrap YY_PROTO(( void ));
00949 #else
00950 extern int yywrap YY_PROTO(( void ));
00951 #endif
00952 #endif
00953 
00954 #ifndef YY_NO_UNPUT
00955 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
00956 #endif
00957 
00958 #ifndef yytext_ptr
00959 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
00960 #endif
00961 
00962 #ifdef YY_NEED_STRLEN
00963 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
00964 #endif
00965 
00966 #ifndef YY_NO_INPUT
00967 #ifdef __cplusplus
00968 static int yyinput YY_PROTO(( void ));
00969 #else
00970 static int input YY_PROTO(( void ));
00971 #endif
00972 #endif
00973 
00974 #if YY_STACK_USED
00975 static int yy_start_stack_ptr = 0;
00976 static int yy_start_stack_depth = 0;
00977 static int *yy_start_stack = 0;
00978 #ifndef YY_NO_PUSH_STATE
00979 static void yy_push_state YY_PROTO(( int new_state ));
00980 #endif
00981 #ifndef YY_NO_POP_STATE
00982 static void yy_pop_state YY_PROTO(( void ));
00983 #endif
00984 #ifndef YY_NO_TOP_STATE
00985 static int yy_top_state YY_PROTO(( void ));
00986 #endif
00987 
00988 #else
00989 #define YY_NO_PUSH_STATE 1
00990 #define YY_NO_POP_STATE 1
00991 #define YY_NO_TOP_STATE 1
00992 #endif
00993 
00994 #ifdef YY_MALLOC_DECL
00995 YY_MALLOC_DECL
00996 #else
00997 #if __STDC__
00998 #ifndef __cplusplus
00999 #include <stdlib.h>
01000 #endif
01001 #else
01002 /* Just try to get by without declaring the routines.  This will fail
01003  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
01004  * or sizeof(void*) != sizeof(int).
01005  */
01006 #endif
01007 #endif
01008 
01009 /* Amount of stuff to slurp up with each read. */
01010 #ifndef YY_READ_BUF_SIZE
01011 #define YY_READ_BUF_SIZE 8192
01012 #endif
01013 
01014 /* Copy whatever the last rule matched to the standard output. */
01015 
01016 #ifndef ECHO
01017 /* This used to be an fputs(), but since the string might contain NUL's,
01018  * we now use fwrite().
01019  */
01020 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
01021 #endif
01022 
01023 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01024  * is returned in "result".
01025  */
01026 #ifndef YY_INPUT
01027 #define YY_INPUT(buf,result,max_size) \
01028     if ( yy_current_buffer->yy_is_interactive ) \
01029         { \
01030         int c = '*', n; \
01031         for ( n = 0; n < max_size && \
01032                  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
01033             buf[n] = (char) c; \
01034         if ( c == '\n' ) \
01035             buf[n++] = (char) c; \
01036         if ( c == EOF && ferror( yyin ) ) \
01037             YY_FATAL_ERROR( "input in flex scanner failed" ); \
01038         result = n; \
01039         } \
01040     else \
01041         { \
01042         errno=0; \
01043         while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
01044             { \
01045             if( errno != EINTR) \
01046                 { \
01047                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
01048                 break; \
01049                 } \
01050             errno=0; \
01051             clearerr(yyin); \
01052             } \
01053         }
01054 #endif
01055 
01056 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01057  * we don't want an extra ';' after the "return" because that will cause
01058  * some compilers to complain about unreachable statements.
01059  */
01060 #ifndef yyterminate
01061 #define yyterminate() return YY_NULL
01062 #endif
01063 
01064 /* Number of entries by which start-condition stack grows. */
01065 #ifndef YY_START_STACK_INCR
01066 #define YY_START_STACK_INCR 25
01067 #endif
01068 
01069 /* Report a fatal error. */
01070 #ifndef YY_FATAL_ERROR
01071 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
01072 #endif
01073 
01074 /* Default declaration of generated scanner - a define so the user can
01075  * easily add parameters.
01076  */
01077 #ifndef YY_DECL
01078 #define YY_DECL int yylex YY_PROTO(( void ))
01079 #endif
01080 
01081 /* Code executed at the beginning of each rule, after yytext and yyleng
01082  * have been set up.
01083  */
01084 #ifndef YY_USER_ACTION
01085 #define YY_USER_ACTION
01086 #endif
01087 
01088 /* Code executed at the end of each rule. */
01089 #ifndef YY_BREAK
01090 #define YY_BREAK break;
01091 #endif
01092 
01093 #define YY_RULE_SETUP \
01094     YY_USER_ACTION
01095 
01096 YY_DECL
01097     {
01098     register yy_state_type yy_current_state;
01099     register char *yy_cp, *yy_bp;
01100     register int yy_act;
01101 
01102 #line 148 "scanner.ll"
01103 
01104 
01105 #line 1106 "scanner.cc"
01106 
01107     if ( yy_init )
01108         {
01109         yy_init = 0;
01110 
01111 #ifdef YY_USER_INIT
01112         YY_USER_INIT;
01113 #endif
01114 
01115         if ( ! yy_start )
01116             yy_start = 1;   /* first start state */
01117 
01118         if ( ! yyin )
01119             yyin = stdin;
01120 
01121         if ( ! yyout )
01122             yyout = stdout;
01123 
01124         if ( ! yy_current_buffer )
01125             yy_current_buffer =
01126                 yy_create_buffer( yyin, YY_BUF_SIZE );
01127 
01128         yy_load_buffer_state();
01129         }
01130 
01131     while ( 1 )     /* loops until end-of-file is reached */
01132         {
01133         yy_cp = yy_c_buf_p;
01134 
01135         /* Support of yytext. */
01136         *yy_cp = yy_hold_char;
01137 
01138         /* yy_bp points to the position in yy_ch_buf of the start of
01139          * the current run.
01140          */
01141         yy_bp = yy_cp;
01142 
01143         yy_current_state = yy_start;
01144         yy_state_ptr = yy_state_buf;
01145         *yy_state_ptr++ = yy_current_state;
01146 yy_match:
01147         do
01148             {
01149             register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
01150             while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01151                 {
01152                 yy_current_state = (int) yy_def[yy_current_state];
01153                 if ( yy_current_state >= 311 )
01154                     yy_c = yy_meta[(unsigned int) yy_c];
01155                 }
01156             yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01157             *yy_state_ptr++ = yy_current_state;
01158             ++yy_cp;
01159             }
01160         while ( yy_current_state != 310 );
01161 
01162 yy_find_action:
01163         yy_current_state = *--yy_state_ptr;
01164         yy_lp = yy_accept[yy_current_state];
01165 find_rule: /* we branch to this label when backing up */
01166         for ( ; ; ) /* until we find what rule we matched */
01167             {
01168             if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
01169                 {
01170                 yy_act = yy_acclist[yy_lp];
01171                     {
01172                     yy_full_match = yy_cp;
01173                     break;
01174                     }
01175                 }
01176             --yy_cp;
01177             yy_current_state = *--yy_state_ptr;
01178             yy_lp = yy_accept[yy_current_state];
01179             }
01180 
01181         YY_DO_BEFORE_ACTION;
01182 
01183 
01184 do_action:  /* This label is used only to access EOF actions. */
01185 
01186 
01187         switch ( yy_act )
01188     { /* beginning of action switch */
01189 case 1:
01190 YY_RULE_SETUP
01191 #line 150 "scanner.ll"
01192 ;
01193     YY_BREAK
01194 case 2:
01195 YY_RULE_SETUP
01196 #line 151 "scanner.ll"
01197 { idl_line_no++; }
01198     YY_BREAK
01199 case 3:
01200 YY_RULE_SETUP
01201 #line 153 "scanner.ll"
01202 { comment_mode = 1; }
01203     YY_BREAK
01204 case 4:
01205 YY_RULE_SETUP
01206 #line 154 "scanner.ll"
01207 { if (!comment_mode) { REJECT; } else { comment_mode = 0; } }
01208     YY_BREAK
01209 case 5:
01210 YY_RULE_SETUP
01211 #line 155 "scanner.ll"
01212 {   
01213             if (! comment_mode) {
01214             if (!function_mode) { REJECT; } else {
01215             function_mode = 0;
01216             return T_RIGHT_CURLY_BRACKET;
01217             }
01218             }
01219         }
01220     YY_BREAK
01221 case 6:
01222 YY_RULE_SETUP
01223 #line 163 "scanner.ll"
01224 { if (!comment_mode && !function_mode) { REJECT; } }
01225     YY_BREAK
01226 case 7:
01227 YY_RULE_SETUP
01228 #line 164 "scanner.ll"
01229 { if (!comment_mode) { REJECT; } }
01230     YY_BREAK
01231 case 8:
01232 YY_RULE_SETUP
01233 #line 166 "scanner.ll"
01234 ;
01235     YY_BREAK
01236 case 9:
01237 YY_RULE_SETUP
01238 #line 167 "scanner.ll"
01239 {
01240                           exit( 1 );
01241                         }
01242     YY_BREAK
01243 case 10:
01244 YY_RULE_SETUP
01245 #line 170 "scanner.ll"
01246 {
01247               QString s( yytext );
01248                           int i = s.find(QRegExp("[\"<]"))+1;
01249                           int j = s.find(QRegExp("[\">]"), i);
01250               yylval._str = new QString( s.mid( i, j - i ) );
01251                           idl_line_no++;
01252                           return T_INCLUDE;
01253                         }
01254     YY_BREAK
01255 case 11:
01256 YY_RULE_SETUP
01257 #line 178 "scanner.ll"
01258 {
01259                           idl_line_no++;
01260                         }
01261     YY_BREAK
01262 case 12:
01263 YY_RULE_SETUP
01264 #line 181 "scanner.ll"
01265 return T_LEFT_CURLY_BRACKET;
01266     YY_BREAK
01267 case 13:
01268 YY_RULE_SETUP
01269 #line 182 "scanner.ll"
01270 return T_RIGHT_CURLY_BRACKET;
01271     YY_BREAK
01272 case 14:
01273 YY_RULE_SETUP
01274 #line 183 "scanner.ll"
01275 return T_LEFT_PARANTHESIS;
01276     YY_BREAK
01277 case 15:
01278 YY_RULE_SETUP
01279 #line 184 "scanner.ll"
01280 return T_RIGHT_PARANTHESIS;
01281     YY_BREAK
01282 case 16:
01283 YY_RULE_SETUP
01284 #line 185 "scanner.ll"
01285 return T_COLON;
01286     YY_BREAK
01287 case 17:
01288 YY_RULE_SETUP
01289 #line 186 "scanner.ll"
01290 return T_PLUS;
01291     YY_BREAK
01292 case 18:
01293 YY_RULE_SETUP
01294 #line 187 "scanner.ll"
01295 return T_MINUS;
01296     YY_BREAK
01297 case 19:
01298 YY_RULE_SETUP
01299 #line 188 "scanner.ll"
01300 return T_TILDE;
01301     YY_BREAK
01302 case 20:
01303 YY_RULE_SETUP
01304 #line 189 "scanner.ll"
01305 return T_COMMA;
01306     YY_BREAK
01307 case 21:
01308 YY_RULE_SETUP
01309 #line 190 "scanner.ll"
01310 return T_ASTERISK;
01311     YY_BREAK
01312 case 22:
01313 YY_RULE_SETUP
01314 #line 191 "scanner.ll"
01315 return T_SEMICOLON;
01316     YY_BREAK
01317 case 23:
01318 YY_RULE_SETUP
01319 #line 192 "scanner.ll"
01320 return T_AMPERSAND;
01321     YY_BREAK
01322 case 24:
01323 YY_RULE_SETUP
01324 #line 193 "scanner.ll"
01325 return T_LESS;
01326     YY_BREAK
01327 case 25:
01328 YY_RULE_SETUP
01329 #line 194 "scanner.ll"
01330 return T_GREATER;
01331     YY_BREAK
01332 case 26:
01333 YY_RULE_SETUP
01334 #line 195 "scanner.ll"
01335 return T_SCOPE;
01336     YY_BREAK
01337 case 27:
01338 YY_RULE_SETUP
01339 #line 196 "scanner.ll"
01340 return T_EQUAL;
01341     YY_BREAK
01342 case 28:
01343 YY_RULE_SETUP
01344 #line 197 "scanner.ll"
01345 return T_ACCESS;
01346     YY_BREAK
01347 case 29:
01348 YY_RULE_SETUP
01349 #line 198 "scanner.ll"
01350 return T_TRIPLE_DOT;
01351     YY_BREAK
01352 case 30:
01353 YY_RULE_SETUP
01354 #line 199 "scanner.ll"
01355 return T_ARRAY_OPEN;
01356     YY_BREAK
01357 case 31:
01358 YY_RULE_SETUP
01359 #line 200 "scanner.ll"
01360 return T_ARRAY_CLOSE;
01361     YY_BREAK
01362 case 32:
01363 YY_RULE_SETUP
01364 #line 201 "scanner.ll"
01365 return T_ACCESS;
01366     YY_BREAK
01367 case 33:
01368 YY_RULE_SETUP
01369 #line 202 "scanner.ll"
01370 return T_SHIFT;
01371     YY_BREAK
01372 case 34:
01373 YY_RULE_SETUP
01374 #line 203 "scanner.ll"
01375 return T_MISCOPERATOR;
01376     YY_BREAK
01377 case 35:
01378 YY_RULE_SETUP
01379 #line 206 "scanner.ll"
01380 return T_CONST;
01381     YY_BREAK
01382 case 36:
01383 YY_RULE_SETUP
01384 #line 207 "scanner.ll"
01385 return T_ENUM;
01386     YY_BREAK
01387 case 37:
01388 YY_RULE_SETUP
01389 #line 208 "scanner.ll"
01390 return T_NAMESPACE;
01391     YY_BREAK
01392 case 38:
01393 YY_RULE_SETUP
01394 #line 209 "scanner.ll"
01395 return T_USING;
01396     YY_BREAK
01397 case 39:
01398 YY_RULE_SETUP
01399 #line 210 "scanner.ll"
01400 return T_CLASS;
01401     YY_BREAK
01402 case 40:
01403 YY_RULE_SETUP
01404 #line 211 "scanner.ll"
01405 return T_STRUCT;
01406     YY_BREAK
01407 case 41:
01408 YY_RULE_SETUP
01409 #line 212 "scanner.ll"
01410 return T_FUNOPERATOR;
01411     YY_BREAK
01412 case 42:
01413 YY_RULE_SETUP
01414 #line 213 "scanner.ll"
01415 return T_VIRTUAL;
01416     YY_BREAK
01417 case 43:
01418 YY_RULE_SETUP
01419 #line 214 "scanner.ll"
01420 return T_PUBLIC;
01421     YY_BREAK
01422 case 44:
01423 YY_RULE_SETUP
01424 #line 215 "scanner.ll"
01425 return T_INLINE;
01426     YY_BREAK
01427 case 45:
01428 YY_RULE_SETUP
01429 #line 216 "scanner.ll"
01430 return T_STATIC;
01431     YY_BREAK
01432 case 46:
01433 YY_RULE_SETUP
01434 #line 217 "scanner.ll"
01435 return T_MUTABLE;
01436     YY_BREAK
01437 case 47:
01438 YY_RULE_SETUP
01439 #line 218 "scanner.ll"
01440 return T_SIGNED;
01441     YY_BREAK
01442 case 48:
01443 YY_RULE_SETUP
01444 #line 219 "scanner.ll"
01445 return T_UNSIGNED;
01446     YY_BREAK
01447 case 49:
01448 YY_RULE_SETUP
01449 #line 220 "scanner.ll"
01450 return T_SHORT;
01451     YY_BREAK
01452 case 50:
01453 YY_RULE_SETUP
01454 #line 221 "scanner.ll"
01455 return T_LONG;
01456     YY_BREAK
01457 case 51:
01458 YY_RULE_SETUP
01459 #line 222 "scanner.ll"
01460 return T_FRIEND;
01461     YY_BREAK
01462 case 52:
01463 YY_RULE_SETUP
01464 #line 223 "scanner.ll"
01465 return T_PROTECTED;
01466     YY_BREAK
01467 case 53:
01468 YY_RULE_SETUP
01469 #line 224 "scanner.ll"
01470 return T_PRIVATE;
01471     YY_BREAK
01472 case 54:
01473 YY_RULE_SETUP
01474 #line 225 "scanner.ll"
01475 return T_SIGNAL;
01476     YY_BREAK
01477 case 55:
01478 YY_RULE_SETUP
01479 #line 226 "scanner.ll"
01480 return T_RETURN;
01481     YY_BREAK
01482 case 56:
01483 YY_RULE_SETUP
01484 #line 227 "scanner.ll"
01485 return T_SLOT;
01486     YY_BREAK
01487 case 57:
01488 YY_RULE_SETUP
01489 #line 228 "scanner.ll"
01490 return T_TRUE;
01491     YY_BREAK
01492 case 58:
01493 YY_RULE_SETUP
01494 #line 229 "scanner.ll"
01495 return T_INT;
01496     YY_BREAK
01497 case 59:
01498 YY_RULE_SETUP
01499 #line 230 "scanner.ll"
01500 return T_CHAR;
01501     YY_BREAK
01502 case 60:
01503 YY_RULE_SETUP
01504 #line 231 "scanner.ll"
01505 return T_FALSE;
01506     YY_BREAK
01507 case 61:
01508 YY_RULE_SETUP
01509 #line 232 "scanner.ll"
01510 return T_TRUE;
01511     YY_BREAK
01512 case 62:
01513 YY_RULE_SETUP
01514 #line 233 "scanner.ll"
01515 return T_FALSE;
01516     YY_BREAK
01517 case 63:
01518 YY_RULE_SETUP
01519 #line 234 "scanner.ll"
01520 return T_DCOP_AREA;
01521     YY_BREAK
01522 case 64:
01523 YY_RULE_SETUP
01524 #line 235 "scanner.ll"
01525 return T_DCOP_SIGNAL_AREA;
01526     YY_BREAK
01527 case 65:
01528 YY_RULE_SETUP
01529 #line 236 "scanner.ll"
01530 return T_TYPEDEF;
01531     YY_BREAK
01532 case 66:
01533 YY_RULE_SETUP
01534 #line 237 "scanner.ll"
01535 return T_DCOP;
01536     YY_BREAK
01537 case 67:
01538 YY_RULE_SETUP
01539 #line 238 "scanner.ll"
01540 ;
01541     YY_BREAK
01542 case 68:
01543 YY_RULE_SETUP
01544 #line 239 "scanner.ll"
01545 return T_NULL;
01546     YY_BREAK
01547 case 69:
01548 YY_RULE_SETUP
01549 #line 240 "scanner.ll"
01550 return T_EXTERN;
01551     YY_BREAK
01552 case 70:
01553 YY_RULE_SETUP
01554 #line 241 "scanner.ll"
01555 return T_EXTERN_C;
01556     YY_BREAK
01557 case 71:
01558 YY_RULE_SETUP
01559 #line 243 "scanner.ll"
01560 {
01561               yylval._str = new QString( yytext );
01562               return T_IDENTIFIER;
01563             }
01564     YY_BREAK
01565 case 72:
01566 #line 249 "scanner.ll"
01567 case 73:
01568 #line 250 "scanner.ll"
01569 case 74:
01570 #line 251 "scanner.ll"
01571 case 75:
01572 #line 252 "scanner.ll"
01573 case 76:
01574 YY_RULE_SETUP
01575 #line 252 "scanner.ll"
01576 {
01577               yylval._float = ascii_to_longdouble( yytext );
01578               return T_DOUBLE_LITERAL;
01579             }
01580     YY_BREAK
01581 case 77:
01582 YY_RULE_SETUP
01583 #line 256 "scanner.ll"
01584 {
01585               yylval._int = ascii_to_longlong( 10, yytext );
01586               return T_INTEGER_LITERAL;
01587             }
01588     YY_BREAK
01589 case 78:
01590 YY_RULE_SETUP
01591 #line 260 "scanner.ll"
01592 {
01593               yylval._int = ascii_to_longlong( 8, yytext );
01594               return T_INTEGER_LITERAL;
01595             }
01596     YY_BREAK
01597 case 79:
01598 YY_RULE_SETUP
01599 #line 264 "scanner.ll"
01600 {
01601               yylval._int = ascii_to_longlong( 16, yytext + 2 );
01602               return T_INTEGER_LITERAL;
01603             }
01604     YY_BREAK
01605 case 80:
01606 YY_RULE_SETUP
01607 #line 268 "scanner.ll"
01608 {
01609                           QCString s( yytext );
01610                       s = s.mid( 1, s.length() - 2 );
01611               yylval._char = translate_char( s );
01612               return T_CHARACTER_LITERAL;
01613             }
01614     YY_BREAK
01615 case 81:
01616 YY_RULE_SETUP
01617 #line 274 "scanner.ll"
01618 {
01619                           QString s( yytext );
01620                           yylval._str = new QString( s.mid( 1, s.length() - 2 ) );
01621               return T_STRING_LITERAL;
01622             }
01623     YY_BREAK
01624 case 82:
01625 YY_RULE_SETUP
01626 #line 279 "scanner.ll"
01627 {
01628               if (function_mode)
01629                 return yylex(); // call once again
01630 
01631               qFatal("could not parse %c(%d) at line %d" , yytext[0], yytext[0], idl_line_no);
01632               return T_UNKNOWN;
01633             }
01634     YY_BREAK
01635 case 83:
01636 YY_RULE_SETUP
01637 #line 287 "scanner.ll"
01638 ECHO;
01639     YY_BREAK
01640 #line 1641 "scanner.cc"
01641             case YY_STATE_EOF(INITIAL):
01642                 yyterminate();
01643 
01644     case YY_END_OF_BUFFER:
01645         {
01646         /* Amount of text matched not including the EOB char. */
01647         int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
01648 
01649         /* Undo the effects of YY_DO_BEFORE_ACTION. */
01650         *yy_cp = yy_hold_char;
01651         YY_RESTORE_YY_MORE_OFFSET
01652 
01653         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
01654             {
01655             /* We're scanning a new file or input source.  It's
01656              * possible that this happened because the user
01657              * just pointed yyin at a new source and called
01658              * yylex().  If so, then we have to assure
01659              * consistency between yy_current_buffer and our
01660              * globals.  Here is the right place to do so, because
01661              * this is the first action (other than possibly a
01662              * back-up) that will match for the new input source.
01663              */
01664             yy_n_chars = yy_current_buffer->yy_n_chars;
01665             yy_current_buffer->yy_input_file = yyin;
01666             yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
01667             }
01668 
01669         /* Note that here we test for yy_c_buf_p "<=" to the position
01670          * of the first EOB in the buffer, since yy_c_buf_p will
01671          * already have been incremented past the NUL character
01672          * (since all states make transitions on EOB to the
01673          * end-of-buffer state).  Contrast this with the test
01674          * in input().
01675          */
01676         if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
01677             { /* This was really a NUL. */
01678             yy_state_type yy_next_state;
01679 
01680             yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
01681 
01682             yy_current_state = yy_get_previous_state();
01683 
01684             /* Okay, we're now positioned to make the NUL
01685              * transition.  We couldn't have
01686              * yy_get_previous_state() go ahead and do it
01687              * for us because it doesn't know how to deal
01688              * with the possibility of jamming (and we don't
01689              * want to build jamming into it because then it
01690              * will run more slowly).
01691              */
01692 
01693             yy_next_state = yy_try_NUL_trans( yy_current_state );
01694 
01695             yy_bp = yytext_ptr + YY_MORE_ADJ;
01696 
01697             if ( yy_next_state )
01698                 {
01699                 /* Consume the NUL. */
01700                 yy_cp = ++yy_c_buf_p;
01701                 yy_current_state = yy_next_state;
01702                 goto yy_match;
01703                 }
01704 
01705             else
01706                 {
01707                 yy_cp = yy_c_buf_p;
01708                 goto yy_find_action;
01709                 }
01710             }
01711 
01712         else switch ( yy_get_next_buffer() )
01713             {
01714             case EOB_ACT_END_OF_FILE:
01715                 {
01716                 yy_did_buffer_switch_on_eof = 0;
01717 
01718                 if ( yywrap() )
01719                     {
01720                     /* Note: because we've taken care in
01721                      * yy_get_next_buffer() to have set up
01722                      * yytext, we can now set up
01723                      * yy_c_buf_p so that if some total
01724                      * hoser (like flex itself) wants to
01725                      * call the scanner after we return the
01726                      * YY_NULL, it'll still work - another
01727                      * YY_NULL will get returned.
01728                      */
01729                     yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
01730 
01731                     yy_act = YY_STATE_EOF(YY_START);
01732                     goto do_action;
01733                     }
01734 
01735                 else
01736                     {
01737                     if ( ! yy_did_buffer_switch_on_eof )
01738                         YY_NEW_FILE;
01739                     }
01740                 break;
01741                 }
01742 
01743             case EOB_ACT_CONTINUE_SCAN:
01744                 yy_c_buf_p =
01745                     yytext_ptr + yy_amount_of_matched_text;
01746 
01747                 yy_current_state = yy_get_previous_state();
01748 
01749                 yy_cp = yy_c_buf_p;
01750                 yy_bp = yytext_ptr + YY_MORE_ADJ;
01751                 goto yy_match;
01752 
01753             case EOB_ACT_LAST_MATCH:
01754                 yy_c_buf_p =
01755                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
01756 
01757                 yy_current_state = yy_get_previous_state();
01758 
01759                 yy_cp = yy_c_buf_p;
01760                 yy_bp = yytext_ptr + YY_MORE_ADJ;
01761                 goto yy_find_action;
01762             }
01763         break;
01764         }
01765 
01766     default:
01767         YY_FATAL_ERROR(
01768             "fatal flex scanner internal error--no action found" );
01769     } /* end of action switch */
01770         } /* end of scanning one token */
01771     } /* end of yylex */
01772 
01773 
01774 /* yy_get_next_buffer - try to read in a new buffer
01775  *
01776  * Returns a code representing an action:
01777  *  EOB_ACT_LAST_MATCH -
01778  *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
01779  *  EOB_ACT_END_OF_FILE - end of file
01780  */
01781 
01782 static int yy_get_next_buffer()
01783     {
01784     register char *dest = yy_current_buffer->yy_ch_buf;
01785     register char *source = yytext_ptr;
01786     register int number_to_move, i;
01787     int ret_val;
01788 
01789     if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
01790         YY_FATAL_ERROR(
01791         "fatal flex scanner internal error--end of buffer missed" );
01792 
01793     if ( yy_current_buffer->yy_fill_buffer == 0 )
01794         { /* Don't try to fill the buffer, so this is an EOF. */
01795         if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
01796             {
01797             /* We matched a single character, the EOB, so
01798              * treat this as a final EOF.
01799              */
01800             return EOB_ACT_END_OF_FILE;
01801             }
01802 
01803         else
01804             {
01805             /* We matched some text prior to the EOB, first
01806              * process it.
01807              */
01808             return EOB_ACT_LAST_MATCH;
01809             }
01810         }
01811 
01812     /* Try to read more data. */
01813 
01814     /* First move last chars to start of buffer. */
01815     number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
01816 
01817     for ( i = 0; i < number_to_move; ++i )
01818         *(dest++) = *(source++);
01819 
01820     if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
01821         /* don't do the read, it's not guaranteed to return an EOF,
01822          * just force an EOF
01823          */
01824         yy_current_buffer->yy_n_chars = yy_n_chars = 0;
01825 
01826     else
01827         {
01828         int num_to_read =
01829             yy_current_buffer->yy_buf_size - number_to_move - 1;
01830 
01831         while ( num_to_read <= 0 )
01832             { /* Not enough room in the buffer - grow it. */
01833 #ifdef YY_USES_REJECT
01834             YY_FATAL_ERROR(
01835 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
01836 #else
01837 
01838             /* just a shorter name for the current buffer */
01839             YY_BUFFER_STATE b = yy_current_buffer;
01840 
01841             int yy_c_buf_p_offset =
01842                 (int) (yy_c_buf_p - b->yy_ch_buf);
01843 
01844             if ( b->yy_is_our_buffer )
01845                 {
01846                 int new_size = b->yy_buf_size * 2;
01847 
01848                 if ( new_size <= 0 )
01849                     b->yy_buf_size += b->yy_buf_size / 8;
01850                 else
01851                     b->yy_buf_size *= 2;
01852 
01853                 b->yy_ch_buf = (char *)
01854                     /* Include room in for 2 EOB chars. */
01855                     yy_flex_realloc( (void *) b->yy_ch_buf,
01856                              b->yy_buf_size + 2 );
01857                 }
01858             else
01859                 /* Can't grow it, we don't own it. */
01860                 b->yy_ch_buf = 0;
01861 
01862             if ( ! b->yy_ch_buf )
01863                 YY_FATAL_ERROR(
01864                 "fatal error - scanner input buffer overflow" );
01865 
01866             yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
01867 
01868             num_to_read = yy_current_buffer->yy_buf_size -
01869                         number_to_move - 1;
01870 #endif
01871             }
01872 
01873         if ( num_to_read > YY_READ_BUF_SIZE )
01874             num_to_read = YY_READ_BUF_SIZE;
01875 
01876         /* Read in more data. */
01877         YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
01878             yy_n_chars, num_to_read );
01879 
01880         yy_current_buffer->yy_n_chars = yy_n_chars;
01881         }
01882 
01883     if ( yy_n_chars == 0 )
01884         {
01885         if ( number_to_move == YY_MORE_ADJ )
01886             {
01887             ret_val = EOB_ACT_END_OF_FILE;
01888             yyrestart( yyin );
01889             }
01890 
01891         else
01892             {
01893             ret_val = EOB_ACT_LAST_MATCH;
01894             yy_current_buffer->yy_buffer_status =
01895                 YY_BUFFER_EOF_PENDING;
01896             }
01897         }
01898 
01899     else
01900         ret_val = EOB_ACT_CONTINUE_SCAN;
01901 
01902     yy_n_chars += number_to_move;
01903     yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
01904     yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
01905 
01906     yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
01907 
01908     return ret_val;
01909     }
01910 
01911 
01912 /* yy_get_previous_state - get the state just before the EOB char was reached */
01913 
01914 static yy_state_type yy_get_previous_state()
01915     {
01916     register yy_state_type yy_current_state;
01917     register char *yy_cp;
01918 
01919     yy_current_state = yy_start;
01920     yy_state_ptr = yy_state_buf;
01921     *yy_state_ptr++ = yy_current_state;
01922 
01923     for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
01924         {
01925         register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
01926         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01927             {
01928             yy_current_state = (int) yy_def[yy_current_state];
01929             if ( yy_current_state >= 311 )
01930                 yy_c = yy_meta[(unsigned int) yy_c];
01931             }
01932         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01933         *yy_state_ptr++ = yy_current_state;
01934         }
01935 
01936     return yy_current_state;
01937     }
01938 
01939 
01940 /* yy_try_NUL_trans - try to make a transition on the NUL character
01941  *
01942  * synopsis
01943  *  next_state = yy_try_NUL_trans( current_state );
01944  */
01945 
01946 #ifdef YY_USE_PROTOS
01947 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
01948 #else
01949 static yy_state_type yy_try_NUL_trans( yy_current_state )
01950 yy_state_type yy_current_state;
01951 #endif
01952     {
01953     register int yy_is_jam;
01954 
01955     register YY_CHAR yy_c = 1;
01956     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01957         {
01958         yy_current_state = (int) yy_def[yy_current_state];
01959         if ( yy_current_state >= 311 )
01960             yy_c = yy_meta[(unsigned int) yy_c];
01961         }
01962     yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01963     yy_is_jam = (yy_current_state == 310);
01964     if ( ! yy_is_jam )
01965         *yy_state_ptr++ = yy_current_state;
01966 
01967     return yy_is_jam ? 0 : yy_current_state;
01968     }
01969 
01970 
01971 #ifndef YY_NO_UNPUT
01972 #ifdef YY_USE_PROTOS
01973 static void yyunput( int c, register char *yy_bp )
01974 #else
01975 static void yyunput( c, yy_bp )
01976 int c;
01977 register char *yy_bp;
01978 #endif
01979     {
01980     register char *yy_cp = yy_c_buf_p;
01981 
01982     /* undo effects of setting up yytext */
01983     *yy_cp = yy_hold_char;
01984 
01985     if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
01986         { /* need to shift things up to make room */
01987         /* +2 for EOB chars. */
01988         register int number_to_move = yy_n_chars + 2;
01989         register char *dest = &yy_current_buffer->yy_ch_buf[
01990                     yy_current_buffer->yy_buf_size + 2];
01991         register char *source =
01992                 &yy_current_buffer->yy_ch_buf[number_to_move];
01993 
01994         while ( source > yy_current_buffer->yy_ch_buf )
01995             *--dest = *--source;
01996 
01997         yy_cp += (int) (dest - source);
01998         yy_bp += (int) (dest - source);
01999         yy_current_buffer->yy_n_chars =
02000             yy_n_chars = yy_current_buffer->yy_buf_size;
02001 
02002         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
02003             YY_FATAL_ERROR( "flex scanner push-back overflow" );
02004         }
02005 
02006     *--yy_cp = (char) c;
02007 
02008 
02009     yytext_ptr = yy_bp;
02010     yy_hold_char = *yy_cp;
02011     yy_c_buf_p = yy_cp;
02012     }
02013 #endif  /* ifndef YY_NO_UNPUT */
02014 
02015 
02016 #ifdef __cplusplus
02017 static int yyinput()
02018 #else
02019 static int input()
02020 #endif
02021     {
02022     int c;
02023 
02024     *yy_c_buf_p = yy_hold_char;
02025 
02026     if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
02027         {
02028         /* yy_c_buf_p now points to the character we want to return.
02029          * If this occurs *before* the EOB characters, then it's a
02030          * valid NUL; if not, then we've hit the end of the buffer.
02031          */
02032         if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
02033             /* This was really a NUL. */
02034             *yy_c_buf_p = '\0';
02035 
02036         else
02037             { /* need more input */
02038             int offset = yy_c_buf_p - yytext_ptr;
02039             ++yy_c_buf_p;
02040 
02041             switch ( yy_get_next_buffer() )
02042                 {
02043                 case EOB_ACT_LAST_MATCH:
02044                     /* This happens because yy_g_n_b()
02045                      * sees that we've accumulated a
02046                      * token and flags that we need to
02047                      * try matching the token before
02048                      * proceeding.  But for input(),
02049                      * there's no matching to consider.
02050                      * So convert the EOB_ACT_LAST_MATCH
02051                      * to EOB_ACT_END_OF_FILE.
02052                      */
02053 
02054                     /* Reset buffer status. */
02055                     yyrestart( yyin );
02056 
02057                     /* fall through */
02058 
02059                 case EOB_ACT_END_OF_FILE:
02060                     {
02061                     if ( yywrap() )
02062                         return EOF;
02063 
02064                     if ( ! yy_did_buffer_switch_on_eof )
02065                         YY_NEW_FILE;
02066 #ifdef __cplusplus
02067                     return yyinput();
02068 #else
02069                     return input();
02070 #endif
02071                     }
02072 
02073                 case EOB_ACT_CONTINUE_SCAN:
02074                     yy_c_buf_p = yytext_ptr + offset;
02075                     break;
02076                 }
02077             }
02078         }
02079 
02080     c = *(unsigned char *) yy_c_buf_p;  /* cast for 8-bit char's */
02081     *yy_c_buf_p = '\0'; /* preserve yytext */
02082     yy_hold_char = *++yy_c_buf_p;
02083 
02084 
02085     return c;
02086     }
02087 
02088 
02089 #ifdef YY_USE_PROTOS
02090 void yyrestart( FILE *input_file )
02091 #else
02092 void yyrestart( input_file )
02093 FILE *input_file;
02094 #endif
02095     {
02096     if ( ! yy_current_buffer )
02097         yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
02098 
02099     yy_init_buffer( yy_current_buffer, input_file );
02100     yy_load_buffer_state();
02101     }
02102 
02103 
02104 #ifdef YY_USE_PROTOS
02105 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
02106 #else
02107 void yy_switch_to_buffer( new_buffer )
02108 YY_BUFFER_STATE new_buffer;
02109 #endif
02110     {
02111     if ( yy_current_buffer == new_buffer )
02112         return;
02113 
02114     if ( yy_current_buffer )
02115         {
02116         /* Flush out information for old buffer. */
02117         *yy_c_buf_p = yy_hold_char;
02118         yy_current_buffer->yy_buf_pos = yy_c_buf_p;
02119         yy_current_buffer->yy_n_chars = yy_n_chars;
02120         }
02121 
02122     yy_current_buffer = new_buffer;
02123     yy_load_buffer_state();
02124 
02125     /* We don't actually know whether we did this switch during
02126      * EOF (yywrap()) processing, but the only time this flag
02127      * is looked at is after yywrap() is called, so it's safe
02128      * to go ahead and always set it.
02129      */
02130     yy_did_buffer_switch_on_eof = 1;
02131     }
02132 
02133 
02134 #ifdef YY_USE_PROTOS
02135 void yy_load_buffer_state( void )
02136 #else
02137 void yy_load_buffer_state()
02138 #endif
02139     {
02140     yy_n_chars = yy_current_buffer->yy_n_chars;
02141     yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
02142     yyin = yy_current_buffer->yy_input_file;
02143     yy_hold_char = *yy_c_buf_p;
02144     }
02145 
02146 
02147 #ifdef YY_USE_PROTOS
02148 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
02149 #else
02150 YY_BUFFER_STATE yy_create_buffer( file, size )
02151 FILE *file;
02152 int size;
02153 #endif
02154     {
02155     YY_BUFFER_STATE b;
02156 
02157     b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
02158     if ( ! b )
02159         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
02160 
02161     b->yy_buf_size = size;
02162 
02163     /* yy_ch_buf has to be 2 characters longer than the size given because
02164      * we need to put in 2 end-of-buffer characters.
02165      */
02166     b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
02167     if ( ! b->yy_ch_buf )
02168         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
02169 
02170     b->yy_is_our_buffer = 1;
02171 
02172     yy_init_buffer( b, file );
02173 
02174     return b;
02175     }
02176 
02177 
02178 #ifdef YY_USE_PROTOS
02179 void yy_delete_buffer( YY_BUFFER_STATE b )
02180 #else
02181 void yy_delete_buffer( b )
02182 YY_BUFFER_STATE b;
02183 #endif
02184     {
02185     if ( ! b )
02186         return;
02187 
02188     if ( b == yy_current_buffer )
02189         yy_current_buffer = (YY_BUFFER_STATE) 0;
02190 
02191     if ( b->yy_is_our_buffer )
02192         yy_flex_free( (void *) b->yy_ch_buf );
02193 
02194     yy_flex_free( (void *) b );
02195     }
02196 
02197 
02198 #ifndef _WIN32
02199 #include <unistd.h>
02200 #else
02201 #ifndef YY_ALWAYS_INTERACTIVE
02202 #ifndef YY_NEVER_INTERACTIVE
02203 extern int isatty YY_PROTO(( int ));
02204 #endif
02205 #endif
02206 #endif
02207 
02208 #ifdef YY_USE_PROTOS
02209 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
02210 #else
02211 void yy_init_buffer( b, file )
02212 YY_BUFFER_STATE b;
02213 FILE *file;
02214 #endif
02215 
02216 
02217     {
02218     yy_flush_buffer( b );
02219 
02220     b->yy_input_file = file;
02221     b->yy_fill_buffer = 1;
02222 
02223 #if YY_ALWAYS_INTERACTIVE
02224     b->yy_is_interactive = 1;
02225 #else
02226 #if YY_NEVER_INTERACTIVE
02227     b->yy_is_interactive = 0;
02228 #else
02229     b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
02230 #endif
02231 #endif
02232     }
02233 
02234 
02235 #ifdef YY_USE_PROTOS
02236 void yy_flush_buffer( YY_BUFFER_STATE b )
02237 #else
02238 void yy_flush_buffer( b )
02239 YY_BUFFER_STATE b;
02240 #endif
02241 
02242     {
02243     if ( ! b )
02244         return;
02245 
02246     b->yy_n_chars = 0;
02247 
02248     /* We always need two end-of-buffer characters.  The first causes
02249      * a transition to the end-of-buffer state.  The second causes
02250      * a jam in that state.
02251      */
02252     b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
02253     b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
02254 
02255     b->yy_buf_pos = &b->yy_ch_buf[0];
02256 
02257     b->yy_at_bol = 1;
02258     b->yy_buffer_status = YY_BUFFER_NEW;
02259 
02260     if ( b == yy_current_buffer )
02261         yy_load_buffer_state();
02262     }
02263 
02264 
02265 #ifndef YY_NO_SCAN_BUFFER
02266 #ifdef YY_USE_PROTOS
02267 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
02268 #else
02269 YY_BUFFER_STATE yy_scan_buffer( base, size )
02270 char *base;
02271 yy_size_t size;
02272 #endif
02273     {
02274     YY_BUFFER_STATE b;
02275 
02276     if ( size < 2 ||
02277          base[size-2] != YY_END_OF_BUFFER_CHAR ||
02278          base[size-1] != YY_END_OF_BUFFER_CHAR )
02279         /* They forgot to leave room for the EOB's. */
02280         return 0;
02281 
02282     b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
02283     if ( ! b )
02284         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
02285 
02286     b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */
02287     b->yy_buf_pos = b->yy_ch_buf = base;
02288     b->yy_is_our_buffer = 0;
02289     b->yy_input_file = 0;
02290     b->yy_n_chars = b->yy_buf_size;
02291     b->yy_is_interactive = 0;
02292     b->yy_at_bol = 1;
02293     b->yy_fill_buffer = 0;
02294     b->yy_buffer_status = YY_BUFFER_NEW;
02295 
02296     yy_switch_to_buffer( b );
02297 
02298     return b;
02299     }
02300 #endif
02301 
02302 
02303 #ifndef YY_NO_SCAN_STRING
02304 #ifdef YY_USE_PROTOS
02305 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
02306 #else
02307 YY_BUFFER_STATE yy_scan_string( yy_str )
02308 yyconst char *yy_str;
02309 #endif
02310     {
02311     int len;
02312     for ( len = 0; yy_str[len]; ++len )
02313         ;
02314 
02315     return yy_scan_bytes( yy_str, len );
02316     }
02317 #endif
02318 
02319 
02320 #ifndef YY_NO_SCAN_BYTES
02321 #ifdef YY_USE_PROTOS
02322 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
02323 #else
02324 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
02325 yyconst char *bytes;
02326 int len;
02327 #endif
02328     {
02329     YY_BUFFER_STATE b;
02330     char *buf;
02331     yy_size_t n;
02332     int i;
02333 
02334     /* Get memory for full buffer, including space for trailing EOB's. */
02335     n = len + 2;
02336     buf = (char *) yy_flex_alloc( n );
02337     if ( ! buf )
02338         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
02339 
02340     for ( i = 0; i < len; ++i )
02341         buf[i] = bytes[i];
02342 
02343     buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
02344 
02345     b = yy_scan_buffer( buf, n );
02346     if ( ! b )
02347         YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
02348 
02349     /* It's okay to grow etc. this buffer, and we should throw it
02350      * away when we're done.
02351      */
02352     b->yy_is_our_buffer = 1;
02353 
02354     return b;
02355     }
02356 #endif
02357 
02358 
02359 #ifndef YY_NO_PUSH_STATE
02360 #ifdef YY_USE_PROTOS
02361 static void yy_push_state( int new_state )
02362 #else
02363 static void yy_push_state( new_state )
02364 int new_state;
02365 #endif
02366     {
02367     if ( yy_start_stack_ptr >= yy_start_stack_depth )
02368         {
02369         yy_size_t new_size;
02370 
02371         yy_start_stack_depth += YY_START_STACK_INCR;
02372         new_size = yy_start_stack_depth * sizeof( int );
02373 
02374         if ( ! yy_start_stack )
02375             yy_start_stack = (int *) yy_flex_alloc( new_size );
02376 
02377         else
02378             yy_start_stack = (int *) yy_flex_realloc(
02379                     (void *) yy_start_stack, new_size );
02380 
02381         if ( ! yy_start_stack )
02382             YY_FATAL_ERROR(
02383             "out of memory expanding start-condition stack" );
02384         }
02385 
02386     yy_start_stack[yy_start_stack_ptr++] = YY_START;
02387 
02388     BEGIN(new_state);
02389     }
02390 #endif
02391 
02392 
02393 #ifndef YY_NO_POP_STATE
02394 static void yy_pop_state()
02395     {
02396     if ( --yy_start_stack_ptr < 0 )
02397         YY_FATAL_ERROR( "start-condition stack underflow" );
02398 
02399     BEGIN(yy_start_stack[yy_start_stack_ptr]);
02400     }
02401 #endif
02402 
02403 
02404 #ifndef YY_NO_TOP_STATE
02405 static int yy_top_state()
02406     {
02407     return yy_start_stack[yy_start_stack_ptr - 1];
02408     }
02409 #endif
02410 
02411 #ifndef YY_EXIT_FAILURE
02412 #define YY_EXIT_FAILURE 2
02413 #endif
02414 
02415 #ifdef YY_USE_PROTOS
02416 static void yy_fatal_error( yyconst char msg[] )
02417 #else
02418 static void yy_fatal_error( msg )
02419 char msg[];
02420 #endif
02421     {
02422     (void) fprintf( stderr, "%s\n", msg );
02423     exit( YY_EXIT_FAILURE );
02424     }
02425 
02426 
02427 
02428 /* Redefine yyless() so it works in section 3 code. */
02429 
02430 #undef yyless
02431 #define yyless(n) \
02432     do \
02433         { \
02434         /* Undo effects of setting up yytext. */ \
02435         yytext[yyleng] = yy_hold_char; \
02436         yy_c_buf_p = yytext + n; \
02437         yy_hold_char = *yy_c_buf_p; \
02438         *yy_c_buf_p = '\0'; \
02439         yyleng = n; \
02440         } \
02441     while ( 0 )
02442 
02443 
02444 /* Internal utility routines. */
02445 
02446 #ifndef yytext_ptr
02447 #ifdef YY_USE_PROTOS
02448 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
02449 #else
02450 static void yy_flex_strncpy( s1, s2, n )
02451 char *s1;
02452 yyconst char *s2;
02453 int n;
02454 #endif
02455     {
02456     register int i;
02457     for ( i = 0; i < n; ++i )
02458         s1[i] = s2[i];
02459     }
02460 #endif
02461 
02462 #ifdef YY_NEED_STRLEN
02463 #ifdef YY_USE_PROTOS
02464 static int yy_flex_strlen( yyconst char *s )
02465 #else
02466 static int yy_flex_strlen( s )
02467 yyconst char *s;
02468 #endif
02469     {
02470     register int n;
02471     for ( n = 0; s[n]; ++n )
02472         ;
02473 
02474     return n;
02475     }
02476 #endif
02477 
02478 
02479 #ifdef YY_USE_PROTOS
02480 static void *yy_flex_alloc( yy_size_t size )
02481 #else
02482 static void *yy_flex_alloc( size )
02483 yy_size_t size;
02484 #endif
02485     {
02486     return (void *) malloc( size );
02487     }
02488 
02489 #ifdef YY_USE_PROTOS
02490 static void *yy_flex_realloc( void *ptr, yy_size_t size )
02491 #else
02492 static void *yy_flex_realloc( ptr, size )
02493 void *ptr;
02494 yy_size_t size;
02495 #endif
02496     {
02497     /* The cast to (char *) in the following accommodates both
02498      * implementations that use char* generic pointers, and those
02499      * that use void* generic pointers.  It works with the latter
02500      * because both ANSI C and C++ allow castless assignment from
02501      * any pointer type to void*, and deal with argument conversions
02502      * as though doing an assignment.
02503      */
02504     return (void *) realloc( (char *) ptr, size );
02505     }
02506 
02507 #ifdef YY_USE_PROTOS
02508 static void yy_flex_free( void *ptr )
02509 #else
02510 static void yy_flex_free( ptr )
02511 void *ptr;
02512 #endif
02513     {
02514     free( ptr );
02515     }
02516 
02517 #if YY_MAIN
02518 int main()
02519     {
02520     yylex();
02521     return 0;
02522     }
02523 #endif
02524 #line 287 "scanner.ll"
02525 
02526 
02527 void dcopidlInitFlex( const char *_code )
02528 {
02529    comment_mode = 0;
02530    yy_switch_to_buffer( yy_scan_string( _code ) );
02531 }
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.0.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Oct 8 12:20:25 2003 by doxygen 1.2.18 written by Dimitri van Heesch, © 1997-2001