1 /* c2ps - C/C++ to Postscript Converter
2 Copyright (C) 1995-1997 Dmitri Shtilman, Dmitri Makarov
3
4 c2ps is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 c2ps is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with c2ps; see the file COPYING. If not, write to
16 the Free Software Foundation, 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA.
18
19 Send your comments, questions and bug reports to c2ps@geocities.com
20 */
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 #define FLEX_SCANNER
49 #define YY_FLEX_MAJOR_VERSION 2
50 #define YY_FLEX_MINOR_VERSION 5
51
52 #include <stdio.h>
53
54
55 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
56 #ifdef c_plusplus
57 #ifndef __cplusplus
58 #define __cplusplus
59 #endif
60 #endif
61
62
63 #ifdef __cplusplus
64
65 #include <stdlib.h>
66 #include <unistd.h>
67
68 /* Use prototypes in function declarations. */
69 #define YY_USE_PROTOS
70
71 /* The "const" storage-class-modifier is valid. */
72 #define YY_USE_CONST
73
74 #else /* ! __cplusplus */
75
76 #if __STDC__
77
78 #define YY_USE_PROTOS
79 #define YY_USE_CONST
80
81 #endif /* __STDC__ */
82 #endif /* ! __cplusplus */
83
84 #ifdef __TURBOC__
85 #pragma warn -rch
86 #pragma warn -use
87 #include <io.h>
88 #include <stdlib.h>
89 #define YY_USE_CONST
90 #define YY_USE_PROTOS
91 #endif
92
93 #ifdef YY_USE_CONST
94 #define yyconst const
95 #else
96 #define yyconst
97 #endif
98
99
100 #ifdef YY_USE_PROTOS
101 #define YY_PROTO(proto) proto
102 #else
103 #define YY_PROTO(proto) ()
104 #endif
105
106 /* Returned upon end-of-file. */
107 #define YY_NULL 0
108
109 /* Promotes a possibly negative, possibly signed char to an unsigned
110 * integer for use as an array index. If the signed char is negative,
111 * we want to instead treat it as an 8-bit unsigned char, hence the
112 * double cast.
113 */
114 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
115
116 /* Enter a start condition. This macro really ought to take a parameter,
117 * but we do it the disgusting crufty way forced on us by the ()-less
118 * definition of BEGIN.
119 */
120 #define BEGIN yy_start = 1 + 2 *
121
122 /* Translate the current start state into a value that can be later handed
123 * to BEGIN to return to the state. The YYSTATE alias is for lex
124 * compatibility.
125 */
126 #define YY_START ((yy_start - 1) / 2)
127 #define YYSTATE YY_START
128
129 /* Action number for EOF rule of a given start state. */
130 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
131
132 /* Special action meaning "start processing a new file". */
133 #define YY_NEW_FILE yyrestart( yyin )
134
135 #define YY_END_OF_BUFFER_CHAR 0
136
137 /* Size of default input buffer. */
138 #define YY_BUF_SIZE 16384
139
140 typedef struct yy_buffer_state *YY_BUFFER_STATE;
141
142 extern int yyleng;
143 extern FILE *yyin, *yyout;
144
145 #define EOB_ACT_CONTINUE_SCAN 0
146 #define EOB_ACT_END_OF_FILE 1
147 #define EOB_ACT_LAST_MATCH 2
148
149 /* The funky do-while in the following #define is used to turn the definition
150 * int a single C statement (which needs a semi-colon terminator). This
151 * avoids problems with code like:
152 *
153 * if ( condition_holds )
154 * yyless( 5 );
155 * else
156 * do_something_else();
157 *
158 * Prior to using the do-while the compiler would get upset at the
159 * "else" because it interpreted the "if" statement as being all
160 * done when it reached the ';' after the yyless() call.
161 */
162
163 /* Return all but the first 'n' matched characters back to the input stream. */
164
165 #define yyless(n) \
166 do \
167 { \
168 /* Undo effects of setting up yytext. */ \
169 *yy_cp = yy_hold_char; \
170 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
171 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
172 } \
173 while ( 0 )
174
175 #define unput(c) yyunput( c, yytext_ptr )
176
177 /* The following is because we cannot portably get our hands on size_t
178 * (without autoconf's help, which isn't available because we want
179 * flex-generated scanners to compile on their own).
180 */
181 typedef unsigned int yy_size_t;
182
183
184 struct yy_buffer_state
185 {
186 FILE *yy_input_file;
187
188 char *yy_ch_buf; /* input buffer */
189 char *yy_buf_pos; /* current position in input buffer */
190
191 /* Size of input buffer in bytes, not including room for EOB
192 * characters.
193 */
194 yy_size_t yy_buf_size;
195
196 /* Number of characters read into yy_ch_buf, not including EOB
197 * characters.
198 */
199 int yy_n_chars;
200
201 /* Whether we "own" the buffer - i.e., we know we created it,
202 * and can realloc() it to grow it, and should free() it to
203 * delete it.
204 */
205 int yy_is_our_buffer;
206
207 /* Whether this is an "interactive" input source; if so, and
208 * if we're using stdio for input, then we want to use getc()
209 * instead of fread(), to make sure we stop fetching input after
210 * each newline.
211 */
212 int yy_is_interactive;
213
214 /* Whether we're considered to be at the beginning of a line.
215 * If so, '^' rules will be active on the next match, otherwise
216 * not.
217 */
218 int yy_at_bol;
219
220 /* Whether to try to fill the input buffer when we reach the
221 * end of it.
222 */
223 int yy_fill_buffer;
224
225 int yy_buffer_status;
226 #define YY_BUFFER_NEW 0
227 #define YY_BUFFER_NORMAL 1
228 /* When an EOF's been seen but there's still some text to process
229 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
230 * shouldn't try reading from the input source any more. We might
231 * still have a bunch of tokens to match, though, because of
232 * possible backing-up.
233 *
234 * When we actually see the EOF, we change the status to "new"
235 * (via yyrestart()), so that the user can continue scanning by
236 * just pointing yyin at a new input file.
237 */
238 #define YY_BUFFER_EOF_PENDING 2
239 };
240
241 static YY_BUFFER_STATE yy_current_buffer = 0;
242
243 /* We provide macros for accessing buffer states in case in the
244 * future we want to put the buffer states in a more general
245 * "scanner state".
246 */
247 #define YY_CURRENT_BUFFER yy_current_buffer
248
249
250 /* yy_hold_char holds the character lost when yytext is formed. */
251 static char yy_hold_char;
252
253 static int yy_n_chars; /* number of characters read into yy_ch_buf */
254
255
256 int yyleng;
257
258 /* Points to current character in buffer. */
259 static char *yy_c_buf_p = (char *) 0;
260 static int yy_init = 1; /* whether we need to initialize */
261 static int yy_start = 0; /* start state number */
262
263 /* Flag which is used to allow yywrap()'s to do buffer switches
264 * instead of setting up a fresh yyin. A bit of a hack ...
265 */
266 static int yy_did_buffer_switch_on_eof;
267
268 void yyrestart YY_PROTO(( FILE *input_file ));
269
270 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
271 void yy_load_buffer_state YY_PROTO(( void ));
272 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
273 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
274 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
275 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
276 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
277
278 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
279 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
280 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
281
282 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
283 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
284 static void yy_flex_free YY_PROTO(( void * ));
285
286 #define yy_new_buffer yy_create_buffer
287
288 #define yy_set_interactive(is_interactive) \
289 { \
290 if ( ! yy_current_buffer ) \
291 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
292 yy_current_buffer->yy_is_interactive = is_interactive; \
293 }
294
295 #define yy_set_bol(at_bol) \
296 { \
297 if ( ! yy_current_buffer ) \
298 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
299 yy_current_buffer->yy_at_bol = at_bol; \
300 }
301
302 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
303
304
305 #define YY_USES_REJECT
306 typedef unsigned char YY_CHAR;
307 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
308 typedef int yy_state_type;
309 extern char *yytext;
310 #define yytext_ptr yytext
311
312 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
313 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
314 static int yy_get_next_buffer YY_PROTO(( void ));
315 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
316
317 /* Done after the current pattern has been matched and before the
318 * corresponding action - sets up yytext.
319 */
320 #define YY_DO_BEFORE_ACTION \
321 yytext_ptr = yy_bp; \
322 yytext_ptr -= yy_more_len; \
323 yyleng = (int) (yy_cp - yytext_ptr); \
324 yy_hold_char = *yy_cp; \
325 *yy_cp = '\0'; \
326 yy_c_buf_p = yy_cp;
327
328 #define YY_NUM_RULES 24
329 #define YY_END_OF_BUFFER 25
330 static yyconst short int yy_acclist[450] =
331 { 0,
332 6, 6, 1, 1, 25, 23, 24, 22, 24, 23,
333 24, 23, 24, 23, 24, 23, 24, 23, 24, 23,
334 24, 23, 24, 23, 24, 23, 24, 23, 24, 23,
335 24, 23, 24, 23, 24, 23, 24, 23, 24, 23,
336 24, 23, 24, 23, 24, 23, 24, 23, 24, 23,
337 24, 23, 24, 23, 24, 23, 24, 23, 24, 23,
338 24, 6, 24, 7, 24, 24, 12, 22, 24, 23,
339 24, 23, 24,16397, 23, 24,16397, 23, 24,16397,
340 23, 24,16397, 23, 24,16397, 23, 24,16397, 23,
341 24,16397, 23, 24,16397, 23, 24,16397, 23, 24,
342
343 16397, 23, 24,16397, 23, 24,16397, 23, 24,16397,
344 23, 24,16397, 23, 24,16397, 23, 24,16397, 23,
345 24,16397, 23, 24,16397, 23, 24,16397, 23, 24,
346 16397, 23, 24,16397, 1, 24, 2, 24, 3, 4,
347 9, 10, 6, 8, 8, 5, 11,16397,16397,16397,
348 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
349 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
350 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
351 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
352 16397,16397,16397,16397,16397,16397, 1, 3, 3, 9,
353
354 9, 10, 19, 21,16397,16397,16397,16397,16397,16397,
355 16397,16397,16397,16397,16397,16397,16397, 19, 19, 19,
356 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
357 16397,16397,16397,16397,16397,16397,16397, 21, 21, 21,
358 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
359 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
360 16397,16397,16397,16397,16397,16397,16397, 18, 20, 18,
361 3, 18, 18, 20, 3, 20, 20, 18, 18, 20,
362 20, 9, 10, 15, 8205, 8205, 8205,16397,16397,16397,
363 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
364
365 16397,16397,16397,16397,16397,16397,16397,16397, 15, 15,
366 15,16397,16397,16397,16397,16397,16397,16397,16397,16397,
367 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
368 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
369 14, 14, 3, 14, 14, 14, 14, 10, 17,16397,
370 16397,16397, 17, 17, 17,16397,16397,16397,16397,16397,
371 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
372 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
373 16397,16397,16397,16397,16397,16397,16397,16397,16397, 16,
374 16, 3, 16, 16, 16, 16,16397,16397,16397,16397,
375
376 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
377 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
378 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
379 16397,16397,16397,16397,16397,16397,16397,16397,16397,16397,
380 16397,16397,16397,16397,16397,16397,16397,16397,16397
381 } ;
382
383 static yyconst short int yy_accept[1433] =
384 { 0,
385 1, 1, 1, 2, 3, 3, 3, 3, 3, 4,
386 5, 6, 8, 10, 12, 14, 16, 18, 20, 22,
387 24, 26, 28, 30, 32, 34, 36, 38, 40, 42,
388 44, 46, 48, 50, 52, 54, 56, 58, 60, 62,
389 64, 66, 67, 70, 72, 75, 78, 81, 84, 87,
390 90, 93, 96, 99, 102, 105, 108, 111, 114, 117,
391 120, 123, 126, 129, 132, 135, 137, 139, 139, 139,
392 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
393 139, 139, 139, 139, 139, 139, 139, 139, 139, 140,
394 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
395
396 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
397 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
398 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
399 140, 140, 140, 141, 142, 142, 142, 142, 143, 143,
400 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
401 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
402 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
403 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
404 143, 143, 143, 143, 143, 143, 143, 144, 145, 146,
405 147, 148, 148, 148, 148, 149, 149, 150, 151, 152,
406
407 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
408 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
409 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
410 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
411 193, 194, 195, 196, 197, 198, 198, 198, 198, 198,
412 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
413 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
414 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
415 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
416 198, 198, 198, 198, 198, 199, 199, 199, 199, 199,
417
418 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
419 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
420 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
421 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
422 199, 199, 199, 199, 199, 200, 200, 200, 200, 200,
423 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
424 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
425 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
426 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
427 200, 200, 200, 200, 200, 201, 202, 202, 203, 203,
428
429 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
430 203, 203, 203, 204, 204, 204, 204, 204, 204, 204,
431 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
432 204, 205, 205, 205, 205, 205, 205, 205, 205, 205,
433 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
434 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
435 205, 205, 205, 206, 207, 208, 209, 210, 211, 212,
436 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
437 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
438 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
439
440 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
441 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
442 263, 264, 265, 266, 267, 268, 268, 268, 268, 268,
443 268, 268, 268, 268, 268, 268, 268, 268, 268, 269,
444 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
445 269, 269, 269, 269, 269, 269, 269, 270, 270, 270,
446 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
447 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
448 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
449 270, 270, 270, 270, 270, 270, 270, 270, 271, 273,
450
451 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
452 274, 274, 274, 274, 274, 274, 274, 274, 275, 277,
453 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
454 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
455 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
456 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
457 278, 279, 280, 280, 280, 280, 280, 280, 280, 280,
458 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
459 281, 282, 282, 282, 282, 282, 282, 282, 282, 282,
460 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
461
462 282, 282, 282, 282, 282, 282, 282, 282, 282, 283,
463 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
464 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
465 284, 285, 285, 285, 285, 285, 285, 285, 285, 285,
466 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
467 285, 285, 285, 285, 285, 285, 285, 285, 285, 285,
468 285, 286, 287, 288, 288, 289, 289, 290, 291, 292,
469 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
470 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
471 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
472
473 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
474 333, 334, 335, 336, 337, 338, 339, 340, 341, 341,
475 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
476 341, 341, 341, 341, 341, 341, 341, 341, 341, 342,
477 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
478 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
479 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
480 342, 342, 342, 342, 342, 342, 342, 342, 342, 342,
481 342, 342, 342, 342, 342, 342, 342, 342, 342, 343,
482 345, 346, 346, 346, 346, 346, 346, 346, 346, 346,
483
484 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
485 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
486 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
487 346, 346, 346, 346, 346, 346, 346, 346, 346, 346,
488 346, 347, 348, 348, 348, 348, 348, 348, 348, 348,
489 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
490 348, 348, 348, 348, 348, 348, 348, 348, 348, 348,
491 348, 348, 349, 349, 349, 350, 350, 350, 350, 350,
492 350, 350, 350, 350, 350, 350, 350, 350, 350, 350,
493 350, 350, 350, 350, 350, 350, 350, 350, 350, 350,
494
495 350, 350, 350, 350, 350, 350, 350, 350, 350, 350,
496 350, 351, 351, 352, 353, 354, 355, 356, 357, 358,
497 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
498 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
499 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
500 389, 390, 390, 390, 391, 391, 391, 391, 391, 391,
501 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
502 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
503 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
504 391, 392, 394, 395, 395, 395, 395, 395, 395, 395,
505
506 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
507 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
508 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
509 396, 397, 397, 397, 397, 397, 397, 397, 397, 397,
510 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
511 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
512 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
513 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
514 397, 397, 397, 397, 397, 397, 398, 399, 400, 401,
515 402, 403, 404, 405, 406, 407, 408, 409, 410, 411,
516
517 412, 413, 414, 415, 416, 417, 417, 417, 417, 417,
518 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
519 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
520 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
521 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
522 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
523 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
524 417, 417, 417, 417, 417, 417, 417, 417, 417, 417,
525 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
526 428, 429, 430, 431, 431, 431, 431, 431, 431, 431,
527
528 431, 431, 431, 431, 431, 431, 431, 431, 431, 431,
529 431, 431, 431, 431, 431, 431, 431, 431, 431, 431,
530 431, 431, 431, 431, 431, 431, 431, 431, 431, 431,
531 431, 431, 431, 431, 431, 431, 431, 431, 431, 431,
532 431, 431, 432, 433, 434, 435, 436, 437, 437, 437,
533 437, 437, 437, 437, 437, 437, 437, 437, 437, 437,
534 437, 437, 437, 437, 437, 437, 437, 437, 437, 437,
535 438, 439, 440, 441, 441, 441, 441, 441, 441, 441,
536 441, 441, 441, 441, 441, 441, 441, 441, 441, 442,
537 443, 444, 444, 444, 444, 444, 444, 444, 444, 444,
538
539 444, 444, 444, 445, 446, 446, 446, 446, 446, 446,
540 446, 446, 447, 447, 447, 447, 447, 448, 448, 448,
541 448, 448, 449, 449, 449, 449, 449, 450, 450, 450,
542 450, 450
543 } ;
544
545 static yyconst int yy_ec[256] =
546 { 0,
547 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 2, 1, 4, 5, 1, 1, 1, 6, 7,
551 8, 9, 1, 10, 1, 1, 11, 12, 12, 12,
552 12, 12, 12, 12, 12, 12, 12, 13, 14, 1,
553 1, 1, 1, 1, 15, 15, 15, 15, 15, 15,
554 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
555 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
556 1, 16, 1, 1, 17, 1, 18, 19, 20, 21,
557
558 22, 23, 24, 25, 26, 15, 27, 28, 29, 30,
559 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
560 41, 42, 43, 1, 43, 44, 1, 1, 1, 1,
561 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
562 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
566 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
567 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
568
569 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
570 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
572 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574 1, 1, 1, 1, 1
575 } ;
576
577 static yyconst int yy_meta[45] =
578 { 0,
579 1, 2, 3, 4, 5, 4, 6, 1, 7, 1,
580 1, 8, 9, 10, 11, 12, 13, 11, 11, 11,
581 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
582 11, 11, 11, 11, 11, 11, 14, 11, 11, 11,
583 11, 11, 4, 15
584 } ;
585
586 static yyconst short int yy_base[1458] =
587 { 0,
588 0, 44, 9, 12, 88, 14, 132, 176, 3123, 3122,
589 3124, 203, 0, 243, 3127, 287, 11, 21, 3121, 1,
590 1, 75, 83, 79, 6, 3091, 85, 3090, 3083, 11,
591 7, 76, 3097, 86, 125, 86, 92, 129, 3087, 0,
592 3127, 117, 0, 114, 149, 330, 134, 350, 314, 322,
593 338, 346, 311, 353, 137, 364, 364, 305, 375, 388,
594 406, 372, 385, 409, 418, 0, 3127, 400, 127, 375,
595 411, 426, 433, 3086, 97, 3085, 3078, 386, 123, 136,
596 3092, 432, 438, 323, 395, 425, 3082, 462, 3127, 466,
597 473, 478, 488, 483, 447, 489, 3081, 324, 3080, 3073,
598
599 500, 196, 336, 3087, 500, 507, 443, 502, 510, 3077,
600 531, 230, 507, 512, 554, 542, 546, 559, 3076, 504,
601 3075, 3068, 566, 442, 342, 3082, 555, 567, 510, 569,
602 578, 3072, 3127, 3086, 23, 3099, 3098, 3, 3078, 3069,
603 3061, 3060, 3064, 3072, 569, 3075, 3074, 577, 586, 3054,
604 3060, 3054, 3051, 479, 3059, 3055, 3051, 3058, 3047, 3045,
605 574, 3051, 3044, 3050, 3039, 3041, 3054, 3058, 585, 3055,
606 589, 3042, 554, 594, 3046, 3042, 592, 580, 3038, 521,
607 3043, 3034, 594, 3042, 3040, 3031, 0, 3127, 618, 3127,
608 3127, 416, 628, 3056, 602, 3050, 603, 613, 616, 619,
609
610 627, 637, 633, 643, 647, 646, 662, 699, 656, 659,
611 681, 687, 697, 698, 710, 711, 719, 3025, 722, 730,
612 733, 742, 743, 751, 754, 791, 780, 784, 800, 792,
613 807, 820, 783, 811, 826, 829, 837, 845, 851, 855,
614 865, 869, 875, 879, 0, 3040, 3031, 3023, 3022, 3026,
615 3034, 609, 3037, 3036, 658, 643, 3016, 3022, 3016, 3013,
616 587, 3021, 3017, 3013, 3020, 3009, 3007, 702, 3013, 3006,
617 3012, 3001, 3003, 3016, 3020, 695, 3017, 738, 3004, 788,
618 661, 3008, 3004, 705, 791, 3000, 740, 3005, 2996, 608,
619 3004, 3002, 2993, 0, 0, 3005, 2996, 2988, 2987, 2991,
620
621 2999, 843, 3002, 3001, 854, 762, 916, 2988, 2982, 2979,
622 811, 2987, 2983, 2979, 2986, 2975, 2973, 725, 2979, 2972,
623 2978, 2967, 2969, 2982, 960, 827, 2984, 872, 2971, 809,
624 680, 2975, 2971, 839, 866, 2967, 902, 2972, 2963, 905,
625 2971, 2969, 2960, 0, 0, 881, 2972, 2963, 2955, 2954,
626 2958, 2966, 899, 2969, 2968, 909, 913, 1004, 2955, 2949,
627 2946, 879, 2954, 2950, 2946, 2953, 2942, 2940, 840, 2946,
628 2939, 2945, 2934, 2936, 2949, 1048, 914, 2951, 918, 2938,
629 923, 686, 2942, 2938, 917, 909, 2934, 922, 2939, 2930,
630 930, 2938, 2936, 2927, 2944, 644, 970, 973, 2956, 2941,
631
632 2926, 765, 2928, 2937, 2932, 2933, 2918, 2916, 2918, 943,
633 2931, 2926, 3127, 2928, 2928, 2923, 2915, 2915, 2920, 2906,
634 2922, 2917, 2907, 2911, 0, 2912, 2917, 2912, 2916, 2898,
635 3127, 2909, 2892, 2893, 2900, 2901, 2896, 2888, 2890, 2893,
636 2900, 2885, 2883, 2883, 2886, 2882, 2885, 2893, 2892, 2882,
637 2886, 2881, 2874, 2888, 2890, 2889, 2878, 2888, 971, 2896,
638 1091, 981, 2886, 957, 991, 1003, 1005, 963, 1007, 1033,
639 960, 1008, 1036, 1051, 1052, 1077, 2894, 2888, 1081, 1084,
640 1087, 1048, 1075, 1093, 1090, 1108, 1107, 1116, 1122, 1159,
641 1147, 1146, 1119, 2883, 1155, 1184, 2891, 2885, 1158, 1169,
642
643 1175, 1185, 1188, 1189, 1197, 1201, 1207, 1211, 1215, 1219,
644 1223, 1231, 1227, 1239, 1243, 1249, 1252, 1255, 1258, 1261,
645 1273, 1281, 1282, 1285, 2880, 2879, 2864, 1008, 2866, 2875,
646 2870, 2871, 2856, 2854, 2856, 966, 2869, 2864, 3127, 2866,
647 2866, 2861, 2853, 2853, 2858, 2844, 2860, 2855, 2845, 2849,
648 0, 2850, 2855, 2850, 2854, 2836, 3127, 2847, 2830, 2831,
649 2838, 2839, 2834, 2826, 2828, 2831, 2838, 2823, 2821, 2821,
650 2824, 2820, 2823, 2831, 2830, 2820, 2824, 2819, 2812, 2826,
651 2828, 2827, 2816, 2826, 2825, 2810, 1178, 2812, 2821, 2816,
652 2817, 2802, 2800, 2802, 1040, 2815, 2810, 0, 3127, 1128,
653
654 2812, 2812, 2807, 2799, 2799, 2804, 2790, 2806, 2801, 2791,
655 2795, 1322, 2796, 2801, 2796, 2800, 2782, 0, 3127, 1132,
656 2793, 2776, 2777, 2784, 2785, 2780, 2772, 2774, 2777, 2784,
657 2769, 2767, 2767, 2770, 2766, 2769, 2777, 2776, 2766, 2770,
658 2765, 2758, 2772, 2774, 2773, 2762, 2772, 2771, 2756, 1190,
659 2758, 2767, 2762, 2763, 2748, 2746, 2748, 1104, 2761, 2756,
660 0, 975, 2758, 2758, 2753, 2745, 2745, 2750, 2736, 2752,
661 2747, 2737, 2741, 1366, 2742, 2747, 2742, 2746, 2728, 0,
662 1223, 2739, 2722, 2723, 2730, 2731, 2726, 2718, 2720, 2723,
663 2730, 2715, 2713, 2713, 2716, 2712, 2715, 2723, 2722, 2712,
664
665 2716, 2711, 2704, 2718, 2720, 2719, 2708, 2718, 2718, 0,
666 2711, 2702, 2697, 0, 2703, 2704, 2693, 2699, 2690, 2699,
667 2687, 2687, 2694, 2691, 2693, 2683, 2692, 2675, 2674, 2672,
668 3127, 2682, 2664, 2675, 2678, 2659, 2673, 2667, 2660, 2648,
669 2640, 2640, 2637, 2648, 2638, 2641, 2644, 2641, 2625, 2612,
670 2633, 1313, 2619, 2624, 2623, 2609, 2609, 2603, 2614, 2604,
671 2617, 1409, 3127, 1302, 1299, 1339, 1315, 1314, 1323, 1452,
672 1351, 1359, 1324, 1362, 1365, 1392, 1368, 1396, 1393, 1405,
673 1411, 1437, 1414, 1440, 1408, 1443, 1479, 2615, 2607, 1464,
674 1454, 1463, 1472, 1473, 1486, 1483, 1489, 1492, 1495, 1503,
675
676 1506, 1517, 1514, 1520, 1528, 1536, 1532, 1540, 2600, 1555,
677 1552, 1556, 1564, 1565, 1568, 1576, 1585, 1586, 2586, 2577,
678 2572, 0, 2578, 2579, 2568, 2574, 2565, 2572, 2558, 2556,
679 2561, 2553, 2554, 2543, 2552, 2528, 2533, 2529, 3127, 2539,
680 2518, 2528, 2529, 2511, 2519, 2513, 2506, 2494, 2484, 2485,
681 2481, 2494, 2484, 2488, 2493, 2479, 2456, 2430, 2447, 1538,
682 2432, 2435, 2433, 2419, 2394, 2392, 2399, 2397, 2396, 2387,
683 2382, 1623, 2388, 2389, 2378, 2384, 2311, 103, 126, 254,
684 310, 332, 365, 404, 437, 426, 435, 459, 0, 3127,
685 1175, 476, 486, 536, 557, 566, 733, 794, 819, 827,
686
687 885, 915, 916, 933, 965, 973, 1004, 1009, 1004, 996,
688 1029, 1588, 1023, 1036, 1080, 1069, 1072, 1079, 1111, 1128,
689 1133, 1128, 1140, 1667, 1167, 1173, 1165, 1173, 1180, 1191,
690 1191, 1194, 1212, 1214, 1221, 1221, 1245, 1236, 1245, 1247,
691 0, 1441, 1288, 1274, 1292, 1303, 1294, 1322, 1325, 1322,
692 1320, 1320, 1328, 1327, 1342, 1340, 1359, 1367, 1371, 1365,
693 1365, 1389, 1614, 1377, 1384, 1396, 1387, 1403, 1416, 1442,
694 1447, 0, 1446, 1466, 3127, 1471, 1467, 1483, 1490, 1492,
695 1491, 1508, 1504, 1514, 1531, 1533, 1540, 1541, 1542, 1547,
696 1564, 1576, 1561, 1590, 1587, 1598, 1605, 1618, 1605, 1617,
697
698 1625, 1623, 1625, 1629, 1618, 1631, 1624, 1634, 1619, 1651,
699 1653, 1659, 1649, 1664, 1685, 1649, 1646, 1646, 1660, 1672,
700 1682, 1683, 1695, 1694, 1698, 1706, 1712, 1709, 1718, 1721,
701 1727, 1730, 1739, 1748, 1745, 1749, 1757, 1767, 1766, 1770,
702 1776, 1784, 1780, 1794, 1797, 1805, 1806, 1815, 1818, 1821,
703 1824, 1631, 1644, 3127, 1655, 1659, 1663, 1671, 1674, 1680,
704 1688, 1685, 1695, 1700, 1695, 1694, 1705, 1704, 1709, 1732,
705 1741, 1734, 1750, 1743, 1756, 1768, 1773, 1759, 1774, 1790,
706 1798, 1801, 1807, 1796, 1810, 1804, 1820, 1806, 1813, 1826,
707 0, 3127, 1859, 1832, 1830, 1836, 1843, 1844, 1841, 1848,
708
709 1839, 1849, 1849, 1844, 1841, 1841, 1839, 1840, 1857, 1858,
710 1843, 1858, 1851, 1861, 1860, 1864, 1849, 1861, 1869, 1866,
711 1868, 1872, 1861, 1874, 1867, 1877, 1862, 1863, 1876, 0,
712 1892, 1882, 1870, 1873, 1880, 1881, 1878, 1885, 1876, 1886,
713 1887, 1882, 1879, 1879, 1877, 1878, 1895, 1896, 1881, 1896,
714 1889, 1899, 1898, 1902, 1887, 1899, 1907, 1904, 1906, 1910,
715 1899, 1912, 1905, 1915, 1900, 1914, 1898, 1900, 1917, 1912,
716 1917, 1922, 1910, 1920, 1907, 1922, 1911, 1929, 1911, 1925,
717 1920, 1928, 1923, 1924, 1917, 1934, 1925, 1931, 1943, 1944,
718 1953, 1947, 1956, 1967, 1964, 1973, 1977, 1939, 1983, 1986,
719
720 1995, 2004, 2001, 2005, 2013, 1937, 1921, 1923, 1952, 1950,
721 1963, 1974, 1965, 1976, 1969, 1984, 1981, 2000, 1986, 2004,
722 1999, 2015, 2016, 2017, 2010, 2027, 2014, 2016, 2033, 2028,
723 2033, 2038, 2026, 2036, 2023, 2038, 2027, 2045, 2027, 2041,
724 2036, 2044, 2039, 2040, 2033, 2050, 2034, 2036, 2053, 2048,
725 2053, 2058, 2046, 2056, 2043, 2058, 2047, 2065, 2047, 2061,
726 2056, 2064, 2059, 2060, 2053, 2072, 2069, 2075, 2057, 2074,
727 2061, 2074, 2063, 2066, 2079, 2078, 2079, 2081, 2081, 2086,
728 2083, 2089, 2092, 2095, 2077, 2109, 2103, 2113, 2121, 2112,
729 2130, 2133, 2139, 2090, 2087, 2093, 2081, 2115, 2102, 2131,
730
731 2121, 2125, 2139, 2140, 2142, 2145, 2149, 2154, 2151, 2158,
732 2141, 2158, 2145, 2158, 2147, 2150, 2163, 2162, 2163, 2165,
733 2165, 2170, 2167, 2173, 2155, 2172, 2159, 2172, 2161, 2164,
734 2177, 2176, 2177, 2179, 2179, 2167, 2183, 2182, 2184, 2172,
735 2189, 2178, 2189, 2188, 2199, 2198, 2209, 2176, 2192, 2192,
736 2195, 2183, 2203, 2187, 2210, 2209, 2216, 2204, 2222, 2206,
737 2222, 2221, 2224, 2213, 2230, 2213, 2232, 2229, 2217, 2223,
738 2236, 2233, 2227, 2220, 2243, 2243, 2232, 2233, 2254, 2252,
739 2240, 2240, 2259, 2256, 2244, 2245, 2245, 2246, 2253, 2256,
740 2259, 2249, 2249, 2251, 2262, 2262, 2263, 2265, 2265, 2266,
741
742 2267, 2287, 2275, 2289, 2271, 2291, 2273, 2296, 2278, 2298,
743 2296, 2297, 2298, 2300, 2301, 2304, 2305, 2307, 2310, 2311,
744 2295, 2301, 2298, 2302, 2304, 2305, 2313, 2308, 2309, 2310,
745 3127, 2350, 2365, 2380, 2395, 2409, 2423, 2438, 2452, 2466,
746 2481, 2496, 2510, 2524, 2539, 2554, 2569, 2584, 2598, 2612,
747 2627, 2641, 2656, 2664, 2678, 2692, 2706
748 } ;
749
750 static yyconst short int yy_def[1458] =
751 { 0,
752 1432, 1431, 1433, 1433, 1432, 2, 1434, 1431, 1435, 1435,
753 1431, 1431, 12, 1431, 1431, 1431, 12, 12, 1436, 1431,
754 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
755 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1437,
756 1431, 1438, 12, 12, 1439, 1439, 46, 46, 46, 46,
757 48, 48, 46, 46, 46, 48, 46, 46, 46, 46,
758 46, 46, 46, 46, 46, 1440, 1431, 1431, 1431, 1431,
759 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
760 1431, 1431, 1431, 1431, 1431, 1431, 1431, 14, 1431, 88,
761 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
762
763 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
764 16, 1441, 111, 111, 111, 111, 111, 111, 111, 111,
765 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
766 111, 111, 1431, 1442, 1431, 1436, 1436, 1443, 1431, 1431,
767 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1444,
768 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1444,
769 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1445, 1431, 1431,
770 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
771 1431, 1431, 1431, 1431, 1431, 1431, 1437, 1431, 1431, 1431,
772 1431, 1431, 1431, 1446, 46, 1431, 46, 46, 46, 46,
773
774 46, 46, 46, 46, 46, 46, 46, 1439, 46, 46,
775 46, 46, 46, 46, 46, 46, 46, 208, 46, 46,
776 46, 46, 46, 46, 46, 1439, 46, 46, 60, 46,
777 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
778 46, 46, 46, 46, 1440, 1431, 1431, 1431, 1431, 1431,
779 1431, 1431, 1431, 1431, 1431, 1431, 1447, 1431, 1431, 1431,
780 1431, 1431, 1431, 1431, 1431, 1431, 1447, 1431, 1431, 1431,
781 1431, 1431, 1431, 1431, 1448, 1431, 1431, 1431, 1431, 1431,
782 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
783 1431, 1431, 1431, 88, 88, 88, 88, 88, 88, 88,
784
785 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
786 88, 88, 88, 88, 88, 88, 307, 88, 88, 88,
787 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
788 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
789 88, 88, 88, 111, 111, 1441, 111, 111, 111, 111,
790 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
791 111, 111, 111, 111, 111, 111, 111, 358, 111, 111,
792 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
793 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
794 111, 111, 111, 111, 1442, 1442, 1449, 1443, 1431, 1445,
795
796 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
797 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
798 1431, 1431, 1431, 1431, 1450, 1431, 1431, 1431, 1445, 1431,
799 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
800 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
801 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1445, 1431, 1446,
802 1451, 1452, 226, 46, 48, 48, 48, 46, 46, 46,
803 46, 46, 46, 46, 46, 1431, 1446, 1431, 46, 46,
804 46, 46, 46, 46, 46, 46, 46, 46, 46, 1439,
805 46, 46, 46, 226, 46, 1431, 1446, 1431, 46, 46,
806
807 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
808 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
809 46, 46, 46, 46, 226, 1448, 1431, 1431, 1431, 1431,
810 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
811 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
812 1453, 1431, 1431, 1431, 1448, 1431, 1431, 1431, 1431, 1431,
813 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
814 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
815 1431, 1431, 1431, 1448, 325, 88, 88, 88, 88, 88,
816 88, 88, 88, 88, 88, 88, 88, 88, 1431, 88,
817
818 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
819 88, 88, 88, 88, 88, 325, 88, 88, 1431, 88,
820 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
821 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
822 88, 88, 88, 88, 88, 88, 325, 376, 111, 111,
823 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
824 111, 1441, 111, 111, 111, 111, 111, 111, 111, 111,
825 111, 111, 111, 111, 111, 111, 111, 376, 111, 111,
826 1441, 111, 111, 111, 111, 111, 111, 111, 111, 111,
827 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
828
829 111, 111, 111, 111, 111, 111, 111, 376, 1442, 1454,
830 1431, 1431, 1431, 1455, 1431, 1431, 1431, 1431, 1431, 1431,
831 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
832 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
833 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
834 1445, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
835 1446, 1451, 1431, 1452, 1456, 1452, 46, 46, 46, 1439,
836 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
837 46, 46, 46, 46, 46, 46, 1431, 1446, 1431, 46,
838 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
839
840 46, 46, 46, 46, 46, 46, 46, 46, 226, 46,
841 46, 46, 46, 46, 46, 46, 46, 46, 1431, 1431,
842 1431, 1457, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
843 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
844 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
845 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1448, 1431,
846 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 88, 88,
847 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
848 88, 88, 88, 88, 88, 88, 88, 88, 88, 1431,
849 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
850
851 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
852 325, 88, 88, 88, 88, 88, 88, 88, 88, 88,
853 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
854 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
855 111, 1441, 111, 111, 111, 111, 111, 111, 111, 111,
856 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
857 111, 376, 111, 111, 111, 111, 111, 111, 111, 111,
858 111, 1454, 1431, 1431, 1431, 1450, 1431, 1431, 1431, 1431,
859 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
860 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
861
862 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
863 1456, 1452, 46, 46, 1431, 1446, 1431, 490, 46, 46,
864 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
865 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
866 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
867 46, 1431, 1431, 1431, 1453, 1431, 1431, 1431, 1431, 1431,
868 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
869 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
870 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 88, 88,
871 88, 1431, 88, 612, 88, 88, 88, 88, 88, 88,
872
873 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
874 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
875 88, 88, 88, 88, 88, 88, 88, 111, 111, 111,
876 1441, 674, 111, 111, 111, 111, 111, 111, 111, 111,
877 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
878 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
879 111, 111, 111, 111, 111, 1431, 1431, 1431, 1431, 1431,
880 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1450, 1431, 1431,
881 1431, 1431, 1431, 1431, 1431, 46, 46, 46, 46, 46,
882 46, 46, 46, 46, 46, 46, 46, 490, 46, 46,
883
884 46, 46, 46, 46, 46, 1431, 1431, 1431, 1431, 1431,
885 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1453, 1431, 1431,
886 1431, 1431, 1431, 1431, 1431, 88, 88, 88, 88, 88,
887 88, 88, 88, 88, 88, 88, 88, 612, 88, 88,
888 88, 88, 88, 88, 88, 111, 111, 111, 111, 111,
889 111, 111, 111, 111, 111, 111, 111, 674, 111, 111,
890 111, 111, 111, 111, 111, 1431, 1431, 1431, 1431, 1431,
891 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 46,
892 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
893 46, 46, 46, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
894
895 1431, 1431, 1431, 1431, 1431, 1431, 1431, 88, 88, 88,
896 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
897 88, 111, 111, 111, 111, 111, 111, 111, 111, 111,
898 111, 111, 111, 111, 111, 1431, 1431, 1431, 1431, 1431,
899 1431, 46, 46, 46, 46, 46, 46, 1431, 1431, 1431,
900 1431, 1431, 1431, 88, 88, 88, 88, 88, 88, 111,
901 111, 111, 111, 111, 111, 1431, 1431, 1431, 1431, 46,
902 46, 46, 46, 1431, 1431, 1431, 1431, 88, 88, 88,
903 88, 111, 111, 111, 111, 1431, 1431, 1431, 46, 46,
904 46, 1431, 1431, 1431, 88, 88, 88, 111, 111, 111,
905
906 1431, 1431, 46, 46, 1431, 1431, 88, 88, 111, 111,
907 1431, 46, 1431, 88, 111, 1431, 46, 1431, 88, 111,
908 1431, 46, 1431, 88, 111, 1431, 46, 1431, 88, 111,
909 0, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
910 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
911 1431, 1431, 1431, 1431, 1431, 1431, 1431
912 } ;
913
914 static yyconst short int yy_nxt[3172] =
915 { 0,
916 12, 12, 13, 14, 397, 16, 12, 12, 12, 12,
917 17, 41, 12, 12, 41, 12, 43, 42, 399, 133,
918 42, 134, 135, 155, 135, 136, 142, 136, 164, 44,
919 139, 143, 165, 156, 144, 140, 157, 141, 167, 158,
920 168, 166, 12, 12, 12, 18, 13, 14, 19, 16,
921 12, 12, 12, 12, 17, 15, 12, 12, 15, 12,
922 15, 20, 21, 22, 23, 24, 25, 26, 15, 27,
923 15, 28, 29, 30, 31, 32, 15, 33, 34, 35,
924 36, 37, 38, 39, 15, 15, 12, 12, 12, 12,
925 43, 14, 145, 16, 12, 12, 12, 12, 17, 146,
926
927 12, 12, 147, 44, 149, 148, 152, 160, 153, 169,
928 172, 173, 170, 150, 161, 180, 191, 182, 154, 267,
929 181, 174, 183, 151, 175, 189, 268, 190, 1095, 192,
930 12, 12, 12, 12, 13, 14, 15, 16, 12, 12,
931 12, 12, 17, 15, 12, 12, 176, 12, 184, 177,
932 193, 193, 249, 185, 274, 194, 275, 250, 178, 200,
933 251, 196, 1096, 195, 201, 179, 195, 202, 195, 276,
934 195, 195, 277, 221, 12, 12, 12, 18, 13, 14,
935 19, 16, 12, 12, 12, 12, 17, 15, 12, 12,
936 45, 12, 45, 46, 47, 48, 49, 50, 51, 52,
937
938 45, 53, 45, 54, 55, 56, 57, 58, 45, 59,
939 60, 61, 62, 63, 64, 65, 45, 45, 12, 12,
940 68, 69, 70, 71, 72, 73, 74, 324, 75, 325,
941 76, 77, 78, 79, 80, 345, 81, 82, 83, 84,
942 85, 86, 87, 88, 88, 346, 89, 88, 88, 88,
943 88, 88, 88, 88, 88, 88, 88, 88, 90, 88,
944 91, 92, 93, 94, 95, 96, 97, 88, 98, 88,
945 99, 100, 101, 102, 103, 88, 104, 105, 106, 107,
946 108, 109, 110, 88, 88, 88, 88, 111, 111, 1097,
947 111, 111, 89, 111, 111, 111, 111, 111, 111, 111,
948
949 111, 111, 112, 111, 113, 114, 115, 116, 117, 118,
950 119, 111, 120, 111, 121, 122, 123, 124, 125, 111,
951 126, 127, 128, 129, 130, 131, 132, 111, 111, 111,
952 111, 193, 193, 218, 195, 207, 194, 1098, 227, 195,
953 219, 228, 196, 195, 208, 195, 317, 195, 195, 210,
954 195, 211, 287, 318, 209, 213, 195, 288, 195, 197,
955 1099, 212, 195, 195, 198, 214, 199, 203, 215, 326,
956 195, 216, 327, 195, 204, 377, 217, 205, 378, 195,
957 206, 222, 195, 220, 195, 223, 195, 195, 195, 195,
958 1100, 195, 252, 195, 224, 225, 229, 226, 195, 253,
959
960 195, 238, 254, 271, 195, 255, 239, 272, 195, 195,
961 240, 195, 230, 231, 195, 241, 273, 195, 191, 195,
962 289, 195, 195, 232, 195, 290, 233, 234, 242, 246,
963 235, 192, 256, 243, 247, 195, 248, 1101, 195, 236,
964 195, 257, 195, 195, 291, 195, 237, 195, 244, 292,
965 262, 258, 195, 259, 195, 260, 279, 280, 911, 283,
966 263, 612, 284, 264, 1102, 261, 265, 281, 294, 295,
967 282, 285, 337, 375, 309, 376, 310, 338, 286, 88,
968 88, 88, 88, 88, 88, 88, 311, 88, 1103, 88,
969 88, 88, 88, 88, 1104, 88, 88, 88, 88, 88,
970
971 88, 88, 296, 299, 306, 302, 312, 297, 300, 298,
972 418, 301, 303, 307, 419, 304, 313, 321, 305, 314,
973 1105, 322, 315, 308, 329, 330, 368, 339, 333, 341,
974 323, 334, 340, 369, 342, 331, 347, 350, 332, 388,
975 335, 348, 351, 349, 389, 352, 450, 336, 111, 111,
976 111, 111, 111, 111, 111, 451, 111, 1106, 111, 111,
977 111, 111, 111, 357, 111, 111, 111, 111, 111, 111,
978 111, 353, 358, 360, 1107, 361, 363, 440, 354, 380,
979 381, 355, 359, 372, 356, 362, 364, 373, 384, 365,
980 382, 385, 366, 383, 390, 441, 374, 392, 911, 391,
981
982 386, 424, 393, 405, 406, 409, 410, 387, 411, 425,
983 433, 442, 436, 412, 437, 434, 448, 446, 544, 454,
984 160, 455, 545, 463, 438, 447, 459, 443, 190, 193,
985 193, 195, 195, 580, 194, 581, 195, 195, 195, 195,
986 196, 218, 195, 531, 532, 195, 709, 195, 195, 195,
987 195, 464, 195, 195, 465, 195, 195, 466, 467, 396,
988 470, 195, 195, 195, 471, 537, 195, 468, 469, 195,
989 538, 195, 195, 195, 472, 473, 195, 195, 568, 195,
990 195, 195, 195, 195, 474, 480, 535, 536, 195, 475,
991 195, 195, 195, 481, 569, 195, 195, 631, 195, 413,
992
993 476, 476, 413, 692, 413, 477, 413, 413, 413, 413,
994 195, 478, 413, 632, 413, 195, 195, 482, 483, 693,
995 559, 195, 484, 195, 485, 560, 195, 195, 486, 550,
996 572, 195, 195, 195, 195, 479, 487, 551, 573, 195,
997 195, 413, 413, 218, 195, 195, 195, 195, 195, 489,
998 1108, 195, 611, 195, 488, 195, 195, 490, 195, 491,
999 612, 562, 195, 563, 195, 576, 195, 195, 492, 195,
1000 493, 195, 195, 564, 577, 495, 195, 195, 195, 195,
1001 195, 218, 712, 195, 596, 195, 494, 195, 195, 597,
1002 195, 431, 496, 496, 431, 713, 431, 497, 431, 431,
1003
1004 431, 431, 502, 498, 431, 500, 431, 499, 511, 195,
1005 501, 566, 195, 195, 195, 1109, 195, 195, 195, 195,
1006 195, 195, 506, 503, 195, 504, 195, 574, 195, 567,
1007 507, 267, 629, 431, 431, 505, 195, 509, 195, 512,
1008 195, 195, 605, 195, 1110, 195, 606, 195, 508, 195,
1009 630, 513, 622, 510, 195, 195, 195, 623, 195, 514,
1010 195, 1111, 195, 195, 635, 515, 195, 673, 516, 218,
1011 517, 195, 636, 195, 195, 674, 519, 590, 591, 518,
1012 195, 195, 594, 595, 195, 195, 345, 195, 520, 195,
1013 521, 195, 522, 523, 195, 625, 346, 626, 195, 195,
1014
1015 524, 195, 637, 195, 195, 195, 317, 627, 195, 195,
1016 667, 195, 525, 195, 668, 195, 598, 598, 539, 599,
1017 1112, 598, 598, 598, 598, 598, 598, 639, 598, 598,
1018 643, 600, 644, 653, 654, 659, 640, 657, 658, 683,
1019 660, 686, 696, 687, 684, 698, 690, 700, 1113, 368,
1020 697, 612, 601, 688, 1114, 704, 701, 705, 598, 598,
1021 618, 618, 557, 619, 691, 618, 618, 618, 618, 618,
1022 618, 397, 618, 618, 397, 620, 621, 719, 720, 459,
1023 345, 190, 764, 764, 218, 399, 195, 490, 399, 195,
1024 346, 195, 195, 195, 773, 1115, 195, 195, 1116, 195,
1025
1026 827, 828, 618, 618, 661, 661, 539, 661, 768, 599,
1027 661, 661, 661, 661, 661, 195, 661, 661, 195, 662,
1028 195, 769, 771, 1117, 766, 820, 772, 195, 1118, 195,
1029 770, 1119, 195, 195, 317, 195, 195, 195, 821, 774,
1030 663, 195, 195, 195, 195, 88, 661, 661, 680, 680,
1031 557, 680, 612, 619, 680, 680, 680, 680, 680, 1123,
1032 680, 680, 195, 681, 682, 195, 490, 195, 777, 195,
1033 775, 776, 195, 778, 877, 878, 490, 195, 193, 193,
1034 195, 195, 195, 194, 195, 195, 195, 195, 195, 196,
1035 680, 680, 762, 762, 763, 763, 763, 460, 461, 779,
1036
1037 460, 780, 781, 911, 195, 1124, 460, 1125, 218, 195,
1038 195, 195, 1126, 195, 782, 195, 195, 195, 195, 195,
1039 195, 195, 195, 195, 783, 784, 195, 195, 785, 195,
1040 294, 295, 317, 763, 294, 295, 195, 195, 929, 930,
1041 791, 195, 195, 195, 195, 195, 218, 786, 195, 1127,
1042 195, 195, 195, 195, 1128, 195, 195, 1129, 195, 731,
1043 787, 787, 731, 790, 731, 788, 731, 731, 731, 731,
1044 490, 789, 731, 962, 731, 195, 195, 294, 295, 794,
1045 195, 195, 195, 195, 195, 193, 193, 195, 793, 195,
1046 194, 195, 195, 368, 195, 870, 196, 368, 195, 674,
1047
1048 924, 731, 731, 195, 195, 195, 795, 922, 871, 195,
1049 796, 195, 797, 798, 195, 1132, 1133, 195, 799, 195,
1050 923, 195, 195, 195, 195, 195, 195, 1134, 345, 1135,
1051 195, 195, 803, 800, 801, 195, 802, 195, 346, 1136,
1052 195, 195, 1137, 195, 195, 195, 1138, 195, 195, 195,
1053 804, 195, 195, 195, 1139, 805, 195, 195, 806, 195,
1054 195, 218, 807, 195, 809, 195, 962, 195, 195, 808,
1055 810, 674, 195, 195, 1140, 195, 1141, 195, 195, 195,
1056 812, 195, 811, 195, 195, 195, 195, 813, 195, 195,
1057 195, 195, 195, 490, 195, 195, 814, 195, 815, 816,
1058
1059 1010, 1010, 195, 764, 764, 194, 1142, 195, 1143, 195,
1060 195, 195, 817, 1144, 195, 195, 195, 195, 195, 195,
1061 1145, 195, 889, 889, 839, 890, 962, 889, 889, 889,
1062 889, 889, 889, 1002, 889, 889, 1013, 891, 1003, 1146,
1063 1012, 1012, 1004, 1014, 195, 766, 1147, 1148, 195, 195,
1064 195, 195, 195, 195, 1149, 1150, 809, 195, 490, 195,
1065 195, 1151, 674, 1152, 889, 889, 941, 941, 839, 941,
1066 1153, 890, 941, 941, 941, 941, 941, 218, 941, 941,
1067 195, 942, 1431, 218, 1154, 195, 1155, 195, 195, 770,
1068 1156, 195, 1157, 195, 195, 195, 195, 195, 195, 195,
1069
1070 1018, 195, 195, 368, 1020, 111, 674, 1161, 941, 941,
1071 762, 762, 763, 763, 763, 460, 461, 1019, 460, 962,
1072 1022, 195, 195, 1162, 460, 195, 195, 195, 195, 195,
1073 195, 1021, 195, 1023, 195, 809, 1024, 1026, 1163, 195,
1074 195, 195, 195, 195, 195, 195, 345, 195, 195, 1164,
1075 195, 763, 975, 1015, 1015, 975, 346, 975, 1016, 975,
1076 975, 975, 975, 368, 1017, 975, 195, 975, 1165, 195,
1077 1025, 195, 1027, 195, 195, 490, 195, 195, 751, 195,
1078 193, 193, 1028, 195, 1030, 194, 751, 1166, 1029, 1031,
1079 195, 196, 195, 195, 975, 975, 1167, 195, 195, 195,
1080
1081 195, 195, 195, 1032, 1033, 809, 195, 195, 195, 195,
1082 1168, 160, 195, 425, 1034, 195, 1169, 195, 195, 195,
1083 195, 195, 195, 195, 195, 195, 1035, 1170, 195, 195,
1084 1036, 195, 195, 425, 160, 195, 1037, 195, 1038, 195,
1085 195, 490, 195, 195, 1039, 1040, 195, 1041, 195, 195,
1086 195, 195, 425, 195, 195, 1042, 195, 195, 1081, 1043,
1087 1171, 195, 195, 1082, 195, 195, 195, 1083, 195, 195,
1088 195, 1172, 195, 751, 195, 1044, 195, 1173, 218, 1047,
1089 1045, 490, 1174, 1175, 1046, 195, 195, 809, 195, 195,
1090 195, 195, 195, 195, 195, 160, 1176, 195, 195, 195,
1091
1092 195, 1048, 195, 1049, 195, 195, 218, 1051, 1120, 1050,
1093 195, 1177, 195, 1121, 195, 195, 160, 1122, 425, 195,
1094 195, 195, 195, 1091, 1091, 1054, 1092, 160, 1091, 1091,
1095 1091, 1091, 1091, 1091, 1158, 1091, 1091, 1178, 1093, 1159,
1096 425, 160, 1179, 1160, 1180, 751, 1181, 1182, 1183, 1184,
1097 1185, 751, 1010, 1010, 1010, 1010, 461, 194, 462, 194,
1098 1012, 1012, 1186, 859, 859, 1091, 1091, 1130, 1130, 1054,
1099 1130, 1206, 1092, 1130, 1130, 1130, 1130, 1130, 195, 1130,
1100 1130, 809, 1131, 195, 809, 195, 193, 193, 1207, 1187,
1101 1208, 194, 267, 195, 195, 551, 195, 196, 195, 1188,
1102
1103 195, 195, 1431, 218, 490, 1209, 195, 1210, 195, 1130,
1104 1130, 195, 195, 1190, 551, 267, 195, 195, 195, 195,
1105 1189, 551, 1211, 195, 195, 1212, 218, 490, 195, 195,
1106 195, 195, 195, 490, 195, 195, 1191, 859, 195, 1213,
1107 195, 195, 195, 195, 1214, 195, 195, 195, 195, 1192,
1108 195, 1215, 195, 809, 195, 195, 195, 195, 1195, 195,
1109 267, 195, 1193, 195, 195, 1194, 195, 218, 195, 1216,
1110 1197, 1217, 267, 195, 195, 195, 551, 195, 195, 195,
1111 1196, 195, 195, 195, 195, 195, 218, 490, 218, 1198,
1112 267, 195, 1218, 195, 551, 195, 195, 1199, 267, 195,
1113
1114 195, 195, 195, 195, 195, 195, 195, 1219, 218, 195,
1115 195, 490, 195, 195, 195, 1200, 195, 809, 195, 1220,
1116 195, 859, 1201, 195, 1221, 1222, 195, 1223, 195, 1224,
1117 195, 195, 1203, 195, 195, 1202, 1225, 1205, 859, 195,
1118 195, 195, 195, 1204, 195, 911, 911, 195, 1226, 195,
1119 195, 195, 195, 195, 195, 195, 809, 195, 195, 1227,
1120 195, 294, 295, 1228, 317, 612, 1229, 1230, 612, 317,
1121 612, 1231, 1232, 911, 1233, 1234, 1235, 317, 1236, 1237,
1122 317, 612, 317, 1238, 612, 317, 1239, 1240, 911, 1241,
1123 1242, 1243, 1244, 1245, 911, 962, 962, 345, 1246, 1247,
1124
1125 1248, 368, 674, 1249, 1250, 674, 368, 346, 674, 1251,
1126 1252, 962, 1253, 1254, 1255, 368, 1256, 1257, 368, 674,
1127 368, 1258, 674, 368, 1259, 1260, 962, 1261, 1262, 1263,
1128 1264, 1265, 962, 1266, 1267, 160, 1268, 1269, 714, 1270,
1129 1271, 160, 1272, 1273, 1274, 1275, 1276, 425, 1277, 1278,
1130 425, 1279, 714, 1280, 195, 1289, 1294, 1295, 267, 195,
1131 195, 1281, 1282, 195, 1284, 195, 218, 195, 195, 1283,
1132 195, 1296, 195, 195, 770, 1297, 195, 195, 195, 195,
1133 195, 195, 195, 195, 822, 195, 1285, 195, 218, 195,
1134 195, 1298, 195, 195, 1287, 1299, 195, 267, 195, 1286,
1135
1136 195, 195, 195, 195, 1300, 1301, 195, 195, 490, 195,
1137 1288, 195, 195, 195, 1302, 195, 1303, 195, 1290, 195,
1138 195, 1304, 195, 1291, 195, 1292, 551, 1305, 490, 195,
1139 195, 195, 1293, 195, 195, 195, 1306, 195, 195, 195,
1140 195, 195, 195, 551, 1307, 822, 1308, 195, 770, 195,
1141 1309, 317, 1310, 1311, 872, 1312, 1313, 317, 1314, 1315,
1142 1316, 1317, 1318, 612, 1319, 1320, 612, 1321, 872, 1322,
1143 1323, 368, 1324, 1325, 924, 1326, 1327, 368, 1328, 1329,
1144 1330, 1331, 1332, 674, 1333, 1334, 674, 1335, 924, 1336,
1145 160, 1337, 714, 1338, 425, 1339, 425, 1340, 1341, 425,
1146
1147 714, 425, 425, 1342, 218, 1343, 195, 1348, 267, 1349,
1148 490, 195, 195, 195, 1344, 195, 822, 195, 195, 195,
1149 195, 195, 195, 195, 195, 195, 195, 770, 195, 195,
1150 1345, 195, 195, 490, 1350, 551, 490, 195, 195, 195,
1151 1347, 195, 195, 195, 1346, 195, 195, 195, 195, 195,
1152 195, 770, 1351, 490, 551, 195, 1352, 195, 1353, 195,
1153 490, 551, 195, 822, 195, 551, 195, 195, 195, 195,
1154 551, 1354, 317, 195, 1355, 195, 872, 1356, 612, 1357,
1155 612, 1358, 1359, 612, 872, 612, 612, 1360, 368, 1361,
1156 924, 1362, 674, 1363, 674, 1364, 1365, 674, 924, 674,
1157
1158 674, 1366, 1367, 714, 160, 1368, 1369, 195, 1371, 770,
1159 1374, 1375, 1370, 822, 195, 267, 1376, 195, 195, 218,
1160 1377, 1378, 195, 195, 195, 195, 1373, 195, 195, 1379,
1161 872, 1372, 195, 195, 195, 195, 317, 1380, 195, 1381,
1162 1382, 1383, 924, 195, 368, 195, 1384, 1385, 751, 1386,
1163 1387, 1388, 195, 1389, 1390, 859, 195, 195, 809, 195,
1164 1392, 1391, 195, 195, 1393, 195, 1394, 195, 911, 195,
1165 195, 1395, 195, 1396, 1397, 962, 1398, 1399, 1400, 1401,
1166 1402, 751, 195, 1405, 1406, 195, 859, 1403, 195, 195,
1167 195, 1404, 195, 195, 809, 195, 1407, 1408, 911, 1409,
1168
1169 1410, 962, 751, 1411, 195, 1412, 859, 1413, 911, 195,
1170 809, 195, 1414, 962, 1415, 1416, 1417, 1418, 195, 1419,
1171 1420, 1421, 1422, 195, 1423, 195, 195, 1424, 1425, 1426,
1172 195, 195, 1428, 195, 195, 1427, 1429, 195, 1430, 195,
1173 751, 195, 195, 859, 911, 962, 1094, 195, 809, 195,
1174 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1175 15, 15, 15, 15, 15, 40, 40, 40, 40, 40,
1176 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
1177 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
1178 45, 45, 45, 45, 45, 66, 66, 66, 66, 66,
1179
1180 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
1181 138, 872, 612, 317, 317, 911, 1090, 1089, 1088, 138,
1182 267, 138, 138, 187, 187, 1087, 187, 187, 187, 1086,
1183 187, 187, 187, 187, 187, 187, 187, 187, 188, 188,
1184 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1185 188, 188, 188, 195, 195, 1085, 859, 195, 1084, 195,
1186 195, 551, 195, 1431, 195, 195, 245, 245, 267, 245,
1187 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
1188 245, 344, 344, 1080, 344, 344, 344, 344, 344, 344,
1189 344, 344, 344, 344, 344, 344, 395, 395, 1079, 395,
1190
1191 395, 395, 395, 395, 395, 395, 395, 395, 395, 395,
1192 395, 398, 1078, 1077, 1076, 1075, 551, 398, 1074, 1073,
1193 398, 398, 398, 398, 413, 413, 413, 413, 1072, 413,
1194 413, 1071, 413, 413, 1070, 413, 1069, 413, 413, 431,
1195 431, 431, 431, 859, 431, 431, 1068, 431, 431, 1067,
1196 431, 431, 1066, 431, 460, 460, 460, 1065, 1064, 460,
1197 460, 460, 1063, 551, 460, 460, 460, 460, 460, 539,
1198 539, 539, 539, 859, 539, 539, 1062, 539, 539, 1061,
1199 539, 1060, 539, 539, 557, 557, 557, 557, 1059, 557,
1200 557, 1058, 557, 557, 1057, 557, 557, 1056, 557, 710,
1201
1202 1055, 822, 551, 267, 267, 859, 1053, 1052, 710, 710,
1203 710, 710, 731, 731, 731, 731, 195, 731, 731, 462,
1204 731, 731, 461, 731, 461, 1009, 731, 761, 761, 761,
1205 761, 761, 761, 761, 761, 160, 1008, 761, 761, 761,
1206 761, 761, 765, 765, 1007, 1006, 751, 1005, 425, 1431,
1207 160, 765, 1001, 765, 765, 765, 839, 839, 839, 839,
1208 1000, 839, 839, 999, 839, 839, 998, 839, 997, 996,
1209 839, 972, 425, 995, 972, 994, 972, 972, 975, 975,
1210 975, 975, 993, 975, 975, 992, 975, 975, 991, 975,
1211 990, 751, 975, 1011, 1011, 989, 988, 1011, 987, 1011,
1212
1213 986, 985, 1011, 984, 1011, 1011, 1054, 1054, 1054, 1054,
1214 425, 1054, 1054, 751, 1054, 1054, 983, 1054, 982, 981,
1215 1054, 980, 979, 978, 977, 976, 714, 425, 160, 160,
1216 751, 974, 973, 396, 971, 970, 969, 968, 674, 967,
1217 966, 965, 964, 963, 962, 961, 368, 960, 959, 958,
1218 957, 956, 955, 954, 953, 952, 951, 950, 949, 948,
1219 947, 946, 945, 944, 943, 674, 940, 368, 939, 938,
1220 937, 936, 935, 674, 368, 934, 933, 932, 931, 928,
1221 927, 674, 926, 368, 925, 924, 674, 921, 920, 919,
1222 918, 917, 612, 916, 915, 914, 913, 912, 911, 910,
1223
1224 317, 909, 908, 907, 906, 905, 904, 903, 902, 901,
1225 900, 899, 898, 897, 896, 895, 894, 893, 892, 612,
1226 888, 317, 887, 886, 885, 884, 883, 612, 317, 882,
1227 881, 880, 879, 876, 875, 612, 874, 317, 873, 872,
1228 612, 869, 868, 867, 866, 865, 551, 864, 863, 862,
1229 861, 860, 859, 858, 267, 857, 856, 855, 854, 853,
1230 852, 851, 850, 849, 848, 847, 846, 845, 844, 843,
1231 842, 841, 840, 551, 838, 267, 837, 836, 835, 834,
1232 833, 551, 267, 832, 831, 830, 829, 826, 825, 551,
1233 824, 267, 823, 822, 551, 819, 818, 462, 461, 792,
1234
1235 462, 461, 767, 461, 760, 759, 758, 757, 425, 756,
1236 755, 754, 753, 752, 751, 750, 160, 749, 748, 747,
1237 746, 745, 744, 743, 742, 741, 740, 739, 738, 737,
1238 736, 735, 734, 733, 732, 425, 730, 160, 729, 728,
1239 727, 726, 725, 425, 160, 724, 723, 722, 721, 718,
1240 717, 425, 716, 160, 715, 714, 425, 711, 397, 396,
1241 708, 707, 706, 703, 702, 699, 695, 694, 689, 685,
1242 679, 678, 368, 677, 676, 675, 111, 672, 671, 368,
1243 670, 669, 666, 665, 664, 656, 655, 652, 651, 650,
1244 649, 368, 648, 647, 646, 645, 642, 641, 638, 634,
1245
1246 633, 628, 624, 617, 616, 317, 615, 614, 613, 88,
1247 610, 609, 317, 608, 607, 604, 603, 602, 593, 592,
1248 589, 588, 587, 586, 317, 585, 584, 583, 582, 579,
1249 578, 575, 571, 570, 565, 561, 558, 556, 555, 267,
1250 554, 553, 552, 1431, 549, 548, 267, 547, 546, 543,
1251 542, 541, 540, 534, 533, 530, 529, 528, 527, 267,
1252 526, 195, 462, 461, 458, 457, 456, 453, 452, 449,
1253 445, 444, 439, 435, 432, 430, 429, 160, 428, 427,
1254 426, 1431, 423, 422, 160, 421, 420, 417, 416, 415,
1255 414, 408, 407, 404, 403, 402, 401, 160, 400, 137,
1256
1257 137, 396, 394, 379, 371, 370, 367, 343, 328, 320,
1258 319, 316, 293, 278, 270, 269, 266, 186, 171, 163,
1259 162, 159, 137, 1431, 67, 67, 11, 1431, 1431, 1431,
1260 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1261 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1262 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1263 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1264 1431
1265 } ;
1266
1267 static yyconst short int yy_chk[3172] =
1268 { 0,
1269 1, 1, 1, 1, 138, 1, 1, 1, 1, 1,
1270 1, 3, 1, 1, 4, 1, 6, 3, 138, 17,
1271 4, 17, 18, 25, 135, 18, 21, 135, 30, 6,
1272 20, 21, 30, 25, 21, 20, 25, 20, 31, 25,
1273 31, 30, 1, 1, 2, 2, 2, 2, 2, 2,
1274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1275 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1276 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1277 2, 2, 2, 2, 2, 2, 2, 2, 5, 5,
1278 5, 5, 22, 5, 5, 5, 5, 5, 5, 22,
1279
1280 5, 5, 22, 5, 23, 22, 24, 27, 24, 32,
1281 34, 34, 32, 23, 27, 36, 44, 37, 24, 75,
1282 36, 34, 37, 23, 34, 42, 75, 42, 878, 44,
1283 5, 5, 7, 7, 7, 7, 7, 7, 7, 7,
1284 7, 7, 7, 7, 7, 7, 35, 7, 38, 35,
1285 45, 45, 69, 38, 79, 45, 79, 69, 35, 47,
1286 69, 45, 879, 47, 47, 35, 55, 47, 47, 80,
1287 47, 55, 80, 55, 7, 7, 8, 8, 8, 8,
1288 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1289 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1290
1291 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1292 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1293 12, 12, 12, 12, 12, 12, 12, 102, 12, 102,
1294 12, 12, 12, 12, 12, 112, 12, 12, 12, 12,
1295 12, 12, 12, 14, 14, 112, 14, 14, 14, 14,
1296 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1297 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1298 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1299 14, 14, 14, 14, 14, 14, 14, 16, 16, 880,
1300 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1301
1302 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1303 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1304 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1305 16, 46, 46, 53, 58, 49, 46, 881, 58, 58,
1306 53, 58, 46, 49, 49, 53, 98, 53, 49, 50,
1307 49, 50, 84, 98, 49, 51, 50, 84, 50, 46,
1308 882, 50, 51, 52, 46, 51, 46, 48, 51, 103,
1309 52, 51, 103, 52, 48, 125, 52, 48, 125, 48,
1310 48, 56, 54, 54, 48, 56, 48, 54, 56, 54,
1311 883, 56, 70, 57, 56, 57, 59, 57, 57, 70,
1312
1313 57, 62, 70, 78, 59, 70, 62, 78, 62, 59,
1314 63, 59, 60, 60, 63, 63, 78, 60, 192, 63,
1315 85, 63, 60, 60, 60, 85, 60, 61, 64, 68,
1316 61, 192, 71, 64, 68, 61, 68, 884, 64, 61,
1317 61, 71, 61, 64, 86, 64, 61, 65, 65, 86,
1318 73, 71, 65, 72, 65, 72, 82, 82, 885, 83,
1319 73, 886, 83, 73, 887, 72, 73, 82, 90, 90,
1320 82, 83, 107, 124, 95, 124, 95, 107, 83, 88,
1321 88, 88, 88, 88, 88, 88, 95, 88, 888, 88,
1322 88, 88, 88, 88, 892, 88, 88, 88, 88, 88,
1323
1324 88, 88, 91, 92, 94, 93, 96, 91, 92, 91,
1325 154, 92, 93, 94, 154, 93, 96, 101, 93, 96,
1326 893, 101, 96, 94, 105, 105, 120, 108, 106, 109,
1327 101, 106, 108, 120, 109, 105, 113, 114, 105, 129,
1328 106, 113, 114, 113, 129, 114, 180, 106, 111, 111,
1329 111, 111, 111, 111, 111, 180, 111, 894, 111, 111,
1330 111, 111, 111, 116, 111, 111, 111, 111, 111, 111,
1331 111, 115, 116, 117, 895, 117, 118, 173, 115, 127,
1332 127, 115, 116, 123, 115, 117, 118, 123, 128, 118,
1333 127, 128, 118, 127, 130, 173, 123, 131, 896, 130,
1334
1335 128, 161, 131, 145, 145, 148, 148, 128, 149, 161,
1336 169, 174, 171, 149, 171, 169, 178, 177, 261, 183,
1337 178, 183, 261, 197, 171, 177, 189, 174, 189, 193,
1338 193, 195, 197, 290, 193, 290, 195, 197, 195, 197,
1339 193, 198, 198, 252, 252, 199, 396, 198, 200, 198,
1340 199, 199, 199, 200, 200, 200, 201, 201, 202, 396,
1341 204, 201, 203, 201, 205, 256, 202, 203, 203, 203,
1342 256, 202, 204, 202, 206, 206, 205, 204, 281, 204,
1343 206, 205, 206, 205, 207, 209, 255, 255, 210, 207,
1344 209, 207, 209, 210, 281, 210, 207, 331, 207, 208,
1345
1346 208, 208, 208, 382, 208, 208, 208, 208, 208, 208,
1347 211, 208, 208, 331, 208, 211, 212, 211, 212, 382,
1348 276, 212, 212, 212, 213, 276, 213, 214, 214, 268,
1349 284, 213, 214, 213, 214, 208, 216, 268, 284, 215,
1350 216, 208, 208, 215, 215, 216, 215, 216, 217, 219,
1351 897, 219, 318, 217, 217, 217, 219, 219, 219, 220,
1352 318, 278, 221, 278, 220, 287, 220, 221, 221, 221,
1353 222, 222, 223, 278, 287, 225, 222, 223, 222, 223,
1354 224, 223, 402, 225, 306, 224, 224, 224, 225, 306,
1355 225, 226, 226, 226, 226, 402, 226, 226, 226, 226,
1356
1357 226, 226, 228, 226, 226, 227, 226, 226, 233, 227,
1358 227, 280, 233, 228, 227, 898, 227, 233, 228, 233,
1359 228, 230, 230, 229, 229, 229, 230, 285, 230, 280,
1360 231, 285, 330, 226, 226, 229, 231, 232, 229, 234,
1361 234, 231, 311, 231, 899, 234, 311, 234, 231, 232,
1362 330, 235, 326, 232, 232, 235, 232, 326, 236, 235,
1363 235, 900, 235, 236, 334, 236, 237, 369, 237, 236,
1364 238, 237, 334, 237, 238, 369, 239, 302, 302, 238,
1365 239, 238, 305, 305, 240, 239, 346, 239, 240, 240,
1366 241, 240, 241, 242, 241, 328, 346, 328, 242, 241,
1367
1368 243, 241, 335, 242, 243, 242, 335, 328, 244, 243,
1369 362, 243, 244, 244, 362, 244, 307, 307, 307, 307,
1370 901, 307, 307, 307, 307, 307, 307, 337, 307, 307,
1371 340, 307, 340, 353, 353, 357, 337, 356, 356, 377,
1372 357, 379, 385, 379, 377, 386, 381, 388, 902, 386,
1373 385, 903, 307, 379, 904, 391, 388, 391, 307, 307,
1374 325, 325, 325, 325, 381, 325, 325, 325, 325, 325,
1375 325, 397, 325, 325, 398, 325, 325, 410, 410, 459,
1376 662, 459, 462, 462, 468, 397, 464, 464, 398, 471,
1377 662, 464, 468, 464, 471, 905, 471, 468, 906, 468,
1378
1379 536, 536, 325, 325, 358, 358, 358, 358, 465, 358,
1380 358, 358, 358, 358, 358, 465, 358, 358, 465, 358,
1381 466, 465, 467, 907, 462, 528, 469, 466, 908, 467,
1382 466, 909, 467, 466, 910, 467, 469, 472, 528, 472,
1383 358, 469, 472, 469, 472, 911, 358, 358, 376, 376,
1384 376, 376, 913, 376, 376, 376, 376, 376, 376, 914,
1385 376, 376, 470, 376, 376, 473, 470, 470, 474, 470,
1386 473, 473, 473, 475, 595, 595, 482, 482, 476, 476,
1387 474, 475, 482, 476, 482, 474, 475, 474, 475, 476,
1388 376, 376, 461, 461, 461, 461, 461, 461, 461, 479,
1389
1390 461, 480, 483, 915, 483, 916, 461, 917, 481, 483,
1391 479, 483, 918, 480, 484, 479, 481, 479, 480, 485,
1392 480, 481, 484, 481, 485, 486, 485, 484, 487, 484,
1393 600, 600, 919, 461, 620, 620, 487, 486, 658, 658,
1394 493, 487, 486, 487, 486, 488, 488, 489, 493, 920,
1395 488, 489, 488, 493, 921, 493, 489, 922, 489, 490,
1396 490, 490, 490, 492, 490, 490, 490, 490, 490, 490,
1397 491, 490, 490, 923, 490, 492, 491, 891, 891, 499,
1398 492, 491, 492, 491, 495, 496, 496, 499, 495, 495,
1399 496, 495, 499, 925, 499, 587, 496, 926, 500, 927,
1400
1401 928, 490, 490, 500, 501, 500, 500, 650, 587, 501,
1402 501, 501, 502, 503, 502, 929, 930, 503, 504, 502,
1403 650, 502, 503, 504, 503, 504, 505, 931, 681, 932,
1404 506, 505, 508, 505, 506, 506, 507, 506, 681, 933,
1405 508, 507, 934, 507, 509, 508, 935, 508, 510, 509,
1406 509, 509, 511, 510, 936, 510, 513, 511, 511, 511,
1407 512, 513, 512, 513, 515, 512, 937, 512, 514, 514,
1408 516, 938, 515, 514, 939, 514, 940, 515, 516, 515,
1409 518, 517, 517, 516, 518, 516, 517, 519, 517, 518,
1410 520, 518, 519, 521, 519, 520, 520, 520, 522, 523,
1411
1412 765, 765, 521, 764, 764, 765, 943, 521, 944, 521,
1413 522, 523, 524, 945, 524, 522, 523, 522, 523, 524,
1414 946, 524, 612, 612, 612, 612, 947, 612, 612, 612,
1415 612, 612, 612, 752, 612, 612, 767, 612, 752, 948,
1416 766, 766, 752, 768, 767, 764, 949, 950, 768, 767,
1417 768, 767, 769, 773, 951, 952, 769, 769, 773, 769,
1418 773, 953, 954, 955, 612, 612, 674, 674, 674, 674,
1419 956, 674, 674, 674, 674, 674, 674, 771, 674, 674,
1420 771, 674, 766, 772, 957, 771, 958, 771, 772, 774,
1421 959, 774, 960, 772, 775, 772, 774, 777, 774, 775,
1422
1423 775, 775, 777, 961, 777, 962, 964, 965, 674, 674,
1424 762, 762, 762, 762, 762, 762, 762, 776, 762, 966,
1425 779, 776, 779, 967, 762, 778, 776, 779, 776, 779,
1426 778, 778, 778, 780, 780, 783, 781, 785, 968, 780,
1427 781, 780, 785, 783, 785, 781, 942, 781, 783, 969,
1428 783, 762, 770, 770, 770, 770, 942, 770, 770, 770,
1429 770, 770, 770, 970, 770, 770, 782, 770, 971, 784,
1430 782, 782, 786, 782, 784, 784, 784, 786, 973, 786,
1431 787, 787, 790, 791, 792, 787, 974, 976, 791, 793,
1432 791, 787, 792, 790, 770, 770, 977, 792, 790, 792,
1433
1434 790, 793, 794, 795, 796, 794, 793, 794, 793, 794,
1435 978, 979, 796, 980, 797, 795, 981, 796, 797, 796,
1436 795, 798, 795, 797, 799, 797, 798, 982, 798, 799,
1437 799, 799, 800, 983, 984, 801, 800, 800, 802, 800,
1438 801, 801, 801, 803, 803, 804, 802, 805, 803, 804,
1439 803, 802, 985, 802, 804, 806, 804, 805, 860, 807,
1440 986, 807, 805, 860, 805, 806, 807, 860, 807, 808,
1441 806, 987, 806, 988, 808, 810, 808, 989, 808, 812,
1442 810, 811, 990, 991, 810, 812, 811, 813, 811, 810,
1443 812, 810, 812, 813, 814, 992, 993, 815, 813, 814,
1444
1445 813, 814, 815, 815, 815, 816, 817, 818, 912, 816,
1446 816, 994, 816, 912, 817, 818, 995, 912, 996, 817,
1447 818, 817, 818, 872, 872, 872, 872, 997, 872, 872,
1448 872, 872, 872, 872, 963, 872, 872, 998, 872, 963,
1449 999, 1000, 1001, 963, 1002, 1003, 1004, 1005, 1006, 1007,
1450 1008, 1009, 1010, 1010, 1011, 1011, 1016, 1010, 1017, 1011,
1451 1012, 1012, 1018, 1052, 1053, 872, 872, 924, 924, 924,
1452 924, 1055, 924, 924, 924, 924, 924, 924, 1013, 924,
1453 924, 1013, 924, 1013, 1014, 1013, 1015, 1015, 1056, 1019,
1454 1057, 1015, 1058, 1014, 1019, 1059, 1019, 1015, 1014, 1020,
1455
1456 1014, 1020, 1012, 1021, 1022, 1060, 1020, 1061, 1020, 924,
1457 924, 1021, 1022, 1024, 1062, 1063, 1021, 1022, 1021, 1022,
1458 1023, 1064, 1065, 1024, 1023, 1066, 1026, 1025, 1024, 1023,
1459 1024, 1023, 1025, 1027, 1025, 1026, 1028, 1067, 1028, 1068,
1460 1026, 1027, 1026, 1028, 1069, 1028, 1027, 1029, 1027, 1029,
1461 1030, 1070, 1029, 1030, 1029, 1030, 1031, 1030, 1033, 1032,
1462 1071, 1031, 1031, 1031, 1032, 1032, 1032, 1034, 1033, 1072,
1463 1036, 1073, 1074, 1033, 1035, 1033, 1075, 1034, 1036, 1035,
1464 1035, 1035, 1034, 1036, 1034, 1036, 1037, 1038, 1039, 1040,
1465 1076, 1037, 1077, 1037, 1078, 1039, 1038, 1043, 1079, 1040,
1466
1467 1039, 1038, 1039, 1038, 1040, 1041, 1040, 1080, 1042, 1043,
1468 1041, 1041, 1041, 1042, 1043, 1044, 1043, 1045, 1042, 1081,
1469 1042, 1082, 1046, 1044, 1083, 1084, 1045, 1085, 1044, 1086,
1470 1044, 1045, 1048, 1045, 1046, 1047, 1087, 1050, 1088, 1046,
1471 1047, 1046, 1047, 1049, 1048, 1089, 1090, 1049, 1094, 1048,
1472 1050, 1048, 1049, 1051, 1049, 1050, 1051, 1050, 1051, 1095,
1473 1051, 1093, 1093, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
1474 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
1475 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122,
1476 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1131, 1132, 1133,
1477
1478 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1131, 1141, 1142,
1479 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
1480 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
1481 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
1482 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
1483 1183, 1184, 1185, 1186, 1187, 1198, 1206, 1207, 1208, 1187,
1484 1188, 1187, 1189, 1186, 1192, 1188, 1188, 1188, 1186, 1190,
1485 1186, 1209, 1189, 1190, 1191, 1210, 1192, 1189, 1190, 1189,
1486 1190, 1192, 1191, 1192, 1211, 1193, 1193, 1191, 1194, 1191,
1487 1193, 1212, 1193, 1195, 1196, 1213, 1194, 1214, 1195, 1195,
1488
1489 1195, 1194, 1196, 1194, 1215, 1216, 1197, 1196, 1200, 1196,
1490 1197, 1197, 1199, 1197, 1217, 1200, 1218, 1199, 1199, 1199,
1491 1200, 1219, 1200, 1201, 1201, 1202, 1220, 1221, 1203, 1201,
1492 1203, 1201, 1204, 1202, 1204, 1203, 1222, 1203, 1202, 1204,
1493 1202, 1204, 1205, 1223, 1224, 1225, 1226, 1205, 1205, 1205,
1494 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
1495 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
1496 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
1497 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
1498 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
1499
1500 1277, 1278, 1279, 1280, 1281, 1282, 1285, 1294, 1295, 1296,
1501 1285, 1285, 1281, 1285, 1284, 1280, 1297, 1281, 1282, 1281,
1502 1280, 1283, 1280, 1282, 1284, 1282, 1283, 1283, 1283, 1284,
1503 1286, 1284, 1287, 1290, 1298, 1299, 1287, 1287, 1286, 1287,
1504 1289, 1290, 1288, 1286, 1288, 1286, 1290, 1288, 1290, 1288,
1505 1289, 1291, 1300, 1292, 1301, 1289, 1302, 1289, 1303, 1291,
1506 1293, 1304, 1292, 1305, 1291, 1306, 1291, 1292, 1293, 1292,
1507 1307, 1308, 1309, 1293, 1310, 1293, 1311, 1312, 1313, 1314,
1508 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324,
1509 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334,
1510
1511 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344,
1512 1348, 1349, 1342, 1350, 1342, 1351, 1352, 1344, 1343, 1345,
1513 1353, 1354, 1344, 1343, 1344, 1343, 1347, 1346, 1345, 1355,
1514 1356, 1346, 1346, 1345, 1346, 1345, 1357, 1358, 1347, 1359,
1515 1360, 1361, 1362, 1347, 1363, 1347, 1364, 1365, 1366, 1367,
1516 1368, 1369, 1370, 1371, 1372, 1374, 1373, 1370, 1370, 1370,
1517 1375, 1373, 1372, 1373, 1376, 1371, 1377, 1372, 1378, 1372,
1518 1371, 1379, 1371, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
1519 1387, 1388, 1389, 1392, 1393, 1390, 1394, 1389, 1391, 1389,
1520 1390, 1390, 1390, 1391, 1391, 1391, 1395, 1396, 1397, 1398,
1521
1522 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1403,
1523 1403, 1403, 1408, 1409, 1410, 1411, 1412, 1413, 1404, 1414,
1524 1415, 1416, 1417, 1404, 1418, 1404, 1412, 1419, 1420, 1421,
1525 1422, 1412, 1423, 1412, 1417, 1422, 1424, 1422, 1425, 1417,
1526 1426, 1417, 1427, 1428, 1429, 1430, 877, 1427, 1427, 1427,
1527 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
1528 1432, 1432, 1432, 1432, 1432, 1433, 1433, 1433, 1433, 1433,
1529 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
1530 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434, 1434,
1531 1434, 1434, 1434, 1434, 1434, 1435, 1435, 1435, 1435, 1435,
1532
1533 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435, 1435,
1534 1436, 876, 875, 874, 873, 871, 870, 869, 868, 1436,
1535 867, 1436, 1436, 1437, 1437, 866, 1437, 1437, 1437, 865,
1536 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1438, 1438,
1537 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438, 1438,
1538 1438, 1438, 1438, 1439, 1439, 864, 863, 1439, 862, 1439,
1539 1439, 861, 1439, 859, 1439, 1439, 1440, 1440, 858, 1440,
1540 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440, 1440,
1541 1440, 1441, 1441, 857, 1441, 1441, 1441, 1441, 1441, 1441,
1542 1441, 1441, 1441, 1441, 1441, 1441, 1442, 1442, 856, 1442,
1543
1544 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442, 1442,
1545 1442, 1443, 855, 854, 853, 852, 851, 1443, 850, 849,
1546 1443, 1443, 1443, 1443, 1444, 1444, 1444, 1444, 848, 1444,
1547 1444, 847, 1444, 1444, 846, 1444, 845, 1444, 1444, 1445,
1548 1445, 1445, 1445, 844, 1445, 1445, 843, 1445, 1445, 842,
1549 1445, 1445, 841, 1445, 1446, 1446, 1446, 840, 838, 1446,
1550 1446, 1446, 837, 836, 1446, 1446, 1446, 1446, 1446, 1447,
1551 1447, 1447, 1447, 835, 1447, 1447, 834, 1447, 1447, 833,
1552 1447, 832, 1447, 1447, 1448, 1448, 1448, 1448, 831, 1448,
1553 1448, 830, 1448, 1448, 829, 1448, 1448, 828, 1448, 1449,
1554
1555 827, 826, 825, 824, 823, 821, 820, 819, 1449, 1449,
1556 1449, 1449, 1450, 1450, 1450, 1450, 809, 1450, 1450, 789,
1557 1450, 1450, 788, 1450, 761, 760, 1450, 1451, 1451, 1451,
1558 1451, 1451, 1451, 1451, 1451, 759, 758, 1451, 1451, 1451,
1559 1451, 1451, 1452, 1452, 757, 756, 755, 754, 753, 751,
1560 750, 1452, 749, 1452, 1452, 1452, 1453, 1453, 1453, 1453,
1561 748, 1453, 1453, 747, 1453, 1453, 746, 1453, 745, 744,
1562 1453, 1454, 743, 742, 1454, 741, 1454, 1454, 1455, 1455,
1563 1455, 1455, 740, 1455, 1455, 739, 1455, 1455, 738, 1455,
1564 737, 736, 1455, 1456, 1456, 735, 734, 1456, 733, 1456,
1565
1566 732, 730, 1456, 729, 1456, 1456, 1457, 1457, 1457, 1457,
1567 728, 1457, 1457, 727, 1457, 1457, 726, 1457, 725, 724,
1568 1457, 723, 722, 721, 720, 719, 718, 717, 716, 715,
1569 713, 712, 711, 709, 708, 707, 706, 705, 704, 703,
1570 702, 701, 700, 699, 698, 697, 696, 695, 694, 693,
1571 692, 691, 690, 689, 688, 687, 686, 685, 684, 683,
1572 682, 679, 678, 677, 676, 675, 673, 672, 671, 670,
1573 669, 668, 667, 666, 665, 664, 663, 660, 659, 657,
1574 656, 655, 654, 653, 652, 651, 649, 648, 647, 646,
1575 645, 644, 643, 642, 641, 640, 639, 638, 637, 636,
1576
1577 635, 634, 633, 632, 631, 630, 629, 628, 627, 626,
1578 625, 624, 623, 622, 621, 617, 616, 615, 614, 613,
1579 611, 610, 609, 608, 607, 606, 605, 604, 603, 602,
1580 601, 597, 596, 594, 593, 592, 591, 590, 589, 588,
1581 586, 585, 584, 583, 582, 581, 580, 579, 578, 577,
1582 576, 575, 574, 573, 572, 571, 570, 569, 568, 567,
1583 566, 565, 564, 563, 562, 561, 560, 559, 558, 556,
1584 555, 554, 553, 552, 550, 549, 548, 547, 546, 545,
1585 544, 543, 542, 541, 540, 538, 537, 535, 534, 533,
1586 532, 531, 530, 529, 527, 526, 525, 498, 497, 494,
1587
1588 478, 477, 463, 460, 458, 457, 456, 455, 454, 453,
1589 452, 451, 450, 449, 448, 447, 446, 445, 444, 443,
1590 442, 441, 440, 439, 438, 437, 436, 435, 434, 433,
1591 432, 430, 429, 428, 427, 426, 424, 423, 422, 421,
1592 420, 419, 418, 417, 416, 415, 414, 412, 411, 409,
1593 408, 407, 406, 405, 404, 403, 401, 400, 399, 395,
1594 394, 393, 392, 390, 389, 387, 384, 383, 380, 378,
1595 375, 374, 373, 372, 371, 370, 368, 367, 366, 365,
1596 364, 363, 361, 360, 359, 355, 354, 352, 351, 350,
1597 349, 348, 347, 343, 342, 341, 339, 338, 336, 333,
1598
1599 332, 329, 327, 324, 323, 322, 321, 320, 319, 317,
1600 316, 315, 314, 313, 312, 310, 309, 308, 304, 303,
1601 301, 300, 299, 298, 297, 296, 293, 292, 291, 289,
1602 288, 286, 283, 282, 279, 277, 275, 274, 273, 272,
1603 271, 270, 269, 267, 266, 265, 264, 263, 262, 260,
1604 259, 258, 257, 254, 253, 251, 250, 249, 248, 247,
1605 246, 218, 196, 194, 186, 185, 184, 182, 181, 179,
1606 176, 175, 172, 170, 168, 167, 166, 165, 164, 163,
1607 162, 160, 159, 158, 157, 156, 155, 153, 152, 151,
1608 150, 147, 146, 144, 143, 142, 141, 140, 139, 137,
1609
1610 136, 134, 132, 126, 122, 121, 119, 110, 104, 100,
1611 99, 97, 87, 81, 77, 76, 74, 39, 33, 29,
1612 28, 26, 19, 11, 10, 9, 1431, 1431, 1431, 1431,
1613 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1614 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1615 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1616 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431, 1431,
1617 1431
1618 } ;
1619
1620 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1621 static char *yy_full_match;
1622 static int yy_lp;
1623 static int yy_looking_for_trail_begin = 0;
1624 static int yy_full_lp;
1625 static int *yy_full_state;
1626 #define YY_TRAILING_MASK 0x2000
1627 #define YY_TRAILING_HEAD_MASK 0x4000
1628 #define REJECT \
1629 { \
1630 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1631 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1632 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
1633 yy_state_ptr = yy_full_state; /* restore orig. state */ \
1634 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
1635 ++yy_lp; \
1636 goto find_rule; \
1637 }
1638 static int yy_more_flag = 0;
1639 static int yy_more_len = 0;
1640 #define yymore() (yy_more_flag = 1)
1641 #define YY_MORE_ADJ yy_more_len
1642 char *yytext;
1643 #define INITIAL 0
1644 #define VERSION "4.0"
1645
1646 #ifndef DEFAULT
1647 #define DEFAULT "Courier"
1648 #endif
1649 #ifndef COMMENT
1650 #define COMMENT "Helvetica-Oblique"
1651 #endif
1652 #ifndef PREPROC
1653 #define PREPROC "Courier-BoldOblique"
1654 #endif
1655 #ifndef KEYWORD
1656 #define KEYWORD "Courier-Bold"
1657 #endif
1658 #ifndef TYPE
1659 #define TYPE "Courier-Bold"
1660 #endif
1661 #ifndef STRINGS
1662 #define STRINGS "Courier-Oblique"
1663 #endif
1664 #ifndef LNUMBER
1665 #define LNUMBER "Times-Roman"
1666 #endif
1667 #ifndef FUNCTION
1668 #define FUNCTION "Bookman-LightItalic"
1669 #endif
1670 #ifndef DIM
1671 #define DIM 0.75
1672 #endif
1673
1674 #define ISO "\n"\
1675 "%%%%BeginProlog \n"\
1676 "/reencdict 12 dict def /ReEncode { reencdict begin \n"\
1677 "/newcodesandnames exch def /newfontname exch def /basefontname exch def \n"\
1678 "/basefontdict basefontname findfont def /newfont basefontdict maxlength dict \n"\
1679 "def basefontdict { exch dup /FID ne { dup /Encoding eq \n"\
1680 "{ exch dup length array copy newfont 3 1 roll put } \n"\
1681 "{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall \n"\
1682 "newfont /FontName newfontname put newcodesandnames aload pop \n"\
1683 "128 1 255 { newfont /Encoding get exch /.notdef put } for \n"\
1684 "newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat \n"\
1685 "newfontname newfont definefont pop end } def \n"\
1686 "/isovec [ \n"\
1687 "8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde \n"\
1688 "8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis \n"\
1689 "8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron \n"\
1690 "8#220 /dotlessi 8#230 /oe 8#231 /OE \n"\
1691 "8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling \n"\
1692 "8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis \n"\
1693 "8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot \n"\
1694 "8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus \n"\
1695 "8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph\n"\
1696 "8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine \n"\
1697 "8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf \n"\
1698 "8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute \n"\
1699 "8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring \n"\
1700 "8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute \n"\
1701 "8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute \n"\
1702 "8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve \n"\
1703 "8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply\n"\
1704 "8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex \n"\
1705 "8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave \n"\
1706 "8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring \n"\
1707 "8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute \n"\
1708 "8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute \n"\
1709 "8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve \n"\
1710 "8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide \n"\
1711 "8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex \n"\
1712 "8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def \n"\
1713 "%%%%EndProlog\n\n"
1714
1715 #define FILLEDBOX "\n"\
1716 "/FilledBox {\n"\
1717 " gsave\n"\
1718 " newpath\n"\
1719 " moveto 2 copy\n"\
1720 " 0 exch rlineto\n"\
1721 " 0 rlineto\n"\
1722 " 2 copy\n"\
1723 " neg 0 exch rlineto \n"\
1724 " pop\n"\
1725 " currentpoint\n"\
1726 " closepath\n"\
1727 " 0.95 setgray fill\n"\
1728 " grestore\n"\
1729 " gsave\n"\
1730 " newpath\n"\
1731 " moveto\n"\
1732 " dup 0 exch rlineto\n"\
1733 " 1 1 rlineto\n"\
1734 " 2 add neg 0 exch rlineto\n"\
1735 " 2 add neg 0 rlineto\n"\
1736 " 1 1 rlineto\n"\
1737 " closepath\n"\
1738 " 0.85 setgray fill\n"\
1739 " grestore\n"\
1740 "} def\n"
1741
1742 #define INOUTFUNCTIONS "\n"\
1743 "/DrawArrow { \n"\
1744 " gsave 0.6 setlinewidth\n"\
1745 " newpath\n"\
1746 " moveto 1 setgray -5 3 rlineto currentpoint stroke\n"\
1747 " moveto 0.83 setgray 17 -3 rlineto currentpoint stroke\n"\
1748 " moveto 1 setgray -17 -3 rlineto currentpoint stroke\n"\
1749 " moveto 0.83 setgray 5 3 rlineto stroke\n"\
1750 " closepath\n"\
1751 " grestore\n"\
1752 "} def\n\n"\
1753 "/InFunction {\ngsave 0 setgray \n"\
1754 "dup length 0 eq\n{ pop }\n{ 385 812 DrawArrow\ngsave\n"\
1755 "newpath 380 795 moveto 517 795 lineto 517 820 lineto 380 820 lineto "\
1756 "closepath clip\n/Times-Italic findfont 8 scalefont setfont\n"\
1757 "400 810 moveto s\ngrestore } ifelse\ngrestore\n} def\n\n"\
1758 "/OutFunction {\ngsave 0 setgray \n"\
1759 "\ndup length 0 eq\n{ pop }\n{507 803 DrawArrow\ngsave\n"\
1760 "newpath 380 795 moveto 517 795 lineto 517 820 lineto 380 820 lineto "\
1761 "closepath clip\n/Times-Italic findfont 8 scalefont setfont\n"\
1762 "dup stringwidth pop neg 500 add 801 moveto s\ngrestore } ifelse\n"\
1763 "grestore\n} def\n\n"
1764
1765 #define FUNCTIONBOX \
1766 "/FunctionBox {\n"\
1767 " gsave\n"\
1768 " 100 10 475 782 FilledBox\n"\
1769 " 0 setgray\n"\
1770 " /Times-BoldItalic findfont 8 scalefont setfont\n"\
1771 " (Functions) dup stringwidth pop 2 div neg 525 add 784 moveto s\n\n"\
1772 " /inds exch def\n"\
1773 " 475 773 moveto\n"\
1774 " counttomark 2 div cvi\n"\
1775 " {\n"\
1776 " currentpoint exch pop 575 exch moveto\n"\
1777 " gsave currentpoint newpath moveto 0 -3 rmoveto 0 inds 1.25 mul rlineto\n"\
1778 " -100 0 rlineto 0 inds 1.25 mul neg rlineto closepath 0.95 setgray fill\n"\
1779 " grestore\n"\
1780 " /Times-Roman findfont inds scalefont setfont\n"\
1781 " currentpoint exch pop 1 index stringwidth pop neg dup 575 add exch\n"\
1782 " 4 1 roll exch moveto -0.5 0 rmoveto s\n"\
1783 " /Times-Italic findfont inds scalefont setfont\n"\
1784 " gsave -4 add currentpoint exch pop 476 exch \n"\
1785 " newpath moveto\n"\
1786 " 0 -20 rlineto 100 add dup 0 rlineto 0 40 rlineto\n"\
1787 " neg 0 rlineto 0 -20 rlineto closepath clip 0.5 0 rmoveto s\n"\
1788 " grestore\n"\
1789 " 0 inds 1 add neg rmoveto\n"\
1790 " } repeat\n"\
1791 " grestore\n"\
1792 " pop\n"\
1793 "} def\n"
1794
1795 #define VERS "\n/ver {\n"\
1796 " gsave 0 setgray 575 822 moveto\n"\
1797 " /Bookman-Light findfont 5 scalefont setfont\n"\
1798 " (c2ps v%s) dup stringwidth pop neg 0 rmoveto s\n"\
1799 " grestore\n\n} def\n"
1800
1801 #define VerMsg \
1802 "c2ps version %s\n"\
1803 "Copyright (C) 1995-1997 Dmitri Shtilman, Dmitri Makarov\n"
1804
1805 #define HelpMsg \
1806 "Usage: c2ps [ -?h124abceikmnruvwx ] [ -F default_font ] [ -C comment_font ]\n"\
1807 " [ -K keyword_font ] [ -N lnumber_font ] [ -P preproc_font ]\n"\
1808 " [ -S string_font ] [ -T type_font ] [ -U function_font ]\n"\
1809 " [ -X nonlatin_font ] [ -d dim_comments ] [ -f fontsize ]\n"\
1810 " [ -l lines ] [ -o output_file ] [ -p paper ]\n"\
1811 " [ -s space ] [ -t tabsize ] [ -_ fun_highlight ]\n"\
1812 " [ -DPREPROC_VAR ... ] [ -UPREPROC_VAR ... ] [ file ... ]\n"
1813
1814 #define BUFL 8192 /* " buffer length */
1815 #define PAGE 790.
1816 #define DUP(x,y) x = (char*)malloc(strlen(y) + 1); strcpy(x,y)
1817 #include <stdio.h>
1818 #include <string.h>
1819 #include <fcntl.h>
1820 #include <time.h>
1821 #include <sys/types.h>
1822 #include <sys/stat.h>
1823
1824 #include <math.h>
1825 #include <paper.h>
1826
1827 struct {
1828 char *name;
1829 int width, height;
1830 } pspec;
1831
1832 FILE* out; /* output stream */
1833
1834 struct fun { /* strucure to hold info about fun id definition */
1835 char* name;
1836 long unsigned page;
1837 long unsigned line;
1838 struct fun *next;
1839 };
1840
1841
1842 /* FLAGS */
1843 unsigned noc = 0; /* global: disable c highlighting */
1844 unsigned number_lines = 1; /* global: number lines */
1845 unsigned line_cut = 0; /* global: cut long lines */
1846 unsigned ppl = 1; /* global: columns per page */
1847 unsigned lpp = 0; /* global: lines per page */
1848 unsigned frame = 0; /* global: draw frame around each column */
1849 unsigned iso = 1; /* global: support ISO Latin 1 encoding */
1850 unsigned last_modified = 1; /* global: print the time when file was last modified */
1851 unsigned header = 1; /* global: print header */
1852 unsigned adjust_comments = 1; /* global: adjust multiple line comments */
1853 unsigned ext = 1; /* global: */
1854 unsigned c_ext = 0; /* global: highlight files according to extension */
1855 unsigned fun_box = 1; /* global: */
1856 unsigned fun_entry_exit = 1; /* global: print fun id's at entry and exit */
1857 unsigned fun_highlight_id = 2; /* global: fun id highlight: 0-none, 1-box,
1858 2-underline (default) */
1859
1860 int tab = 8; /* global: number of spaces in a tab */
1861 float fontsize = 10.; /* global: font size */
1862 float spacing = 0.; /* global: space between the lines */
1863 float dim_comment = DIM; /* global: comment dimming coefficient */
1864
1865 static struct fun *first; /* internal: list of fun structures */
1866 static struct fun *new_fun;
1867 static struct fun *fn;
1868 static struct fun *pr;
1869
1870 static long unsigned line = 0; /* internal: current line within a currently scanned file */
1871 static long unsigned line_on_page = 0; /* internal: line in a local page */
1872 static long unsigned page = 0; /* internal: current page of a currently scanned file */
1873 static long unsigned total_page = 0; /* internal: currently printed page */
1874
1875 static unsigned line_split = 0; /* internal: we are in a subline of a wrapped line */
1876 static unsigned lc = 0; /* internal: */
1877 static unsigned str_length = 0; /* internal: current string length in chars */
1878 static unsigned comment = 0; /* internal: we are within a comment */
1879 static unsigned com_start = 0; /* internal: */
1880 static unsigned comment_many_lines; /* internal: */
1881 static unsigned function_body_expected = 0; /* internal: */
1882 static int nesting = 0; /* internal: current nesting depth */
1883 static float x; /* internal: current x coordinate */
1884 static float chw = 6.; /* internal: */
1885
1886 static char buffer[BUFL]; /* internal */
1887
1888 static char *c; /* internal: */
1889 static char *cur_fun = NULL; /* internal: current function id */
1890
1891 static char **fp = NULL; /* list of names of files to print */
1892 static int fp_cur = -1; /* internal: index of a current file */
1893 static int fp_num = 0; /* internal: number of files to print */
1894
1895 static char **defs = NULL; /* list of defined preprocessor vars */
1896 static int defs_num = 0; /* */
1897 static char **undefs = NULL; /* list of undefined preprocessor vars */
1898 static int undefs_num = 0; /* */
1899 static unsigned dont_print[10];
1900 static unsigned prep_touch[10];
1901 static int pd = 0;
1902
1903 static char date[25]; /* internal: current or last modified date */
1904 static time_t t; /* internal: */
1905 static struct stat b; /* internal: */
1906
1907 static unsigned long processed; /* internal: */
1908 static char ratio[13] = "( )";
1909 static unsigned nonlatin_text = 0;
1910
1911 int PString YY_PROTO((char*));
1912 char* PRatio ();
1913 int PFlush ();
1914 int PFill YY_PROTO((char*));
1915 int PFunctionBox();
1916 int NextPage ();
1917 int NextLine ();
1918 int Version ();
1919 int Help ();
1920 int PCext YY_PROTO((char*));
1921 int IsDefined YY_PROTO((char*));
1922 int IsUndefined YY_PROTO((char*));
1923 #define comm 1
1924
1925 #define preps 2
1926
1927 #define nnested 3
1928
1929 #define dont_highlight 4
1930
1931
1932 /* Macros after this point can all be overridden by user definitions in
1933 * section 1.
1934 */
1935
1936 #ifndef YY_SKIP_YYWRAP
1937 #ifdef __cplusplus
1938 extern "C" int yywrap YY_PROTO(( void ));
1939 #else
1940 extern int yywrap YY_PROTO(( void ));
1941 #endif
1942 #endif
1943
1944 #ifndef YY_NO_UNPUT
1945 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1946 #endif
1947
1948 #ifndef yytext_ptr
1949 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1950 #endif
1951
1952 #ifndef YY_NO_INPUT
1953 #ifdef __cplusplus
1954 static int yyinput YY_PROTO(( void ));
1955 #else
1956 static int input YY_PROTO(( void ));
1957 #endif
1958 #endif
1959
1960 #if YY_STACK_USED
1961 static int yy_start_stack_ptr = 0;
1962 static int yy_start_stack_depth = 0;
1963 static int *yy_start_stack = 0;
1964 #ifndef YY_NO_PUSH_STATE
1965 static void yy_push_state YY_PROTO(( int new_state ));
1966 #endif
1967 #ifndef YY_NO_POP_STATE
1968 static void yy_pop_state YY_PROTO(( void ));
1969 #endif
1970 #ifndef YY_NO_TOP_STATE
1971 static int yy_top_state YY_PROTO(( void ));
1972 #endif
1973
1974 #else
1975 #define YY_NO_PUSH_STATE 1
1976 #define YY_NO_POP_STATE 1
1977 #define YY_NO_TOP_STATE 1
1978 #endif
1979
1980 #ifdef YY_MALLOC_DECL
1981 YY_MALLOC_DECL
1982 #else
1983 #if __STDC__
1984 #ifndef __cplusplus
1985 #include <stdlib.h>
1986 #endif
1987 #else
1988 /* Just try to get by without declaring the routines. This will fail
1989 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1990 * or sizeof(void*) != sizeof(int).
1991 */
1992 #endif
1993 #endif
1994
1995 /* Amount of stuff to slurp up with each read. */
1996 #ifndef YY_READ_BUF_SIZE
1997 #define YY_READ_BUF_SIZE 8192
1998 #endif
1999
2000 /* Copy whatever the last rule matched to the standard output. */
2001
2002 #ifndef ECHO
2003 /* This used to be an fputs(), but since the string might contain NUL's,
2004 * we now use fwrite().
2005 */
2006 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
2007 #endif
2008
2009 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2010 * is returned in "result".
2011 */
2012 #ifndef YY_INPUT
2013 #define YY_INPUT(buf,result,max_size) \
2014 if ( yy_current_buffer->yy_is_interactive ) \
2015 { \
2016 int c = '*', n; \
2017 for ( n = 0; n < max_size && \
2018 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2019 buf[n] = (char) c; \
2020 if ( c == '\n' ) \
2021 buf[n++] = (char) c; \
2022 if ( c == EOF && ferror( yyin ) ) \
2023 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2024 result = n; \
2025 } \
2026 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
2027 && ferror( yyin ) ) \
2028 YY_FATAL_ERROR( "input in flex scanner failed" );
2029 #endif
2030
2031 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2032 * we don't want an extra ';' after the "return" because that will cause
2033 * some compilers to complain about unreachable statements.
2034 */
2035 #ifndef yyterminate
2036 #define yyterminate() return YY_NULL
2037 #endif
2038
2039 /* Number of entries by which start-condition stack grows. */
2040 #ifndef YY_START_STACK_INCR
2041 #define YY_START_STACK_INCR 25
2042 #endif
2043
2044 /* Report a fatal error. */
2045 #ifndef YY_FATAL_ERROR
2046 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2047 #endif
2048
2049 /* Default declaration of generated scanner - a define so the user can
2050 * easily add parameters.
2051 */
2052 #ifndef YY_DECL
2053 #define YY_DECL int yylex YY_PROTO(( void ))
2054 #endif
2055
2056 /* Code executed at the beginning of each rule, after yytext and yyleng
2057 * have been set up.
2058 */
2059 #ifndef YY_USER_ACTION
2060 #define YY_USER_ACTION
2061 #endif
2062
2063 /* Code executed at the end of each rule. */
2064 #ifndef YY_BREAK
2065 #define YY_BREAK break;
2066 #endif
2067
2068 #define YY_RULE_SETUP \
2069 if ( yyleng > 0 ) \
2070 yy_current_buffer->yy_at_bol = \
2071 (yytext[yyleng - 1] == '\n'); \
2072 YY_USER_ACTION
2073
2074 YY_DECL
2075 {
2076 register yy_state_type yy_current_state;
2077 register char *yy_cp, *yy_bp;
2078 register int yy_act;
2079
2080
2081
2082 if ( yy_init )
2083 {
2084 yy_init = 0;
2085
2086 #ifdef YY_USER_INIT
2087 YY_USER_INIT;
2088 #endif
2089
2090 if ( ! yy_start )
2091 yy_start = 1; /* first start state */
2092
2093 if ( ! yyin )
2094 yyin = stdin;
2095
2096 if ( ! yyout )
2097 yyout = stdout;
2098
2099 if ( ! yy_current_buffer )
2100 yy_current_buffer =
2101 yy_create_buffer( yyin, YY_BUF_SIZE );
2102
2103 yy_load_buffer_state();
2104 }
2105
2106 while ( 1 ) /* loops until end-of-file is reached */
2107 {
2108 yy_more_len = 0;
2109 if ( yy_more_flag )
2110 {
2111 yy_more_len = yyleng;
2112 yy_more_flag = 0;
2113 }
2114 yy_cp = yy_c_buf_p;
2115
2116 /* Support of yytext. */
2117 *yy_cp = yy_hold_char;
2118
2119 /* yy_bp points to the position in yy_ch_buf of the start of
2120 * the current run.
2121 */
2122 yy_bp = yy_cp;
2123
2124 yy_current_state = yy_start;
2125 yy_current_state += YY_AT_BOL();
2126 yy_state_ptr = yy_state_buf;
2127 *yy_state_ptr++ = yy_current_state;
2128 yy_match:
2129 do
2130 {
2131 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2132 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2133 {
2134 yy_current_state = (int) yy_def[yy_current_state];
2135 if ( yy_current_state >= 1432 )
2136 yy_c = yy_meta[(unsigned int) yy_c];
2137 }
2138 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2139 *yy_state_ptr++ = yy_current_state;
2140 ++yy_cp;
2141 }
2142 while ( yy_base[yy_current_state] != 3127 );
2143
2144 yy_find_action:
2145 yy_current_state = *--yy_state_ptr;
2146 yy_lp = yy_accept[yy_current_state];
2147 find_rule: /* we branch to this label when backing up */
2148 for ( ; ; ) /* until we find what rule we matched */
2149 {
2150 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2151 {
2152 yy_act = yy_acclist[yy_lp];
2153 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2154 yy_looking_for_trail_begin )
2155 {
2156 if ( yy_act == yy_looking_for_trail_begin )
2157 {
2158 yy_looking_for_trail_begin = 0;
2159 yy_act &= ~YY_TRAILING_HEAD_MASK;
2160 break;
2161 }
2162 }
2163 else if ( yy_act & YY_TRAILING_MASK )
2164 {
2165 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
2166 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
2167 yy_full_match = yy_cp;
2168 yy_full_state = yy_state_ptr;
2169 yy_full_lp = yy_lp;
2170 }
2171 else
2172 {
2173 yy_full_match = yy_cp;
2174 yy_full_state = yy_state_ptr;
2175 yy_full_lp = yy_lp;
2176 break;
2177 }
2178 ++yy_lp;
2179 goto find_rule;
2180 }
2181 --yy_cp;
2182 yy_current_state = *--yy_state_ptr;
2183 yy_lp = yy_accept[yy_current_state];
2184 }
2185
2186 YY_DO_BEFORE_ACTION;
2187
2188
2189 do_action: /* This label is used only to access EOF actions. */
2190
2191
2192 switch ( yy_act )
2193 { /* beginning of action switch */
2194 case 1:
2195 YY_RULE_SETUP
2196 {
2197 PString(yytext);
2198 }
2199 YY_BREAK
2200 case 2:
2201 YY_RULE_SETUP
2202 {
2203 NextLine();
2204 }
2205 YY_BREAK
2206 case 3:
2207 YY_RULE_SETUP
2208 { /*'*/
2209 PFlush();
2210 fprintf(out, "cf fst\n");
2211 PString(yytext);
2212 fprintf(out, "sf\n");
2213 }
2214 YY_BREAK
2215 case 4:
2216 YY_RULE_SETUP
2217 {
2218 PFlush();
2219 while (1)
2220 {
2221 if (pd > 0 &&
2222 dont_print[pd - 1])
2223 break;
2224
2225 comment = 1;
2226 comment_many_lines = 0;
2227 fprintf(out, "cf fco %.2f setgray\n", dim_comment);
2228 com_start = ++str_length;
2229 ++str_length;
2230 fprintf(out, (adjust_comments) ?
2231 "(\\/)s currentpoint pop (*) s " : "(\\/*) s ");
2232 BEGIN(comm);
2233 break;
2234 }
2235 }
2236 YY_BREAK
2237 case 5:
2238 YY_RULE_SETUP
2239 {
2240 c = yytext;
2241 if (adjust_comments)
2242 {
2243 if (comment_many_lines)
2244 {
2245 fprintf(out, " %.2f moveto ", x + fontsize + spacing);
2246 while (*c == ' ' || *c== '\t')
2247 c++;
2248 str_length = com_start;
2249 }
2250 else
2251 fprintf(out, " pop ");
2252 }
2253 PString(c);
2254 fprintf(out, " sf 0 setgray\n");
2255 comment = 0;
2256 BEGIN((nesting<=0)? nnested : INITIAL);
2257 }
2258 YY_BREAK
2259 case 6:
2260 YY_RULE_SETUP
2261 { yymore(); }
2262 YY_BREAK
2263 case 7:
2264 YY_RULE_SETUP
2265 {
2266 c = yytext;
2267 if (adjust_comments && comment_many_lines++)
2268 {
2269 fprintf(out," dup %.2f moveto ", x + fontsize + spacing);
2270 while(*c == ' ' || *c == '\t')
2271 c++;
2272 str_length = com_start;
2273 }
2274 PString(c);
2275 }
2276 YY_BREAK
2277 case 8:
2278 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2279 yy_c_buf_p = yy_cp = yy_bp + 1;
2280 YY_DO_BEFORE_ACTION; /* set up yytext again */
2281 YY_RULE_SETUP
2282 { yymore(); }
2283 YY_BREAK
2284 case 9:
2285 YY_RULE_SETUP
2286 {
2287 PFlush();
2288 while (1)
2289 {
2290 if (pd > 0 &&
2291 prep_touch[pd - 1] &&
2292 dont_print[pd])
2293 break;
2294
2295 comment = 1;
2296 fprintf(out, "cf fco %.2f setgray\n", dim_comment);
2297 PString(yytext);
2298 fprintf(out, "sf 0 setgray\n");
2299 comment = 0;
2300 break;
2301 }
2302 }
2303 YY_BREAK
2304 case 10:
2305 YY_RULE_SETUP
2306 {
2307 PFlush();
2308 while (1)
2309 {
2310 if (! strncmp (yytext, "#ifdef", 6))
2311 {
2312 if (IsDefined (& yytext[7]))
2313 {
2314 dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2315 prep_touch[pd] = 1;
2316 pd++;
2317 while (input() != '\n');
2318 break;
2319 }
2320 else if (IsUndefined (& yytext[7]))
2321 {
2322 dont_print[pd] = 1;
2323 prep_touch[pd] = 1;
2324 pd++;
2325 while (input() != '\n');
2326 break;
2327 }
2328
2329 dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2330 prep_touch[pd] = 0;
2331 pd++;
2332 if (dont_print[pd - 1])
2333 {
2334 while (input() != '\n');
2335 break;
2336 }
2337 }
2338 else if (! strncmp (yytext, "#ifndef", 7))
2339 {
2340 if (IsUndefined (& yytext[8]))
2341 {
2342 dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2343 prep_touch[pd] = 1;
2344 pd++;
2345 while (input() != '\n');
2346 break;
2347 }
2348 else if (IsDefined (& yytext[8]))
2349 {
2350 dont_print[pd] = 1;
2351 prep_touch[pd] = 1;
2352 pd++;
2353 while (input() != '\n');
2354 break;
2355 }
2356
2357 dont_print[pd] = (pd > 0) && dont_print[pd - 1];
2358 prep_touch[pd] = 0;
2359 pd++;
2360 if (dont_print[pd - 1])
2361 {
2362 while (input() != '\n');
2363 break;
2364 }
2365 }
2366 else if (! strncmp (yytext, "#endif", 6))
2367 {
2368 --pd;
2369 if (pd < 0)
2370 pd = 0;
2371 if (prep_touch[pd])
2372 {
2373 while (input() != '\n');
2374 break;
2375 }
2376 }
2377 else if (! strncmp (yytext, "#else", 5))
2378 {
2379 if (prep_touch[pd - 1])
2380 dont_print[pd - 1] =
2381 ! dont_print[pd - 1] ||
2382 ((pd > 1) && dont_print[pd - 2]);
2383 if (prep_touch[pd - 1])
2384 {
2385 while (input() != '\n');
2386 break;
2387 }
2388 }
2389
2390 BEGIN(preps);
2391 fprintf(out, "cf fpr\n");
2392 PString(yytext);
2393 fprintf(out, "sf\n");
2394 break;
2395 }
2396 }
2397 YY_BREAK
2398 case 11:
2399 YY_RULE_SETUP
2400 {
2401 PFill("\\");
2402 PFlush();
2403 NextLine();
2404 }
2405 YY_BREAK
2406 case 12:
2407 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2408 yy_c_buf_p = yy_cp -= 1;
2409 YY_DO_BEFORE_ACTION; /* set up yytext again */
2410 YY_RULE_SETUP
2411 {
2412 PFlush();
2413 BEGIN((nesting <= 0) ? nnested : INITIAL);
2414 }
2415 YY_BREAK
2416 case 13:
2417 YY_RULE_SETUP
2418 {
2419 if (pd > 0 &&
2420 prep_touch[pd - 1] &&
2421 dont_print[pd - 1])
2422 REJECT;
2423 if (nesting || function_body_expected)
2424 REJECT;
2425 function_body_expected = 1;
2426 if (cur_fun)
2427 free(cur_fun);
2428 DUP(cur_fun, yytext);
2429 if (fun_box)
2430 {
2431 new_fun = (struct fun*) malloc(sizeof(struct fun));
2432 DUP(new_fun->name, yytext);
2433 new_fun->page = page;
2434 new_fun->line = line;
2435 for(pr = NULL, fn = first;
2436 fn && strcmp(fn->name, yytext) > 0;
2437 pr=fn,fn=fn->next);
2438 if (pr == NULL)
2439 {
2440 new_fun->next = first;
2441 first = new_fun;
2442 }
2443 else
2444 {
2445 new_fun->next = pr->next;
2446 pr->next = new_fun;
2447 }
2448 }
2449
2450 PFlush();
2451 fprintf(out, "cf ffu\n");
2452 if (fun_highlight_id == 2) /* underline */
2453 {
2454 fprintf(out, "gsave %.2f %.2f rmoveto (%s) stringwidth "
2455 "pop 0 currentpoint newpath moveto rlineto "
2456 "closepath 0.01 setlinewidth stroke grestore\n",
2457 chw/12., -fontsize/5., yytext);
2458 }
2459 else if (fun_highlight_id == 1) /* box */
2460 {
2461 fprintf(out, "gsave (%s) stringwidth "
2462 "pop 2 add %.2f -1 -1 rmoveto "
2463 "currentpoint\nFilledBox grestore\n",
2464 yytext,fontsize);
2465 }
2466 PString(yytext);
2467 fprintf(out, "sf\n");
2468 }
2469 YY_BREAK
2470 case 14:
2471 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2472 yy_c_buf_p = yy_cp -= 1;
2473 YY_DO_BEFORE_ACTION; /* set up yytext again */
2474 YY_RULE_SETUP
2475 {
2476 PFill(yytext);
2477 PFlush();
2478 fprintf(out, "cf fty\n");
2479 PString(yytext + 1);
2480 fprintf(out, "sf\n");
2481 }
2482 YY_BREAK
2483 case 15:
2484 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2485 yy_c_buf_p = yy_cp -= 1;
2486 YY_DO_BEFORE_ACTION; /* set up yytext again */
2487 YY_RULE_SETUP
2488 {
2489 PFlush();
2490 fprintf(out, "cf fty\n");
2491 PString(yytext);
2492 fprintf(out, "sf\n");
2493 }
2494 YY_BREAK
2495 case 16:
2496 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2497 yy_c_buf_p = yy_cp -= 1;
2498 YY_DO_BEFORE_ACTION; /* set up yytext again */
2499 YY_RULE_SETUP
2500 {
2501 PFill(yytext);
2502 PFlush();
2503 fprintf(out, "cf %s\n", (ext) ? "fty" : "fdf");
2504 PString(yytext + 1);
2505 fprintf(out, "sf\n");
2506 }
2507 YY_BREAK
2508 case 17:
2509 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2510 yy_c_buf_p = yy_cp -= 1;
2511 YY_DO_BEFORE_ACTION; /* set up yytext again */
2512 YY_RULE_SETUP
2513 {
2514 PFlush();
2515 fprintf(out, "cf %s\n", (ext) ? "fty" : "fdf");
2516 PString(yytext);
2517 fprintf(out, "sf\n");
2518 }
2519 YY_BREAK
2520 case 18:
2521 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2522 yy_c_buf_p = yy_cp -= 1;
2523 YY_DO_BEFORE_ACTION; /* set up yytext again */
2524 YY_RULE_SETUP
2525 {
2526 PFill(yytext);
2527 PFlush();
2528 fprintf(out, "cf fke\n");
2529 PString(yytext + 1);
2530 fprintf(out, "sf\n");
2531 }
2532 YY_BREAK
2533 case 19:
2534 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2535 yy_c_buf_p = yy_cp -= 1;
2536 YY_DO_BEFORE_ACTION; /* set up yytext again */
2537 YY_RULE_SETUP
2538 {
2539 PFlush();
2540 fprintf(out, "cf fke\n");
2541 PString(yytext);
2542 fprintf(out, "sf\n");
2543 }
2544 YY_BREAK
2545 case 20:
2546 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2547 yy_c_buf_p = yy_cp -= 1;
2548 YY_DO_BEFORE_ACTION; /* set up yytext again */
2549 YY_RULE_SETUP
2550 {
2551 PFill(yytext);
2552 PFlush();
2553 fprintf(out, "cf %s\n", (ext) ? "fke" : "fdf");
2554 PString(yytext + 1);
2555 fprintf(out, "sf\n");
2556 }
2557 YY_BREAK
2558 case 21:
2559 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2560 yy_c_buf_p = yy_cp -= 1;
2561 YY_DO_BEFORE_ACTION; /* set up yytext again */
2562 YY_RULE_SETUP
2563 {
2564 PFlush();
2565 fprintf(out, "cf %s\n", (ext) ? "fke" : "fdf");
2566 PString(yytext);
2567 fprintf(out, "sf\n");
2568 }
2569 YY_BREAK
2570 case 22:
2571 YY_RULE_SETUP
2572 {
2573 PFlush();
2574 if (! (pd > 0 &&
2575 dont_print[pd - 1]))
2576 NextLine();
2577 }
2578 YY_BREAK
2579 case 23:
2580 YY_RULE_SETUP
2581 {
2582 PFill(yytext);
2583 }
2584 YY_BREAK
2585 case 24:
2586 YY_RULE_SETUP
2587 ECHO;
2588 YY_BREAK
2589 case YY_STATE_EOF(INITIAL):
2590 case YY_STATE_EOF(comm):
2591 case YY_STATE_EOF(preps):
2592 case YY_STATE_EOF(nnested):
2593 case YY_STATE_EOF(dont_highlight):
2594 yyterminate();
2595
2596 case YY_END_OF_BUFFER:
2597 {
2598 /* Amount of text matched not including the EOB char. */
2599 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2600
2601 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2602 *yy_cp = yy_hold_char;
2603
2604 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2605 {
2606 /* We're scanning a new file or input source. It's
2607 * possible that this happened because the user
2608 * just pointed yyin at a new source and called
2609 * yylex(). If so, then we have to assure
2610 * consistency between yy_current_buffer and our
2611 * globals. Here is the right place to do so, because
2612 * this is the first action (other than possibly a
2613 * back-up) that will match for the new input source.
2614 */
2615 yy_n_chars = yy_current_buffer->yy_n_chars;
2616 yy_current_buffer->yy_input_file = yyin;
2617 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2618 }
2619
2620 /* Note that here we test for yy_c_buf_p "<=" to the position
2621 * of the first EOB in the buffer, since yy_c_buf_p will
2622 * already have been incremented past the NUL character
2623 * (since all states make transitions on EOB to the
2624 * end-of-buffer state). Contrast this with the test
2625 * in input().
2626 */
2627 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2628 { /* This was really a NUL. */
2629 yy_state_type yy_next_state;
2630
2631 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2632
2633 yy_current_state = yy_get_previous_state();
2634
2635 /* Okay, we're now positioned to make the NUL
2636 * transition. We couldn't have
2637 * yy_get_previous_state() go ahead and do it
2638 * for us because it doesn't know how to deal
2639 * with the possibility of jamming (and we don't
2640 * want to build jamming into it because then it
2641 * will run more slowly).
2642 */
2643
2644 yy_next_state = yy_try_NUL_trans( yy_current_state );
2645
2646 yy_bp = yytext_ptr + YY_MORE_ADJ;
2647
2648 if ( yy_next_state )
2649 {
2650 /* Consume the NUL. */
2651 yy_cp = ++yy_c_buf_p;
2652 yy_current_state = yy_next_state;
2653 goto yy_match;
2654 }
2655
2656 else
2657 {
2658 yy_cp = yy_c_buf_p;
2659 goto yy_find_action;
2660 }
2661 }
2662
2663 else switch ( yy_get_next_buffer() )
2664 {
2665 case EOB_ACT_END_OF_FILE:
2666 {
2667 yy_did_buffer_switch_on_eof = 0;
2668
2669 if ( yywrap() )
2670 {
2671 /* Note: because we've taken care in
2672 * yy_get_next_buffer() to have set up
2673 * yytext, we can now set up
2674 * yy_c_buf_p so that if some total
2675 * hoser (like flex itself) wants to
2676 * call the scanner after we return the
2677 * YY_NULL, it'll still work - another
2678 * YY_NULL will get returned.
2679 */
2680 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2681
2682 yy_act = YY_STATE_EOF(YY_START);
2683 goto do_action;
2684 }
2685
2686 else
2687 {
2688 if ( ! yy_did_buffer_switch_on_eof )
2689 YY_NEW_FILE;
2690 }
2691 break;
2692 }
2693
2694 case EOB_ACT_CONTINUE_SCAN:
2695 yy_c_buf_p =
2696 yytext_ptr + yy_amount_of_matched_text;
2697
2698 yy_current_state = yy_get_previous_state();
2699
2700 yy_cp = yy_c_buf_p;
2701 yy_bp = yytext_ptr + YY_MORE_ADJ;
2702 goto yy_match;
2703
2704 case EOB_ACT_LAST_MATCH:
2705 yy_c_buf_p =
2706 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2707
2708 yy_current_state = yy_get_previous_state();
2709
2710 yy_cp = yy_c_buf_p;
2711 yy_bp = yytext_ptr + YY_MORE_ADJ;
2712 goto yy_find_action;
2713 }
2714 break;
2715 }
2716
2717 default:
2718 YY_FATAL_ERROR(
2719 "fatal flex scanner internal error--no action found" );
2720 } /* end of action switch */
2721 } /* end of scanning one token */
2722 } /* end of yylex */
2723
2724
2725 /* yy_get_next_buffer - try to read in a new buffer
2726 *
2727 * Returns a code representing an action:
2728 * EOB_ACT_LAST_MATCH -
2729 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2730 * EOB_ACT_END_OF_FILE - end of file
2731 */
2732
yy_get_next_buffer()2733 static int yy_get_next_buffer()
2734 {
2735 register char *dest = yy_current_buffer->yy_ch_buf;
2736 register char *source = yytext_ptr;
2737 register int number_to_move, i;
2738 int ret_val;
2739
2740 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2741 YY_FATAL_ERROR(
2742 "fatal flex scanner internal error--end of buffer missed" );
2743
2744 if ( yy_current_buffer->yy_fill_buffer == 0 )
2745 { /* Don't try to fill the buffer, so this is an EOF. */
2746 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2747 {
2748 /* We matched a singled characater, the EOB, so
2749 * treat this as a final EOF.
2750 */
2751 return EOB_ACT_END_OF_FILE;
2752 }
2753
2754 else
2755 {
2756 /* We matched some text prior to the EOB, first
2757 * process it.
2758 */
2759 return EOB_ACT_LAST_MATCH;
2760 }
2761 }
2762
2763 /* Try to read more data. */
2764
2765 /* First move last chars to start of buffer. */
2766 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2767
2768 for ( i = 0; i < number_to_move; ++i )
2769 *(dest++) = *(source++);
2770
2771 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2772 /* don't do the read, it's not guaranteed to return an EOF,
2773 * just force an EOF
2774 */
2775 yy_n_chars = 0;
2776
2777 else
2778 {
2779 int num_to_read =
2780 yy_current_buffer->yy_buf_size - number_to_move - 1;
2781
2782 while ( num_to_read <= 0 )
2783 { /* Not enough room in the buffer - grow it. */
2784 #ifdef YY_USES_REJECT
2785 YY_FATAL_ERROR(
2786 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2787 #else
2788
2789 /* just a shorter name for the current buffer */
2790 YY_BUFFER_STATE b = yy_current_buffer;
2791
2792 int yy_c_buf_p_offset =
2793 (int) (yy_c_buf_p - b->yy_ch_buf);
2794
2795 if ( b->yy_is_our_buffer )
2796 {
2797 int new_size = b->yy_buf_size * 2;
2798
2799 if ( new_size <= 0 )
2800 b->yy_buf_size += b->yy_buf_size / 8;
2801 else
2802 b->yy_buf_size *= 2;
2803
2804 b->yy_ch_buf = (char *)
2805 /* Include room in for 2 EOB chars. */
2806 yy_flex_realloc( (void *) b->yy_ch_buf,
2807 b->yy_buf_size + 2 );
2808 }
2809 else
2810 /* Can't grow it, we don't own it. */
2811 b->yy_ch_buf = 0;
2812
2813 if ( ! b->yy_ch_buf )
2814 YY_FATAL_ERROR(
2815 "fatal error - scanner input buffer overflow" );
2816
2817 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2818
2819 num_to_read = yy_current_buffer->yy_buf_size -
2820 number_to_move - 1;
2821 #endif
2822 }
2823
2824 if ( num_to_read > YY_READ_BUF_SIZE )
2825 num_to_read = YY_READ_BUF_SIZE;
2826
2827 /* Read in more data. */
2828 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2829 yy_n_chars, num_to_read );
2830 }
2831
2832 if ( yy_n_chars == 0 )
2833 {
2834 if ( number_to_move == YY_MORE_ADJ )
2835 {
2836 ret_val = EOB_ACT_END_OF_FILE;
2837 yyrestart( yyin );
2838 }
2839
2840 else
2841 {
2842 ret_val = EOB_ACT_LAST_MATCH;
2843 yy_current_buffer->yy_buffer_status =
2844 YY_BUFFER_EOF_PENDING;
2845 }
2846 }
2847
2848 else
2849 ret_val = EOB_ACT_CONTINUE_SCAN;
2850
2851 yy_n_chars += number_to_move;
2852 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2853 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2854
2855 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2856
2857 return ret_val;
2858 }
2859
2860
2861 /* yy_get_previous_state - get the state just before the EOB char was reached */
2862
yy_get_previous_state()2863 static yy_state_type yy_get_previous_state()
2864 {
2865 register yy_state_type yy_current_state;
2866 register char *yy_cp;
2867
2868 yy_current_state = yy_start;
2869 yy_current_state += YY_AT_BOL();
2870 yy_state_ptr = yy_state_buf;
2871 *yy_state_ptr++ = yy_current_state;
2872
2873 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2874 {
2875 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2876 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2877 {
2878 yy_current_state = (int) yy_def[yy_current_state];
2879 if ( yy_current_state >= 1432 )
2880 yy_c = yy_meta[(unsigned int) yy_c];
2881 }
2882 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2883 *yy_state_ptr++ = yy_current_state;
2884 }
2885
2886 return yy_current_state;
2887 }
2888
2889
2890 /* yy_try_NUL_trans - try to make a transition on the NUL character
2891 *
2892 * synopsis
2893 * next_state = yy_try_NUL_trans( current_state );
2894 */
2895
2896 #ifdef YY_USE_PROTOS
yy_try_NUL_trans(yy_state_type yy_current_state)2897 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2898 #else
2899 static yy_state_type yy_try_NUL_trans( yy_current_state )
2900 yy_state_type yy_current_state;
2901 #endif
2902 {
2903 register int yy_is_jam;
2904
2905 register YY_CHAR yy_c = 1;
2906 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2907 {
2908 yy_current_state = (int) yy_def[yy_current_state];
2909 if ( yy_current_state >= 1432 )
2910 yy_c = yy_meta[(unsigned int) yy_c];
2911 }
2912 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2913 *yy_state_ptr++ = yy_current_state;
2914 yy_is_jam = (yy_current_state == 1431);
2915
2916 return yy_is_jam ? 0 : yy_current_state;
2917 }
2918
2919
2920 #ifndef YY_NO_UNPUT
2921 #ifdef YY_USE_PROTOS
yyunput(int c,register char * yy_bp)2922 static void yyunput( int c, register char *yy_bp )
2923 #else
2924 static void yyunput( c, yy_bp )
2925 int c;
2926 register char *yy_bp;
2927 #endif
2928 {
2929 register char *yy_cp = yy_c_buf_p;
2930
2931 /* undo effects of setting up yytext */
2932 *yy_cp = yy_hold_char;
2933
2934 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2935 { /* need to shift things up to make room */
2936 /* +2 for EOB chars. */
2937 register int number_to_move = yy_n_chars + 2;
2938 register char *dest = &yy_current_buffer->yy_ch_buf[
2939 yy_current_buffer->yy_buf_size + 2];
2940 register char *source =
2941 &yy_current_buffer->yy_ch_buf[number_to_move];
2942
2943 while ( source > yy_current_buffer->yy_ch_buf )
2944 *--dest = *--source;
2945
2946 yy_cp += (int) (dest - source);
2947 yy_bp += (int) (dest - source);
2948 yy_n_chars = yy_current_buffer->yy_buf_size;
2949
2950 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2951 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2952 }
2953
2954 *--yy_cp = (char) c;
2955
2956
2957 yytext_ptr = yy_bp;
2958 yy_hold_char = *yy_cp;
2959 yy_c_buf_p = yy_cp;
2960 }
2961 #endif /* ifndef YY_NO_UNPUT */
2962
2963
2964 #ifdef __cplusplus
yyinput()2965 static int yyinput()
2966 #else
2967 static int input()
2968 #endif
2969 {
2970 int c;
2971
2972 *yy_c_buf_p = yy_hold_char;
2973
2974 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2975 {
2976 /* yy_c_buf_p now points to the character we want to return.
2977 * If this occurs *before* the EOB characters, then it's a
2978 * valid NUL; if not, then we've hit the end of the buffer.
2979 */
2980 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2981 /* This was really a NUL. */
2982 *yy_c_buf_p = '\0';
2983
2984 else
2985 { /* need more input */
2986 yytext_ptr = yy_c_buf_p;
2987 ++yy_c_buf_p;
2988
2989 switch ( yy_get_next_buffer() )
2990 {
2991 case EOB_ACT_END_OF_FILE:
2992 {
2993 if ( yywrap() )
2994 {
2995 yy_c_buf_p =
2996 yytext_ptr + YY_MORE_ADJ;
2997 return EOF;
2998 }
2999
3000 if ( ! yy_did_buffer_switch_on_eof )
3001 YY_NEW_FILE;
3002 #ifdef __cplusplus
3003 return yyinput();
3004 #else
3005 return input();
3006 #endif
3007 }
3008
3009 case EOB_ACT_CONTINUE_SCAN:
3010 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3011 break;
3012
3013 case EOB_ACT_LAST_MATCH:
3014 #ifdef __cplusplus
3015 YY_FATAL_ERROR(
3016 "unexpected last match in yyinput()" );
3017 #else
3018 YY_FATAL_ERROR(
3019 "unexpected last match in input()" );
3020 #endif
3021 }
3022 }
3023 }
3024
3025 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3026 *yy_c_buf_p = '\0'; /* preserve yytext */
3027 yy_hold_char = *++yy_c_buf_p;
3028
3029 yy_current_buffer->yy_at_bol = (c == '\n');
3030
3031 return c;
3032 }
3033
3034
3035 #ifdef YY_USE_PROTOS
yyrestart(FILE * input_file)3036 void yyrestart( FILE *input_file )
3037 #else
3038 void yyrestart( input_file )
3039 FILE *input_file;
3040 #endif
3041 {
3042 if ( ! yy_current_buffer )
3043 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3044
3045 yy_init_buffer( yy_current_buffer, input_file );
3046 yy_load_buffer_state();
3047 }
3048
3049
3050 #ifdef YY_USE_PROTOS
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)3051 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3052 #else
3053 void yy_switch_to_buffer( new_buffer )
3054 YY_BUFFER_STATE new_buffer;
3055 #endif
3056 {
3057 if ( yy_current_buffer == new_buffer )
3058 return;
3059
3060 if ( yy_current_buffer )
3061 {
3062 /* Flush out information for old buffer. */
3063 *yy_c_buf_p = yy_hold_char;
3064 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3065 yy_current_buffer->yy_n_chars = yy_n_chars;
3066 }
3067
3068 yy_current_buffer = new_buffer;
3069 yy_load_buffer_state();
3070
3071 /* We don't actually know whether we did this switch during
3072 * EOF (yywrap()) processing, but the only time this flag
3073 * is looked at is after yywrap() is called, so it's safe
3074 * to go ahead and always set it.
3075 */
3076 yy_did_buffer_switch_on_eof = 1;
3077 }
3078
3079
3080 #ifdef YY_USE_PROTOS
yy_load_buffer_state(void)3081 void yy_load_buffer_state( void )
3082 #else
3083 void yy_load_buffer_state()
3084 #endif
3085 {
3086 yy_n_chars = yy_current_buffer->yy_n_chars;
3087 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3088 yyin = yy_current_buffer->yy_input_file;
3089 yy_hold_char = *yy_c_buf_p;
3090 }
3091
3092
3093 #ifdef YY_USE_PROTOS
yy_create_buffer(FILE * file,int size)3094 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3095 #else
3096 YY_BUFFER_STATE yy_create_buffer( file, size )
3097 FILE *file;
3098 int size;
3099 #endif
3100 {
3101 YY_BUFFER_STATE b;
3102
3103 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3104 if ( ! b )
3105 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3106
3107 b->yy_buf_size = size;
3108
3109 /* yy_ch_buf has to be 2 characters longer than the size given because
3110 * we need to put in 2 end-of-buffer characters.
3111 */
3112 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3113 if ( ! b->yy_ch_buf )
3114 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3115
3116 b->yy_is_our_buffer = 1;
3117
3118 yy_init_buffer( b, file );
3119
3120 return b;
3121 }
3122
3123
3124 #ifdef YY_USE_PROTOS
yy_delete_buffer(YY_BUFFER_STATE b)3125 void yy_delete_buffer( YY_BUFFER_STATE b )
3126 #else
3127 void yy_delete_buffer( b )
3128 YY_BUFFER_STATE b;
3129 #endif
3130 {
3131 if ( ! b )
3132 return;
3133
3134 if ( b == yy_current_buffer )
3135 yy_current_buffer = (YY_BUFFER_STATE) 0;
3136
3137 if ( b->yy_is_our_buffer )
3138 yy_flex_free( (void *) b->yy_ch_buf );
3139
3140 yy_flex_free( (void *) b );
3141 }
3142
3143
3144 #ifndef YY_ALWAYS_INTERACTIVE
3145 #ifndef YY_NEVER_INTERACTIVE
3146 #ifndef DOS
3147 extern int isatty YY_PROTO(( int ));
3148 #endif
3149 #endif
3150 #endif
3151
3152 #ifdef YY_USE_PROTOS
yy_init_buffer(YY_BUFFER_STATE b,FILE * file)3153 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3154 #else
3155 void yy_init_buffer( b, file )
3156 YY_BUFFER_STATE b;
3157 FILE *file;
3158 #endif
3159
3160
3161 {
3162 yy_flush_buffer( b );
3163
3164 b->yy_input_file = file;
3165 b->yy_fill_buffer = 1;
3166
3167 #if YY_ALWAYS_INTERACTIVE
3168 b->yy_is_interactive = 1;
3169 #else
3170 #if YY_NEVER_INTERACTIVE
3171 b->yy_is_interactive = 0;
3172 #else
3173 b->yy_is_interactive =
3174 #ifndef DOS
3175 file ? (isatty( fileno(file) ) > 0) :
3176 #endif
3177 0;
3178 #endif
3179 #endif
3180 }
3181
3182
3183 #ifdef YY_USE_PROTOS
yy_flush_buffer(YY_BUFFER_STATE b)3184 void yy_flush_buffer( YY_BUFFER_STATE b )
3185 #else
3186 void yy_flush_buffer( b )
3187 YY_BUFFER_STATE b;
3188 #endif
3189
3190 {
3191 b->yy_n_chars = 0;
3192
3193 /* We always need two end-of-buffer characters. The first causes
3194 * a transition to the end-of-buffer state. The second causes
3195 * a jam in that state.
3196 */
3197 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3198 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3199
3200 b->yy_buf_pos = &b->yy_ch_buf[0];
3201
3202 b->yy_at_bol = 1;
3203 b->yy_buffer_status = YY_BUFFER_NEW;
3204
3205 if ( b == yy_current_buffer )
3206 yy_load_buffer_state();
3207 }
3208
3209
3210 #ifndef YY_NO_SCAN_BUFFER
3211 #ifdef YY_USE_PROTOS
yy_scan_buffer(char * base,yy_size_t size)3212 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3213 #else
3214 YY_BUFFER_STATE yy_scan_buffer( base, size )
3215 char *base;
3216 yy_size_t size;
3217 #endif
3218 {
3219 YY_BUFFER_STATE b;
3220
3221 if ( size < 2 ||
3222 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3223 base[size-1] != YY_END_OF_BUFFER_CHAR )
3224 /* They forgot to leave room for the EOB's. */
3225 return 0;
3226
3227 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3228 if ( ! b )
3229 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3230
3231 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3232 b->yy_buf_pos = b->yy_ch_buf = base;
3233 b->yy_is_our_buffer = 0;
3234 b->yy_input_file = 0;
3235 b->yy_n_chars = b->yy_buf_size;
3236 b->yy_is_interactive = 0;
3237 b->yy_at_bol = 1;
3238 b->yy_fill_buffer = 0;
3239 b->yy_buffer_status = YY_BUFFER_NEW;
3240
3241 yy_switch_to_buffer( b );
3242
3243 return b;
3244 }
3245 #endif
3246
3247
3248 #ifndef YY_NO_SCAN_STRING
3249 #ifdef YY_USE_PROTOS
yy_scan_string(yyconst char * str)3250 YY_BUFFER_STATE yy_scan_string( yyconst char *str )
3251 #else
3252 YY_BUFFER_STATE yy_scan_string( str )
3253 yyconst char *str;
3254 #endif
3255 {
3256 int len;
3257 for ( len = 0; str[len]; ++len )
3258 ;
3259
3260 return yy_scan_bytes( str, len );
3261 }
3262 #endif
3263
3264
3265 #ifndef YY_NO_SCAN_BYTES
3266 #ifdef YY_USE_PROTOS
yy_scan_bytes(yyconst char * bytes,int len)3267 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3268 #else
3269 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3270 yyconst char *bytes;
3271 int len;
3272 #endif
3273 {
3274 YY_BUFFER_STATE b;
3275 char *buf;
3276 yy_size_t n;
3277 int i;
3278
3279 /* Get memory for full buffer, including space for trailing EOB's. */
3280 n = len + 2;
3281 buf = (char *) yy_flex_alloc( n );
3282 if ( ! buf )
3283 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3284
3285 for ( i = 0; i < len; ++i )
3286 buf[i] = bytes[i];
3287
3288 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3289
3290 b = yy_scan_buffer( buf, n );
3291 if ( ! b )
3292 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3293
3294 /* It's okay to grow etc. this buffer, and we should throw it
3295 * away when we're done.
3296 */
3297 b->yy_is_our_buffer = 1;
3298
3299 return b;
3300 }
3301 #endif
3302
3303
3304 #ifndef YY_NO_PUSH_STATE
3305 #ifdef YY_USE_PROTOS
yy_push_state(int new_state)3306 static void yy_push_state( int new_state )
3307 #else
3308 static void yy_push_state( new_state )
3309 int new_state;
3310 #endif
3311 {
3312 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3313 {
3314 yy_size_t new_size;
3315
3316 yy_start_stack_depth += YY_START_STACK_INCR;
3317 new_size = yy_start_stack_depth * sizeof( int );
3318
3319 if ( ! yy_start_stack )
3320 yy_start_stack = (int *) yy_flex_alloc( new_size );
3321
3322 else
3323 yy_start_stack = (int *) yy_flex_realloc(
3324 (void *) yy_start_stack, new_size );
3325
3326 if ( ! yy_start_stack )
3327 YY_FATAL_ERROR(
3328 "out of memory expanding start-condition stack" );
3329 }
3330
3331 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3332
3333 BEGIN(new_state);
3334 }
3335 #endif
3336
3337
3338 #ifndef YY_NO_POP_STATE
yy_pop_state()3339 static void yy_pop_state()
3340 {
3341 if ( --yy_start_stack_ptr < 0 )
3342 YY_FATAL_ERROR( "start-condition stack underflow" );
3343
3344 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3345 }
3346 #endif
3347
3348
3349 #ifndef YY_NO_TOP_STATE
yy_top_state()3350 static int yy_top_state()
3351 {
3352 return yy_start_stack[yy_start_stack_ptr - 1];
3353 }
3354 #endif
3355
3356 #ifndef YY_EXIT_FAILURE
3357 #define YY_EXIT_FAILURE 2
3358 #endif
3359
3360 #ifdef YY_USE_PROTOS
yy_fatal_error(yyconst char msg[])3361 static void yy_fatal_error( yyconst char msg[] )
3362 #else
3363 static void yy_fatal_error( msg )
3364 char msg[];
3365 #endif
3366 {
3367 (void) fprintf( stderr, "%s\n", msg );
3368 exit( YY_EXIT_FAILURE );
3369 }
3370
3371
3372
3373 /* Redefine yyless() so it works in section 3 code. */
3374
3375 #undef yyless
3376 #define yyless(n) \
3377 do \
3378 { \
3379 /* Undo effects of setting up yytext. */ \
3380 yytext[yyleng] = yy_hold_char; \
3381 yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
3382 yy_hold_char = *yy_c_buf_p; \
3383 *yy_c_buf_p = '\0'; \
3384 yyleng = n; \
3385 } \
3386 while ( 0 )
3387
3388
3389 /* Internal utility routines. */
3390
3391 #ifndef yytext_ptr
3392 #ifdef YY_USE_PROTOS
yy_flex_strncpy(char * s1,yyconst char * s2,int n)3393 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3394 #else
3395 static void yy_flex_strncpy( s1, s2, n )
3396 char *s1;
3397 yyconst char *s2;
3398 int n;
3399 #endif
3400 {
3401 register int i;
3402 for ( i = 0; i < n; ++i )
3403 s1[i] = s2[i];
3404 }
3405 #endif
3406
3407
3408 #ifdef YY_USE_PROTOS
yy_flex_alloc(yy_size_t size)3409 static void *yy_flex_alloc( yy_size_t size )
3410 #else
3411 static void *yy_flex_alloc( size )
3412 yy_size_t size;
3413 #endif
3414 {
3415 return (void *) malloc( size );
3416 }
3417
3418 #ifdef YY_USE_PROTOS
yy_flex_realloc(void * ptr,yy_size_t size)3419 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3420 #else
3421 static void *yy_flex_realloc( ptr, size )
3422 void *ptr;
3423 yy_size_t size;
3424 #endif
3425 {
3426 /* The cast to (char *) in the following accommodates both
3427 * implementations that use char* generic pointers, and those
3428 * that use void* generic pointers. It works with the latter
3429 * because both ANSI C and C++ allow castless assignment from
3430 * any pointer type to void*, and deal with argument conversions
3431 * as though doing an assignment.
3432 */
3433 return (void *) realloc( (char *) ptr, size );
3434 }
3435
3436 #ifdef YY_USE_PROTOS
yy_flex_free(void * ptr)3437 static void yy_flex_free( void *ptr )
3438 #else
3439 static void yy_flex_free( ptr )
3440 void *ptr;
3441 #endif
3442 {
3443 free( ptr );
3444 }
3445
3446 #if YY_MAIN
main()3447 int main()
3448 {
3449 yylex();
3450 return 0;
3451 }
3452 #endif
3453
3454
3455 #ifdef YY_USE_PROTOS
PString(char * str)3456 int PString(char *str)
3457 #else
3458 int PString(str)
3459 char *str;
3460 #endif
3461 {
3462 unsigned long s;
3463 unsigned char *p = (unsigned char *) str;
3464 int i;
3465 int t = 0;
3466
3467
3468 if (pd > 0 &&
3469 dont_print[pd - 1])
3470 return 0;
3471
3472
3473 if ((s = strlen(p)) <= 0)
3474 return 1;
3475 processed += s;
3476 while (*p == '\n')
3477 {
3478 NextLine();
3479 ++p;
3480 }
3481 fprintf(out, "(");
3482 while (*p)
3483 {
3484 ++str_length;
3485 if (line_cut == 0)
3486 if (str_length > 550.*5./(3.*fontsize))
3487 {
3488 fprintf(out, ") s\n");
3489 line--;
3490 line_split = 1;
3491 NextLine();
3492 if(number_lines)
3493 {
3494 fprintf(out, "%.2f 0 rmoveto\n", 6.*chw);
3495 str_length = 6;
3496 }
3497 fprintf(out,"(");
3498 }
3499 if (*p == '\n')
3500 {
3501 fprintf(out, ") s\n");
3502 do
3503 NextLine();
3504 while(*++p == '\n');
3505 if (!*p)
3506 return 0;
3507 fprintf(out, "(");
3508 continue;
3509 }
3510 if (*p == '\f')
3511 {
3512 fprintf(out, ") s\n");
3513 NextPage();
3514 fprintf(out, "(");
3515 p++;
3516 continue;
3517 }
3518 if (*p == '\t')
3519 {
3520 t = tab - (str_length - 1 - number_lines * 6) % tab;
3521 for (i = 0; i < t; i++)
3522 fprintf(out, " ");
3523 str_length += t - 1;
3524 p++;
3525 continue;
3526 }
3527 if (*p < 32)
3528 {
3529 fprintf(out, "\\%03o", *p++);
3530 continue;
3531 }
3532 if (*p > 127)
3533 {
3534 if (nonlatin_text)
3535 {
3536 fprintf(out, ") s cf fno (");
3537 do
3538 fprintf(out, "\\%03o", *p++);
3539 while (*p > 127);
3540 fprintf(out, ") s sf (");
3541 }
3542 else
3543 fprintf(out, "\\%03o", *p++);
3544 continue;
3545 }
3546 if (*p == '(' || *p == ')' || *p == '\\')
3547 fprintf(out, "\\");
3548 fprintf(out, "%c", *p);
3549 p++;
3550 }
3551 fprintf(out, ") s\n");
3552 return 0;
3553 }
3554
PRatio()3555 char* PRatio()
3556 {
3557 int r;
3558 int i;
3559
3560 r = (10 * processed / b.st_size) + 1;
3561 for (i = 1; i <= 10 ; i++)
3562 ratio[i] = (i <= r) ? '.' : ' ';
3563 ratio[r + 1] = ')';
3564 return ratio;
3565 }
3566
PFlush()3567 int PFlush()
3568 {
3569 if (lc > 0)
3570 {
3571 buffer[lc] = '\0';
3572 PString(buffer);
3573 buffer[lc = 0] = '\0';
3574 }
3575 return 0;
3576 }
3577
3578 #ifdef YY_USE_PROTOS
PFill(char * c)3579 int PFill(char *c)
3580 #else
3581 int PFill(c)
3582 char *c;
3583 #endif
3584 {
3585 if (*c == '\n' && YYSTATE == preps)
3586 BEGIN((nesting > 0)? INITIAL : nnested);
3587 else if (*c == '{')
3588 {
3589 if (++nesting > 0 && YYSTATE == nnested)
3590 BEGIN(INITIAL);
3591 }
3592 else if (*c == '}')
3593 {
3594 if (--nesting <= 0)
3595 {
3596 if (YYSTATE == INITIAL)
3597 BEGIN(nnested);
3598 nesting = 0;
3599 function_body_expected = 0;
3600 if (cur_fun)
3601 {
3602 free(cur_fun);
3603 cur_fun = NULL;
3604 }
3605 }
3606 }
3607 buffer[lc++] = *c;
3608 if (lc == BUFL - 1)
3609 PFlush();
3610 return 0;
3611 }
3612
PFunctionBox()3613 int PFunctionBox()
3614 {
3615 struct fun *f;
3616 unsigned int i;
3617 float fs;
3618
3619 if (first == NULL)
3620 return 1;
3621 fprintf(out, "\nmark\n");
3622 for (f = first, i = 1; f != NULL; f = f->next, i++)
3623 fprintf(out, "(%s) (%lu:%lu)\n", f->name, f->page, f->line);
3624 fs = (PAGE - 35.) / i;
3625 fprintf(out, "%.2f\n", (fs > 9.) ? 8. : fs - 1);
3626 fprintf(out, "FunctionBox\n");
3627 return 0;
3628 }
3629
NextPage()3630 int NextPage()
3631 {
3632 x = PAGE - fontsize - spacing;
3633 line_on_page = 0;
3634
3635 if(fun_box)
3636 PFunctionBox();
3637 if(fun_entry_exit && header && page>0 && cur_fun)
3638 fprintf(out, "\n(%s) OutFunction\n", cur_fun);
3639
3640 switch (page % ppl)
3641 {
3642 case 0:
3643 if (page > 0 )
3644 {
3645 fprintf(out, "\n%s showpage\n", (comment)? "currentgray" : "");
3646 }
3647
3648 fprintf(out, "\n%%%%Page: %s%lu %lu\n\n",
3649 (page == 0 && fp_num > 1) ? "__" : "",
3650 page / ppl + 1, total_page / ppl +1);
3651 if (page > 0 && comment)
3652 fprintf(out, "setgray\n");
3653 if (strncasecmp(pspec.name, "letter", 7) == 0)
3654 fprintf(out, "0.93 0.93 scale 31 8 translate\n");
3655 switch(ppl)
3656 {
3657 case 1:
3658 break;
3659 case 2:
3660 fprintf(out, "595 4 translate 90 rotate 0.7 0.7 scale\n");
3661 break;
3662 case 4:
3663 fprintf(out, "0.47 0.47 scale 40 880 translate\n");
3664 }
3665 break;
3666 case 1:
3667 fprintf(out, "590 0 translate\n");
3668 break;
3669 case 2:
3670 fprintf(out, "-590 -830 translate\n");
3671 break;
3672 case 3:
3673 fprintf(out, "590 0 translate\n");
3674 }
3675 fprintf(stderr, "%-25.25s Page %4lu, Column %1lu %s\r",
3676 (fp_num > 0) ? fp[fp_cur] : "stdin",
3677 page / ppl + 1,
3678 page % ppl + 1,
3679 (fp_num > 0) ? PRatio() : "");
3680 page++;
3681 total_page++;
3682
3683 fprintf(out, "initclip ");
3684 if (header)
3685 {
3686 fprintf(out, "(%s) (%s) DrawFrame gsave 0 setgray fhd 523 800 moveto \
3687 (%8lu) s grestore\n",
3688 date, (fp_num > 0) ? fp[fp_cur] : "stdin", page);
3689 if (fun_entry_exit && page > 0 && cur_fun)
3690 fprintf(out, "(%s) InFunction", cur_fun);
3691 }
3692 /* fprintf(out," ver "); */
3693
3694 fprintf(out, " clp\n");
3695 NextLine();
3696 return 0;
3697 }
3698
NextLine()3699 int NextLine()
3700 {
3701 str_length = 0;
3702 if (x > 20 + fontsize)
3703 {
3704 if (lpp > 0)
3705 if(line_on_page++ == lpp)
3706 {
3707 NextPage();
3708 return 0;
3709 }
3710 fprintf(out, "%.2f nl ", x);
3711 line++;
3712 x -= fontsize + spacing;
3713 if (number_lines)
3714 {
3715 if (line_split)
3716 line_split=0;
3717 else fprintf(out, "sn (%5lu) n\n", line);
3718 /* else fprintf(out,"sn (%5d,%d) n\n",YYSTATE,nesting); */
3719 /* there may be any other useful info instead of line numbers such as
3720 nesting depth */
3721 str_length = 6;
3722 }
3723 }
3724 else NextPage();
3725 return 0;
3726 }
3727
Version()3728 int Version()
3729 {
3730 fprintf(stderr, VerMsg, VERSION);
3731 exit(0);
3732 }
3733
Help()3734 int Help ()
3735 {
3736 fprintf(stderr, HelpMsg);
3737 exit(0);
3738 }
3739
3740 #ifdef YY_USE_PROTOS
PCext(char * fn)3741 int PCext (char *fn)
3742 #else
3743 int PCext (fn)
3744 char *fn;
3745 #endif
3746 {
3747 int l = strlen(fn);
3748
3749 return (
3750 ((l >= 2) && (!strcmp(&fn[l - 2], ".c") || !strcmp(&fn[l - 2], ".h"))) ||
3751 ((l >= 3) && (!strcmp(&fn[l - 3], ".cc") || !strcmp(&fn[l - 3], ".hh"))) ||
3752 ((l >= 4) && (!strcmp(&fn[l - 4], ".cpp") || !strcmp(&fn[l - 4], ".hpp"))));
3753 }
3754
3755 #ifdef YY_USE_PROTOS
IsDefined(char * s)3756 int IsDefined (char *s)
3757 #else
3758 int IsDefined (s)
3759 char *s;
3760 #endif
3761 {
3762 int i;
3763 char *t = s;
3764
3765 while (*t == ' ' || *t == '\t')
3766 t++;
3767 for (i = 0; i < defs_num; i++)
3768 if ((strlen(t) == strlen(defs[i])) &&
3769 ! strcmp (t, defs[i]))
3770 return 1;
3771 return 0;
3772 }
3773
3774 #ifdef YY_USE_PROTOS
IsUndefined(char * s)3775 int IsUndefined (char *s)
3776 #else
3777 int IsUndefined (s)
3778 char *s;
3779 #endif
3780 {
3781 int i;
3782 char *t = s;
3783
3784 while (*t == ' ' || *t == '\t')
3785 t++;
3786 for (i = 0; i < undefs_num; i++)
3787 if ((strlen(t) == strlen(undefs[i])) &&
3788 ! strcmp (t, undefs[i]))
3789 return 1;
3790 return 0;
3791 }
3792
3793 #undef yywrap
3794
yywrap()3795 int yywrap()
3796 {
3797 static FILE *file = NULL;
3798 struct fun *f;
3799 struct fun *p;
3800
3801 if (fp_cur >= 0) /* get done with current file */
3802 {
3803 if (file)
3804 fclose(file);
3805 PFlush();
3806 if(fun_box)
3807 PFunctionBox();
3808 if(fun_entry_exit && header && page>0 && cur_fun)
3809 fprintf(out, "\n(%s) OutFunction\n", cur_fun);
3810 fprintf(out, "\nshowpage\n");
3811 fprintf(stderr, "%-25.25s %4lu pages printed \n",
3812 fp[fp_cur], (page-1)/ppl+1);
3813
3814 total_page += (ppl - total_page % ppl) % ppl;
3815 page = 0;
3816 line = 0;
3817 nesting = 0;
3818 comment = 0;
3819 pd = 0;
3820
3821 /* free function list */
3822 if (first)
3823 {
3824 for (f = first; f; )
3825 {
3826 if (f->name)
3827 free(f->name);
3828 p = f;
3829 f = f->next;
3830 free(p);
3831 }
3832 first = NULL;
3833 }
3834 if (cur_fun)
3835 {
3836 free(cur_fun);
3837 cur_fun = NULL;
3838 }
3839 }
3840
3841 while (++fp_cur < fp_num)
3842 {
3843 if ((file = fopen(fp[fp_cur], "r")) == NULL)
3844 {
3845 fprintf(stderr, "%-25.25s Could not open file for reading \n",
3846 fp[fp_cur]);
3847 continue;
3848 }
3849
3850 if (stat(fp[fp_cur], &b) == -1)
3851 fprintf(stderr, "%-25.25s Couldn't get the file information\n",
3852 fp[fp_cur]);
3853 #ifndef DOS
3854 if (S_ISDIR(b.st_mode))
3855 {
3856 fprintf(stderr, "%-25.25s Directory\n",
3857 fp[fp_cur]);
3858 continue;
3859 }
3860 #endif
3861 if (b.st_size == 0)
3862 {
3863 fprintf(stderr, "%-25.25s Empty file\n",
3864 fp[fp_cur]);
3865 continue;
3866 }
3867 if (last_modified)
3868 {
3869 strcpy(date,ctime(&b.st_mtime));
3870 }
3871 else
3872 {
3873 time(&t);
3874 strcpy(date, ctime(&t));
3875 }
3876
3877 yyrestart(file);
3878
3879 BEGIN((noc ||
3880 (c_ext && !PCext(fp[fp_cur]))) ? dont_highlight : nnested);
3881 processed = 0;
3882 date[24] = '\0';
3883 if (total_page > 0)
3884 NextPage();
3885 return 0;
3886 }
3887 return 1;
3888 }
3889
getpaper(char * name)3890 void getpaper(char *name)
3891 {
3892 const struct paper *pp;
3893
3894 if (name == NULL) {
3895 name = (char *)systempapername();
3896 if (name == NULL)
3897 name = (char *)defaultpapername();
3898 }
3899
3900 /* Support only A4 or letter. */
3901 if (strncasecmp(name, "a4", 3) != 0 &&
3902 strncasecmp(name, "letter", 7) != 0) {
3903 fprintf(stderr, "Unsupported paper size: %s. "
3904 "A4 size will be used instead.\n", name);
3905 name = "a4";
3906 }
3907
3908 paperinit();
3909 for (pp = paperfirst(); pp; pp = papernext(pp)) {
3910 if (strcmp(name, papername(pp)) == 0) {
3911 pspec.name = strdup(name);
3912 pspec.width = round(paperpswidth(pp));
3913 pspec.height = round(paperpsheight(pp));
3914 }
3915 }
3916 }
3917
3918 #define REENCODE(font) fprintf(out,"/%s /%s-iso isovec ReEncode\n",font,font)
3919
3920 #ifdef YY_USE_PROTOS
main(int argc,char ** argv)3921 int main(int argc, char **argv)
3922 #else
3923 int main(argc, argv)
3924 int argc;
3925 char **argv;
3926 #endif
3927 {
3928 int i = 0;
3929 char *dftfont = NULL;
3930 char *preproc = NULL;
3931 char *comment = NULL;
3932 char *keyword = NULL;
3933 char *strings = NULL;
3934 char *type = NULL;
3935 char *lnumber = NULL;
3936 char *function = NULL;
3937 char *nonlatin = NULL;
3938 char *pflag = NULL;
3939
3940 out = stdout;
3941 first = NULL;
3942 defs_num = 0;
3943 undefs_num = 0;
3944
3945 fp = (char **) malloc (argc * sizeof(char *));
3946 defs = (char **) malloc (argc * sizeof(char *));
3947 undefs = (char **) malloc (argc * sizeof(char *));
3948
3949 while (++i < argc)
3950 {
3951 if (argv[i][0] == '-')
3952 {
3953 if (strlen(argv[i]) == 2)
3954 {
3955 switch (argv[i][1])
3956 {
3957 case '1': ppl = 1; break;
3958 case '2': ppl = 2; break;
3959 case '4': ppl = 4; break;
3960 case 'a': adjust_comments = 0; break;
3961 case 'b': fun_box = 0; break;
3962 case 'c': noc = 1; break;
3963 case 'e': fun_entry_exit = 0; break;
3964 case 'i': iso = 0; break;
3965 case 'k': ext = 0; break;
3966 case 'm': last_modified = 0; break;
3967 case 'n': number_lines = 0; break;
3968 case 'r': frame = 1; break;
3969 case 'u': header = 0; break;
3970 case 'v': Version(); break;
3971 case 'w': line_cut = 1; break;
3972 case 'x': c_ext = 1; break;
3973 case '?': case 'h': Help(); break;
3974 default: {
3975 if(++i < argc && argv[i][0] != '-')
3976 {
3977 switch(argv[i-1][1])
3978 {
3979 case 'o': if ((out = fopen(argv[i], "w")) == NULL)
3980 {
3981 fprintf(stderr,
3982 "Couldn't open file %s for writing\n",
3983 argv[i]);
3984 exit(0);
3985 } break;
3986 case 'p': DUP(pflag, argv[i]); break;
3987 case 't': tab = abs(atoi (argv[i])); break;
3988 case 'F': DUP(dftfont, argv[i]); break;
3989 case 'P': DUP(preproc, argv[i]); break;
3990 case 'C': DUP(comment, argv[i]); break;
3991 case 'U': DUP(function, argv[i]); break;
3992 case 'S': DUP(strings, argv[i]); break;
3993 case 'T': DUP(type, argv[i]); break;
3994 case 'K': DUP(keyword, argv[i]); break;
3995 case 'N': DUP(lnumber, argv[i]); break;
3996 case 'X': DUP(nonlatin, argv[i]); break;
3997 case 'd': sscanf(argv[i], "%f", &dim_comment); break;
3998 case 'f': sscanf(argv[i], "%f", &fontsize); break;
3999 case 's': sscanf(argv[i], "%f", &spacing); break;
4000 case 'l': lpp = abs(atoi(argv[i])); break;
4001 case '_':
4002 if (!strcmp(argv[i], "none"))
4003 fun_highlight_id = 0;
4004 else if (!strcmp(argv[i], "box"))
4005 fun_highlight_id = 1;
4006 else
4007 fun_highlight_id = 2;
4008 break;
4009 default: Help();
4010 }
4011 } else
4012 Help();
4013 }
4014 }
4015 }
4016 else
4017 {
4018 if (argv[i][1] == 'D')
4019 {
4020 DUP (defs[defs_num], & argv[i][2]);
4021 defs_num++;
4022 }
4023 else if (argv[i][1] == 'U')
4024 {
4025 DUP (undefs[undefs_num], & argv[i][2]);
4026 undefs_num++;
4027 }
4028 else
4029 Help ();
4030 }
4031 }
4032 else
4033 {
4034 DUP(fp[fp_num], argv[i]);
4035 fp_num++;
4036 }
4037 }
4038
4039 BEGIN((noc) ? dont_highlight : nnested);
4040
4041 if (fp_num > 0) /* files to print */
4042 {
4043 if (yywrap())
4044 {
4045 fprintf(stderr, "Nothing to print. Exiting... \n");
4046 exit(1);
4047 }
4048 }
4049 else
4050 {
4051 time(&t);
4052 strcpy(date, ctime(&t));
4053 date[24] = '\0';
4054 }
4055
4056 chw = 3. * fontsize / 5.;
4057
4058 if (!dftfont)
4059 { DUP(dftfont, DEFAULT); }
4060 if (!preproc)
4061 { DUP(preproc, PREPROC); }
4062 if (!comment)
4063 { DUP(comment, COMMENT); }
4064 if (!keyword)
4065 { DUP(keyword, KEYWORD); }
4066 if (!strings)
4067 { DUP(strings, STRINGS); }
4068 if (!type)
4069 { DUP(type, TYPE); }
4070 if (!lnumber)
4071 { DUP(lnumber, LNUMBER); }
4072 if (!function)
4073 { DUP(function, FUNCTION); }
4074 if (nonlatin)
4075 {
4076 iso = 0;
4077 nonlatin_text = 1;
4078 }
4079
4080 getpaper(pflag);
4081
4082 fprintf(out, "%%!PS-Adobe-2.0\n%%%%Creator: c2ps version %s\n", VERSION);
4083 fprintf(out, "%%%%Orientation: %s\n", (ppl == 2) ? "Landscape" : "Portrait");
4084 fprintf(out, "%%%%Pages: (atend)\n");
4085 fprintf(out, "%%%%DocumentNeededFonts: Times-BoldItalic Times-Bold %s %s %s",
4086 dftfont,
4087 (number_lines || fun_box || fun_entry_exit) ? lnumber : "",
4088 (nonlatin) ? nonlatin : "");
4089 if (!noc)
4090 fprintf(out, " %s %s %s %s %s %s",
4091 keyword, strings, type, preproc, comment, function);
4092 fprintf(out, "\n%%%%DocumentMedia: %s\n%%%%EndComments\n\n",
4093 (strncasecmp(pspec.name, "letter", 7) == 0) ? "Letter 612 792" : "A4 595 842");
4094 if (iso)
4095 {
4096 fprintf(out, ISO);
4097 REENCODE(dftfont);
4098 if (!noc)
4099 {
4100 REENCODE(strings);
4101 REENCODE(comment);
4102 }
4103 }
4104
4105 fprintf(out, "/s {show} bind def /nl { 20 exch moveto } def\n ");
4106 fprintf(out, "/sf {setfont} bind def /cf {currentfont} bind def\n");
4107 fprintf(out, VERS, VERSION);
4108 fprintf(out, "/fdf { /%s%s findfont %.2f scalefont setfont } def\n",
4109 dftfont, (iso) ? "-iso" : "", fontsize);
4110 fprintf(out, "/fhd { /Times-Bold findfont 16 scalefont setfont } def\n");
4111 if (nonlatin)
4112 fprintf(out, "/fno { /%s findfont %.2f scalefont setfont } def\n",
4113 nonlatin, fontsize);
4114 if (number_lines)
4115 {
4116 fprintf(out, "/fnu { /%s findfont %.2f scalefont setfont } def\n",
4117 lnumber, fontsize);
4118 fprintf(out, "/sn { gsave fnu 0 setgray } def /n { s grestore "
4119 "%.2f 0 rmoveto } def\n",
4120 6. * chw);
4121 }
4122 if (!noc)
4123 {
4124 fprintf(out, "/fco { /%s%s findfont %.2f scalefont sf } def\n",
4125 comment, (!noc && iso) ? "-iso" : "", fontsize);
4126 fprintf(out, "/fke { /%s findfont %.2f scalefont sf } def\n", keyword, fontsize);
4127 fprintf(out, "/ffu { /%s findfont %.2f scalefont sf } def\n", function, fontsize);
4128 fprintf(out, "/fty { /%s findfont %.2f scalefont sf } def\n", type, fontsize);
4129 fprintf(out, "/fst { /%s%s findfont %.2f scalefont sf } def\n",
4130 strings, (!noc && iso) ? "-iso" : "", fontsize);
4131 fprintf(out, "/fpr { /%s findfont %.2f scalefont sf } def\n\n", preproc, fontsize);
4132
4133 if (fun_entry_exit)
4134 fprintf(out, "%s\n", INOUTFUNCTIONS);
4135 if (fun_box)
4136 fprintf(out, "%s\n", FUNCTIONBOX);
4137 }
4138
4139 fprintf(out, "%s\n", FILLEDBOX);
4140
4141 fprintf(out, "/Modified {\n%s\n} def\n",
4142 (last_modified && header && fp_num > 0) ?
4143 "/Times-Bold findfont 24 scalefont setfont\n"
4144 "(MODIFIED) dup stringwidth pop 2 div neg 297.5 add 797 moveto\n"
4145 "currentpoint 1 setgray 0.5 -0.5 rmoveto 2 index s moveto\n"
4146 "currentpoint 0.84 setgray -0.5 0.5 rmoveto 2 index s moveto \n"
4147 "0.95 setgray s 0 setgray\n" : "");
4148 fprintf(out, "/DrawFrame {\n");
4149 if (header)
4150 {
4151 fprintf(out, " gsave\n0 setgray\n");
4152 fprintf(out, " 555 25 20 795 FilledBox\n");
4153 fprintf(out, " /Times-BoldItalic findfont 16 scalefont setfont\n");
4154 fprintf(out, " gsave newpath 20 795 moveto 230 795 lineto 230 820\n");
4155 fprintf(out, " lineto 20 820 lineto closepath clip 30 800 moveto s \n");
4156 fprintf(out, " grestore\n");
4157 fprintf(out, " Modified\n");
4158 fprintf(out, " /Times-Bold findfont 9 scalefont setfont\n"
4159 "dup stringwidth pop 2 div neg 297.5 add 800 moveto s\n");
4160 fprintf(out, " grestore\n");
4161 }
4162 fprintf(out, "} def\n");
4163
4164 fprintf(out, "106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen\n");
4165 fprintf(out, "/clp { newpath 20 820 moveto 577 820 lineto 577 20\n");
4166 fprintf(out, "lineto 20 20 lineto closepath clip %s } def fdf\n",
4167 (frame) ? "0 setgray 0.05 setlinewidth stroke" : "");
4168 NextPage();
4169
4170 yylex();
4171
4172 if (fp_num == 0)
4173 {
4174 PFlush();
4175 if(fun_box)
4176 PFunctionBox();
4177 if(fun_entry_exit && header && page>0 && cur_fun)
4178 fprintf(out, "\n(%s) OutFunction\n", cur_fun);
4179 fprintf(out, "\nshowpage\n");
4180 fprintf(stderr, "%-25.25s %4lu pages printed \n",
4181 "stdin", (page - 1) / ppl + 1);
4182 }
4183 else
4184 if (fp_num > 1)
4185 fprintf(stderr,
4186 "____________________________________________\n"
4187 "%-25.25s %4lu pages printed \n",
4188 "Total", (total_page - 1) / ppl + 1);
4189
4190 fprintf(out, "\n%%%%Pages: %lu\n", (total_page - 1) / ppl + 1);
4191 fclose(out);
4192 return 0;
4193 }
4194
4195
4196