~ubuntu-branches/ubuntu/raring/heimdal/raring

« back to all changes in this revision

Viewing changes to lib/sl/slc-lex.c

  • Committer: Package Import Robot
  • Author(s): Jelmer Vernooij
  • Date: 2011-10-03 23:50:05 UTC
  • mfrom: (1.1.15) (2.2.23 sid)
  • Revision ID: package-import@ubuntu.com-20111003235005-0voibbgdhyqmtp6w
Tags: 1.5.dfsg.1-3
Add conflicts with kcc to heimdal-clients. Closes: #644138

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#line 3 "slc-lex.c"
 
3
 
 
4
#define  YY_INT_ALIGNED short int
 
5
 
 
6
/* A lexical scanner generated by flex */
 
7
 
 
8
#define FLEX_SCANNER
 
9
#define YY_FLEX_MAJOR_VERSION 2
 
10
#define YY_FLEX_MINOR_VERSION 5
 
11
#define YY_FLEX_SUBMINOR_VERSION 35
 
12
#if YY_FLEX_SUBMINOR_VERSION > 0
 
13
#define FLEX_BETA
 
14
#endif
 
15
 
 
16
/* First, we deal with  platform-specific or compiler-specific issues. */
 
17
 
 
18
/* begin standard C headers. */
 
19
#include <stdio.h>
 
20
#include <string.h>
 
21
#include <errno.h>
 
22
#include <stdlib.h>
 
23
 
 
24
/* end standard C headers. */
 
25
 
 
26
/* flex integer type definitions */
 
27
 
 
28
#ifndef FLEXINT_H
 
29
#define FLEXINT_H
 
30
 
 
31
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
32
 
 
33
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
34
 
 
35
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
 
36
 * if you want the limit (max/min) macros for int types. 
 
37
 */
 
38
#ifndef __STDC_LIMIT_MACROS
 
39
#define __STDC_LIMIT_MACROS 1
 
40
#endif
 
41
 
 
42
#include <inttypes.h>
 
43
typedef int8_t flex_int8_t;
 
44
typedef uint8_t flex_uint8_t;
 
45
typedef int16_t flex_int16_t;
 
46
typedef uint16_t flex_uint16_t;
 
47
typedef int32_t flex_int32_t;
 
48
typedef uint32_t flex_uint32_t;
 
49
#else
 
50
typedef signed char flex_int8_t;
 
51
typedef short int flex_int16_t;
 
52
typedef int flex_int32_t;
 
53
typedef unsigned char flex_uint8_t; 
 
54
typedef unsigned short int flex_uint16_t;
 
55
typedef unsigned int flex_uint32_t;
 
56
#endif /* ! C99 */
 
57
 
 
58
/* Limits of integral types. */
 
59
#ifndef INT8_MIN
 
60
#define INT8_MIN               (-128)
 
61
#endif
 
62
#ifndef INT16_MIN
 
63
#define INT16_MIN              (-32767-1)
 
64
#endif
 
65
#ifndef INT32_MIN
 
66
#define INT32_MIN              (-2147483647-1)
 
67
#endif
 
68
#ifndef INT8_MAX
 
69
#define INT8_MAX               (127)
 
70
#endif
 
71
#ifndef INT16_MAX
 
72
#define INT16_MAX              (32767)
 
73
#endif
 
74
#ifndef INT32_MAX
 
75
#define INT32_MAX              (2147483647)
 
76
#endif
 
77
#ifndef UINT8_MAX
 
78
#define UINT8_MAX              (255U)
 
79
#endif
 
80
#ifndef UINT16_MAX
 
81
#define UINT16_MAX             (65535U)
 
82
#endif
 
83
#ifndef UINT32_MAX
 
84
#define UINT32_MAX             (4294967295U)
 
85
#endif
 
86
 
 
87
#endif /* ! FLEXINT_H */
 
88
 
 
89
#ifdef __cplusplus
 
90
 
 
91
/* The "const" storage-class-modifier is valid. */
 
92
#define YY_USE_CONST
 
93
 
 
94
#else   /* ! __cplusplus */
 
95
 
 
96
/* C99 requires __STDC__ to be defined as 1. */
 
97
#if defined (__STDC__)
 
98
 
 
99
#define YY_USE_CONST
 
100
 
 
101
#endif  /* defined (__STDC__) */
 
102
#endif  /* ! __cplusplus */
 
103
 
 
104
#ifdef YY_USE_CONST
 
105
#define yyconst const
 
106
#else
 
107
#define yyconst
 
108
#endif
 
109
 
 
110
/* Returned upon end-of-file. */
 
111
#define YY_NULL 0
 
112
 
 
113
/* Promotes a possibly negative, possibly signed char to an unsigned
 
114
 * integer for use as an array index.  If the signed char is negative,
 
115
 * we want to instead treat it as an 8-bit unsigned char, hence the
 
116
 * double cast.
 
117
 */
 
118
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
 
119
 
 
120
/* Enter a start condition.  This macro really ought to take a parameter,
 
121
 * but we do it the disgusting crufty way forced on us by the ()-less
 
122
 * definition of BEGIN.
 
123
 */
 
124
#define BEGIN (yy_start) = 1 + 2 *
 
125
 
 
126
/* Translate the current start state into a value that can be later handed
 
127
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 
128
 * compatibility.
 
129
 */
 
130
#define YY_START (((yy_start) - 1) / 2)
 
131
#define YYSTATE YY_START
 
132
 
 
133
/* Action number for EOF rule of a given start state. */
 
134
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
 
135
 
 
136
/* Special action meaning "start processing a new file". */
 
137
#define YY_NEW_FILE yyrestart(yyin  )
 
138
 
 
139
#define YY_END_OF_BUFFER_CHAR 0
 
140
 
 
141
/* Size of default input buffer. */
 
142
#ifndef YY_BUF_SIZE
 
143
#define YY_BUF_SIZE 16384
 
144
#endif
 
145
 
 
146
/* The state buf must be large enough to hold one state per character in the main buffer.
 
147
 */
 
148
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
 
149
 
 
150
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
 
151
#define YY_TYPEDEF_YY_BUFFER_STATE
 
152
typedef struct yy_buffer_state *YY_BUFFER_STATE;
 
153
#endif
 
154
 
 
155
#ifndef YY_TYPEDEF_YY_SIZE_T
 
156
#define YY_TYPEDEF_YY_SIZE_T
 
157
typedef size_t yy_size_t;
 
158
#endif
 
159
 
 
160
extern yy_size_t yyleng;
 
161
 
 
162
extern FILE *yyin, *yyout;
 
163
 
 
164
#define EOB_ACT_CONTINUE_SCAN 0
 
165
#define EOB_ACT_END_OF_FILE 1
 
166
#define EOB_ACT_LAST_MATCH 2
 
167
 
 
168
    #define YY_LESS_LINENO(n)
 
169
    
 
170
/* Return all but the first "n" matched characters back to the input stream. */
 
171
#define yyless(n) \
 
172
        do \
 
173
                { \
 
174
                /* Undo effects of setting up yytext. */ \
 
175
        int yyless_macro_arg = (n); \
 
176
        YY_LESS_LINENO(yyless_macro_arg);\
 
177
                *yy_cp = (yy_hold_char); \
 
178
                YY_RESTORE_YY_MORE_OFFSET \
 
179
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
 
180
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 
181
                } \
 
182
        while ( 0 )
 
183
 
 
184
#define unput(c) yyunput( c, (yytext_ptr)  )
 
185
 
 
186
#ifndef YY_STRUCT_YY_BUFFER_STATE
 
187
#define YY_STRUCT_YY_BUFFER_STATE
 
188
struct yy_buffer_state
 
189
        {
 
190
        FILE *yy_input_file;
 
191
 
 
192
        char *yy_ch_buf;                /* input buffer */
 
193
        char *yy_buf_pos;               /* current position in input buffer */
 
194
 
 
195
        /* Size of input buffer in bytes, not including room for EOB
 
196
         * characters.
 
197
         */
 
198
        yy_size_t yy_buf_size;
 
199
 
 
200
        /* Number of characters read into yy_ch_buf, not including EOB
 
201
         * characters.
 
202
         */
 
203
        yy_size_t yy_n_chars;
 
204
 
 
205
        /* Whether we "own" the buffer - i.e., we know we created it,
 
206
         * and can realloc() it to grow it, and should free() it to
 
207
         * delete it.
 
208
         */
 
209
        int yy_is_our_buffer;
 
210
 
 
211
        /* Whether this is an "interactive" input source; if so, and
 
212
         * if we're using stdio for input, then we want to use getc()
 
213
         * instead of fread(), to make sure we stop fetching input after
 
214
         * each newline.
 
215
         */
 
216
        int yy_is_interactive;
 
217
 
 
218
        /* Whether we're considered to be at the beginning of a line.
 
219
         * If so, '^' rules will be active on the next match, otherwise
 
220
         * not.
 
221
         */
 
222
        int yy_at_bol;
 
223
 
 
224
    int yy_bs_lineno; /**< The line count. */
 
225
    int yy_bs_column; /**< The column count. */
 
226
    
 
227
        /* Whether to try to fill the input buffer when we reach the
 
228
         * end of it.
 
229
         */
 
230
        int yy_fill_buffer;
 
231
 
 
232
        int yy_buffer_status;
 
233
 
 
234
#define YY_BUFFER_NEW 0
 
235
#define YY_BUFFER_NORMAL 1
 
236
        /* When an EOF's been seen but there's still some text to process
 
237
         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
 
238
         * shouldn't try reading from the input source any more.  We might
 
239
         * still have a bunch of tokens to match, though, because of
 
240
         * possible backing-up.
 
241
         *
 
242
         * When we actually see the EOF, we change the status to "new"
 
243
         * (via yyrestart()), so that the user can continue scanning by
 
244
         * just pointing yyin at a new input file.
 
245
         */
 
246
#define YY_BUFFER_EOF_PENDING 2
 
247
 
 
248
        };
 
249
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
250
 
 
251
/* Stack of input buffers. */
 
252
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 
253
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
 
254
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
255
 
 
256
/* We provide macros for accessing buffer states in case in the
 
257
 * future we want to put the buffer states in a more general
 
258
 * "scanner state".
 
259
 *
 
260
 * Returns the top of the stack, or NULL.
 
261
 */
 
262
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
 
263
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
 
264
                          : NULL)
 
265
 
 
266
/* Same as previous macro, but useful when we know that the buffer stack is not
 
267
 * NULL or when we need an lvalue. For internal use only.
 
268
 */
 
269
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 
270
 
 
271
/* yy_hold_char holds the character lost when yytext is formed. */
 
272
static char yy_hold_char;
 
273
static yy_size_t yy_n_chars;            /* number of characters read into yy_ch_buf */
 
274
yy_size_t yyleng;
 
275
 
 
276
/* Points to current character in buffer. */
 
277
static char *yy_c_buf_p = (char *) 0;
 
278
static int yy_init = 0;         /* whether we need to initialize */
 
279
static int yy_start = 0;        /* start state number */
 
280
 
 
281
/* Flag which is used to allow yywrap()'s to do buffer switches
 
282
 * instead of setting up a fresh yyin.  A bit of a hack ...
 
283
 */
 
284
static int yy_did_buffer_switch_on_eof;
 
285
 
 
286
void yyrestart (FILE *input_file  );
 
287
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
 
288
YY_BUFFER_STATE yy_create_buffer (FILE *file,int size  );
 
289
void yy_delete_buffer (YY_BUFFER_STATE b  );
 
290
void yy_flush_buffer (YY_BUFFER_STATE b  );
 
291
void yypush_buffer_state (YY_BUFFER_STATE new_buffer  );
 
292
void yypop_buffer_state (void );
 
293
 
 
294
static void yyensure_buffer_stack (void );
 
295
static void yy_load_buffer_state (void );
 
296
static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
297
 
 
298
#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
 
299
 
 
300
YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 
301
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
 
302
YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
303
 
 
304
void *yyalloc (yy_size_t  );
 
305
void *yyrealloc (void *,yy_size_t  );
 
306
void yyfree (void *  );
 
307
 
 
308
#define yy_new_buffer yy_create_buffer
 
309
 
 
310
#define yy_set_interactive(is_interactive) \
 
311
        { \
 
312
        if ( ! YY_CURRENT_BUFFER ){ \
 
313
        yyensure_buffer_stack (); \
 
314
                YY_CURRENT_BUFFER_LVALUE =    \
 
315
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
 
316
        } \
 
317
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
 
318
        }
 
319
 
 
320
#define yy_set_bol(at_bol) \
 
321
        { \
 
322
        if ( ! YY_CURRENT_BUFFER ){\
 
323
        yyensure_buffer_stack (); \
 
324
                YY_CURRENT_BUFFER_LVALUE =    \
 
325
            yy_create_buffer(yyin,YY_BUF_SIZE ); \
 
326
        } \
 
327
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
 
328
        }
 
329
 
 
330
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
331
 
 
332
/* Begin user sect3 */
 
333
 
 
334
typedef unsigned char YY_CHAR;
 
335
 
 
336
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 
337
 
 
338
typedef int yy_state_type;
 
339
 
 
340
extern int yylineno;
 
341
 
 
342
int yylineno = 1;
 
343
 
 
344
extern char *yytext;
 
345
#define yytext_ptr yytext
 
346
 
 
347
static yy_state_type yy_get_previous_state (void );
 
348
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 
349
static int yy_get_next_buffer (void );
 
350
static void yy_fatal_error (yyconst char msg[]  );
 
351
 
 
352
/* Done after the current pattern has been matched and before the
 
353
 * corresponding action - sets up yytext.
 
354
 */
 
355
#define YY_DO_BEFORE_ACTION \
 
356
        (yytext_ptr) = yy_bp; \
 
357
        yyleng = (size_t) (yy_cp - yy_bp); \
 
358
        (yy_hold_char) = *yy_cp; \
 
359
        *yy_cp = '\0'; \
 
360
        (yy_c_buf_p) = yy_cp;
 
361
 
 
362
#define YY_NUM_RULES 7
 
363
#define YY_END_OF_BUFFER 8
 
364
/* This struct is not used in this scanner,
 
365
   but its presence is necessary. */
 
366
struct yy_trans_info
 
367
        {
 
368
        flex_int32_t yy_verify;
 
369
        flex_int32_t yy_nxt;
 
370
        };
 
371
static yyconst flex_int16_t yy_accept[14] =
 
372
    {   0,
 
373
        0,    0,    8,    7,    6,    3,    2,    7,    5,    1,
 
374
        4,    1,    0
 
375
    } ;
 
376
 
 
377
static yyconst flex_int32_t yy_ec[256] =
 
378
    {   0,
 
379
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
 
380
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
381
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
382
        1,    2,    1,    4,    1,    1,    1,    1,    1,    1,
 
383
        1,    5,    1,    1,    6,    1,    7,    6,    6,    6,
 
384
        6,    6,    6,    6,    6,    6,    6,    1,    1,    1,
 
385
        8,    1,    1,    1,    9,    9,    9,    9,    9,    9,
 
386
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
 
387
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
 
388
        1,    1,    1,    1,    6,    1,    9,    9,    9,    9,
 
389
 
 
390
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
 
391
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
 
392
        9,    9,    8,    1,    8,    1,    1,    1,    1,    1,
 
393
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
394
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
395
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
396
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
397
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
398
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
399
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
400
 
 
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
 
407
    } ;
 
408
 
 
409
static yyconst flex_int32_t yy_meta[10] =
 
410
    {   0,
 
411
        1,    1,    1,    1,    1,    2,    1,    1,    2
 
412
    } ;
 
413
 
 
414
static yyconst flex_int16_t yy_base[15] =
 
415
    {   0,
 
416
        0,    0,   12,   13,   13,   13,   13,    6,   13,    0,
 
417
       13,    0,   13,    8
 
418
    } ;
 
419
 
 
420
static yyconst flex_int16_t yy_def[15] =
 
421
    {   0,
 
422
       13,    1,   13,   13,   13,   13,   13,   13,   13,   14,
 
423
       13,   14,    0,   13
 
424
    } ;
 
425
 
 
426
static yyconst flex_int16_t yy_nxt[23] =
 
427
    {   0,
 
428
        4,    5,    6,    7,    4,    4,    8,    9,   10,   12,
 
429
       11,   13,    3,   13,   13,   13,   13,   13,   13,   13,
 
430
       13,   13
 
431
    } ;
 
432
 
 
433
static yyconst flex_int16_t yy_chk[23] =
 
434
    {   0,
 
435
        1,    1,    1,    1,    1,    1,    1,    1,    1,   14,
 
436
        8,    3,   13,   13,   13,   13,   13,   13,   13,   13,
 
437
       13,   13
 
438
    } ;
 
439
 
 
440
static yy_state_type yy_last_accepting_state;
 
441
static char *yy_last_accepting_cpos;
 
442
 
 
443
extern int yy_flex_debug;
 
444
int yy_flex_debug = 0;
 
445
 
 
446
/* The intent behind this definition is that it'll catch
 
447
 * any uses of REJECT which flex missed.
 
448
 */
 
449
#define REJECT reject_used_but_not_detected
 
450
#define yymore() yymore_used_but_not_detected
 
451
#define YY_MORE_ADJ 0
 
452
#define YY_RESTORE_YY_MORE_OFFSET
 
453
char *yytext;
 
454
#line 1 "slc-lex.l"
 
455
#line 2 "slc-lex.l"
 
456
/*
 
457
 * Copyright (c) 2004 Kungliga Tekniska Högskolan
 
458
 * (Royal Institute of Technology, Stockholm, Sweden).
 
459
 * All rights reserved.
 
460
 *
 
461
 * Redistribution and use in source and binary forms, with or without
 
462
 * modification, are permitted provided that the following conditions
 
463
 * are met:
 
464
 *
 
465
 * 1. Redistributions of source code must retain the above copyright
 
466
 *    notice, this list of conditions and the following disclaimer.
 
467
 *
 
468
 * 2. Redistributions in binary form must reproduce the above copyright
 
469
 *    notice, this list of conditions and the following disclaimer in the
 
470
 *    documentation and/or other materials provided with the distribution.
 
471
 *
 
472
 * 3. Neither the name of the Institute nor the names of its contributors
 
473
 *    may be used to endorse or promote products derived from this software
 
474
 *    without specific prior written permission.
 
475
 *
 
476
 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 
477
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
478
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
479
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 
480
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
481
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
482
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
483
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
484
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
485
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
486
 * SUCH DAMAGE.
 
487
 */
 
488
 
 
489
/* $Id$ */
 
490
 
 
491
#undef ECHO
 
492
 
 
493
#include <stdio.h>
 
494
#include <string.h>
 
495
#include <stdarg.h>
 
496
#include <stdlib.h>
 
497
#include "slc.h"
 
498
#include "slc-gram.h"
 
499
unsigned lineno = 1;
 
500
 
 
501
static void handle_comment(void);
 
502
static char * handle_string(void);
 
503
 
 
504
#define YY_NO_UNPUT
 
505
 
 
506
#undef ECHO
 
507
 
 
508
#line 509 "slc-lex.c"
 
509
 
 
510
#define INITIAL 0
 
511
 
 
512
#ifndef YY_NO_UNISTD_H
 
513
/* Special case for "unistd.h", since it is non-ANSI. We include it way
 
514
 * down here because we want the user's section 1 to have been scanned first.
 
515
 * The user has a chance to override it with an option.
 
516
 */
 
517
#include <unistd.h>
 
518
#endif
 
519
 
 
520
#ifndef YY_EXTRA_TYPE
 
521
#define YY_EXTRA_TYPE void *
 
522
#endif
 
523
 
 
524
static int yy_init_globals (void );
 
525
 
 
526
/* Accessor methods to globals.
 
527
   These are made visible to non-reentrant scanners for convenience. */
 
528
 
 
529
int yylex_destroy (void );
 
530
 
 
531
int yyget_debug (void );
 
532
 
 
533
void yyset_debug (int debug_flag  );
 
534
 
 
535
YY_EXTRA_TYPE yyget_extra (void );
 
536
 
 
537
void yyset_extra (YY_EXTRA_TYPE user_defined  );
 
538
 
 
539
FILE *yyget_in (void );
 
540
 
 
541
void yyset_in  (FILE * in_str  );
 
542
 
 
543
FILE *yyget_out (void );
 
544
 
 
545
void yyset_out  (FILE * out_str  );
 
546
 
 
547
yy_size_t yyget_leng (void );
 
548
 
 
549
char *yyget_text (void );
 
550
 
 
551
int yyget_lineno (void );
 
552
 
 
553
void yyset_lineno (int line_number  );
 
554
 
 
555
/* Macros after this point can all be overridden by user definitions in
 
556
 * section 1.
 
557
 */
 
558
 
 
559
#ifndef YY_SKIP_YYWRAP
 
560
#ifdef __cplusplus
 
561
extern "C" int yywrap (void );
 
562
#else
 
563
extern int yywrap (void );
 
564
#endif
 
565
#endif
 
566
 
 
567
#ifndef yytext_ptr
 
568
static void yy_flex_strncpy (char *,yyconst char *,int );
 
569
#endif
 
570
 
 
571
#ifdef YY_NEED_STRLEN
 
572
static int yy_flex_strlen (yyconst char * );
 
573
#endif
 
574
 
 
575
#ifndef YY_NO_INPUT
 
576
 
 
577
#ifdef __cplusplus
 
578
static int yyinput (void );
 
579
#else
 
580
static int input (void );
 
581
#endif
 
582
 
 
583
#endif
 
584
 
 
585
/* Amount of stuff to slurp up with each read. */
 
586
#ifndef YY_READ_BUF_SIZE
 
587
#define YY_READ_BUF_SIZE 8192
 
588
#endif
 
589
 
 
590
/* Copy whatever the last rule matched to the standard output. */
 
591
#ifndef ECHO
 
592
/* This used to be an fputs(), but since the string might contain NUL's,
 
593
 * we now use fwrite().
 
594
 */
 
595
#define ECHO fwrite( yytext, yyleng, 1, yyout )
 
596
#endif
 
597
 
 
598
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 
599
 * is returned in "result".
 
600
 */
 
601
#ifndef YY_INPUT
 
602
#define YY_INPUT(buf,result,max_size) \
 
603
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 
604
                { \
 
605
                int c = '*'; \
 
606
                yy_size_t n; \
 
607
                for ( n = 0; n < max_size && \
 
608
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 
609
                        buf[n] = (char) c; \
 
610
                if ( c == '\n' ) \
 
611
                        buf[n++] = (char) c; \
 
612
                if ( c == EOF && ferror( yyin ) ) \
 
613
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
 
614
                result = n; \
 
615
                } \
 
616
        else \
 
617
                { \
 
618
                errno=0; \
 
619
                while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
 
620
                        { \
 
621
                        if( errno != EINTR) \
 
622
                                { \
 
623
                                YY_FATAL_ERROR( "input in flex scanner failed" ); \
 
624
                                break; \
 
625
                                } \
 
626
                        errno=0; \
 
627
                        clearerr(yyin); \
 
628
                        } \
 
629
                }\
 
630
\
 
631
 
 
632
#endif
 
633
 
 
634
/* No semi-colon after return; correct usage is to write "yyterminate();" -
 
635
 * we don't want an extra ';' after the "return" because that will cause
 
636
 * some compilers to complain about unreachable statements.
 
637
 */
 
638
#ifndef yyterminate
 
639
#define yyterminate() return YY_NULL
 
640
#endif
 
641
 
 
642
/* Number of entries by which start-condition stack grows. */
 
643
#ifndef YY_START_STACK_INCR
 
644
#define YY_START_STACK_INCR 25
 
645
#endif
 
646
 
 
647
/* Report a fatal error. */
 
648
#ifndef YY_FATAL_ERROR
 
649
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
 
650
#endif
 
651
 
 
652
/* end tables serialization structures and prototypes */
 
653
 
 
654
/* Default declaration of generated scanner - a define so the user can
 
655
 * easily add parameters.
 
656
 */
 
657
#ifndef YY_DECL
 
658
#define YY_DECL_IS_OURS 1
 
659
 
 
660
extern int yylex (void);
 
661
 
 
662
#define YY_DECL int yylex (void)
 
663
#endif /* !YY_DECL */
 
664
 
 
665
/* Code executed at the beginning of each rule, after yytext and yyleng
 
666
 * have been set up.
 
667
 */
 
668
#ifndef YY_USER_ACTION
 
669
#define YY_USER_ACTION
 
670
#endif
 
671
 
 
672
/* Code executed at the end of each rule. */
 
673
#ifndef YY_BREAK
 
674
#define YY_BREAK break;
 
675
#endif
 
676
 
 
677
#define YY_RULE_SETUP \
 
678
        YY_USER_ACTION
 
679
 
 
680
/** The main scanner function which does all the work.
 
681
 */
 
682
YY_DECL
 
683
{
 
684
        register yy_state_type yy_current_state;
 
685
        register char *yy_cp, *yy_bp;
 
686
        register int yy_act;
 
687
    
 
688
#line 58 "slc-lex.l"
 
689
 
 
690
#line 691 "slc-lex.c"
 
691
 
 
692
        if ( !(yy_init) )
 
693
                {
 
694
                (yy_init) = 1;
 
695
 
 
696
#ifdef YY_USER_INIT
 
697
                YY_USER_INIT;
 
698
#endif
 
699
 
 
700
                if ( ! (yy_start) )
 
701
                        (yy_start) = 1; /* first start state */
 
702
 
 
703
                if ( ! yyin )
 
704
                        yyin = stdin;
 
705
 
 
706
                if ( ! yyout )
 
707
                        yyout = stdout;
 
708
 
 
709
                if ( ! YY_CURRENT_BUFFER ) {
 
710
                        yyensure_buffer_stack ();
 
711
                        YY_CURRENT_BUFFER_LVALUE =
 
712
                                yy_create_buffer(yyin,YY_BUF_SIZE );
 
713
                }
 
714
 
 
715
                yy_load_buffer_state( );
 
716
                }
 
717
 
 
718
        while ( 1 )             /* loops until end-of-file is reached */
 
719
                {
 
720
                yy_cp = (yy_c_buf_p);
 
721
 
 
722
                /* Support of yytext. */
 
723
                *yy_cp = (yy_hold_char);
 
724
 
 
725
                /* yy_bp points to the position in yy_ch_buf of the start of
 
726
                 * the current run.
 
727
                 */
 
728
                yy_bp = yy_cp;
 
729
 
 
730
                yy_current_state = (yy_start);
 
731
yy_match:
 
732
                do
 
733
                        {
 
734
                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
 
735
                        if ( yy_accept[yy_current_state] )
 
736
                                {
 
737
                                (yy_last_accepting_state) = yy_current_state;
 
738
                                (yy_last_accepting_cpos) = yy_cp;
 
739
                                }
 
740
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 
741
                                {
 
742
                                yy_current_state = (int) yy_def[yy_current_state];
 
743
                                if ( yy_current_state >= 14 )
 
744
                                        yy_c = yy_meta[(unsigned int) yy_c];
 
745
                                }
 
746
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 
747
                        ++yy_cp;
 
748
                        }
 
749
                while ( yy_base[yy_current_state] != 13 );
 
750
 
 
751
yy_find_action:
 
752
                yy_act = yy_accept[yy_current_state];
 
753
                if ( yy_act == 0 )
 
754
                        { /* have to back up */
 
755
                        yy_cp = (yy_last_accepting_cpos);
 
756
                        yy_current_state = (yy_last_accepting_state);
 
757
                        yy_act = yy_accept[yy_current_state];
 
758
                        }
 
759
 
 
760
                YY_DO_BEFORE_ACTION;
 
761
 
 
762
do_action:      /* This label is used only to access EOF actions. */
 
763
 
 
764
                switch ( yy_act )
 
765
        { /* beginning of action switch */
 
766
                        case 0: /* must back up */
 
767
                        /* undo the effects of YY_DO_BEFORE_ACTION */
 
768
                        *yy_cp = (yy_hold_char);
 
769
                        yy_cp = (yy_last_accepting_cpos);
 
770
                        yy_current_state = (yy_last_accepting_state);
 
771
                        goto yy_find_action;
 
772
 
 
773
case 1:
 
774
YY_RULE_SETUP
 
775
#line 59 "slc-lex.l"
 
776
{
 
777
                          yylval.string = strdup ((const char *)yytext);
 
778
                          return LITERAL;
 
779
                        }
 
780
        YY_BREAK
 
781
case 2:
 
782
YY_RULE_SETUP
 
783
#line 63 "slc-lex.l"
 
784
{ yylval.string = handle_string(); return STRING; }
 
785
        YY_BREAK
 
786
case 3:
 
787
/* rule 3 can match eol */
 
788
YY_RULE_SETUP
 
789
#line 64 "slc-lex.l"
 
790
{ ++lineno; }
 
791
        YY_BREAK
 
792
case 4:
 
793
YY_RULE_SETUP
 
794
#line 65 "slc-lex.l"
 
795
{ handle_comment(); }
 
796
        YY_BREAK
 
797
case 5:
 
798
YY_RULE_SETUP
 
799
#line 66 "slc-lex.l"
 
800
{ return *yytext; }
 
801
        YY_BREAK
 
802
case 6:
 
803
YY_RULE_SETUP
 
804
#line 67 "slc-lex.l"
 
805
;
 
806
        YY_BREAK
 
807
case 7:
 
808
YY_RULE_SETUP
 
809
#line 68 "slc-lex.l"
 
810
ECHO;
 
811
        YY_BREAK
 
812
#line 813 "slc-lex.c"
 
813
case YY_STATE_EOF(INITIAL):
 
814
        yyterminate();
 
815
 
 
816
        case YY_END_OF_BUFFER:
 
817
                {
 
818
                /* Amount of text matched not including the EOB char. */
 
819
                int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
 
820
 
 
821
                /* Undo the effects of YY_DO_BEFORE_ACTION. */
 
822
                *yy_cp = (yy_hold_char);
 
823
                YY_RESTORE_YY_MORE_OFFSET
 
824
 
 
825
                if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
 
826
                        {
 
827
                        /* We're scanning a new file or input source.  It's
 
828
                         * possible that this happened because the user
 
829
                         * just pointed yyin at a new source and called
 
830
                         * yylex().  If so, then we have to assure
 
831
                         * consistency between YY_CURRENT_BUFFER and our
 
832
                         * globals.  Here is the right place to do so, because
 
833
                         * this is the first action (other than possibly a
 
834
                         * back-up) that will match for the new input source.
 
835
                         */
 
836
                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 
837
                        YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
 
838
                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
 
839
                        }
 
840
 
 
841
                /* Note that here we test for yy_c_buf_p "<=" to the position
 
842
                 * of the first EOB in the buffer, since yy_c_buf_p will
 
843
                 * already have been incremented past the NUL character
 
844
                 * (since all states make transitions on EOB to the
 
845
                 * end-of-buffer state).  Contrast this with the test
 
846
                 * in input().
 
847
                 */
 
848
                if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
 
849
                        { /* This was really a NUL. */
 
850
                        yy_state_type yy_next_state;
 
851
 
 
852
                        (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
 
853
 
 
854
                        yy_current_state = yy_get_previous_state(  );
 
855
 
 
856
                        /* Okay, we're now positioned to make the NUL
 
857
                         * transition.  We couldn't have
 
858
                         * yy_get_previous_state() go ahead and do it
 
859
                         * for us because it doesn't know how to deal
 
860
                         * with the possibility of jamming (and we don't
 
861
                         * want to build jamming into it because then it
 
862
                         * will run more slowly).
 
863
                         */
 
864
 
 
865
                        yy_next_state = yy_try_NUL_trans( yy_current_state );
 
866
 
 
867
                        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 
868
 
 
869
                        if ( yy_next_state )
 
870
                                {
 
871
                                /* Consume the NUL. */
 
872
                                yy_cp = ++(yy_c_buf_p);
 
873
                                yy_current_state = yy_next_state;
 
874
                                goto yy_match;
 
875
                                }
 
876
 
 
877
                        else
 
878
                                {
 
879
                                yy_cp = (yy_c_buf_p);
 
880
                                goto yy_find_action;
 
881
                                }
 
882
                        }
 
883
 
 
884
                else switch ( yy_get_next_buffer(  ) )
 
885
                        {
 
886
                        case EOB_ACT_END_OF_FILE:
 
887
                                {
 
888
                                (yy_did_buffer_switch_on_eof) = 0;
 
889
 
 
890
                                if ( yywrap( ) )
 
891
                                        {
 
892
                                        /* Note: because we've taken care in
 
893
                                         * yy_get_next_buffer() to have set up
 
894
                                         * yytext, we can now set up
 
895
                                         * yy_c_buf_p so that if some total
 
896
                                         * hoser (like flex itself) wants to
 
897
                                         * call the scanner after we return the
 
898
                                         * YY_NULL, it'll still work - another
 
899
                                         * YY_NULL will get returned.
 
900
                                         */
 
901
                                        (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
 
902
 
 
903
                                        yy_act = YY_STATE_EOF(YY_START);
 
904
                                        goto do_action;
 
905
                                        }
 
906
 
 
907
                                else
 
908
                                        {
 
909
                                        if ( ! (yy_did_buffer_switch_on_eof) )
 
910
                                                YY_NEW_FILE;
 
911
                                        }
 
912
                                break;
 
913
                                }
 
914
 
 
915
                        case EOB_ACT_CONTINUE_SCAN:
 
916
                                (yy_c_buf_p) =
 
917
                                        (yytext_ptr) + yy_amount_of_matched_text;
 
918
 
 
919
                                yy_current_state = yy_get_previous_state(  );
 
920
 
 
921
                                yy_cp = (yy_c_buf_p);
 
922
                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 
923
                                goto yy_match;
 
924
 
 
925
                        case EOB_ACT_LAST_MATCH:
 
926
                                (yy_c_buf_p) =
 
927
                                &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
 
928
 
 
929
                                yy_current_state = yy_get_previous_state(  );
 
930
 
 
931
                                yy_cp = (yy_c_buf_p);
 
932
                                yy_bp = (yytext_ptr) + YY_MORE_ADJ;
 
933
                                goto yy_find_action;
 
934
                        }
 
935
                break;
 
936
                }
 
937
 
 
938
        default:
 
939
                YY_FATAL_ERROR(
 
940
                        "fatal flex scanner internal error--no action found" );
 
941
        } /* end of action switch */
 
942
                } /* end of scanning one token */
 
943
} /* end of yylex */
 
944
 
 
945
/* yy_get_next_buffer - try to read in a new buffer
 
946
 *
 
947
 * Returns a code representing an action:
 
948
 *      EOB_ACT_LAST_MATCH -
 
949
 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 
950
 *      EOB_ACT_END_OF_FILE - end of file
 
951
 */
 
952
static int yy_get_next_buffer (void)
 
953
{
 
954
        register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
 
955
        register char *source = (yytext_ptr);
 
956
        register int number_to_move, i;
 
957
        int ret_val;
 
958
 
 
959
        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
 
960
                YY_FATAL_ERROR(
 
961
                "fatal flex scanner internal error--end of buffer missed" );
 
962
 
 
963
        if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
 
964
                { /* Don't try to fill the buffer, so this is an EOF. */
 
965
                if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
 
966
                        {
 
967
                        /* We matched a single character, the EOB, so
 
968
                         * treat this as a final EOF.
 
969
                         */
 
970
                        return EOB_ACT_END_OF_FILE;
 
971
                        }
 
972
 
 
973
                else
 
974
                        {
 
975
                        /* We matched some text prior to the EOB, first
 
976
                         * process it.
 
977
                         */
 
978
                        return EOB_ACT_LAST_MATCH;
 
979
                        }
 
980
                }
 
981
 
 
982
        /* Try to read more data. */
 
983
 
 
984
        /* First move last chars to start of buffer. */
 
985
        number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
 
986
 
 
987
        for ( i = 0; i < number_to_move; ++i )
 
988
                *(dest++) = *(source++);
 
989
 
 
990
        if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
 
991
                /* don't do the read, it's not guaranteed to return an EOF,
 
992
                 * just force an EOF
 
993
                 */
 
994
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
 
995
 
 
996
        else
 
997
                {
 
998
                        yy_size_t num_to_read =
 
999
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
1000
 
 
1001
                while ( num_to_read <= 0 )
 
1002
                        { /* Not enough room in the buffer - grow it. */
 
1003
 
 
1004
                        /* just a shorter name for the current buffer */
 
1005
                        YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
 
1006
 
 
1007
                        int yy_c_buf_p_offset =
 
1008
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
1009
 
 
1010
                        if ( b->yy_is_our_buffer )
 
1011
                                {
 
1012
                                yy_size_t new_size = b->yy_buf_size * 2;
 
1013
 
 
1014
                                if ( new_size <= 0 )
 
1015
                                        b->yy_buf_size += b->yy_buf_size / 8;
 
1016
                                else
 
1017
                                        b->yy_buf_size *= 2;
 
1018
 
 
1019
                                b->yy_ch_buf = (char *)
 
1020
                                        /* Include room in for 2 EOB chars. */
 
1021
                                        yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
 
1022
                                }
 
1023
                        else
 
1024
                                /* Can't grow it, we don't own it. */
 
1025
                                b->yy_ch_buf = 0;
 
1026
 
 
1027
                        if ( ! b->yy_ch_buf )
 
1028
                                YY_FATAL_ERROR(
 
1029
                                "fatal error - scanner input buffer overflow" );
 
1030
 
 
1031
                        (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
 
1032
 
 
1033
                        num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
 
1034
                                                number_to_move - 1;
 
1035
 
 
1036
                        }
 
1037
 
 
1038
                if ( num_to_read > YY_READ_BUF_SIZE )
 
1039
                        num_to_read = YY_READ_BUF_SIZE;
 
1040
 
 
1041
                /* Read in more data. */
 
1042
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
 
1043
                        (yy_n_chars), num_to_read );
 
1044
 
 
1045
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 
1046
                }
 
1047
 
 
1048
        if ( (yy_n_chars) == 0 )
 
1049
                {
 
1050
                if ( number_to_move == YY_MORE_ADJ )
 
1051
                        {
 
1052
                        ret_val = EOB_ACT_END_OF_FILE;
 
1053
                        yyrestart(yyin  );
 
1054
                        }
 
1055
 
 
1056
                else
 
1057
                        {
 
1058
                        ret_val = EOB_ACT_LAST_MATCH;
 
1059
                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
 
1060
                                YY_BUFFER_EOF_PENDING;
 
1061
                        }
 
1062
                }
 
1063
 
 
1064
        else
 
1065
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
1066
 
 
1067
        if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 
1068
                /* Extend the array by 50%, plus the number we really need. */
 
1069
                yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
 
1070
                YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
 
1071
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 
1072
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
 
1073
        }
 
1074
 
 
1075
        (yy_n_chars) += number_to_move;
 
1076
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
 
1077
        YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
 
1078
 
 
1079
        (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
 
1080
 
 
1081
        return ret_val;
 
1082
}
 
1083
 
 
1084
/* yy_get_previous_state - get the state just before the EOB char was reached */
 
1085
 
 
1086
    static yy_state_type yy_get_previous_state (void)
 
1087
{
 
1088
        register yy_state_type yy_current_state;
 
1089
        register char *yy_cp;
 
1090
    
 
1091
        yy_current_state = (yy_start);
 
1092
 
 
1093
        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
 
1094
                {
 
1095
                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
 
1096
                if ( yy_accept[yy_current_state] )
 
1097
                        {
 
1098
                        (yy_last_accepting_state) = yy_current_state;
 
1099
                        (yy_last_accepting_cpos) = yy_cp;
 
1100
                        }
 
1101
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 
1102
                        {
 
1103
                        yy_current_state = (int) yy_def[yy_current_state];
 
1104
                        if ( yy_current_state >= 14 )
 
1105
                                yy_c = yy_meta[(unsigned int) yy_c];
 
1106
                        }
 
1107
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 
1108
                }
 
1109
 
 
1110
        return yy_current_state;
 
1111
}
 
1112
 
 
1113
/* yy_try_NUL_trans - try to make a transition on the NUL character
 
1114
 *
 
1115
 * synopsis
 
1116
 *      next_state = yy_try_NUL_trans( current_state );
 
1117
 */
 
1118
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 
1119
{
 
1120
        register int yy_is_jam;
 
1121
        register char *yy_cp = (yy_c_buf_p);
 
1122
 
 
1123
        register YY_CHAR yy_c = 1;
 
1124
        if ( yy_accept[yy_current_state] )
 
1125
                {
 
1126
                (yy_last_accepting_state) = yy_current_state;
 
1127
                (yy_last_accepting_cpos) = yy_cp;
 
1128
                }
 
1129
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 
1130
                {
 
1131
                yy_current_state = (int) yy_def[yy_current_state];
 
1132
                if ( yy_current_state >= 14 )
 
1133
                        yy_c = yy_meta[(unsigned int) yy_c];
 
1134
                }
 
1135
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 
1136
        yy_is_jam = (yy_current_state == 13);
 
1137
 
 
1138
        return yy_is_jam ? 0 : yy_current_state;
 
1139
}
 
1140
 
 
1141
#ifndef YY_NO_INPUT
 
1142
#ifdef __cplusplus
 
1143
    static int yyinput (void)
 
1144
#else
 
1145
    static int input  (void)
 
1146
#endif
 
1147
 
 
1148
{
 
1149
        int c;
 
1150
    
 
1151
        *(yy_c_buf_p) = (yy_hold_char);
 
1152
 
 
1153
        if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
 
1154
                {
 
1155
                /* yy_c_buf_p now points to the character we want to return.
 
1156
                 * If this occurs *before* the EOB characters, then it's a
 
1157
                 * valid NUL; if not, then we've hit the end of the buffer.
 
1158
                 */
 
1159
                if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
 
1160
                        /* This was really a NUL. */
 
1161
                        *(yy_c_buf_p) = '\0';
 
1162
 
 
1163
                else
 
1164
                        { /* need more input */
 
1165
                        yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
 
1166
                        ++(yy_c_buf_p);
 
1167
 
 
1168
                        switch ( yy_get_next_buffer(  ) )
 
1169
                                {
 
1170
                                case EOB_ACT_LAST_MATCH:
 
1171
                                        /* This happens because yy_g_n_b()
 
1172
                                         * sees that we've accumulated a
 
1173
                                         * token and flags that we need to
 
1174
                                         * try matching the token before
 
1175
                                         * proceeding.  But for input(),
 
1176
                                         * there's no matching to consider.
 
1177
                                         * So convert the EOB_ACT_LAST_MATCH
 
1178
                                         * to EOB_ACT_END_OF_FILE.
 
1179
                                         */
 
1180
 
 
1181
                                        /* Reset buffer status. */
 
1182
                                        yyrestart(yyin );
 
1183
 
 
1184
                                        /*FALLTHROUGH*/
 
1185
 
 
1186
                                case EOB_ACT_END_OF_FILE:
 
1187
                                        {
 
1188
                                        if ( yywrap( ) )
 
1189
                                                return 0;
 
1190
 
 
1191
                                        if ( ! (yy_did_buffer_switch_on_eof) )
 
1192
                                                YY_NEW_FILE;
 
1193
#ifdef __cplusplus
 
1194
                                        return yyinput();
 
1195
#else
 
1196
                                        return input();
 
1197
#endif
 
1198
                                        }
 
1199
 
 
1200
                                case EOB_ACT_CONTINUE_SCAN:
 
1201
                                        (yy_c_buf_p) = (yytext_ptr) + offset;
 
1202
                                        break;
 
1203
                                }
 
1204
                        }
 
1205
                }
 
1206
 
 
1207
        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
 
1208
        *(yy_c_buf_p) = '\0';   /* preserve yytext */
 
1209
        (yy_hold_char) = *++(yy_c_buf_p);
 
1210
 
 
1211
        return c;
 
1212
}
 
1213
#endif  /* ifndef YY_NO_INPUT */
 
1214
 
 
1215
/** Immediately switch to a different input stream.
 
1216
 * @param input_file A readable stream.
 
1217
 * 
 
1218
 * @note This function does not reset the start condition to @c INITIAL .
 
1219
 */
 
1220
    void yyrestart  (FILE * input_file )
 
1221
{
 
1222
    
 
1223
        if ( ! YY_CURRENT_BUFFER ){
 
1224
        yyensure_buffer_stack ();
 
1225
                YY_CURRENT_BUFFER_LVALUE =
 
1226
            yy_create_buffer(yyin,YY_BUF_SIZE );
 
1227
        }
 
1228
 
 
1229
        yy_init_buffer(YY_CURRENT_BUFFER,input_file );
 
1230
        yy_load_buffer_state( );
 
1231
}
 
1232
 
 
1233
/** Switch to a different input buffer.
 
1234
 * @param new_buffer The new input buffer.
 
1235
 * 
 
1236
 */
 
1237
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 
1238
{
 
1239
    
 
1240
        /* TODO. We should be able to replace this entire function body
 
1241
         * with
 
1242
         *              yypop_buffer_state();
 
1243
         *              yypush_buffer_state(new_buffer);
 
1244
     */
 
1245
        yyensure_buffer_stack ();
 
1246
        if ( YY_CURRENT_BUFFER == new_buffer )
 
1247
                return;
 
1248
 
 
1249
        if ( YY_CURRENT_BUFFER )
 
1250
                {
 
1251
                /* Flush out information for old buffer. */
 
1252
                *(yy_c_buf_p) = (yy_hold_char);
 
1253
                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 
1254
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 
1255
                }
 
1256
 
 
1257
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
1258
        yy_load_buffer_state( );
 
1259
 
 
1260
        /* We don't actually know whether we did this switch during
 
1261
         * EOF (yywrap()) processing, but the only time this flag
 
1262
         * is looked at is after yywrap() is called, so it's safe
 
1263
         * to go ahead and always set it.
 
1264
         */
 
1265
        (yy_did_buffer_switch_on_eof) = 1;
 
1266
}
 
1267
 
 
1268
static void yy_load_buffer_state  (void)
 
1269
{
 
1270
        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
 
1271
        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
 
1272
        yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
 
1273
        (yy_hold_char) = *(yy_c_buf_p);
 
1274
}
 
1275
 
 
1276
/** Allocate and initialize an input buffer state.
 
1277
 * @param file A readable stream.
 
1278
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 
1279
 * 
 
1280
 * @return the allocated buffer state.
 
1281
 */
 
1282
    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
 
1283
{
 
1284
        YY_BUFFER_STATE b;
 
1285
    
 
1286
        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 
1287
        if ( ! b )
 
1288
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
1289
 
 
1290
        b->yy_buf_size = size;
 
1291
 
 
1292
        /* yy_ch_buf has to be 2 characters longer than the size given because
 
1293
         * we need to put in 2 end-of-buffer characters.
 
1294
         */
 
1295
        b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
 
1296
        if ( ! b->yy_ch_buf )
 
1297
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
1298
 
 
1299
        b->yy_is_our_buffer = 1;
 
1300
 
 
1301
        yy_init_buffer(b,file );
 
1302
 
 
1303
        return b;
 
1304
}
 
1305
 
 
1306
/** Destroy the buffer.
 
1307
 * @param b a buffer created with yy_create_buffer()
 
1308
 * 
 
1309
 */
 
1310
    void yy_delete_buffer (YY_BUFFER_STATE  b )
 
1311
{
 
1312
    
 
1313
        if ( ! b )
 
1314
                return;
 
1315
 
 
1316
        if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
 
1317
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
1318
 
 
1319
        if ( b->yy_is_our_buffer )
 
1320
                yyfree((void *) b->yy_ch_buf  );
 
1321
 
 
1322
        yyfree((void *) b  );
 
1323
}
 
1324
 
 
1325
#ifndef __cplusplus
 
1326
extern int isatty (int );
 
1327
#endif /* __cplusplus */
 
1328
    
 
1329
/* Initializes or reinitializes a buffer.
 
1330
 * This function is sometimes called more than once on the same buffer,
 
1331
 * such as during a yyrestart() or at EOF.
 
1332
 */
 
1333
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 
1334
 
 
1335
{
 
1336
        int oerrno = errno;
 
1337
    
 
1338
        yy_flush_buffer(b );
 
1339
 
 
1340
        b->yy_input_file = file;
 
1341
        b->yy_fill_buffer = 1;
 
1342
 
 
1343
    /* If b is the current buffer, then yy_init_buffer was _probably_
 
1344
     * called from yyrestart() or through yy_get_next_buffer.
 
1345
     * In that case, we don't want to reset the lineno or column.
 
1346
     */
 
1347
    if (b != YY_CURRENT_BUFFER){
 
1348
        b->yy_bs_lineno = 1;
 
1349
        b->yy_bs_column = 0;
 
1350
    }
 
1351
 
 
1352
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
 
1353
    
 
1354
        errno = oerrno;
 
1355
}
 
1356
 
 
1357
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
 
1358
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
 
1359
 * 
 
1360
 */
 
1361
    void yy_flush_buffer (YY_BUFFER_STATE  b )
 
1362
{
 
1363
        if ( ! b )
 
1364
                return;
 
1365
 
 
1366
        b->yy_n_chars = 0;
 
1367
 
 
1368
        /* We always need two end-of-buffer characters.  The first causes
 
1369
         * a transition to the end-of-buffer state.  The second causes
 
1370
         * a jam in that state.
 
1371
         */
 
1372
        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
 
1373
        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
 
1374
 
 
1375
        b->yy_buf_pos = &b->yy_ch_buf[0];
 
1376
 
 
1377
        b->yy_at_bol = 1;
 
1378
        b->yy_buffer_status = YY_BUFFER_NEW;
 
1379
 
 
1380
        if ( b == YY_CURRENT_BUFFER )
 
1381
                yy_load_buffer_state( );
 
1382
}
 
1383
 
 
1384
/** Pushes the new state onto the stack. The new state becomes
 
1385
 *  the current state. This function will allocate the stack
 
1386
 *  if necessary.
 
1387
 *  @param new_buffer The new state.
 
1388
 *  
 
1389
 */
 
1390
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 
1391
{
 
1392
        if (new_buffer == NULL)
 
1393
                return;
 
1394
 
 
1395
        yyensure_buffer_stack();
 
1396
 
 
1397
        /* This block is copied from yy_switch_to_buffer. */
 
1398
        if ( YY_CURRENT_BUFFER )
 
1399
                {
 
1400
                /* Flush out information for old buffer. */
 
1401
                *(yy_c_buf_p) = (yy_hold_char);
 
1402
                YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
 
1403
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 
1404
                }
 
1405
 
 
1406
        /* Only push if top exists. Otherwise, replace top. */
 
1407
        if (YY_CURRENT_BUFFER)
 
1408
                (yy_buffer_stack_top)++;
 
1409
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
1410
 
 
1411
        /* copied from yy_switch_to_buffer. */
 
1412
        yy_load_buffer_state( );
 
1413
        (yy_did_buffer_switch_on_eof) = 1;
 
1414
}
 
1415
 
 
1416
/** Removes and deletes the top of the stack, if present.
 
1417
 *  The next element becomes the new top.
 
1418
 *  
 
1419
 */
 
1420
void yypop_buffer_state (void)
 
1421
{
 
1422
        if (!YY_CURRENT_BUFFER)
 
1423
                return;
 
1424
 
 
1425
        yy_delete_buffer(YY_CURRENT_BUFFER );
 
1426
        YY_CURRENT_BUFFER_LVALUE = NULL;
 
1427
        if ((yy_buffer_stack_top) > 0)
 
1428
                --(yy_buffer_stack_top);
 
1429
 
 
1430
        if (YY_CURRENT_BUFFER) {
 
1431
                yy_load_buffer_state( );
 
1432
                (yy_did_buffer_switch_on_eof) = 1;
 
1433
        }
 
1434
}
 
1435
 
 
1436
/* Allocates the stack if it does not exist.
 
1437
 *  Guarantees space for at least one push.
 
1438
 */
 
1439
static void yyensure_buffer_stack (void)
 
1440
{
 
1441
        yy_size_t num_to_alloc;
 
1442
    
 
1443
        if (!(yy_buffer_stack)) {
 
1444
 
 
1445
                /* First allocation is just for 2 elements, since we don't know if this
 
1446
                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 
1447
                 * immediate realloc on the next call.
 
1448
         */
 
1449
                num_to_alloc = 1;
 
1450
                (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
 
1451
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
 
1452
                                                                );
 
1453
                if ( ! (yy_buffer_stack) )
 
1454
                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
1455
                                                                  
 
1456
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 
1457
                                
 
1458
                (yy_buffer_stack_max) = num_to_alloc;
 
1459
                (yy_buffer_stack_top) = 0;
 
1460
                return;
 
1461
        }
 
1462
 
 
1463
        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
1464
 
 
1465
                /* Increase the buffer to prepare for a possible push. */
 
1466
                int grow_size = 8 /* arbitrary grow size */;
 
1467
 
 
1468
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
 
1469
                (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
 
1470
                                                                ((yy_buffer_stack),
 
1471
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
 
1472
                                                                );
 
1473
                if ( ! (yy_buffer_stack) )
 
1474
                        YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
1475
 
 
1476
                /* zero only the new slots.*/
 
1477
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
 
1478
                (yy_buffer_stack_max) = num_to_alloc;
 
1479
        }
 
1480
}
 
1481
 
 
1482
/** Setup the input buffer state to scan directly from a user-specified character buffer.
 
1483
 * @param base the character buffer
 
1484
 * @param size the size in bytes of the character buffer
 
1485
 * 
 
1486
 * @return the newly allocated buffer state object. 
 
1487
 */
 
1488
YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 
1489
{
 
1490
        YY_BUFFER_STATE b;
 
1491
    
 
1492
        if ( size < 2 ||
 
1493
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
 
1494
             base[size-1] != YY_END_OF_BUFFER_CHAR )
 
1495
                /* They forgot to leave room for the EOB's. */
 
1496
                return 0;
 
1497
 
 
1498
        b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 
1499
        if ( ! b )
 
1500
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
1501
 
 
1502
        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
 
1503
        b->yy_buf_pos = b->yy_ch_buf = base;
 
1504
        b->yy_is_our_buffer = 0;
 
1505
        b->yy_input_file = 0;
 
1506
        b->yy_n_chars = b->yy_buf_size;
 
1507
        b->yy_is_interactive = 0;
 
1508
        b->yy_at_bol = 1;
 
1509
        b->yy_fill_buffer = 0;
 
1510
        b->yy_buffer_status = YY_BUFFER_NEW;
 
1511
 
 
1512
        yy_switch_to_buffer(b  );
 
1513
 
 
1514
        return b;
 
1515
}
 
1516
 
 
1517
/** Setup the input buffer state to scan a string. The next call to yylex() will
 
1518
 * scan from a @e copy of @a str.
 
1519
 * @param yystr a NUL-terminated string to scan
 
1520
 * 
 
1521
 * @return the newly allocated buffer state object.
 
1522
 * @note If you want to scan bytes that may contain NUL values, then use
 
1523
 *       yy_scan_bytes() instead.
 
1524
 */
 
1525
YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 
1526
{
 
1527
    
 
1528
        return yy_scan_bytes(yystr,strlen(yystr) );
 
1529
}
 
1530
 
 
1531
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
 
1532
 * scan from a @e copy of @a bytes.
 
1533
 * @param bytes the byte buffer to scan
 
1534
 * @param len the number of bytes in the buffer pointed to by @a bytes.
 
1535
 * 
 
1536
 * @return the newly allocated buffer state object.
 
1537
 */
 
1538
YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 
1539
{
 
1540
        YY_BUFFER_STATE b;
 
1541
        char *buf;
 
1542
        yy_size_t n, i;
 
1543
    
 
1544
        /* Get memory for full buffer, including space for trailing EOB's. */
 
1545
        n = _yybytes_len + 2;
 
1546
        buf = (char *) yyalloc(n  );
 
1547
        if ( ! buf )
 
1548
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
1549
 
 
1550
        for ( i = 0; i < _yybytes_len; ++i )
 
1551
                buf[i] = yybytes[i];
 
1552
 
 
1553
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
1554
 
 
1555
        b = yy_scan_buffer(buf,n );
 
1556
        if ( ! b )
 
1557
                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 
1558
 
 
1559
        /* It's okay to grow etc. this buffer, and we should throw it
 
1560
         * away when we're done.
 
1561
         */
 
1562
        b->yy_is_our_buffer = 1;
 
1563
 
 
1564
        return b;
 
1565
}
 
1566
 
 
1567
#ifndef YY_EXIT_FAILURE
 
1568
#define YY_EXIT_FAILURE 2
 
1569
#endif
 
1570
 
 
1571
static void yy_fatal_error (yyconst char* msg )
 
1572
{
 
1573
        (void) fprintf( stderr, "%s\n", msg );
 
1574
        exit( YY_EXIT_FAILURE );
 
1575
}
 
1576
 
 
1577
/* Redefine yyless() so it works in section 3 code. */
 
1578
 
 
1579
#undef yyless
 
1580
#define yyless(n) \
 
1581
        do \
 
1582
                { \
 
1583
                /* Undo effects of setting up yytext. */ \
 
1584
        int yyless_macro_arg = (n); \
 
1585
        YY_LESS_LINENO(yyless_macro_arg);\
 
1586
                yytext[yyleng] = (yy_hold_char); \
 
1587
                (yy_c_buf_p) = yytext + yyless_macro_arg; \
 
1588
                (yy_hold_char) = *(yy_c_buf_p); \
 
1589
                *(yy_c_buf_p) = '\0'; \
 
1590
                yyleng = yyless_macro_arg; \
 
1591
                } \
 
1592
        while ( 0 )
 
1593
 
 
1594
/* Accessor  methods (get/set functions) to struct members. */
 
1595
 
 
1596
/** Get the current line number.
 
1597
 * 
 
1598
 */
 
1599
int yyget_lineno  (void)
 
1600
{
 
1601
        
 
1602
    return yylineno;
 
1603
}
 
1604
 
 
1605
/** Get the input stream.
 
1606
 * 
 
1607
 */
 
1608
FILE *yyget_in  (void)
 
1609
{
 
1610
        return yyin;
 
1611
}
 
1612
 
 
1613
/** Get the output stream.
 
1614
 * 
 
1615
 */
 
1616
FILE *yyget_out  (void)
 
1617
{
 
1618
        return yyout;
 
1619
}
 
1620
 
 
1621
/** Get the length of the current token.
 
1622
 * 
 
1623
 */
 
1624
yy_size_t yyget_leng  (void)
 
1625
{
 
1626
        return yyleng;
 
1627
}
 
1628
 
 
1629
/** Get the current token.
 
1630
 * 
 
1631
 */
 
1632
 
 
1633
char *yyget_text  (void)
 
1634
{
 
1635
        return yytext;
 
1636
}
 
1637
 
 
1638
/** Set the current line number.
 
1639
 * @param line_number
 
1640
 * 
 
1641
 */
 
1642
void yyset_lineno (int  line_number )
 
1643
{
 
1644
    
 
1645
    yylineno = line_number;
 
1646
}
 
1647
 
 
1648
/** Set the input stream. This does not discard the current
 
1649
 * input buffer.
 
1650
 * @param in_str A readable stream.
 
1651
 * 
 
1652
 * @see yy_switch_to_buffer
 
1653
 */
 
1654
void yyset_in (FILE *  in_str )
 
1655
{
 
1656
        yyin = in_str ;
 
1657
}
 
1658
 
 
1659
void yyset_out (FILE *  out_str )
 
1660
{
 
1661
        yyout = out_str ;
 
1662
}
 
1663
 
 
1664
int yyget_debug  (void)
 
1665
{
 
1666
        return yy_flex_debug;
 
1667
}
 
1668
 
 
1669
void yyset_debug (int  bdebug )
 
1670
{
 
1671
        yy_flex_debug = bdebug ;
 
1672
}
 
1673
 
 
1674
static int yy_init_globals (void)
 
1675
{
 
1676
        /* Initialization is the same as for the non-reentrant scanner.
 
1677
     * This function is called from yylex_destroy(), so don't allocate here.
 
1678
     */
 
1679
 
 
1680
    (yy_buffer_stack) = 0;
 
1681
    (yy_buffer_stack_top) = 0;
 
1682
    (yy_buffer_stack_max) = 0;
 
1683
    (yy_c_buf_p) = (char *) 0;
 
1684
    (yy_init) = 0;
 
1685
    (yy_start) = 0;
 
1686
 
 
1687
/* Defined in main.c */
 
1688
#ifdef YY_STDINIT
 
1689
    yyin = stdin;
 
1690
    yyout = stdout;
 
1691
#else
 
1692
    yyin = (FILE *) 0;
 
1693
    yyout = (FILE *) 0;
 
1694
#endif
 
1695
 
 
1696
    /* For future reference: Set errno on error, since we are called by
 
1697
     * yylex_init()
 
1698
     */
 
1699
    return 0;
 
1700
}
 
1701
 
 
1702
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
 
1703
int yylex_destroy  (void)
 
1704
{
 
1705
    
 
1706
    /* Pop the buffer stack, destroying each element. */
 
1707
        while(YY_CURRENT_BUFFER){
 
1708
                yy_delete_buffer(YY_CURRENT_BUFFER  );
 
1709
                YY_CURRENT_BUFFER_LVALUE = NULL;
 
1710
                yypop_buffer_state();
 
1711
        }
 
1712
 
 
1713
        /* Destroy the stack itself. */
 
1714
        yyfree((yy_buffer_stack) );
 
1715
        (yy_buffer_stack) = NULL;
 
1716
 
 
1717
    /* Reset the globals. This is important in a non-reentrant scanner so the next time
 
1718
     * yylex() is called, initialization will occur. */
 
1719
    yy_init_globals( );
 
1720
 
 
1721
    return 0;
 
1722
}
 
1723
 
 
1724
/*
 
1725
 * Internal utility routines.
 
1726
 */
 
1727
 
 
1728
#ifndef yytext_ptr
 
1729
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
 
1730
{
 
1731
        register int i;
 
1732
        for ( i = 0; i < n; ++i )
 
1733
                s1[i] = s2[i];
 
1734
}
 
1735
#endif
 
1736
 
 
1737
#ifdef YY_NEED_STRLEN
 
1738
static int yy_flex_strlen (yyconst char * s )
 
1739
{
 
1740
        register int n;
 
1741
        for ( n = 0; s[n]; ++n )
 
1742
                ;
 
1743
 
 
1744
        return n;
 
1745
}
 
1746
#endif
 
1747
 
 
1748
void *yyalloc (yy_size_t  size )
 
1749
{
 
1750
        return (void *) malloc( size );
 
1751
}
 
1752
 
 
1753
void *yyrealloc  (void * ptr, yy_size_t  size )
 
1754
{
 
1755
        /* The cast to (char *) in the following accommodates both
 
1756
         * implementations that use char* generic pointers, and those
 
1757
         * that use void* generic pointers.  It works with the latter
 
1758
         * because both ANSI C and C++ allow castless assignment from
 
1759
         * any pointer type to void*, and deal with argument conversions
 
1760
         * as though doing an assignment.
 
1761
         */
 
1762
        return (void *) realloc( (char *) ptr, size );
 
1763
}
 
1764
 
 
1765
void yyfree (void * ptr )
 
1766
{
 
1767
        free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 
1768
}
 
1769
 
 
1770
#define YYTABLES_NAME "yytables"
 
1771
 
 
1772
#line 68 "slc-lex.l"
 
1773
 
 
1774
 
 
1775
 
 
1776
void
 
1777
error_message (const char *format, ...)
 
1778
{
 
1779
     va_list args;
 
1780
 
 
1781
     va_start (args, format);
 
1782
     fprintf (stderr, "%s:%d: ", filename, lineno);
 
1783
     vfprintf (stderr, format, args);
 
1784
     va_end (args);
 
1785
     error_flag++;
 
1786
}
 
1787
 
 
1788
void
 
1789
yyerror (char *s)
 
1790
{
 
1791
    error_message("%s\n", s);
 
1792
}
 
1793
 
 
1794
static void
 
1795
handle_comment(void)
 
1796
{
 
1797
    int c;
 
1798
    int start_lineno = lineno;
 
1799
    int level = 1;
 
1800
    int seen_star = 0;
 
1801
    int seen_slash = 0;
 
1802
    while((c = input()) != EOF) {
 
1803
        if(c == '/') {
 
1804
            if(seen_star) {
 
1805
                if(--level == 0)
 
1806
                    return;
 
1807
                seen_star = 0;
 
1808
                continue;
 
1809
            }
 
1810
            seen_slash = 1;
 
1811
            continue;
 
1812
        } else if(c == '*') {
 
1813
            if(seen_slash) {
 
1814
                level++;
 
1815
                seen_star = seen_slash = 0;
 
1816
                continue;
 
1817
            }
 
1818
            seen_star = 1;
 
1819
            continue;
 
1820
        }
 
1821
        seen_star = seen_slash = 0;
 
1822
        if(c == '\n') {
 
1823
            lineno++;
 
1824
            continue;
 
1825
        }
 
1826
    }
 
1827
    if(c == EOF)
 
1828
        error_message("unterminated comment, possibly started on line %d\n", start_lineno);
 
1829
}
 
1830
 
 
1831
static char *
 
1832
handle_string(void)
 
1833
{
 
1834
    char x[1024];
 
1835
    int i = 0;
 
1836
    int c;
 
1837
    int quote = 0;
 
1838
    while((c = input()) != EOF){
 
1839
        if(quote) {
 
1840
            x[i++] = '\\';
 
1841
            x[i++] = c;
 
1842
            quote = 0;
 
1843
            continue;
 
1844
        }
 
1845
        if(c == '\n'){
 
1846
            error_message("unterminated string");
 
1847
            lineno++;
 
1848
            break;
 
1849
        }
 
1850
        if(c == '\\'){
 
1851
            quote++;
 
1852
            continue;
 
1853
        }
 
1854
        if(c == '\"')
 
1855
            break;
 
1856
        x[i++] = c;
 
1857
    }
 
1858
    x[i] = '\0';
 
1859
    return strdup(x);
 
1860
}
 
1861
 
 
1862
int
 
1863
yywrap ()
 
1864
{
 
1865
     return 1;
 
1866
}
 
1867