386BSD 0.1 development
[unix-history] / usr / src / usr.bin / lex / initscan.c
CommitLineData
5794b2d8
WJ
1/* A lexical scanner generated by flex */
2
3/* scanner skeleton version:
4 * $Header: /usr/fsys/odin/a/vern/flex/RCS/flex.skel,v 2.13 90/05/26 17:24:13 vern Exp $
5 */
6
7#define FLEX_SCANNER
8
9#include <stdio.h>
10
11#ifdef __STDC__
12
13#ifndef DONT_HAVE_STDLIB_H
14#include <stdlib.h>
15#else
16void *malloc( unsigned );
17void free( void* );
18#endif
19
20#define YY_USE_PROTOS
21#define YY_USE_CONST
22#endif
23
24
25/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
26#ifdef c_plusplus
27#ifndef __cplusplus
28#define __cplusplus
29#endif
30#endif
31
32
33#ifdef __cplusplus
34
35#ifndef __STDC__
36#include <stdlib.h>
37#endif
38
39#include <osfcn.h>
40
41/* use prototypes in function declarations */
42#define YY_USE_PROTOS
43
44/* the "const" storage-class-modifier is valid */
45#define YY_USE_CONST
46
47#endif
48
49
50#ifdef __TURBOC__
51#define YY_USE_CONST
52#endif
53
54
55#ifndef YY_USE_CONST
56#define const
57#endif
58
59
60#ifdef YY_USE_PROTOS
61#define YY_PROTO(proto) proto
62#else
63#define YY_PROTO(proto) ()
64/* there's no standard place to get these definitions */
65char *malloc();
66int free();
67int read();
68#endif
69
70
71/* amount of stuff to slurp up with each read */
72#ifndef YY_READ_BUF_SIZE
73#define YY_READ_BUF_SIZE 8192
74#endif
75
76/* returned upon end-of-file */
77#define YY_END_TOK 0
78
79/* copy whatever the last rule matched to the standard output */
80
81/* cast to (char *) is because for 8-bit chars, yytext is (unsigned char *) */
82/* this used to be an fputs(), but since the string might contain NUL's,
83 * we now use fwrite()
84 */
85#define ECHO (void) fwrite( (char *) yytext, yyleng, 1, yyout )
86
87/* gets input and stuffs it into "buf". number of characters read, or YY_NULL,
88 * is returned in "result".
89 */
90#define YY_INPUT(buf,result,max_size) \
91 if ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
92 YY_FATAL_ERROR( "read() in flex scanner failed" );
93#define YY_NULL 0
94
95/* no semi-colon after return; correct usage is to write "yyterminate();" -
96 * we don't want an extra ';' after the "return" because that will cause
97 * some compilers to complain about unreachable statements.
98 */
99#define yyterminate() return ( YY_NULL )
100
101/* report a fatal error */
102
103/* The funky do-while is used to turn this macro definition into
104 * a single C statement (which needs a semi-colon terminator).
105 * This avoids problems with code like:
106 *
107 * if ( something_happens )
108 * YY_FATAL_ERROR( "oops, the something happened" );
109 * else
110 * everything_okay();
111 *
112 * Prior to using the do-while the compiler would get upset at the
113 * "else" because it interpreted the "if" statement as being all
114 * done when it reached the ';' after the YY_FATAL_ERROR() call.
115 */
116
117#define YY_FATAL_ERROR(msg) \
118 do \
119 { \
120 (void) fputs( msg, stderr ); \
121 (void) putc( '\n', stderr ); \
122 exit( 1 ); \
123 } \
124 while ( 0 )
125
126/* default yywrap function - always treat EOF as an EOF */
127#define yywrap() 1
128
129/* enter a start condition. This macro really ought to take a parameter,
130 * but we do it the disgusting crufty way forced on us by the ()-less
131 * definition of BEGIN
132 */
133#define BEGIN yy_start = 1 + 2 *
134
135/* action number for EOF rule of a given start state */
136#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
137
138/* special action meaning "start processing a new file" */
139#define YY_NEW_FILE \
140 do \
141 { \
142 yy_init_buffer( yy_current_buffer, yyin ); \
143 yy_load_buffer_state(); \
144 } \
145 while ( 0 )
146
147/* default declaration of generated scanner - a define so the user can
148 * easily add parameters
149 */
150#define YY_DECL int yylex YY_PROTO(( void ))
151
152/* code executed at the end of each rule */
153#define YY_BREAK break;
154
155#define YY_END_OF_BUFFER_CHAR 0
156
157#ifndef YY_BUF_SIZE
158#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */
159#endif
160
161typedef struct yy_buffer_state *YY_BUFFER_STATE;
162
163#define YY_CHAR unsigned char
164# line 1 "scan.l"
165#define INITIAL 0
166/* scan.l - scanner for flex input */
167/*
168 * Copyright (c) 1989 The Regents of the University of California.
169 * All rights reserved.
170 *
171 * This code is derived from software contributed to Berkeley by
172 * Vern Paxson of Lawrence Berkeley Laboratory.
173 *
174 * The United States Government has rights in this work pursuant to
175 * contract no. DE-AC03-76SF00098 between the United States Department of
176 * Energy and the University of California.
177 *
178 * Redistribution and use in source and binary forms are permitted
179 * provided that the above copyright notice and this paragraph are
180 * duplicated in all such forms and that any documentation,
181 * advertising materials, and other materials related to such
182 * distribution and use acknowledge that the software was developed
183 * by the University of California, Berkeley. The name of the
184 * University may not be used to endorse or promote products derived
185 * from this software without specific prior written permission.
186 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
187 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
188 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
189 */
190# line 28 "scan.l"
191#undef yywrap
192
193#include "flexdef.h"
194#include "parse.h"
195
196#ifndef lint
197static char copyright[] =
198 "@(#) Copyright (c) 1989 The Regents of the University of California.\n";
199static char CR_continuation[] = "@(#) All rights reserved.\n";
200
201static char rcsid[] =
202 "@(#) $Header: /usr/fsys/odin/a/vern/flex/RCS/scan.l,v 2.8 90/05/26 16:53:23 vern Exp $ (LBL)";
203#endif
204
205#define ACTION_ECHO fprintf( temp_action_file, "%s", yytext )
206#define MARK_END_OF_PROLOG fprintf( temp_action_file, "%%%% end of prolog\n" );
207
208#undef YY_DECL
209#define YY_DECL \
210 int flexscan()
211
212#define RETURNCHAR \
213 yylval = yytext[0]; \
214 return ( CHAR );
215
216#define RETURNNAME \
217 (void) strcpy( nmstr, (char *) yytext ); \
218 return ( NAME );
219
220#define PUT_BACK_STRING(str, start) \
221 for ( i = strlen( (char *) (str) ) - 1; i >= start; --i ) \
222 unput((str)[i])
223
224#define CHECK_REJECT(str) \
225 if ( all_upper( str ) ) \
226 reject = true;
227
228#define CHECK_YYMORE(str) \
229 if ( all_lower( str ) ) \
230 yymore_used = true;
231#define SECT2 1
232#define SECT2PROLOG 2
233#define SECT3 3
234#define CODEBLOCK 4
235#define PICKUPDEF 5
236#define SC 6
237#define CARETISBOL 7
238#define NUM 8
239#define QUOTE 9
240#define FIRSTCCL 10
241#define CCL 11
242#define ACTION 12
243#define RECOVER 13
244#define BRACEERROR 14
245#define C_COMMENT 15
246#define ACTION_COMMENT 16
247#define ACTION_STRING 17
248#define PERCENT_BRACE_ACTION 18
249#define USED_LIST 19
250#define CODEBLOCK_2 20
251#define XLATION 21
252# line 85 "scan.l"
253
254/* done after the current pattern has been matched and before the
255 * corresponding action - sets up yytext
256 */
257#define YY_DO_BEFORE_ACTION \
258 yytext = yy_bp; \
259 yyleng = yy_cp - yy_bp; \
260 yy_hold_char = *yy_cp; \
261 *yy_cp = '\0'; \
262 yy_c_buf_p = yy_cp;
263
264#define EOB_ACT_CONTINUE_SCAN 0
265#define EOB_ACT_END_OF_FILE 1
266#define EOB_ACT_LAST_MATCH 2
267
268/* return all but the first 'n' matched characters back to the input stream */
269#define yyless(n) \
270 do \
271 { \
272 /* undo effects of setting up yytext */ \
273 *yy_cp = yy_hold_char; \
274 yy_c_buf_p = yy_cp = yy_bp + n; \
275 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
276 } \
277 while ( 0 )
278
279#define unput(c) yyunput( c, yytext )
280
281
282struct yy_buffer_state
283 {
284 FILE *yy_input_file;
285
286 YY_CHAR *yy_ch_buf; /* input buffer */
287 YY_CHAR *yy_buf_pos; /* current position in input buffer */
288
289 /* size of input buffer in bytes, not including room for EOB characters*/
290 int yy_buf_size;
291
292 /* number of characters read into yy_ch_buf, not including EOB characters */
293 int yy_n_chars;
294
295 int yy_eof_status; /* whether we've seen an EOF on this buffer */
296#define EOF_NOT_SEEN 0
297 /* "pending" happens when the EOF has been seen but there's still
298 * some text process
299 */
300#define EOF_PENDING 1
301#define EOF_DONE 2
302 };
303
304static YY_BUFFER_STATE yy_current_buffer;
305
306/* we provide macros for accessing buffer states in case in the
307 * future we want to put the buffer states in a more general
308 * "scanner state"
309 */
310#define YY_CURRENT_BUFFER yy_current_buffer
311
312
313/* yy_hold_char holds the character lost when yytext is formed */
314static YY_CHAR yy_hold_char;
315
316static int yy_n_chars; /* number of characters read into yy_ch_buf */
317
318
319
320#ifndef YY_USER_ACTION
321#define YY_USER_ACTION
322#endif
323
324#ifndef YY_USER_INIT
325#define YY_USER_INIT
326#endif
327
328extern YY_CHAR *yytext;
329extern int yyleng;
330extern FILE *yyin, *yyout;
331
332YY_CHAR *yytext;
333int yyleng;
334
335FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
336
337#define YY_END_OF_BUFFER 121
338typedef int yy_state_type;
339static const short int yy_accept[341] =
340 { 0,
341 0, 0, 0, 0, 0, 0, 119, 119, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
345 0, 0, 0, 0, 121, 19, 7, 18, 19, 16,
346 1, 17, 19, 19, 19, 15, 67, 59, 60, 53,
347 67, 66, 51, 67, 67, 67, 50, 49, 67, 52,
348 120, 47, 119, 119, 28, 29, 28, 28, 28, 28,
349 31, 30, 32, 73, 120, 69, 70, 72, 74, 88,
350 89, 86, 85, 87, 75, 77, 76, 75, 81, 80,
351
352 81, 81, 83, 83, 83, 84, 99, 104, 103, 105,
353 105, 100, 100, 100, 97, 98, 120, 33, 91, 90,
354 22, 24, 23, 107, 109, 108, 111, 113, 114, 115,
355 95, 95, 96, 95, 95, 95, 95, 38, 35, 34,
356 38, 38, 44, 42, 45, 44, 44, 41, 41, 41,
357 40, 41, 7, 18, 0, 16, 1, 17, 0, 2,
358 14, 8, 0, 12, 4, 0, 0, 5, 0, 3,
359 15, 59, 60, 0, 0, 56, 0, 0, 0, 117,
360 117, 117, 55, 54, 55, 50, 49, 63, 50, 0,
361 47, 46, 119, 119, 28, 28, 28, 28, 28, 31,
362
363 30, 71, 72, 85, 118, 118, 118, 78, 79, 82,
364 99, 0, 102, 0, 101, 100, 100, 100, 0, 33,
365 22, 20, 107, 106, 111, 112, 95, 95, 95, 92,
366 95, 95, 95, 38, 35, 38, 38, 42, 0, 43,
367 43, 43, 42, 40, 0, 13, 14, 8, 8, 0,
368 12, 4, 0, 0, 0, 5, 0, 6, 57, 0,
369 58, 0, 64, 0, 0, 117, 117, 55, 55, 65,
370 63, 28, 28, 28, 25, 0, 118, 118, 100, 100,
371 0, 21, 92, 92, 95, 95, 38, 38, 0, 39,
372 43, 43, 0, 11, 4, 0, 11, 0, 0, 5,
373
374 0, 0, 0, 117, 28, 28, 118, 100, 100, 95,
375 95, 38, 38, 43, 0, 9, 0, 0, 0, 28,
376 28, 100, 100, 95, 95, 38, 38, 0, 0, 26,
377 27, 93, 94, 93, 94, 36, 37, 10, 62, 0
378 } ;
379
380static const YY_CHAR yy_ec[256] =
381 { 0,
382 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
383 1, 4, 1, 1, 1, 1, 1, 1, 1, 1,
384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
385 1, 5, 1, 6, 7, 8, 9, 1, 10, 11,
386 11, 12, 11, 13, 14, 11, 15, 16, 16, 16,
387 16, 16, 16, 16, 16, 16, 16, 1, 1, 17,
388 1, 18, 11, 1, 24, 25, 26, 27, 28, 29,
389 23, 23, 23, 30, 31, 23, 32, 33, 34, 31,
390 23, 35, 36, 37, 38, 23, 23, 39, 40, 23,
391 19, 20, 21, 22, 23, 1, 24, 25, 26, 27,
392
393 28, 29, 23, 23, 23, 30, 31, 23, 32, 33,
394 34, 31, 23, 35, 36, 37, 38, 23, 23, 39,
395 40, 23, 41, 42, 43, 1, 1, 1, 1, 1,
396 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
397 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
398 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
399 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
400 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
404 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
405 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
406 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
407 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
408 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
409 1, 1, 1, 1, 1
410 } ;
411
412static const YY_CHAR yy_meta[44] =
413 { 0,
414 1, 2, 3, 2, 2, 4, 1, 1, 1, 5,
415 1, 6, 1, 7, 5, 8, 1, 1, 1, 9,
416 10, 1, 11, 12, 12, 12, 12, 12, 12, 11,
417 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
418 5, 1, 13
419 } ;
420
421static const short int yy_base[404] =
422 { 0,
423 0, 43, 85, 126, 1371, 1370, 1369, 1353, 168, 1346,
424 104, 108, 211, 0, 1332, 1320, 120, 252, 95, 119,
425 137, 144, 100, 141, 295, 0, 1327, 1323, 113, 336,
426 254, 255, 257, 258, 253, 268, 379, 0, 338, 421,
427 0, 0, 273, 460, 1325, 1442, 281, 1442, 1287, 0,
428 287, 1442, 1279, 472, 1257, 0, 1442, 425, 1442, 1442,
429 147, 1442, 1239, 1235, 78, 513, 433, 1442, 83, 1442,
430 1248, 0, 1247, 1442, 0, 1442, 0, 1218, 1205, 1194,
431 0, 342, 1442, 1442, 1442, 1442, 1202, 0, 1442, 1442,
432 1442, 1442, 1201, 1442, 1442, 1442, 1442, 79, 1442, 1442,
433
434 103, 1198, 1442, 0, 248, 1442, 0, 1442, 1442, 252,
435 1199, 0, 1173, 1158, 1442, 1442, 1185, 1442, 1442, 1442,
436 0, 1442, 1170, 0, 1442, 1152, 0, 1442, 1442, 0,
437 0, 346, 1442, 1123, 0, 1125, 1105, 0, 352, 1442,
438 1116, 1103, 1442, 356, 1442, 1100, 329, 1442, 360, 1093,
439 1101, 333, 441, 1442, 445, 0, 449, 1442, 1101, 1442,
440 365, 453, 1094, 466, 0, 480, 330, 0, 1095, 1442,
441 0, 555, 1442, 1044, 1077, 1442, 1051, 133, 456, 1442,
442 1059, 0, 0, 1442, 584, 563, 1442, 0, 1442, 1071,
443 0, 1442, 1063, 1442, 0, 0, 1010, 1007, 627, 0,
444
445 484, 1442, 0, 998, 1442, 992, 0, 1442, 1442, 1442,
446 0, 421, 1442, 0, 1442, 0, 971, 964, 992, 1442,
447 0, 962, 0, 1442, 0, 1442, 0, 488, 921, 670,
448 0, 717, 714, 0, 497, 715, 712, 569, 573, 1442,
449 727, 0, 577, 726, 581, 1442, 585, 0, 590, 738,
450 597, 0, 712, 683, 691, 0, 670, 1442, 1442, 623,
451 1442, 591, 1442, 458, 702, 590, 0, 0, 0, 1442,
452 0, 576, 569, 0, 1442, 593, 575, 0, 560, 546,
453 567, 1442, 0, 0, 541, 529, 534, 527, 730, 1442,
454 500, 0, 509, 1442, 0, 734, 1442, 468, 467, 0,
455
456 462, 704, 724, 1442, 461, 438, 1442, 440, 425, 433,
457 405, 413, 398, 1442, 404, 1442, 359, 259, 332, 338,
458 346, 334, 331, 257, 253, 226, 137, 133, 81, 0,
459 0, 0, 0, 0, 0, 0, 0, 1442, 1442, 1442,
460 753, 766, 779, 792, 805, 818, 831, 844, 857, 870,
461 883, 896, 909, 922, 935, 948, 955, 967, 980, 986,
462 998, 1011, 1024, 1037, 1050, 1063, 1070, 1082, 1089, 1101,
463 1114, 1127, 1140, 1150, 1157, 1169, 1182, 1195, 1208, 1221,
464 1234, 1241, 1253, 1266, 1279, 1282, 1284, 1296, 1309, 1315,
465 1327, 1339, 1345, 1357, 1363, 1375, 1382, 1388, 1393, 1405,
466
467 1411, 1423, 1429
468 } ;
469
470static const short int yy_def[404] =
471 { 0,
472 340, 340, 341, 341, 342, 342, 343, 343, 340, 9,
473 344, 344, 340, 13, 345, 345, 346, 346, 347, 347,
474 348, 348, 349, 349, 340, 25, 350, 350, 345, 345,
475 351, 351, 352, 352, 353, 353, 340, 37, 354, 354,
476 37, 37, 355, 356, 340, 340, 340, 340, 340, 357,
477 340, 340, 358, 359, 340, 360, 340, 340, 340, 340,
478 340, 340, 340, 361, 362, 340, 340, 340, 340, 340,
479 363, 364, 365, 340, 366, 340, 367, 367, 367, 366,
480 368, 340, 340, 340, 340, 340, 340, 369, 340, 340,
481 340, 340, 340, 340, 340, 340, 340, 362, 340, 340,
482
483 370, 371, 340, 372, 362, 340, 373, 340, 340, 374,
484 340, 375, 375, 375, 340, 340, 376, 340, 340, 340,
485 377, 340, 340, 378, 340, 340, 379, 340, 340, 380,
486 381, 381, 340, 381, 382, 382, 382, 383, 340, 340,
487 383, 383, 340, 340, 340, 340, 384, 340, 340, 340,
488 340, 384, 340, 340, 340, 357, 340, 340, 358, 340,
489 340, 385, 340, 340, 386, 340, 340, 387, 388, 340,
490 360, 340, 340, 340, 389, 340, 340, 361, 361, 340,
491 340, 390, 391, 340, 391, 340, 340, 392, 340, 363,
492 364, 340, 365, 340, 366, 367, 367, 367, 340, 368,
493
494 340, 340, 369, 340, 340, 340, 393, 340, 340, 340,
495 373, 374, 340, 374, 340, 375, 375, 375, 376, 340,
496 377, 394, 378, 340, 379, 340, 381, 381, 381, 340,
497 382, 382, 382, 383, 340, 383, 383, 340, 340, 340,
498 340, 395, 340, 340, 340, 340, 340, 385, 385, 396,
499 340, 397, 396, 340, 340, 398, 388, 340, 340, 389,
500 340, 340, 340, 361, 361, 340, 399, 391, 185, 340,
501 392, 367, 367, 199, 340, 400, 340, 401, 375, 375,
502 394, 340, 230, 402, 382, 382, 383, 383, 340, 340,
503 340, 403, 396, 340, 397, 396, 340, 340, 340, 398,
504
505 340, 361, 265, 340, 367, 367, 340, 375, 375, 382,
506 382, 383, 383, 340, 340, 340, 340, 361, 361, 367,
507 367, 375, 375, 382, 382, 383, 383, 340, 340, 367,
508 367, 375, 375, 382, 382, 383, 383, 340, 340, 0,
509 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
510 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
511 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
512 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
513 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
514 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
515
516 340, 340, 340
517 } ;
518
519static const short int yy_nxt[1486] =
520 { 0,
521 46, 47, 48, 47, 47, 46, 46, 46, 49, 46,
522 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
523 46, 46, 50, 50, 50, 50, 50, 50, 50, 50,
524 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
525 46, 46, 46, 46, 51, 52, 51, 51, 46, 53,
526 46, 54, 46, 46, 46, 46, 46, 55, 46, 46,
527 46, 46, 46, 46, 46, 56, 56, 56, 56, 56,
528 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
529 56, 56, 56, 46, 46, 46, 58, 59, 58, 58,
530 60, 188, 61, 181, 181, 62, 62, 96, 339, 62,
531
532 97, 63, 85, 64, 65, 82, 83, 82, 82, 82,
533 83, 82, 82, 104, 98, 119, 182, 182, 206, 105,
534 106, 96, 91, 189, 97, 66, 62, 67, 68, 67,
535 67, 60, 92, 61, 69, 93, 62, 62, 98, 85,
536 62, 207, 63, 85, 64, 65, 85, 70, 176, 176,
537 100, 176, 179, 263, 104, 120, 101, 100, 102, 338,
538 105, 106, 94, 101, 337, 102, 66, 62, 75, 75,
539 76, 75, 75, 75, 75, 75, 75, 75, 75, 75,
540 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
541 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
542
543 77, 77, 78, 77, 77, 77, 77, 79, 75, 75,
544 75, 84, 84, 85, 84, 84, 84, 84, 84, 84,
545 84, 84, 84, 86, 84, 84, 84, 84, 87, 84,
546 84, 84, 84, 88, 88, 88, 88, 88, 88, 88,
547 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
548 88, 84, 84, 84, 91, 128, 122, 122, 129, 125,
549 125, 213, 336, 181, 92, 123, 123, 93, 126, 126,
550 128, 214, 130, 129, 144, 145, 144, 144, 179, 263,
551 335, 146, 153, 154, 153, 153, 182, 130, 157, 158,
552 157, 157, 147, 334, 94, 107, 107, 108, 107, 107,
553
554 109, 107, 107, 107, 110, 107, 107, 107, 107, 111,
555 107, 107, 107, 107, 107, 107, 107, 112, 112, 112,
556 112, 112, 112, 112, 112, 112, 112, 112, 112, 113,
557 112, 112, 112, 112, 114, 115, 107, 116, 119, 139,
558 140, 139, 139, 201, 241, 201, 201, 228, 241, 228,
559 228, 179, 263, 235, 229, 235, 235, 238, 333, 238,
560 238, 243, 254, 243, 243, 255, 247, 242, 247, 247,
561 332, 242, 141, 331, 330, 244, 329, 142, 120, 131,
562 132, 133, 132, 132, 131, 131, 131, 134, 131, 131,
563 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
564
565 131, 135, 135, 135, 135, 135, 135, 135, 135, 135,
566 135, 135, 135, 136, 135, 135, 135, 135, 137, 131,
567 131, 131, 139, 140, 139, 139, 172, 173, 172, 172,
568 213, 328, 327, 174, 186, 187, 186, 186, 326, 325,
569 214, 174, 153, 154, 153, 153, 245, 246, 245, 245,
570 157, 158, 157, 157, 249, 141, 249, 249, 324, 323,
571 142, 149, 145, 149, 149, 322, 175, 251, 150, 251,
572 251, 264, 321, 302, 175, 151, 178, 179, 263, 152,
573 162, 245, 246, 245, 253, 201, 320, 201, 201, 228,
574 317, 228, 228, 316, 265, 163, 229, 164, 235, 163,
575
576 235, 235, 163, 315, 163, 163, 164, 165, 166, 167,
577 168, 294, 169, 183, 183, 240, 183, 183, 183, 183,
578 183, 183, 183, 183, 183, 183, 183, 183, 184, 183,
579 183, 183, 183, 183, 183, 185, 185, 185, 185, 185,
580 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
581 185, 185, 185, 183, 183, 183, 172, 173, 172, 172,
582 313, 312, 311, 174, 186, 187, 186, 186, 310, 282,
583 238, 174, 238, 238, 289, 290, 289, 289, 243, 309,
584 243, 243, 245, 246, 245, 245, 247, 308, 247, 247,
585 205, 249, 244, 249, 249, 275, 175, 269, 251, 269,
586
587 251, 251, 306, 305, 175, 180, 269, 269, 269, 269,
588 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
589 269, 269, 269, 269, 301, 261, 270, 274, 274, 275,
590 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
591 274, 274, 274, 274, 274, 274, 274, 274, 274, 276,
592 276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
593 276, 276, 276, 276, 276, 276, 276, 274, 274, 274,
594 283, 283, 258, 283, 283, 283, 283, 283, 283, 283,
595 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
596 283, 283, 284, 284, 284, 284, 284, 284, 284, 284,
597
598 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
599 283, 283, 283, 296, 297, 296, 296, 303, 299, 318,
600 298, 179, 263, 179, 263, 303, 303, 303, 303, 303,
601 303, 289, 290, 289, 289, 296, 297, 296, 296, 319,
602 294, 244, 291, 288, 287, 286, 285, 319, 319, 319,
603 319, 319, 319, 57, 57, 57, 57, 57, 57, 57,
604 57, 57, 57, 57, 57, 57, 71, 71, 71, 71,
605 71, 71, 71, 71, 71, 71, 71, 71, 71, 73,
606 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
607 73, 73, 81, 81, 81, 81, 81, 81, 81, 81,
608
609 81, 81, 81, 81, 81, 85, 85, 85, 85, 85,
610 85, 85, 85, 85, 85, 85, 85, 85, 90, 90,
611 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
612 90, 95, 95, 95, 95, 95, 95, 95, 95, 95,
613 95, 95, 95, 95, 99, 99, 99, 99, 99, 99,
614 99, 99, 99, 99, 99, 99, 99, 103, 103, 103,
615 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
616 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
617 117, 117, 117, 121, 121, 121, 121, 121, 121, 121,
618 121, 121, 121, 121, 121, 121, 124, 124, 124, 124,
619
620 124, 124, 124, 124, 124, 124, 124, 124, 124, 127,
621 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
622 127, 127, 138, 138, 138, 138, 138, 138, 138, 138,
623 138, 138, 138, 138, 138, 143, 143, 143, 143, 143,
624 143, 143, 143, 143, 143, 143, 143, 143, 148, 148,
625 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
626 148, 156, 156, 230, 282, 156, 156, 159, 159, 159,
627 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
628 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
629 161, 161, 171, 171, 220, 280, 171, 171, 178, 178,
630
631 279, 178, 178, 178, 178, 178, 178, 277, 178, 178,
632 178, 180, 180, 204, 180, 180, 180, 180, 180, 180,
633 180, 180, 180, 180, 190, 190, 190, 190, 190, 190,
634 190, 190, 190, 190, 190, 190, 190, 192, 273, 272,
635 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
636 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
637 193, 193, 193, 195, 195, 194, 195, 195, 195, 195,
638 195, 195, 195, 191, 266, 195, 196, 196, 262, 261,
639 196, 196, 200, 200, 259, 200, 200, 200, 200, 200,
640 200, 200, 200, 200, 200, 203, 203, 258, 250, 203,
641
642 203, 205, 205, 160, 205, 205, 205, 205, 205, 205,
643 205, 205, 205, 205, 208, 208, 244, 208, 208, 208,
644 208, 208, 208, 208, 208, 208, 208, 210, 210, 239,
645 210, 210, 210, 210, 210, 210, 239, 210, 210, 210,
646 211, 211, 237, 236, 233, 211, 211, 211, 211, 211,
647 212, 212, 232, 212, 212, 212, 212, 212, 212, 212,
648 212, 212, 212, 216, 216, 230, 224, 216, 216, 219,
649 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
650 219, 219, 221, 221, 222, 221, 221, 220, 221, 221,
651 221, 221, 221, 221, 221, 223, 223, 218, 223, 223,
652
653 217, 223, 223, 223, 223, 223, 223, 223, 225, 225,
654 215, 209, 225, 225, 225, 225, 204, 225, 225, 225,
655 225, 226, 226, 202, 226, 226, 226, 226, 226, 226,
656 226, 226, 226, 226, 227, 227, 199, 227, 227, 227,
657 227, 227, 227, 227, 198, 197, 227, 231, 231, 194,
658 191, 231, 231, 234, 179, 177, 234, 234, 234, 234,
659 234, 234, 234, 234, 234, 234, 240, 240, 170, 240,
660 240, 240, 240, 240, 240, 240, 240, 240, 240, 248,
661 248, 160, 248, 248, 248, 248, 248, 248, 248, 248,
662 248, 248, 252, 252, 256, 256, 257, 257, 257, 257,
663
664 257, 257, 257, 257, 257, 257, 257, 257, 257, 260,
665 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
666 260, 260, 267, 155, 340, 118, 267, 268, 268, 118,
667 268, 268, 268, 268, 268, 268, 268, 268, 268, 271,
668 271, 89, 271, 271, 271, 271, 271, 271, 271, 271,
669 271, 271, 278, 89, 80, 74, 278, 281, 281, 281,
670 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
671 292, 74, 72, 72, 292, 293, 293, 293, 293, 293,
672 293, 293, 293, 293, 293, 293, 293, 293, 295, 295,
673 340, 340, 295, 295, 300, 300, 340, 340, 300, 300,
674
675 304, 340, 340, 340, 304, 276, 276, 276, 276, 276,
676 276, 276, 276, 276, 276, 276, 276, 276, 307, 340,
677 340, 340, 307, 284, 284, 340, 284, 284, 284, 284,
678 284, 284, 284, 284, 284, 284, 314, 340, 340, 340,
679 314, 45, 340, 340, 340, 340, 340, 340, 340, 340,
680 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
681 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
682 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
683 340, 340, 340, 340, 340
684 } ;
685
686static const short int yy_chk[1486] =
687 { 0,
688 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
689 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
690 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
691 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
692 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
693 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
694 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
695 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
696 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
697 3, 69, 3, 65, 98, 3, 3, 19, 329, 3,
698
699 19, 3, 23, 3, 3, 11, 11, 11, 11, 12,
700 12, 12, 12, 23, 19, 29, 65, 98, 101, 23,
701 23, 20, 17, 69, 20, 3, 3, 4, 4, 4,
702 4, 4, 17, 4, 4, 17, 4, 4, 20, 21,
703 4, 101, 4, 24, 4, 4, 22, 4, 61, 61,
704 21, 61, 178, 178, 24, 29, 21, 22, 21, 328,
705 24, 24, 17, 22, 327, 22, 4, 4, 9, 9,
706 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
707 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
708 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
709
710 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
711 9, 13, 13, 13, 13, 13, 13, 13, 13, 13,
712 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
713 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
714 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
715 13, 13, 13, 13, 18, 35, 31, 32, 35, 33,
716 34, 110, 326, 105, 18, 31, 32, 18, 33, 34,
717 36, 110, 35, 36, 43, 43, 43, 43, 318, 318,
718 325, 43, 47, 47, 47, 47, 105, 36, 51, 51,
719 51, 51, 43, 324, 18, 25, 25, 25, 25, 25,
720
721 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
722 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
723 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
724 25, 25, 25, 25, 25, 25, 25, 25, 30, 39,
725 39, 39, 39, 82, 147, 82, 82, 132, 152, 132,
726 132, 319, 319, 139, 132, 139, 139, 144, 323, 144,
727 144, 149, 167, 149, 149, 167, 161, 147, 161, 161,
728 322, 152, 39, 321, 320, 149, 317, 39, 30, 37,
729 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
730 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
731
732 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
733 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
734 37, 37, 40, 40, 40, 40, 58, 58, 58, 58,
735 212, 315, 313, 58, 67, 67, 67, 67, 312, 311,
736 212, 67, 153, 153, 153, 153, 155, 155, 155, 155,
737 157, 157, 157, 157, 162, 40, 162, 162, 310, 309,
738 40, 44, 44, 44, 44, 308, 58, 164, 44, 164,
739 164, 179, 306, 264, 67, 44, 179, 264, 264, 44,
740 54, 166, 166, 166, 166, 201, 305, 201, 201, 228,
741 301, 228, 228, 299, 179, 54, 228, 54, 235, 54,
742
743 235, 235, 54, 298, 54, 54, 54, 54, 54, 54,
744 54, 293, 54, 66, 66, 291, 66, 66, 66, 66,
745 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
746 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
747 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
748 66, 66, 66, 66, 66, 66, 172, 172, 172, 172,
749 288, 287, 286, 172, 186, 186, 186, 186, 285, 281,
750 238, 186, 238, 238, 239, 239, 239, 239, 243, 280,
751 243, 243, 245, 245, 245, 245, 247, 279, 247, 247,
752 277, 249, 243, 249, 249, 276, 172, 185, 251, 185,
753
754 251, 251, 273, 272, 186, 266, 185, 185, 185, 185,
755 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
756 185, 185, 185, 185, 262, 260, 185, 199, 199, 199,
757 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
758 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
759 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
760 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
761 230, 230, 257, 230, 230, 230, 230, 230, 230, 230,
762 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
763 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
764
765 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
766 230, 230, 230, 253, 253, 253, 253, 265, 255, 302,
767 254, 265, 265, 302, 302, 265, 265, 265, 265, 265,
768 265, 289, 289, 289, 289, 296, 296, 296, 296, 303,
769 250, 244, 241, 237, 236, 233, 232, 303, 303, 303,
770 303, 303, 303, 341, 341, 341, 341, 341, 341, 341,
771 341, 341, 341, 341, 341, 341, 342, 342, 342, 342,
772 342, 342, 342, 342, 342, 342, 342, 342, 342, 343,
773 343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
774 343, 343, 344, 344, 344, 344, 344, 344, 344, 344,
775
776 344, 344, 344, 344, 344, 345, 345, 345, 345, 345,
777 345, 345, 345, 345, 345, 345, 345, 345, 346, 346,
778 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
779 346, 347, 347, 347, 347, 347, 347, 347, 347, 347,
780 347, 347, 347, 347, 348, 348, 348, 348, 348, 348,
781 348, 348, 348, 348, 348, 348, 348, 349, 349, 349,
782 349, 349, 349, 349, 349, 349, 349, 349, 349, 349,
783 350, 350, 350, 350, 350, 350, 350, 350, 350, 350,
784 350, 350, 350, 351, 351, 351, 351, 351, 351, 351,
785 351, 351, 351, 351, 351, 351, 352, 352, 352, 352,
786
787 352, 352, 352, 352, 352, 352, 352, 352, 352, 353,
788 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
789 353, 353, 354, 354, 354, 354, 354, 354, 354, 354,
790 354, 354, 354, 354, 354, 355, 355, 355, 355, 355,
791 355, 355, 355, 355, 355, 355, 355, 355, 356, 356,
792 356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
793 356, 357, 357, 229, 222, 357, 357, 358, 358, 358,
794 358, 358, 358, 358, 358, 358, 358, 358, 358, 358,
795 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
796 359, 359, 360, 360, 219, 218, 360, 360, 361, 361,
797
798 217, 361, 361, 361, 361, 361, 361, 206, 361, 361,
799 361, 362, 362, 204, 362, 362, 362, 362, 362, 362,
800 362, 362, 362, 362, 363, 363, 363, 363, 363, 363,
801 363, 363, 363, 363, 363, 363, 363, 364, 198, 197,
802 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
803 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
804 365, 365, 365, 366, 366, 193, 366, 366, 366, 366,
805 366, 366, 366, 190, 181, 366, 367, 367, 177, 175,
806 367, 367, 368, 368, 174, 368, 368, 368, 368, 368,
807 368, 368, 368, 368, 368, 369, 369, 169, 163, 369,
808
809 369, 370, 370, 159, 370, 370, 370, 370, 370, 370,
810 370, 370, 370, 370, 371, 371, 151, 371, 371, 371,
811 371, 371, 371, 371, 371, 371, 371, 372, 372, 150,
812 372, 372, 372, 372, 372, 372, 146, 372, 372, 372,
813 373, 373, 142, 141, 137, 373, 373, 373, 373, 373,
814 374, 374, 136, 374, 374, 374, 374, 374, 374, 374,
815 374, 374, 374, 375, 375, 134, 126, 375, 375, 376,
816 376, 376, 376, 376, 376, 376, 376, 376, 376, 376,
817 376, 376, 377, 377, 123, 377, 377, 117, 377, 377,
818 377, 377, 377, 377, 377, 378, 378, 114, 378, 378,
819
820 113, 378, 378, 378, 378, 378, 378, 378, 379, 379,
821 111, 102, 379, 379, 379, 379, 93, 379, 379, 379,
822 379, 380, 380, 87, 380, 380, 380, 380, 380, 380,
823 380, 380, 380, 380, 381, 381, 80, 381, 381, 381,
824 381, 381, 381, 381, 79, 78, 381, 382, 382, 73,
825 71, 382, 382, 383, 64, 63, 383, 383, 383, 383,
826 383, 383, 383, 383, 383, 383, 384, 384, 55, 384,
827 384, 384, 384, 384, 384, 384, 384, 384, 384, 385,
828 385, 53, 385, 385, 385, 385, 385, 385, 385, 385,
829 385, 385, 386, 386, 387, 387, 388, 388, 388, 388,
830
831 388, 388, 388, 388, 388, 388, 388, 388, 388, 389,
832 389, 389, 389, 389, 389, 389, 389, 389, 389, 389,
833 389, 389, 390, 49, 45, 28, 390, 391, 391, 27,
834 391, 391, 391, 391, 391, 391, 391, 391, 391, 392,
835 392, 16, 392, 392, 392, 392, 392, 392, 392, 392,
836 392, 392, 393, 15, 10, 8, 393, 394, 394, 394,
837 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
838 395, 7, 6, 5, 395, 396, 396, 396, 396, 396,
839 396, 396, 396, 396, 396, 396, 396, 396, 397, 397,
840 0, 0, 397, 397, 398, 398, 0, 0, 398, 398,
841
842 399, 0, 0, 0, 399, 400, 400, 400, 400, 400,
843 400, 400, 400, 400, 400, 400, 400, 400, 401, 0,
844 0, 0, 401, 402, 402, 0, 402, 402, 402, 402,
845 402, 402, 402, 402, 402, 402, 403, 0, 0, 0,
846 403, 340, 340, 340, 340, 340, 340, 340, 340, 340,
847 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
848 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
849 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
850 340, 340, 340, 340, 340
851 } ;
852
853static yy_state_type yy_last_accepting_state;
854static YY_CHAR *yy_last_accepting_cpos;
855
856/* the intent behind this definition is that it'll catch
857 * any uses of REJECT which flex missed
858 */
859#define REJECT reject_used_but_not_detected
860#define yymore() yymore_used_but_not_detected
861#define YY_MORE_ADJ 0
862
863/* these variables are all declared out here so that section 3 code can
864 * manipulate them
865 */
866/* points to current character in buffer */
867static YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0;
868static int yy_init = 1; /* whether we need to initialize */
869static int yy_start = 0; /* start state number */
870
871/* flag which is used to allow yywrap()'s to do buffer switches
872 * instead of setting up a fresh yyin. A bit of a hack ...
873 */
874static int yy_did_buffer_switch_on_eof;
875
876static yy_state_type yy_get_previous_state YY_PROTO(( void ));
877static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
878static int yy_get_next_buffer YY_PROTO(( void ));
879static void yyunput YY_PROTO(( YY_CHAR c, YY_CHAR *buf_ptr ));
880void yyrestart YY_PROTO(( FILE *input_file ));
881void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
882void yy_load_buffer_state YY_PROTO(( void ));
883YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
884void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
885void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
886
887#define yy_new_buffer yy_create_buffer
888
889#ifdef __cplusplus
890static int yyinput YY_PROTO(( void ));
891#else
892static int input YY_PROTO(( void ));
893#endif
894
895YY_DECL
896 {
897 register yy_state_type yy_current_state;
898 register YY_CHAR *yy_cp, *yy_bp;
899 register int yy_act;
900
901
902 static int bracelevel, didadef;
903 int i, indented_code, checking_used, new_xlation;
904 int doing_codeblock = false;
905 Char nmdef[MAXLINE], myesc();
906
907
908 if ( yy_init )
909 {
910 YY_USER_INIT;
911
912 if ( ! yy_start )
913 yy_start = 1; /* first start state */
914
915 if ( ! yyin )
916 yyin = stdin;
917
918 if ( ! yyout )
919 yyout = stdout;
920
921 if ( yy_current_buffer )
922 yy_init_buffer( yy_current_buffer, yyin );
923 else
924 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
925
926 yy_load_buffer_state();
927
928 yy_init = 0;
929 }
930
931 while ( 1 ) /* loops until end-of-file is reached */
932 {
933 yy_cp = yy_c_buf_p;
934
935 /* support of yytext */
936 *yy_cp = yy_hold_char;
937
938 /* yy_bp points to the position in yy_ch_buf of the start of the
939 * current run.
940 */
941 yy_bp = yy_cp;
942
943 yy_current_state = yy_start;
944 if ( yy_bp[-1] == '\n' )
945 ++yy_current_state;
946yy_match:
947 do
948 {
949 register YY_CHAR yy_c = yy_ec[*yy_cp];
950 if ( yy_accept[yy_current_state] )
951 {
952 yy_last_accepting_state = yy_current_state;
953 yy_last_accepting_cpos = yy_cp;
954 }
955 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
956 {
957 yy_current_state = yy_def[yy_current_state];
958 if ( yy_current_state >= 341 )
959 yy_c = yy_meta[yy_c];
960 }
961 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
962 ++yy_cp;
963 }
964 while ( yy_current_state != 340 );
965 yy_cp = yy_last_accepting_cpos;
966 yy_current_state = yy_last_accepting_state;
967
968yy_find_action:
969 yy_act = yy_accept[yy_current_state];
970
971 YY_DO_BEFORE_ACTION;
972 YY_USER_ACTION;
973
974do_action: /* this label is used only to access EOF actions */
975
976
977 switch ( yy_act )
978 {
979 case 0: /* must backtrack */
980 /* undo the effects of YY_DO_BEFORE_ACTION */
981 *yy_cp = yy_hold_char;
982 yy_cp = yy_last_accepting_cpos;
983 yy_current_state = yy_last_accepting_state;
984 goto yy_find_action;
985
986case 1:
987# line 91 "scan.l"
988indented_code = true; BEGIN(CODEBLOCK);
989 YY_BREAK
990case 2:
991# line 92 "scan.l"
992++linenum; /* treat as a comment */
993 YY_BREAK
994case 3:
995# line 93 "scan.l"
996ECHO; BEGIN(C_COMMENT);
997 YY_BREAK
998case 4:
999# line 94 "scan.l"
1000return ( SCDECL );
1001 YY_BREAK
1002case 5:
1003# line 95 "scan.l"
1004return ( XSCDECL );
1005 YY_BREAK
1006case 6:
1007# line 96 "scan.l"
1008{
1009 ++linenum;
1010 line_directive_out( stdout );
1011 indented_code = false;
1012 BEGIN(CODEBLOCK);
1013 }
1014 YY_BREAK
1015case 7:
1016# line 103 "scan.l"
1017return ( WHITESPACE );
1018 YY_BREAK
1019case 8:
1020# line 105 "scan.l"
1021{
1022 sectnum = 2;
1023 line_directive_out( stdout );
1024 BEGIN(SECT2PROLOG);
1025 return ( SECTEND );
1026 }
1027 YY_BREAK
1028case 9:
1029# line 112 "scan.l"
1030{
1031 pinpoint_message( "warning - %%used/%%unused have been deprecated" );
1032 checking_used = REALLY_USED; BEGIN(USED_LIST);
1033 }
1034 YY_BREAK
1035case 10:
1036# line 116 "scan.l"
1037{
1038 checking_used = REALLY_NOT_USED; BEGIN(USED_LIST);
1039 pinpoint_message( "warning - %%used/%%unused have been deprecated" );
1040 checking_used = REALLY_NOT_USED; BEGIN(USED_LIST);
1041 }
1042 YY_BREAK
1043case 11:
1044# line 123 "scan.l"
1045{
1046#ifdef NOTDEF
1047 fprintf( stderr,
1048 "old-style lex command at line %d ignored:\n\t%s",
1049 linenum, yytext );
1050#endif
1051 ++linenum;
1052 }
1053 YY_BREAK
1054case 12:
1055# line 132 "scan.l"
1056/* ignore old lex directive */
1057 YY_BREAK
1058case 13:
1059# line 134 "scan.l"
1060{
1061 ++linenum;
1062 xlation =
1063 (int *) malloc( sizeof( int ) * (unsigned) csize );
1064
1065 if ( ! xlation )
1066 flexfatal(
1067 "dynamic memory failure building %t table" );
1068
1069 for ( i = 0; i < csize; ++i )
1070 xlation[i] = 0;
1071
1072 num_xlations = 0;
1073
1074 BEGIN(XLATION);
1075 }
1076 YY_BREAK
1077case 14:
1078# line 151 "scan.l"
1079synerr( "unrecognized '%' directive" );
1080 YY_BREAK
1081case 15:
1082# line 153 "scan.l"
1083{
1084 (void) strcpy( nmstr, (char *) yytext );
1085 didadef = false;
1086 BEGIN(PICKUPDEF);
1087 }
1088 YY_BREAK
1089case 16:
1090# line 159 "scan.l"
1091RETURNNAME;
1092 YY_BREAK
1093case 17:
1094# line 160 "scan.l"
1095++linenum; /* allows blank lines in section 1 */
1096 YY_BREAK
1097case 18:
1098# line 161 "scan.l"
1099++linenum; return ( '\n' );
1100 YY_BREAK
1101case 19:
1102# line 162 "scan.l"
1103synerr( "illegal character" ); BEGIN(RECOVER);
1104 YY_BREAK
1105case 20:
1106# line 165 "scan.l"
1107ECHO; BEGIN(INITIAL);
1108 YY_BREAK
1109case 21:
1110# line 166 "scan.l"
1111++linenum; ECHO; BEGIN(INITIAL);
1112 YY_BREAK
1113case 22:
1114# line 167 "scan.l"
1115ECHO;
1116 YY_BREAK
1117case 23:
1118# line 168 "scan.l"
1119ECHO;
1120 YY_BREAK
1121case 24:
1122# line 169 "scan.l"
1123++linenum; ECHO;
1124 YY_BREAK
1125case 25:
1126# line 172 "scan.l"
1127++linenum; BEGIN(INITIAL);
1128 YY_BREAK
1129case 26:
1130# line 173 "scan.l"
1131ECHO; CHECK_REJECT(yytext);
1132 YY_BREAK
1133case 27:
1134# line 174 "scan.l"
1135ECHO; CHECK_YYMORE(yytext);
1136 YY_BREAK
1137case 28:
1138# line 175 "scan.l"
1139ECHO;
1140 YY_BREAK
1141case 29:
1142# line 176 "scan.l"
1143{
1144 ++linenum;
1145 ECHO;
1146 if ( indented_code )
1147 BEGIN(INITIAL);
1148 }
1149 YY_BREAK
1150case 30:
1151# line 184 "scan.l"
1152/* separates name and definition */
1153 YY_BREAK
1154case 31:
1155# line 186 "scan.l"
1156{
1157 (void) strcpy( (char *) nmdef, (char *) yytext );
1158
1159 for ( i = strlen( (char *) nmdef ) - 1;
1160 i >= 0 &&
1161 nmdef[i] == ' ' || nmdef[i] == '\t';
1162 --i )
1163 ;
1164
1165 nmdef[i + 1] = '\0';
1166
1167 ndinstal( nmstr, nmdef );
1168 didadef = true;
1169 }
1170 YY_BREAK
1171case 32:
1172# line 201 "scan.l"
1173{
1174 if ( ! didadef )
1175 synerr( "incomplete name definition" );
1176 BEGIN(INITIAL);
1177 ++linenum;
1178 }
1179 YY_BREAK
1180case 33:
1181# line 208 "scan.l"
1182++linenum; BEGIN(INITIAL); RETURNNAME;
1183 YY_BREAK
1184case 34:
1185# line 211 "scan.l"
1186++linenum; BEGIN(INITIAL);
1187 YY_BREAK
1188case 35:
1189# line 212 "scan.l"
1190
1191 YY_BREAK
1192case 36:
1193# line 213 "scan.l"
1194{
1195 if ( all_upper( yytext ) )
1196 reject_really_used = checking_used;
1197 else
1198 synerr( "unrecognized %used/%unused construct" );
1199 }
1200 YY_BREAK
1201case 37:
1202# line 219 "scan.l"
1203{
1204 if ( all_lower( yytext ) )
1205 yymore_really_used = checking_used;
1206 else
1207 synerr( "unrecognized %used/%unused construct" );
1208 }
1209 YY_BREAK
1210case 38:
1211# line 225 "scan.l"
1212synerr( "unrecognized %used/%unused construct" );
1213 YY_BREAK
1214case 39:
1215# line 228 "scan.l"
1216++linenum; BEGIN(INITIAL);
1217 YY_BREAK
1218case 40:
1219# line 229 "scan.l"
1220++num_xlations; new_xlation = true;
1221 YY_BREAK
1222case 41:
1223# line 230 "scan.l"
1224synerr( "bad row in translation table" );
1225 YY_BREAK
1226case 42:
1227# line 231 "scan.l"
1228/* ignore whitespace */
1229 YY_BREAK
1230case 43:
1231# line 233 "scan.l"
1232{
1233 xlation[myesc( yytext )] =
1234 (new_xlation ? num_xlations : -num_xlations);
1235 new_xlation = false;
1236 }
1237 YY_BREAK
1238case 44:
1239# line 238 "scan.l"
1240{
1241 xlation[yytext[0]] =
1242 (new_xlation ? num_xlations : -num_xlations);
1243 new_xlation = false;
1244 }
1245 YY_BREAK
1246case 45:
1247# line 244 "scan.l"
1248++linenum;
1249 YY_BREAK
1250case 46:
1251*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1252yy_c_buf_p = yy_cp -= 1;
1253YY_DO_BEFORE_ACTION; /* set up yytext again */
1254# line 247 "scan.l"
1255{
1256 ++linenum;
1257 ACTION_ECHO;
1258 MARK_END_OF_PROLOG;
1259 BEGIN(SECT2);
1260 }
1261 YY_BREAK
1262case 47:
1263# line 254 "scan.l"
1264++linenum; ACTION_ECHO;
1265 YY_BREAK
1266case YY_STATE_EOF(SECT2PROLOG):
1267# line 256 "scan.l"
1268MARK_END_OF_PROLOG; yyterminate();
1269 YY_BREAK
1270case 49:
1271# line 258 "scan.l"
1272++linenum; /* allow blank lines in section 2 */
1273 YY_BREAK
1274case 50:
1275# line 260 "scan.l"
1276{
1277 indented_code = (yytext[0] != '%');
1278 doing_codeblock = true;
1279 bracelevel = 1;
1280
1281 if ( indented_code )
1282 ACTION_ECHO;
1283
1284 BEGIN(CODEBLOCK_2);
1285 }
1286 YY_BREAK
1287case 51:
1288# line 271 "scan.l"
1289BEGIN(SC); return ( '<' );
1290 YY_BREAK
1291case 52:
1292# line 272 "scan.l"
1293return ( '^' );
1294 YY_BREAK
1295case 53:
1296# line 273 "scan.l"
1297BEGIN(QUOTE); return ( '"' );
1298 YY_BREAK
1299case 54:
1300*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1301yy_c_buf_p = yy_cp = yy_bp + 1;
1302YY_DO_BEFORE_ACTION; /* set up yytext again */
1303# line 274 "scan.l"
1304BEGIN(NUM); return ( '{' );
1305 YY_BREAK
1306case 55:
1307# line 275 "scan.l"
1308BEGIN(BRACEERROR);
1309 YY_BREAK
1310case 56:
1311*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1312yy_c_buf_p = yy_cp = yy_bp + 1;
1313YY_DO_BEFORE_ACTION; /* set up yytext again */
1314# line 276 "scan.l"
1315return ( '$' );
1316 YY_BREAK
1317case 57:
1318# line 278 "scan.l"
1319{
1320 bracelevel = 1;
1321 BEGIN(PERCENT_BRACE_ACTION);
1322 return ( '\n' );
1323 }
1324 YY_BREAK
1325case 58:
1326# line 283 "scan.l"
1327continued_action = true; ++linenum; return ( '\n' );
1328 YY_BREAK
1329case 59:
1330# line 285 "scan.l"
1331{
1332 /* this rule is separate from the one below because
1333 * otherwise we get variable trailing context, so
1334 * we can't build the scanner using -{f,F}
1335 */
1336 bracelevel = 0;
1337 continued_action = false;
1338 BEGIN(ACTION);
1339 return ( '\n' );
1340 }
1341 YY_BREAK
1342case 60:
1343*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1344yy_c_buf_p = yy_cp -= 1;
1345YY_DO_BEFORE_ACTION; /* set up yytext again */
1346# line 296 "scan.l"
1347{
1348 bracelevel = 0;
1349 continued_action = false;
1350 BEGIN(ACTION);
1351 return ( '\n' );
1352 }
1353 YY_BREAK
1354case 61:
1355# line 303 "scan.l"
1356++linenum; return ( '\n' );
1357 YY_BREAK
1358case 62:
1359# line 305 "scan.l"
1360return ( EOF_OP );
1361 YY_BREAK
1362case 63:
1363# line 307 "scan.l"
1364{
1365 sectnum = 3;
1366 BEGIN(SECT3);
1367 return ( EOF ); /* to stop the parser */
1368 }
1369 YY_BREAK
1370case 64:
1371# line 313 "scan.l"
1372{
1373 int cclval;
1374
1375 (void) strcpy( nmstr, (char *) yytext );
1376
1377 /* check to see if we've already encountered this ccl */
1378 if ( (cclval = ccllookup( (Char *) nmstr )) )
1379 {
1380 yylval = cclval;
1381 ++cclreuse;
1382 return ( PREVCCL );
1383 }
1384 else
1385 {
1386 /* we fudge a bit. We know that this ccl will
1387 * soon be numbered as lastccl + 1 by cclinit
1388 */
1389 cclinstal( (Char *) nmstr, lastccl + 1 );
1390
1391 /* push back everything but the leading bracket
1392 * so the ccl can be rescanned
1393 */
1394 PUT_BACK_STRING((Char *) nmstr, 1);
1395
1396 BEGIN(FIRSTCCL);
1397 return ( '[' );
1398 }
1399 }
1400 YY_BREAK
1401case 65:
1402# line 342 "scan.l"
1403{
1404 register Char *nmdefptr;
1405 Char *ndlookup();
1406
1407 (void) strcpy( nmstr, (char *) yytext );
1408 nmstr[yyleng - 1] = '\0'; /* chop trailing brace */
1409
1410 /* lookup from "nmstr + 1" to chop leading brace */
1411 if ( ! (nmdefptr = ndlookup( nmstr + 1 )) )
1412 synerr( "undefined {name}" );
1413
1414 else
1415 { /* push back name surrounded by ()'s */
1416 unput(')');
1417 PUT_BACK_STRING(nmdefptr, 0);
1418 unput('(');
1419 }
1420 }
1421 YY_BREAK
1422case 66:
1423# line 361 "scan.l"
1424return ( yytext[0] );
1425 YY_BREAK
1426case 67:
1427# line 362 "scan.l"
1428RETURNCHAR;
1429 YY_BREAK
1430case 68:
1431# line 363 "scan.l"
1432++linenum; return ( '\n' );
1433 YY_BREAK
1434case 69:
1435# line 366 "scan.l"
1436return ( ',' );
1437 YY_BREAK
1438case 70:
1439# line 367 "scan.l"
1440BEGIN(SECT2); return ( '>' );
1441 YY_BREAK
1442case 71:
1443*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1444yy_c_buf_p = yy_cp = yy_bp + 1;
1445YY_DO_BEFORE_ACTION; /* set up yytext again */
1446# line 368 "scan.l"
1447BEGIN(CARETISBOL); return ( '>' );
1448 YY_BREAK
1449case 72:
1450# line 369 "scan.l"
1451RETURNNAME;
1452 YY_BREAK
1453case 73:
1454# line 370 "scan.l"
1455synerr( "bad start condition name" );
1456 YY_BREAK
1457case 74:
1458# line 372 "scan.l"
1459BEGIN(SECT2); return ( '^' );
1460 YY_BREAK
1461case 75:
1462# line 375 "scan.l"
1463RETURNCHAR;
1464 YY_BREAK
1465case 76:
1466# line 376 "scan.l"
1467BEGIN(SECT2); return ( '"' );
1468 YY_BREAK
1469case 77:
1470# line 378 "scan.l"
1471{
1472 synerr( "missing quote" );
1473 BEGIN(SECT2);
1474 ++linenum;
1475 return ( '"' );
1476 }
1477 YY_BREAK
1478case 78:
1479*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1480yy_c_buf_p = yy_cp = yy_bp + 1;
1481YY_DO_BEFORE_ACTION; /* set up yytext again */
1482# line 386 "scan.l"
1483BEGIN(CCL); return ( '^' );
1484 YY_BREAK
1485case 79:
1486*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1487yy_c_buf_p = yy_cp = yy_bp + 1;
1488YY_DO_BEFORE_ACTION; /* set up yytext again */
1489# line 387 "scan.l"
1490return ( '^' );
1491 YY_BREAK
1492case 80:
1493# line 388 "scan.l"
1494BEGIN(CCL); yylval = '-'; return ( CHAR );
1495 YY_BREAK
1496case 81:
1497# line 389 "scan.l"
1498BEGIN(CCL); RETURNCHAR;
1499 YY_BREAK
1500case 82:
1501*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1502yy_c_buf_p = yy_cp = yy_bp + 1;
1503YY_DO_BEFORE_ACTION; /* set up yytext again */
1504# line 391 "scan.l"
1505return ( '-' );
1506 YY_BREAK
1507case 83:
1508# line 392 "scan.l"
1509RETURNCHAR;
1510 YY_BREAK
1511case 84:
1512# line 393 "scan.l"
1513BEGIN(SECT2); return ( ']' );
1514 YY_BREAK
1515case 85:
1516# line 396 "scan.l"
1517{
1518 yylval = myctoi( yytext );
1519 return ( NUMBER );
1520 }
1521 YY_BREAK
1522case 86:
1523# line 401 "scan.l"
1524return ( ',' );
1525 YY_BREAK
1526case 87:
1527# line 402 "scan.l"
1528BEGIN(SECT2); return ( '}' );
1529 YY_BREAK
1530case 88:
1531# line 404 "scan.l"
1532{
1533 synerr( "bad character inside {}'s" );
1534 BEGIN(SECT2);
1535 return ( '}' );
1536 }
1537 YY_BREAK
1538case 89:
1539# line 410 "scan.l"
1540{
1541 synerr( "missing }" );
1542 BEGIN(SECT2);
1543 ++linenum;
1544 return ( '}' );
1545 }
1546 YY_BREAK
1547case 90:
1548# line 418 "scan.l"
1549synerr( "bad name in {}'s" ); BEGIN(SECT2);
1550 YY_BREAK
1551case 91:
1552# line 419 "scan.l"
1553synerr( "missing }" ); ++linenum; BEGIN(SECT2);
1554 YY_BREAK
1555case 92:
1556# line 422 "scan.l"
1557bracelevel = 0;
1558 YY_BREAK
1559case 93:
1560# line 423 "scan.l"
1561{
1562 ACTION_ECHO;
1563 CHECK_REJECT(yytext);
1564 }
1565 YY_BREAK
1566case 94:
1567# line 427 "scan.l"
1568{
1569 ACTION_ECHO;
1570 CHECK_YYMORE(yytext);
1571 }
1572 YY_BREAK
1573case 95:
1574# line 431 "scan.l"
1575ACTION_ECHO;
1576 YY_BREAK
1577case 96:
1578# line 432 "scan.l"
1579{
1580 ++linenum;
1581 ACTION_ECHO;
1582 if ( bracelevel == 0 ||
1583 (doing_codeblock && indented_code) )
1584 {
1585 if ( ! doing_codeblock )
1586 fputs( "\tYY_BREAK\n", temp_action_file );
1587
1588 doing_codeblock = false;
1589 BEGIN(SECT2);
1590 }
1591 }
1592 YY_BREAK
1593 /* Reject and YYmore() are checked for above, in PERCENT_BRACE_ACTION */
1594case 97:
1595# line 448 "scan.l"
1596ACTION_ECHO; ++bracelevel;
1597 YY_BREAK
1598case 98:
1599# line 449 "scan.l"
1600ACTION_ECHO; --bracelevel;
1601 YY_BREAK
1602case 99:
1603# line 450 "scan.l"
1604ACTION_ECHO;
1605 YY_BREAK
1606case 100:
1607# line 451 "scan.l"
1608ACTION_ECHO;
1609 YY_BREAK
1610case 101:
1611# line 452 "scan.l"
1612ACTION_ECHO; BEGIN(ACTION_COMMENT);
1613 YY_BREAK
1614case 102:
1615# line 453 "scan.l"
1616ACTION_ECHO; /* character constant */
1617 YY_BREAK
1618case 103:
1619# line 454 "scan.l"
1620ACTION_ECHO; BEGIN(ACTION_STRING);
1621 YY_BREAK
1622case 104:
1623# line 455 "scan.l"
1624{
1625 ++linenum;
1626 ACTION_ECHO;
1627 if ( bracelevel == 0 )
1628 {
1629 fputs( "\tYY_BREAK\n", temp_action_file );
1630 BEGIN(SECT2);
1631 }
1632 }
1633 YY_BREAK
1634case 105:
1635# line 464 "scan.l"
1636ACTION_ECHO;
1637 YY_BREAK
1638case 106:
1639# line 466 "scan.l"
1640ACTION_ECHO; BEGIN(ACTION);
1641 YY_BREAK
1642case 107:
1643# line 467 "scan.l"
1644ACTION_ECHO;
1645 YY_BREAK
1646case 108:
1647# line 468 "scan.l"
1648ACTION_ECHO;
1649 YY_BREAK
1650case 109:
1651# line 469 "scan.l"
1652++linenum; ACTION_ECHO;
1653 YY_BREAK
1654case 110:
1655# line 470 "scan.l"
1656ACTION_ECHO;
1657 YY_BREAK
1658case 111:
1659# line 472 "scan.l"
1660ACTION_ECHO;
1661 YY_BREAK
1662case 112:
1663# line 473 "scan.l"
1664ACTION_ECHO;
1665 YY_BREAK
1666case 113:
1667# line 474 "scan.l"
1668++linenum; ACTION_ECHO;
1669 YY_BREAK
1670case 114:
1671# line 475 "scan.l"
1672ACTION_ECHO; BEGIN(ACTION);
1673 YY_BREAK
1674case 115:
1675# line 476 "scan.l"
1676ACTION_ECHO;
1677 YY_BREAK
1678case YY_STATE_EOF(ACTION):
1679case YY_STATE_EOF(ACTION_COMMENT):
1680case YY_STATE_EOF(ACTION_STRING):
1681# line 478 "scan.l"
1682{
1683 synerr( "EOF encountered inside an action" );
1684 yyterminate();
1685 }
1686 YY_BREAK
1687case 117:
1688# line 484 "scan.l"
1689{
1690 yylval = myesc( yytext );
1691 return ( CHAR );
1692 }
1693 YY_BREAK
1694case 118:
1695# line 489 "scan.l"
1696{
1697 yylval = myesc( yytext );
1698 BEGIN(CCL);
1699 return ( CHAR );
1700 }
1701 YY_BREAK
1702case 119:
1703# line 496 "scan.l"
1704ECHO;
1705 YY_BREAK
1706case 120:
1707# line 497 "scan.l"
1708YY_FATAL_ERROR( "flex scanner jammed" );
1709 YY_BREAK
1710case YY_STATE_EOF(INITIAL):
1711case YY_STATE_EOF(SECT2):
1712case YY_STATE_EOF(SECT3):
1713case YY_STATE_EOF(CODEBLOCK):
1714case YY_STATE_EOF(PICKUPDEF):
1715case YY_STATE_EOF(SC):
1716case YY_STATE_EOF(CARETISBOL):
1717case YY_STATE_EOF(NUM):
1718case YY_STATE_EOF(QUOTE):
1719case YY_STATE_EOF(FIRSTCCL):
1720case YY_STATE_EOF(CCL):
1721case YY_STATE_EOF(RECOVER):
1722case YY_STATE_EOF(BRACEERROR):
1723case YY_STATE_EOF(C_COMMENT):
1724case YY_STATE_EOF(PERCENT_BRACE_ACTION):
1725case YY_STATE_EOF(USED_LIST):
1726case YY_STATE_EOF(CODEBLOCK_2):
1727case YY_STATE_EOF(XLATION):
1728 yyterminate();
1729
1730 case YY_END_OF_BUFFER:
1731 {
1732 /* amount of text matched not including the EOB char */
1733 int yy_amount_of_matched_text = yy_cp - yytext - 1;
1734
1735 /* undo the effects of YY_DO_BEFORE_ACTION */
1736 *yy_cp = yy_hold_char;
1737
1738 /* note that here we test for yy_c_buf_p "<=" to the position
1739 * of the first EOB in the buffer, since yy_c_buf_p will
1740 * already have been incremented past the NUL character
1741 * (since all states make transitions on EOB to the end-
1742 * of-buffer state). Contrast this with the test in yyinput().
1743 */
1744 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1745 /* this was really a NUL */
1746 {
1747 yy_state_type yy_next_state;
1748
1749 yy_c_buf_p = yytext + yy_amount_of_matched_text;
1750
1751 yy_current_state = yy_get_previous_state();
1752
1753 /* okay, we're now positioned to make the
1754 * NUL transition. We couldn't have
1755 * yy_get_previous_state() go ahead and do it
1756 * for us because it doesn't know how to deal
1757 * with the possibility of jamming (and we
1758 * don't want to build jamming into it because
1759 * then it will run more slowly)
1760 */
1761
1762 yy_next_state = yy_try_NUL_trans( yy_current_state );
1763
1764 yy_bp = yytext + YY_MORE_ADJ;
1765
1766 if ( yy_next_state )
1767 {
1768 /* consume the NUL */
1769 yy_cp = ++yy_c_buf_p;
1770 yy_current_state = yy_next_state;
1771 goto yy_match;
1772 }
1773
1774 else
1775 {
1776 yy_cp = yy_last_accepting_cpos;
1777 yy_current_state = yy_last_accepting_state;
1778 goto yy_find_action;
1779 }
1780 }
1781
1782 else switch ( yy_get_next_buffer() )
1783 {
1784 case EOB_ACT_END_OF_FILE:
1785 {
1786 yy_did_buffer_switch_on_eof = 0;
1787
1788 if ( yywrap() )
1789 {
1790 /* note: because we've taken care in
1791 * yy_get_next_buffer() to have set up yytext,
1792 * we can now set up yy_c_buf_p so that if some
1793 * total hoser (like flex itself) wants
1794 * to call the scanner after we return the
1795 * YY_NULL, it'll still work - another YY_NULL
1796 * will get returned.
1797 */
1798 yy_c_buf_p = yytext + YY_MORE_ADJ;
1799
1800 yy_act = YY_STATE_EOF((yy_start - 1) / 2);
1801 goto do_action;
1802 }
1803
1804 else
1805 {
1806 if ( ! yy_did_buffer_switch_on_eof )
1807 YY_NEW_FILE;
1808 }
1809 }
1810 break;
1811
1812 case EOB_ACT_CONTINUE_SCAN:
1813 yy_c_buf_p = yytext + yy_amount_of_matched_text;
1814
1815 yy_current_state = yy_get_previous_state();
1816
1817 yy_cp = yy_c_buf_p;
1818 yy_bp = yytext + YY_MORE_ADJ;
1819 goto yy_match;
1820
1821 case EOB_ACT_LAST_MATCH:
1822 yy_c_buf_p =
1823 &yy_current_buffer->yy_ch_buf[yy_n_chars];
1824
1825 yy_current_state = yy_get_previous_state();
1826
1827 yy_cp = yy_c_buf_p;
1828 yy_bp = yytext + YY_MORE_ADJ;
1829 goto yy_find_action;
1830 }
1831 break;
1832 }
1833
1834 default:
1835#ifdef FLEX_DEBUG
1836 printf( "action # %d\n", yy_act );
1837#endif
1838 YY_FATAL_ERROR(
1839 "fatal flex scanner internal error--no action found" );
1840 }
1841 }
1842 }
1843
1844
1845/* yy_get_next_buffer - try to read in a new buffer
1846 *
1847 * synopsis
1848 * int yy_get_next_buffer();
1849 *
1850 * returns a code representing an action
1851 * EOB_ACT_LAST_MATCH -
1852 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1853 * EOB_ACT_END_OF_FILE - end of file
1854 */
1855
1856static int yy_get_next_buffer()
1857
1858 {
1859 register YY_CHAR *dest = yy_current_buffer->yy_ch_buf;
1860 register YY_CHAR *source = yytext - 1; /* copy prev. char, too */
1861 register int number_to_move, i;
1862 int ret_val;
1863
1864 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1865 YY_FATAL_ERROR(
1866 "fatal flex scanner internal error--end of buffer missed" );
1867
1868 /* try to read more data */
1869
1870 /* first move last chars to start of buffer */
1871 number_to_move = yy_c_buf_p - yytext;
1872
1873 for ( i = 0; i < number_to_move; ++i )
1874 *(dest++) = *(source++);
1875
1876 if ( yy_current_buffer->yy_eof_status != EOF_NOT_SEEN )
1877 /* don't do the read, it's not guaranteed to return an EOF,
1878 * just force an EOF
1879 */
1880 yy_n_chars = 0;
1881
1882 else
1883 {
1884 int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1;
1885
1886 if ( num_to_read > YY_READ_BUF_SIZE )
1887 num_to_read = YY_READ_BUF_SIZE;
1888
1889 else if ( num_to_read <= 0 )
1890 YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" );
1891
1892 /* read in more data */
1893 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1894 yy_n_chars, num_to_read );
1895 }
1896
1897 if ( yy_n_chars == 0 )
1898 {
1899 if ( number_to_move == 1 )
1900 {
1901 ret_val = EOB_ACT_END_OF_FILE;
1902 yy_current_buffer->yy_eof_status = EOF_DONE;
1903 }
1904
1905 else
1906 {
1907 ret_val = EOB_ACT_LAST_MATCH;
1908 yy_current_buffer->yy_eof_status = EOF_PENDING;
1909 }
1910 }
1911
1912 else
1913 ret_val = EOB_ACT_CONTINUE_SCAN;
1914
1915 yy_n_chars += number_to_move;
1916 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1917 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1918
1919 /* yytext begins at the second character in yy_ch_buf; the first
1920 * character is the one which preceded it before reading in the latest
1921 * buffer; it needs to be kept around in case it's a newline, so
1922 * yy_get_previous_state() will have with '^' rules active
1923 */
1924
1925 yytext = &yy_current_buffer->yy_ch_buf[1];
1926
1927 return ( ret_val );
1928 }
1929
1930
1931/* yy_get_previous_state - get the state just before the EOB char was reached
1932 *
1933 * synopsis
1934 * yy_state_type yy_get_previous_state();
1935 */
1936
1937static yy_state_type yy_get_previous_state()
1938
1939 {
1940 register yy_state_type yy_current_state;
1941 register YY_CHAR *yy_cp;
1942
1943 register YY_CHAR *yy_bp = yytext;
1944
1945 yy_current_state = yy_start;
1946 if ( yy_bp[-1] == '\n' )
1947 ++yy_current_state;
1948
1949 for ( yy_cp = yytext + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1950 {
1951 register YY_CHAR yy_c = (*yy_cp ? yy_ec[*yy_cp] : 1);
1952 if ( yy_accept[yy_current_state] )
1953 {
1954 yy_last_accepting_state = yy_current_state;
1955 yy_last_accepting_cpos = yy_cp;
1956 }
1957 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1958 {
1959 yy_current_state = yy_def[yy_current_state];
1960 if ( yy_current_state >= 341 )
1961 yy_c = yy_meta[yy_c];
1962 }
1963 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1964 }
1965
1966 return ( yy_current_state );
1967 }
1968
1969
1970/* yy_try_NUL_trans - try to make a transition on the NUL character
1971 *
1972 * synopsis
1973 * next_state = yy_try_NUL_trans( current_state );
1974 */
1975
1976#ifdef YY_USE_PROTOS
1977static yy_state_type yy_try_NUL_trans( register yy_state_type yy_current_state )
1978#else
1979static yy_state_type yy_try_NUL_trans( yy_current_state )
1980register yy_state_type yy_current_state;
1981#endif
1982
1983 {
1984 register int yy_is_jam;
1985 register YY_CHAR *yy_cp = yy_c_buf_p;
1986
1987 register YY_CHAR yy_c = 1;
1988 if ( yy_accept[yy_current_state] )
1989 {
1990 yy_last_accepting_state = yy_current_state;
1991 yy_last_accepting_cpos = yy_cp;
1992 }
1993 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1994 {
1995 yy_current_state = yy_def[yy_current_state];
1996 if ( yy_current_state >= 341 )
1997 yy_c = yy_meta[yy_c];
1998 }
1999 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
2000 yy_is_jam = (yy_current_state == 340);
2001
2002 return ( yy_is_jam ? 0 : yy_current_state );
2003 }
2004
2005
2006#ifdef YY_USE_PROTOS
2007static void yyunput( YY_CHAR c, register YY_CHAR *yy_bp )
2008#else
2009static void yyunput( c, yy_bp )
2010YY_CHAR c;
2011register YY_CHAR *yy_bp;
2012#endif
2013
2014 {
2015 register YY_CHAR *yy_cp = yy_c_buf_p;
2016
2017 /* undo effects of setting up yytext */
2018 *yy_cp = yy_hold_char;
2019
2020 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2021 { /* need to shift things up to make room */
2022 register int number_to_move = yy_n_chars + 2; /* +2 for EOB chars */
2023 register YY_CHAR *dest =
2024 &yy_current_buffer->yy_ch_buf[yy_current_buffer->yy_buf_size + 2];
2025 register YY_CHAR *source =
2026 &yy_current_buffer->yy_ch_buf[number_to_move];
2027
2028 while ( source > yy_current_buffer->yy_ch_buf )
2029 *--dest = *--source;
2030
2031 yy_cp += dest - source;
2032 yy_bp += dest - source;
2033 yy_n_chars = yy_current_buffer->yy_buf_size;
2034
2035 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2036 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2037 }
2038
2039 if ( yy_cp > yy_bp && yy_cp[-1] == '\n' )
2040 yy_cp[-2] = '\n';
2041
2042 *--yy_cp = c;
2043
2044 /* note: the formal parameter *must* be called "yy_bp" for this
2045 * macro to now work correctly
2046 */
2047 YY_DO_BEFORE_ACTION; /* set up yytext again */
2048 }
2049
2050
2051#ifdef __cplusplus
2052static int yyinput()
2053#else
2054static int input()
2055#endif
2056
2057 {
2058 int c;
2059 YY_CHAR *yy_cp = yy_c_buf_p;
2060
2061 *yy_cp = yy_hold_char;
2062
2063 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2064 {
2065 /* yy_c_buf_p now points to the character we want to return.
2066 * If this occurs *before* the EOB characters, then it's a
2067 * valid NUL; if not, then we've hit the end of the buffer.
2068 */
2069 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2070 /* this was really a NUL */
2071 *yy_c_buf_p = '\0';
2072
2073 else
2074 { /* need more input */
2075 yytext = yy_c_buf_p;
2076 ++yy_c_buf_p;
2077
2078 switch ( yy_get_next_buffer() )
2079 {
2080 case EOB_ACT_END_OF_FILE:
2081 {
2082 if ( yywrap() )
2083 {
2084 yy_c_buf_p = yytext + YY_MORE_ADJ;
2085 return ( EOF );
2086 }
2087
2088 YY_NEW_FILE;
2089
2090#ifdef __cplusplus
2091 return ( yyinput() );
2092#else
2093 return ( input() );
2094#endif
2095 }
2096 break;
2097
2098 case EOB_ACT_CONTINUE_SCAN:
2099 yy_c_buf_p = yytext + YY_MORE_ADJ;
2100 break;
2101
2102 case EOB_ACT_LAST_MATCH:
2103#ifdef __cplusplus
2104 YY_FATAL_ERROR( "unexpected last match in yyinput()" );
2105#else
2106 YY_FATAL_ERROR( "unexpected last match in input()" );
2107#endif
2108 }
2109 }
2110 }
2111
2112 c = *yy_c_buf_p;
2113 yy_hold_char = *++yy_c_buf_p;
2114
2115 return ( c );
2116 }
2117
2118
2119#ifdef YY_USE_PROTOS
2120void yyrestart( FILE *input_file )
2121#else
2122void yyrestart( input_file )
2123FILE *input_file;
2124#endif
2125
2126 {
2127 yy_init_buffer( yy_current_buffer, input_file );
2128 yy_load_buffer_state();
2129 }
2130
2131
2132#ifdef YY_USE_PROTOS
2133void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2134#else
2135void yy_switch_to_buffer( new_buffer )
2136YY_BUFFER_STATE new_buffer;
2137#endif
2138
2139 {
2140 if ( yy_current_buffer == new_buffer )
2141 return;
2142
2143 if ( yy_current_buffer )
2144 {
2145 /* flush out information for old buffer */
2146 *yy_c_buf_p = yy_hold_char;
2147 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2148 yy_current_buffer->yy_n_chars = yy_n_chars;
2149 }
2150
2151 yy_current_buffer = new_buffer;
2152 yy_load_buffer_state();
2153
2154 /* we don't actually know whether we did this switch during
2155 * EOF (yywrap()) processing, but the only time this flag
2156 * is looked at is after yywrap() is called, so it's safe
2157 * to go ahead and always set it.
2158 */
2159 yy_did_buffer_switch_on_eof = 1;
2160 }
2161
2162
2163#ifdef YY_USE_PROTOS
2164void yy_load_buffer_state( void )
2165#else
2166void yy_load_buffer_state()
2167#endif
2168
2169 {
2170 yy_n_chars = yy_current_buffer->yy_n_chars;
2171 yytext = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2172 yyin = yy_current_buffer->yy_input_file;
2173 yy_hold_char = *yy_c_buf_p;
2174 }
2175
2176
2177#ifdef YY_USE_PROTOS
2178YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2179#else
2180YY_BUFFER_STATE yy_create_buffer( file, size )
2181FILE *file;
2182int size;
2183#endif
2184
2185 {
2186 YY_BUFFER_STATE b;
2187
2188 b = (YY_BUFFER_STATE) malloc( sizeof( struct yy_buffer_state ) );
2189
2190 if ( ! b )
2191 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2192
2193 b->yy_buf_size = size;
2194
2195 /* yy_ch_buf has to be 2 characters longer than the size given because
2196 * we need to put in 2 end-of-buffer characters.
2197 */
2198 b->yy_ch_buf = (YY_CHAR *) malloc( (unsigned) (b->yy_buf_size + 2) );
2199
2200 if ( ! b->yy_ch_buf )
2201 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2202
2203 yy_init_buffer( b, file );
2204
2205 return ( b );
2206 }
2207
2208
2209#ifdef YY_USE_PROTOS
2210void yy_delete_buffer( YY_BUFFER_STATE b )
2211#else
2212void yy_delete_buffer( b )
2213YY_BUFFER_STATE b;
2214#endif
2215
2216 {
2217 if ( b == yy_current_buffer )
2218 yy_current_buffer = (YY_BUFFER_STATE) 0;
2219
2220 free( (char *) b->yy_ch_buf );
2221 free( (char *) b );
2222 }
2223
2224
2225#ifdef YY_USE_PROTOS
2226void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2227#else
2228void yy_init_buffer( b, file )
2229YY_BUFFER_STATE b;
2230FILE *file;
2231#endif
2232
2233 {
2234 b->yy_input_file = file;
2235
2236 /* we put in the '\n' and start reading from [1] so that an
2237 * initial match-at-newline will be true.
2238 */
2239
2240 b->yy_ch_buf[0] = '\n';
2241 b->yy_n_chars = 1;
2242
2243 /* we always need two end-of-buffer characters. The first causes
2244 * a transition to the end-of-buffer state. The second causes
2245 * a jam in that state.
2246 */
2247 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2248 b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR;
2249
2250 b->yy_buf_pos = &b->yy_ch_buf[1];
2251
2252 b->yy_eof_status = EOF_NOT_SEEN;
2253 }
2254# line 497 "scan.l"
2255
2256
2257
2258int yywrap()
2259
2260 {
2261 if ( --num_input_files > 0 )
2262 {
2263 set_input_file( *++input_files );
2264 return ( 0 );
2265 }
2266
2267 else
2268 return ( 1 );
2269 }
2270
2271
2272/* set_input_file - open the given file (if NULL, stdin) for scanning */
2273
2274void set_input_file( file )
2275char *file;
2276
2277 {
2278 if ( file )
2279 {
2280 infilename = file;
2281 yyin = fopen( infilename, "r" );
2282
2283 if ( yyin == NULL )
2284 lerrsf( "can't open %s", file );
2285 }
2286
2287 else
2288 {
2289 yyin = stdin;
2290 infilename = "<stdin>";
2291 }
2292 }