]> git.draconx.ca Git - gob-dx.git/blob - src/lexer.c
Release 0.92.4
[gob-dx.git] / src / lexer.c
1 /* A lexical scanner generated by flex */
2
3 /* Scanner skeleton version:
4  * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
5  */
6
7 #define FLEX_SCANNER
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
10
11 #include <stdio.h>
12
13
14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
15 #ifdef c_plusplus
16 #ifndef __cplusplus
17 #define __cplusplus
18 #endif
19 #endif
20
21
22 #ifdef __cplusplus
23
24 #include <stdlib.h>
25 #include <unistd.h>
26
27 /* Use prototypes in function declarations. */
28 #define YY_USE_PROTOS
29
30 /* The "const" storage-class-modifier is valid. */
31 #define YY_USE_CONST
32
33 #else   /* ! __cplusplus */
34
35 #if __STDC__
36
37 #define YY_USE_PROTOS
38 #define YY_USE_CONST
39
40 #endif  /* __STDC__ */
41 #endif  /* ! __cplusplus */
42
43 #ifdef __TURBOC__
44  #pragma warn -rch
45  #pragma warn -use
46 #include <io.h>
47 #include <stdlib.h>
48 #define YY_USE_CONST
49 #define YY_USE_PROTOS
50 #endif
51
52 #ifdef YY_USE_CONST
53 #define yyconst const
54 #else
55 #define yyconst
56 #endif
57
58
59 #ifdef YY_USE_PROTOS
60 #define YY_PROTO(proto) proto
61 #else
62 #define YY_PROTO(proto) ()
63 #endif
64
65 /* Returned upon end-of-file. */
66 #define YY_NULL 0
67
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69  * integer for use as an array index.  If the signed char is negative,
70  * we want to instead treat it as an 8-bit unsigned char, hence the
71  * double cast.
72  */
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
74
75 /* Enter a start condition.  This macro really ought to take a parameter,
76  * but we do it the disgusting crufty way forced on us by the ()-less
77  * definition of BEGIN.
78  */
79 #define BEGIN yy_start = 1 + 2 *
80
81 /* Translate the current start state into a value that can be later handed
82  * to BEGIN to return to the state.  The YYSTATE alias is for lex
83  * compatibility.
84  */
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
87
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
90
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
93
94 #define YY_END_OF_BUFFER_CHAR 0
95
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
98
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
100
101 extern int yyleng;
102 extern FILE *yyin, *yyout;
103
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
107
108 /* The funky do-while in the following #define is used to turn the definition
109  * int a single C statement (which needs a semi-colon terminator).  This
110  * avoids problems with code like:
111  *
112  *      if ( condition_holds )
113  *              yyless( 5 );
114  *      else
115  *              do_something_else();
116  *
117  * Prior to using the do-while the compiler would get upset at the
118  * "else" because it interpreted the "if" statement as being all
119  * done when it reached the ';' after the yyless() call.
120  */
121
122 /* Return all but the first 'n' matched characters back to the input stream. */
123
124 #define yyless(n) \
125         do \
126                 { \
127                 /* Undo effects of setting up yytext. */ \
128                 *yy_cp = yy_hold_char; \
129                 YY_RESTORE_YY_MORE_OFFSET \
130                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
132                 } \
133         while ( 0 )
134
135 #define unput(c) yyunput( c, yytext_ptr )
136
137 /* The following is because we cannot portably get our hands on size_t
138  * (without autoconf's help, which isn't available because we want
139  * flex-generated scanners to compile on their own).
140  */
141 typedef unsigned int yy_size_t;
142
143
144 struct yy_buffer_state
145         {
146         FILE *yy_input_file;
147
148         char *yy_ch_buf;                /* input buffer */
149         char *yy_buf_pos;               /* current position in input buffer */
150
151         /* Size of input buffer in bytes, not including room for EOB
152          * characters.
153          */
154         yy_size_t yy_buf_size;
155
156         /* Number of characters read into yy_ch_buf, not including EOB
157          * characters.
158          */
159         int yy_n_chars;
160
161         /* Whether we "own" the buffer - i.e., we know we created it,
162          * and can realloc() it to grow it, and should free() it to
163          * delete it.
164          */
165         int yy_is_our_buffer;
166
167         /* Whether this is an "interactive" input source; if so, and
168          * if we're using stdio for input, then we want to use getc()
169          * instead of fread(), to make sure we stop fetching input after
170          * each newline.
171          */
172         int yy_is_interactive;
173
174         /* Whether we're considered to be at the beginning of a line.
175          * If so, '^' rules will be active on the next match, otherwise
176          * not.
177          */
178         int yy_at_bol;
179
180         /* Whether to try to fill the input buffer when we reach the
181          * end of it.
182          */
183         int yy_fill_buffer;
184
185         int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188         /* When an EOF's been seen but there's still some text to process
189          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190          * shouldn't try reading from the input source any more.  We might
191          * still have a bunch of tokens to match, though, because of
192          * possible backing-up.
193          *
194          * When we actually see the EOF, we change the status to "new"
195          * (via yyrestart()), so that the user can continue scanning by
196          * just pointing yyin at a new input file.
197          */
198 #define YY_BUFFER_EOF_PENDING 2
199         };
200
201 static YY_BUFFER_STATE yy_current_buffer = 0;
202
203 /* We provide macros for accessing buffer states in case in the
204  * future we want to put the buffer states in a more general
205  * "scanner state".
206  */
207 #define YY_CURRENT_BUFFER yy_current_buffer
208
209
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
212
213 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
214
215
216 int yyleng;
217
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1;         /* whether we need to initialize */
221 static int yy_start = 0;        /* start state number */
222
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224  * instead of setting up a fresh yyin.  A bit of a hack ...
225  */
226 static int yy_did_buffer_switch_on_eof;
227
228 void yyrestart YY_PROTO(( FILE *input_file ));
229
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
237
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
241
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
245
246 #define yy_new_buffer yy_create_buffer
247
248 #define yy_set_interactive(is_interactive) \
249         { \
250         if ( ! yy_current_buffer ) \
251                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252         yy_current_buffer->yy_is_interactive = is_interactive; \
253         }
254
255 #define yy_set_bol(at_bol) \
256         { \
257         if ( ! yy_current_buffer ) \
258                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259         yy_current_buffer->yy_at_bol = at_bol; \
260         }
261
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
263
264
265 #define YY_USES_REJECT
266 typedef unsigned char YY_CHAR;
267 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
268 typedef int yy_state_type;
269 extern char *yytext;
270 #define yytext_ptr yytext
271
272 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
273 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
274 static int yy_get_next_buffer YY_PROTO(( void ));
275 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
276
277 /* Done after the current pattern has been matched and before the
278  * corresponding action - sets up yytext.
279  */
280 #define YY_DO_BEFORE_ACTION \
281         yytext_ptr = yy_bp; \
282         yyleng = (int) (yy_cp - yy_bp); \
283         yy_hold_char = *yy_cp; \
284         *yy_cp = '\0'; \
285         yy_c_buf_p = yy_cp;
286
287 #define YY_NUM_RULES 87
288 #define YY_END_OF_BUFFER 88
289 static yyconst short int yy_acclist[424] =
290     {   0,
291        88,   85,   87,   84,   85,   87,    1,   86,   87,   85,
292        86,   87,   85,   87,   85,   87,   85,   87,   84,   85,
293        87,   85,   87,   85,   87,   26,   85,   87,    1,   27,
294        86,   87,   26,   85,   86,   87,   26,   85,   87,   26,
295        85,   87,   49,   85,   87,    1,   50,   86,   87,   49,
296        85,   86,   87,   42,   49,   85,   87,   49,   85,   87,
297        49,   85,   87,   49,   85,   87,   49,   85,   87,   47,
298        49,   85,   87,   48,   49,   85,   87,   49,   85,   87,
299        49,   85,   87,   45,   85,   87,    1,   46,   86,   87,
300        45,   85,   86,   87,   44,   45,   85,   87,   45,   85,
301
302        87,   45,   85,   87,   85,   87,   85,   87,   79,   85,
303        87,   79,   85,   87,   79,   85,   87,   79,   85,   87,
304        79,   85,   87,   81,   85,   87,   85,   87,   85,   87,
305        77,   85,   87,   77,   85,   87,   85,   87,   79,   85,
306        87,   79,   85,   87,   79,   85,   87,   79,   85,   87,
307        79,   85,   87,   79,   85,   87,   79,   85,   87,   79,
308        85,   87,   79,   85,   87,   79,   85,   87,   79,   85,
309        87,   79,   85,   87,   82,   85,   87,   83,   85,   87,
310         9,   85,   87,    9,   85,   86,   87,    9,   85,   87,
311         9,   85,   87,    9,   85,   87,    9,   85,   87,   14,
312
313        85,   87,   14,   85,   86,   87,   14,   85,   87,   14,
314        85,   87,   14,   85,   87,   14,   85,   87,   17,   85,
315        87,   17,   85,   86,   87,   17,   85,   87,   17,   85,
316        87,   21,   33,   25,   22,   41,   34,   43,   23,   79,
317        78,   79,   79,   79,   79,   77,   24,   77,   77,   80,
318        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
319        79,   79,   79,   79,   79,   79,   79,   79,    8,    6,
320        13,   10,   12,   11,   13,   16,   15,    3,   28,   32,
321        39,   35,   37,   18,   19,   78,   79,   79,   79,   79,
322        68,   77,   20,   77,   77,   79,   79,   79,   79,   79,
323
324        79,   63,   79,   79,   79,   79,   79,   79,   79,   79,
325        79,   79,   79,   79,   79,   79,   11,   29,   30,   31,
326        40,   36,   38,   79,   79,   54,   79,   53,   79,    5,
327        79,   66,   79,   79,   79,   58,   79,   79,   61,   79,
328        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
329        79,   55,   79,    7,   51,   79,   79,   67,   79,   79,
330        64,   79,   79,   79,   79,   79,   79,   62,   79,   79,
331        79,   79,   57,   79,   79,   79,   79,   79,   65,   79,
332        79,   79,   79,   79,   69,   79,   74,   79,   59,   79,
333        56,   79,   79,   79,   79,   79,   76,   79,   79,   70,
334
335        79,   79,   79,   73,   79,   79,   72,   79,   75,   79,
336        79,   60,   79,   79,   71,   79,   79,    4,   79,    2,
337         2,   79,   52
338     } ;
339
340 static yyconst short int yy_accept[370] =
341     {   0,
342         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
343         1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
344         4,    7,   10,   13,   15,   17,   19,   22,   24,   26,
345        29,   33,   37,   40,   43,   46,   50,   54,   58,   61,
346        64,   67,   70,   74,   78,   81,   84,   87,   91,   95,
347        99,  102,  105,  107,  109,  112,  115,  118,  121,  124,
348       127,  129,  131,  134,  137,  139,  142,  145,  148,  151,
349       154,  157,  160,  163,  166,  169,  172,  175,  178,  181,
350       184,  188,  191,  194,  197,  200,  203,  207,  210,  213,
351       216,  219,  222,  226,  229,  232,  233,  233,  233,  233,
352
353       233,  233,  233,  233,  233,  234,  234,  235,  235,  235,
354       235,  235,  236,  236,  237,  237,  237,  238,  239,  240,
355       240,  240,  241,  242,  243,  244,  245,  246,  246,  247,
356       248,  248,  248,  249,  249,  249,  250,  250,  251,  252,
357       253,  254,  255,  256,  257,  258,  259,  260,  261,  262,
358       263,  264,  265,  266,  267,  268,  269,  270,  270,  270,
359       270,  271,  271,  272,  272,  272,  272,  273,  274,  274,
360       276,  277,  278,  278,  279,  279,  279,  279,  279,  280,
361       280,  280,  281,  281,  281,  281,  282,  282,  282,  282,
362       283,  284,  284,  285,  285,  285,  286,  286,  287,  288,
363
364       289,  290,  291,  292,  293,  293,  293,  294,  295,  296,
365       296,  297,  298,  299,  300,  301,  302,  304,  305,  306,
366       307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
367       317,  317,  318,  318,  318,  318,  319,  319,  320,  321,
368       321,  321,  322,  323,  324,  324,  325,  326,  328,  330,
369       330,  331,  332,  334,  335,  336,  338,  339,  341,  342,
370       343,  344,  345,  346,  347,  348,  349,  350,  351,  352,
371       354,  354,  355,  355,  355,  355,  356,  356,  356,  356,
372       356,  356,  357,  358,  360,  361,  363,  364,  365,  366,
373       367,  368,  370,  371,  372,  373,  375,  376,  377,  377,
374
375       377,  377,  377,  377,  377,  378,  379,  381,  382,  383,
376       384,  385,  387,  389,  391,  393,  394,  395,  395,  395,
377       395,  395,  395,  396,  397,  399,  400,  402,  403,  404,
378       406,  406,  406,  406,  406,  406,  407,  409,  411,  412,
379       414,  414,  414,  414,  414,  414,  415,  417,  417,  417,
380       417,  417,  418,  418,  418,  418,  418,  419,  420,  421,
381       421,  421,  423,  423,  423,  423,  423,  424,  424
382     } ;
383
384 static yyconst int yy_ec[256] =
385     {   0,
386         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
387         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
388         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
389         1,    5,    1,    6,    7,    1,    8,    1,    9,    1,
390         1,   10,    1,    1,    1,   11,   12,   13,   14,   14,
391        14,   14,   14,   14,   14,   15,   15,   16,    1,   17,
392         1,   18,    1,    1,   19,   19,   20,   19,   21,   22,
393        23,   24,   23,   23,   25,   23,   26,   23,   27,   23,
394        23,   28,   23,   29,   30,   23,   23,   23,   23,   23,
395        31,   32,   33,    1,   23,    1,   34,   35,   36,   37,
396
397        38,   39,   40,   41,   42,   23,   23,   43,   44,   45,
398        46,   47,   48,   49,   50,   51,   52,   53,   23,   54,
399        23,   23,   55,    1,   56,    1,    1,    1,    1,    1,
400         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
401         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
402         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
403         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
404         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
405         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
406         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
407
408         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
409         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
410         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
411         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
412         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
413         1,    1,    1,    1,    1
414     } ;
415
416 static yyconst int yy_meta[57] =
417     {   0,
418         1,    2,    3,    1,    2,    1,    1,    1,    1,    1,
419         1,    1,    4,    4,    4,    5,    1,    1,    6,    6,
420         6,    6,    7,    7,    7,    7,    7,    7,    7,    7,
421         1,    1,    1,    6,    6,    6,    6,    6,    6,    7,
422         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
423         7,    7,    7,    7,    1,    1
424     } ;
425
426 static yyconst short int yy_base[390] =
427     {   0,
428         0,   35,    3,    5,   82,  136,   16,   24,  192,    0,
429       238,    0,    7,   49,   31,   63,   66,   77,  816,  817,
430       817,  817,  817,    4,  788,  771,   44,   49,  775,  817,
431       817,  817,  800,  784,  817,  817,  817,  817,   66,   11,
432       783,    0,  817,  817,   53,  753,  817,  817,  817,  817,
433       781,    0,   50,    0,  791,   47,    2,   28,   66,  817,
434        86,   99,  102,  112,  116,   63,  112,   86,   89,   90,
435       102,  104,  119,  108,  125,  120,  135,  817,  817,  817,
436       817,  794,  778,  168,  177,  817,  817,  792,  776,  252,
437       253,  799,  798,  107,  156,  817,  797,  770,  764,  259,
438
439       759,  120,  228,  105,  817,  748,  817,  786,  254,  785,
440       784,  817,  789,  817,  265,  746,  817,  817,  817,  787,
441       773,  772,  771,  145,  153,  243,  255,  775,  171,  775,
442       781,  285,  290,  300,    0,  305,  308,  752,  252,  262,
443       257,  136,  279,  266,  301,  290,  308,  309,  311,  310,
444       312,  314,  313,  317,  316,  318,  817,  334,  335,  346,
445       817,  361,  817,  366,  367,  378,  817,  382,  770,  817,
446       817,  817,  778,  817,  756,  729,  735,  722,  817,  742,
447       720,  817,  719,  731,  720,  817,  762,  761,  760,  817,
448       817,  765,  817,  731,  763,  817,  749,  748,    8,  339,
449
450       334,  340,  817,  360,  389,  760,  817,  382,    0,  385,
451       370,  366,  377,  326,  372,  385,  746,  386,  387,  388,
452       389,  390,  391,  394,  393,  392,  401,  397,  395,  396,
453       446,  817,  740,  710,  369,  817,  722,  817,  817,  705,
454       715,  817,  817,  817,  713,  407,  405,  739,  738,  427,
455       817,  409,  737,  415,  424,  736,  419,  735,  429,  434,
456       438,  436,  440,  441,  442,  443,  444,  445,  447,  734,
457       466,  817,  485,  491,  721,  817,  702,  709,  712,  696,
458       692,  449,  448,  727,  457,  726,  459,  465,  468,  475,
459       481,  725,  482,  484,  486,  724,  487,  488,  717,  691,
460
461       688,  685,  697,  697,  490,  493,  717,  492,  494,  497,
462       498,  716,  715,  714,  713,  502,  499,  698,  465,  689,
463       676,  687,   48,  507,  708,  508,  703,  510,  513,  692,
464       687,  657,  614,  525,  531,  523,  632,  577,  518,  576,
465       566,  542,  547,  549,  539,  528,  560,  551,  494,  546,
466       559,  531,  386,  306,  553,  563,  817,  554,  817,  249,
467       560,  270,  141,  565,  581,  585,  817,  817,  596,  603,
468       610,  617,  624,  631,  638,  645,  652,  654,  658,  665,
469       672,  679,  683,  687,  694,  698,  703,  709,  716
470     } ;
471
472 static yyconst short int yy_def[390] =
473     {   0,
474       369,  369,  370,  370,  371,  371,  372,  372,  368,    9,
475         9,   11,  373,  373,  374,  374,  375,  375,  368,  368,
476       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
477       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
478       368,  376,  368,  368,  368,  368,  368,  368,  368,  368,
479       368,  377,  368,  378,  379,  379,  379,  379,  379,  368,
480       368,  368,  368,  368,  368,  379,  379,  379,  379,  379,
481       379,  379,  379,  379,  379,  379,  379,  368,  368,  368,
482       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
483       368,  368,  368,  368,  368,  368,  380,  368,  368,  368,
484
485       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
486       368,  368,  381,  368,  368,  368,  368,  368,  368,  382,
487       383,  379,  384,  379,  379,  379,  379,  368,  368,  368,
488       385,  368,  368,  368,  386,  368,  368,  368,  379,  379,
489       379,  379,  379,  379,  379,  379,  379,  379,  379,  379,
490       379,  379,  379,  379,  379,  379,  368,  368,  368,  368,
491       368,  387,  368,  368,  368,  368,  368,  368,  368,  368,
492       368,  368,  380,  368,  368,  368,  368,  368,  368,  368,
493       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
494       368,  381,  368,  368,  382,  368,  383,  384,  379,  379,
495
496       379,  379,  368,  368,  368,  385,  368,  368,  386,  368,
497       379,  379,  379,  379,  379,  379,  379,  379,  379,  379,
498       379,  379,  379,  379,  379,  379,  379,  379,  379,  379,
499       388,  368,  368,  368,  368,  368,  368,  368,  368,  368,
500       368,  368,  368,  368,  368,  379,  379,  379,  379,  368,
501       368,  379,  379,  379,  379,  379,  379,  379,  379,  379,
502       379,  379,  379,  379,  379,  379,  379,  379,  379,  379,
503       368,  368,  388,  368,  368,  368,  368,  368,  368,  368,
504       368,  379,  379,  379,  379,  379,  379,  379,  379,  379,
505       379,  379,  379,  379,  379,  379,  379,  379,  368,  368,
506
507       368,  368,  368,  368,  379,  379,  379,  379,  379,  379,
508       379,  379,  379,  379,  379,  379,  379,  368,  368,  368,
509       368,  368,  379,  379,  379,  379,  379,  379,  379,  379,
510       368,  368,  368,  368,  368,  379,  379,  379,  379,  379,
511       368,  368,  368,  368,  368,  379,  379,  368,  368,  368,
512       389,  379,  368,  368,  368,  389,  368,  379,  368,  368,
513       368,  379,  368,  368,  368,  368,  368,    0,  368,  368,
514       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
515       368,  368,  368,  368,  368,  368,  368,  368,  368
516     } ;
517
518 static yyconst short int yy_nxt[874] =
519     {   0,
520       368,   21,   22,   23,   21,   31,   32,   31,   32,   22,
521        81,   24,   33,   96,   33,   97,   82,  123,   48,   49,
522       112,   50,  113,  123,  368,   25,   48,   49,   34,   50,
523        34,  246,   83,   22,   87,   26,   27,   22,   23,   27,
524        88,   51,   28,  123,  125,  100,   24,   52,  100,   51,
525        84,   22,   81,   84,  115,   52,   89,  115,   85,  119,
526        25,  120,  123,  123,   90,   22,   87,   90,   22,   93,
527        26,  108,   91,  124,   83,   94,  126,  336,  123,   22,
528        93,  123,  102,   29,   36,   37,   94,   38,   89,  103,
529        39,   95,  101,   40,  116,  104,  128,  109,  129,  129,
530
531       129,  123,   95,  105,  123,  123,  127,   41,  130,  171,
532       131,  139,  132,   42,  133,  133,  134,  123,  172,  123,
533       110,  111,  132,  123,  136,  136,  136,  123,  137,  137,
534       137,  142,  144,  143,  123,  123,   43,   44,   36,   37,
535       123,   38,   45,   46,   39,  183,  145,   40,  138,  146,
536       123,  123,  140,  184,  125,  135,  149,  141,  171,  150,
537       123,   41,  177,  147,  154,  151,  152,   42,  123,  158,
538       178,  148,  158,  199,  179,  153,  155,  159,  160,  161,
539       156,  162,   98,  204,  204,  204,  200,  214,  157,  183,
540        43,   44,   20,   21,   22,   23,   21,   20,   20,   20,
541
542        20,   20,   20,   53,   20,   20,   20,   54,   20,   20,
543        55,   55,   55,   55,   55,   55,   55,   56,   55,   55,
544        55,   55,   20,   20,   20,   55,   55,   57,   55,   55,
545        58,   55,   55,   55,   55,   55,   55,   55,   55,   55,
546        55,   55,   59,   55,   55,   55,   60,   20,   61,   62,
547        63,   64,   64,  164,  166,  167,  164,  168,  123,  187,
548       100,  165,  169,  100,  170,  180,  115,  123,   65,  115,
549       123,   66,  123,   67,   68,   69,   70,  123,  181,   71,
550        72,  123,  182,   73,   74,  123,  363,   75,  201,   76,
551        77,  211,   78,   79,  123,  212,  202,  208,  208,  208,
552
553       132,  213,  133,  133,  134,  123,  116,  101,  188,  189,
554       132,  216,  134,  134,  134,  132,  123,  136,  136,  136,
555       137,  137,  137,  123,  123,  123,  123,  123,  123,  123,
556       215,  123,  123,  123,  218,  158,  160,  161,  158,  162,
557       138,  123,  360,  159,  223,  219,  220,  160,  161,  123,
558       160,  217,  221,  225,  123,  123,  222,  224,  227,  230,
559       255,  226,  160,  161,  229,  160,  228,  164,  166,  167,
560       164,  168,  204,  204,  204,  165,  169,  248,  232,  166,
561       167,  123,  166,  166,  167,  123,  166,  123,  247,  249,
562       250,  251,  123,  250,  208,  208,  208,  137,  137,  137,
563
564       123,  123,  123,  123,  123,  123,  123,  123,  123,  123,
565       123,  123,  123,  359,  253,  256,  123,  138,  257,  277,
566       123,  252,  123,  179,  123,  258,  254,  282,  250,  251,
567       123,  250,  270,  263,  123,  259,  260,  265,  268,  123,
568       262,  261,  264,  266,  123,  269,  267,  271,  272,  123,
569       271,  123,  283,  123,  249,  123,  123,  123,  123,  123,
570       123,  274,  123,  123,  123,  284,  285,  271,  272,  286,
571       271,  289,  123,  290,  123,  293,  305,  287,  295,  294,
572       123,  291,  288,  123,  297,  306,  271,  272,  296,  271,
573       123,  292,  271,  272,  307,  271,  123,  123,  298,  123,
574
575       274,  123,  123,  123,  308,  123,  309,  123,  123,  123,
576       311,  323,  123,  123,  123,  332,  312,  123,  310,  182,
577       314,  317,  123,  123,  313,  123,  344,  354,  123,  344,
578       326,  316,  345,  123,  327,  345,  315,  324,  123,  329,
579       325,  330,  346,  123,  351,  338,  123,  339,  328,  340,
580       344,  358,  352,  344,  347,  351,  355,  337,  350,  350,
581       350,  350,  350,  350,  357,  361,  361,  361,  357,  123,
582       364,  353,  361,  361,  361,  123,  357,  365,  365,  365,
583       357,  362,  366,  367,  349,  366,  366,  367,  181,  366,
584       348,  123,  123,  365,  365,  365,   20,   20,   20,   20,
585
586        20,   20,   20,   30,   30,   30,   30,   30,   30,   30,
587        35,   35,   35,   35,   35,   35,   35,   47,   47,   47,
588        47,   47,   47,   47,   80,   80,   80,   80,   80,   80,
589        80,   86,   86,   86,   86,   86,   86,   86,   92,   92,
590        92,   92,   92,   92,   92,  114,  114,  123,  114,  114,
591       114,  114,  118,  118,  343,  118,  118,  118,  118,  121,
592       121,  122,  122,  122,  122,  173,  173,  173,  173,  173,
593       173,  173,  192,  192,  192,  192,  192,  192,  192,  195,
594       195,  195,  195,  195,  195,  195,  197,  197,  197,  197,
595       198,  198,  198,  198,  206,  206,  206,  206,  206,  206,
596
597       206,  209,  342,  209,  231,  231,  341,  123,  231,  231,
598       273,  273,  273,  273,  273,  273,  356,  356,  123,  356,
599       356,  356,  356,  123,  335,  334,  333,  331,  123,  123,
600       123,  123,  123,  322,  321,  320,  319,  178,  318,  123,
601       123,  123,  123,  304,  303,  302,  301,  300,  299,  123,
602       123,  123,  123,  123,  123,  281,  280,  279,  278,  276,
603       275,  123,  207,  123,  123,  196,  245,  193,  244,  243,
604       242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
605       174,  232,  210,  207,  205,  203,  123,  123,  123,  196,
606       194,  193,  191,  190,  186,  185,  106,  176,  175,  174,
607
608       171,  171,   98,  163,   98,  157,  123,   98,  117,   98,
609        98,  107,  106,   99,   98,  368,   19,  368,  368,  368,
610       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
611       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
612       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
613       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
614       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
615       368,  368,  368
616     } ;
617
618 static yyconst short int yy_chk[874] =
619     {   0,
620         0,    1,    1,    1,    1,    3,    3,    4,    4,   13,
621        13,    1,    3,   24,    4,   24,   13,   57,    7,    7,
622        40,    7,   40,  199,    0,    1,    8,    8,    3,    8,
623         4,  199,   13,   15,   15,    1,    2,    2,    2,    2,
624        15,    7,    2,   58,   57,   27,    2,    7,   27,    8,
625        14,   14,   14,   14,   45,    8,   15,   45,   14,   53,
626         2,   53,   56,  323,   16,   16,   16,   16,   17,   17,
627         2,   39,   16,   56,   14,   17,   58,  323,   66,   18,
628        18,   59,   28,    2,    5,    5,   18,    5,   16,   28,
629         5,   17,   27,    5,   45,   28,   61,   39,   61,   61,
630
631        61,   68,   18,   28,   69,   70,   59,    5,   62,   94,
632        62,   66,   63,    5,   63,   63,   63,   71,   94,   72,
633        39,   39,   64,   74,   64,   64,   64,   67,   65,   65,
634        65,   68,   70,   69,   73,   76,    5,    5,    6,    6,
635        75,    6,    6,    6,    6,  104,   71,    6,   65,   72,
636        77,  142,   67,  104,   67,   63,   74,   67,   95,   74,
637       124,    6,  102,   73,   76,   75,   75,    6,  125,   84,
638       102,   73,   84,  124,  102,   75,   77,   84,   85,   85,
639        77,   85,   95,  129,  129,  129,  125,  142,   85,  363,
640         6,    6,    9,    9,    9,    9,    9,    9,    9,    9,
641
642         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
643         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
644         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
645         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
646         9,    9,    9,    9,    9,    9,    9,    9,   11,   11,
647        11,   11,   11,   90,   91,   91,   90,   91,  126,  109,
648       100,   90,   91,  100,   91,  103,  115,  139,   11,  115,
649       127,   11,  141,   11,   11,   11,   11,  140,  103,   11,
650        11,  144,  103,   11,   11,  362,  360,   11,  126,   11,
651        11,  139,   11,   11,  143,  140,  127,  132,  132,  132,
652
653       133,  141,  133,  133,  133,  146,  115,  100,  109,  109,
654       134,  144,  134,  134,  134,  136,  145,  136,  136,  136,
655       137,  137,  137,  147,  148,  150,  149,  151,  153,  152,
656       143,  155,  154,  156,  146,  158,  159,  159,  158,  159,
657       137,  214,  354,  158,  150,  147,  148,  160,  160,  201,
658       160,  145,  149,  152,  200,  202,  149,  151,  154,  156,
659       214,  153,  162,  162,  155,  162,  154,  164,  165,  165,
660       164,  165,  204,  204,  204,  164,  165,  201,  165,  166,
661       166,  212,  166,  168,  168,  211,  168,  215,  200,  202,
662       205,  205,  213,  205,  208,  208,  208,  210,  210,  210,
663
664       216,  218,  219,  220,  221,  222,  223,  226,  225,  224,
665       229,  230,  228,  353,  212,  215,  227,  210,  216,  235,
666       247,  211,  246,  235,  252,  218,  213,  246,  250,  250,
667       254,  250,  230,  223,  257,  219,  220,  225,  228,  255,
668       222,  221,  224,  226,  259,  229,  227,  231,  231,  260,
669       231,  262,  252,  261,  247,  263,  264,  265,  266,  267,
670       268,  231,  269,  283,  282,  254,  255,  271,  271,  257,
671       271,  261,  285,  262,  287,  265,  282,  259,  266,  265,
672       288,  263,  260,  289,  268,  283,  273,  273,  267,  273,
673       290,  264,  274,  274,  285,  274,  291,  293,  269,  294,
674
675       273,  295,  297,  298,  287,  305,  288,  308,  306,  309,
676       290,  305,  310,  311,  317,  319,  291,  316,  289,  319,
677       294,  298,  324,  326,  293,  328,  334,  349,  329,  334,
678       309,  297,  335,  339,  310,  335,  295,  306,  336,  316,
679       308,  317,  336,  346,  345,  326,  352,  328,  311,  329,
680       344,  352,  346,  344,  339,  345,  350,  324,  350,  350,
681       350,  344,  344,  344,  351,  355,  355,  355,  356,  358,
682       361,  348,  361,  361,  361,  347,  351,  364,  364,  364,
683       356,  358,  365,  365,  343,  365,  366,  366,  342,  366,
684       341,  340,  338,  365,  365,  365,  369,  369,  369,  369,
685
686       369,  369,  369,  370,  370,  370,  370,  370,  370,  370,
687       371,  371,  371,  371,  371,  371,  371,  372,  372,  372,
688       372,  372,  372,  372,  373,  373,  373,  373,  373,  373,
689       373,  374,  374,  374,  374,  374,  374,  374,  375,  375,
690       375,  375,  375,  375,  375,  376,  376,  337,  376,  376,
691       376,  376,  377,  377,  333,  377,  377,  377,  377,  378,
692       378,  379,  379,  379,  379,  380,  380,  380,  380,  380,
693       380,  380,  381,  381,  381,  381,  381,  381,  381,  382,
694       382,  382,  382,  382,  382,  382,  383,  383,  383,  383,
695       384,  384,  384,  384,  385,  385,  385,  385,  385,  385,
696
697       385,  386,  332,  386,  387,  387,  331,  330,  387,  387,
698       388,  388,  388,  388,  388,  388,  389,  389,  327,  389,
699       389,  389,  389,  325,  322,  321,  320,  318,  315,  314,
700       313,  312,  307,  304,  303,  302,  301,  300,  299,  296,
701       292,  286,  284,  281,  280,  279,  278,  277,  275,  270,
702       258,  256,  253,  249,  248,  245,  241,  240,  237,  234,
703       233,  217,  206,  198,  197,  195,  194,  192,  189,  188,
704       187,  185,  184,  183,  181,  180,  178,  177,  176,  175,
705       173,  169,  138,  131,  130,  128,  123,  122,  121,  120,
706       116,  113,  111,  110,  108,  106,  101,   99,   98,   97,
707
708        93,   92,   89,   88,   83,   82,   55,   51,   46,   41,
709        34,   33,   29,   26,   25,   19,  368,  368,  368,  368,
710       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
711       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
712       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
713       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
714       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
715       368,  368,  368
716     } ;
717
718 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
719 static char *yy_full_match;
720 static int yy_lp;
721 #define REJECT \
722 { \
723 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
724 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
725 ++yy_lp; \
726 goto find_rule; \
727 }
728 #define yymore() yymore_used_but_not_detected
729 #define YY_MORE_ADJ 0
730 #define YY_RESTORE_YY_MORE_OFFSET
731 char *yytext;
732 #line 1 "lexer.l"
733 #define INITIAL 0
734 /* GOB C Preprocessor
735  * Copyright (C) 1999 the Free Software Foundation.
736  *
737  * Author: George Lebl
738  *
739  * This program is free software; you can redistribute it and/or modify
740  * it under the terms of the GNU General Public License as published by
741  * the Free Software Foundation; either version 2 of the License, or
742  * (at your option) any later version.
743  *
744  * This program is distributed in the hope that it will be useful,
745  * but WITHOUT ANY WARRANTY; without even the implied warranty of
746  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
747  * GNU General Public License for more details.
748  *
749  * You should have received a copy of the GNU General Public License
750  * along with this program; if not, write to the  Free Software
751  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
752  * USA.
753  */
754 #line 22 "lexer.l"
755
756 #include "config.h"
757 #include <glib.h>
758 #include <string.h>
759
760 #include "parse.h"
761 #include "main.h"
762 #include "util.h"
763
764 static int parenth_depth = 0;
765 static int before_comment = INITIAL;
766 static gboolean class_after_c = FALSE;
767 static int code_type = CCODE;
768
769 /* GTK+ doc stuff */
770 static char *gtk_doc_func = NULL; /* current gtk-doc func */
771 GHashTable *gtk_doc_hash = NULL;
772
773 static GString *cbuf = NULL;
774 int ccode_line = 1;
775
776 GList *include_files = NULL;
777 /* 0 no, 1 means yes, 2+ means don't even start looking anymore */
778 static int look_for_includes = 0;
779
780 int line_no = 1;
781
782 static void
783 clear_cbuf(void)
784 {
785         if(!cbuf) {
786                 cbuf = g_string_new("");
787         } else {
788                 cbuf = g_string_assign(cbuf,"");
789         }
790 }
791
792 static void
793 add_to_cbuf(char *s)
794 {
795         if(!cbuf) {
796                 cbuf = g_string_new(s);
797         } else {
798                 cbuf = g_string_append(cbuf,s);
799         }
800 }
801
802 static void
803 add_gtk_doc_func(void)
804 {
805         if(!gtk_doc_func)
806                 return;
807
808         if(!gtk_doc_hash)
809                 gtk_doc_hash = g_hash_table_new(g_str_hash, g_str_equal);
810         g_hash_table_insert(gtk_doc_hash, gtk_doc_func, g_strdup(cbuf->str));
811         clear_cbuf();
812
813         gtk_doc_func = NULL;
814 }
815
816
817 #define COMMENT 1
818
819 #define C_CODE 2
820
821 #define C_CODE_STRING 3
822
823 #define CLASS_CODE 4
824
825 #define CLASS_CODE_I 5
826
827 #define GTK_DOC_BEFORE_NAME 6
828
829 #define GTK_DOC 7
830
831 #define GTK_DOC_LINE 8
832
833 #line 834 "lex.yy.c"
834
835 /* Macros after this point can all be overridden by user definitions in
836  * section 1.
837  */
838
839 #ifndef YY_SKIP_YYWRAP
840 #ifdef __cplusplus
841 extern "C" int yywrap YY_PROTO(( void ));
842 #else
843 extern int yywrap YY_PROTO(( void ));
844 #endif
845 #endif
846
847 #ifndef YY_NO_UNPUT
848 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
849 #endif
850
851 #ifndef yytext_ptr
852 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
853 #endif
854
855 #ifdef YY_NEED_STRLEN
856 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
857 #endif
858
859 #ifndef YY_NO_INPUT
860 #ifdef __cplusplus
861 static int yyinput YY_PROTO(( void ));
862 #else
863 static int input YY_PROTO(( void ));
864 #endif
865 #endif
866
867 #if YY_STACK_USED
868 static int yy_start_stack_ptr = 0;
869 static int yy_start_stack_depth = 0;
870 static int *yy_start_stack = 0;
871 #ifndef YY_NO_PUSH_STATE
872 static void yy_push_state YY_PROTO(( int new_state ));
873 #endif
874 #ifndef YY_NO_POP_STATE
875 static void yy_pop_state YY_PROTO(( void ));
876 #endif
877 #ifndef YY_NO_TOP_STATE
878 static int yy_top_state YY_PROTO(( void ));
879 #endif
880
881 #else
882 #define YY_NO_PUSH_STATE 1
883 #define YY_NO_POP_STATE 1
884 #define YY_NO_TOP_STATE 1
885 #endif
886
887 #ifdef YY_MALLOC_DECL
888 YY_MALLOC_DECL
889 #else
890 #if __STDC__
891 #ifndef __cplusplus
892 #include <stdlib.h>
893 #endif
894 #else
895 /* Just try to get by without declaring the routines.  This will fail
896  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
897  * or sizeof(void*) != sizeof(int).
898  */
899 #endif
900 #endif
901
902 /* Amount of stuff to slurp up with each read. */
903 #ifndef YY_READ_BUF_SIZE
904 #define YY_READ_BUF_SIZE 8192
905 #endif
906
907 /* Copy whatever the last rule matched to the standard output. */
908
909 #ifndef ECHO
910 /* This used to be an fputs(), but since the string might contain NUL's,
911  * we now use fwrite().
912  */
913 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
914 #endif
915
916 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
917  * is returned in "result".
918  */
919 #ifndef YY_INPUT
920 #define YY_INPUT(buf,result,max_size) \
921         if ( yy_current_buffer->yy_is_interactive ) \
922                 { \
923                 int c = '*', n; \
924                 for ( n = 0; n < max_size && \
925                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
926                         buf[n] = (char) c; \
927                 if ( c == '\n' ) \
928                         buf[n++] = (char) c; \
929                 if ( c == EOF && ferror( yyin ) ) \
930                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
931                 result = n; \
932                 } \
933         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
934                   && ferror( yyin ) ) \
935                 YY_FATAL_ERROR( "input in flex scanner failed" );
936 #endif
937
938 /* No semi-colon after return; correct usage is to write "yyterminate();" -
939  * we don't want an extra ';' after the "return" because that will cause
940  * some compilers to complain about unreachable statements.
941  */
942 #ifndef yyterminate
943 #define yyterminate() return YY_NULL
944 #endif
945
946 /* Number of entries by which start-condition stack grows. */
947 #ifndef YY_START_STACK_INCR
948 #define YY_START_STACK_INCR 25
949 #endif
950
951 /* Report a fatal error. */
952 #ifndef YY_FATAL_ERROR
953 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
954 #endif
955
956 /* Default declaration of generated scanner - a define so the user can
957  * easily add parameters.
958  */
959 #ifndef YY_DECL
960 #define YY_DECL int yylex YY_PROTO(( void ))
961 #endif
962
963 /* Code executed at the beginning of each rule, after yytext and yyleng
964  * have been set up.
965  */
966 #ifndef YY_USER_ACTION
967 #define YY_USER_ACTION
968 #endif
969
970 /* Code executed at the end of each rule. */
971 #ifndef YY_BREAK
972 #define YY_BREAK break;
973 #endif
974
975 #define YY_RULE_SETUP \
976         if ( yyleng > 0 ) \
977                 yy_current_buffer->yy_at_bol = \
978                                 (yytext[yyleng - 1] == '\n'); \
979         YY_USER_ACTION
980
981 YY_DECL
982         {
983         register yy_state_type yy_current_state;
984         register char *yy_cp = NULL, *yy_bp = NULL;
985         register int yy_act;
986
987 #line 95 "lexer.l"
988
989
990 #line 991 "lex.yy.c"
991
992         if ( yy_init )
993                 {
994                 yy_init = 0;
995
996 #ifdef YY_USER_INIT
997                 YY_USER_INIT;
998 #endif
999
1000                 if ( ! yy_start )
1001                         yy_start = 1;   /* first start state */
1002
1003                 if ( ! yyin )
1004                         yyin = stdin;
1005
1006                 if ( ! yyout )
1007                         yyout = stdout;
1008
1009                 if ( ! yy_current_buffer )
1010                         yy_current_buffer =
1011                                 yy_create_buffer( yyin, YY_BUF_SIZE );
1012
1013                 yy_load_buffer_state();
1014                 }
1015
1016         while ( 1 )             /* loops until end-of-file is reached */
1017                 {
1018                 yy_cp = yy_c_buf_p;
1019
1020                 /* Support of yytext. */
1021                 *yy_cp = yy_hold_char;
1022
1023                 /* yy_bp points to the position in yy_ch_buf of the start of
1024                  * the current run.
1025                  */
1026                 yy_bp = yy_cp;
1027
1028                 yy_current_state = yy_start;
1029                 yy_current_state += YY_AT_BOL();
1030                 yy_state_ptr = yy_state_buf;
1031                 *yy_state_ptr++ = yy_current_state;
1032 yy_match:
1033                 do
1034                         {
1035                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1036                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1037                                 {
1038                                 yy_current_state = (int) yy_def[yy_current_state];
1039                                 if ( yy_current_state >= 369 )
1040                                         yy_c = yy_meta[(unsigned int) yy_c];
1041                                 }
1042                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1043                         *yy_state_ptr++ = yy_current_state;
1044                         ++yy_cp;
1045                         }
1046                 while ( yy_base[yy_current_state] != 817 );
1047
1048 yy_find_action:
1049                 yy_current_state = *--yy_state_ptr;
1050                 yy_lp = yy_accept[yy_current_state];
1051 find_rule: /* we branch to this label when backing up */
1052                 for ( ; ; ) /* until we find what rule we matched */
1053                         {
1054                         if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
1055                                 {
1056                                 yy_act = yy_acclist[yy_lp];
1057                                         {
1058                                         yy_full_match = yy_cp;
1059                                         break;
1060                                         }
1061                                 }
1062                         --yy_cp;
1063                         yy_current_state = *--yy_state_ptr;
1064                         yy_lp = yy_accept[yy_current_state];
1065                         }
1066
1067                 YY_DO_BEFORE_ACTION;
1068
1069
1070 do_action:      /* This label is used only to access EOF actions. */
1071
1072
1073                 switch ( yy_act )
1074         { /* beginning of action switch */
1075 case 1:
1076 YY_RULE_SETUP
1077 #line 97 "lexer.l"
1078 { line_no++; REJECT; }
1079         YY_BREAK
1080 case 2:
1081 YY_RULE_SETUP
1082 #line 99 "lexer.l"
1083 { fprintf(stderr,"You are a bad bad person!\n"); REJECT; }
1084         YY_BREAK
1085 case 3:
1086 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1087 yy_c_buf_p = yy_cp -= 1;
1088 YY_DO_BEFORE_ACTION; /* set up yytext again */
1089 YY_RULE_SETUP
1090 #line 101 "lexer.l"
1091 { ; /*comment, ignore*/ }
1092         YY_BREAK
1093 case 4:
1094 YY_RULE_SETUP
1095 #line 102 "lexer.l"
1096 {
1097         if(look_for_includes==1) {
1098                 char *p;
1099                 char *file;
1100                 char *str = g_strdup(yytext);
1101                 file = strchr(str,'"');
1102                 if(!file) file = strchr(str,'<');
1103                 file++;
1104                 p = strchr(file,'"');
1105                 if(!p) p = strchr(file,'>');
1106                 *p = '\0';
1107                 include_files = g_list_prepend(include_files,g_strdup(file));
1108                 g_free(str);
1109         }
1110         REJECT;
1111 }
1112         YY_BREAK
1113 case 5:
1114 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1115 yy_c_buf_p = yy_cp -= 1;
1116 YY_DO_BEFORE_ACTION; /* set up yytext again */
1117 YY_RULE_SETUP
1118 #line 119 "lexer.l"
1119 {
1120                         /* eat out gtk doc stuff */
1121                         BEGIN(GTK_DOC_BEFORE_NAME);
1122                         clear_cbuf();
1123                 }
1124         YY_BREAK
1125 case 6:
1126 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1127 yy_c_buf_p = yy_cp -= 1;
1128 YY_DO_BEFORE_ACTION; /* set up yytext again */
1129 YY_RULE_SETUP
1130 #line 124 "lexer.l"
1131 {
1132                         /* empty doc lines */
1133                         ;
1134                 }       
1135         YY_BREAK
1136 case 7:
1137 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1138 yy_c_buf_p = yy_cp -= 1;
1139 YY_DO_BEFORE_ACTION; /* set up yytext again */
1140 YY_RULE_SETUP
1141 #line 128 "lexer.l"
1142 {
1143                         char *p;
1144                         BEGIN(GTK_DOC);
1145                         p = strchr(yytext, '*');
1146                         g_free(gtk_doc_func);
1147                         gtk_doc_func = g_strdup(p+2);
1148                         p = strchr(gtk_doc_func, ':');
1149                         if(p) *p='\0';
1150                         g_strstrip(gtk_doc_func);
1151                 }
1152         YY_BREAK
1153 case 8:
1154 YY_RULE_SETUP
1155 #line 138 "lexer.l"
1156 {
1157                         BEGIN(CLASS_CODE_I);
1158                 }
1159         YY_BREAK
1160 case 9:
1161 YY_RULE_SETUP
1162 #line 141 "lexer.l"
1163 {
1164                         BEGIN(COMMENT);
1165                         before_comment = CLASS_CODE_I;
1166                 }
1167         YY_BREAK
1168 case 10:
1169 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1170 yy_c_buf_p = yy_cp -= 1;
1171 YY_DO_BEFORE_ACTION; /* set up yytext again */
1172 YY_RULE_SETUP
1173 #line 145 "lexer.l"
1174 {
1175                         /* empty doc lines */
1176                         add_to_cbuf(" *\n");
1177                 }       
1178         YY_BREAK
1179 case 11:
1180 YY_RULE_SETUP
1181 #line 149 "lexer.l"
1182 {
1183                         BEGIN(CLASS_CODE_I);
1184                         add_gtk_doc_func();
1185                 }
1186         YY_BREAK
1187 case 12:
1188 YY_RULE_SETUP
1189 #line 153 "lexer.l"
1190 {
1191                         fflush(stdout);
1192                         add_to_cbuf(" * ");
1193                         BEGIN(GTK_DOC_LINE);
1194                 }
1195         YY_BREAK
1196 case 13:
1197 YY_RULE_SETUP
1198 #line 158 "lexer.l"
1199 {
1200                         BEGIN(CLASS_CODE_I);
1201                 }
1202         YY_BREAK
1203 case 14:
1204 YY_RULE_SETUP
1205 #line 161 "lexer.l"
1206 {
1207                         BEGIN(COMMENT);
1208                         before_comment = CLASS_CODE_I;
1209                 }
1210         YY_BREAK
1211 case 15:
1212 YY_RULE_SETUP
1213 #line 165 "lexer.l"
1214 {
1215                         BEGIN(CLASS_CODE_I);
1216                         add_to_cbuf("\n");
1217                         add_gtk_doc_func();
1218                 }
1219         YY_BREAK
1220 case 16:
1221 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1222 yy_c_buf_p = yy_cp -= 1;
1223 YY_DO_BEFORE_ACTION; /* set up yytext again */
1224 YY_RULE_SETUP
1225 #line 170 "lexer.l"
1226 {
1227                         BEGIN(GTK_DOC);
1228                         add_to_cbuf(yytext);
1229                         add_to_cbuf("\n");
1230                 }
1231         YY_BREAK
1232 case 17:
1233 YY_RULE_SETUP
1234 #line 175 "lexer.l"
1235 {
1236                         fflush(stdout);
1237                         add_to_cbuf(yytext);
1238                 }
1239         YY_BREAK
1240 case 18:
1241 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1242 yy_c_buf_p = yy_cp -= 1;
1243 YY_DO_BEFORE_ACTION; /* set up yytext again */
1244 YY_RULE_SETUP
1245 #line 180 "lexer.l"
1246 { add_to_cbuf(yytext); /*comment, ignore*/ }
1247         YY_BREAK
1248 case 19:
1249 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1250 yy_c_buf_p = yy_cp -= 1;
1251 YY_DO_BEFORE_ACTION; /* set up yytext again */
1252 YY_RULE_SETUP
1253 #line 181 "lexer.l"
1254 { ; /*comment, ignore*/ }
1255         YY_BREAK
1256 case 20:
1257 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1258 yy_c_buf_p = yy_cp -= 1;
1259 YY_DO_BEFORE_ACTION; /* set up yytext again */
1260 YY_RULE_SETUP
1261 #line 182 "lexer.l"
1262 { ; /*comment, ignore*/ }
1263         YY_BREAK
1264 case 21:
1265 YY_RULE_SETUP
1266 #line 183 "lexer.l"
1267 {BEGIN(COMMENT); before_comment = INITIAL; }
1268         YY_BREAK
1269 case 22:
1270 YY_RULE_SETUP
1271 #line 184 "lexer.l"
1272 {
1273         add_to_cbuf(yytext);
1274         BEGIN(COMMENT);
1275         before_comment = C_CODE;
1276 }
1277         YY_BREAK
1278 case 23:
1279 YY_RULE_SETUP
1280 #line 189 "lexer.l"
1281 {BEGIN(COMMENT); before_comment = CLASS_CODE; }
1282         YY_BREAK
1283 case 24:
1284 YY_RULE_SETUP
1285 #line 190 "lexer.l"
1286 {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
1287         YY_BREAK
1288 case 25:
1289 YY_RULE_SETUP
1290 #line 191 "lexer.l"
1291 {
1292         if(before_comment == C_CODE) add_to_cbuf(yytext);
1293         BEGIN(before_comment);
1294                 }
1295         YY_BREAK
1296 case 26:
1297 YY_RULE_SETUP
1298 #line 195 "lexer.l"
1299 {
1300         /* comment, ignore */
1301         if(before_comment == C_CODE) add_to_cbuf(yytext);
1302                 }
1303         YY_BREAK
1304 case 27:
1305 YY_RULE_SETUP
1306 #line 199 "lexer.l"
1307 {
1308         /* comment, ignore */
1309         if(before_comment == C_CODE) add_to_cbuf(yytext);
1310                 }
1311         YY_BREAK
1312 case 28:
1313 YY_RULE_SETUP
1314 #line 204 "lexer.l"
1315 {
1316                         BEGIN(C_CODE);
1317                         parenth_depth = 1;
1318                         class_after_c = FALSE;
1319                         code_type = ACODE;
1320                         clear_cbuf();
1321                         ccode_line = line_no;
1322                 }
1323         YY_BREAK
1324 case 29:
1325 YY_RULE_SETUP
1326 #line 212 "lexer.l"
1327 {
1328                         BEGIN(C_CODE);
1329                         parenth_depth = 1;
1330                         class_after_c = FALSE;
1331                         code_type = ATCODE;
1332                         clear_cbuf();
1333                         ccode_line = line_no;
1334                 }
1335         YY_BREAK
1336 case 30:
1337 YY_RULE_SETUP
1338 #line 221 "lexer.l"
1339 {
1340                         BEGIN(C_CODE);
1341                         parenth_depth = 1;
1342                         class_after_c = FALSE;
1343                         code_type = HTCODE;
1344                         clear_cbuf();
1345                         ccode_line = line_no;
1346                 }
1347         YY_BREAK
1348 case 31:
1349 YY_RULE_SETUP
1350 #line 229 "lexer.l"
1351 {
1352                         BEGIN(C_CODE);
1353                         parenth_depth = 1;
1354                         class_after_c = FALSE;
1355                         code_type = PHCODE;
1356                         clear_cbuf();
1357                         ccode_line = line_no;
1358                 }
1359         YY_BREAK
1360 case 32:
1361 YY_RULE_SETUP
1362 #line 237 "lexer.l"
1363 {
1364                         BEGIN(C_CODE);
1365                         parenth_depth = 1;
1366                         class_after_c = FALSE;
1367                         code_type = HCODE;
1368                         clear_cbuf();
1369                         ccode_line = line_no;
1370                 }
1371         YY_BREAK
1372 case 33:
1373 YY_RULE_SETUP
1374 #line 245 "lexer.l"
1375 {
1376                         BEGIN(C_CODE);
1377                         parenth_depth = 1;
1378                         class_after_c = FALSE;
1379                         code_type = CCODE;
1380                         clear_cbuf();
1381                         ccode_line = line_no;
1382                         if(look_for_includes==0)
1383                                 look_for_includes=1;
1384                 }
1385         YY_BREAK
1386 case 34:
1387 YY_RULE_SETUP
1388 #line 255 "lexer.l"
1389 {
1390                         BEGIN(INITIAL);
1391                         yylval.cbuf = cbuf;
1392                         cbuf = NULL;
1393                         if(look_for_includes==1)
1394                                 look_for_includes=0;
1395                         return code_type;
1396                 }
1397         YY_BREAK
1398 case 35:
1399 YY_RULE_SETUP
1400 #line 264 "lexer.l"
1401 { add_to_cbuf(yytext); }
1402         YY_BREAK
1403 case 36:
1404 YY_RULE_SETUP
1405 #line 265 "lexer.l"
1406 { add_to_cbuf(yytext); }
1407         YY_BREAK
1408 case 37:
1409 YY_RULE_SETUP
1410 #line 266 "lexer.l"
1411 { add_to_cbuf(yytext); }
1412         YY_BREAK
1413 case 38:
1414 YY_RULE_SETUP
1415 #line 267 "lexer.l"
1416 { add_to_cbuf(yytext); }
1417         YY_BREAK
1418 case 39:
1419 YY_RULE_SETUP
1420 #line 268 "lexer.l"
1421 { add_to_cbuf(yytext); }
1422         YY_BREAK
1423 case 40:
1424 YY_RULE_SETUP
1425 #line 269 "lexer.l"
1426 { add_to_cbuf(yytext); }
1427         YY_BREAK
1428 case 41:
1429 YY_RULE_SETUP
1430 #line 271 "lexer.l"
1431 { add_to_cbuf(yytext); }
1432         YY_BREAK
1433 case 42:
1434 YY_RULE_SETUP
1435 #line 272 "lexer.l"
1436 {
1437                         BEGIN(C_CODE_STRING);
1438                         add_to_cbuf(yytext);
1439                 }
1440         YY_BREAK
1441 case 43:
1442 YY_RULE_SETUP
1443 #line 276 "lexer.l"
1444 { add_to_cbuf(yytext); }
1445         YY_BREAK
1446 case 44:
1447 YY_RULE_SETUP
1448 #line 277 "lexer.l"
1449 {
1450                                 BEGIN(C_CODE);
1451                                 add_to_cbuf(yytext);
1452                         }
1453         YY_BREAK
1454 case 45:
1455 YY_RULE_SETUP
1456 #line 281 "lexer.l"
1457 { add_to_cbuf(yytext); }
1458         YY_BREAK
1459 case 46:
1460 YY_RULE_SETUP
1461 #line 282 "lexer.l"
1462 { add_to_cbuf(yytext); }
1463         YY_BREAK
1464 case 47:
1465 YY_RULE_SETUP
1466 #line 284 "lexer.l"
1467 {
1468                         parenth_depth++;
1469                         add_to_cbuf(yytext);
1470                 }
1471         YY_BREAK
1472 case 48:
1473 YY_RULE_SETUP
1474 #line 288 "lexer.l"
1475 {
1476                         parenth_depth--;
1477                         if(parenth_depth<0) {
1478                                 REJECT;
1479                         } else if(parenth_depth==0 && class_after_c) {
1480                                 BEGIN(CLASS_CODE_I);
1481                                 yylval.cbuf = cbuf;
1482                                 cbuf = NULL;
1483                                 return CCODE;
1484                         }
1485                         add_to_cbuf(yytext);
1486                 }
1487         YY_BREAK
1488 case 49:
1489 YY_RULE_SETUP
1490 #line 301 "lexer.l"
1491 { add_to_cbuf(yytext); }
1492         YY_BREAK
1493 case 50:
1494 YY_RULE_SETUP
1495 #line 302 "lexer.l"
1496 { add_to_cbuf(yytext); }
1497         YY_BREAK
1498 case 51:
1499 YY_RULE_SETUP
1500 #line 304 "lexer.l"
1501 {
1502                         static int found_classes = 0;
1503                         look_for_includes = 2;
1504                         BEGIN(CLASS_CODE);
1505
1506                         if(++found_classes > 1) {
1507                                 print_error(FALSE, 
1508                                             "Only one class per file allowed",
1509                                             line_no);
1510                         }
1511
1512                         return CLASS;
1513                 }
1514         YY_BREAK
1515 case 52:
1516 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1517 yy_c_buf_p = yy_cp -= 1;
1518 YY_DO_BEFORE_ACTION; /* set up yytext again */
1519 YY_RULE_SETUP
1520 #line 318 "lexer.l"
1521 {
1522                         int maj = 0,min = 0,pl = 0;
1523                         int rmaj = 0,rmin = 0,rpl = 0;
1524                         char *p;
1525                         
1526                         sscanf(VERSION,"%d.%d.%d",&rmaj,&rmin,&rpl);
1527                         p = strchr(yytext,'r');
1528                         g_assert(p); /* we MUST have found it */
1529                         sscanf(p,"requires %d.%d.%d",&maj,&min,&pl);
1530                         if(rmaj < maj ||
1531                            (rmaj == maj && rmin < min) ||
1532                            (rmaj == maj && rmin == min && rpl < pl)) {
1533                                 char *s;
1534                                 s = g_strdup_printf(
1535                                     "GOB version %d.%d.%d required "
1536                                     "(this is %s)\n"
1537                                     "To upgrade your gob, see: "
1538                                     "http://www.5z.com/jirka/gob.html",
1539                                     maj,min,pl,VERSION);
1540                                 print_error(FALSE, s, line_no);
1541                                 g_free(s);
1542                         }
1543                 }
1544         YY_BREAK
1545 case 53:
1546 YY_RULE_SETUP
1547 #line 342 "lexer.l"
1548 {
1549                         if(for_cpp) {
1550                                 char *s;
1551                                 s = g_strdup_printf("'%s' keyword should not "
1552                                                     "be used when generating "
1553                                                     "C++ code",yytext);
1554                                 print_error(TRUE, s, line_no);
1555                                 g_free(s);
1556                         }
1557                         REJECT;
1558                 }
1559         YY_BREAK
1560 case 54:
1561 YY_RULE_SETUP
1562 #line 354 "lexer.l"
1563 {return FROM;}
1564         YY_BREAK
1565 case 55:
1566 YY_RULE_SETUP
1567 #line 356 "lexer.l"
1568 {return VOID;}
1569         YY_BREAK
1570 case 56:
1571 YY_RULE_SETUP
1572 #line 357 "lexer.l"
1573 {return STRUCT;}
1574         YY_BREAK
1575 case 57:
1576 YY_RULE_SETUP
1577 #line 358 "lexer.l"
1578 {return UNION;}
1579         YY_BREAK
1580 case 58:
1581 YY_RULE_SETUP
1582 #line 359 "lexer.l"
1583 {return ENUM;}
1584         YY_BREAK
1585 case 59:
1586 YY_RULE_SETUP
1587 #line 360 "lexer.l"
1588 {return SIGNED;}
1589         YY_BREAK
1590 case 60:
1591 YY_RULE_SETUP
1592 #line 361 "lexer.l"
1593 {return UNSIGNED;}
1594         YY_BREAK
1595 case 61:
1596 YY_RULE_SETUP
1597 #line 362 "lexer.l"
1598 {return LONG;}
1599         YY_BREAK
1600 case 62:
1601 YY_RULE_SETUP
1602 #line 363 "lexer.l"
1603 {return SHORT;}
1604         YY_BREAK
1605 case 63:
1606 YY_RULE_SETUP
1607 #line 364 "lexer.l"
1608 {return INT;}
1609         YY_BREAK
1610 case 64:
1611 YY_RULE_SETUP
1612 #line 365 "lexer.l"
1613 {return FLOAT;}
1614         YY_BREAK
1615 case 65:
1616 YY_RULE_SETUP
1617 #line 366 "lexer.l"
1618 {return DOUBLE;}
1619         YY_BREAK
1620 case 66:
1621 YY_RULE_SETUP
1622 #line 367 "lexer.l"
1623 {return CHAR;}
1624         YY_BREAK
1625 case 67:
1626 YY_RULE_SETUP
1627 #line 368 "lexer.l"
1628 {return CONST;}
1629         YY_BREAK
1630 case 68:
1631 YY_RULE_SETUP
1632 #line 370 "lexer.l"
1633 {return THREEDOTS;}
1634         YY_BREAK
1635 case 69:
1636 YY_RULE_SETUP
1637 #line 372 "lexer.l"
1638 {yylval.line = line_no; return PUBLIC;}
1639         YY_BREAK
1640 case 70:
1641 YY_RULE_SETUP
1642 #line 373 "lexer.l"
1643 {yylval.line = line_no; return PRIVATE;}
1644         YY_BREAK
1645 case 71:
1646 YY_RULE_SETUP
1647 #line 374 "lexer.l"
1648 {yylval.line = line_no; return PROTECTED;}
1649         YY_BREAK
1650 case 72:
1651 YY_RULE_SETUP
1652 #line 375 "lexer.l"
1653 {yylval.line = line_no; return ARGUMENT;}
1654         YY_BREAK
1655 case 73:
1656 YY_RULE_SETUP
1657 #line 376 "lexer.l"
1658 {yylval.line = line_no; return VIRTUAL;}
1659         YY_BREAK
1660 case 74:
1661 YY_RULE_SETUP
1662 #line 377 "lexer.l"
1663 {yylval.line = line_no; return SIGNAL;}
1664         YY_BREAK
1665 case 75:
1666 YY_RULE_SETUP
1667 #line 378 "lexer.l"
1668 {yylval.line = line_no; return OVERRIDE;}
1669         YY_BREAK
1670 case 76:
1671 YY_RULE_SETUP
1672 #line 379 "lexer.l"
1673 {return ONERROR;}
1674         YY_BREAK
1675 case 77:
1676 YY_RULE_SETUP
1677 #line 380 "lexer.l"
1678 {
1679                         yylval.id = g_strdup(yytext);
1680                         return NUMBER;
1681                 }
1682         YY_BREAK
1683 case 78:
1684 YY_RULE_SETUP
1685 #line 384 "lexer.l"
1686 {
1687                         yylval.id = g_strdup(yytext);
1688                         return TYPETOKEN;
1689                 }
1690         YY_BREAK
1691 case 79:
1692 YY_RULE_SETUP
1693 #line 388 "lexer.l"
1694 {
1695                         yylval.id = g_strdup(yytext);
1696                         return TOKEN;
1697                 }
1698         YY_BREAK
1699 case 80:
1700 YY_RULE_SETUP
1701 #line 393 "lexer.l"
1702 {
1703                         yylval.id = g_strdup(yytext);
1704                         return ARRAY_DIM;
1705                 }
1706         YY_BREAK
1707 case 81:
1708 YY_RULE_SETUP
1709 #line 398 "lexer.l"
1710 {
1711                         BEGIN(CLASS_CODE_I);
1712                         return '{';
1713                 }
1714         YY_BREAK
1715 case 82:
1716 YY_RULE_SETUP
1717 #line 402 "lexer.l"
1718 {
1719                         BEGIN(C_CODE);
1720                         parenth_depth=1;
1721                         class_after_c = TRUE;
1722                         yylval.line = line_no;
1723                         clear_cbuf();
1724                         ccode_line = line_no;
1725                         return '{';
1726                 }
1727         YY_BREAK
1728 case 83:
1729 YY_RULE_SETUP
1730 #line 411 "lexer.l"
1731 {
1732                                 BEGIN(INITIAL);
1733                                 return '}';
1734                         }
1735         YY_BREAK
1736 case 84:
1737 YY_RULE_SETUP
1738 #line 416 "lexer.l"
1739 ;  /*ignore*/
1740         YY_BREAK
1741 case 85:
1742 YY_RULE_SETUP
1743 #line 418 "lexer.l"
1744 {
1745                         yylval.line = line_no;
1746                         return yytext[0];
1747                 }
1748         YY_BREAK
1749 case 86:
1750 YY_RULE_SETUP
1751 #line 423 "lexer.l"
1752 ;  /*ignore*/
1753         YY_BREAK
1754 case 87:
1755 YY_RULE_SETUP
1756 #line 424 "lexer.l"
1757 ECHO;
1758         YY_BREAK
1759 #line 1760 "lex.yy.c"
1760                         case YY_STATE_EOF(INITIAL):
1761                         case YY_STATE_EOF(COMMENT):
1762                         case YY_STATE_EOF(C_CODE):
1763                         case YY_STATE_EOF(C_CODE_STRING):
1764                         case YY_STATE_EOF(CLASS_CODE):
1765                         case YY_STATE_EOF(CLASS_CODE_I):
1766                         case YY_STATE_EOF(GTK_DOC_BEFORE_NAME):
1767                         case YY_STATE_EOF(GTK_DOC):
1768                         case YY_STATE_EOF(GTK_DOC_LINE):
1769                                 yyterminate();
1770
1771         case YY_END_OF_BUFFER:
1772                 {
1773                 /* Amount of text matched not including the EOB char. */
1774                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1775
1776                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1777                 *yy_cp = yy_hold_char;
1778                 YY_RESTORE_YY_MORE_OFFSET
1779
1780                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1781                         {
1782                         /* We're scanning a new file or input source.  It's
1783                          * possible that this happened because the user
1784                          * just pointed yyin at a new source and called
1785                          * yylex().  If so, then we have to assure
1786                          * consistency between yy_current_buffer and our
1787                          * globals.  Here is the right place to do so, because
1788                          * this is the first action (other than possibly a
1789                          * back-up) that will match for the new input source.
1790                          */
1791                         yy_n_chars = yy_current_buffer->yy_n_chars;
1792                         yy_current_buffer->yy_input_file = yyin;
1793                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1794                         }
1795
1796                 /* Note that here we test for yy_c_buf_p "<=" to the position
1797                  * of the first EOB in the buffer, since yy_c_buf_p will
1798                  * already have been incremented past the NUL character
1799                  * (since all states make transitions on EOB to the
1800                  * end-of-buffer state).  Contrast this with the test
1801                  * in input().
1802                  */
1803                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1804                         { /* This was really a NUL. */
1805                         yy_state_type yy_next_state;
1806
1807                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1808
1809                         yy_current_state = yy_get_previous_state();
1810
1811                         /* Okay, we're now positioned to make the NUL
1812                          * transition.  We couldn't have
1813                          * yy_get_previous_state() go ahead and do it
1814                          * for us because it doesn't know how to deal
1815                          * with the possibility of jamming (and we don't
1816                          * want to build jamming into it because then it
1817                          * will run more slowly).
1818                          */
1819
1820                         yy_next_state = yy_try_NUL_trans( yy_current_state );
1821
1822                         yy_bp = yytext_ptr + YY_MORE_ADJ;
1823
1824                         if ( yy_next_state )
1825                                 {
1826                                 /* Consume the NUL. */
1827                                 yy_cp = ++yy_c_buf_p;
1828                                 yy_current_state = yy_next_state;
1829                                 goto yy_match;
1830                                 }
1831
1832                         else
1833                                 {
1834                                 yy_cp = yy_c_buf_p;
1835                                 goto yy_find_action;
1836                                 }
1837                         }
1838
1839                 else switch ( yy_get_next_buffer() )
1840                         {
1841                         case EOB_ACT_END_OF_FILE:
1842                                 {
1843                                 yy_did_buffer_switch_on_eof = 0;
1844
1845                                 if ( yywrap() )
1846                                         {
1847                                         /* Note: because we've taken care in
1848                                          * yy_get_next_buffer() to have set up
1849                                          * yytext, we can now set up
1850                                          * yy_c_buf_p so that if some total
1851                                          * hoser (like flex itself) wants to
1852                                          * call the scanner after we return the
1853                                          * YY_NULL, it'll still work - another
1854                                          * YY_NULL will get returned.
1855                                          */
1856                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1857
1858                                         yy_act = YY_STATE_EOF(YY_START);
1859                                         goto do_action;
1860                                         }
1861
1862                                 else
1863                                         {
1864                                         if ( ! yy_did_buffer_switch_on_eof )
1865                                                 YY_NEW_FILE;
1866                                         }
1867                                 break;
1868                                 }
1869
1870                         case EOB_ACT_CONTINUE_SCAN:
1871                                 yy_c_buf_p =
1872                                         yytext_ptr + yy_amount_of_matched_text;
1873
1874                                 yy_current_state = yy_get_previous_state();
1875
1876                                 yy_cp = yy_c_buf_p;
1877                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
1878                                 goto yy_match;
1879
1880                         case EOB_ACT_LAST_MATCH:
1881                                 yy_c_buf_p =
1882                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1883
1884                                 yy_current_state = yy_get_previous_state();
1885
1886                                 yy_cp = yy_c_buf_p;
1887                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
1888                                 goto yy_find_action;
1889                         }
1890                 break;
1891                 }
1892
1893         default:
1894                 YY_FATAL_ERROR(
1895                         "fatal flex scanner internal error--no action found" );
1896         } /* end of action switch */
1897                 } /* end of scanning one token */
1898         } /* end of yylex */
1899
1900
1901 /* yy_get_next_buffer - try to read in a new buffer
1902  *
1903  * Returns a code representing an action:
1904  *      EOB_ACT_LAST_MATCH -
1905  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1906  *      EOB_ACT_END_OF_FILE - end of file
1907  */
1908
1909 static int yy_get_next_buffer()
1910         {
1911         register char *dest = yy_current_buffer->yy_ch_buf;
1912         register char *source = yytext_ptr;
1913         register int number_to_move, i;
1914         int ret_val;
1915
1916         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1917                 YY_FATAL_ERROR(
1918                 "fatal flex scanner internal error--end of buffer missed" );
1919
1920         if ( yy_current_buffer->yy_fill_buffer == 0 )
1921                 { /* Don't try to fill the buffer, so this is an EOF. */
1922                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1923                         {
1924                         /* We matched a single character, the EOB, so
1925                          * treat this as a final EOF.
1926                          */
1927                         return EOB_ACT_END_OF_FILE;
1928                         }
1929
1930                 else
1931                         {
1932                         /* We matched some text prior to the EOB, first
1933                          * process it.
1934                          */
1935                         return EOB_ACT_LAST_MATCH;
1936                         }
1937                 }
1938
1939         /* Try to read more data. */
1940
1941         /* First move last chars to start of buffer. */
1942         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1943
1944         for ( i = 0; i < number_to_move; ++i )
1945                 *(dest++) = *(source++);
1946
1947         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1948                 /* don't do the read, it's not guaranteed to return an EOF,
1949                  * just force an EOF
1950                  */
1951                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1952
1953         else
1954                 {
1955                 int num_to_read =
1956                         yy_current_buffer->yy_buf_size - number_to_move - 1;
1957
1958                 while ( num_to_read <= 0 )
1959                         { /* Not enough room in the buffer - grow it. */
1960 #ifdef YY_USES_REJECT
1961                         YY_FATAL_ERROR(
1962 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1963 #else
1964
1965                         /* just a shorter name for the current buffer */
1966                         YY_BUFFER_STATE b = yy_current_buffer;
1967
1968                         int yy_c_buf_p_offset =
1969                                 (int) (yy_c_buf_p - b->yy_ch_buf);
1970
1971                         if ( b->yy_is_our_buffer )
1972                                 {
1973                                 int new_size = b->yy_buf_size * 2;
1974
1975                                 if ( new_size <= 0 )
1976                                         b->yy_buf_size += b->yy_buf_size / 8;
1977                                 else
1978                                         b->yy_buf_size *= 2;
1979
1980                                 b->yy_ch_buf = (char *)
1981                                         /* Include room in for 2 EOB chars. */
1982                                         yy_flex_realloc( (void *) b->yy_ch_buf,
1983                                                          b->yy_buf_size + 2 );
1984                                 }
1985                         else
1986                                 /* Can't grow it, we don't own it. */
1987                                 b->yy_ch_buf = 0;
1988
1989                         if ( ! b->yy_ch_buf )
1990                                 YY_FATAL_ERROR(
1991                                 "fatal error - scanner input buffer overflow" );
1992
1993                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1994
1995                         num_to_read = yy_current_buffer->yy_buf_size -
1996                                                 number_to_move - 1;
1997 #endif
1998                         }
1999
2000                 if ( num_to_read > YY_READ_BUF_SIZE )
2001                         num_to_read = YY_READ_BUF_SIZE;
2002
2003                 /* Read in more data. */
2004                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2005                         yy_n_chars, num_to_read );
2006
2007                 yy_current_buffer->yy_n_chars = yy_n_chars;
2008                 }
2009
2010         if ( yy_n_chars == 0 )
2011                 {
2012                 if ( number_to_move == YY_MORE_ADJ )
2013                         {
2014                         ret_val = EOB_ACT_END_OF_FILE;
2015                         yyrestart( yyin );
2016                         }
2017
2018                 else
2019                         {
2020                         ret_val = EOB_ACT_LAST_MATCH;
2021                         yy_current_buffer->yy_buffer_status =
2022                                 YY_BUFFER_EOF_PENDING;
2023                         }
2024                 }
2025
2026         else
2027                 ret_val = EOB_ACT_CONTINUE_SCAN;
2028
2029         yy_n_chars += number_to_move;
2030         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2031         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2032
2033         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2034
2035         return ret_val;
2036         }
2037
2038
2039 /* yy_get_previous_state - get the state just before the EOB char was reached */
2040
2041 static yy_state_type yy_get_previous_state()
2042         {
2043         register yy_state_type yy_current_state;
2044         register char *yy_cp;
2045
2046         yy_current_state = yy_start;
2047         yy_current_state += YY_AT_BOL();
2048         yy_state_ptr = yy_state_buf;
2049         *yy_state_ptr++ = yy_current_state;
2050
2051         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2052                 {
2053                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2054                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2055                         {
2056                         yy_current_state = (int) yy_def[yy_current_state];
2057                         if ( yy_current_state >= 369 )
2058                                 yy_c = yy_meta[(unsigned int) yy_c];
2059                         }
2060                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2061                 *yy_state_ptr++ = yy_current_state;
2062                 }
2063
2064         return yy_current_state;
2065         }
2066
2067
2068 /* yy_try_NUL_trans - try to make a transition on the NUL character
2069  *
2070  * synopsis
2071  *      next_state = yy_try_NUL_trans( current_state );
2072  */
2073
2074 #ifdef YY_USE_PROTOS
2075 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2076 #else
2077 static yy_state_type yy_try_NUL_trans( yy_current_state )
2078 yy_state_type yy_current_state;
2079 #endif
2080         {
2081         register int yy_is_jam;
2082
2083         register YY_CHAR yy_c = 1;
2084         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2085                 {
2086                 yy_current_state = (int) yy_def[yy_current_state];
2087                 if ( yy_current_state >= 369 )
2088                         yy_c = yy_meta[(unsigned int) yy_c];
2089                 }
2090         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2091         yy_is_jam = (yy_current_state == 368);
2092         if ( ! yy_is_jam )
2093                 *yy_state_ptr++ = yy_current_state;
2094
2095         return yy_is_jam ? 0 : yy_current_state;
2096         }
2097
2098
2099 #ifndef YY_NO_UNPUT
2100 #ifdef YY_USE_PROTOS
2101 static void yyunput( int c, register char *yy_bp )
2102 #else
2103 static void yyunput( c, yy_bp )
2104 int c;
2105 register char *yy_bp;
2106 #endif
2107         {
2108         register char *yy_cp = yy_c_buf_p;
2109
2110         /* undo effects of setting up yytext */
2111         *yy_cp = yy_hold_char;
2112
2113         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2114                 { /* need to shift things up to make room */
2115                 /* +2 for EOB chars. */
2116                 register int number_to_move = yy_n_chars + 2;
2117                 register char *dest = &yy_current_buffer->yy_ch_buf[
2118                                         yy_current_buffer->yy_buf_size + 2];
2119                 register char *source =
2120                                 &yy_current_buffer->yy_ch_buf[number_to_move];
2121
2122                 while ( source > yy_current_buffer->yy_ch_buf )
2123                         *--dest = *--source;
2124
2125                 yy_cp += (int) (dest - source);
2126                 yy_bp += (int) (dest - source);
2127                 yy_current_buffer->yy_n_chars =
2128                         yy_n_chars = yy_current_buffer->yy_buf_size;
2129
2130                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2131                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2132                 }
2133
2134         *--yy_cp = (char) c;
2135
2136
2137         yytext_ptr = yy_bp;
2138         yy_hold_char = *yy_cp;
2139         yy_c_buf_p = yy_cp;
2140         }
2141 #endif  /* ifndef YY_NO_UNPUT */
2142
2143
2144 #ifdef __cplusplus
2145 static int yyinput()
2146 #else
2147 static int input()
2148 #endif
2149         {
2150         int c;
2151
2152         *yy_c_buf_p = yy_hold_char;
2153
2154         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2155                 {
2156                 /* yy_c_buf_p now points to the character we want to return.
2157                  * If this occurs *before* the EOB characters, then it's a
2158                  * valid NUL; if not, then we've hit the end of the buffer.
2159                  */
2160                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2161                         /* This was really a NUL. */
2162                         *yy_c_buf_p = '\0';
2163
2164                 else
2165                         { /* need more input */
2166                         int offset = yy_c_buf_p - yytext_ptr;
2167                         ++yy_c_buf_p;
2168
2169                         switch ( yy_get_next_buffer() )
2170                                 {
2171                                 case EOB_ACT_LAST_MATCH:
2172                                         /* This happens because yy_g_n_b()
2173                                          * sees that we've accumulated a
2174                                          * token and flags that we need to
2175                                          * try matching the token before
2176                                          * proceeding.  But for input(),
2177                                          * there's no matching to consider.
2178                                          * So convert the EOB_ACT_LAST_MATCH
2179                                          * to EOB_ACT_END_OF_FILE.
2180                                          */
2181
2182                                         /* Reset buffer status. */
2183                                         yyrestart( yyin );
2184
2185                                         /* fall through */
2186
2187                                 case EOB_ACT_END_OF_FILE:
2188                                         {
2189                                         if ( yywrap() )
2190                                                 return EOF;
2191
2192                                         if ( ! yy_did_buffer_switch_on_eof )
2193                                                 YY_NEW_FILE;
2194 #ifdef __cplusplus
2195                                         return yyinput();
2196 #else
2197                                         return input();
2198 #endif
2199                                         }
2200
2201                                 case EOB_ACT_CONTINUE_SCAN:
2202                                         yy_c_buf_p = yytext_ptr + offset;
2203                                         break;
2204                                 }
2205                         }
2206                 }
2207
2208         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
2209         *yy_c_buf_p = '\0';     /* preserve yytext */
2210         yy_hold_char = *++yy_c_buf_p;
2211
2212         yy_current_buffer->yy_at_bol = (c == '\n');
2213
2214         return c;
2215         }
2216
2217
2218 #ifdef YY_USE_PROTOS
2219 void yyrestart( FILE *input_file )
2220 #else
2221 void yyrestart( input_file )
2222 FILE *input_file;
2223 #endif
2224         {
2225         if ( ! yy_current_buffer )
2226                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2227
2228         yy_init_buffer( yy_current_buffer, input_file );
2229         yy_load_buffer_state();
2230         }
2231
2232
2233 #ifdef YY_USE_PROTOS
2234 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2235 #else
2236 void yy_switch_to_buffer( new_buffer )
2237 YY_BUFFER_STATE new_buffer;
2238 #endif
2239         {
2240         if ( yy_current_buffer == new_buffer )
2241                 return;
2242
2243         if ( yy_current_buffer )
2244                 {
2245                 /* Flush out information for old buffer. */
2246                 *yy_c_buf_p = yy_hold_char;
2247                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2248                 yy_current_buffer->yy_n_chars = yy_n_chars;
2249                 }
2250
2251         yy_current_buffer = new_buffer;
2252         yy_load_buffer_state();
2253
2254         /* We don't actually know whether we did this switch during
2255          * EOF (yywrap()) processing, but the only time this flag
2256          * is looked at is after yywrap() is called, so it's safe
2257          * to go ahead and always set it.
2258          */
2259         yy_did_buffer_switch_on_eof = 1;
2260         }
2261
2262
2263 #ifdef YY_USE_PROTOS
2264 void yy_load_buffer_state( void )
2265 #else
2266 void yy_load_buffer_state()
2267 #endif
2268         {
2269         yy_n_chars = yy_current_buffer->yy_n_chars;
2270         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2271         yyin = yy_current_buffer->yy_input_file;
2272         yy_hold_char = *yy_c_buf_p;
2273         }
2274
2275
2276 #ifdef YY_USE_PROTOS
2277 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2278 #else
2279 YY_BUFFER_STATE yy_create_buffer( file, size )
2280 FILE *file;
2281 int size;
2282 #endif
2283         {
2284         YY_BUFFER_STATE b;
2285
2286         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2287         if ( ! b )
2288                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2289
2290         b->yy_buf_size = size;
2291
2292         /* yy_ch_buf has to be 2 characters longer than the size given because
2293          * we need to put in 2 end-of-buffer characters.
2294          */
2295         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2296         if ( ! b->yy_ch_buf )
2297                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2298
2299         b->yy_is_our_buffer = 1;
2300
2301         yy_init_buffer( b, file );
2302
2303         return b;
2304         }
2305
2306
2307 #ifdef YY_USE_PROTOS
2308 void yy_delete_buffer( YY_BUFFER_STATE b )
2309 #else
2310 void yy_delete_buffer( b )
2311 YY_BUFFER_STATE b;
2312 #endif
2313         {
2314         if ( ! b )
2315                 return;
2316
2317         if ( b == yy_current_buffer )
2318                 yy_current_buffer = (YY_BUFFER_STATE) 0;
2319
2320         if ( b->yy_is_our_buffer )
2321                 yy_flex_free( (void *) b->yy_ch_buf );
2322
2323         yy_flex_free( (void *) b );
2324         }
2325
2326
2327 #ifndef YY_ALWAYS_INTERACTIVE
2328 #ifndef YY_NEVER_INTERACTIVE
2329 extern int isatty YY_PROTO(( int ));
2330 #endif
2331 #endif
2332
2333 #ifdef YY_USE_PROTOS
2334 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2335 #else
2336 void yy_init_buffer( b, file )
2337 YY_BUFFER_STATE b;
2338 FILE *file;
2339 #endif
2340
2341
2342         {
2343         yy_flush_buffer( b );
2344
2345         b->yy_input_file = file;
2346         b->yy_fill_buffer = 1;
2347
2348 #if YY_ALWAYS_INTERACTIVE
2349         b->yy_is_interactive = 1;
2350 #else
2351 #if YY_NEVER_INTERACTIVE
2352         b->yy_is_interactive = 0;
2353 #else
2354         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2355 #endif
2356 #endif
2357         }
2358
2359
2360 #ifdef YY_USE_PROTOS
2361 void yy_flush_buffer( YY_BUFFER_STATE b )
2362 #else
2363 void yy_flush_buffer( b )
2364 YY_BUFFER_STATE b;
2365 #endif
2366
2367         {
2368         if ( ! b )
2369                 return;
2370
2371         b->yy_n_chars = 0;
2372
2373         /* We always need two end-of-buffer characters.  The first causes
2374          * a transition to the end-of-buffer state.  The second causes
2375          * a jam in that state.
2376          */
2377         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2378         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2379
2380         b->yy_buf_pos = &b->yy_ch_buf[0];
2381
2382         b->yy_at_bol = 1;
2383         b->yy_buffer_status = YY_BUFFER_NEW;
2384
2385         if ( b == yy_current_buffer )
2386                 yy_load_buffer_state();
2387         }
2388
2389
2390 #ifndef YY_NO_SCAN_BUFFER
2391 #ifdef YY_USE_PROTOS
2392 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2393 #else
2394 YY_BUFFER_STATE yy_scan_buffer( base, size )
2395 char *base;
2396 yy_size_t size;
2397 #endif
2398         {
2399         YY_BUFFER_STATE b;
2400
2401         if ( size < 2 ||
2402              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2403              base[size-1] != YY_END_OF_BUFFER_CHAR )
2404                 /* They forgot to leave room for the EOB's. */
2405                 return 0;
2406
2407         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2408         if ( ! b )
2409                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2410
2411         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2412         b->yy_buf_pos = b->yy_ch_buf = base;
2413         b->yy_is_our_buffer = 0;
2414         b->yy_input_file = 0;
2415         b->yy_n_chars = b->yy_buf_size;
2416         b->yy_is_interactive = 0;
2417         b->yy_at_bol = 1;
2418         b->yy_fill_buffer = 0;
2419         b->yy_buffer_status = YY_BUFFER_NEW;
2420
2421         yy_switch_to_buffer( b );
2422
2423         return b;
2424         }
2425 #endif
2426
2427
2428 #ifndef YY_NO_SCAN_STRING
2429 #ifdef YY_USE_PROTOS
2430 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2431 #else
2432 YY_BUFFER_STATE yy_scan_string( yy_str )
2433 yyconst char *yy_str;
2434 #endif
2435         {
2436         int len;
2437         for ( len = 0; yy_str[len]; ++len )
2438                 ;
2439
2440         return yy_scan_bytes( yy_str, len );
2441         }
2442 #endif
2443
2444
2445 #ifndef YY_NO_SCAN_BYTES
2446 #ifdef YY_USE_PROTOS
2447 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2448 #else
2449 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2450 yyconst char *bytes;
2451 int len;
2452 #endif
2453         {
2454         YY_BUFFER_STATE b;
2455         char *buf;
2456         yy_size_t n;
2457         int i;
2458
2459         /* Get memory for full buffer, including space for trailing EOB's. */
2460         n = len + 2;
2461         buf = (char *) yy_flex_alloc( n );
2462         if ( ! buf )
2463                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2464
2465         for ( i = 0; i < len; ++i )
2466                 buf[i] = bytes[i];
2467
2468         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2469
2470         b = yy_scan_buffer( buf, n );
2471         if ( ! b )
2472                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2473
2474         /* It's okay to grow etc. this buffer, and we should throw it
2475          * away when we're done.
2476          */
2477         b->yy_is_our_buffer = 1;
2478
2479         return b;
2480         }
2481 #endif
2482
2483
2484 #ifndef YY_NO_PUSH_STATE
2485 #ifdef YY_USE_PROTOS
2486 static void yy_push_state( int new_state )
2487 #else
2488 static void yy_push_state( new_state )
2489 int new_state;
2490 #endif
2491         {
2492         if ( yy_start_stack_ptr >= yy_start_stack_depth )
2493                 {
2494                 yy_size_t new_size;
2495
2496                 yy_start_stack_depth += YY_START_STACK_INCR;
2497                 new_size = yy_start_stack_depth * sizeof( int );
2498
2499                 if ( ! yy_start_stack )
2500                         yy_start_stack = (int *) yy_flex_alloc( new_size );
2501
2502                 else
2503                         yy_start_stack = (int *) yy_flex_realloc(
2504                                         (void *) yy_start_stack, new_size );
2505
2506                 if ( ! yy_start_stack )
2507                         YY_FATAL_ERROR(
2508                         "out of memory expanding start-condition stack" );
2509                 }
2510
2511         yy_start_stack[yy_start_stack_ptr++] = YY_START;
2512
2513         BEGIN(new_state);
2514         }
2515 #endif
2516
2517
2518 #ifndef YY_NO_POP_STATE
2519 static void yy_pop_state()
2520         {
2521         if ( --yy_start_stack_ptr < 0 )
2522                 YY_FATAL_ERROR( "start-condition stack underflow" );
2523
2524         BEGIN(yy_start_stack[yy_start_stack_ptr]);
2525         }
2526 #endif
2527
2528
2529 #ifndef YY_NO_TOP_STATE
2530 static int yy_top_state()
2531         {
2532         return yy_start_stack[yy_start_stack_ptr - 1];
2533         }
2534 #endif
2535
2536 #ifndef YY_EXIT_FAILURE
2537 #define YY_EXIT_FAILURE 2
2538 #endif
2539
2540 #ifdef YY_USE_PROTOS
2541 static void yy_fatal_error( yyconst char msg[] )
2542 #else
2543 static void yy_fatal_error( msg )
2544 char msg[];
2545 #endif
2546         {
2547         (void) fprintf( stderr, "%s\n", msg );
2548         exit( YY_EXIT_FAILURE );
2549         }
2550
2551
2552
2553 /* Redefine yyless() so it works in section 3 code. */
2554
2555 #undef yyless
2556 #define yyless(n) \
2557         do \
2558                 { \
2559                 /* Undo effects of setting up yytext. */ \
2560                 yytext[yyleng] = yy_hold_char; \
2561                 yy_c_buf_p = yytext + n; \
2562                 yy_hold_char = *yy_c_buf_p; \
2563                 *yy_c_buf_p = '\0'; \
2564                 yyleng = n; \
2565                 } \
2566         while ( 0 )
2567
2568
2569 /* Internal utility routines. */
2570
2571 #ifndef yytext_ptr
2572 #ifdef YY_USE_PROTOS
2573 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2574 #else
2575 static void yy_flex_strncpy( s1, s2, n )
2576 char *s1;
2577 yyconst char *s2;
2578 int n;
2579 #endif
2580         {
2581         register int i;
2582         for ( i = 0; i < n; ++i )
2583                 s1[i] = s2[i];
2584         }
2585 #endif
2586
2587 #ifdef YY_NEED_STRLEN
2588 #ifdef YY_USE_PROTOS
2589 static int yy_flex_strlen( yyconst char *s )
2590 #else
2591 static int yy_flex_strlen( s )
2592 yyconst char *s;
2593 #endif
2594         {
2595         register int n;
2596         for ( n = 0; s[n]; ++n )
2597                 ;
2598
2599         return n;
2600         }
2601 #endif
2602
2603
2604 #ifdef YY_USE_PROTOS
2605 static void *yy_flex_alloc( yy_size_t size )
2606 #else
2607 static void *yy_flex_alloc( size )
2608 yy_size_t size;
2609 #endif
2610         {
2611         return (void *) malloc( size );
2612         }
2613
2614 #ifdef YY_USE_PROTOS
2615 static void *yy_flex_realloc( void *ptr, yy_size_t size )
2616 #else
2617 static void *yy_flex_realloc( ptr, size )
2618 void *ptr;
2619 yy_size_t size;
2620 #endif
2621         {
2622         /* The cast to (char *) in the following accommodates both
2623          * implementations that use char* generic pointers, and those
2624          * that use void* generic pointers.  It works with the latter
2625          * because both ANSI C and C++ allow castless assignment from
2626          * any pointer type to void*, and deal with argument conversions
2627          * as though doing an assignment.
2628          */
2629         return (void *) realloc( (char *) ptr, size );
2630         }
2631
2632 #ifdef YY_USE_PROTOS
2633 static void yy_flex_free( void *ptr )
2634 #else
2635 static void yy_flex_free( ptr )
2636 void *ptr;
2637 #endif
2638         {
2639         free( ptr );
2640         }
2641
2642 #if YY_MAIN
2643 int main()
2644         {
2645         yylex();
2646         return 0;
2647         }
2648 #endif
2649 #line 424 "lexer.l"