lib 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/koffice/lib/koscript/scanner.cc,v 1.21 2002/08/19 11:31:58 ariya 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 
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 #include <unistd.h>
00027 
00028 /* Use prototypes in function declarations. */
00029 #define YY_USE_PROTOS
00030 
00031 /* The "const" storage-class-modifier is valid. */
00032 #define YY_USE_CONST
00033 
00034 #else   /* ! __cplusplus */
00035 
00036 #if __STDC__
00037 
00038 #define YY_USE_PROTOS
00039 #define YY_USE_CONST
00040 
00041 #endif  /* __STDC__ */
00042 #endif  /* ! __cplusplus */
00043 
00044 #ifdef __TURBOC__
00045  #pragma warn -rch
00046  #pragma warn -use
00047 #include <io.h>
00048 #include <stdlib.h>
00049 #define YY_USE_CONST
00050 #define YY_USE_PROTOS
00051 #endif
00052 
00053 #ifdef YY_USE_CONST
00054 #define yyconst const
00055 #else
00056 #define yyconst
00057 #endif
00058 
00059 
00060 #ifdef YY_USE_PROTOS
00061 #define YY_PROTO(proto) proto
00062 #else
00063 #define YY_PROTO(proto) ()
00064 #endif
00065 
00066 /* Returned upon end-of-file. */
00067 #define YY_NULL 0
00068 
00069 /* Promotes a possibly negative, possibly signed char to an unsigned
00070  * integer for use as an array index.  If the signed char is negative,
00071  * we want to instead treat it as an 8-bit unsigned char, hence the
00072  * double cast.
00073  */
00074 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
00075 
00076 /* Enter a start condition.  This macro really ought to take a parameter,
00077  * but we do it the disgusting crufty way forced on us by the ()-less
00078  * definition of BEGIN.
00079  */
00080 #define BEGIN yy_start = 1 + 2 *
00081 
00082 /* Translate the current start state into a value that can be later handed
00083  * to BEGIN to return to the state.  The YYSTATE alias is for lex
00084  * compatibility.
00085  */
00086 #define YY_START ((yy_start - 1) / 2)
00087 #define YYSTATE YY_START
00088 
00089 /* Action number for EOF rule of a given start state. */
00090 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
00091 
00092 /* Special action meaning "start processing a new file". */
00093 #define YY_NEW_FILE yyrestart( yyin )
00094 
00095 #define YY_END_OF_BUFFER_CHAR 0
00096 
00097 /* Size of default input buffer. */
00098 #define YY_BUF_SIZE 16384
00099 
00100 typedef struct yy_buffer_state *YY_BUFFER_STATE;
00101 
00102 extern int yyleng;
00103 extern FILE *yyin, *yyout;
00104 
00105 #define EOB_ACT_CONTINUE_SCAN 0
00106 #define EOB_ACT_END_OF_FILE 1
00107 #define EOB_ACT_LAST_MATCH 2
00108 
00109 /* The funky do-while in the following #define is used to turn the definition
00110  * int a single C statement (which needs a semi-colon terminator).  This
00111  * avoids problems with code like:
00112  *
00113  *  if ( condition_holds )
00114  *      yyless( 5 );
00115  *  else
00116  *      do_something_else();
00117  *
00118  * Prior to using the do-while the compiler would get upset at the
00119  * "else" because it interpreted the "if" statement as being all
00120  * done when it reached the ';' after the yyless() call.
00121  */
00122 
00123 /* Return all but the first 'n' matched characters back to the input stream. */
00124 
00125 #define yyless(n) \
00126     do \
00127         { \
00128         /* Undo effects of setting up yytext. */ \
00129         *yy_cp = yy_hold_char; \
00130         YY_RESTORE_YY_MORE_OFFSET \
00131         yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
00132         YY_DO_BEFORE_ACTION; /* set up yytext again */ \
00133         } \
00134     while ( 0 )
00135 
00136 #define unput(c) yyunput( c, yytext_ptr )
00137 
00138 /* The following is because we cannot portably get our hands on size_t
00139  * (without autoconf's help, which isn't available because we want
00140  * flex-generated scanners to compile on their own).
00141  */
00142 typedef unsigned int yy_size_t;
00143 
00144 
00145 struct yy_buffer_state
00146     {
00147     FILE *yy_input_file;
00148 
00149     char *yy_ch_buf;        /* input buffer */
00150     char *yy_buf_pos;       /* current position in input buffer */
00151 
00152     /* Size of input buffer in bytes, not including room for EOB
00153      * characters.
00154      */
00155     yy_size_t yy_buf_size;
00156 
00157     /* Number of characters read into yy_ch_buf, not including EOB
00158      * characters.
00159      */
00160     int yy_n_chars;
00161 
00162     /* Whether we "own" the buffer - i.e., we know we created it,
00163      * and can realloc() it to grow it, and should free() it to
00164      * delete it.
00165      */
00166     int yy_is_our_buffer;
00167 
00168     /* Whether this is an "interactive" input source; if so, and
00169      * if we're using stdio for input, then we want to use getc()
00170      * instead of fread(), to make sure we stop fetching input after
00171      * each newline.
00172      */
00173     int yy_is_interactive;
00174 
00175     /* Whether we're considered to be at the beginning of a line.
00176      * If so, '^' rules will be active on the next match, otherwise
00177      * not.
00178      */
00179     int yy_at_bol;
00180 
00181     /* Whether to try to fill the input buffer when we reach the
00182      * end of it.
00183      */
00184     int yy_fill_buffer;
00185 
00186     int yy_buffer_status;
00187 #define YY_BUFFER_NEW 0
00188 #define YY_BUFFER_NORMAL 1
00189     /* When an EOF's been seen but there's still some text to process
00190      * then we mark the buffer as YY_EOF_PENDING, to indicate that we
00191      * shouldn't try reading from the input source any more.  We might
00192      * still have a bunch of tokens to match, though, because of
00193      * possible backing-up.
00194      *
00195      * When we actually see the EOF, we change the status to "new"
00196      * (via yyrestart()), so that the user can continue scanning by
00197      * just pointing yyin at a new input file.
00198      */
00199 #define YY_BUFFER_EOF_PENDING 2
00200     };
00201 
00202 static YY_BUFFER_STATE yy_current_buffer = 0;
00203 
00204 /* We provide macros for accessing buffer states in case in the
00205  * future we want to put the buffer states in a more general
00206  * "scanner state".
00207  */
00208 #define YY_CURRENT_BUFFER yy_current_buffer
00209 
00210 
00211 /* yy_hold_char holds the character lost when yytext is formed. */
00212 static char yy_hold_char;
00213 
00214 static int yy_n_chars;      /* number of characters read into yy_ch_buf */
00215 
00216 
00217 int yyleng;
00218 
00219 /* Points to current character in buffer. */
00220 static char *yy_c_buf_p = (char *) 0;
00221 static int yy_init = 1;     /* whether we need to initialize */
00222 static int yy_start = 0;    /* start state number */
00223 
00224 /* Flag which is used to allow yywrap()'s to do buffer switches
00225  * instead of setting up a fresh yyin.  A bit of a hack ...
00226  */
00227 static int yy_did_buffer_switch_on_eof;
00228 
00229 void yyrestart YY_PROTO(( FILE *input_file ));
00230 
00231 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
00232 void yy_load_buffer_state YY_PROTO(( void ));
00233 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
00234 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00235 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
00236 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
00237 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
00238 
00239 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
00240 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
00241 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
00242 
00243 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
00244 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
00245 static void yy_flex_free YY_PROTO(( void * ));
00246 
00247 #define yy_new_buffer yy_create_buffer
00248 
00249 #define yy_set_interactive(is_interactive) \
00250     { \
00251     if ( ! yy_current_buffer ) \
00252         yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00253     yy_current_buffer->yy_is_interactive = is_interactive; \
00254     }
00255 
00256 #define yy_set_bol(at_bol) \
00257     { \
00258     if ( ! yy_current_buffer ) \
00259         yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
00260     yy_current_buffer->yy_at_bol = at_bol; \
00261     }
00262 
00263 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
00264 
00265 
00266 #define YY_USES_REJECT
00267 
00268 #define yywrap() 1
00269 #define YY_SKIP_YYWRAP
00270 typedef unsigned char YY_CHAR;
00271 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
00272 typedef int yy_state_type;
00273 extern char *yytext;
00274 #define yytext_ptr yytext
00275 
00276 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
00277 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
00278 static int yy_get_next_buffer YY_PROTO(( void ));
00279 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
00280 
00281 /* Done after the current pattern has been matched and before the
00282  * corresponding action - sets up yytext.
00283  */
00284 #define YY_DO_BEFORE_ACTION \
00285     yytext_ptr = yy_bp; \
00286     yyleng = (int) (yy_cp - yy_bp); \
00287     yy_hold_char = *yy_cp; \
00288     *yy_cp = '\0'; \
00289     yy_c_buf_p = yy_cp;
00290 
00291 #define YY_NUM_RULES 103
00292 #define YY_END_OF_BUFFER 104
00293 static yyconst short int yy_acclist[550] =
00294     {   0,
00295       104,  102,  103,    1,  102,  103,    2,  103,   27,  102,
00296       103,  102,  103,    5,  102,  103,   51,  102,  103,   36,
00297       102,  103,   41,  102,  103,  102,  103,   18,  102,  103,
00298        19,  102,  103,   34,  102,  103,   32,  102,  103,   33,
00299       102,  103,   47,  102,  103,   35,  102,  103,   98,  102,
00300       103,  102,  103,   20,  102,  103,   45,  102,  103,   28,
00301       102,  103,   46,  102,  103,   84,  102,  103,   84,  102,
00302       103,   84,  102,  103,   16,  102,  103,   17,  102,  103,
00303        40,  102,  103,   84,  102,  103,   84,  102,  103,   84,
00304       102,  103,   84,  102,  103,   84,  102,  103,   84,  102,
00305 
00306       103,   84,  102,  103,   84,  102,  103,   84,  102,  103,
00307        84,  102,  103,   84,  102,  103,   84,  102,  103,   84,
00308       102,  103,   14,  102,  103,   39,  102,  103,   15,  102,
00309       103,   37,  102,  103,  102,  103,  102,  103,   47,  102,
00310       103,   98,  102,  103,   91,  102,  103,   23,  102,  103,
00311        21,  102,  103,   47,  102,  103,   98,  102,  103,   97,
00312       102,  103,   22,  102,  103,   53,  102,  103,    1,   53,
00313       102,  103,   27,   53,  102,  103,   53,  102,  103,    5,
00314        53,  102,  103,   51,   53,  102,  103,   36,   53,  102,
00315       103,   41,   53,  102,  103,   53,  102,  103,   18,   53,
00316 
00317       102,  103,   19,   53,  102,  103,   34,   53,  102,  103,
00318        32,   53,  102,  103,   33,   53,  102,  103,   47,   53,
00319       102,  103,   35,   53,  102,  103,   52,   53,   98,  102,
00320       103,   52,   53,  102,  103,   20,   53,  102,  103,   45,
00321        53,  102,  103,   28,   53,  102,  103,   46,   53,  102,
00322       103,   53,   84,  102,  103,   53,   84,  102,  103,   53,
00323        84,  102,  103,   16,   53,  102,  103,   17,   53,  102,
00324       103,   40,   53,  102,  103,   53,   84,  102,  103,   53,
00325        84,  102,  103,   53,   84,  102,  103,   53,   84,  102,
00326       103,   53,   84,  102,  103,   53,   84,  102,  103,   53,
00327 
00328        84,  102,  103,   53,   84,  102,  103,   53,   84,  102,
00329       103,   53,   84,  102,  103,   53,   84,  102,  103,   53,
00330        84,  102,  103,   53,   84,  102,  103,   14,   53,  102,
00331       103,   39,   53,  102,  103,   15,   53,  102,  103,   37,
00332        53,  102,  103,   53,  102,  103,   25,  101,    5,    4,
00333         5,   50,   42,   81,   48,   82,   49,    3,16392,   98,
00334        99,   83,   31,   43,   26,   29,   24,   44,   30,    9,
00335        84,   84,   84,   84,   84,   84,   84,   84,   67,   84,
00336        84,   84,   84,   84,   84,   69,   84,   84,   64,   84,
00337        84,   84,   84,   84,   84,   84,   84,   84,   84,   38,
00338 
00339        89,   89,   98,   91,   95,   98,   97,    4,    5,    9,
00340       100,16392,    3, 8200, 8200,    3,    3,   99,   84,   84,
00341        84,   84,   84,   84,   84,   84,   84,   68,   84,   84,
00342        84,   84,   84,   65,   84,   84,   84,   84,   84,   84,
00343        77,   84,   75,   84,   84,   13,  100,   88,   88,   87,
00344        88,   88,   94,   93,    7,   84,   56,   84,   61,   84,
00345        84,   84,   84,   70,   84,   63,   84,   84,   84,   80,
00346        84,   84,   84,   71,   84,   84,   84,   84,   84,   58,
00347        84,   84,   13,   90,   90,   88,   88,   87,   88,   88,
00348        96,   93,   10,   11,   55,   84,   78,   84,   54,   84,
00349 
00350        84,   57,   84,   84,   84,   76,   84,   79,   84,   84,
00351        84,   84,   66,   84,   88,   86,   88,   86,   85,   85,
00352        88,   85,   88,   96,   92,    6,   84,   84,   74,   84,
00353        73,   84,   59,   84,   60,   84,   88,   88,   92,   62,
00354        84,   72,   84,   86,   87,   86,   87,   12,   85
00355     } ;
00356 
00357 static yyconst short int yy_accept[367] =
00358     {   0,
00359         1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
00360         4,    7,    9,   12,   14,   17,   20,   23,   26,   28,
00361        31,   34,   37,   40,   43,   46,   49,   52,   54,   57,
00362        60,   63,   66,   69,   72,   75,   78,   81,   84,   87,
00363        90,   93,   96,   99,  102,  105,  108,  111,  114,  117,
00364       120,  123,  126,  129,  132,  135,  137,  139,  142,  145,
00365       148,  151,  154,  157,  160,  163,  166,  169,  173,  177,
00366       180,  184,  188,  192,  196,  199,  203,  207,  211,  215,
00367       219,  223,  227,  232,  236,  240,  244,  248,  252,  256,
00368       260,  264,  268,  272,  276,  280,  284,  288,  292,  296,
00369 
00370       300,  304,  308,  312,  316,  320,  324,  328,  332,  336,
00371       340,  344,  347,  348,  348,  349,  349,  350,  352,  352,
00372       353,  354,  354,  354,  355,  356,  357,  358,  358,  358,
00373       358,  360,  360,  361,  362,  363,  364,  365,  367,  368,
00374       368,  369,  370,  370,  372,  373,  374,  375,  376,  377,
00375       378,  379,  381,  382,  383,  384,  385,  386,  388,  389,
00376       391,  392,  393,  394,  395,  396,  397,  398,  399,  400,
00377       401,  401,  402,  403,  403,  403,  403,  404,  404,  404,
00378       404,  404,  404,  405,  406,  406,  407,  407,  407,  408,
00379       408,  408,  410,  411,  412,  412,  412,  412,  413,  415,
00380 
00381       416,  417,  418,  419,  419,  419,  419,  419,  420,  421,
00382       422,  423,  424,  425,  426,  427,  428,  430,  431,  432,
00383       433,  434,  436,  437,  438,  439,  440,  441,  443,  445,
00384       446,  448,  448,  448,  448,  448,  449,  450,  450,  451,
00385       451,  452,  453,  453,  454,  454,  455,  455,  455,  455,
00386       455,  455,  455,  455,  455,  456,  456,  456,  456,  456,
00387       457,  459,  461,  462,  463,  464,  466,  468,  469,  470,
00388       472,  473,  474,  476,  477,  478,  479,  480,  482,  483,
00389       484,  484,  485,  486,  486,  487,  487,  488,  488,  489,
00390       489,  490,  491,  491,  492,  492,  493,  493,  493,  493,
00391 
00392       493,  494,  494,  494,  494,  494,  495,  497,  499,  501,
00393       502,  504,  505,  506,  508,  510,  511,  512,  513,  515,
00394       515,  516,  516,  517,  518,  519,  520,  522,  524,  525,
00395       525,  526,  526,  526,  527,  527,  528,  529,  531,  533,
00396       535,  537,  537,  538,  538,  539,  539,  539,  540,  540,
00397       540,  542,  544,  544,  544,  546,  548,  548,  548,  549,
00398       549,  549,  549,  550,  550,  550
00399     } ;
00400 
00401 static yyconst int yy_ec[256] =
00402     {   0,
00403         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
00404         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00405         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00406         1,    4,    5,    6,    7,    8,    9,   10,   11,   12,
00407        13,   14,   15,   16,   17,   18,   19,   20,   21,   21,
00408        21,   21,   21,   21,   21,   22,   22,   23,   24,   25,
00409        26,   27,   28,    1,   29,   30,   30,   30,   31,   32,
00410        33,   33,   33,   33,   33,   34,   33,   33,   33,   33,
00411        33,   35,   36,   37,   38,   33,   33,   39,   33,   33,
00412        40,   41,   42,   43,   44,    1,   45,   46,   47,   48,
00413 
00414        49,   50,   33,   51,   52,   33,   33,   53,   54,   55,
00415        56,   57,   33,   58,   59,   60,   61,   62,   63,   64,
00416        65,   33,   66,   67,   68,   69,    1,   70,   70,   70,
00417        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00418        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00419        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00420        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00421        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00422        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00423        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00424 
00425        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00426        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00427        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00428        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00429        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
00430        70,   70,   70,   70,   70
00431     } ;
00432 
00433 static yyconst int yy_meta[71] =
00434     {   0,
00435         1,    2,    3,    4,    1,    5,    1,    6,    1,    1,
00436         7,    8,    1,    1,    1,    1,    1,    9,    1,   10,
00437        10,   11,    1,    1,    1,    1,    1,    5,   12,   12,
00438        12,   12,   13,   13,   13,   13,   13,   13,   14,    1,
00439         5,    1,    1,   15,   16,   16,   12,   12,   12,   16,
00440        13,   13,   13,   13,   14,   13,   13,   14,   13,   14,
00441        14,   14,   13,   14,   13,    1,    1,    1,    1,   17
00442     } ;
00443 
00444 static yyconst short int yy_base[388] =
00445     {   0,
00446         0,    0,   60,   72,   79,   86,  110,    0,  877, 1660,
00447      1660, 1660,  843,   68,  853,  789, 1660,  816,  745, 1660,
00448      1660, 1660,   60,   72,  773,  162,  178,  767,  747,  158,
00449       160,   46,  184,  189,   50, 1660, 1660, 1660,  183,  167,
00450       165,  160,  179,  190,  171,  161,  198,  197,  162,  196,
00451       201, 1660,  701, 1660, 1660,  260,  228,  327,  334,  341,
00452      1660, 1660,  347,  360,  321, 1660, 1660, 1660,  741,  230,
00453       754,  713, 1660,  717,  672, 1660, 1660, 1660,  236,  229,
00454       706,  215,  354,  700,  671,  307,  169,  205,  656,    0,
00455       311, 1660, 1660, 1660,  335,  341,  350,  348,  355,  360,
00456 
00457       342,  359,  363,  365,  308,  378,  366, 1660,  582, 1660,
00458      1660,  643, 1660,  390, 1660,  401,    0,    0,  416, 1660,
00459      1660,  634,  406, 1660, 1660, 1660, 1660,  620,  331,  400,
00460       470,    0,  428,  537, 1660, 1660, 1660, 1660, 1660,  541,
00461      1660, 1660,  422,  557,  234,  545,  424,  425,  542,  541,
00462       543,  430,  547,  559,  560,  568,  569,  576,  585,  587,
00463       589,  590,  594,  599,  602,  603,  604,  605,  606, 1660,
00464       592,  617,  652,  430,  435,  657,  612,  647,  676,  667,
00465       446,  695,  586,  698,  701,  631,  687,  720,  723,  728,
00466         0,    0,  533, 1660,  601,    0,  543,  540,  787, 1660,
00467 
00468         0,    0,    0,  625,  420,  524,  456,  725,  707,  704,
00469       635,  726,  727,  734,  745,  776,  802,  755,  803,  685,
00470       811,  625,  812,  813,  814,  816,  815,  747,  753,  817,
00471      1660,  451,  758,  863,  868,  803,  877,  744,  882,  889,
00472       816,  896,  908,  915,  828,  927,  901,  959,  885,  435,
00473       408,  930,  400,  428, 1660,  399,  634,  336,  933,  928,
00474       834,  886,  934,  938,  953,  939,  955,  964,  957,  965,
00475       966,  967,  968,  970,  972,  982,  987, 1007, 1010, 1660,
00476       840, 1000, 1021, 1027, 1024, 1036, 1056, 1064, 1042, 1070,
00477      1073, 1078, 1045, 1092, 1103, 1050,  873,  977,  247, 1081,
00478 
00479      1108,  915, 1009,  102, 1095, 1112, 1106, 1114, 1116, 1121,
00480      1131, 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1141, 1151,
00481      1155, 1127, 1131, 1167, 1190, 1187, 1197, 1216, 1163, 1202,
00482      1221,   83, 1069, 1660,   84, 1173, 1152, 1191, 1200, 1222,
00483      1225, 1228, 1235, 1247, 1254, 1266, 1257, 1269,   69, 1272,
00484      1234, 1267, 1277, 1280, 1284, 1303, 1289, 1292, 1295, 1298,
00485      1306, 1317, 1318, 1322, 1660, 1367, 1384, 1390, 1406, 1420,
00486      1437, 1451, 1465, 1478, 1494, 1507, 1517, 1525, 1532, 1543,
00487      1559, 1576, 1588, 1598, 1614, 1631, 1643
00488     } ;
00489 
00490 static yyconst short int yy_def[388] =
00491     {   0,
00492       365,    1,    1,    1,    1,    1,  365,    7,  365,  365,
00493       365,  365,  365,  366,  367,  368,  365,  365,  369,  365,
00494       365,  365,  365,  365,  370,  371,  370,  370,  365,  365,
00495       365,  365,  372,  372,   34,  365,  365,  365,  373,   34,
00496        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
00497        34,  365,  365,  365,  365,  365,  365,  370,  370,  370,
00498       365,  365,  370,   59,   64,  365,  365,  365,  365,  366,
00499       367,  368,  365,  365,  369,  365,  365,  365,  365,  365,
00500       370,  371,  370,  370,  365,  365,  365,  365,   34,   34,
00501        34,  365,  365,  365,  373,   34,   34,   34,   34,   34,
00502 
00503        34,   34,   34,   34,   34,   34,   34,  365,  365,  365,
00504       365,  370,  365,  366,  365,  374,  367,  375,  368,  365,
00505       365,  365,  376,  365,  365,  365,  365,  370,  370,  371,
00506       365,  371,  370,  370,  365,  365,  365,  365,  365,  365,
00507       365,  365,  365,  373,   34,  373,   34,   34,   34,   34,
00508        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
00509        34,   34,   34,   34,   34,   34,   34,   34,   34,  365,
00510       377,  365,  370,  370,  365,  370,   59,   59,  370,  370,
00511       365,  370,   60,  370,  370,   64,   64,  370,   64,  366,
00512       378,  375,  365,  365,  365,  379,  380,  381,  131,  365,
00513 
00514       131,  199,  134,  365,  382,  365,  383,   34,   34,   34,
00515        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
00516        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
00517       365,  377,  365,  370,  370,  365,  370,  365,  370,  370,
00518       365,  370,  370,  370,  365,  370,  366,  366,  365,  384,
00519       380,  380,  381,  382,  365,  382,  385,  383,  383,   34,
00520        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
00521        34,   34,   34,   34,   34,   34,   34,   34,   34,  365,
00522       365,  365,  370,  370,  365,  365,  370,  370,  365,  370,
00523       365,  370,  365,  370,  370,  365,  366,  366,  365,  365,
00524 
00525       365,  385,  386,  385,  365,  365,   34,   34,   34,   34,
00526        34,   34,   34,   34,   34,   34,   34,   34,   34,  370,
00527       365,  365,  365,   59,  370,   60,  365,   60,  365,  365,
00528       370,  387,  386,  365,  386,   34,   34,   34,   34,   34,
00529        34,  365,  365,  365,  370,  370,  365,  365,  387,  387,
00530        34,   34,  365,  365,  365,  370,  365,  365,  365,  365,
00531       365,  365,  365,  365,    0,  365,  365,  365,  365,  365,
00532       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00533       365,  365,  365,  365,  365,  365,  365
00534     } ;
00535 
00536 static yyconst short int yy_nxt[1731] =
00537     {   0,
00538        10,   11,   12,   11,   13,   14,   15,   16,   17,   18,
00539        19,   20,   21,   22,   23,   10,   24,   25,   26,   27,
00540        28,   28,   29,   10,   30,   31,   32,   10,   33,   33,
00541        33,   34,   33,   33,   33,   33,   35,   33,   33,   36,
00542        10,   37,   38,   39,   33,   33,   40,   41,   42,   43,
00543        33,   44,   33,   45,   33,   46,   33,   47,   48,   49,
00544        33,   50,   51,   33,   33,   52,   53,   54,   55,   28,
00545        56,  141,  142,  115,  124,   57,  365,   58,  145,   59,
00546        60,   60,   56,   61,  148,  125,  365,   57,  126,   58,
00547       349,   59,   60,   60,   62,   61,   63,  127,   64,   65,
00548 
00549        65,   62,   66,   63,  365,   64,   65,   65,  116,   66,
00550        67,   68,   12,   68,   69,   70,   71,   72,   73,   74,
00551        75,   76,   77,   78,   79,   67,   80,   81,   82,   83,
00552        84,   84,   85,   67,   86,   87,   88,   67,   89,   89,
00553        89,   90,   89,   89,   89,   89,   91,   89,   89,   92,
00554        67,   93,   94,   95,   89,   89,   96,   97,   98,   99,
00555        89,  100,   89,  101,   89,  102,   89,  103,  104,  105,
00556        89,  106,  107,   89,   89,  108,  109,  110,  111,  112,
00557       131,  128,  136,  137,  138,  139,  128,  128,  145,  145,
00558       145,  143,  128,  145,  139,  145,  143,  133,  133,  145,
00559 
00560       129,  129,  132,  144,  144,  144,  129,  145,  144,  144,
00561       144,  149,  153,  151,  154,  161,  134,  147,  145,  167,
00562       152,  162,  150,  155,  145,  145,  145,  146,  140,  145,
00563       141,  142,  146,  131,  156,  115,  157,  140,  197,  158,
00564       168,  134,  163,  159,  160,  126,  164,  172,  172,  172,
00565       124,  169,  129,  129,  127,  132,  165,  194,  129,  166,
00566       122,  125,  145,  122,  122,  122,  122,  122,  122,  122,
00567       116,  122,  122,  122,  122,  122,  122,  122,  122,  122,
00568       122,  122,  122,  122,  122,  122,  122,  122,  171,  171,
00569       171,  171,  171,  171,  171,  171,  171,  171,  171,  122,
00570 
00571       123,  122,  122,  122,  171,  171,  171,  171,  171,  171,
00572       171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
00573       171,  171,  171,  171,  171,  122,  122,  122,  122,  171,
00574       128,  136,  137,  138,  128,  197,  145,  174,  128,  145,
00575       189,  189,  189,  365,  180,  148,  173,  173,  173,  175,
00576       128,  176,  129,  177,  177,  178,  181,  128,  182,  129,
00577       183,  183,  183,  128,  179,  167,  184,  184,  184,  145,
00578       145,  179,  134,  133,  133,  365,  145,  185,  145,  186,
00579       186,  187,  179,  145,  129,  149,  161,  145,  145,  179,
00580       188,  145,  134,  145,  145,  115,  150,  134,  151,  155,
00581 
00582       153,  365,  154,  253,  129,  152,  145,  163,  188,  158,
00583       156,  164,  157,  159,  160,  365,  169,  134,  198,  162,
00584       190,  190,  168,  143,  165,  195,  195,  166,  197,  197,
00585       116,  128,  197,  128,  197,  193,  193,  193,  255,  191,
00586       132,  193,  193,  193,  196,  194,  255,  133,  133,  235,
00587       235,  235,  145,  145,  236,  236,  236,  208,  145,  365,
00588       256,  280,  209,  258,  191,  241,  241,  241,  256,  196,
00589       199,  199,  200,  201,  199,  199,  199,  199,  199,  199,
00590       199,  202,  199,  199,  199,  199,  199,  202,  199,  202,
00591       202,  202,  199,  199,  199,  199,  199,  199,  202,  202,
00592 
00593       202,  202,  202,  202,  202,  202,  202,  202,  202,  199,
00594       199,  199,  199,  202,  202,  202,  202,  202,  202,  202,
00595       202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
00596       202,  202,  202,  202,  202,  199,  199,  199,  199,  199,
00597       128,  197,  257,  253,  204,  197,  197,  197,  128,  197,
00598       251,  197,  193,  193,  193,  207,  203,  203,  203,  205,
00599       128,  197,  129,  197,  197,  203,  203,  203,  203,  145,
00600       145,  145,  197,  197,  129,  145,  144,  144,  144,  207,
00601       197,  203,  203,  203,  203,  203,  203,  145,  145,  197,
00602       197,  197,  213,  197,  197,  212,  145,  145,  197,  206,
00603 
00604       210,  211,  231,  197,  145,  214,  197,  197,  197,  197,
00605       197,  194,  216,  145,  129,  145,  197,  145,  145,  215,
00606       249,  249,  145,  128,  218,  217,  129,  145,  204,  197,
00607       145,  145,  145,  145,  145,  197,  172,  172,  172,  197,
00608       221,  219,  220,  205,  194,  223,  128,  233,  170,  222,
00609       129,  197,  303,  145,  226,  128,  197,  230,  224,  225,
00610       128,  197,  229,  145,  227,  233,  178,  178,  228,  129,
00611       128,  173,  173,  173,  304,  129,  237,  237,  237,  128,
00612       197,  263,  234,  206,  145,  129,  240,  240,  240,  197,
00613       238,  197,  238,  135,  129,  239,  239,  239,  128,  197,
00614 
00615       234,  128,  197,  128,  128,  197,  187,  187,  197,  128,
00616       129,  197,  123,  145,  242,  242,  242,  184,  184,  184,
00617       244,  244,  244,  128,  197,  129,  121,  197,  243,  197,
00618       197,  197,  145,  115,  245,  145,  245,  261,  197,  246,
00619       246,  246,  189,  189,  189,  272,  243,  247,  247,  197,
00620       129,  197,  262,  145,  145,  145,  120,  197,  118,  197,
00621       260,  129,  145,  289,  289,  289,  113,  170,  116,  135,
00622       128,  265,  281,  145,  281,  145,  128,  282,  282,  282,
00623       197,  145,  266,  145,  264,  123,  129,  202,  202,  365,
00624       202,  202,  202,  202,  202,  202,  202,  202,  267,  202,
00625 
00626       202,  202,  202,  202,  145,  202,  197,  197,  270,  202,
00627       202,  202,  202,  202,  202,  197,  197,  197,  197,  197,
00628       197,  197,  285,  285,  285,  121,  202,  202,  202,  202,
00629       145,  145,  120,  286,  268,  291,  291,  291,  197,  145,
00630       145,  145,  145,  145,  145,  145,  286,  296,  296,  296,
00631       269,  286,  202,  202,  202,  202,  202,  118,  271,  282,
00632       282,  282,  145,  278,  286,  273,  128,  197,  113,  279,
00633       274,  128,  197,  275,  276,  277,  365,  281,  115,  281,
00634       128,  197,  283,  283,  283,  128,  197,  284,  284,  284,
00635       197,  365,  128,  197,  365,  194,  287,  287,  287,  128,
00636 
00637       197,  239,  239,  239,  122,  122,  115,  288,  290,  290,
00638       290,  128,  197,  116,  145,  292,  292,  292,  128,  197,
00639       297,  297,  293,  365,  293,  288,  288,  294,  294,  294,
00640       128,  197,  197,  303,  244,  244,  244,  300,  197,  365,
00641       305,  116,  197,  197,  288,  295,  246,  246,  246,  301,
00642       301,  301,  306,  306,  306,  304,  145,  197,  307,  197,
00643       365,  197,  145,  295,  115,  365,  145,  145,  197,  197,
00644       197,  197,  197,  365,  197,  365,  197,  365,  298,  298,
00645       298,  145,  115,  145,  308,  145,  197,  298,  298,  298,
00646       298,  197,  145,  145,  145,  145,  145,  309,  145,  116,
00647 
00648       145,  312,  365,  298,  298,  298,  298,  298,  298,  365,
00649       145,  197,  311,  310,  197,  145,  365,  116,  315,  282,
00650       282,  282,  365,  313,  128,  197,  314,  334,  317,  316,
00651       128,  197,  365,  318,  365,  145,  365,  365,  145,  365,
00652       283,  283,  283,  321,  321,  321,  320,  320,  320,  335,
00653       322,  365,  322,  365,  286,  323,  323,  323,  319,  128,
00654       197,  289,  289,  289,  329,  329,  329,  128,  197,  296,
00655       296,  296,  286,  128,  197,  324,  324,  324,  322,  365,
00656       322,  128,  197,  325,  325,  325,  288,  334,  365,  326,
00657       326,  326,  327,  327,  327,  128,  197,  328,  328,  328,
00658 
00659       301,  301,  301,  286,  288,  365,  128,  197,  288,  335,
00660       197,  294,  294,  294,  306,  306,  306,  330,  197,  330,
00661       197,  286,  331,  331,  331,  197,  288,  301,  301,  301,
00662       332,  306,  306,  306,  145,  197,  197,  197,  197,  197,
00663       197,  197,  145,  197,  145,  197,  323,  323,  323,  145,
00664       323,  323,  323,  365,  174,  197,  197,  365,  342,  145,
00665       145,  145,  145,  145,  145,  145,  175,  145,  176,  145,
00666       175,  197,  175,  336,  343,  343,  343,  197,  337,  365,
00667       145,  179,  329,  329,  329,  344,  345,  345,  345,  341,
00668       339,  197,  338,  128,  197,  197,  340,  346,  365,  179,
00669 
00670       347,  145,  352,  344,  197,  129,  129,  129,  129,  325,
00671       325,  325,  181,  365,  181,  346,  343,  343,  343,  145,
00672       197,  348,  348,  348,  128,  197,  197,  344,  145,  197,
00673       129,  365,  351,  365,  365,  345,  345,  345,  197,  365,
00674       331,  331,  331,  365,  365,  344,  346,  353,  353,  353,
00675       145,  365,  365,  145,  343,  343,  343,  128,  197,  365,
00676       365,  354,  145,  354,  346,  286,  355,  355,  355,  128,
00677       197,  197,  365,  345,  345,  345,  357,  357,  357,  358,
00678       354,  365,  354,  286,  288,  356,  356,  356,  348,  348,
00679       348,  359,  359,  359,  365,  145,  360,  360,  360,  355,
00680 
00681       355,  355,  288,  355,  355,  355,  128,  197,  361,  361,
00682       361,  359,  359,  359,  359,  359,  359,  362,  362,  362,
00683       342,  347,  356,  356,  356,  363,  363,  363,  365,  365,
00684       365,  365,  175,  181,  175,  181,  238,  365,  238,  365,
00685       365,  289,  289,  289,  365,  365,  365,  364,  364,  365,
00686       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00687       365,  365,  365,  365,  365,  364,  364,  114,  365,  365,
00688       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
00689       114,  114,  114,  114,  117,  117,  365,  117,  117,  117,
00690       117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
00691 
00692       117,  119,  119,  119,  119,  119,  122,  365,  365,  122,
00693       122,  122,  365,  122,  122,  122,  122,  122,  122,  122,
00694       122,  122,  122,  129,  365,  365,  365,  365,  129,  129,
00695       129,  129,  129,  129,  129,  129,  129,  130,  130,  365,
00696       130,  130,  130,  130,  130,  130,  130,  130,  130,  130,
00697       130,  130,  130,  130,  145,  365,  145,  365,  365,  145,
00698       145,  145,  145,  145,  145,  145,  145,  145,  146,  365,
00699       365,  365,  365,  146,  146,  146,  146,  146,  146,  146,
00700       146,  146,  114,  365,  114,  365,  365,  114,  365,  365,
00701       365,  114,  365,  114,  192,  192,  365,  192,  192,  192,
00702 
00703       192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
00704       192,  122,  365,  122,  365,  365,  122,  365,  365,  365,
00705       122,  365,  122,  232,  365,  365,  365,  365,  232,  232,
00706       232,  365,  232,  232,  248,  248,  248,  365,  365,  365,
00707       248,  250,  250,  250,  365,  365,  365,  250,  252,  365,
00708       365,  365,  365,  365,  252,  252,  252,  365,  252,  200,
00709       200,  200,  200,  200,  200,  200,  365,  365,  365,  365,
00710       365,  365,  365,  365,  365,  200,  254,  254,  254,  254,
00711       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
00712       254,  254,  254,  259,  365,  365,  365,  365,  365,  259,
00713 
00714       259,  259,  365,  259,  299,  365,  365,  299,  299,  299,
00715       365,  365,  365,  299,  302,  302,  302,  302,  302,  302,
00716       302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
00717       302,  333,  333,  333,  333,  333,  333,  333,  333,  333,
00718       333,  333,  333,  333,  333,  333,  333,  333,  350,  365,
00719       365,  365,  365,  365,  350,  350,  350,  365,  350,    9,
00720       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00721       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00722       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00723       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00724 
00725       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00726       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00727       365,  365,  365,  365,  365,  365,  365,  365,  365,  365
00728     } ;
00729 
00730 static yyconst short int yy_chk[1731] =
00731     {   0,
00732         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00733         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00734         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00735         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00736         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00737         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00738         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
00739         3,   32,   32,   14,   23,    3,  349,    3,   35,    3,
00740         3,    3,    4,    3,   35,   23,  335,    4,   24,    4,
00741       332,    4,    4,    4,    5,    4,    5,   24,    5,    5,
00742 
00743         5,    6,    5,    6,  304,    6,    6,    6,   14,    6,
00744         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00745         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00746         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00747         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00748         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00749         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00750         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
00751        26,   27,   30,   30,   30,   31,   39,   33,   42,   46,
00752        49,   33,   34,   41,   87,   40,   34,   27,   27,   45,
00753 
00754        39,   33,   26,   33,   33,   33,   34,   43,   34,   34,
00755        34,   40,   42,   41,   42,   45,   27,   34,   44,   49,
00756        41,   46,   40,   43,   50,   48,   47,   33,   31,   51,
00757        88,   88,   34,   82,   43,   70,   43,   87,  145,   44,
00758        50,   27,   47,   44,   44,   80,   47,   57,   57,   57,
00759        79,   51,   39,   33,   80,   82,   48,  299,   34,   48,
00760        56,   79,  145,   56,   56,   56,   56,   56,   56,   56,
00761        70,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00762        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00763        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00764 
00765        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00766        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00767        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
00768        58,   86,   86,   86,  129,  129,  105,   59,   95,   91,
00769        65,   65,   65,  258,   60,   91,   58,   58,   58,   59,
00770        63,   59,   95,   59,   59,   59,   60,   83,   60,   65,
00771        60,   60,   60,   64,   59,  105,   63,   63,   63,   96,
00772       101,   60,   59,   83,   83,   64,   98,   64,   97,   64,
00773        64,   64,   59,   99,   65,   96,  101,  102,  100,   60,
00774        64,  103,   83,  104,  107,  114,   96,   59,   97,   99,
00775 
00776        98,  256,   98,  253,   95,   97,  106,  103,   64,  100,
00777        99,  103,   99,  100,  100,  251,  107,   83,  130,  102,
00778       116,  116,  106,  119,  104,  123,  123,  104,  147,  148,
00779       114,  133,  133,  174,  152,  119,  119,  119,  205,  116,
00780       130,  143,  143,  143,  123,  250,  254,  133,  133,  174,
00781       174,  174,  147,  148,  175,  175,  175,  147,  152,  119,
00782       205,  232,  148,  207,  116,  181,  181,  181,  254,  123,
00783       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00784       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00785       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00786 
00787       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00788       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00789       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00790       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
00791       134,  134,  206,  198,  140,  150,  149,  151,  146,  146,
00792       197,  153,  193,  193,  193,  193,  134,  134,  134,  140,
00793       144,  144,  146,  154,  155,  134,  134,  134,  134,  150,
00794       149,  151,  156,  157,  144,  153,  144,  144,  144,  144,
00795       158,  134,  134,  134,  134,  134,  134,  154,  155,  159,
00796       183,  160,  151,  161,  162,  150,  156,  157,  163,  140,
00797 
00798       149,  149,  171,  164,  158,  153,  165,  166,  167,  168,
00799       169,  195,  155,  159,  146,  160,  177,  161,  162,  154,
00800       195,  195,  163,  128,  157,  156,  144,  164,  204,  222,
00801       165,  166,  167,  168,  169,  186,  172,  172,  172,  211,
00802       161,  159,  160,  204,  122,  163,  112,  172,  109,  162,
00803       177,  178,  257,  222,  166,  173,  173,  169,  164,  165,
00804       176,  176,  168,  211,  167,  172,  178,  178,  167,  186,
00805       180,  173,  173,  173,  257,  177,  176,  176,  176,  179,
00806       179,  211,  173,  204,   89,  178,  180,  180,  180,  220,
00807       179,  187,  179,   85,  186,  179,  179,  179,  182,  182,
00808 
00809       173,  184,  184,   84,  185,  185,  187,  187,  210,   81,
00810       178,  209,   75,  220,  182,  182,  182,  184,  184,  184,
00811       185,  185,  185,  188,  188,  187,   74,  189,  184,  208,
00812       212,  213,  210,  190,  188,  209,  188,  209,  214,  188,
00813       188,  188,  189,  189,  189,  220,  184,  190,  190,  215,
00814       187,  228,  210,  208,  212,  213,   72,  229,   71,  218,
00815       208,  189,  214,  238,  238,  238,   69,   53,  190,   29,
00816        28,  213,  233,  215,  233,  228,   25,  233,  233,  233,
00817       216,  229,  214,  218,  212,   19,  189,  199,  199,  199,
00818       199,  199,  199,  199,  199,  199,  199,  199,  215,  199,
00819 
00820       199,  199,  199,  199,  216,  199,  217,  219,  218,  199,
00821       199,  199,  199,  199,  199,  221,  223,  224,  225,  227,
00822       226,  230,  236,  236,  236,   18,  199,  199,  199,  199,
00823       217,  219,   16,  236,  216,  241,  241,  241,  261,  221,
00824       223,  224,  225,  227,  226,  230,  241,  245,  245,  245,
00825       217,  236,  199,  199,  199,  199,  199,   15,  219,  281,
00826       281,  281,  261,  227,  241,  221,  234,  234,   13,  230,
00827       223,  235,  235,  224,  225,  226,    9,  234,  297,  234,
00828       237,  237,  234,  234,  234,  239,  239,  235,  235,  235,
00829       262,    0,  240,  240,    0,  249,  237,  237,  237,  242,
00830 
00831       242,  239,  239,  239,  249,  249,  247,  237,  240,  240,
00832       240,  243,  243,  297,  262,  242,  242,  242,  244,  244,
00833       247,  247,  243,    0,  243,  237,  242,  243,  243,  243,
00834       246,  246,  260,  302,  244,  244,  244,  252,  263,    0,
00835       259,  247,  264,  266,  242,  244,  246,  246,  246,  252,
00836       252,  252,  259,  259,  259,  302,  260,  265,  260,  267,
00837         0,  269,  263,  244,  248,    0,  264,  266,  268,  270,
00838       271,  272,  273,    0,  274,    0,  275,    0,  248,  248,
00839       248,  265,  298,  267,  263,  269,  276,  248,  248,  248,
00840       248,  277,  268,  270,  271,  272,  273,  264,  274,  248,
00841 
00842       275,  269,    0,  248,  248,  248,  248,  248,  248,    0,
00843       276,  278,  268,  265,  279,  277,    0,  298,  274,  282,
00844       282,  282,    0,  271,  283,  283,  272,  303,  276,  275,
00845       284,  284,    0,  277,    0,  278,    0,    0,  279,    0,
00846       283,  283,  283,  285,  285,  285,  284,  284,  284,  303,
00847       286,    0,  286,    0,  285,  286,  286,  286,  279,  287,
00848       287,  289,  289,  289,  293,  293,  293,  288,  288,  296,
00849       296,  296,  285,  290,  290,  287,  287,  287,  288,    0,
00850       288,  292,  292,  288,  288,  288,  287,  333,    0,  290,
00851       290,  290,  291,  291,  291,  294,  294,  292,  292,  292,
00852 
00853       300,  300,  300,  291,  287,    0,  295,  295,  292,  333,
00854       307,  294,  294,  294,  305,  305,  305,  295,  308,  295,
00855       309,  291,  295,  295,  295,  310,  292,  301,  301,  301,
00856       301,  306,  306,  306,  307,  311,  312,  313,  314,  315,
00857       316,  317,  308,  318,  309,  319,  322,  322,  322,  310,
00858       323,  323,  323,    0,  320,  320,  337,    0,  321,  311,
00859       312,  313,  314,  315,  316,  317,  320,  318,  320,  319,
00860       321,  324,  321,  310,  321,  321,  321,  336,  312,    0,
00861       337,  320,  329,  329,  329,  321,  324,  324,  324,  318,
00862       316,  326,  313,  325,  325,  338,  317,  324,    0,  320,
00863 
00864       327,  336,  337,  321,  339,  324,  326,  326,  326,  325,
00865       325,  325,  327,    0,  327,  324,  327,  327,  327,  338,
00866       328,  330,  330,  330,  331,  331,  340,  327,  339,  341,
00867       324,    0,  336,    0,    0,  328,  328,  328,  351,    0,
00868       331,  331,  331,    0,    0,  327,  328,  342,  342,  342,
00869       340,    0,    0,  341,  343,  343,  343,  345,  345,    0,
00870         0,  344,  351,  344,  328,  343,  344,  344,  344,  346,
00871       346,  352,    0,  345,  345,  345,  347,  347,  347,  350,
00872       346,    0,  346,  343,  345,  346,  346,  346,  348,  348,
00873       348,  350,  350,  350,    0,  352,  353,  353,  353,  354,
00874 
00875       354,  354,  345,  355,  355,  355,  356,  356,  357,  357,
00876       357,  358,  358,  358,  359,  359,  359,  360,  360,  360,
00877       362,  363,  356,  356,  356,  361,  361,  361,    0,    0,
00878         0,    0,  362,  363,  362,  363,  364,    0,  364,    0,
00879         0,  364,  364,  364,    0,    0,    0,  362,  363,    0,
00880         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
00881         0,    0,    0,    0,    0,  362,  363,  366,    0,    0,
00882       366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
00883       366,  366,  366,  366,  367,  367,    0,  367,  367,  367,
00884       367,  367,  367,  367,  367,  367,  367,  367,  367,  367,
00885 
00886       367,  368,  368,  368,  368,  368,  369,    0,    0,  369,
00887       369,  369,    0,  369,  369,  369,  369,  369,  369,  369,
00888       369,  369,  369,  370,    0,    0,    0,    0,  370,  370,
00889       370,  370,  370,  370,  370,  370,  370,  371,  371,    0,
00890       371,  371,  371,  371,  371,  371,  371,  371,  371,  371,
00891       371,  371,  371,  371,  372,    0,  372,    0,    0,  372,
00892       372,  372,  372,  372,  372,  372,  372,  372,  373,    0,
00893         0,    0,    0,  373,  373,  373,  373,  373,  373,  373,
00894       373,  373,  374,    0,  374,    0,    0,  374,    0,    0,
00895         0,  374,    0,  374,  375,  375,    0,  375,  375,  375,
00896 
00897       375,  375,  375,  375,  375,  375,  375,  375,  375,  375,
00898       375,  376,    0,  376,    0,    0,  376,    0,    0,    0,
00899       376,    0,  376,  377,    0,    0,    0,    0,  377,  377,
00900       377,    0,  377,  377,  378,  378,  378,    0,    0,    0,
00901       378,  379,  379,  379,    0,    0,    0,  379,  380,    0,
00902         0,    0,    0,    0,  380,  380,  380,    0,  380,  381,
00903       381,  381,  381,  381,  381,  381,    0,    0,    0,    0,
00904         0,    0,    0,    0,    0,  381,  382,  382,  382,  382,
00905       382,  382,  382,  382,  382,  382,  382,  382,  382,  382,
00906       382,  382,  382,  383,    0,    0,    0,    0,    0,  383,
00907 
00908       383,  383,    0,  383,  384,    0,    0,  384,  384,  384,
00909         0,    0,    0,  384,  385,  385,  385,  385,  385,  385,
00910       385,  385,  385,  385,  385,  385,  385,  385,  385,  385,
00911       385,  386,  386,  386,  386,  386,  386,  386,  386,  386,
00912       386,  386,  386,  386,  386,  386,  386,  386,  387,    0,
00913         0,    0,    0,    0,  387,  387,  387,    0,  387,  365,
00914       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00915       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00916       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00917       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00918 
00919       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00920       365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
00921       365,  365,  365,  365,  365,  365,  365,  365,  365,  365
00922     } ;
00923 
00924 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
00925 static char *yy_full_match;
00926 static int yy_lp;
00927 static int yy_looking_for_trail_begin = 0;
00928 static int yy_full_lp;
00929 static int *yy_full_state;
00930 #define YY_TRAILING_MASK 0x2000
00931 #define YY_TRAILING_HEAD_MASK 0x4000
00932 #define REJECT \
00933 { \
00934 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
00935 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
00936 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
00937 yy_state_ptr = yy_full_state; /* restore orig. state */ \
00938 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
00939 ++yy_lp; \
00940 goto find_rule; \
00941 }
00942 #define yymore() yymore_used_but_not_detected
00943 #define YY_MORE_ADJ 0
00944 #define YY_RESTORE_YY_MORE_OFFSET
00945 char *yytext;
00946 #line 1 "scanner.ll"
00947 #define INITIAL 0
00948 /* This file is part of the KDE project
00949    Copyright (C) 1998, 1999, 2000 Torben Weis <weis@kde.org>
00950 
00951    This library is free software; you can redistribute it and/or
00952    modify it under the terms of the GNU Library General Public
00953    License as published by the Free Software Foundation; either
00954    version 2 of the License, or (at your option) any later version.
00955 
00956    This library is distributed in the hope that it will be useful,
00957    but WITHOUT ANY WARRANTY; without even the implied warranty of
00958    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00959    Library General Public License for more details.
00960 
00961    You should have received a copy of the GNU Library General Public License
00962    along with this library; see the file COPYING.LIB.  If not, write to
00963    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00964    Boston, MA 02111-1307, USA.
00965 */
00966 #line 21 "scanner.ll"
00967 
00968 #define YY_NO_UNPUT
00969 #define YY_USER_INIT BEGIN(PLAIN);
00970 
00971 #include <stdlib.h>
00972 #include <ctype.h>
00973 #include <qstring.h>
00974 #include <string.h>
00975 
00976 #include "koscript_parsenode.h"
00977 #include "koscript_types.h"
00978 #include "koscript_synext.h"
00979 #include "koscript_locale.h"
00980 
00981 #ifndef KDE_USE_FINAL
00982 #include "yacc.cc.h"
00983 #endif
00984 
00985 extern int idl_line_no;
00986 
00987 static bool s_kspread;
00988 KLocale* s_koscript_locale = 0;
00989 static KLocale* s_defaultLocale = 0;
00990 
00991 #define PARSE_NUM(yytext) \
00992   if( strlen( yytext ) < 8 ) \
00993   { yylval._int = ascii_to_longlong( 10, yytext ); return T_INTEGER_LITERAL; } else \
00994   { yylval._float = ascii_to_longdouble( yytext ); return T_FLOATING_PT_LITERAL; }
00995 
00996 static KScript::Long ascii_to_longlong( long base, const char *s )
00997 {
00998   KScript::Long ll = 0;
00999   while( *s != '\0' ) {
01000     char c = *s++;
01001     if( c >= 'a' )
01002       c -= 'a' - 'A';
01003     c -= '0';
01004     if( c > 9 )
01005       c -= 'A' - '0' - 10;
01006     ll = ll * base + c;
01007   }
01008   return ll;
01009 }
01010 
01011 static KScript::Double ascii_to_longdouble( const char *s )
01012 {
01013   KScript::Double d;
01014 #ifdef HAVE_SCANF_LF
01015   sscanf (s, "%Lf", &d);
01016 #else
01017   /*
01018    * this is only an approximation and will probably break fixed<>
01019    * parameter calculation on systems where
01020    * sizeof(double) < sizeof(long double). but fortunately all
01021    * systems where scanf("%Lf") is known to be broken (Linux/Alpha
01022    * and HPUX) have sizeof(double) == sizeof(long double).
01023    */
01024   d = strtod (s, NULL);
01025 #endif
01026   return d;
01027 }
01028 
01029 static ushort translate_char( const char *s )
01030 {
01031   char c = *s++;
01032   char buf[5];
01033 
01034   if( c != '\\' )
01035     return c;
01036   c = *s++;
01037   switch( c ) {
01038   case 'n':
01039     return '\n';
01040   case 't':
01041     return '\t';
01042   case 'v':
01043     return '\v';
01044   case 'b':
01045     return '\b';
01046   case 'r':
01047     return '\r';
01048   case 'f':
01049     return '\f';
01050   case 'a':
01051     return '\a';
01052   case 'u':        /* FIXME: This is really brittle */
01053     buf[0]=*s++; buf[1]=*s++;
01054     buf[2]=*s++; buf[3]=*s++;
01055     buf[4]='\0';
01056     return ascii_to_longlong(16, buf);
01057   case '\\':
01058     return '\\';
01059   case '?':
01060     return '\?';
01061   case '\'':
01062     return '\'';
01063   case '"':
01064     return '"';
01065   case 'x':
01066   case 'X':
01067     return (char) ascii_to_longlong( 16, s );
01068   default:
01069     // Gotta be an octal
01070     return (char) ascii_to_longlong( 8, s );
01071   }
01072 }
01073 
01074 static QChar translate_unichar( const QChar *s )
01075 {
01076   QChar c = *s++;
01077 
01078   if( c != '\\' )
01079     return c;
01080   c = *s++;
01081   switch( c.latin1() ) {
01082   case 'n':
01083     return '\n';
01084   case 't':
01085     return '\t';
01086   case 'v':
01087     return '\v';
01088   case 'b':
01089     return '\b';
01090   case 'r':
01091     return '\r';
01092   case 'f':
01093     return '\f';
01094   case 'a':
01095     return '\a';
01096   case '\\':
01097     return '\\';
01098   case '?':
01099     return '\?';
01100   case '\'':
01101     return '\'';
01102   case '"':
01103     return '"';
01104   default:
01105     return c;
01106   }
01107 }
01108 
01109 static void translate_string( QString& str )
01110 {
01111         int pos = 0;
01112         while( ( pos = str.find( '\\', pos ) ) != -1 )
01113         {
01114                 QChar ch = translate_unichar( str.unicode() + pos );
01115                 str.replace( pos, 2, &ch, 1 );
01116         }
01117 }
01118 
01119 #define YY_STACK_USED 1
01120 /* allow localized input of integer/fp literals, send  T_COMMA for ';' (Werner) */
01121 #define KSPREAD 1
01122 
01123 /* standard ASCII stuff, C-like fp literals, T_COMMA for - yay! - ',' (Werner) */
01124 #define PLAIN 2
01125 
01126 /* hack around a kregexp issue ($[0-9] is a group, but nothing else) (Werner) */
01127 #define REGEXP_GROUP 3
01128 
01129 /*--------------------------------------------------------------------------*/
01130 /* Note: All the "special" shortcuts are prefixed with "Plain_" or "KSpread_" */
01131 /*--------------------------------------------------------------------------*/
01132 /*--------------------------------------------------------------------------*/
01133 #line 1134 "scanner.cc"
01134 
01135 /* Macros after this point can all be overridden by user definitions in
01136  * section 1.
01137  */
01138 
01139 #ifndef YY_SKIP_YYWRAP
01140 #ifdef __cplusplus
01141 extern "C" int yywrap YY_PROTO(( void ));
01142 #else
01143 extern int yywrap YY_PROTO(( void ));
01144 #endif
01145 #endif
01146 
01147 #ifndef YY_NO_UNPUT
01148 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
01149 #endif
01150 
01151 #ifndef yytext_ptr
01152 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
01153 #endif
01154 
01155 #ifdef YY_NEED_STRLEN
01156 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
01157 #endif
01158 
01159 #ifndef YY_NO_INPUT
01160 #ifdef __cplusplus
01161 static int yyinput YY_PROTO(( void ));
01162 #else
01163 static int input YY_PROTO(( void ));
01164 #endif
01165 #endif
01166 
01167 #if YY_STACK_USED
01168 static int yy_start_stack_ptr = 0;
01169 static int yy_start_stack_depth = 0;
01170 static int *yy_start_stack = 0;
01171 #ifndef YY_NO_PUSH_STATE
01172 static void yy_push_state YY_PROTO(( int new_state ));
01173 #endif
01174 #ifndef YY_NO_POP_STATE
01175 static void yy_pop_state YY_PROTO(( void ));
01176 #endif
01177 #ifndef YY_NO_TOP_STATE
01178 static int yy_top_state YY_PROTO(( void ));
01179 #endif
01180 
01181 #else
01182 #define YY_NO_PUSH_STATE 1
01183 #define YY_NO_POP_STATE 1
01184 #define YY_NO_TOP_STATE 1
01185 #endif
01186 
01187 #ifdef YY_MALLOC_DECL
01188 YY_MALLOC_DECL
01189 #else
01190 #if __STDC__
01191 #ifndef __cplusplus
01192 #include <stdlib.h>
01193 #endif
01194 #else
01195 /* Just try to get by without declaring the routines.  This will fail
01196  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
01197  * or sizeof(void*) != sizeof(int).
01198  */
01199 #endif
01200 #endif
01201 
01202 /* Amount of stuff to slurp up with each read. */
01203 #ifndef YY_READ_BUF_SIZE
01204 #define YY_READ_BUF_SIZE 8192
01205 #endif
01206 
01207 /* Copy whatever the last rule matched to the standard output. */
01208 
01209 #ifndef ECHO
01210 /* This used to be an fputs(), but since the string might contain NUL's,
01211  * we now use fwrite().
01212  */
01213 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
01214 #endif
01215 
01216 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
01217  * is returned in "result".
01218  */
01219 #ifndef YY_INPUT
01220 #define YY_INPUT(buf,result,max_size) \
01221     if ( yy_current_buffer->yy_is_interactive ) \
01222         { \
01223         int c = '*', n; \
01224         for ( n = 0; n < max_size && \
01225                  (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
01226             buf[n] = (char) c; \
01227         if ( c == '\n' ) \
01228             buf[n++] = (char) c; \
01229         if ( c == EOF && ferror( yyin ) ) \
01230             YY_FATAL_ERROR( "input in flex scanner failed" ); \
01231         result = n; \
01232         } \
01233     else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
01234           && ferror( yyin ) ) \
01235         YY_FATAL_ERROR( "input in flex scanner failed" );
01236 #endif
01237 
01238 /* No semi-colon after return; correct usage is to write "yyterminate();" -
01239  * we don't want an extra ';' after the "return" because that will cause
01240  * some compilers to complain about unreachable statements.
01241  */
01242 #ifndef yyterminate
01243 #define yyterminate() return YY_NULL
01244 #endif
01245 
01246 /* Number of entries by which start-condition stack grows. */
01247 #ifndef YY_START_STACK_INCR
01248 #define YY_START_STACK_INCR 25
01249 #endif
01250 
01251 /* Report a fatal error. */
01252 #ifndef YY_FATAL_ERROR
01253 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
01254 #endif
01255 
01256 /* Default declaration of generated scanner - a define so the user can
01257  * easily add parameters.
01258  */
01259 #ifndef YY_DECL
01260 #define YY_DECL int yylex YY_PROTO(( void ))
01261 #endif
01262 
01263 /* Code executed at the beginning of each rule, after yytext and yyleng
01264  * have been set up.
01265  */
01266 #ifndef YY_USER_ACTION
01267 #define YY_USER_ACTION
01268 #endif
01269 
01270 /* Code executed at the end of each rule. */
01271 #ifndef YY_BREAK
01272 #define YY_BREAK break;
01273 #endif
01274 
01275 #define YY_RULE_SETUP \
01276     YY_USER_ACTION
01277 
01278 YY_DECL
01279     {
01280     register yy_state_type yy_current_state;
01281     register char *yy_cp, *yy_bp;
01282     register int yy_act;
01283 
01284 #line 230 "scanner.ll"
01285 
01286 
01287 #line 1288 "scanner.cc"
01288 
01289     if ( yy_init )
01290         {
01291         yy_init = 0;
01292 
01293 #ifdef YY_USER_INIT
01294         YY_USER_INIT;
01295 #endif
01296 
01297         if ( ! yy_start )
01298             yy_start = 1;   /* first start state */
01299 
01300         if ( ! yyin )
01301             yyin = stdin;
01302 
01303         if ( ! yyout )
01304             yyout = stdout;
01305 
01306         if ( ! yy_current_buffer )
01307             yy_current_buffer =
01308                 yy_create_buffer( yyin, YY_BUF_SIZE );
01309 
01310         yy_load_buffer_state();
01311         }
01312 
01313     while ( 1 )     /* loops until end-of-file is reached */
01314         {
01315         yy_cp = yy_c_buf_p;
01316 
01317         /* Support of yytext. */
01318         *yy_cp = yy_hold_char;
01319 
01320         /* yy_bp points to the position in yy_ch_buf of the start of
01321          * the current run.
01322          */
01323         yy_bp = yy_cp;
01324 
01325         yy_current_state = yy_start;
01326         yy_state_ptr = yy_state_buf;
01327         *yy_state_ptr++ = yy_current_state;
01328 yy_match:
01329         do
01330             {
01331             register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
01332             while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
01333                 {
01334                 yy_current_state = (int) yy_def[yy_current_state];
01335                 if ( yy_current_state >= 366 )
01336                     yy_c = yy_meta[(unsigned int) yy_c];
01337                 }
01338             yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
01339             *yy_state_ptr++ = yy_current_state;
01340             ++yy_cp;
01341             }
01342         while ( yy_current_state != 365 );
01343 
01344 yy_find_action:
01345         yy_current_state = *--yy_state_ptr;
01346         yy_lp = yy_accept[yy_current_state];
01347 find_rule: /* we branch to this label when backing up */
01348         for ( ; ; ) /* until we find what rule we matched */
01349             {
01350             if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
01351                 {
01352                 yy_act = yy_acclist[yy_lp];
01353                 if ( yy_act & YY_TRAILING_HEAD_MASK ||
01354                      yy_looking_for_trail_begin )
01355                     {
01356                     if ( yy_act == yy_looking_for_trail_begin )
01357                         {
01358                         yy_looking_for_trail_begin = 0;
01359                         yy_act &= ~YY_TRAILING_HEAD_MASK;
01360                         break;
01361                         }
01362                     }
01363                 else if ( yy_act & YY_TRAILING_MASK )
01364                     {
01365                     yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
01366                     yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
01367                     }
01368                 else
01369                     {
01370                     yy_full_match = yy_cp;
01371                     yy_full_state = yy_state_ptr;
01372                     yy_full_lp = yy_lp;
01373                     break;
01374                     }
01375                 ++yy_lp;
01376                 goto find_rule;
01377                 }
01378             --yy_cp;
01379             yy_current_state = *--yy_state_ptr;
01380             yy_lp = yy_accept[yy_current_state];
01381             }
01382 
01383         YY_DO_BEFORE_ACTION;
01384 
01385 
01386 do_action:  /* This label is used only to access EOF actions. */
01387 
01388 
01389         switch ( yy_act )
01390     { /* beginning of action switch */
01391 case 1:
01392 YY_RULE_SETUP
01393 #line 232 "scanner.ll"
01394 ;
01395     YY_BREAK
01396 case 2:
01397 YY_RULE_SETUP
01398 #line 233 "scanner.ll"
01399 { idl_line_no++; }
01400     YY_BREAK
01401 case 3:
01402 YY_RULE_SETUP
01403 #line 234 "scanner.ll"
01404 ;
01405     YY_BREAK
01406 case 4:
01407 YY_RULE_SETUP
01408 #line 235 "scanner.ll"
01409 ;
01410     YY_BREAK
01411 case 5:
01412 YY_RULE_SETUP
01413 #line 236 "scanner.ll"
01414 ;
01415     YY_BREAK
01416 case 6:
01417 YY_RULE_SETUP
01418 #line 238 "scanner.ll"
01419 {
01420                                                   const char *c = yytext + 2;
01421                                                   while( isspace( *c ) ) ++c;
01422                                                   ++c; ++c;
01423                                                   yylval._str = new QString( c );
01424                                                   yylval._str->truncate( yylval._str->length() - 1 );
01425                                                   return T_SUBST;
01426                                                 }
01427     YY_BREAK
01428 case 7:
01429 YY_RULE_SETUP
01430 #line 246 "scanner.ll"
01431 {
01432                                                   const char *c = yytext + 2;
01433                                                   while( isspace( *c ) ) ++c;
01434                                                   ++c;
01435                                                   yylval._str = new QString( c );
01436                                                   yylval._str->truncate( yylval._str->length() - 1 );
01437                                                   return T_MATCH;
01438                                                 }
01439     YY_BREAK
01440 case 8:
01441 YY_RULE_SETUP
01442 #line 254 "scanner.ll"
01443 {
01444                                                   yylval._str = new QString( yytext + 1 );
01445                                                   yylval._str->truncate( yylval._str->length() - 1 );
01446                                                   return T_MATCH_LINE;
01447                                                 }
01448     YY_BREAK
01449 case 9:
01450 YY_RULE_SETUP
01451 #line 260 "scanner.ll"
01452 {
01453                           if ( !s_kspread )
01454                           {
01455                                 yylval.ident = new QString( yytext );
01456                                 return T_IDENTIFIER;
01457                           }
01458                           yylval._str = new QString( yytext );
01459                           return T_CELL;
01460                        };
01461     YY_BREAK
01462 case 10:
01463 YY_RULE_SETUP
01464 #line 270 "scanner.ll"
01465 {
01466                           if ( !s_kspread )
01467                           {
01468                                 yylval.ident = new QString( yytext );
01469                                 return T_IDENTIFIER;
01470                           }
01471                           QString s = QString::fromUtf8( yytext );
01472                           yylval._str = new QString( s );
01473                           return T_CELL;
01474                        };
01475     YY_BREAK
01476 case 11:
01477 YY_RULE_SETUP
01478 #line 281 "scanner.ll"
01479 {
01480                           if ( !s_kspread )
01481                           {
01482                                 yylval.ident = new QString( yytext );
01483                                 return T_IDENTIFIER;
01484                           }
01485                           yylval._str = new QString( yytext );
01486                           return T_RANGE;
01487                        };
01488     YY_BREAK
01489 case 12:
01490 YY_RULE_SETUP
01491 #line 291 "scanner.ll"
01492 {
01493                           if ( !s_kspread )
01494                           {
01495                                 yylval.ident = new QString( yytext );
01496                                 return T_IDENTIFIER;
01497                           }
01498                           QString s = QString::fromUtf8( yytext );
01499                           yylval._str = new QString( s );
01500                           return T_RANGE;
01501                        };
01502     YY_BREAK
01503 case 13:
01504 YY_RULE_SETUP
01505 #line 302 "scanner.ll"
01506 {
01507                           if ( !s_kspread )
01508                           {
01509                                 yylval.ident = new QString( yytext );
01510                                 return T_IDENTIFIER;
01511                           }
01512                           QString s = QString::fromUtf8( yytext );
01513                           yylval._str = new QString( s );
01514                           return T_RANGE;
01515                        };
01516     YY_BREAK
01517 case 14:
01518 YY_RULE_SETUP
01519 #line 313 "scanner.ll"
01520 return T_LEFT_CURLY_BRACKET;
01521     YY_BREAK
01522 case 15:
01523 YY_RULE_SETUP
01524 #line 314 "scanner.ll"
01525 return T_RIGHT_CURLY_BRACKET;
01526     YY_BREAK
01527 case 16:
01528 YY_RULE_SETUP
01529 #line 315 "scanner.ll"
01530 return T_LEFT_SQUARE_BRACKET;
01531     YY_BREAK
01532 case 17:
01533 YY_RULE_SETUP
01534 #line 316 "scanner.ll"
01535 return T_RIGHT_SQUARE_BRACKET;
01536     YY_BREAK
01537 case 18:
01538 YY_RULE_SETUP
01539 #line 317 "scanner.ll"
01540 return T_LEFT_PARANTHESIS;
01541     YY_BREAK
01542 case 19:
01543 YY_RULE_SETUP
01544 #line 318 "scanner.ll"
01545 return T_RIGHT_PARANTHESIS;
01546     YY_BREAK
01547 case 20:
01548 YY_RULE_SETUP
01549 #line 319 "scanner.ll"
01550 return T_COLON;
01551     YY_BREAK
01552 case 21:
01553 YY_RULE_SETUP
01554 #line 320 "scanner.ll"
01555 return T_COMMA;
01556     YY_BREAK
01557 case 22:
01558 YY_RULE_SETUP
01559 #line 321 "scanner.ll"
01560 return T_SEMICOLON;
01561     YY_BREAK
01562 case 23:
01563 YY_RULE_SETUP
01564 #line 322 "scanner.ll"
01565 return T_COMMA;
01566     YY_BREAK
01567 case 24:
01568 YY_RULE_SETUP
01569 #line 323 "scanner.ll"
01570 return T_EQUAL;
01571     YY_BREAK
01572 case 25:
01573 YY_RULE_SETUP
01574 #line 324 "scanner.ll"
01575 return T_NOTEQUAL;
01576     YY_BREAK
01577 case 26:
01578 YY_RULE_SETUP
01579 #line 325 "scanner.ll"
01580 return T_NOTEQUAL;
01581     YY_BREAK
01582 case 27:
01583 YY_RULE_SETUP
01584 #line 326 "scanner.ll"
01585 return T_NOT;
01586     YY_BREAK
01587 case 28:
01588 YY_RULE_SETUP
01589 #line 327 "scanner.ll"
01590 return T_ASSIGN;
01591     YY_BREAK
01592 case 29:
01593 YY_RULE_SETUP
01594 #line 328 "scanner.ll"
01595 return T_INPUT;
01596     YY_BREAK
01597 case 30:
01598 YY_RULE_SETUP
01599 #line 329 "scanner.ll"
01600 return T_SHIFTRIGHT;
01601     YY_BREAK
01602 case 31:
01603 YY_RULE_SETUP
01604 #line 330 "scanner.ll"
01605 return T_SHIFTLEFT;
01606     YY_BREAK
01607 case 32:
01608 YY_RULE_SETUP
01609 #line 331 "scanner.ll"
01610 return T_PLUS_SIGN;
01611     YY_BREAK
01612 case 33:
01613 YY_RULE_SETUP
01614 #line 332 "scanner.ll"
01615 return T_MINUS_SIGN;
01616     YY_BREAK
01617 case 34:
01618 YY_RULE_SETUP
01619 #line 333 "scanner.ll"
01620 return T_ASTERISK;
01621     YY_BREAK
01622 case 35:
01623 YY_RULE_SETUP
01624 #line 334 "scanner.ll"
01625 return T_SOLIDUS;
01626     YY_BREAK
01627 case 36:
01628 YY_RULE_SETUP
01629 #line 335 "scanner.ll"
01630 return T_PERCENT_SIGN;
01631     YY_BREAK
01632 case 37:
01633 YY_RULE_SETUP
01634 #line 336 "scanner.ll"
01635 return T_TILDE;
01636     YY_BREAK
01637 case 38:
01638 YY_RULE_SETUP
01639 #line 337 "scanner.ll"
01640 return T_OR;
01641     YY_BREAK
01642 case 39:
01643 YY_RULE_SETUP
01644 #line 338 "scanner.ll"
01645 return T_VERTICAL_LINE;
01646     YY_BREAK
01647 case 40:
01648 YY_RULE_SETUP
01649 #line 339 "scanner.ll"
01650 return T_CIRCUMFLEX;
01651     YY_BREAK
01652 case 41:
01653 YY_RULE_SETUP
01654 #line 340 "scanner.ll"
01655 return T_AMPERSAND;
01656     YY_BREAK
01657 case 42:
01658 YY_RULE_SETUP
01659 #line 341 "scanner.ll"
01660 return T_AND;
01661     YY_BREAK
01662 case 43:
01663 YY_RULE_SETUP
01664 #line 342 "scanner.ll"
01665 return T_LESS_OR_EQUAL;
01666     YY_BREAK
01667 case 44:
01668 YY_RULE_SETUP
01669 #line 343 "scanner.ll"
01670 return T_GREATER_OR_EQUAL;
01671     YY_BREAK
01672 case 45:
01673 YY_RULE_SETUP
01674 #line 344 "scanner.ll"
01675 return T_LESS_THAN_SIGN;
01676     YY_BREAK
01677 case 46:
01678 YY_RULE_SETUP
01679 #line 345 "scanner.ll"
01680 return T_GREATER_THAN_SIGN;
01681     YY_BREAK
01682 case 47:
01683 YY_RULE_SETUP
01684 #line 346 "scanner.ll"
01685 return T_MEMBER;
01686     YY_BREAK
01687 case 48:
01688 YY_RULE_SETUP
01689 #line 347 "scanner.ll"
01690 return T_PLUS_ASSIGN;
01691     YY_BREAK
01692 case 49:
01693 YY_RULE_SETUP
01694 #line 348 "scanner.ll"
01695 return T_MINUS_ASSIGN;
01696     YY_BREAK
01697 case 50:
01698 YY_RULE_SETUP
01699 #line 349 "scanner.ll"
01700 return T_LINE;
01701     YY_BREAK
01702 case 51:
01703 YY_RULE_SETUP
01704 #line 350 "scanner.ll"
01705 {
01706                                 yy_push_state( REGEXP_GROUP );
01707                                 return T_DOLLAR;
01708                         }
01709     YY_BREAK
01710 case 52:
01711 YY_RULE_SETUP
01712 #line 354 "scanner.ll"
01713 {
01714                                 yy_pop_state();
01715                                 PARSE_NUM(yytext);
01716                         }
01717     YY_BREAK
01718 case 53:
01719 YY_RULE_SETUP
01720 #line 358 "scanner.ll"
01721 {
01722                                 yy_pop_state();
01723                                 yyless(0);
01724                         }
01725     YY_BREAK
01726 case 54:
01727 YY_RULE_SETUP
01728 #line 363 "scanner.ll"
01729 return T_CONST;
01730     YY_BREAK
01731 case 55:
01732 YY_RULE_SETUP
01733 #line 364 "scanner.ll"
01734 return T_FALSE;
01735     YY_BREAK
01736 case 56:
01737 YY_RULE_SETUP
01738 #line 365 "scanner.ll"
01739 return T_TRUE;
01740     YY_BREAK
01741 case 57:
01742 YY_RULE_SETUP
01743 #line 366 "scanner.ll"
01744 return T_FALSE;
01745     YY_BREAK
01746 case 58:
01747 YY_RULE_SETUP
01748 #line 367 "scanner.ll"
01749 return T_TRUE;
01750     YY_BREAK
01751 case 59:
01752 YY_RULE_SETUP
01753 #line 368 "scanner.ll"
01754 return T_STRUCT;
01755     YY_BREAK
01756 case 60:
01757 YY_RULE_SETUP
01758 #line 369 "scanner.ll"
01759 return T_SWITCH;
01760     YY_BREAK
01761 case 61:
01762 YY_RULE_SETUP
01763 #line 370 "scanner.ll"
01764 return T_CASE;
01765     YY_BREAK
01766 case 62:
01767 YY_RULE_SETUP
01768 #line 371 "scanner.ll"
01769 return T_DEFAULT;
01770     YY_BREAK
01771 case 63:
01772 YY_RULE_SETUP
01773 #line 372 "scanner.ll"
01774 return T_ENUM;
01775     YY_BREAK
01776 case 64:
01777 YY_RULE_SETUP
01778 #line 373 "scanner.ll"
01779 return T_IN;
01780     YY_BREAK
01781 case 65:
01782 YY_RULE_SETUP
01783 #line 374 "scanner.ll"
01784 return T_OUT;
01785     YY_BREAK
01786 case 66:
01787 YY_RULE_SETUP
01788 #line 375 "scanner.ll"
01789 return T_WHILE;
01790     YY_BREAK
01791 case 67:
01792 YY_RULE_SETUP
01793 #line 376 "scanner.ll"
01794 return T_DO;
01795     YY_BREAK
01796 case 68:
01797 YY_RULE_SETUP
01798 #line 377 "scanner.ll"
01799 return T_FOR;
01800     YY_BREAK
01801 case 69:
01802 YY_RULE_SETUP
01803 #line 378 "scanner.ll"
01804 {
01805                                 if ( !s_kspread )
01806                                         return T_IF;
01807                                 yylval.ident = new QString( yytext );
01808                                 return T_IDENTIFIER;
01809                         }
01810     YY_BREAK
01811 case 70:
01812 YY_RULE_SETUP
01813 #line 384 "scanner.ll"
01814 return T_ELSE;
01815     YY_BREAK
01816 case 71:
01817 YY_RULE_SETUP
01818 #line 385 "scanner.ll"
01819 return T_MAIN;
01820     YY_BREAK
01821 case 72:
01822 YY_RULE_SETUP
01823 #line 386 "scanner.ll"
01824 return T_FOREACH;
01825     YY_BREAK
01826 case 73:
01827 YY_RULE_SETUP
01828 #line 387 "scanner.ll"
01829 return T_RETURN;
01830     YY_BREAK
01831 case 74:
01832 YY_RULE_SETUP
01833 #line 388 "scanner.ll"
01834 return T_IMPORT;
01835     YY_BREAK
01836 case 75:
01837 YY_RULE_SETUP
01838 #line 389 "scanner.ll"
01839 return T_VAR;
01840     YY_BREAK
01841 case 76:
01842 YY_RULE_SETUP
01843 #line 390 "scanner.ll"
01844 return T_INOUT;
01845     YY_BREAK
01846 case 77:
01847 YY_RULE_SETUP
01848 #line 391 "scanner.ll"
01849 return T_TRY;
01850     YY_BREAK
01851 case 78:
01852 YY_RULE_SETUP
01853 #line 392 "scanner.ll"
01854 return T_CATCH;
01855     YY_BREAK
01856 case 79:
01857 YY_RULE_SETUP
01858 #line 393 "scanner.ll"
01859 return T_RAISE;
01860     YY_BREAK
01861 case 80:
01862 YY_RULE_SETUP
01863 #line 394 "scanner.ll"
01864 return T_FROM;
01865     YY_BREAK
01866 case 81:
01867 YY_RULE_SETUP
01868 #line 396 "scanner.ll"
01869 return T_INCR;
01870     YY_BREAK
01871 case 82:
01872 YY_RULE_SETUP
01873 #line 397 "scanner.ll"
01874 return T_DECR;
01875     YY_BREAK
01876 case 83:
01877 YY_RULE_SETUP
01878 #line 398 "scanner.ll"
01879 return T_SCOPE;
01880     YY_BREAK
01881 case 84:
01882 YY_RULE_SETUP
01883 #line 400 "scanner.ll"
01884 {
01885                           yylval.ident = new QString( yytext );
01886                           return T_IDENTIFIER;
01887                         }
01888     YY_BREAK
01889 case 85:
01890 #line 406 "scanner.ll"
01891 case 86:
01892 #line 407 "scanner.ll"
01893 case 87:
01894 #line 408 "scanner.ll"
01895 case 88:
01896 #line 409 "scanner.ll"
01897 case 89:
01898 #line 410 "scanner.ll"
01899 case 90:
01900 YY_RULE_SETUP
01901 #line 410 "scanner.ll"
01902 {
01903                           QString s( yytext );
01904                           bool ok = TRUE;
01905                           double f = s_koscript_locale->readNumber( s, &ok );
01906                           // if ( !ok )
01907                           //    f = s.toDouble( &ok );
01908                           if ( !ok )
01909                                 return T_UNKNOWN;
01910                           int i = (int)f;
01911                           if ( i == f )
01912                           {
01913                               yylval._int = i;
01914                               return T_INTEGER_LITERAL;
01915                           }
01916                           yylval._float = f;
01917                           return T_FLOATING_PT_LITERAL;
01918                         }
01919     YY_BREAK
01920 case 91:
01921 YY_RULE_SETUP
01922 #line 427 "scanner.ll"
01923 {
01924                           PARSE_NUM( yytext );
01925                         }
01926     YY_BREAK
01927 case 92:
01928 #line 432 "scanner.ll"
01929 case 93:
01930 #line 433 "scanner.ll"
01931 case 94:
01932 #line 434 "scanner.ll"
01933 case 95:
01934 #line 435 "scanner.ll"
01935 case 96:
01936 YY_RULE_SETUP
01937 #line 435 "scanner.ll"
01938 {
01939                           yylval._float = ascii_to_longdouble( yytext );
01940                           return T_FLOATING_PT_LITERAL;
01941                         }
01942     YY_BREAK
01943 case 97:
01944 YY_RULE_SETUP
01945 #line 439 "scanner.ll"
01946 {
01947                           PARSE_NUM( yytext );
01948                         }
01949     YY_BREAK
01950 case 98:
01951 YY_RULE_SETUP
01952 #line 443 "scanner.ll"
01953 {
01954                           yylval._int = ascii_to_longlong( 8, yytext );
01955                           return T_INTEGER_LITERAL;
01956                         }
01957     YY_BREAK
01958 case 99:
01959 YY_RULE_SETUP
01960 #line 447 "scanner.ll"
01961 {
01962                           yylval._int = ascii_to_longlong( 16, yytext + 2 );
01963                           return T_INTEGER_LITERAL;
01964                         }
01965     YY_BREAK
01966 case 100:
01967 YY_RULE_SETUP
01968 #line 451 "scanner.ll"
01969 {
01970                           QCString s( yytext );
01971                           s = s.mid( 1, s.length() - 2 );
01972                           yylval._char = translate_char( s );
01973                           return T_CHARACTER_LITERAL;
01974                         }
01975     YY_BREAK
01976 case 101:
01977 YY_RULE_SETUP
01978 #line 457 "scanner.ll"
01979 {
01980                           QString s=QString::fromUtf8( yytext );
01981                           yylval._str = new QString( s.mid( 1, s.length() - 2 ) );
01982                           if ( yylval._str->isNull() )
01983                                 *(yylval._str) = "";
01984                           translate_string( *(yylval._str) );
01985                           return T_STRING_LITERAL;
01986                         }
01987     YY_BREAK
01988 case 102:
01989 YY_RULE_SETUP
01990 #line 466 "scanner.ll"
01991 return T_UNKNOWN;
01992     YY_BREAK
01993 case 103:
01994 YY_RULE_SETUP
01995 #line 468 "scanner.ll"
01996 ECHO;
01997     YY_BREAK
01998 #line 1999 "scanner.cc"
01999             case YY_STATE_EOF(INITIAL):
02000             case YY_STATE_EOF(KSPREAD):
02001             case YY_STATE_EOF(PLAIN):
02002             case YY_STATE_EOF(REGEXP_GROUP):
02003                 yyterminate();
02004 
02005     case YY_END_OF_BUFFER:
02006         {
02007         /* Amount of text matched not including the EOB char. */
02008         int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
02009 
02010         /* Undo the effects of YY_DO_BEFORE_ACTION. */
02011         *yy_cp = yy_hold_char;
02012         YY_RESTORE_YY_MORE_OFFSET
02013 
02014         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
02015             {
02016             /* We're scanning a new file or input source.  It's
02017              * possible that this happened because the user
02018              * just pointed yyin at a new source and called
02019              * yylex().  If so, then we have to assure
02020              * consistency between yy_current_buffer and our
02021              * globals.  Here is the right place to do so, because
02022              * this is the first action (other than possibly a
02023              * back-up) that will match for the new input source.
02024              */
02025             yy_n_chars = yy_current_buffer->yy_n_chars;
02026             yy_current_buffer->yy_input_file = yyin;
02027             yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
02028             }
02029 
02030         /* Note that here we test for yy_c_buf_p "<=" to the position
02031          * of the first EOB in the buffer, since yy_c_buf_p will
02032          * already have been incremented past the NUL character
02033          * (since all states make transitions on EOB to the
02034          * end-of-buffer state).  Contrast this with the test
02035          * in input().
02036          */
02037         if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
02038             { /* This was really a NUL. */
02039             yy_state_type yy_next_state;
02040 
02041             yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
02042 
02043             yy_current_state = yy_get_previous_state();
02044 
02045             /* Okay, we're now positioned to make the NUL
02046              * transition.  We couldn't have
02047              * yy_get_previous_state() go ahead and do it
02048              * for us because it doesn't know how to deal
02049              * with the possibility of jamming (and we don't
02050              * want to build jamming into it because then it
02051              * will run more slowly).
02052              */
02053 
02054             yy_next_state = yy_try_NUL_trans( yy_current_state );
02055 
02056             yy_bp = yytext_ptr + YY_MORE_ADJ;
02057 
02058             if ( yy_next_state )
02059                 {
02060                 /* Consume the NUL. */
02061                 yy_cp = ++yy_c_buf_p;
02062                 yy_current_state = yy_next_state;
02063                 goto yy_match;
02064                 }
02065 
02066             else
02067                 {
02068                 yy_cp = yy_c_buf_p;
02069                 goto yy_find_action;
02070                 }
02071             }
02072 
02073         else switch ( yy_get_next_buffer() )
02074             {
02075             case EOB_ACT_END_OF_FILE:
02076                 {
02077                 yy_did_buffer_switch_on_eof = 0;
02078 
02079                 if ( yywrap() )
02080                     {
02081                     /* Note: because we've taken care in
02082                      * yy_get_next_buffer() to have set up
02083                      * yytext, we can now set up
02084                      * yy_c_buf_p so that if some total
02085                      * hoser (like flex itself) wants to
02086                      * call the scanner after we return the
02087                      * YY_NULL, it'll still work - another
02088                      * YY_NULL will get returned.
02089                      */
02090                     yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
02091 
02092                     yy_act = YY_STATE_EOF(YY_START);
02093                     goto do_action;
02094                     }
02095 
02096                 else
02097                     {
02098                     if ( ! yy_did_buffer_switch_on_eof )
02099                         YY_NEW_FILE;
02100                     }
02101                 break;
02102                 }
02103 
02104             case EOB_ACT_CONTINUE_SCAN:
02105                 yy_c_buf_p =
02106                     yytext_ptr + yy_amount_of_matched_text;
02107 
02108                 yy_current_state = yy_get_previous_state();
02109 
02110                 yy_cp = yy_c_buf_p;
02111                 yy_bp = yytext_ptr + YY_MORE_ADJ;
02112                 goto yy_match;
02113 
02114             case EOB_ACT_LAST_MATCH:
02115                 yy_c_buf_p =
02116                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
02117 
02118                 yy_current_state = yy_get_previous_state();
02119 
02120                 yy_cp = yy_c_buf_p;
02121                 yy_bp = yytext_ptr + YY_MORE_ADJ;
02122                 goto yy_find_action;
02123             }
02124         break;
02125         }
02126 
02127     default:
02128         YY_FATAL_ERROR(
02129             "fatal flex scanner internal error--no action found" );
02130     } /* end of action switch */
02131         } /* end of scanning one token */
02132     } /* end of yylex */
02133 
02134 
02135 /* yy_get_next_buffer - try to read in a new buffer
02136  *
02137  * Returns a code representing an action:
02138  *  EOB_ACT_LAST_MATCH -
02139  *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
02140  *  EOB_ACT_END_OF_FILE - end of file
02141  */
02142 
02143 static int yy_get_next_buffer()
02144     {
02145     register char *dest = yy_current_buffer->yy_ch_buf;
02146     register char *source = yytext_ptr;
02147     register int number_to_move, i;
02148     int ret_val;
02149 
02150     if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
02151         YY_FATAL_ERROR(
02152         "fatal flex scanner internal error--end of buffer missed" );
02153 
02154     if ( yy_current_buffer->yy_fill_buffer == 0 )
02155         { /* Don't try to fill the buffer, so this is an EOF. */
02156         if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
02157             {
02158             /* We matched a single character, the EOB, so
02159              * treat this as a final EOF.
02160              */
02161             return EOB_ACT_END_OF_FILE;
02162             }
02163 
02164         else
02165             {
02166             /* We matched some text prior to the EOB, first
02167              * process it.
02168              */
02169             return EOB_ACT_LAST_MATCH;
02170             }
02171         }
02172 
02173     /* Try to read more data. */
02174 
02175     /* First move last chars to start of buffer. */
02176     number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
02177 
02178     for ( i = 0; i < number_to_move; ++i )
02179         *(dest++) = *(source++);
02180 
02181     if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
02182         /* don't do the read, it's not guaranteed to return an EOF,
02183          * just force an EOF
02184          */
02185         yy_current_buffer->yy_n_chars = yy_n_chars = 0;
02186 
02187     else
02188         {
02189         int num_to_read =
02190             yy_current_buffer->yy_buf_size - number_to_move - 1;
02191 
02192         while ( num_to_read <= 0 )
02193             { /* Not enough room in the buffer - grow it. */
02194 #ifdef YY_USES_REJECT
02195             YY_FATAL_ERROR(
02196 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
02197 #else
02198 
02199             /* just a shorter name for the current buffer */
02200             YY_BUFFER_STATE b = yy_current_buffer;
02201 
02202             int yy_c_buf_p_offset =
02203                 (int) (yy_c_buf_p - b->yy_ch_buf);
02204 
02205             if ( b->yy_is_our_buffer )
02206                 {
02207                 int new_size = b->yy_buf_size * 2;
02208 
02209                 if ( new_size <= 0 )
02210                     b->yy_buf_size += b->yy_buf_size / 8;
02211                 else
02212                     b->yy_buf_size *= 2;
02213 
02214                 b->yy_ch_buf = (char *)
02215                     /* Include room in for 2 EOB chars. */
02216                     yy_flex_realloc( (void *) b->yy_ch_buf,
02217                              b->yy_buf_size + 2 );
02218                 }
02219             else
02220                 /* Can't grow it, we don't own it. */
02221                 b->yy_ch_buf = 0;
02222 
02223             if ( ! b->yy_ch_buf )
02224                 YY_FATAL_ERROR(
02225                 "fatal error - scanner input buffer overflow" );
02226 
02227             yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
02228 
02229             num_to_read = yy_current_buffer->yy_buf_size -
02230                         number_to_move - 1;
02231 #endif
02232             }
02233 
02234         if ( num_to_read > YY_READ_BUF_SIZE )
02235             num_to_read = YY_READ_BUF_SIZE;
02236 
02237         /* Read in more data. */
02238         YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
02239             yy_n_chars, num_to_read );
02240 
02241         yy_current_buffer->yy_n_chars = yy_n_chars;
02242         }
02243 
02244     if ( yy_n_chars == 0 )
02245         {
02246         if ( number_to_move == YY_MORE_ADJ )
02247             {
02248             ret_val = EOB_ACT_END_OF_FILE;
02249             yyrestart( yyin );
02250             }
02251 
02252         else
02253             {
02254             ret_val = EOB_ACT_LAST_MATCH;
02255             yy_current_buffer->yy_buffer_status =
02256                 YY_BUFFER_EOF_PENDING;
02257             }
02258         }
02259 
02260     else
02261         ret_val = EOB_ACT_CONTINUE_SCAN;
02262 
02263     yy_n_chars += number_to_move;
02264     yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
02265     yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
02266 
02267     yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
02268 
02269     return ret_val;
02270     }
02271 
02272 
02273 /* yy_get_previous_state - get the state just before the EOB char was reached */
02274 
02275 static yy_state_type yy_get_previous_state()
02276     {
02277     register yy_state_type yy_current_state;
02278     register char *yy_cp;
02279 
02280     yy_current_state = yy_start;
02281     yy_state_ptr = yy_state_buf;
02282     *yy_state_ptr++ = yy_current_state;
02283 
02284     for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
02285         {
02286         register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
02287         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02288             {
02289             yy_current_state = (int) yy_def[yy_current_state];
02290             if ( yy_current_state >= 366 )
02291                 yy_c = yy_meta[(unsigned int) yy_c];
02292             }
02293         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02294         *yy_state_ptr++ = yy_current_state;
02295         }
02296 
02297     return yy_current_state;
02298     }
02299 
02300 
02301 /* yy_try_NUL_trans - try to make a transition on the NUL character
02302  *
02303  * synopsis
02304  *  next_state = yy_try_NUL_trans( current_state );
02305  */
02306 
02307 #ifdef YY_USE_PROTOS
02308 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
02309 #else
02310 static yy_state_type yy_try_NUL_trans( yy_current_state )
02311 yy_state_type yy_current_state;
02312 #endif
02313     {
02314     register int yy_is_jam;
02315 
02316     register YY_CHAR yy_c = 1;
02317     while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
02318         {
02319         yy_current_state = (int) yy_def[yy_current_state];
02320         if ( yy_current_state >= 366 )
02321             yy_c = yy_meta[(unsigned int) yy_c];
02322         }
02323     yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
02324     yy_is_jam = (yy_current_state == 365);
02325     if ( ! yy_is_jam )
02326         *yy_state_ptr++ = yy_current_state;
02327 
02328     return yy_is_jam ? 0 : yy_current_state;
02329     }
02330 
02331 
02332 #ifndef YY_NO_UNPUT
02333 #ifdef YY_USE_PROTOS
02334 static void yyunput( int c, register char *yy_bp )
02335 #else
02336 static void yyunput( c, yy_bp )
02337 int c;
02338 register char *yy_bp;
02339 #endif
02340     {
02341     register char *yy_cp = yy_c_buf_p;
02342 
02343     /* undo effects of setting up yytext */
02344     *yy_cp = yy_hold_char;
02345 
02346     if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
02347         { /* need to shift things up to make room */
02348         /* +2 for EOB chars. */
02349         register int number_to_move = yy_n_chars + 2;
02350         register char *dest = &yy_current_buffer->yy_ch_buf[
02351                     yy_current_buffer->yy_buf_size + 2];
02352         register char *source =
02353                 &yy_current_buffer->yy_ch_buf[number_to_move];
02354 
02355         while ( source > yy_current_buffer->yy_ch_buf )
02356             *--dest = *--source;
02357 
02358         yy_cp += (int) (dest - source);
02359         yy_bp += (int) (dest - source);
02360         yy_current_buffer->yy_n_chars =
02361             yy_n_chars = yy_current_buffer->yy_buf_size;
02362 
02363         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
02364             YY_FATAL_ERROR( "flex scanner push-back overflow" );
02365         }
02366 
02367     *--yy_cp = (char) c;
02368 
02369 
02370     yytext_ptr = yy_bp;
02371     yy_hold_char = *yy_cp;
02372     yy_c_buf_p = yy_cp;
02373     }
02374 #endif  /* ifndef YY_NO_UNPUT */
02375 
02376 
02377 #ifdef __cplusplus
02378 static int yyinput()
02379 #else
02380 static int input()
02381 #endif
02382     {
02383     int c;
02384 
02385     *yy_c_buf_p = yy_hold_char;
02386 
02387     if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
02388         {
02389         /* yy_c_buf_p now points to the character we want to return.
02390          * If this occurs *before* the EOB characters, then it's a
02391          * valid NUL; if not, then we've hit the end of the buffer.
02392          */
02393         if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
02394             /* This was really a NUL. */
02395             *yy_c_buf_p = '\0';
02396 
02397         else
02398             { /* need more input */
02399             int offset = yy_c_buf_p - yytext_ptr;
02400             ++yy_c_buf_p;
02401 
02402             switch ( yy_get_next_buffer() )
02403                 {
02404                 case EOB_ACT_LAST_MATCH:
02405                     /* This happens because yy_g_n_b()
02406                      * sees that we've accumulated a
02407                      * token and flags that we need to
02408                      * try matching the token before
02409                      * proceeding.  But for input(),
02410                      * there's no matching to consider.
02411                      * So convert the EOB_ACT_LAST_MATCH
02412                      * to EOB_ACT_END_OF_FILE.
02413                      */
02414 
02415                     /* Reset buffer status. */
02416                     yyrestart( yyin );
02417 
02418                     /* fall through */
02419 
02420                 case EOB_ACT_END_OF_FILE:
02421                     {
02422                     if ( yywrap() )
02423                         return EOF;
02424 
02425                     if ( ! yy_did_buffer_switch_on_eof )
02426                         YY_NEW_FILE;
02427 #ifdef __cplusplus
02428                     return yyinput();
02429 #else
02430                     return input();
02431 #endif
02432                     }
02433 
02434                 case EOB_ACT_CONTINUE_SCAN:
02435                     yy_c_buf_p = yytext_ptr + offset;
02436                     break;
02437                 }
02438             }
02439         }
02440 
02441     c = *(unsigned char *) yy_c_buf_p;  /* cast for 8-bit char's */
02442     *yy_c_buf_p = '\0'; /* preserve yytext */
02443     yy_hold_char = *++yy_c_buf_p;
02444 
02445 
02446     return c;
02447     }
02448 
02449 
02450 #ifdef YY_USE_PROTOS
02451 void yyrestart( FILE *input_file )
02452 #else
02453 void yyrestart( input_file )
02454 FILE *input_file;
02455 #endif
02456     {
02457     if ( ! yy_current_buffer )
02458         yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
02459 
02460     yy_init_buffer( yy_current_buffer, input_file );
02461     yy_load_buffer_state();
02462     }
02463 
02464 
02465 #ifdef YY_USE_PROTOS
02466 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
02467 #else
02468 void yy_switch_to_buffer( new_buffer )
02469 YY_BUFFER_STATE new_buffer;
02470 #endif
02471     {
02472     if ( yy_current_buffer == new_buffer )
02473         return;
02474 
02475     if ( yy_current_buffer )
02476         {
02477         /* Flush out information for old buffer. */
02478         *yy_c_buf_p = yy_hold_char;
02479         yy_current_buffer->yy_buf_pos = yy_c_buf_p;
02480         yy_current_buffer->yy_n_chars = yy_n_chars;
02481         }
02482 
02483     yy_current_buffer = new_buffer;
02484     yy_load_buffer_state();
02485 
02486     /* We don't actually know whether we did this switch during
02487      * EOF (yywrap()) processing, but the only time this flag
02488      * is looked at is after yywrap() is called, so it's safe
02489      * to go ahead and always set it.
02490      */
02491     yy_did_buffer_switch_on_eof = 1;
02492     }
02493 
02494 
02495 #ifdef YY_USE_PROTOS
02496 void yy_load_buffer_state( void )
02497 #else
02498 void yy_load_buffer_state()
02499 #endif
02500     {
02501     yy_n_chars = yy_current_buffer->yy_n_chars;
02502     yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
02503     yyin = yy_current_buffer->yy_input_file;
02504     yy_hold_char = *yy_c_buf_p;
02505     }
02506 
02507 
02508 #ifdef YY_USE_PROTOS
02509 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
02510 #else
02511 YY_BUFFER_STATE yy_create_buffer( file, size )
02512 FILE *file;
02513 int size;
02514 #endif
02515     {
02516     YY_BUFFER_STATE b;
02517 
02518     b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
02519     if ( ! b )
02520         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
02521 
02522     b->yy_buf_size = size;
02523 
02524     /* yy_ch_buf has to be 2 characters longer than the size given because
02525      * we need to put in 2 end-of-buffer characters.
02526      */
02527     b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
02528     if ( ! b->yy_ch_buf )
02529         YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
02530 
02531     b->yy_is_our_buffer = 1;
02532 
02533     yy_init_buffer( b, file );
02534 
02535     return b;
02536     }
02537 
02538 
02539 #ifdef YY_USE_PROTOS
02540 void yy_delete_buffer( YY_BUFFER_STATE b )
02541 #else
02542 void yy_delete_buffer( b )
02543 YY_BUFFER_STATE b;
02544 #endif
02545     {
02546     if ( ! b )
02547         return;
02548 
02549     if ( b == yy_current_buffer )
02550         yy_current_buffer = (YY_BUFFER_STATE) 0;
02551 
02552     if ( b->yy_is_our_buffer )
02553         yy_flex_free( (void *) b->yy_ch_buf );
02554 
02555     yy_flex_free( (void *) b );
02556     }
02557 
02558 
02559 #ifndef YY_ALWAYS_INTERACTIVE
02560 #ifndef YY_NEVER_INTERACTIVE
02561 #include<unistd.h>
02562 #endif
02563 #endif
02564 
02565 #ifdef YY_USE_PROTOS
02566 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
02567 #else
02568 void yy_init_buffer( b, file )
02569 YY_BUFFER_STATE b;
02570 FILE *file;
02571 #endif
02572 
02573 
02574     {
02575     yy_flush_buffer( b );
02576 
02577     b->yy_input_file = file;
02578     b->yy_fill_buffer = 1;
02579 
02580 #if YY_ALWAYS_INTERACTIVE
02581     b->yy_is_interactive = 1;
02582 #else
02583 #if YY_NEVER_INTERACTIVE
02584     b->yy_is_interactive = 0;
02585 #else
02586     b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
02587 #endif
02588 #endif
02589     }
02590 
02591 
02592 #ifdef YY_USE_PROTOS
02593 void yy_flush_buffer( YY_BUFFER_STATE b )
02594 #else
02595 void yy_flush_buffer( b )
02596 YY_BUFFER_STATE b;
02597 #endif
02598 
02599     {
02600     if ( ! b )
02601         return;
02602 
02603     b->yy_n_chars = 0;
02604 
02605     /* We always need two end-of-buffer characters.  The first causes
02606      * a transition to the end-of-buffer state.  The second causes
02607      * a jam in that state.
02608      */
02609     b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
02610     b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
02611 
02612     b->yy_buf_pos = &b->yy_ch_buf[0];
02613 
02614     b->yy_at_bol = 1;
02615     b->yy_buffer_status = YY_BUFFER_NEW;
02616 
02617     if ( b == yy_current_buffer )
02618         yy_load_buffer_state();
02619     }
02620 
02621 
02622 #ifndef YY_NO_SCAN_BUFFER
02623 #ifdef YY_USE_PROTOS
02624 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
02625 #else
02626 YY_BUFFER_STATE yy_scan_buffer( base, size )
02627 char *base;
02628 yy_size_t size;
02629 #endif
02630     {
02631     YY_BUFFER_STATE b;
02632 
02633     if ( size < 2 ||
02634          base[size-2] != YY_END_OF_BUFFER_CHAR ||
02635          base[size-1] != YY_END_OF_BUFFER_CHAR )
02636         /* They forgot to leave room for the EOB's. */
02637         return 0;
02638 
02639     b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
02640     if ( ! b )
02641         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
02642 
02643     b->yy_buf_size = size - 2;  /* "- 2" to take care of EOB's */
02644     b->yy_buf_pos = b->yy_ch_buf = base;
02645     b->yy_is_our_buffer = 0;
02646     b->yy_input_file = 0;
02647     b->yy_n_chars = b->yy_buf_size;
02648     b->yy_is_interactive = 0;
02649     b->yy_at_bol = 1;
02650     b->yy_fill_buffer = 0;
02651     b->yy_buffer_status = YY_BUFFER_NEW;
02652 
02653     yy_switch_to_buffer( b );
02654 
02655     return b;
02656     }
02657 #endif
02658 
02659 
02660 #ifndef YY_NO_SCAN_STRING
02661 #ifdef YY_USE_PROTOS
02662 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
02663 #else
02664 YY_BUFFER_STATE yy_scan_string( yy_str )
02665 yyconst char *yy_str;
02666 #endif
02667     {
02668     int len;
02669     for ( len = 0; yy_str[len]; ++len )
02670         ;
02671 
02672     return yy_scan_bytes( yy_str, len );
02673     }
02674 #endif
02675 
02676 
02677 #ifndef YY_NO_SCAN_BYTES
02678 #ifdef YY_USE_PROTOS
02679 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
02680 #else
02681 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
02682 yyconst char *bytes;
02683 int len;
02684 #endif
02685     {
02686     YY_BUFFER_STATE b;
02687     char *buf;
02688     yy_size_t n;
02689     int i;
02690 
02691     /* Get memory for full buffer, including space for trailing EOB's. */
02692     n = len + 2;
02693     buf = (char *) yy_flex_alloc( n );
02694     if ( ! buf )
02695         YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
02696 
02697     for ( i = 0; i < len; ++i )
02698         buf[i] = bytes[i];
02699 
02700     buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
02701 
02702     b = yy_scan_buffer( buf, n );
02703     if ( ! b )
02704         YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
02705 
02706     /* It's okay to grow etc. this buffer, and we should throw it
02707      * away when we're done.
02708      */
02709     b->yy_is_our_buffer = 1;
02710 
02711     return b;
02712     }
02713 #endif
02714 
02715 
02716 #ifndef YY_NO_PUSH_STATE
02717 #ifdef YY_USE_PROTOS
02718 static void yy_push_state( int new_state )
02719 #else
02720 static void yy_push_state( new_state )
02721 int new_state;
02722 #endif
02723     {
02724     if ( yy_start_stack_ptr >= yy_start_stack_depth )
02725         {
02726         yy_size_t new_size;
02727 
02728         yy_start_stack_depth += YY_START_STACK_INCR;
02729         new_size = yy_start_stack_depth * sizeof( int );
02730 
02731         if ( ! yy_start_stack )
02732             yy_start_stack = (int *) yy_flex_alloc( new_size );
02733 
02734         else
02735             yy_start_stack = (int *) yy_flex_realloc(
02736                     (void *) yy_start_stack, new_size );
02737 
02738         if ( ! yy_start_stack )
02739             YY_FATAL_ERROR(
02740             "out of memory expanding start-condition stack" );
02741         }
02742 
02743     yy_start_stack[yy_start_stack_ptr++] = YY_START;
02744 
02745     BEGIN(new_state);
02746     }
02747 #endif
02748 
02749 
02750 #ifndef YY_NO_POP_STATE
02751 static void yy_pop_state()
02752     {
02753     if ( --yy_start_stack_ptr < 0 )
02754         YY_FATAL_ERROR( "start-condition stack underflow" );
02755 
02756     BEGIN(yy_start_stack[yy_start_stack_ptr]);
02757     }
02758 #endif
02759 
02760 
02761 #ifndef YY_NO_TOP_STATE
02762 static int yy_top_state()
02763     {
02764     return yy_start_stack[yy_start_stack_ptr - 1];
02765     }
02766 #endif
02767 
02768 #ifndef YY_EXIT_FAILURE
02769 #define YY_EXIT_FAILURE 2
02770 #endif
02771 
02772 #ifdef YY_USE_PROTOS
02773 static void yy_fatal_error( yyconst char msg[] )
02774 #else
02775 static void yy_fatal_error( msg )
02776 char msg[];
02777 #endif
02778     {
02779     (void) fprintf( stderr, "%s\n", msg );
02780     exit( YY_EXIT_FAILURE );
02781     }
02782 
02783 
02784 
02785 /* Redefine yyless() so it works in section 3 code. */
02786 
02787 #undef yyless
02788 #define yyless(n) \
02789     do \
02790         { \
02791         /* Undo effects of setting up yytext. */ \
02792         yytext[yyleng] = yy_hold_char; \
02793         yy_c_buf_p = yytext + n; \
02794         yy_hold_char = *yy_c_buf_p; \
02795         *yy_c_buf_p = '\0'; \
02796         yyleng = n; \
02797         } \
02798     while ( 0 )
02799 
02800 
02801 /* Internal utility routines. */
02802 
02803 #ifndef yytext_ptr
02804 #ifdef YY_USE_PROTOS
02805 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
02806 #else
02807 static void yy_flex_strncpy( s1, s2, n )
02808 char *s1;
02809 yyconst char *s2;
02810 int n;
02811 #endif
02812     {
02813     register int i;
02814     for ( i = 0; i < n; ++i )
02815         s1[i] = s2[i];
02816     }
02817 #endif
02818 
02819 #ifdef YY_NEED_STRLEN
02820 #ifdef YY_USE_PROTOS
02821 static int yy_flex_strlen( yyconst char *s )
02822 #else
02823 static int yy_flex_strlen( s )
02824 yyconst char *s;
02825 #endif
02826     {
02827     register int n;
02828     for ( n = 0; s[n]; ++n )
02829         ;
02830 
02831     return n;
02832     }
02833 #endif
02834 
02835 
02836 #ifdef YY_USE_PROTOS
02837 static void *yy_flex_alloc( yy_size_t size )
02838 #else
02839 static void *yy_flex_alloc( size )
02840 yy_size_t size;
02841 #endif
02842     {
02843     return (void *) malloc( size );
02844     }
02845 
02846 #ifdef YY_USE_PROTOS
02847 static void *yy_flex_realloc( void *ptr, yy_size_t size )
02848 #else
02849 static void *yy_flex_realloc( ptr, size )
02850 void *ptr;
02851 yy_size_t size;
02852 #endif
02853     {
02854     /* The cast to (char *) in the following accommodates both
02855      * implementations that use char* generic pointers, and those
02856      * that use void* generic pointers.  It works with the latter
02857      * because both ANSI C and C++ allow castless assignment from
02858      * any pointer type to void*, and deal with argument conversions
02859      * as though doing an assignment.
02860      */
02861     return (void *) realloc( (char *) ptr, size );
02862     }
02863 
02864 #ifdef YY_USE_PROTOS
02865 static void yy_flex_free( void *ptr )
02866 #else
02867 static void yy_flex_free( ptr )
02868 void *ptr;
02869 #endif
02870     {
02871     free( ptr );
02872     }
02873 
02874 #if YY_MAIN
02875 int main()
02876     {
02877     yylex();
02878     return 0;
02879     }
02880 #endif
02881 #line 468 "scanner.ll"
02882 
02883 
02884 void kscriptInitFlex( const char *_code, int extension, KLocale* locale )
02885 {
02886    s_koscript_locale = locale;
02887    if ( !s_koscript_locale )
02888    {
02889         if ( !s_defaultLocale )
02890                 s_defaultLocale = new KSLocale;
02891        s_koscript_locale = s_defaultLocale;
02892    }
02893    if ( extension == KSCRIPT_EXTENSION_KSPREAD )
02894         s_kspread = TRUE;
02895    else
02896         s_kspread = FALSE;
02897    yy_switch_to_buffer( yy_scan_string( _code ) );
02898 }
02899 
02900 void kscriptInitFlex( int extension, KLocale* locale )
02901 {
02902    s_koscript_locale = locale;
02903    if ( !s_koscript_locale )
02904    {
02905         if ( !s_defaultLocale )
02906                 s_defaultLocale = new KSLocale;
02907        s_koscript_locale = s_defaultLocale;
02908    }
02909    if ( extension == KSCRIPT_EXTENSION_KSPREAD )
02910         s_kspread = TRUE;
02911    else
02912         s_kspread = FALSE;
02913 }
02914 
02915 void kspread_mode()
02916 {
02917     BEGIN( KSPREAD );
02918 }
KDE Logo
This file is part of the documentation for lib Library Version 1.3.5.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Mar 11 11:47:46 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003