rclex.c revision 38889
1226584Sdim/* A lexical scanner generated by flex */
2226584Sdim
3226584Sdim/* Scanner skeleton version:
4226584Sdim * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.85 95/04/24 10:48:47 vern Exp $
5226584Sdim */
6226584Sdim
7226584Sdim#define FLEX_SCANNER
8226584Sdim#define YY_FLEX_MAJOR_VERSION 2
9226584Sdim#define YY_FLEX_MINOR_VERSION 5
10226584Sdim
11226584Sdim#include <stdio.h>
12226584Sdim
13226584Sdim
14226584Sdim/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
15226584Sdim#ifdef c_plusplus
16263508Sdim#ifndef __cplusplus
17263508Sdim#define __cplusplus
18234353Sdim#endif
19226584Sdim#endif
20226584Sdim
21226584Sdim
22226584Sdim#ifdef __cplusplus
23226584Sdim
24263508Sdim#include <stdlib.h>
25234353Sdim#include <unistd.h>
26263508Sdim
27234353Sdim/* Use prototypes in function declarations. */
28263508Sdim#define YY_USE_PROTOS
29263508Sdim
30263508Sdim/* The "const" storage-class-modifier is valid. */
31263508Sdim#define YY_USE_CONST
32263508Sdim
33263508Sdim#else	/* ! __cplusplus */
34263508Sdim
35263508Sdim#if __STDC__
36263508Sdim
37263508Sdim#define YY_USE_PROTOS
38263508Sdim#define YY_USE_CONST
39263508Sdim
40263508Sdim#endif	/* __STDC__ */
41263508Sdim#endif	/* ! __cplusplus */
42263508Sdim
43263508Sdim#ifdef __TURBOC__
44263508Sdim #pragma warn -rch
45263508Sdim #pragma warn -use
46263508Sdim#include <io.h>
47263508Sdim#include <stdlib.h>
48263508Sdim#define YY_USE_CONST
49263508Sdim#define YY_USE_PROTOS
50263508Sdim#endif
51263508Sdim
52263508Sdim#ifdef YY_USE_CONST
53263508Sdim#define yyconst const
54263508Sdim#else
55263508Sdim#define yyconst
56263508Sdim#endif
57263508Sdim
58263508Sdim
59263508Sdim#ifdef YY_USE_PROTOS
60263508Sdim#define YY_PROTO(proto) proto
61263508Sdim#else
62263508Sdim#define YY_PROTO(proto) ()
63263508Sdim#endif
64263508Sdim
65263508Sdim/* Returned upon end-of-file. */
66263508Sdim#define YY_NULL 0
67263508Sdim
68263508Sdim/* Promotes a possibly negative, possibly signed char to an unsigned
69263508Sdim * integer for use as an array index.  If the signed char is negative,
70263508Sdim * we want to instead treat it as an 8-bit unsigned char, hence the
71263508Sdim * double cast.
72263508Sdim */
73263508Sdim#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
74263508Sdim
75263508Sdim/* Enter a start condition.  This macro really ought to take a parameter,
76263508Sdim * but we do it the disgusting crufty way forced on us by the ()-less
77263508Sdim * definition of BEGIN.
78263508Sdim */
79263508Sdim#define BEGIN yy_start = 1 + 2 *
80263508Sdim
81263508Sdim/* Translate the current start state into a value that can be later handed
82263508Sdim * to BEGIN to return to the state.  The YYSTATE alias is for lex
83263508Sdim * compatibility.
84263508Sdim */
85263508Sdim#define YY_START ((yy_start - 1) / 2)
86263508Sdim#define YYSTATE YY_START
87263508Sdim
88263508Sdim/* Action number for EOF rule of a given start state. */
89263508Sdim#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
90263508Sdim
91263508Sdim/* Special action meaning "start processing a new file". */
92263508Sdim#define YY_NEW_FILE yyrestart( yyin )
93263508Sdim
94263508Sdim#define YY_END_OF_BUFFER_CHAR 0
95263508Sdim
96263508Sdim/* Size of default input buffer. */
97263508Sdim#define YY_BUF_SIZE 16384
98263508Sdim
99263508Sdimtypedef struct yy_buffer_state *YY_BUFFER_STATE;
100234353Sdim
101226584Sdimextern int yyleng;
102226584Sdimextern FILE *yyin, *yyout;
103263508Sdim
104263508Sdim#define EOB_ACT_CONTINUE_SCAN 0
105263508Sdim#define EOB_ACT_END_OF_FILE 1
106263508Sdim#define EOB_ACT_LAST_MATCH 2
107263508Sdim
108234353Sdim/* The funky do-while in the following #define is used to turn the definition
109263508Sdim * int a single C statement (which needs a semi-colon terminator).  This
110263508Sdim * avoids problems with code like:
111263508Sdim *
112263508Sdim * 	if ( condition_holds )
113263508Sdim *		yyless( 5 );
114263508Sdim *	else
115263508Sdim *		do_something_else();
116263508Sdim *
117263508Sdim * Prior to using the do-while the compiler would get upset at the
118226584Sdim * "else" because it interpreted the "if" statement as being all
119263508Sdim * done when it reached the ';' after the yyless() call.
120226584Sdim */
121226584Sdim
122226584Sdim/* Return all but the first 'n' matched characters back to the input stream. */
123226584Sdim
124226584Sdim#define yyless(n) \
125226584Sdim	do \
126226584Sdim		{ \
127226584Sdim		/* Undo effects of setting up yytext. */ \
128226584Sdim		*yy_cp = yy_hold_char; \
129226584Sdim		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
130226584Sdim		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
131226584Sdim		} \
132249423Sdim	while ( 0 )
133249423Sdim
134249423Sdim#define unput(c) yyunput( c, yytext_ptr )
135226584Sdim
136226584Sdim/* The following is because we cannot portably get our hands on size_t
137249423Sdim * (without autoconf's help, which isn't available because we want
138226584Sdim * flex-generated scanners to compile on their own).
139226584Sdim */
140226584Sdimtypedef unsigned int yy_size_t;
141226584Sdim
142226584Sdim
143226584Sdimstruct yy_buffer_state
144226584Sdim	{
145226584Sdim	FILE *yy_input_file;
146249423Sdim
147249423Sdim	char *yy_ch_buf;		/* input buffer */
148249423Sdim	char *yy_buf_pos;		/* current position in input buffer */
149249423Sdim
150249423Sdim	/* Size of input buffer in bytes, not including room for EOB
151249423Sdim	 * characters.
152249423Sdim	 */
153249423Sdim	yy_size_t yy_buf_size;
154226584Sdim
155234353Sdim	/* Number of characters read into yy_ch_buf, not including EOB
156249423Sdim	 * characters.
157249423Sdim	 */
158249423Sdim	int yy_n_chars;
159263508Sdim
160263508Sdim	/* Whether we "own" the buffer - i.e., we know we created it,
161234353Sdim	 * and can realloc() it to grow it, and should free() it to
162226584Sdim	 * delete it.
163226584Sdim	 */
164226584Sdim	int yy_is_our_buffer;
165226584Sdim
166226584Sdim	/* Whether this is an "interactive" input source; if so, and
167226584Sdim	 * if we're using stdio for input, then we want to use getc()
168226584Sdim	 * instead of fread(), to make sure we stop fetching input after
169226584Sdim	 * each newline.
170226584Sdim	 */
171263508Sdim	int yy_is_interactive;
172263508Sdim
173263508Sdim	/* Whether we're considered to be at the beginning of a line.
174263508Sdim	 * If so, '^' rules will be active on the next match, otherwise
175263508Sdim	 * not.
176263508Sdim	 */
177263508Sdim	int yy_at_bol;
178263508Sdim
179263508Sdim	/* Whether to try to fill the input buffer when we reach the
180263508Sdim	 * end of it.
181263508Sdim	 */
182263508Sdim	int yy_fill_buffer;
183263508Sdim
184263508Sdim	int yy_buffer_status;
185226584Sdim#define YY_BUFFER_NEW 0
186226584Sdim#define YY_BUFFER_NORMAL 1
187249423Sdim	/* When an EOF's been seen but there's still some text to process
188249423Sdim	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
189226584Sdim	 * shouldn't try reading from the input source any more.  We might
190249423Sdim	 * still have a bunch of tokens to match, though, because of
191249423Sdim	 * possible backing-up.
192226584Sdim	 *
193226584Sdim	 * When we actually see the EOF, we change the status to "new"
194226584Sdim	 * (via yyrestart()), so that the user can continue scanning by
195226584Sdim	 * just pointing yyin at a new input file.
196226584Sdim	 */
197263508Sdim#define YY_BUFFER_EOF_PENDING 2
198226584Sdim	};
199263508Sdim
200263508Sdimstatic YY_BUFFER_STATE yy_current_buffer = 0;
201263508Sdim
202226584Sdim/* We provide macros for accessing buffer states in case in the
203226584Sdim * future we want to put the buffer states in a more general
204226584Sdim * "scanner state".
205226584Sdim */
206234353Sdim#define YY_CURRENT_BUFFER yy_current_buffer
207234353Sdim
208226584Sdim
209226584Sdim/* yy_hold_char holds the character lost when yytext is formed. */
210263508Sdimstatic char yy_hold_char;
211263508Sdim
212249423Sdimstatic int yy_n_chars;		/* number of characters read into yy_ch_buf */
213263508Sdim
214249423Sdim
215263508Sdimint yyleng;
216263508Sdim
217249423Sdim/* Points to current character in buffer. */
218249423Sdimstatic char *yy_c_buf_p = (char *) 0;
219263508Sdimstatic int yy_init = 1;		/* whether we need to initialize */
220249423Sdimstatic int yy_start = 0;	/* start state number */
221249423Sdim
222249423Sdim/* Flag which is used to allow yywrap()'s to do buffer switches
223263508Sdim * instead of setting up a fresh yyin.  A bit of a hack ...
224263508Sdim */
225263508Sdimstatic int yy_did_buffer_switch_on_eof;
226249423Sdim
227249423Sdimvoid yyrestart YY_PROTO(( FILE *input_file ));
228249423Sdim
229249423Sdimvoid yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
230263508Sdimvoid yy_load_buffer_state YY_PROTO(( void ));
231263508SdimYY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
232263508Sdimvoid yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
233263508Sdimvoid yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
234263508Sdimvoid yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
235263508Sdim#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
236263508Sdim
237263508SdimYY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
238234353SdimYY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
239263508SdimYY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
240263508Sdim
241263508Sdimstatic void *yy_flex_alloc YY_PROTO(( yy_size_t ));
242263508Sdimstatic void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
243263508Sdimstatic void yy_flex_free YY_PROTO(( void * ));
244263508Sdim
245263508Sdim#define yy_new_buffer yy_create_buffer
246263508Sdim
247263508Sdim#define yy_set_interactive(is_interactive) \
248263508Sdim	{ \
249263508Sdim	if ( ! yy_current_buffer ) \
250263508Sdim		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
251263508Sdim	yy_current_buffer->yy_is_interactive = is_interactive; \
252263508Sdim	}
253263508Sdim
254263508Sdim#define yy_set_bol(at_bol) \
255263508Sdim	{ \
256263508Sdim	if ( ! yy_current_buffer ) \
257263508Sdim		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
258263508Sdim	yy_current_buffer->yy_at_bol = at_bol; \
259263508Sdim	}
260263508Sdim
261263508Sdim#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
262263508Sdim
263249423Sdimtypedef unsigned char YY_CHAR;
264249423SdimFILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
265249423Sdimtypedef int yy_state_type;
266249423Sdimextern char *yytext;
267263508Sdim#define yytext_ptr yytext
268263508Sdim
269263508Sdimstatic yy_state_type yy_get_previous_state YY_PROTO(( void ));
270263508Sdimstatic yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
271263508Sdimstatic int yy_get_next_buffer YY_PROTO(( void ));
272263508Sdimstatic void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
273263508Sdim
274263508Sdim/* Done after the current pattern has been matched and before the
275263508Sdim * corresponding action - sets up yytext.
276263508Sdim */
277263508Sdim#define YY_DO_BEFORE_ACTION \
278263508Sdim	yytext_ptr = yy_bp; \
279263508Sdim	yyleng = (int) (yy_cp - yy_bp); \
280263508Sdim	yy_hold_char = *yy_cp; \
281263508Sdim	*yy_cp = '\0'; \
282263508Sdim	yy_c_buf_p = yy_cp;
283263508Sdim
284263508Sdim#define YY_NUM_RULES 86
285263508Sdim#define YY_END_OF_BUFFER 87
286263508Sdimstatic yyconst short int yy_accept[470] =
287263508Sdim    {   0,
288263508Sdim        0,    0,   87,   85,   84,   83,   85,   78,   80,   82,
289263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
290263508Sdim       82,   82,   82,   82,   82,   82,   82,    2,    4,   84,
291263508Sdim        0,   81,   78,   80,   79,   82,   82,   82,   82,   82,
292263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
293263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
294263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
295263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
296263508Sdim       82,   82,   82,   81,    0,   82,   11,   82,   82,   82,
297263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
298263508Sdim
299263508Sdim       82,   82,   82,   82,   82,    3,   82,   82,   82,   82,
300263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
301263508Sdim       82,   82,   82,   82,   82,   82,   76,   82,   82,   82,
302263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
303263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
304263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
305263508Sdim       82,   82,   82,   82,   82,   82,   82,   41,   82,   82,
306263508Sdim       82,   53,   42,   82,   82,   82,   82,   82,   82,   82,
307263508Sdim       46,   82,   82,   82,   82,   82,   82,   71,   82,   82,
308263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
309226584Sdim
310226584Sdim       82,   82,   82,    7,   82,   82,   82,   38,    1,   82,
311226584Sdim       82,   82,   82,   82,   18,   82,   82,   25,   82,   82,
312263508Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   70,
313263508Sdim       82,   82,   39,   40,   82,   82,   82,   82,   82,   30,
314263508Sdim       82,   82,   82,   82,   82,   82,   50,   82,   82,   82,
315263508Sdim       82,   82,   34,   82,   82,    9,   82,   82,   19,   82,
316263508Sdim       68,   82,   82,   82,   82,   82,   82,   12,    0,   82,
317263508Sdim       82,   82,   82,   82,   82,   82,   13,   82,   14,   82,
318263508Sdim       82,   82,   82,   65,   82,   82,   82,   52,   82,   72,
319234353Sdim       82,   82,   82,   82,   82,   82,   47,   82,   82,   82,
320263508Sdim
321234353Sdim       82,   82,   82,   82,   82,   82,   58,   82,   82,   36,
322226584Sdim       82,   82,   82,   82,   82,   82,   82,   82,    0,   82,
323226584Sdim        0,   77,   17,   82,   82,   51,   82,   10,   82,   82,
324226584Sdim       82,   82,   16,   82,   82,   82,   82,   82,   82,   82,
325263508Sdim       29,   82,   82,   82,   82,   82,   82,   82,   73,   82,
326226584Sdim       31,   82,   82,   82,   82,   82,   82,   45,    6,   82,
327226584Sdim       82,   82,   82,   77,   82,   23,   24,   82,   15,   82,
328234353Sdim       27,   82,   82,   66,   82,   28,   54,   43,   82,   82,
329249423Sdim       82,   48,   82,   69,    8,   82,   82,   82,   82,   82,
330234353Sdim       82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
331234353Sdim
332226584Sdim       64,   82,   82,   82,   82,   56,   82,   82,   82,   82,
333234353Sdim       35,   49,   82,   82,   82,   82,   20,   82,   82,   82,
334249423Sdim       82,   82,   82,   82,   82,   74,   82,   82,   82,   32,
335249423Sdim       82,   82,   37,   82,   82,   82,   82,   82,   82,   75,
336249423Sdim       82,   67,   61,   82,   82,   82,   33,   59,   60,    5,
337249423Sdim       21,   82,   82,   82,   82,   55,   57,   82,   82,   82,
338249423Sdim       26,   63,   82,   82,   82,   62,   22,   44,    0
339249423Sdim    } ;
340249423Sdim
341249423Sdimstatic yyconst int yy_ec[256] =
342249423Sdim    {   0,
343249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
344249423Sdim        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
345249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
346249423Sdim        1,    2,    1,    5,    6,    1,    1,    1,    1,    1,
347249423Sdim        1,    1,    1,    7,    1,    1,    1,    8,    8,    8,
348234353Sdim        9,    8,    8,    8,    8,    8,    8,    1,    1,    1,
349249423Sdim        1,    1,    1,    1,   10,   11,   12,   13,   14,   15,
350234353Sdim       16,   17,   18,   19,   20,   21,   22,   23,   24,   25,
351249423Sdim       19,   26,   27,   28,   29,   30,   19,   31,   32,   19,
352249423Sdim        1,    1,    1,    1,    1,    1,   33,   33,   33,   33,
353234353Sdim
354249423Sdim       33,   33,   19,   19,   19,   19,   19,   19,   19,   19,
355249423Sdim       19,   19,   19,   19,   19,   19,   19,   19,   19,   33,
356249423Sdim       19,   19,   34,    1,   35,    1,    1,    1,    1,    1,
357249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
358249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
359249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
360249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
361249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
362249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
363249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
364249423Sdim
365249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
366249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
367249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
368249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
369249423Sdim        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
370249423Sdim        1,    1,    1,    1,    1
371249423Sdim    } ;
372249423Sdim
373263508Sdimstatic yyconst int yy_meta[36] =
374234353Sdim    {   0,
375234353Sdim        1,    2,    3,    2,    1,    4,    2,    5,    5,    5,
376234353Sdim        5,    5,    5,    5,    5,    1,    1,    1,    1,    1,
377234353Sdim        5,    1,    1,    1,    1,    1,    1,    1,    1,    1,
378234353Sdim        1,    1,    5,    1,    1
379234353Sdim    } ;
380234353Sdim
381234353Sdimstatic yyconst short int yy_base[476] =
382249423Sdim    {   0,
383234353Sdim        0,    0,  515,  516,   34,  516,  509,    0,  492,   25,
384234353Sdim       26,   45,   25,   28,   24,  486,  497,   49,    0,   40,
385234353Sdim       43,  486,   51,   66,   67,  482,   35,  516,  516,   81,
386234353Sdim      503,   84,    0,  486,  516,    0,  494,  477,  492,  475,
387234353Sdim       74,  474,  477,  475,   46,  489,   69,  484,  471,  481,
388263508Sdim       55,  477,  481,  466,   67,  469,   83,   83,  467,  477,
389263508Sdim      464,  478,  464,  459,  475,  470,   74,  453,   81,  457,
390263508Sdim       86,   76,  468,  467,  465,  452,  452,  458,   95,  461,
391249423Sdim      453,  447,  446,  106,  466,  456,    0,  451,  444,  449,
392249423Sdim      448,  443,  452,  435,  436,  449,  433,  448,  430,  426,
393249423Sdim
394249423Sdim      429,  430,  433,  441,  424,    0,  423,  436,  435,  420,
395249423Sdim      415,  417,  427,  419,  420,  424,  412,  428,  423,  410,
396249423Sdim      424,  405,  406,  407,  419,  409,    0,  402,  409,  416,
397249423Sdim      414,  410,  408,  415,  393,  399,  412,  406,  392,  401,
398249423Sdim      397,  391,  387,  388,  386,  392,  394,  103,  383,  387,
399249423Sdim      399,  388,  389,  396,  385,  377,  379,  376,  373,  376,
400249423Sdim      370,  374,  387,  368,  363,   98,  381,    0,  379,  367,
401249423Sdim      363,    0,    0,  362,  363,  360,  358,  375,  361,  356,
402249423Sdim      105,  373,  372,  351,  355,  355,  349,    0,  366,  352,
403249423Sdim      347,  346,  352,  346,  343,  356,  346,  354,  356,  352,
404249423Sdim
405249423Sdim      347,  344,  349,    0,  335,  344,  350,    0,    0,  334,
406249423Sdim      115,  334,  345,  119,    0,  345,  331,    0,  328,  326,
407234353Sdim      336,  325,  336,  328,  327,  320,  317,  313,  330,    0,
408234353Sdim      330,  331,    0,    0,  327,  322,  329,  314,  314,    0,
409234353Sdim      114,  305,  307,  318,  322,  318,    0,  321,  318,  107,
410234353Sdim      318,  318,    0,  306,  316,    0,  316,  308,    0,  294,
411263508Sdim        0,  298,  307,  294,  291,  304,  304,    0,  132,  137,
412263508Sdim      293,  287,  290,  300,  288,  290,    0,  293,  295,  295,
413263508Sdim      276,  292,  295,    0,  293,  278,  276,    0,  277,    0,
414249423Sdim      270,  283,  267,  285,  270,  281,    0,  280,  279,  271,
415249423Sdim
416249423Sdim      265,  277,  261,  257,  259,  257,    0,  274,  256,    0,
417249423Sdim      255,  254,  258,  248,  269,  268,  265,  258,  270,  143,
418249423Sdim      269,  149,    0,  259,  241,    0,  240,    0,  259,  238,
419249423Sdim      258,  239,    0,  250,  237,  250,  236,  231,  247,  246,
420249423Sdim        0,  249,  247,  247,  234,  227,  240,  225,    0,  222,
421249423Sdim        0,  223,  222,  239,  224,  237,  218,  227,    0,  216,
422249423Sdim      215,  222,  217,  235,  213,    0,    0,  209,    0,  226,
423249423Sdim        0,  209,  203,    0,  216,    0,    0,    0,  212,  206,
424249423Sdim      211,    0,  220,    0,    0,  215,  204,  199,  200,  199,
425249423Sdim      213,  199,  199,  197,  206,  208,  207,  199,  188,  194,
426234353Sdim
427234353Sdim      192,  188,  188,  190,  196,    0,  198,  182,  184,  182,
428234353Sdim        0,    0,  184,  181,  188,  176,    0,  177,  171,  172,
429249423Sdim      170,  183,  186,  181,  171,    0,  183,  171,  164,    0,
430249423Sdim      167,  175,    0,  164,  160,  155,  157,  156,  159,    0,
431249423Sdim      155,    0,    0,  160,  165,  156,    0,    0,    0,    0,
432249423Sdim        0,  141,  150,  141,  139,    0,    0,  128,  122,  126,
433249423Sdim        0,    0,  109,   91,   79,    0,    0,    0,  516,  156,
434249423Sdim      161,   65,  166,  171,  176
435249423Sdim    } ;
436249423Sdim
437249423Sdimstatic yyconst short int yy_def[476] =
438249423Sdim    {   0,
439249423Sdim      469,    1,  469,  469,  469,  469,  470,  471,  472,  473,
440249423Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
441249423Sdim      473,  473,  473,  473,  473,  473,  473,  469,  469,  469,
442249423Sdim      470,  469,  471,  472,  469,  473,  473,  473,  473,  473,
443249423Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
444249423Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
445249423Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
446249423Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
447263508Sdim      473,  473,  473,  469,  470,  473,  473,  473,  473,  473,
448263508Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
449263508Sdim
450263508Sdim      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
451      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
452      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
453      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
454      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
455      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
456      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
457      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
458      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
459      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
460
461      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
462      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
463      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
464      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
465      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
466      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
467      473,  473,  473,  473,  473,  473,  473,  473,  469,  474,
468      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
469      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
470      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
471
472      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
473      473,  473,  473,  473,  473,  473,  473,  473,  475,  474,
474      475,  474,  473,  473,  473,  473,  473,  473,  473,  473,
475      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
476      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
477      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
478      473,  473,  473,  475,  473,  473,  473,  473,  473,  473,
479      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
480      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
481      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
482
483      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
484      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
485      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
486      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
487      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
488      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
489      473,  473,  473,  473,  473,  473,  473,  473,    0,  469,
490      469,  469,  469,  469,  469
491    } ;
492
493static yyconst short int yy_nxt[552] =
494    {   0,
495        4,    5,    6,    5,    7,    8,    4,    9,    9,   10,
496       11,   12,   13,   14,   15,   16,   17,   18,   19,   19,
497       20,   21,   22,   19,   23,   24,   25,   19,   26,   27,
498       19,   19,   19,   28,   29,   30,   37,   30,   50,   41,
499       52,   55,   51,   42,   81,   38,   43,   56,   82,   63,
500       53,   39,   83,   40,   44,   95,   67,   64,   54,   96,
501       59,   45,   60,   65,  103,   46,   68,   66,   47,   34,
502       61,   62,   48,   49,   70,   73,   71,   74,   76,   72,
503       77,  104,   30,   78,   30,   84,   90,  108,   85,   91,
504       98,   99,  111,   75,   79,  113,  123,  109,  126,  129,
505
506      124,  131,  132,  114,  139,  468,  112,   84,  127,  130,
507       85,  205,  225,  467,  206,  241,  269,  269,  242,  270,
508      140,  226,  243,  295,  227,  228,  141,  229,  207,  273,
509      304,  466,  274,  269,  269,  305,  319,  465,  321,  296,
510      321,  322,   36,  321,  321,  464,  321,  322,   36,  321,
511      321,  463,  321,  322,   36,  321,   31,   31,  462,   31,
512       31,   33,   33,  461,   33,   33,   36,  460,  459,   36,
513       36,  320,  320,  458,  320,  320,  321,  321,  457,  456,
514      321,  455,  454,  453,  452,  451,  450,  449,  448,  447,
515      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
516
517      436,  435,  434,  433,  432,  431,  430,  429,  428,  427,
518      426,  425,  424,  423,  422,  421,  420,  419,  418,  417,
519      416,  415,  414,  413,  412,  411,  410,  409,  408,  407,
520      406,  405,  404,  403,  402,  401,  400,  399,  398,  364,
521      397,  396,  395,  394,  393,  392,  391,  390,  389,  388,
522      387,  386,  385,  384,  383,  382,  381,  380,  379,  378,
523      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
524      367,  366,  365,  364,  364,  363,  362,  361,  360,  359,
525      358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
526      348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
527
528      338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
529      328,  327,  326,  325,  324,  323,  318,  317,  316,  315,
530      314,  313,  312,  311,  310,  309,  308,  307,  306,  303,
531      302,  301,  300,  299,  298,  297,  294,  293,  292,  291,
532      290,  289,  288,  287,  286,  285,  284,  283,  282,  281,
533      280,  279,  278,  277,  276,  275,  272,  271,  268,  267,
534      266,  265,  264,  263,  262,  261,  260,  259,  258,  257,
535      256,  255,  254,  253,  252,  251,  250,  249,  248,  247,
536      246,  245,  244,  240,  239,  238,  237,  236,  235,  234,
537      233,  232,  231,  230,  224,  223,  222,  221,  220,  219,
538
539      218,  217,  216,  215,  214,  213,  212,  211,  210,  209,
540      208,  204,  203,  202,  201,  200,  199,  198,  197,  196,
541      195,  194,  193,  192,  191,  190,  189,  188,  187,  186,
542      185,  184,  183,  182,  181,  180,  179,  178,  177,  176,
543      175,  174,  173,  172,  171,  170,  169,  168,  167,  166,
544      165,  164,  163,  162,  161,  160,  159,  158,  157,  156,
545      155,  154,  153,  152,  151,  150,  149,  148,  147,  146,
546       32,  145,  144,  143,  142,  138,  137,  136,  135,  134,
547      133,  128,  125,  122,  121,  120,  119,  118,  117,  116,
548      115,  110,  107,  106,  105,  102,  101,  100,   97,   94,
549
550       93,   92,   89,   88,   87,   86,   35,   32,   80,   69,
551       58,   57,   35,   32,  469,    3,  469,  469,  469,  469,
552      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
553      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
554      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
555      469
556    } ;
557
558static yyconst short int yy_chk[552] =
559    {   0,
560        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
561        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
562        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
563        1,    1,    1,    1,    1,    5,   10,    5,   13,   11,
564       14,   15,   13,   11,   27,   10,   11,   15,   27,   20,
565       14,   10,   27,   10,   12,   45,   21,   20,   14,   45,
566       18,   12,   18,   20,   51,   12,   21,   20,   12,  472,
567       18,   18,   12,   12,   23,   24,   23,   24,   25,   23,
568       25,   51,   30,   25,   30,   32,   41,   55,   32,   41,
569       47,   47,   57,   24,   25,   58,   67,   55,   69,   71,
570
571       67,   72,   72,   58,   79,  465,   57,   84,   69,   71,
572       84,  148,  166,  464,  148,  181,  211,  211,  181,  211,
573       79,  166,  181,  241,  166,  166,   79,  166,  148,  214,
574      250,  463,  214,  269,  269,  250,  269,  460,  270,  241,
575      270,  270,  270,  270,  320,  459,  320,  320,  320,  320,
576      322,  458,  322,  322,  322,  322,  470,  470,  455,  470,
577      470,  471,  471,  454,  471,  471,  473,  453,  452,  473,
578      473,  474,  474,  446,  474,  474,  475,  475,  445,  444,
579      475,  441,  439,  438,  437,  436,  435,  434,  432,  431,
580      429,  428,  427,  425,  424,  423,  422,  421,  420,  419,
581
582      418,  416,  415,  414,  413,  410,  409,  408,  407,  405,
583      404,  403,  402,  401,  400,  399,  398,  397,  396,  395,
584      394,  393,  392,  391,  390,  389,  388,  387,  386,  383,
585      381,  380,  379,  375,  373,  372,  370,  368,  365,  364,
586      363,  362,  361,  360,  358,  357,  356,  355,  354,  353,
587      352,  350,  348,  347,  346,  345,  344,  343,  342,  340,
588      339,  338,  337,  336,  335,  334,  332,  331,  330,  329,
589      327,  325,  324,  321,  319,  318,  317,  316,  315,  314,
590      313,  312,  311,  309,  308,  306,  305,  304,  303,  302,
591      301,  300,  299,  298,  296,  295,  294,  293,  292,  291,
592
593      289,  287,  286,  285,  283,  282,  281,  280,  279,  278,
594      276,  275,  274,  273,  272,  271,  267,  266,  265,  264,
595      263,  262,  260,  258,  257,  255,  254,  252,  251,  249,
596      248,  246,  245,  244,  243,  242,  239,  238,  237,  236,
597      235,  232,  231,  229,  228,  227,  226,  225,  224,  223,
598      222,  221,  220,  219,  217,  216,  213,  212,  210,  207,
599      206,  205,  203,  202,  201,  200,  199,  198,  197,  196,
600      195,  194,  193,  192,  191,  190,  189,  187,  186,  185,
601      184,  183,  182,  180,  179,  178,  177,  176,  175,  174,
602      171,  170,  169,  167,  165,  164,  163,  162,  161,  160,
603
604      159,  158,  157,  156,  155,  154,  153,  152,  151,  150,
605      149,  147,  146,  145,  144,  143,  142,  141,  140,  139,
606      138,  137,  136,  135,  134,  133,  132,  131,  130,  129,
607      128,  126,  125,  124,  123,  122,  121,  120,  119,  118,
608      117,  116,  115,  114,  113,  112,  111,  110,  109,  108,
609      107,  105,  104,  103,  102,  101,  100,   99,   98,   97,
610       96,   95,   94,   93,   92,   91,   90,   89,   88,   86,
611       85,   83,   82,   81,   80,   78,   77,   76,   75,   74,
612       73,   70,   68,   66,   65,   64,   63,   62,   61,   60,
613       59,   56,   54,   53,   52,   50,   49,   48,   46,   44,
614
615       43,   42,   40,   39,   38,   37,   34,   31,   26,   22,
616       17,   16,    9,    7,    3,  469,  469,  469,  469,  469,
617      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
618      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
619      469,  469,  469,  469,  469,  469,  469,  469,  469,  469,
620      469
621    } ;
622
623static yy_state_type yy_last_accepting_state;
624static char *yy_last_accepting_cpos;
625
626/* The intent behind this definition is that it'll catch
627 * any uses of REJECT which flex missed.
628 */
629#define REJECT reject_used_but_not_detected
630#define yymore() yymore_used_but_not_detected
631#define YY_MORE_ADJ 0
632char *yytext;
633#line 1 "/5g/ian/binutils/release/copy/binutils/rclex.l"
634#define INITIAL 0
635#line 2 "/5g/ian/binutils/release/copy/binutils/rclex.l"
636/* Copyright 1997, 1998 Free Software Foundation, Inc.
637   Written by Ian Lance Taylor, Cygnus Support.
638
639   This file is part of GNU Binutils.
640
641   This program is free software; you can redistribute it and/or modify
642   it under the terms of the GNU General Public License as published by
643   the Free Software Foundation; either version 2 of the License, or
644   (at your option) any later version.
645
646   This program is distributed in the hope that it will be useful,
647   but WITHOUT ANY WARRANTY; without even the implied warranty of
648   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
649   GNU General Public License for more details.
650
651   You should have received a copy of the GNU General Public License
652   along with this program; if not, write to the Free Software
653   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
654   02111-1307, USA.  */
655
656/* This is a lex input file which generates a lexer used by the
657   Windows rc file parser.  It basically just recognized a bunch of
658   keywords.  */
659
660#include "bfd.h"
661#include "bucomm.h"
662#include "libiberty.h"
663#include "windres.h"
664#include "rcparse.h"
665
666#include <ctype.h>
667#include <assert.h>
668
669/* Whether we are in rcdata mode, in which we returns the lengths of
670   strings.  */
671
672static int rcdata_mode;
673
674/* List of allocated strings.  */
675
676struct alloc_string
677{
678  struct alloc_string *next;
679  char *s;
680};
681
682static struct alloc_string *strings;
683
684/* Local functions.  */
685
686static void cpp_line PARAMS ((const char *));
687static char *handle_quotes PARAMS ((const char *, unsigned long *));
688static char *get_string PARAMS ((int));
689
690#line 691 "lex.yy.c"
691
692/* Macros after this point can all be overridden by user definitions in
693 * section 1.
694 */
695
696#ifndef YY_SKIP_YYWRAP
697#ifdef __cplusplus
698extern "C" int yywrap YY_PROTO(( void ));
699#else
700extern int yywrap YY_PROTO(( void ));
701#endif
702#endif
703
704#ifndef YY_NO_UNPUT
705static void yyunput YY_PROTO(( int c, char *buf_ptr ));
706#endif
707
708#ifndef yytext_ptr
709static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
710#endif
711
712#ifndef YY_NO_INPUT
713#ifdef __cplusplus
714static int yyinput YY_PROTO(( void ));
715#else
716static int input YY_PROTO(( void ));
717#endif
718#endif
719
720#if YY_STACK_USED
721static int yy_start_stack_ptr = 0;
722static int yy_start_stack_depth = 0;
723static int *yy_start_stack = 0;
724#ifndef YY_NO_PUSH_STATE
725static void yy_push_state YY_PROTO(( int new_state ));
726#endif
727#ifndef YY_NO_POP_STATE
728static void yy_pop_state YY_PROTO(( void ));
729#endif
730#ifndef YY_NO_TOP_STATE
731static int yy_top_state YY_PROTO(( void ));
732#endif
733
734#else
735#define YY_NO_PUSH_STATE 1
736#define YY_NO_POP_STATE 1
737#define YY_NO_TOP_STATE 1
738#endif
739
740#ifdef YY_MALLOC_DECL
741YY_MALLOC_DECL
742#else
743#if __STDC__
744#ifndef __cplusplus
745#include <stdlib.h>
746#endif
747#else
748/* Just try to get by without declaring the routines.  This will fail
749 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
750 * or sizeof(void*) != sizeof(int).
751 */
752#endif
753#endif
754
755/* Amount of stuff to slurp up with each read. */
756#ifndef YY_READ_BUF_SIZE
757#define YY_READ_BUF_SIZE 8192
758#endif
759
760/* Copy whatever the last rule matched to the standard output. */
761
762#ifndef ECHO
763/* This used to be an fputs(), but since the string might contain NUL's,
764 * we now use fwrite().
765 */
766#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
767#endif
768
769/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
770 * is returned in "result".
771 */
772#ifndef YY_INPUT
773#define YY_INPUT(buf,result,max_size) \
774	if ( yy_current_buffer->yy_is_interactive ) \
775		{ \
776		int c = '*', n; \
777		for ( n = 0; n < max_size && \
778			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
779			buf[n] = (char) c; \
780		if ( c == '\n' ) \
781			buf[n++] = (char) c; \
782		if ( c == EOF && ferror( yyin ) ) \
783			YY_FATAL_ERROR( "input in flex scanner failed" ); \
784		result = n; \
785		} \
786	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
787		  && ferror( yyin ) ) \
788		YY_FATAL_ERROR( "input in flex scanner failed" );
789#endif
790
791/* No semi-colon after return; correct usage is to write "yyterminate();" -
792 * we don't want an extra ';' after the "return" because that will cause
793 * some compilers to complain about unreachable statements.
794 */
795#ifndef yyterminate
796#define yyterminate() return YY_NULL
797#endif
798
799/* Number of entries by which start-condition stack grows. */
800#ifndef YY_START_STACK_INCR
801#define YY_START_STACK_INCR 25
802#endif
803
804/* Report a fatal error. */
805#ifndef YY_FATAL_ERROR
806#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
807#endif
808
809/* Default declaration of generated scanner - a define so the user can
810 * easily add parameters.
811 */
812#ifndef YY_DECL
813#define YY_DECL int yylex YY_PROTO(( void ))
814#endif
815
816/* Code executed at the beginning of each rule, after yytext and yyleng
817 * have been set up.
818 */
819#ifndef YY_USER_ACTION
820#define YY_USER_ACTION
821#endif
822
823/* Code executed at the end of each rule. */
824#ifndef YY_BREAK
825#define YY_BREAK break;
826#endif
827
828#define YY_RULE_SETUP \
829	YY_USER_ACTION
830
831YY_DECL
832	{
833	register yy_state_type yy_current_state;
834	register char *yy_cp, *yy_bp;
835	register int yy_act;
836
837#line 58 "/5g/ian/binutils/release/copy/binutils/rclex.l"
838
839
840#line 841 "lex.yy.c"
841
842	if ( yy_init )
843		{
844		yy_init = 0;
845
846#ifdef YY_USER_INIT
847		YY_USER_INIT;
848#endif
849
850		if ( ! yy_start )
851			yy_start = 1;	/* first start state */
852
853		if ( ! yyin )
854			yyin = stdin;
855
856		if ( ! yyout )
857			yyout = stdout;
858
859		if ( ! yy_current_buffer )
860			yy_current_buffer =
861				yy_create_buffer( yyin, YY_BUF_SIZE );
862
863		yy_load_buffer_state();
864		}
865
866	while ( 1 )		/* loops until end-of-file is reached */
867		{
868		yy_cp = yy_c_buf_p;
869
870		/* Support of yytext. */
871		*yy_cp = yy_hold_char;
872
873		/* yy_bp points to the position in yy_ch_buf of the start of
874		 * the current run.
875		 */
876		yy_bp = yy_cp;
877
878		yy_current_state = yy_start;
879yy_match:
880		do
881			{
882			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
883			if ( yy_accept[yy_current_state] )
884				{
885				yy_last_accepting_state = yy_current_state;
886				yy_last_accepting_cpos = yy_cp;
887				}
888			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
889				{
890				yy_current_state = (int) yy_def[yy_current_state];
891				if ( yy_current_state >= 470 )
892					yy_c = yy_meta[(unsigned int) yy_c];
893				}
894			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
895			++yy_cp;
896			}
897		while ( yy_base[yy_current_state] != 516 );
898
899yy_find_action:
900		yy_act = yy_accept[yy_current_state];
901		if ( yy_act == 0 )
902			{ /* have to back up */
903			yy_cp = yy_last_accepting_cpos;
904			yy_current_state = yy_last_accepting_state;
905			yy_act = yy_accept[yy_current_state];
906			}
907
908		YY_DO_BEFORE_ACTION;
909
910
911do_action:	/* This label is used only to access EOF actions. */
912
913
914		switch ( yy_act )
915	{ /* beginning of action switch */
916			case 0: /* must back up */
917			/* undo the effects of YY_DO_BEFORE_ACTION */
918			*yy_cp = yy_hold_char;
919			yy_cp = yy_last_accepting_cpos;
920			yy_current_state = yy_last_accepting_state;
921			goto yy_find_action;
922
923case 1:
924YY_RULE_SETUP
925#line 60 "/5g/ian/binutils/release/copy/binutils/rclex.l"
926{ return BEG; }
927	YY_BREAK
928case 2:
929YY_RULE_SETUP
930#line 61 "/5g/ian/binutils/release/copy/binutils/rclex.l"
931{ return BEG; }
932	YY_BREAK
933case 3:
934YY_RULE_SETUP
935#line 62 "/5g/ian/binutils/release/copy/binutils/rclex.l"
936{ return END; }
937	YY_BREAK
938case 4:
939YY_RULE_SETUP
940#line 63 "/5g/ian/binutils/release/copy/binutils/rclex.l"
941{ return END; }
942	YY_BREAK
943case 5:
944YY_RULE_SETUP
945#line 64 "/5g/ian/binutils/release/copy/binutils/rclex.l"
946{ return ACCELERATORS; }
947	YY_BREAK
948case 6:
949YY_RULE_SETUP
950#line 65 "/5g/ian/binutils/release/copy/binutils/rclex.l"
951{ return VIRTKEY; }
952	YY_BREAK
953case 7:
954YY_RULE_SETUP
955#line 66 "/5g/ian/binutils/release/copy/binutils/rclex.l"
956{ return ASCII; }
957	YY_BREAK
958case 8:
959YY_RULE_SETUP
960#line 67 "/5g/ian/binutils/release/copy/binutils/rclex.l"
961{ return NOINVERT; }
962	YY_BREAK
963case 9:
964YY_RULE_SETUP
965#line 68 "/5g/ian/binutils/release/copy/binutils/rclex.l"
966{ return SHIFT; }
967	YY_BREAK
968case 10:
969YY_RULE_SETUP
970#line 69 "/5g/ian/binutils/release/copy/binutils/rclex.l"
971{ return CONTROL; }
972	YY_BREAK
973case 11:
974YY_RULE_SETUP
975#line 70 "/5g/ian/binutils/release/copy/binutils/rclex.l"
976{ return ALT; }
977	YY_BREAK
978case 12:
979YY_RULE_SETUP
980#line 71 "/5g/ian/binutils/release/copy/binutils/rclex.l"
981{ return BITMAP; }
982	YY_BREAK
983case 13:
984YY_RULE_SETUP
985#line 72 "/5g/ian/binutils/release/copy/binutils/rclex.l"
986{ return CURSOR; }
987	YY_BREAK
988case 14:
989YY_RULE_SETUP
990#line 73 "/5g/ian/binutils/release/copy/binutils/rclex.l"
991{ return DIALOG; }
992	YY_BREAK
993case 15:
994YY_RULE_SETUP
995#line 74 "/5g/ian/binutils/release/copy/binutils/rclex.l"
996{ return DIALOGEX; }
997	YY_BREAK
998case 16:
999YY_RULE_SETUP
1000#line 75 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1001{ return EXSTYLE; }
1002	YY_BREAK
1003case 17:
1004YY_RULE_SETUP
1005#line 76 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1006{ return CAPTION; }
1007	YY_BREAK
1008case 18:
1009YY_RULE_SETUP
1010#line 77 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1011{ return CLASS; }
1012	YY_BREAK
1013case 19:
1014YY_RULE_SETUP
1015#line 78 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1016{ return STYLE; }
1017	YY_BREAK
1018case 20:
1019YY_RULE_SETUP
1020#line 79 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1021{ return AUTO3STATE; }
1022	YY_BREAK
1023case 21:
1024YY_RULE_SETUP
1025#line 80 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1026{ return AUTOCHECKBOX; }
1027	YY_BREAK
1028case 22:
1029YY_RULE_SETUP
1030#line 81 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1031{ return AUTORADIOBUTTON; }
1032	YY_BREAK
1033case 23:
1034YY_RULE_SETUP
1035#line 82 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1036{ return CHECKBOX; }
1037	YY_BREAK
1038case 24:
1039YY_RULE_SETUP
1040#line 83 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1041{ return COMBOBOX; }
1042	YY_BREAK
1043case 25:
1044YY_RULE_SETUP
1045#line 84 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1046{ return CTEXT; }
1047	YY_BREAK
1048case 26:
1049YY_RULE_SETUP
1050#line 85 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1051{ return DEFPUSHBUTTON; }
1052	YY_BREAK
1053case 27:
1054YY_RULE_SETUP
1055#line 86 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1056{ return EDITTEXT; }
1057	YY_BREAK
1058case 28:
1059YY_RULE_SETUP
1060#line 87 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1061{ return GROUPBOX; }
1062	YY_BREAK
1063case 29:
1064YY_RULE_SETUP
1065#line 88 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1066{ return LISTBOX; }
1067	YY_BREAK
1068case 30:
1069YY_RULE_SETUP
1070#line 89 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1071{ return LTEXT; }
1072	YY_BREAK
1073case 31:
1074YY_RULE_SETUP
1075#line 90 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1076{ return PUSHBOX; }
1077	YY_BREAK
1078case 32:
1079YY_RULE_SETUP
1080#line 91 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1081{ return PUSHBUTTON; }
1082	YY_BREAK
1083case 33:
1084YY_RULE_SETUP
1085#line 92 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1086{ return RADIOBUTTON; }
1087	YY_BREAK
1088case 34:
1089YY_RULE_SETUP
1090#line 93 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1091{ return RTEXT; }
1092	YY_BREAK
1093case 35:
1094YY_RULE_SETUP
1095#line 94 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1096{ return SCROLLBAR; }
1097	YY_BREAK
1098case 36:
1099YY_RULE_SETUP
1100#line 95 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1101{ return STATE3; }
1102	YY_BREAK
1103case 37:
1104YY_RULE_SETUP
1105#line 96 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1106{ return USERBUTTON; }
1107	YY_BREAK
1108case 38:
1109YY_RULE_SETUP
1110#line 97 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1111{ return BEDIT; }
1112	YY_BREAK
1113case 39:
1114YY_RULE_SETUP
1115#line 98 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1116{ return HEDIT; }
1117	YY_BREAK
1118case 40:
1119YY_RULE_SETUP
1120#line 99 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1121{ return IEDIT; }
1122	YY_BREAK
1123case 41:
1124YY_RULE_SETUP
1125#line 100 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1126{ return FONT; }
1127	YY_BREAK
1128case 42:
1129YY_RULE_SETUP
1130#line 101 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1131{ return ICON; }
1132	YY_BREAK
1133case 43:
1134YY_RULE_SETUP
1135#line 102 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1136{ return LANGUAGE; }
1137	YY_BREAK
1138case 44:
1139YY_RULE_SETUP
1140#line 103 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1141{ return CHARACTERISTICS; }
1142	YY_BREAK
1143case 45:
1144YY_RULE_SETUP
1145#line 104 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1146{ return VERSIONK; }
1147	YY_BREAK
1148case 46:
1149YY_RULE_SETUP
1150#line 105 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1151{ return MENU; }
1152	YY_BREAK
1153case 47:
1154YY_RULE_SETUP
1155#line 106 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1156{ return MENUEX; }
1157	YY_BREAK
1158case 48:
1159YY_RULE_SETUP
1160#line 107 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1161{ return MENUITEM; }
1162	YY_BREAK
1163case 49:
1164YY_RULE_SETUP
1165#line 108 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1166{ return SEPARATOR; }
1167	YY_BREAK
1168case 50:
1169YY_RULE_SETUP
1170#line 109 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1171{ return POPUP; }
1172	YY_BREAK
1173case 51:
1174YY_RULE_SETUP
1175#line 110 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1176{ return CHECKED; }
1177	YY_BREAK
1178case 52:
1179YY_RULE_SETUP
1180#line 111 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1181{ return GRAYED; }
1182	YY_BREAK
1183case 53:
1184YY_RULE_SETUP
1185#line 112 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1186{ return HELP; }
1187	YY_BREAK
1188case 54:
1189YY_RULE_SETUP
1190#line 113 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1191{ return INACTIVE; }
1192	YY_BREAK
1193case 55:
1194YY_RULE_SETUP
1195#line 114 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1196{ return MENUBARBREAK; }
1197	YY_BREAK
1198case 56:
1199YY_RULE_SETUP
1200#line 115 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1201{ return MENUBREAK; }
1202	YY_BREAK
1203case 57:
1204YY_RULE_SETUP
1205#line 116 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1206{ return MESSAGETABLE; }
1207	YY_BREAK
1208case 58:
1209YY_RULE_SETUP
1210#line 117 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1211{ return RCDATA; }
1212	YY_BREAK
1213case 59:
1214YY_RULE_SETUP
1215#line 118 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1216{ return STRINGTABLE; }
1217	YY_BREAK
1218case 60:
1219YY_RULE_SETUP
1220#line 119 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1221{ return VERSIONINFO; }
1222	YY_BREAK
1223case 61:
1224YY_RULE_SETUP
1225#line 120 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1226{ return FILEVERSION; }
1227	YY_BREAK
1228case 62:
1229YY_RULE_SETUP
1230#line 121 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1231{ return PRODUCTVERSION; }
1232	YY_BREAK
1233case 63:
1234YY_RULE_SETUP
1235#line 122 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1236{ return FILEFLAGSMASK; }
1237	YY_BREAK
1238case 64:
1239YY_RULE_SETUP
1240#line 123 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1241{ return FILEFLAGS; }
1242	YY_BREAK
1243case 65:
1244YY_RULE_SETUP
1245#line 124 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1246{ return FILEOS; }
1247	YY_BREAK
1248case 66:
1249YY_RULE_SETUP
1250#line 125 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1251{ return FILETYPE; }
1252	YY_BREAK
1253case 67:
1254YY_RULE_SETUP
1255#line 126 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1256{ return FILESUBTYPE; }
1257	YY_BREAK
1258case 68:
1259YY_RULE_SETUP
1260#line 127 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1261{ return VALUE; }
1262	YY_BREAK
1263case 69:
1264YY_RULE_SETUP
1265#line 128 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1266{ return MOVEABLE; }
1267	YY_BREAK
1268case 70:
1269YY_RULE_SETUP
1270#line 129 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1271{ return FIXED; }
1272	YY_BREAK
1273case 71:
1274YY_RULE_SETUP
1275#line 130 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1276{ return PURE; }
1277	YY_BREAK
1278case 72:
1279YY_RULE_SETUP
1280#line 131 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1281{ return IMPURE; }
1282	YY_BREAK
1283case 73:
1284YY_RULE_SETUP
1285#line 132 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1286{ return PRELOAD; }
1287	YY_BREAK
1288case 74:
1289YY_RULE_SETUP
1290#line 133 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1291{ return LOADONCALL; }
1292	YY_BREAK
1293case 75:
1294YY_RULE_SETUP
1295#line 134 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1296{ return DISCARDABLE; }
1297	YY_BREAK
1298case 76:
1299YY_RULE_SETUP
1300#line 135 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1301{ return NOT; }
1302	YY_BREAK
1303case 77:
1304YY_RULE_SETUP
1305#line 137 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1306{
1307			  char *s, *send;
1308
1309			  /* This is a hack to let us parse version
1310                             information easily.  */
1311
1312			  s = strchr (yytext, '"');
1313			  ++s;
1314			  send = strchr (s, '"');
1315			  if (strncmp (s, "StringFileInfo",
1316				       sizeof "StringFileInfo" - 1) == 0
1317			      && s + sizeof "StringFileInfo" - 1 == send)
1318			    return BLOCKSTRINGFILEINFO;
1319			  else if (strncmp (s, "VarFileInfo",
1320					    sizeof "VarFileInfo" - 1) == 0
1321				   && s + sizeof "VarFileInfo" - 1 == send)
1322			    return BLOCKVARFILEINFO;
1323			  else
1324			    {
1325			      char *r;
1326
1327			      r = get_string (send - s + 1);
1328			      strncpy (r, s, send - s);
1329			      r[send - s] = '\0';
1330			      yylval.s = r;
1331			      return BLOCK;
1332			    }
1333			}
1334	YY_BREAK
1335case 78:
1336YY_RULE_SETUP
1337#line 166 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1338{
1339			  cpp_line (yytext);
1340			}
1341	YY_BREAK
1342case 79:
1343YY_RULE_SETUP
1344#line 170 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1345{
1346			  yylval.i.val = strtoul (yytext, 0, 0);
1347			  yylval.i.dword = 1;
1348			  return NUMBER;
1349			}
1350	YY_BREAK
1351case 80:
1352YY_RULE_SETUP
1353#line 176 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1354{
1355			  yylval.i.val = strtoul (yytext, 0, 0);
1356			  yylval.i.dword = 0;
1357			  return NUMBER;
1358			}
1359	YY_BREAK
1360case 81:
1361YY_RULE_SETUP
1362#line 182 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1363{
1364			  char *s;
1365			  unsigned long length;
1366
1367			  s = handle_quotes (yytext, &length);
1368			  if (! rcdata_mode)
1369			    {
1370			      yylval.s = s;
1371			      return QUOTEDSTRING;
1372			    }
1373			  else
1374			    {
1375			      yylval.ss.length = length;
1376			      yylval.ss.s = s;
1377			      return SIZEDSTRING;
1378			    }
1379			}
1380	YY_BREAK
1381case 82:
1382YY_RULE_SETUP
1383#line 200 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1384{
1385			  char *s;
1386
1387			  /* I rejected comma in a string in order to
1388			     handle VIRTKEY, CONTROL in an accelerator
1389			     resource.  This means that an unquoted
1390			     file name can not contain a comma.  I
1391			     don't know what rc permits.  */
1392
1393			  s = get_string (strlen (yytext) + 1);
1394			  strcpy (s, yytext);
1395			  yylval.s = s;
1396			  return STRING;
1397			}
1398	YY_BREAK
1399case 83:
1400YY_RULE_SETUP
1401#line 215 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1402{ ++rc_lineno; }
1403	YY_BREAK
1404case 84:
1405YY_RULE_SETUP
1406#line 216 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1407{ /* ignore whitespace */ }
1408	YY_BREAK
1409case 85:
1410YY_RULE_SETUP
1411#line 217 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1412{ return *yytext; }
1413	YY_BREAK
1414case 86:
1415YY_RULE_SETUP
1416#line 219 "/5g/ian/binutils/release/copy/binutils/rclex.l"
1417ECHO;
1418	YY_BREAK
1419#line 1420 "lex.yy.c"
1420case YY_STATE_EOF(INITIAL):
1421	yyterminate();
1422
1423	case YY_END_OF_BUFFER:
1424		{
1425		/* Amount of text matched not including the EOB char. */
1426		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1427
1428		/* Undo the effects of YY_DO_BEFORE_ACTION. */
1429		*yy_cp = yy_hold_char;
1430
1431		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1432			{
1433			/* We're scanning a new file or input source.  It's
1434			 * possible that this happened because the user
1435			 * just pointed yyin at a new source and called
1436			 * yylex().  If so, then we have to assure
1437			 * consistency between yy_current_buffer and our
1438			 * globals.  Here is the right place to do so, because
1439			 * this is the first action (other than possibly a
1440			 * back-up) that will match for the new input source.
1441			 */
1442			yy_n_chars = yy_current_buffer->yy_n_chars;
1443			yy_current_buffer->yy_input_file = yyin;
1444			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1445			}
1446
1447		/* Note that here we test for yy_c_buf_p "<=" to the position
1448		 * of the first EOB in the buffer, since yy_c_buf_p will
1449		 * already have been incremented past the NUL character
1450		 * (since all states make transitions on EOB to the
1451		 * end-of-buffer state).  Contrast this with the test
1452		 * in input().
1453		 */
1454		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1455			{ /* This was really a NUL. */
1456			yy_state_type yy_next_state;
1457
1458			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1459
1460			yy_current_state = yy_get_previous_state();
1461
1462			/* Okay, we're now positioned to make the NUL
1463			 * transition.  We couldn't have
1464			 * yy_get_previous_state() go ahead and do it
1465			 * for us because it doesn't know how to deal
1466			 * with the possibility of jamming (and we don't
1467			 * want to build jamming into it because then it
1468			 * will run more slowly).
1469			 */
1470
1471			yy_next_state = yy_try_NUL_trans( yy_current_state );
1472
1473			yy_bp = yytext_ptr + YY_MORE_ADJ;
1474
1475			if ( yy_next_state )
1476				{
1477				/* Consume the NUL. */
1478				yy_cp = ++yy_c_buf_p;
1479				yy_current_state = yy_next_state;
1480				goto yy_match;
1481				}
1482
1483			else
1484				{
1485				yy_cp = yy_c_buf_p;
1486				goto yy_find_action;
1487				}
1488			}
1489
1490		else switch ( yy_get_next_buffer() )
1491			{
1492			case EOB_ACT_END_OF_FILE:
1493				{
1494				yy_did_buffer_switch_on_eof = 0;
1495
1496				if ( yywrap() )
1497					{
1498					/* Note: because we've taken care in
1499					 * yy_get_next_buffer() to have set up
1500					 * yytext, we can now set up
1501					 * yy_c_buf_p so that if some total
1502					 * hoser (like flex itself) wants to
1503					 * call the scanner after we return the
1504					 * YY_NULL, it'll still work - another
1505					 * YY_NULL will get returned.
1506					 */
1507					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1508
1509					yy_act = YY_STATE_EOF(YY_START);
1510					goto do_action;
1511					}
1512
1513				else
1514					{
1515					if ( ! yy_did_buffer_switch_on_eof )
1516						YY_NEW_FILE;
1517					}
1518				break;
1519				}
1520
1521			case EOB_ACT_CONTINUE_SCAN:
1522				yy_c_buf_p =
1523					yytext_ptr + yy_amount_of_matched_text;
1524
1525				yy_current_state = yy_get_previous_state();
1526
1527				yy_cp = yy_c_buf_p;
1528				yy_bp = yytext_ptr + YY_MORE_ADJ;
1529				goto yy_match;
1530
1531			case EOB_ACT_LAST_MATCH:
1532				yy_c_buf_p =
1533				&yy_current_buffer->yy_ch_buf[yy_n_chars];
1534
1535				yy_current_state = yy_get_previous_state();
1536
1537				yy_cp = yy_c_buf_p;
1538				yy_bp = yytext_ptr + YY_MORE_ADJ;
1539				goto yy_find_action;
1540			}
1541		break;
1542		}
1543
1544	default:
1545		YY_FATAL_ERROR(
1546			"fatal flex scanner internal error--no action found" );
1547	} /* end of action switch */
1548		} /* end of scanning one token */
1549	} /* end of yylex */
1550
1551
1552/* yy_get_next_buffer - try to read in a new buffer
1553 *
1554 * Returns a code representing an action:
1555 *	EOB_ACT_LAST_MATCH -
1556 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1557 *	EOB_ACT_END_OF_FILE - end of file
1558 */
1559
1560static int yy_get_next_buffer()
1561	{
1562	register char *dest = yy_current_buffer->yy_ch_buf;
1563	register char *source = yytext_ptr;
1564	register int number_to_move, i;
1565	int ret_val;
1566
1567	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1568		YY_FATAL_ERROR(
1569		"fatal flex scanner internal error--end of buffer missed" );
1570
1571	if ( yy_current_buffer->yy_fill_buffer == 0 )
1572		{ /* Don't try to fill the buffer, so this is an EOF. */
1573		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1574			{
1575			/* We matched a singled characater, the EOB, so
1576			 * treat this as a final EOF.
1577			 */
1578			return EOB_ACT_END_OF_FILE;
1579			}
1580
1581		else
1582			{
1583			/* We matched some text prior to the EOB, first
1584			 * process it.
1585			 */
1586			return EOB_ACT_LAST_MATCH;
1587			}
1588		}
1589
1590	/* Try to read more data. */
1591
1592	/* First move last chars to start of buffer. */
1593	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1594
1595	for ( i = 0; i < number_to_move; ++i )
1596		*(dest++) = *(source++);
1597
1598	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1599		/* don't do the read, it's not guaranteed to return an EOF,
1600		 * just force an EOF
1601		 */
1602		yy_n_chars = 0;
1603
1604	else
1605		{
1606		int num_to_read =
1607			yy_current_buffer->yy_buf_size - number_to_move - 1;
1608
1609		while ( num_to_read <= 0 )
1610			{ /* Not enough room in the buffer - grow it. */
1611#ifdef YY_USES_REJECT
1612			YY_FATAL_ERROR(
1613"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1614#else
1615
1616			/* just a shorter name for the current buffer */
1617			YY_BUFFER_STATE b = yy_current_buffer;
1618
1619			int yy_c_buf_p_offset =
1620				(int) (yy_c_buf_p - b->yy_ch_buf);
1621
1622			if ( b->yy_is_our_buffer )
1623				{
1624				int new_size = b->yy_buf_size * 2;
1625
1626				if ( new_size <= 0 )
1627					b->yy_buf_size += b->yy_buf_size / 8;
1628				else
1629					b->yy_buf_size *= 2;
1630
1631				b->yy_ch_buf = (char *)
1632					/* Include room in for 2 EOB chars. */
1633					yy_flex_realloc( (void *) b->yy_ch_buf,
1634							 b->yy_buf_size + 2 );
1635				}
1636			else
1637				/* Can't grow it, we don't own it. */
1638				b->yy_ch_buf = 0;
1639
1640			if ( ! b->yy_ch_buf )
1641				YY_FATAL_ERROR(
1642				"fatal error - scanner input buffer overflow" );
1643
1644			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1645
1646			num_to_read = yy_current_buffer->yy_buf_size -
1647						number_to_move - 1;
1648#endif
1649			}
1650
1651		if ( num_to_read > YY_READ_BUF_SIZE )
1652			num_to_read = YY_READ_BUF_SIZE;
1653
1654		/* Read in more data. */
1655		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1656			yy_n_chars, num_to_read );
1657		}
1658
1659	if ( yy_n_chars == 0 )
1660		{
1661		if ( number_to_move == YY_MORE_ADJ )
1662			{
1663			ret_val = EOB_ACT_END_OF_FILE;
1664			yyrestart( yyin );
1665			}
1666
1667		else
1668			{
1669			ret_val = EOB_ACT_LAST_MATCH;
1670			yy_current_buffer->yy_buffer_status =
1671				YY_BUFFER_EOF_PENDING;
1672			}
1673		}
1674
1675	else
1676		ret_val = EOB_ACT_CONTINUE_SCAN;
1677
1678	yy_n_chars += number_to_move;
1679	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1680	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1681
1682	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1683
1684	return ret_val;
1685	}
1686
1687
1688/* yy_get_previous_state - get the state just before the EOB char was reached */
1689
1690static yy_state_type yy_get_previous_state()
1691	{
1692	register yy_state_type yy_current_state;
1693	register char *yy_cp;
1694
1695	yy_current_state = yy_start;
1696
1697	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1698		{
1699		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1700		if ( yy_accept[yy_current_state] )
1701			{
1702			yy_last_accepting_state = yy_current_state;
1703			yy_last_accepting_cpos = yy_cp;
1704			}
1705		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1706			{
1707			yy_current_state = (int) yy_def[yy_current_state];
1708			if ( yy_current_state >= 470 )
1709				yy_c = yy_meta[(unsigned int) yy_c];
1710			}
1711		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1712		}
1713
1714	return yy_current_state;
1715	}
1716
1717
1718/* yy_try_NUL_trans - try to make a transition on the NUL character
1719 *
1720 * synopsis
1721 *	next_state = yy_try_NUL_trans( current_state );
1722 */
1723
1724#ifdef YY_USE_PROTOS
1725static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1726#else
1727static yy_state_type yy_try_NUL_trans( yy_current_state )
1728yy_state_type yy_current_state;
1729#endif
1730	{
1731	register int yy_is_jam;
1732	register char *yy_cp = yy_c_buf_p;
1733
1734	register YY_CHAR yy_c = 1;
1735	if ( yy_accept[yy_current_state] )
1736		{
1737		yy_last_accepting_state = yy_current_state;
1738		yy_last_accepting_cpos = yy_cp;
1739		}
1740	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1741		{
1742		yy_current_state = (int) yy_def[yy_current_state];
1743		if ( yy_current_state >= 470 )
1744			yy_c = yy_meta[(unsigned int) yy_c];
1745		}
1746	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1747	yy_is_jam = (yy_current_state == 469);
1748
1749	return yy_is_jam ? 0 : yy_current_state;
1750	}
1751
1752
1753#ifndef YY_NO_UNPUT
1754#ifdef YY_USE_PROTOS
1755static void yyunput( int c, register char *yy_bp )
1756#else
1757static void yyunput( c, yy_bp )
1758int c;
1759register char *yy_bp;
1760#endif
1761	{
1762	register char *yy_cp = yy_c_buf_p;
1763
1764	/* undo effects of setting up yytext */
1765	*yy_cp = yy_hold_char;
1766
1767	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1768		{ /* need to shift things up to make room */
1769		/* +2 for EOB chars. */
1770		register int number_to_move = yy_n_chars + 2;
1771		register char *dest = &yy_current_buffer->yy_ch_buf[
1772					yy_current_buffer->yy_buf_size + 2];
1773		register char *source =
1774				&yy_current_buffer->yy_ch_buf[number_to_move];
1775
1776		while ( source > yy_current_buffer->yy_ch_buf )
1777			*--dest = *--source;
1778
1779		yy_cp += (int) (dest - source);
1780		yy_bp += (int) (dest - source);
1781		yy_n_chars = yy_current_buffer->yy_buf_size;
1782
1783		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1784			YY_FATAL_ERROR( "flex scanner push-back overflow" );
1785		}
1786
1787	*--yy_cp = (char) c;
1788
1789
1790	yytext_ptr = yy_bp;
1791	yy_hold_char = *yy_cp;
1792	yy_c_buf_p = yy_cp;
1793	}
1794#endif	/* ifndef YY_NO_UNPUT */
1795
1796
1797#ifdef __cplusplus
1798static int yyinput()
1799#else
1800static int input()
1801#endif
1802	{
1803	int c;
1804
1805	*yy_c_buf_p = yy_hold_char;
1806
1807	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1808		{
1809		/* yy_c_buf_p now points to the character we want to return.
1810		 * If this occurs *before* the EOB characters, then it's a
1811		 * valid NUL; if not, then we've hit the end of the buffer.
1812		 */
1813		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1814			/* This was really a NUL. */
1815			*yy_c_buf_p = '\0';
1816
1817		else
1818			{ /* need more input */
1819			yytext_ptr = yy_c_buf_p;
1820			++yy_c_buf_p;
1821
1822			switch ( yy_get_next_buffer() )
1823				{
1824				case EOB_ACT_END_OF_FILE:
1825					{
1826					if ( yywrap() )
1827						{
1828						yy_c_buf_p =
1829						yytext_ptr + YY_MORE_ADJ;
1830						return EOF;
1831						}
1832
1833					if ( ! yy_did_buffer_switch_on_eof )
1834						YY_NEW_FILE;
1835#ifdef __cplusplus
1836					return yyinput();
1837#else
1838					return input();
1839#endif
1840					}
1841
1842				case EOB_ACT_CONTINUE_SCAN:
1843					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1844					break;
1845
1846				case EOB_ACT_LAST_MATCH:
1847#ifdef __cplusplus
1848					YY_FATAL_ERROR(
1849					"unexpected last match in yyinput()" );
1850#else
1851					YY_FATAL_ERROR(
1852					"unexpected last match in input()" );
1853#endif
1854				}
1855			}
1856		}
1857
1858	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
1859	*yy_c_buf_p = '\0';	/* preserve yytext */
1860	yy_hold_char = *++yy_c_buf_p;
1861
1862
1863	return c;
1864	}
1865
1866
1867#ifdef YY_USE_PROTOS
1868void yyrestart( FILE *input_file )
1869#else
1870void yyrestart( input_file )
1871FILE *input_file;
1872#endif
1873	{
1874	if ( ! yy_current_buffer )
1875		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1876
1877	yy_init_buffer( yy_current_buffer, input_file );
1878	yy_load_buffer_state();
1879	}
1880
1881
1882#ifdef YY_USE_PROTOS
1883void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1884#else
1885void yy_switch_to_buffer( new_buffer )
1886YY_BUFFER_STATE new_buffer;
1887#endif
1888	{
1889	if ( yy_current_buffer == new_buffer )
1890		return;
1891
1892	if ( yy_current_buffer )
1893		{
1894		/* Flush out information for old buffer. */
1895		*yy_c_buf_p = yy_hold_char;
1896		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1897		yy_current_buffer->yy_n_chars = yy_n_chars;
1898		}
1899
1900	yy_current_buffer = new_buffer;
1901	yy_load_buffer_state();
1902
1903	/* We don't actually know whether we did this switch during
1904	 * EOF (yywrap()) processing, but the only time this flag
1905	 * is looked at is after yywrap() is called, so it's safe
1906	 * to go ahead and always set it.
1907	 */
1908	yy_did_buffer_switch_on_eof = 1;
1909	}
1910
1911
1912#ifdef YY_USE_PROTOS
1913void yy_load_buffer_state( void )
1914#else
1915void yy_load_buffer_state()
1916#endif
1917	{
1918	yy_n_chars = yy_current_buffer->yy_n_chars;
1919	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1920	yyin = yy_current_buffer->yy_input_file;
1921	yy_hold_char = *yy_c_buf_p;
1922	}
1923
1924
1925#ifdef YY_USE_PROTOS
1926YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1927#else
1928YY_BUFFER_STATE yy_create_buffer( file, size )
1929FILE *file;
1930int size;
1931#endif
1932	{
1933	YY_BUFFER_STATE b;
1934
1935	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1936	if ( ! b )
1937		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1938
1939	b->yy_buf_size = size;
1940
1941	/* yy_ch_buf has to be 2 characters longer than the size given because
1942	 * we need to put in 2 end-of-buffer characters.
1943	 */
1944	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1945	if ( ! b->yy_ch_buf )
1946		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1947
1948	b->yy_is_our_buffer = 1;
1949
1950	yy_init_buffer( b, file );
1951
1952	return b;
1953	}
1954
1955
1956#ifdef YY_USE_PROTOS
1957void yy_delete_buffer( YY_BUFFER_STATE b )
1958#else
1959void yy_delete_buffer( b )
1960YY_BUFFER_STATE b;
1961#endif
1962	{
1963	if ( ! b )
1964		return;
1965
1966	if ( b == yy_current_buffer )
1967		yy_current_buffer = (YY_BUFFER_STATE) 0;
1968
1969	if ( b->yy_is_our_buffer )
1970		yy_flex_free( (void *) b->yy_ch_buf );
1971
1972	yy_flex_free( (void *) b );
1973	}
1974
1975
1976#ifndef YY_ALWAYS_INTERACTIVE
1977#ifndef YY_NEVER_INTERACTIVE
1978extern int isatty YY_PROTO(( int ));
1979#endif
1980#endif
1981
1982#ifdef YY_USE_PROTOS
1983void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
1984#else
1985void yy_init_buffer( b, file )
1986YY_BUFFER_STATE b;
1987FILE *file;
1988#endif
1989
1990
1991	{
1992	yy_flush_buffer( b );
1993
1994	b->yy_input_file = file;
1995	b->yy_fill_buffer = 1;
1996
1997#if YY_ALWAYS_INTERACTIVE
1998	b->yy_is_interactive = 1;
1999#else
2000#if YY_NEVER_INTERACTIVE
2001	b->yy_is_interactive = 0;
2002#else
2003	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2004#endif
2005#endif
2006	}
2007
2008
2009#ifdef YY_USE_PROTOS
2010void yy_flush_buffer( YY_BUFFER_STATE b )
2011#else
2012void yy_flush_buffer( b )
2013YY_BUFFER_STATE b;
2014#endif
2015
2016	{
2017	b->yy_n_chars = 0;
2018
2019	/* We always need two end-of-buffer characters.  The first causes
2020	 * a transition to the end-of-buffer state.  The second causes
2021	 * a jam in that state.
2022	 */
2023	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2024	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2025
2026	b->yy_buf_pos = &b->yy_ch_buf[0];
2027
2028	b->yy_at_bol = 1;
2029	b->yy_buffer_status = YY_BUFFER_NEW;
2030
2031	if ( b == yy_current_buffer )
2032		yy_load_buffer_state();
2033	}
2034
2035
2036#ifndef YY_NO_SCAN_BUFFER
2037#ifdef YY_USE_PROTOS
2038YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2039#else
2040YY_BUFFER_STATE yy_scan_buffer( base, size )
2041char *base;
2042yy_size_t size;
2043#endif
2044	{
2045	YY_BUFFER_STATE b;
2046
2047	if ( size < 2 ||
2048	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
2049	     base[size-1] != YY_END_OF_BUFFER_CHAR )
2050		/* They forgot to leave room for the EOB's. */
2051		return 0;
2052
2053	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2054	if ( ! b )
2055		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2056
2057	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
2058	b->yy_buf_pos = b->yy_ch_buf = base;
2059	b->yy_is_our_buffer = 0;
2060	b->yy_input_file = 0;
2061	b->yy_n_chars = b->yy_buf_size;
2062	b->yy_is_interactive = 0;
2063	b->yy_at_bol = 1;
2064	b->yy_fill_buffer = 0;
2065	b->yy_buffer_status = YY_BUFFER_NEW;
2066
2067	yy_switch_to_buffer( b );
2068
2069	return b;
2070	}
2071#endif
2072
2073
2074#ifndef YY_NO_SCAN_STRING
2075#ifdef YY_USE_PROTOS
2076YY_BUFFER_STATE yy_scan_string( yyconst char *str )
2077#else
2078YY_BUFFER_STATE yy_scan_string( str )
2079yyconst char *str;
2080#endif
2081	{
2082	int len;
2083	for ( len = 0; str[len]; ++len )
2084		;
2085
2086	return yy_scan_bytes( str, len );
2087	}
2088#endif
2089
2090
2091#ifndef YY_NO_SCAN_BYTES
2092#ifdef YY_USE_PROTOS
2093YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2094#else
2095YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2096yyconst char *bytes;
2097int len;
2098#endif
2099	{
2100	YY_BUFFER_STATE b;
2101	char *buf;
2102	yy_size_t n;
2103	int i;
2104
2105	/* Get memory for full buffer, including space for trailing EOB's. */
2106	n = len + 2;
2107	buf = (char *) yy_flex_alloc( n );
2108	if ( ! buf )
2109		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2110
2111	for ( i = 0; i < len; ++i )
2112		buf[i] = bytes[i];
2113
2114	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2115
2116	b = yy_scan_buffer( buf, n );
2117	if ( ! b )
2118		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2119
2120	/* It's okay to grow etc. this buffer, and we should throw it
2121	 * away when we're done.
2122	 */
2123	b->yy_is_our_buffer = 1;
2124
2125	return b;
2126	}
2127#endif
2128
2129
2130#ifndef YY_NO_PUSH_STATE
2131#ifdef YY_USE_PROTOS
2132static void yy_push_state( int new_state )
2133#else
2134static void yy_push_state( new_state )
2135int new_state;
2136#endif
2137	{
2138	if ( yy_start_stack_ptr >= yy_start_stack_depth )
2139		{
2140		yy_size_t new_size;
2141
2142		yy_start_stack_depth += YY_START_STACK_INCR;
2143		new_size = yy_start_stack_depth * sizeof( int );
2144
2145		if ( ! yy_start_stack )
2146			yy_start_stack = (int *) yy_flex_alloc( new_size );
2147
2148		else
2149			yy_start_stack = (int *) yy_flex_realloc(
2150					(void *) yy_start_stack, new_size );
2151
2152		if ( ! yy_start_stack )
2153			YY_FATAL_ERROR(
2154			"out of memory expanding start-condition stack" );
2155		}
2156
2157	yy_start_stack[yy_start_stack_ptr++] = YY_START;
2158
2159	BEGIN(new_state);
2160	}
2161#endif
2162
2163
2164#ifndef YY_NO_POP_STATE
2165static void yy_pop_state()
2166	{
2167	if ( --yy_start_stack_ptr < 0 )
2168		YY_FATAL_ERROR( "start-condition stack underflow" );
2169
2170	BEGIN(yy_start_stack[yy_start_stack_ptr]);
2171	}
2172#endif
2173
2174
2175#ifndef YY_NO_TOP_STATE
2176static int yy_top_state()
2177	{
2178	return yy_start_stack[yy_start_stack_ptr - 1];
2179	}
2180#endif
2181
2182#ifndef YY_EXIT_FAILURE
2183#define YY_EXIT_FAILURE 2
2184#endif
2185
2186#ifdef YY_USE_PROTOS
2187static void yy_fatal_error( yyconst char msg[] )
2188#else
2189static void yy_fatal_error( msg )
2190char msg[];
2191#endif
2192	{
2193	(void) fprintf( stderr, "%s\n", msg );
2194	exit( YY_EXIT_FAILURE );
2195	}
2196
2197
2198
2199/* Redefine yyless() so it works in section 3 code. */
2200
2201#undef yyless
2202#define yyless(n) \
2203	do \
2204		{ \
2205		/* Undo effects of setting up yytext. */ \
2206		yytext[yyleng] = yy_hold_char; \
2207		yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
2208		yy_hold_char = *yy_c_buf_p; \
2209		*yy_c_buf_p = '\0'; \
2210		yyleng = n; \
2211		} \
2212	while ( 0 )
2213
2214
2215/* Internal utility routines. */
2216
2217#ifndef yytext_ptr
2218#ifdef YY_USE_PROTOS
2219static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2220#else
2221static void yy_flex_strncpy( s1, s2, n )
2222char *s1;
2223yyconst char *s2;
2224int n;
2225#endif
2226	{
2227	register int i;
2228	for ( i = 0; i < n; ++i )
2229		s1[i] = s2[i];
2230	}
2231#endif
2232
2233
2234#ifdef YY_USE_PROTOS
2235static void *yy_flex_alloc( yy_size_t size )
2236#else
2237static void *yy_flex_alloc( size )
2238yy_size_t size;
2239#endif
2240	{
2241	return (void *) malloc( size );
2242	}
2243
2244#ifdef YY_USE_PROTOS
2245static void *yy_flex_realloc( void *ptr, yy_size_t size )
2246#else
2247static void *yy_flex_realloc( ptr, size )
2248void *ptr;
2249yy_size_t size;
2250#endif
2251	{
2252	/* The cast to (char *) in the following accommodates both
2253	 * implementations that use char* generic pointers, and those
2254	 * that use void* generic pointers.  It works with the latter
2255	 * because both ANSI C and C++ allow castless assignment from
2256	 * any pointer type to void*, and deal with argument conversions
2257	 * as though doing an assignment.
2258	 */
2259	return (void *) realloc( (char *) ptr, size );
2260	}
2261
2262#ifdef YY_USE_PROTOS
2263static void yy_flex_free( void *ptr )
2264#else
2265static void yy_flex_free( ptr )
2266void *ptr;
2267#endif
2268	{
2269	free( ptr );
2270	}
2271
2272#if YY_MAIN
2273int main()
2274	{
2275	yylex();
2276	return 0;
2277	}
2278#endif
2279#line 219 "/5g/ian/binutils/release/copy/binutils/rclex.l"
2280
2281#ifndef yywrap
2282/* This is needed for some versions of lex.  */
2283int yywrap ()
2284{
2285  return 1;
2286}
2287#endif
2288
2289/* Handle a C preprocessor line.  */
2290
2291static void
2292cpp_line (s)
2293     const char *s;
2294{
2295  int line;
2296  char *send, *fn;
2297
2298  ++s;
2299  while (isspace (*s))
2300    ++s;
2301
2302  line = strtol (s, &send, 0);
2303  if (*send != '\0' && ! isspace (*send))
2304    return;
2305
2306  /* Subtract 1 because we are about to count the newline.  */
2307  rc_lineno = line - 1;
2308
2309  s = send;
2310  while (isspace (*s))
2311    ++s;
2312
2313  if (*s != '"')
2314    return;
2315
2316  ++s;
2317  send = strchr (s, '"');
2318  if (send == NULL)
2319    return;
2320
2321  fn = (char *) xmalloc (send - s + 1);
2322  strncpy (fn, s, send - s);
2323  fn[send - s] = '\0';
2324
2325  free (rc_filename);
2326  rc_filename = fn;
2327}
2328
2329/* Handle a quoted string.  The quotes are stripped.  A pair of quotes
2330   in a string are turned into a single quote.  Adjacent strings are
2331   merged separated by whitespace are merged, as in C.  */
2332
2333static char *
2334handle_quotes (input, len)
2335     const char *input;
2336     unsigned long *len;
2337{
2338  char *ret, *s;
2339  const char *t;
2340  int ch;
2341
2342  ret = get_string (strlen (input) + 1);
2343
2344  s = ret;
2345  t = input;
2346  if (*t == '"')
2347    ++t;
2348  while (*t != '\0')
2349    {
2350      if (*t == '\\')
2351	{
2352	  ++t;
2353	  switch (*t)
2354	    {
2355	    case '\0':
2356	      rcparse_warning ("backslash at end of string");
2357	      break;
2358
2359	    case '\"':
2360	      rcparse_warning ("use \"\" to put \" in a string");
2361	      break;
2362
2363	    case 'a':
2364	      *s++ = ESCAPE_A;
2365	      ++t;
2366	      break;
2367
2368	    case 'b':
2369	      *s++ = ESCAPE_B;
2370	      ++t;
2371	      break;
2372
2373	    case 'f':
2374	      *s++ = ESCAPE_F;
2375	      ++t;
2376	      break;
2377
2378	    case 'n':
2379	      *s++ = ESCAPE_N;
2380	      ++t;
2381	      break;
2382
2383	    case 'r':
2384	      *s++ = ESCAPE_R;
2385	      ++t;
2386	      break;
2387
2388	    case 't':
2389	      *s++ = ESCAPE_T;
2390	      ++t;
2391	      break;
2392
2393	    case 'v':
2394	      *s++ = ESCAPE_V;
2395	      ++t;
2396	      break;
2397
2398	    case '\\':
2399	      *s++ = *t++;
2400	      break;
2401
2402	    case '0': case '1': case '2': case '3':
2403	    case '4': case '5': case '6': case '7':
2404	      ch = *t - '0';
2405	      ++t;
2406	      if (*t >= '0' && *t <= '7')
2407		{
2408		  ch = (ch << 3) | (*t - '0');
2409		  ++t;
2410		  if (*t >= '0' && *t <= '7')
2411		    {
2412		      ch = (ch << 3) | (*t - '0');
2413		      ++t;
2414		    }
2415		}
2416	      *s++ = ch;
2417	      break;
2418
2419	    case 'x':
2420	      ++t;
2421	      ch = 0;
2422	      while (1)
2423		{
2424		  if (*t >= '0' && *t <= '9')
2425		    ch = (ch << 4) | (*t - '0');
2426		  else if (*t >= 'a' && *t <= 'f')
2427		    ch = (ch << 4) | (*t - 'a');
2428		  else if (*t >= 'A' && *t <= 'F')
2429		    ch = (ch << 4) | (*t - 'A');
2430		  else
2431		    break;
2432		  ++t;
2433		}
2434	      *s++ = ch;
2435	      break;
2436
2437	    default:
2438	      rcparse_warning ("unrecognized escape sequence");
2439	      *s++ = '\\';
2440	      *s++ = *t++;
2441	      break;
2442	    }
2443	}
2444      else if (*t != '"')
2445	*s++ = *t++;
2446      else if (t[1] == '\0')
2447	break;
2448      else if (t[1] == '"')
2449	{
2450	  *s++ = '"';
2451	  t += 2;
2452	}
2453      else
2454	{
2455	  ++t;
2456	  assert (isspace (*t));
2457	  while (isspace (*t))
2458	    ++t;
2459	  if (*t == '\0')
2460	    break;
2461	  assert (*t == '"');
2462	  ++t;
2463	}
2464    }
2465
2466  *s = '\0';
2467
2468  *len = s - ret;
2469
2470  return ret;
2471}
2472
2473/* Allocate a string of a given length.  */
2474
2475static char *
2476get_string (len)
2477     int len;
2478{
2479  struct alloc_string *as;
2480
2481  as = (struct alloc_string *) xmalloc (sizeof *as);
2482  as->s = xmalloc (len);
2483
2484  as->next = strings;
2485  strings = as->next;
2486
2487  return as->s;
2488}
2489
2490/* Discard all the strings we have allocated.  The parser calls this
2491   when it no longer needs them.  */
2492
2493void
2494rcparse_discard_strings ()
2495{
2496  struct alloc_string *as;
2497
2498  as = strings;
2499  while (as != NULL)
2500    {
2501      struct alloc_string *n;
2502
2503      free (as->s);
2504      n = as->next;
2505      free (as);
2506      as = n;
2507    }
2508
2509  strings = NULL;
2510}
2511
2512/* Enter rcdata mode.  */
2513
2514void
2515rcparse_rcdata ()
2516{
2517  rcdata_mode = 1;
2518}
2519
2520/* Go back to normal mode from rcdata mode.  */
2521
2522void
2523rcparse_normal ()
2524{
2525  rcdata_mode = 0;
2526}
2527