|
|
1.1 root 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
16: void *malloc( unsigned );
17: void 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 */
65: char *malloc();
66: int free();
67: int 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:
161: typedef 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.
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
197: static char copyright[] =
198: "@(#) Copyright (c) 1989 The Regents of the University of California.\n";
199: static char CR_continuation[] = "@(#) All rights reserved.\n";
200:
201: static 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:
282: struct 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:
304: static 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 */
314: static YY_CHAR yy_hold_char;
315:
316: static 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:
328: extern YY_CHAR *yytext;
329: extern int yyleng;
330: extern FILE *yyin, *yyout;
331:
332: YY_CHAR *yytext;
333: int yyleng;
334:
335: FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
336:
337: #define YY_END_OF_BUFFER 121
338: typedef int yy_state_type;
339: static 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:
380: static 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:
412: static 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:
421: static 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:
470: static 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:
519: static 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:
686: static 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:
853: static yy_state_type yy_last_accepting_state;
854: static 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 */
867: static YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0;
868: static int yy_init = 1; /* whether we need to initialize */
869: static 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: */
874: static int yy_did_buffer_switch_on_eof;
875:
876: static yy_state_type yy_get_previous_state YY_PROTO(( void ));
877: static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
878: static int yy_get_next_buffer YY_PROTO(( void ));
879: static void yyunput YY_PROTO(( YY_CHAR c, YY_CHAR *buf_ptr ));
880: void yyrestart YY_PROTO(( FILE *input_file ));
881: void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
882: void yy_load_buffer_state YY_PROTO(( void ));
883: YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
884: void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
885: void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
886:
887: #define yy_new_buffer yy_create_buffer
888:
889: #ifdef __cplusplus
890: static int yyinput YY_PROTO(( void ));
891: #else
892: static int input YY_PROTO(( void ));
893: #endif
894:
895: YY_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;
946: yy_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:
968: yy_find_action:
969: yy_act = yy_accept[yy_current_state];
970:
971: YY_DO_BEFORE_ACTION;
972: YY_USER_ACTION;
973:
974: do_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:
986: case 1:
987: # line 91 "scan.l"
988: indented_code = true; BEGIN(CODEBLOCK);
989: YY_BREAK
990: case 2:
991: # line 92 "scan.l"
992: ++linenum; /* treat as a comment */
993: YY_BREAK
994: case 3:
995: # line 93 "scan.l"
996: ECHO; BEGIN(C_COMMENT);
997: YY_BREAK
998: case 4:
999: # line 94 "scan.l"
1000: return ( SCDECL );
1001: YY_BREAK
1002: case 5:
1003: # line 95 "scan.l"
1004: return ( XSCDECL );
1005: YY_BREAK
1006: case 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
1015: case 7:
1016: # line 103 "scan.l"
1017: return ( WHITESPACE );
1018: YY_BREAK
1019: case 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
1028: case 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
1035: case 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
1043: case 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
1054: case 12:
1055: # line 132 "scan.l"
1056: /* ignore old lex directive */
1057: YY_BREAK
1058: case 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
1077: case 14:
1078: # line 151 "scan.l"
1079: synerr( "unrecognized '%' directive" );
1080: YY_BREAK
1081: case 15:
1082: # line 153 "scan.l"
1083: {
1084: (void) strcpy( nmstr, (char *) yytext );
1085: didadef = false;
1086: BEGIN(PICKUPDEF);
1087: }
1088: YY_BREAK
1089: case 16:
1090: # line 159 "scan.l"
1091: RETURNNAME;
1092: YY_BREAK
1093: case 17:
1094: # line 160 "scan.l"
1095: ++linenum; /* allows blank lines in section 1 */
1096: YY_BREAK
1097: case 18:
1098: # line 161 "scan.l"
1099: ++linenum; return ( '\n' );
1100: YY_BREAK
1101: case 19:
1102: # line 162 "scan.l"
1103: synerr( "illegal character" ); BEGIN(RECOVER);
1104: YY_BREAK
1105: case 20:
1106: # line 165 "scan.l"
1107: ECHO; BEGIN(INITIAL);
1108: YY_BREAK
1109: case 21:
1110: # line 166 "scan.l"
1111: ++linenum; ECHO; BEGIN(INITIAL);
1112: YY_BREAK
1113: case 22:
1114: # line 167 "scan.l"
1115: ECHO;
1116: YY_BREAK
1117: case 23:
1118: # line 168 "scan.l"
1119: ECHO;
1120: YY_BREAK
1121: case 24:
1122: # line 169 "scan.l"
1123: ++linenum; ECHO;
1124: YY_BREAK
1125: case 25:
1126: # line 172 "scan.l"
1127: ++linenum; BEGIN(INITIAL);
1128: YY_BREAK
1129: case 26:
1130: # line 173 "scan.l"
1131: ECHO; CHECK_REJECT(yytext);
1132: YY_BREAK
1133: case 27:
1134: # line 174 "scan.l"
1135: ECHO; CHECK_YYMORE(yytext);
1136: YY_BREAK
1137: case 28:
1138: # line 175 "scan.l"
1139: ECHO;
1140: YY_BREAK
1141: case 29:
1142: # line 176 "scan.l"
1143: {
1144: ++linenum;
1145: ECHO;
1146: if ( indented_code )
1147: BEGIN(INITIAL);
1148: }
1149: YY_BREAK
1150: case 30:
1151: # line 184 "scan.l"
1152: /* separates name and definition */
1153: YY_BREAK
1154: case 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
1171: case 32:
1172: # line 201 "scan.l"
1173: {
1174: if ( ! didadef )
1175: synerr( "incomplete name definition" );
1176: BEGIN(INITIAL);
1177: ++linenum;
1178: }
1179: YY_BREAK
1180: case 33:
1181: # line 208 "scan.l"
1182: ++linenum; BEGIN(INITIAL); RETURNNAME;
1183: YY_BREAK
1184: case 34:
1185: # line 211 "scan.l"
1186: ++linenum; BEGIN(INITIAL);
1187: YY_BREAK
1188: case 35:
1189: # line 212 "scan.l"
1190:
1191: YY_BREAK
1192: case 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
1201: case 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
1210: case 38:
1211: # line 225 "scan.l"
1212: synerr( "unrecognized %used/%unused construct" );
1213: YY_BREAK
1214: case 39:
1215: # line 228 "scan.l"
1216: ++linenum; BEGIN(INITIAL);
1217: YY_BREAK
1218: case 40:
1219: # line 229 "scan.l"
1220: ++num_xlations; new_xlation = true;
1221: YY_BREAK
1222: case 41:
1223: # line 230 "scan.l"
1224: synerr( "bad row in translation table" );
1225: YY_BREAK
1226: case 42:
1227: # line 231 "scan.l"
1228: /* ignore whitespace */
1229: YY_BREAK
1230: case 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
1238: case 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
1246: case 45:
1247: # line 244 "scan.l"
1248: ++linenum;
1249: YY_BREAK
1250: case 46:
1251: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1252: yy_c_buf_p = yy_cp -= 1;
1253: YY_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
1262: case 47:
1263: # line 254 "scan.l"
1264: ++linenum; ACTION_ECHO;
1265: YY_BREAK
1266: case YY_STATE_EOF(SECT2PROLOG):
1267: # line 256 "scan.l"
1268: MARK_END_OF_PROLOG; yyterminate();
1269: YY_BREAK
1270: case 49:
1271: # line 258 "scan.l"
1272: ++linenum; /* allow blank lines in section 2 */
1273: YY_BREAK
1274: case 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
1287: case 51:
1288: # line 271 "scan.l"
1289: BEGIN(SC); return ( '<' );
1290: YY_BREAK
1291: case 52:
1292: # line 272 "scan.l"
1293: return ( '^' );
1294: YY_BREAK
1295: case 53:
1296: # line 273 "scan.l"
1297: BEGIN(QUOTE); return ( '"' );
1298: YY_BREAK
1299: case 54:
1300: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1301: yy_c_buf_p = yy_cp = yy_bp + 1;
1302: YY_DO_BEFORE_ACTION; /* set up yytext again */
1303: # line 274 "scan.l"
1304: BEGIN(NUM); return ( '{' );
1305: YY_BREAK
1306: case 55:
1307: # line 275 "scan.l"
1308: BEGIN(BRACEERROR);
1309: YY_BREAK
1310: case 56:
1311: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1312: yy_c_buf_p = yy_cp = yy_bp + 1;
1313: YY_DO_BEFORE_ACTION; /* set up yytext again */
1314: # line 276 "scan.l"
1315: return ( '$' );
1316: YY_BREAK
1317: case 57:
1318: # line 278 "scan.l"
1319: {
1320: bracelevel = 1;
1321: BEGIN(PERCENT_BRACE_ACTION);
1322: return ( '\n' );
1323: }
1324: YY_BREAK
1325: case 58:
1326: # line 283 "scan.l"
1327: continued_action = true; ++linenum; return ( '\n' );
1328: YY_BREAK
1329: case 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
1342: case 60:
1343: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1344: yy_c_buf_p = yy_cp -= 1;
1345: YY_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
1354: case 61:
1355: # line 303 "scan.l"
1356: ++linenum; return ( '\n' );
1357: YY_BREAK
1358: case 62:
1359: # line 305 "scan.l"
1360: return ( EOF_OP );
1361: YY_BREAK
1362: case 63:
1363: # line 307 "scan.l"
1364: {
1365: sectnum = 3;
1366: BEGIN(SECT3);
1367: return ( EOF ); /* to stop the parser */
1368: }
1369: YY_BREAK
1370: case 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
1401: case 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
1422: case 66:
1423: # line 361 "scan.l"
1424: return ( yytext[0] );
1425: YY_BREAK
1426: case 67:
1427: # line 362 "scan.l"
1428: RETURNCHAR;
1429: YY_BREAK
1430: case 68:
1431: # line 363 "scan.l"
1432: ++linenum; return ( '\n' );
1433: YY_BREAK
1434: case 69:
1435: # line 366 "scan.l"
1436: return ( ',' );
1437: YY_BREAK
1438: case 70:
1439: # line 367 "scan.l"
1440: BEGIN(SECT2); return ( '>' );
1441: YY_BREAK
1442: case 71:
1443: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1444: yy_c_buf_p = yy_cp = yy_bp + 1;
1445: YY_DO_BEFORE_ACTION; /* set up yytext again */
1446: # line 368 "scan.l"
1447: BEGIN(CARETISBOL); return ( '>' );
1448: YY_BREAK
1449: case 72:
1450: # line 369 "scan.l"
1451: RETURNNAME;
1452: YY_BREAK
1453: case 73:
1454: # line 370 "scan.l"
1455: synerr( "bad start condition name" );
1456: YY_BREAK
1457: case 74:
1458: # line 372 "scan.l"
1459: BEGIN(SECT2); return ( '^' );
1460: YY_BREAK
1461: case 75:
1462: # line 375 "scan.l"
1463: RETURNCHAR;
1464: YY_BREAK
1465: case 76:
1466: # line 376 "scan.l"
1467: BEGIN(SECT2); return ( '"' );
1468: YY_BREAK
1469: case 77:
1470: # line 378 "scan.l"
1471: {
1472: synerr( "missing quote" );
1473: BEGIN(SECT2);
1474: ++linenum;
1475: return ( '"' );
1476: }
1477: YY_BREAK
1478: case 78:
1479: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1480: yy_c_buf_p = yy_cp = yy_bp + 1;
1481: YY_DO_BEFORE_ACTION; /* set up yytext again */
1482: # line 386 "scan.l"
1483: BEGIN(CCL); return ( '^' );
1484: YY_BREAK
1485: case 79:
1486: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1487: yy_c_buf_p = yy_cp = yy_bp + 1;
1488: YY_DO_BEFORE_ACTION; /* set up yytext again */
1489: # line 387 "scan.l"
1490: return ( '^' );
1491: YY_BREAK
1492: case 80:
1493: # line 388 "scan.l"
1494: BEGIN(CCL); yylval = '-'; return ( CHAR );
1495: YY_BREAK
1496: case 81:
1497: # line 389 "scan.l"
1498: BEGIN(CCL); RETURNCHAR;
1499: YY_BREAK
1500: case 82:
1501: *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1502: yy_c_buf_p = yy_cp = yy_bp + 1;
1503: YY_DO_BEFORE_ACTION; /* set up yytext again */
1504: # line 391 "scan.l"
1505: return ( '-' );
1506: YY_BREAK
1507: case 83:
1508: # line 392 "scan.l"
1509: RETURNCHAR;
1510: YY_BREAK
1511: case 84:
1512: # line 393 "scan.l"
1513: BEGIN(SECT2); return ( ']' );
1514: YY_BREAK
1515: case 85:
1516: # line 396 "scan.l"
1517: {
1518: yylval = myctoi( yytext );
1519: return ( NUMBER );
1520: }
1521: YY_BREAK
1522: case 86:
1523: # line 401 "scan.l"
1524: return ( ',' );
1525: YY_BREAK
1526: case 87:
1527: # line 402 "scan.l"
1528: BEGIN(SECT2); return ( '}' );
1529: YY_BREAK
1530: case 88:
1531: # line 404 "scan.l"
1532: {
1533: synerr( "bad character inside {}'s" );
1534: BEGIN(SECT2);
1535: return ( '}' );
1536: }
1537: YY_BREAK
1538: case 89:
1539: # line 410 "scan.l"
1540: {
1541: synerr( "missing }" );
1542: BEGIN(SECT2);
1543: ++linenum;
1544: return ( '}' );
1545: }
1546: YY_BREAK
1547: case 90:
1548: # line 418 "scan.l"
1549: synerr( "bad name in {}'s" ); BEGIN(SECT2);
1550: YY_BREAK
1551: case 91:
1552: # line 419 "scan.l"
1553: synerr( "missing }" ); ++linenum; BEGIN(SECT2);
1554: YY_BREAK
1555: case 92:
1556: # line 422 "scan.l"
1557: bracelevel = 0;
1558: YY_BREAK
1559: case 93:
1560: # line 423 "scan.l"
1561: {
1562: ACTION_ECHO;
1563: CHECK_REJECT(yytext);
1564: }
1565: YY_BREAK
1566: case 94:
1567: # line 427 "scan.l"
1568: {
1569: ACTION_ECHO;
1570: CHECK_YYMORE(yytext);
1571: }
1572: YY_BREAK
1573: case 95:
1574: # line 431 "scan.l"
1575: ACTION_ECHO;
1576: YY_BREAK
1577: case 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 */
1594: case 97:
1595: # line 448 "scan.l"
1596: ACTION_ECHO; ++bracelevel;
1597: YY_BREAK
1598: case 98:
1599: # line 449 "scan.l"
1600: ACTION_ECHO; --bracelevel;
1601: YY_BREAK
1602: case 99:
1603: # line 450 "scan.l"
1604: ACTION_ECHO;
1605: YY_BREAK
1606: case 100:
1607: # line 451 "scan.l"
1608: ACTION_ECHO;
1609: YY_BREAK
1610: case 101:
1611: # line 452 "scan.l"
1612: ACTION_ECHO; BEGIN(ACTION_COMMENT);
1613: YY_BREAK
1614: case 102:
1615: # line 453 "scan.l"
1616: ACTION_ECHO; /* character constant */
1617: YY_BREAK
1618: case 103:
1619: # line 454 "scan.l"
1620: ACTION_ECHO; BEGIN(ACTION_STRING);
1621: YY_BREAK
1622: case 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
1634: case 105:
1635: # line 464 "scan.l"
1636: ACTION_ECHO;
1637: YY_BREAK
1638: case 106:
1639: # line 466 "scan.l"
1640: ACTION_ECHO; BEGIN(ACTION);
1641: YY_BREAK
1642: case 107:
1643: # line 467 "scan.l"
1644: ACTION_ECHO;
1645: YY_BREAK
1646: case 108:
1647: # line 468 "scan.l"
1648: ACTION_ECHO;
1649: YY_BREAK
1650: case 109:
1651: # line 469 "scan.l"
1652: ++linenum; ACTION_ECHO;
1653: YY_BREAK
1654: case 110:
1655: # line 470 "scan.l"
1656: ACTION_ECHO;
1657: YY_BREAK
1658: case 111:
1659: # line 472 "scan.l"
1660: ACTION_ECHO;
1661: YY_BREAK
1662: case 112:
1663: # line 473 "scan.l"
1664: ACTION_ECHO;
1665: YY_BREAK
1666: case 113:
1667: # line 474 "scan.l"
1668: ++linenum; ACTION_ECHO;
1669: YY_BREAK
1670: case 114:
1671: # line 475 "scan.l"
1672: ACTION_ECHO; BEGIN(ACTION);
1673: YY_BREAK
1674: case 115:
1675: # line 476 "scan.l"
1676: ACTION_ECHO;
1677: YY_BREAK
1678: case YY_STATE_EOF(ACTION):
1679: case YY_STATE_EOF(ACTION_COMMENT):
1680: case YY_STATE_EOF(ACTION_STRING):
1681: # line 478 "scan.l"
1682: {
1683: synerr( "EOF encountered inside an action" );
1684: yyterminate();
1685: }
1686: YY_BREAK
1687: case 117:
1688: # line 484 "scan.l"
1689: {
1690: yylval = myesc( yytext );
1691: return ( CHAR );
1692: }
1693: YY_BREAK
1694: case 118:
1695: # line 489 "scan.l"
1696: {
1697: yylval = myesc( yytext );
1698: BEGIN(CCL);
1699: return ( CHAR );
1700: }
1701: YY_BREAK
1702: case 119:
1703: # line 496 "scan.l"
1704: ECHO;
1705: YY_BREAK
1706: case 120:
1707: # line 497 "scan.l"
1708: YY_FATAL_ERROR( "flex scanner jammed" );
1709: YY_BREAK
1710: case YY_STATE_EOF(INITIAL):
1711: case YY_STATE_EOF(SECT2):
1712: case YY_STATE_EOF(SECT3):
1713: case YY_STATE_EOF(CODEBLOCK):
1714: case YY_STATE_EOF(PICKUPDEF):
1715: case YY_STATE_EOF(SC):
1716: case YY_STATE_EOF(CARETISBOL):
1717: case YY_STATE_EOF(NUM):
1718: case YY_STATE_EOF(QUOTE):
1719: case YY_STATE_EOF(FIRSTCCL):
1720: case YY_STATE_EOF(CCL):
1721: case YY_STATE_EOF(RECOVER):
1722: case YY_STATE_EOF(BRACEERROR):
1723: case YY_STATE_EOF(C_COMMENT):
1724: case YY_STATE_EOF(PERCENT_BRACE_ACTION):
1725: case YY_STATE_EOF(USED_LIST):
1726: case YY_STATE_EOF(CODEBLOCK_2):
1727: case 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:
1856: static 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:
1937: static 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
1977: static yy_state_type yy_try_NUL_trans( register yy_state_type yy_current_state )
1978: #else
1979: static yy_state_type yy_try_NUL_trans( yy_current_state )
1980: register 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
2007: static void yyunput( YY_CHAR c, register YY_CHAR *yy_bp )
2008: #else
2009: static void yyunput( c, yy_bp )
2010: YY_CHAR c;
2011: register 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
2052: static int yyinput()
2053: #else
2054: static 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
2120: void yyrestart( FILE *input_file )
2121: #else
2122: void yyrestart( input_file )
2123: FILE *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
2133: void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2134: #else
2135: void yy_switch_to_buffer( new_buffer )
2136: YY_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
2164: void yy_load_buffer_state( void )
2165: #else
2166: void 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
2178: YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2179: #else
2180: YY_BUFFER_STATE yy_create_buffer( file, size )
2181: FILE *file;
2182: int 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
2210: void yy_delete_buffer( YY_BUFFER_STATE b )
2211: #else
2212: void yy_delete_buffer( b )
2213: YY_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
2226: void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2227: #else
2228: void yy_init_buffer( b, file )
2229: YY_BUFFER_STATE b;
2230: FILE *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:
2258: int 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:
2274: void set_input_file( file )
2275: char *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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.