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