source: git/Singular/libparse.cc @ 3bef0a

spielwiese
Last change on this file since 3bef0a was 0fb34ba, checked in by Hans Schoenemann <hannes@…>, 13 years ago
start with dir Singular: fix includes and makefile
  • Property mode set to 100644
File size: 106.9 KB
Line 
1#define yy_create_buffer yylp_create_buffer
2#define yy_delete_buffer yylp_delete_buffer
3#define yy_scan_buffer yylp_scan_buffer
4#define yy_scan_string yylp_scan_string
5#define yy_scan_bytes yylp_scan_bytes
6#define yy_flex_debug yylp_flex_debug
7#define yy_init_buffer yylp_init_buffer
8#define yy_flush_buffer yylp_flush_buffer
9#define yy_load_buffer_state yylp_load_buffer_state
10#define yy_switch_to_buffer yylp_switch_to_buffer
11#define yyin yylpin
12#define yyleng yylpleng
13#define yylex yylplex
14#define yyout yylpout
15#define yyrestart yylprestart
16#define yytext yylptext
17#define yywrap yylpwrap
18
19/* A lexical scanner generated by flex */
20
21/* Scanner skeleton version:
22 * $Header: /exports/cvsroot-2/cvsroot/Singular/libparse.cc,v 1.15 2009-07-28 15:22:17 Singular Exp $
23 */
24
25#define FLEX_SCANNER
26#define YY_FLEX_MAJOR_VERSION 2
27#define YY_FLEX_MINOR_VERSION 5
28
29#include <stdio.h>
30
31
32/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
33#ifdef c_plusplus
34#ifndef __cplusplus
35#define __cplusplus
36#endif
37#endif
38
39
40#ifdef __cplusplus
41
42#include <stdlib.h>
43#include <unistd.h>
44
45/* Use prototypes in function declarations. */
46#define YY_USE_PROTOS
47
48/* The "const" storage-class-modifier is valid. */
49#define YY_USE_CONST
50
51#else   /* ! __cplusplus */
52
53#if __STDC__
54
55#define YY_USE_PROTOS
56#define YY_USE_CONST
57
58#endif  /* __STDC__ */
59#endif  /* ! __cplusplus */
60
61#ifdef __TURBOC__
62 #pragma warn -rch
63 #pragma warn -use
64#include <io.h>
65#include <stdlib.h>
66#define YY_USE_CONST
67#define YY_USE_PROTOS
68#endif
69
70#ifdef YY_USE_CONST
71#define yyconst const
72#else
73#define yyconst
74#endif
75
76
77#ifdef YY_USE_PROTOS
78#define YY_PROTO(proto) proto
79#else
80#define YY_PROTO(proto) ()
81#endif
82
83/* Returned upon end-of-file. */
84#define YY_NULL 0
85
86/* Promotes a possibly negative, possibly signed char to an unsigned
87 * integer for use as an array index.  If the signed char is negative,
88 * we want to instead treat it as an 8-bit unsigned char, hence the
89 * double cast.
90 */
91#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
92
93/* Enter a start condition.  This macro really ought to take a parameter,
94 * but we do it the disgusting crufty way forced on us by the ()-less
95 * definition of BEGIN.
96 */
97#define BEGIN yy_start = 1 + 2 *
98
99/* Translate the current start state into a value that can be later handed
100 * to BEGIN to return to the state.  The YYSTATE alias is for lex
101 * compatibility.
102 */
103#define YY_START ((yy_start - 1) / 2)
104#define YYSTATE YY_START
105
106/* Action number for EOF rule of a given start state. */
107#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
108
109/* Special action meaning "start processing a new file". */
110#define YY_NEW_FILE yyrestart( yyin )
111
112#define YY_END_OF_BUFFER_CHAR 0
113
114/* Size of default input buffer. */
115#define YY_BUF_SIZE 16384
116
117typedef struct yy_buffer_state *YY_BUFFER_STATE;
118
119extern int yyleng;
120extern FILE *yyin, *yyout;
121
122#define EOB_ACT_CONTINUE_SCAN 0
123#define EOB_ACT_END_OF_FILE 1
124#define EOB_ACT_LAST_MATCH 2
125
126/* The funky do-while in the following #define is used to turn the definition
127 * int a single C statement (which needs a semi-colon terminator).  This
128 * avoids problems with code like:
129 *
130 *      if ( condition_holds )
131 *              yyless( 5 );
132 *      else
133 *              do_something_else();
134 *
135 * Prior to using the do-while the compiler would get upset at the
136 * "else" because it interpreted the "if" statement as being all
137 * done when it reached the ';' after the yyless() call.
138 */
139
140/* Return all but the first 'n' matched characters back to the input stream. */
141
142#define yyless(n) \
143        do \
144                { \
145                /* Undo effects of setting up yytext. */ \
146                *yy_cp = yy_hold_char; \
147                YY_RESTORE_YY_MORE_OFFSET \
148                yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
149                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
150                } \
151        while ( 0 )
152
153#define unput(c) yyunput( c, yytext_ptr )
154
155/* The following is because we cannot portably get our hands on size_t
156 * (without autoconf's help, which isn't available because we want
157 * flex-generated scanners to compile on their own).
158 */
159typedef unsigned int yy_size_t;
160
161
162struct yy_buffer_state
163        {
164        FILE *yy_input_file;
165
166        char *yy_ch_buf;                /* input buffer */
167        char *yy_buf_pos;               /* current position in input buffer */
168
169        /* Size of input buffer in bytes, not including room for EOB
170         * characters.
171         */
172        yy_size_t yy_buf_size;
173
174        /* Number of characters read into yy_ch_buf, not including EOB
175         * characters.
176         */
177        int yy_n_chars;
178
179        /* Whether we "own" the buffer - i.e., we know we created it,
180         * and can realloc() it to grow it, and should free() it to
181         * delete it.
182         */
183        int yy_is_our_buffer;
184
185        /* Whether this is an "interactive" input source; if so, and
186         * if we're using stdio for input, then we want to use getc()
187         * instead of fread(), to make sure we stop fetching input after
188         * each newline.
189         */
190        int yy_is_interactive;
191
192        /* Whether we're considered to be at the beginning of a line.
193         * If so, '^' rules will be active on the next match, otherwise
194         * not.
195         */
196        int yy_at_bol;
197
198        /* Whether to try to fill the input buffer when we reach the
199         * end of it.
200         */
201        int yy_fill_buffer;
202
203        int yy_buffer_status;
204#define YY_BUFFER_NEW 0
205#define YY_BUFFER_NORMAL 1
206        /* When an EOF's been seen but there's still some text to process
207         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
208         * shouldn't try reading from the input source any more.  We might
209         * still have a bunch of tokens to match, though, because of
210         * possible backing-up.
211         *
212         * When we actually see the EOF, we change the status to "new"
213         * (via yyrestart()), so that the user can continue scanning by
214         * just pointing yyin at a new input file.
215         */
216#define YY_BUFFER_EOF_PENDING 2
217        };
218
219static YY_BUFFER_STATE yy_current_buffer = 0;
220
221/* We provide macros for accessing buffer states in case in the
222 * future we want to put the buffer states in a more general
223 * "scanner state".
224 */
225#define YY_CURRENT_BUFFER yy_current_buffer
226
227
228/* yy_hold_char holds the character lost when yytext is formed. */
229static char yy_hold_char;
230
231static int yy_n_chars;          /* number of characters read into yy_ch_buf */
232
233
234int yyleng;
235
236/* Points to current character in buffer. */
237static char *yy_c_buf_p = (char *) 0;
238static int yy_init = 1;         /* whether we need to initialize */
239static int yy_start = 0;        /* start state number */
240
241/* Flag which is used to allow yywrap()'s to do buffer switches
242 * instead of setting up a fresh yyin.  A bit of a hack ...
243 */
244static int yy_did_buffer_switch_on_eof;
245
246void yyrestart YY_PROTO(( FILE *input_file ));
247
248void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
249void yy_load_buffer_state YY_PROTO(( void ));
250YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
251void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
252void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
253void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
254#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
255
256YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
257YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
258YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
259
260static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
261static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
262static void yy_flex_free YY_PROTO(( void * ));
263
264#define yy_new_buffer yy_create_buffer
265
266#define yy_set_interactive(is_interactive) \
267        { \
268        if ( ! yy_current_buffer ) \
269                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
270        yy_current_buffer->yy_is_interactive = is_interactive; \
271        }
272
273#define yy_set_bol(at_bol) \
274        { \
275        if ( ! yy_current_buffer ) \
276                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
277        yy_current_buffer->yy_at_bol = at_bol; \
278        }
279
280#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
281
282typedef unsigned char YY_CHAR;
283FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
284typedef int yy_state_type;
285extern char *yytext;
286#define yytext_ptr yytext
287
288static yy_state_type yy_get_previous_state YY_PROTO(( void ));
289static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
290static int yy_get_next_buffer YY_PROTO(( void ));
291static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
292
293/* Done after the current pattern has been matched and before the
294 * corresponding action - sets up yytext.
295 */
296#define YY_DO_BEFORE_ACTION \
297        yytext_ptr = yy_bp; \
298        yytext_ptr -= yy_more_len; \
299        yyleng = (int) (yy_cp - yytext_ptr); \
300        yy_hold_char = *yy_cp; \
301        *yy_cp = '\0'; \
302        yy_c_buf_p = yy_cp;
303
304#define YY_NUM_RULES 96
305#define YY_END_OF_BUFFER 97
306static yyconst short int yy_accept[485] =
307    {   0,
308        0,    0,    0,    0,   28,   28,    0,    0,    0,    0,
309        0,    0,    0,    0,    0,    0,   49,   49,    0,    0,
310        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
311        0,    0,    0,    0,    0,    0,    0,    0,   97,   95,
312        1,   92,   93,    2,   94,   95,   95,   95,   95,   95,
313       95,   95,   95,   95,   20,   19,   20,   20,   20,   20,
314       20,   20,   20,   20,   29,   28,   27,   29,   29,   29,
315       29,   29,   29,   29,   29,   96,   30,   96,   96,   96,
316       39,   32,   36,   33,   34,   38,   35,   43,   43,   96,
317       43,   43,   43,   43,   43,   43,   42,   47,   46,   47,
318
319       45,   49,   51,   48,   50,   63,   62,   53,   58,   59,
320       63,   60,   61,   63,   56,   57,   83,   82,   75,   78,
321       79,   83,   80,   81,   76,   77,   88,   87,   84,   88,
322       73,   72,   70,   73,   91,   90,   91,   66,   65,   64,
323       69,   68,   67,    0,    1,    0,    0,    0,    0,    0,
324        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
325        0,    0,    0,   28,   28,    0,    0,    0,    0,    0,
326        0,    0,    0,   30,    0,   31,    0,    0,   37,    0,
327        0,    0,    0,    0,    0,    0,   42,    0,    0,    0,
328        0,    0,   42,   42,   44,   49,   52,    0,   74,   86,
329
330       85,   71,   89,    0,    1,    1,    0,    1,    0,    0,
331        0,    0,    0,    0,    0,    0,    0,    0,   14,   13,
332        0,    0,    0,    0,    0,    0,   28,   28,   28,   28,
333       22,   21,    0,    0,    0,    0,    0,    0,   37,   37,
334        0,    0,    0,   41,    0,   42,    0,    0,    0,    0,
335        0,   52,    0,   74,    0,    0,    0,    1,    0,    0,
336        0,    0,    0,    0,    0,    0,    0,    0,   14,   13,
337       13,    0,    0,    0,    0,    0,    0,    0,   28,   22,
338       21,   21,    0,    0,    0,    0,    0,    0,    0,    0,
339        0,   41,    0,    0,   40,    0,   41,    0,    0,    0,
340
341       10,   11,    0,    0,    0,    0,    0,    0,    0,    0,
342        0,    0,    0,   13,    0,    0,    0,    0,   16,    0,
343       17,    0,   15,   21,    0,    0,    0,    0,   23,    0,
344       25,    0,   24,    0,    0,   40,    0,    0,    0,    0,
345        0,    0,    0,    0,    0,    8,    8,    7,    0,    0,
346        5,    0,    0,    0,    0,   12,    0,    0,    0,   18,
347        0,    0,    0,   26,    0,    0,    0,    0,    0,   55,
348        0,    0,    8,    8,    0,    9,    0,    0,    3,    0,
349        0,    8,    8,    8,    5,    5,    0,    0,   12,   12,
350       12,    0,    0,    0,    0,    0,    0,    8,    8,    8,
351
352        0,    3,    3,    0,    0,    0,    0,    0,    0,    0,
353        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
354        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
355        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
356        0,    6,    0,    0,   12,    0,    0,    0,    0,    0,
357        0,   54,    0,    0,    0,    0,    0,    4,    0,    0,
358        6,    6,   12,   12,   12,    0,    0,    0,    0,    0,
359        0,    0,    4,    4,    0,    0,    0,    0,    0,    0,
360        0,    0,    0,    0
361    } ;
362
363static yyconst int yy_ec[256] =
364    {   0,
365        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
366        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
367        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
368        1,    5,    6,    7,    8,    9,   10,   11,   12,   13,
369       14,   15,   11,   16,   11,   10,   17,   18,   18,   18,
370       18,   18,   18,   18,   18,   18,   18,   19,   20,   11,
371       21,   11,   11,   12,   22,   23,   22,   22,   22,   22,
372       22,   24,   25,   22,   22,   26,   22,   22,   22,   22,
373       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
374       27,   28,   29,   30,   31,   11,   32,   22,   33,   34,
375
376       35,   36,   37,   22,   38,   22,   22,   39,   40,   41,
377       42,   43,   22,   44,   45,   46,   47,   48,   22,   49,
378       50,   22,   51,   11,   52,   11,    1,    1,    1,    1,
379        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
380        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
381        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
382        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
383        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
384        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
385        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
386
387        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
388        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
389        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
390        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
391        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
392        1,    1,    1,    1,    1
393    } ;
394
395static yyconst int yy_meta[53] =
396    {   0,
397        1,    2,    3,    4,    2,    1,    5,    6,    1,    5,
398        1,    7,    8,    9,    5,   10,    5,   11,    5,    1,
399        1,    7,    7,    7,    7,    7,    1,    1,    1,    5,
400        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
401        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
402        4,    1
403    } ;
404
405static yyconst short int yy_base[533] =
406    {   0,
407        0,   47,    6,   93,  140,  187,  235,  287,  339,  391,
408        5,   11,  443,    0,    9,   12,   63,   69,  493,  543,
409        0,    0,  593,  643,   72,   80,   81,   90,   26,   31,
410       24,   52,   54,   95,    0,    0,    0,    0, 1250, 2200,
411     1202, 2200, 2200, 1226, 2200, 1213, 1221, 1183, 1164, 1170,
412     1162, 1105, 1106, 1114, 2200, 2200, 1131,   61, 1115, 1105,
413     1100, 1108, 1117, 1096, 2200,   84, 2200, 1121,   95, 1105,
414     1095, 1091, 1098, 1100, 1073, 2200, 2200, 1109, 1099, 1101,
415     2200, 2200, 2200, 2200, 2200, 1083, 2200, 2200,  694,    0,
416        0,  125,  745,  144,  151,  157, 2200, 2200, 2200, 1048,
417
418     2200,   99, 2200, 2200, 2200, 2200, 2200, 2200, 2200, 2200,
419     1080, 2200, 2200, 1052, 2200, 2200, 2200, 2200, 2200, 2200,
420     2200, 1073, 2200, 2200, 2200, 2200, 2200, 2200, 2200,    4,
421     2200, 2200, 2200,   14, 2200, 2200, 1071, 2200, 2200, 2200,
422     2200, 2200, 2200, 1041, 1066, 1056, 1071, 1029, 1042, 1032,
423     1024, 1033, 1024, 1002,  163, 1039, 1027,  984,  992,  983,
424      976,  986,  966,  111,  796,  985,  972,  941,  945,  936,
425      874,  894,  874, 2200,  908, 2200,  900,  906,  895,    0,
426        0,  172,    0,  179,  191,  207, 2200,  904,  903,  219,
427      902,   74,  847,  198, 2200,  119,    0,  866,    0, 2200,
428
429     2200, 2200, 2200,  865,    0,  889,  213,    0,  869,  760,
430      757,  659,  645,  263,  645,  245,   82,  672,    0,  671,
431      651,  643,  274,  639,  132,  650,  665,  651,  649,  642,
432        0,  632,  612,  601,  278,  593,  133,  601,    0,  611,
433      318,  324,  330,    0,  375,  612,    0,    0,  381,    0,
434      609,    0,  578,    0,  576,  349,  594,    0,  562,  555,
435      368,  161,  559,  404,  509,  547,  548,  547,    0,    0,
436      560,  538,  500,  412,  522,  536,  422,  564,    0,    0,
437        0,  551,  530,  550,  530,  559,  527,  571,  553,  586,
438      610, 2200,  622,  628,    0,  307, 2200,  536,  226,  214,
439
440     2200, 2200,  507,  509,  600,  660,  577,  514,  898,  918,
441      495,  491,  500,  501,  475,  637,  969,  975, 2200,  473,
442     2200,  502, 2200,  491,  459,  650,  981,  990, 2200,  457,
443     2200,  491, 2200,  996, 1001,    0,  646, 1051, 1010, 1101,
444     1005,  453,  406, 1014, 1151,  121, 2200, 2200,  433,  432,
445        0,  431,  430,  390,  396, 1203,  384, 1022,  381, 2200,
446      369, 1055,  362, 2200, 1029,  227,  370,  270,  526, 2200,
447      269,    0,  287, 2200,  349, 2200,  380,  358,    0,  357,
448      350,  288,  318,  343, 2200,  348, 1046,  312,    0, 1255,
449      311,  274, 1068,  254, 1089, 1093, 1076,  345,  403,  405,
450
451     1223, 2200,  290, 1118, 1124,  241, 1231, 1216, 1244, 1237,
452     1275, 1287, 1110,  101, 1307, 1293, 1314, 1344, 1334, 1351,
453     1364, 1374, 1394,  254, 1445, 1449, 1455, 1469, 1475, 1481,
454      662, 1300,  238,    0,  239, 1313,  154, 1490, 1510,  245,
455      200,    0,  199,  192, 1562, 1590, 1596, 1591,  605,  214,
456     1035, 2200, 1610, 1332, 1607,  190,  184,    0,  143,  137,
457     2200,  126,    0, 1641,  103, 1622,  155, 1692, 1655, 1673,
458     1722, 1712, 2200,  104, 1618,    0,   91, 1685,  220, 1728,
459      656,  230, 1734, 2200, 1765, 1776, 1787, 1798, 1809, 1820,
460     1831, 1842, 1853, 1864, 1875, 1886, 1897, 1908, 1919, 1926,
461
462     1933, 1944, 1955, 1966, 1977, 1988, 1999, 2010, 2021, 2032,
463     2042, 2048, 2054, 2064, 2065, 2076,   92, 2081, 2092, 2102,
464     2112, 2118, 2124, 2129,   51, 2140, 2150, 2160, 2167, 2177,
465     2183, 2188
466    } ;
467
468static yyconst short int yy_def[533] =
469    {   0,
470      485,  485,  486,  486,  487,  487,  488,  488,  489,  489,
471      490,  490,  484,   13,  491,  491,  492,  492,  493,  493,
472      492,  492,  494,  494,  495,  495,  496,  496,  497,  497,
473      498,  498,  499,  499,  492,  492,  492,  492,  484,  484,
474      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
475      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
476      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
477      484,  484,  484,  484,  484,  484,  484,  500,  484,  501,
478      484,  484,  484,  484,  484,  484,  484,  484,  484,   89,
479       89,   89,  484,   89,   89,   89,  484,  484,  484,  484,
480
481      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
482      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
483      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
484      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
485      484,  484,  484,  484,  502,  484,  484,  484,  484,  484,
486      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
487      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
488      484,  484,  484,  484,  500,  484,  484,  501,  503,   89,
489       89,   89,   93,   89,   89,   89,  484,   93,   93,   93,
490       93,   93,  484,   89,  484,  484,  504,  484,  505,  484,
491
492      484,  484,  484,  484,  502,  502,  484,  506,  484,  484,
493      484,  484,  484,  484,  484,  484,  484,  484,  507,  508,
494      484,  484,  484,  484,  484,  484,  165,  165,  165,  165,
495      509,  510,  484,  484,  484,  484,  484,  484,  503,  503,
496       89,   93,   93,  193,   93,   93,  193,  193,  484,  193,
497      193,  504,  484,  505,  484,  484,  484,  506,  484,  484,
498      484,  484,  484,  484,  484,  484,  484,  484,  507,  508,
499      508,  484,  484,  484,  484,  484,  484,  484,  165,  509,
500      510,  510,  484,  484,  484,  484,  484,  484,  484,   89,
501       89,  484,   93,   93,  193,  484,  484,  193,  511,  484,
502
503      484,  484,  484,  484,  484,  484,  512,  484,  484,  484,
504      484,  484,  484,  508,  484,  484,  484,  484,  484,  484,
505      484,  484,  484,  510,  484,  484,  484,  484,  484,  484,
506      484,  484,  484,  193,  193,  193,  511,  513,  511,  513,
507      514,  484,  484,  484,  484,  515,  484,  484,  310,  310,
508      310,  310,  310,  484,  484,  516,  484,  484,  484,  484,
509      484,  484,  484,  484,  484,  340,  517,  340,  340,  484,
510      339,  340,  518,  484,  484,  484,  345,  345,  345,  345,
511      345,  515,  515,  515,  484,  310,  484,  484,  519,  516,
512      390,  484,  484,  484,  484,  520,  521,  518,  518,  518,
513
514      484,  484,  345,  484,  484,  484,  484,  484,  484,  484,
515      484,  484,  522,  484,  523,  520,  520,  523,  521,  484,
516      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
517      524,  484,  525,  418,  484,  417,  417,  484,  484,  423,
518      423,  423,  423,  423,  526,  484,  484,  524,  484,  484,
519      484,  484,  527,  528,  524,  439,  439,  439,  439,  439,
520      484,  423,  529,  526,  464,  530,  484,  531,  527,  527,
521      531,  528,  484,  439,  532,  471,  484,  470,  470,  532,
522      484,  484,  532,    0,  484,  484,  484,  484,  484,  484,
523      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
524
525      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
526      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
527      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
528      484,  484
529    } ;
530
531static yyconst short int yy_nxt[2253] =
532    {   0,
533      484,   41,   42,   43,   41,  484,   82,   83,   56,   82,
534      200,   99,   82,   83,   99,   82,   44,   84,   85,   45,
535      202,   86,   57,   84,   85,   46,  139,   86,  136,   47,
536      140,  201,   48,  136,   49,   58,  100,   50,   59,  100,
537      137,  202,   51,   60,   52,  137,   53,   54,   41,   42,
538       43,   41,   61,   62,  139,   87,  142,  453,  140,  101,
539      143,   87,  101,   44,  102,  103,   45,  102,  156,  104,
540      102,  103,   46,  102,  128,  104,   47,  157,  129,   48,
541      245,   49,  128,  132,   50,  164,  129,  133,  164,   51,
542      217,   52,  132,   53,   54,   56,  133,  142,  396,  130,
543
544      196,  143,  166,  196,  483,  267,  268,  130,  134,   57,
545      473,  167,  164,  105,  432,  164,  433,  134,   63,  105,
546      196,  465,   58,  196,  246,   59,  182,  185,  185,  182,
547       60,  185,  461,  277,  288,   64,  277,  288,  383,   61,
548       62,   66,   67,  474,   66,  182,  185,  185,  182,  473,
549      185,  384,  182,  185,  185,  182,   68,  185,  182,  185,
550      185,  182,  307,  185,  216,  307,  435,  216,  432,   69,
551      433,  217,   70,  182,  185,  185,  182,   71,  185,  218,
552      182,  185,  185,  182,  437,  185,   72,   73,   66,   67,
553      473,   66,  182,  185,  185,  182,  473,  185,  462,  182,
554
555      185,  185,  182,   68,  185,  461,  461,  194,  182,  185,
556      185,  182,   74,  185,  256,  341,   69,  256,  341,   70,
557      242,  243,  243,  242,   71,  257,  435,  337,  365,   75,
558      337,  365,  477,   72,   73,   76,   76,   76,   76,   76,
559       76,   77,  477,   76,  450,   76,  216,   76,   76,  216,
560      479,  461,  455,  217,   76,   76,  339,  194,  340,  366,
561      482,   76,   76,   76,  264,  264,  264,  264,  454,  244,
562      371,  365,  445,  371,  365,  274,  274,  274,  274,  285,
563      285,  285,  285,  265,  424,   76,   76,   76,   76,   76,
564       76,   76,   76,   77,  275,   76,  402,   76,  286,   76,
565
566       76,  214,  366,  410,  399,  383,   76,   76,  296,  296,
567      296,  296,  223,   76,   76,   76,  235,  400,  384,  290,
568      291,  291,  290,  407,  241,  242,  243,  243,  242,  391,
569      241,  242,  243,  243,  242,  383,  241,   76,   76,   76,
570       76,   76,   76,   76,   76,   79,  406,   76,  384,   76,
571      256,   76,   76,  256,  385,  301,  403,  297,   76,   76,
572      383,  257,  399,  402,  402,   76,   76,   76,  292,  305,
573      305,  305,  305,  384,  244,  400,  293,  294,  294,  293,
574      244,  241,  296,  296,  296,  296,  402,  249,  306,   76,
575       76,   76,   76,   76,   76,   76,   76,   79,  401,   76,
576
577      397,   76,  395,   76,   76,  264,  264,  264,  264,  261,
578       76,   76,  394,  274,  274,  274,  274,   76,   76,   76,
579      399,  393,  399,  277,  265,  295,  277,  392,  321,  388,
580      387,  297,  275,  400,  322,  400,  386,  385,  385,  385,
581      376,   76,   76,   88,   89,   90,   91,   89,   92,   93,
582       92,   94,   92,   92,   94,   92,   92,   92,   92,   92,
583       94,   92,   92,   92,   95,   95,   95,   95,   95,   92,
584       96,   92,   92,   92,   95,   95,   95,   95,   95,   95,
585       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
586       95,   95,   95,   97,   92,  107,  375,  364,  363,  108,
587
588      361,  316,  316,  316,  316,  109,  110,  282,  360,  111,
589      309,  309,  309,  309,  359,  310,  357,  271,  356,  112,
590      317,  113,  355,  318,  318,  318,  318,  365,  319,  265,
591      365,  285,  285,  285,  285,  114,  354,  334,  335,  335,
592      334,  273,  275,  115,  116,  107,  348,  343,  342,  108,
593      286,  326,  326,  326,  326,  109,  110,  333,  366,  111,
594      328,  328,  328,  328,  330,  329,  325,  324,  323,  112,
595      327,  113,  288,  320,  315,  288,  314,  331,  307,  286,
596      313,  307,  312,  332,  311,  114,  336,  290,  291,  291,
597      290,  284,  185,  115,  116,  118,  308,  304,  303,  119,
598
599      302,  305,  305,  305,  305,  120,  121,  347,  300,  122,
600      299,  290,  291,  291,  290,  298,  185,  435,  241,  123,
601      306,  124,  449,  293,  294,  294,  293,  240,  241,  293,
602      294,  294,  293,  289,  241,  450,  292,  287,  316,  316,
603      316,  316,  284,  125,  126,  118,  283,  337,  282,  119,
604      337,  326,  326,  326,  326,  120,  121,  317,  279,  122,
605      292,  344,  344,  344,  344,  227,  345,  227,  477,  123,
606      327,  124,  295,  481,  435,  432,  339,  433,  295,  449,
607      306,  227,  278,  276,  273,  272,  482,  271,  155,  266,
608      263,  262,  450,  125,  126,  180,  181,  181,  180,  182,
609
610      183,  182,  184,  182,  182,  184,  182,  182,  182,  182,
611      182,  184,  182,  182,  182,  185,  185,  185,  185,  185,
612      182,  186,  182,  182,  182,  185,  185,  185,  185,  185,
613      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
614      185,  185,  185,  185,  187,  182,  188,  189,  189,  188,
615      188,  190,  188,  191,  188,  188,  191,  188,  188,  188,
616      188,  188,  191,  188,  188,  188,  189,  189,  189,  189,
617      189,  188,  192,  188,  188,  188,  189,  189,  189,  189,
618      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
619      189,  189,  189,  189,  189,  193,  188,  227,  261,  260,
620
621      227,  227,  228,  227,  229,  227,  227,  229,  227,  227,
622      227,  227,  230,  229,  227,  227,  227,  228,  228,  228,
623      228,  228,  227,  227,  227,  227,  227,  228,  228,  228,
624      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
625      228,  228,  228,  228,  228,  228,  227,  227,  247,  248,
626      248,  247,  247,  249,  247,  250,  247,  247,  250,  247,
627      247,  247,  247,  247,  250,  247,  247,  247,  248,  248,
628      248,  248,  248,  247,  251,  247,  247,  247,  248,  248,
629      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
630      248,  248,  248,  248,  248,  248,  248,  247,  247,  309,
631
632      309,  309,  309,  259,  310,  206,  255,  253,  241,  241,
633      241,  240,  177,  176,  174,  238,  237,  236,  265,  349,
634      350,  350,  349,  349,  351,  349,  352,  349,  349,  352,
635      349,  349,  349,  349,  349,  352,  349,  349,  349,  350,
636      350,  350,  350,  350,  349,  353,  349,  349,  349,  350,
637      350,  350,  350,  350,  350,  350,  350,  350,  350,  350,
638      350,  350,  350,  350,  350,  350,  350,  350,  349,  349,
639      358,  358,  358,  358,  235,  319,  318,  318,  318,  318,
640      234,  319,  362,  362,  362,  362,  233,  329,  232,  317,
641      231,  328,  328,  328,  328,  275,  329,  334,  335,  335,
642
643      334,  327,  334,  335,  335,  334,  341,  226,  225,  341,
644      286,  365,  365,  365,  365,  344,  344,  344,  344,  224,
645      345,  223,  367,  358,  358,  358,  358,  222,  319,  221,
646      365,  365,  365,  365,  306,  374,  451,  451,  451,  451,
647      339,  367,  317,  220,  219,  215,  336,  404,  404,  404,
648      404,  336,  365,  365,  365,  365,  362,  362,  362,  362,
649      370,  329,  214,  367,  213,  212,  405,  211,  368,  408,
650      408,  408,  408,  210,  209,  327,  208,  413,  207,  370,
651      413,  369,  206,  414,  204,  452,  387,  203,  409,  199,
652      411,  411,  411,  411,  413,  198,  197,  413,  195,  179,
653
654      414,  370,  371,  365,  365,  371,  419,  177,  393,  412,
655      416,  413,  176,  367,  413,  174,  173,  414,  368,  404,
656      404,  404,  404,  417,  172,  422,  422,  422,  422,  395,
657      423,  369,  171,  372,  170,  169,  168,  165,  405,  163,
658      414,  162,  161,  160,  405,  159,  158,  155,  154,  153,
659      152,  370,  377,  378,  378,  377,  377,  379,  377,  380,
660      377,  377,  380,  377,  377,  377,  377,  377,  380,  377,
661      377,  377,  378,  378,  378,  378,  378,  377,  381,  377,
662      377,  377,  378,  378,  378,  378,  378,  378,  378,  378,
663      378,  378,  378,  378,  378,  378,  378,  378,  378,  378,
664
665      378,  377,  377,  389,  389,  151,  389,  389,  389,  389,
666      150,  389,  149,  389,  148,  389,  389,  408,  408,  408,
667      408,  391,  389,  389,  420,  420,  420,  420,  147,  389,
668      389,  389,  425,  425,  425,  425,  409,  146,  428,  428,
669      428,  428,  145,  421,  144,  427,  427,  427,  427,  484,
670      319,  426,  484,  389,  389,  389,  389,  429,  389,  389,
671      389,  389,  484,  389,  409,  389,  484,  389,  389,  484,
672      484,  484,  401,  484,  389,  389,  411,  411,  411,  411,
673      407,  389,  389,  389,  484,  484,  410,  484,  430,  430,
674      430,  430,  484,  329,  413,  412,  484,  413,  484,  484,
675
676      414,  451,  451,  451,  451,  389,  389,  412,  413,  484,
677      416,  413,  367,  484,  414,  413,  484,  484,  413,  435,
678      432,  414,  433,  417,  436,  435,  484,  432,  484,  433,
679      436,  416,  484,  466,  484,  413,  466,  437,  413,  467,
680      484,  414,  484,  437,  417,  413,  484,  432,  413,  433,
681      452,  414,  420,  420,  420,  420,  435,  432,  484,  433,
682      484,  436,  472,  484,  419,  438,  438,  438,  438,  484,
683      439,  421,  484,  484,  437,  422,  422,  422,  422,  484,
684      423,  484,  484,  484,  421,  484,  484,  484,  484,  484,
685      484,  484,  484,  484,  405,  440,  441,  441,  440,  440,
686
687      442,  440,  443,  440,  440,  443,  440,  440,  440,  440,
688      440,  443,  440,  440,  440,  441,  441,  441,  441,  441,
689      440,  444,  440,  440,  440,  441,  441,  441,  441,  441,
690      441,  441,  441,  441,  441,  441,  441,  441,  441,  441,
691      441,  441,  441,  441,  440,  440,  425,  425,  425,  425,
692      446,  446,  446,  446,  484,  319,  427,  427,  427,  427,
693      484,  319,  484,  484,  484,  426,  484,  484,  484,  426,
694      428,  428,  428,  428,  484,  409,  447,  447,  447,  447,
695      484,  329,  430,  430,  430,  430,  484,  329,  484,  429,
696      484,  438,  438,  438,  438,  429,  439,  484,  484,  484,
697
698      484,  412,  484,  484,  484,  484,  484,  484,  484,  484,
699      421,  456,  457,  457,  456,  456,  458,  456,  459,  456,
700      456,  459,  456,  456,  456,  456,  456,  459,  456,  456,
701      456,  457,  457,  457,  457,  457,  456,  460,  456,  456,
702      456,  457,  457,  457,  457,  457,  457,  457,  457,  457,
703      457,  457,  457,  457,  457,  457,  457,  457,  457,  457,
704      456,  456,  463,  463,  484,  463,  463,  463,  463,  484,
705      463,  484,  463,  484,  463,  463,  484,  484,  484,  484,
706      465,  463,  463,  484,  484,  484,  484,  484,  463,  463,
707      463,  446,  446,  446,  446,  484,  319,  447,  447,  447,
708
709      447,  484,  329,  435,  484,  484,  484,  484,  449,  484,
710      426,  466,  463,  463,  466,  484,  429,  467,  484,  435,
711      432,  450,  433,  466,  449,  484,  466,  469,  484,  467,
712      477,  432,  484,  433,  484,  481,  484,  450,  484,  484,
713      470,  463,  463,  484,  463,  463,  463,  463,  482,  463,
714      484,  463,  467,  463,  463,  484,  466,  484,  484,  466,
715      463,  463,  467,  484,  484,  484,  484,  463,  463,  463,
716      484,  484,  469,  484,  466,  484,  484,  466,  484,  484,
717      467,  484,  484,  484,  484,  470,  432,  484,  433,  484,
718      469,  463,  463,  466,  484,  484,  466,  477,  484,  467,
719
720      484,  484,  478,  470,  477,  432,  484,  433,  484,  478,
721      484,  484,  484,  466,  484,  479,  466,  484,  484,  467,
722      484,  484,  479,  466,  484,  432,  466,  433,  484,  467,
723      484,  484,  484,  484,  477,  432,  484,  433,  484,  478,
724      477,  484,  472,  484,  484,  481,  477,  432,  484,  433,
725      484,  481,  479,  484,  484,  484,  484,  484,  482,  484,
726      484,  484,  484,  484,  482,   40,   40,   40,   40,   40,
727       40,   40,   40,   40,   40,   40,   55,   55,   55,   55,
728       55,   55,   55,   55,   55,   55,   55,   65,   65,   65,
729       65,   65,   65,   65,   65,   65,   65,   65,   78,   78,
730
731       78,   78,   78,   78,   78,   78,   78,   78,   78,   80,
732       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
733       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
734       81,   98,   98,   98,   98,   98,   98,   98,   98,   98,
735       98,   98,   76,   76,   76,   76,   76,   76,   76,   76,
736       76,   76,   76,  106,  106,  106,  106,  106,  106,  106,
737      106,  106,  106,  106,  117,  117,  117,  117,  117,  117,
738      117,  117,  117,  117,  117,  127,  127,  127,  127,  127,
739      127,  127,  127,  127,  127,  127,  131,  131,  131,  131,
740      131,  131,  131,  131,  131,  131,  131,  135,  135,  135,
741
742      135,  135,  135,  135,  135,  135,  135,  135,  138,  138,
743      138,  138,  138,  138,  138,  138,  138,  138,  138,  141,
744      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
745      175,  175,  175,  484,  484,  175,  175,  178,  178,  178,
746      484,  484,  178,  178,  205,  205,  484,  205,  205,  205,
747      205,  205,  205,  205,  205,  239,  239,  484,  239,  239,
748      239,  239,  239,  239,  239,  239,  252,  252,  484,  252,
749      252,  252,  252,  252,  252,  252,  252,  254,  254,  484,
750      254,  254,  254,  254,  254,  254,  254,  254,  258,  258,
751      484,  258,  258,  258,  258,  258,  258,  258,  258,  269,
752
753      269,  484,  269,  269,  269,  269,  269,  269,  269,  269,
754      270,  270,  484,  270,  270,  270,  270,  270,  270,  270,
755      270,  280,  280,  484,  280,  280,  280,  280,  280,  280,
756      280,  280,  281,  281,  484,  281,  281,  281,  281,  281,
757      281,  281,  281,  338,  484,  484,  484,  484,  338,  346,
758      484,  484,  484,  484,  346,  366,  366,  366,  484,  484,
759      366,  366,  484,  484,  366,  373,  484,  484,  484,  484,
760      373,  382,  484,  484,  484,  382,  390,  390,  484,  390,
761      390,  390,  390,  390,  390,  390,  390,  398,  484,  484,
762      484,  398,  389,  389,  484,  389,  389,  389,  389,  389,
763
764      389,  389,  389,  415,  484,  484,  484,  415,  415,  484,
765      484,  484,  415,  418,  484,  484,  484,  418,  418,  431,
766      484,  484,  484,  431,  431,  434,  484,  484,  484,  434,
767      434,  434,  434,  434,  434,  448,  448,  448,  448,  448,
768      464,  464,  484,  464,  464,  464,  464,  464,  464,  464,
769      464,  468,  484,  484,  484,  468,  468,  484,  484,  484,
770      468,  471,  484,  484,  484,  471,  471,  463,  463,  484,
771      463,  463,  463,  463,  463,  463,  463,  463,  475,  484,
772      484,  484,  475,  475,  476,  484,  484,  484,  476,  476,
773      476,  476,  476,  476,  480,  480,  480,  480,  480,   39,
774
775      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
776      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
777      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
778      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
779      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
780      484,  484
781    } ;
782
783static yyconst short int yy_chk[2253] =
784    {   0,
785        0,    1,    1,    1,    1,    0,   11,   11,    3,   11,
786      130,   15,   12,   12,   16,   12,    1,   11,   11,    1,
787      134,   11,    3,   12,   12,    1,   31,   12,   29,    1,
788       31,  130,    1,   30,    1,    3,   15,    1,    3,   16,
789       29,  134,    1,    3,    1,   30,    1,    1,    2,    2,
790        2,    2,    3,    3,   32,   11,   33,  525,   32,   15,
791       33,   12,   16,    2,   17,   17,    2,   17,   58,   17,
792       18,   18,    2,   18,   25,   18,    2,   58,   25,    2,
793      192,    2,   26,   27,    2,   66,   26,   27,   66,    2,
794      217,    2,   28,    2,    2,    4,   28,   34,  517,   25,
795
796      102,   34,   69,  102,  477,  217,  217,   26,   27,    4,
797      474,   69,  164,   17,  414,  164,  414,   28,    4,   18,
798      196,  465,    4,  196,  192,    4,   92,   92,   92,   92,
799        4,   92,  462,  225,  237,    4,  225,  237,  346,    4,
800        4,    5,    5,  460,    5,   94,   94,   94,   94,  459,
801       94,  346,   95,   95,   95,   95,    5,   95,   96,   96,
802       96,   96,  262,   96,  155,  262,  437,  155,  467,    5,
803      467,  155,    5,  182,  182,  182,  182,    5,  182,  155,
804      184,  184,  184,  184,  437,  184,    5,    5,    6,    6,
805      457,    6,  185,  185,  185,  185,  456,  185,  444,  194,
806
807      194,  194,  194,    6,  194,  443,  441,   96,  186,  186,
808      186,  186,    6,  186,  207,  300,    6,  207,  300,    6,
809      190,  190,  190,  190,    6,  207,  450,  299,  366,    6,
810      299,  366,  479,    6,    6,    7,    7,    7,    7,    7,
811        7,    7,  482,    7,  450,    7,  216,    7,    7,  216,
812      479,  440,  435,  216,    7,    7,  299,  186,  299,  366,
813      482,    7,    7,    7,  214,  214,  214,  214,  433,  190,
814      371,  368,  424,  371,  368,  223,  223,  223,  223,  235,
815      235,  235,  235,  214,  406,    7,    7,    8,    8,    8,
816        8,    8,    8,    8,  223,    8,  403,    8,  235,    8,
817
818        8,  214,  368,  394,  373,  382,    8,    8,  296,  296,
819      296,  296,  223,    8,    8,    8,  235,  373,  382,  241,
820      241,  241,  241,  392,  241,  242,  242,  242,  242,  391,
821      242,  243,  243,  243,  243,  383,  243,    8,    8,    9,
822        9,    9,    9,    9,    9,    9,  388,    9,  383,    9,
823      256,    9,    9,  256,  386,  256,  381,  296,    9,    9,
824      384,  256,  398,  380,  378,    9,    9,    9,  241,  261,
825      261,  261,  261,  384,  242,  398,  245,  245,  245,  245,
826      243,  245,  249,  249,  249,  249,  377,  249,  261,    9,
827        9,   10,   10,   10,   10,   10,   10,   10,  375,   10,
828
829      367,   10,  363,   10,   10,  264,  264,  264,  264,  261,
830       10,   10,  361,  274,  274,  274,  274,   10,   10,   10,
831      399,  359,  400,  277,  264,  245,  277,  357,  277,  355,
832      354,  249,  274,  399,  277,  400,  353,  352,  350,  349,
833      343,   10,   10,   13,   13,   13,   13,   13,   13,   13,
834       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
835       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
836       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
837       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
838       13,   13,   13,   13,   13,   19,  342,  332,  330,   19,
839
840      325,  273,  273,  273,  273,   19,   19,  324,  322,   19,
841      265,  265,  265,  265,  320,  265,  315,  314,  313,   19,
842      273,   19,  312,  275,  275,  275,  275,  369,  275,  265,
843      369,  285,  285,  285,  285,   19,  311,  298,  298,  298,
844      298,  273,  275,   19,   19,   20,  308,  304,  303,   20,
845      285,  284,  284,  284,  284,   20,   20,  289,  369,   20,
846      286,  286,  286,  286,  287,  286,  283,  282,  278,   20,
847      284,   20,  288,  276,  272,  288,  271,  288,  307,  286,
848      268,  307,  267,  288,  266,   20,  298,  290,  290,  290,
849      290,  284,  290,   20,   20,   23,  263,  260,  259,   23,
850
851      257,  305,  305,  305,  305,   23,   23,  307,  255,   23,
852      253,  291,  291,  291,  291,  251,  291,  449,  246,   23,
853      305,   23,  449,  293,  293,  293,  293,  240,  293,  294,
854      294,  294,  294,  238,  294,  449,  290,  236,  316,  316,
855      316,  316,  234,   23,   23,   24,  233,  337,  232,   24,
856      337,  326,  326,  326,  326,   24,   24,  316,  230,   24,
857      291,  306,  306,  306,  306,  229,  306,  228,  481,   24,
858      326,   24,  293,  481,  431,  431,  337,  431,  294,  431,
859      306,  227,  226,  224,  222,  221,  481,  220,  218,  215,
860      213,  212,  431,   24,   24,   89,   89,   89,   89,   89,
861
862       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
863       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
864       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
865       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
866       89,   89,   89,   89,   89,   89,   93,   93,   93,   93,
867       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
868       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
869       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
870       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
871       93,   93,   93,   93,   93,   93,   93,  165,  211,  210,
872
873      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
874      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
875      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
876      165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
877      165,  165,  165,  165,  165,  165,  165,  165,  193,  193,
878      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
879      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
880      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
881      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
882      193,  193,  193,  193,  193,  193,  193,  193,  193,  309,
883
884      309,  309,  309,  209,  309,  206,  204,  198,  191,  189,
885      188,  179,  178,  177,  175,  173,  172,  171,  309,  310,
886      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
887      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
888      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
889      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
890      310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
891      317,  317,  317,  317,  170,  317,  318,  318,  318,  318,
892      169,  318,  327,  327,  327,  327,  168,  327,  167,  317,
893      166,  328,  328,  328,  328,  318,  328,  334,  334,  334,
894
895      334,  327,  335,  335,  335,  335,  341,  163,  162,  341,
896      328,  339,  339,  339,  339,  344,  344,  344,  344,  161,
897      344,  160,  339,  358,  358,  358,  358,  159,  358,  158,
898      365,  365,  365,  365,  344,  341,  451,  451,  451,  451,
899      339,  365,  358,  157,  156,  154,  334,  387,  387,  387,
900      387,  335,  338,  338,  338,  338,  362,  362,  362,  362,
901      339,  362,  153,  338,  152,  151,  387,  150,  338,  393,
902      393,  393,  393,  149,  148,  362,  147,  397,  146,  365,
903      397,  338,  145,  397,  144,  451,  387,  137,  393,  122,
904      395,  395,  395,  395,  396,  114,  111,  396,  100,   86,
905
906      396,  338,  340,  340,  340,  340,  397,   80,  393,  395,
907      396,  413,   79,  340,  413,   78,   75,  413,  340,  404,
908      404,  404,  404,  396,   74,  405,  405,  405,  405,  395,
909      405,  340,   73,  340,   72,   71,   70,   68,  404,   64,
910      413,   63,   62,   61,  405,   60,   59,   57,   54,   53,
911       52,  340,  345,  345,  345,  345,  345,  345,  345,  345,
912      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
913      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
914      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
915      345,  345,  345,  345,  345,  345,  345,  345,  345,  345,
916
917      345,  345,  345,  356,  356,   51,  356,  356,  356,  356,
918       50,  356,   49,  356,   48,  356,  356,  408,  408,  408,
919      408,  356,  356,  356,  401,  401,  401,  401,   47,  356,
920      356,  356,  407,  407,  407,  407,  408,   46,  410,  410,
921      410,  410,   44,  401,   41,  409,  409,  409,  409,   39,
922      409,  407,    0,  356,  356,  390,  390,  410,  390,  390,
923      390,  390,    0,  390,  409,  390,    0,  390,  390,    0,
924        0,    0,  401,    0,  390,  390,  411,  411,  411,  411,
925      407,  390,  390,  390,    0,    0,  410,    0,  412,  412,
926      412,  412,    0,  412,  416,  411,    0,  416,    0,    0,
927
928      416,  432,  432,  432,  432,  390,  390,  412,  415,    0,
929      416,  415,  432,    0,  415,  417,    0,    0,  417,  415,
930      415,  417,  415,  416,  415,  436,  436,  417,  436,  417,
931      436,  417,    0,  454,    0,  419,  454,  415,  419,  454,
932        0,  419,    0,  436,  417,  418,    0,  419,  418,  419,
933      432,  418,  420,  420,  420,  420,  418,  418,    0,  418,
934        0,  418,  454,    0,  419,  421,  421,  421,  421,    0,
935      421,  420,    0,    0,  418,  422,  422,  422,  422,    0,
936      422,    0,    0,    0,  421,    0,    0,    0,    0,    0,
937        0,    0,    0,    0,  422,  423,  423,  423,  423,  423,
938
939      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
940      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
941      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
942      423,  423,  423,  423,  423,  423,  423,  423,  423,  423,
943      423,  423,  423,  423,  423,  423,  425,  425,  425,  425,
944      426,  426,  426,  426,    0,  426,  427,  427,  427,  427,
945        0,  427,    0,    0,    0,  425,    0,    0,    0,  426,
946      428,  428,  428,  428,    0,  427,  429,  429,  429,  429,
947        0,  429,  430,  430,  430,  430,    0,  430,    0,  428,
948        0,  438,  438,  438,  438,  429,  438,    0,    0,    0,
949
950        0,  430,    0,    0,    0,    0,    0,    0,    0,    0,
951      438,  439,  439,  439,  439,  439,  439,  439,  439,  439,
952      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
953      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
954      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
955      439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
956      439,  439,  445,  445,    0,  445,  445,  445,  445,    0,
957      445,    0,  445,    0,  445,  445,    0,    0,    0,    0,
958      445,  445,  445,    0,    0,    0,    0,    0,  445,  445,
959      445,  446,  446,  446,  446,    0,  446,  447,  447,  447,
960
961      447,    0,  447,  448,  448,    0,  448,    0,  448,    0,
962      446,  453,  445,  445,  453,    0,  447,  453,    0,  455,
963      455,  448,  455,  466,  455,    0,  466,  453,    0,  466,
964      475,  475,    0,  475,    0,  475,    0,  455,    0,    0,
965      453,  464,  464,    0,  464,  464,  464,  464,  475,  464,
966        0,  464,  466,  464,  464,    0,  469,    0,    0,  469,
967      464,  464,  469,    0,    0,    0,    0,  464,  464,  464,
968        0,    0,  469,    0,  470,    0,    0,  470,    0,    0,
969      470,    0,    0,    0,    0,  469,  470,    0,  470,    0,
970      470,  464,  464,  468,    0,    0,  468,  478,  478,  468,
971
972      478,    0,  478,  470,  468,  468,    0,  468,    0,  468,
973        0,    0,    0,  472,    0,  478,  472,    0,    0,  472,
974        0,    0,  468,  471,    0,  472,  471,  472,    0,  471,
975        0,    0,    0,    0,  471,  471,    0,  471,    0,  471,
976      480,  480,  472,  480,    0,  480,  483,  483,    0,  483,
977        0,  483,  471,    0,    0,    0,    0,    0,  480,    0,
978        0,    0,    0,    0,  483,  485,  485,  485,  485,  485,
979      485,  485,  485,  485,  485,  485,  486,  486,  486,  486,
980      486,  486,  486,  486,  486,  486,  486,  487,  487,  487,
981      487,  487,  487,  487,  487,  487,  487,  487,  488,  488,
982
983      488,  488,  488,  488,  488,  488,  488,  488,  488,  489,
984      489,  489,  489,  489,  489,  489,  489,  489,  489,  489,
985      490,  490,  490,  490,  490,  490,  490,  490,  490,  490,
986      490,  491,  491,  491,  491,  491,  491,  491,  491,  491,
987      491,  491,  492,  492,  492,  492,  492,  492,  492,  492,
988      492,  492,  492,  493,  493,  493,  493,  493,  493,  493,
989      493,  493,  493,  493,  494,  494,  494,  494,  494,  494,
990      494,  494,  494,  494,  494,  495,  495,  495,  495,  495,
991      495,  495,  495,  495,  495,  495,  496,  496,  496,  496,
992      496,  496,  496,  496,  496,  496,  496,  497,  497,  497,
993
994      497,  497,  497,  497,  497,  497,  497,  497,  498,  498,
995      498,  498,  498,  498,  498,  498,  498,  498,  498,  499,
996      499,  499,  499,  499,  499,  499,  499,  499,  499,  499,
997      500,  500,  500,    0,    0,  500,  500,  501,  501,  501,
998        0,    0,  501,  501,  502,  502,    0,  502,  502,  502,
999      502,  502,  502,  502,  502,  503,  503,    0,  503,  503,
1000      503,  503,  503,  503,  503,  503,  504,  504,    0,  504,
1001      504,  504,  504,  504,  504,  504,  504,  505,  505,    0,
1002      505,  505,  505,  505,  505,  505,  505,  505,  506,  506,
1003        0,  506,  506,  506,  506,  506,  506,  506,  506,  507,
1004
1005      507,    0,  507,  507,  507,  507,  507,  507,  507,  507,
1006      508,  508,    0,  508,  508,  508,  508,  508,  508,  508,
1007      508,  509,  509,    0,  509,  509,  509,  509,  509,  509,
1008      509,  509,  510,  510,    0,  510,  510,  510,  510,  510,
1009      510,  510,  510,  511,    0,    0,    0,    0,  511,  512,
1010        0,    0,    0,    0,  512,  513,  513,  513,    0,    0,
1011      513,  513,    0,    0,  513,  514,    0,    0,    0,    0,
1012      514,  515,    0,    0,    0,  515,  516,  516,    0,  516,
1013      516,  516,  516,  516,  516,  516,  516,  518,    0,    0,
1014        0,  518,  519,  519,    0,  519,  519,  519,  519,  519,
1015
1016      519,  519,  519,  520,    0,    0,    0,  520,  520,    0,
1017        0,    0,  520,  521,    0,    0,    0,  521,  521,  522,
1018        0,    0,    0,  522,  522,  523,    0,    0,    0,  523,
1019      523,  523,  523,  523,  523,  524,  524,  524,  524,  524,
1020      526,  526,    0,  526,  526,  526,  526,  526,  526,  526,
1021      526,  527,    0,    0,    0,  527,  527,    0,    0,    0,
1022      527,  528,    0,    0,    0,  528,  528,  529,  529,    0,
1023      529,  529,  529,  529,  529,  529,  529,  529,  530,    0,
1024        0,    0,  530,  530,  531,    0,    0,    0,  531,  531,
1025      531,  531,  531,  531,  532,  532,  532,  532,  532,  484,
1026
1027      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
1028      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
1029      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
1030      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
1031      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
1032      484,  484
1033    } ;
1034
1035static yy_state_type yy_last_accepting_state;
1036static char *yy_last_accepting_cpos;
1037
1038/* The intent behind this definition is that it'll catch
1039 * any uses of REJECT which flex missed.
1040 */
1041#define REJECT reject_used_but_not_detected
1042static int yy_more_flag = 0;
1043static int yy_more_len = 0;
1044#define yymore() (yy_more_flag = 1)
1045#define YY_MORE_ADJ yy_more_len
1046#define YY_RESTORE_YY_MORE_OFFSET
1047char *yytext;
1048#line 1 "libparse.l"
1049#define INITIAL 0
1050#line 2 "libparse.l"
1051/****************************************
1052*  Computer Algebra System SINGULAR     *
1053****************************************/
1054/* $Id$ */
1055#include <stdio.h>
1056#include <string.h>
1057#include <stdlib.h>
1058#include <ctype.h>
1059#include <kernel/mod2.h>
1060#ifdef STANDALONE_PARSER
1061  #include "utils.h"
1062  #define HAVE_LIBPARSER
1063  #define YYLPDEBUG 1
1064  #define myfread fread
1065#else
1066  #include <Singular/subexpr.h>
1067  #include <Singular/grammar.h>
1068  #include <Singular/ipshell.h>
1069  #include <Singular/ipid.h>
1070  #include <Singular/tok.h>
1071  #include <misc/options.h>
1072  #include <kernel/febase.h>
1073  #include <omalloc/omalloc.h>
1074#endif
1075#include <Singular/libparse.h>
1076
1077#ifdef HAVE_LIBPARSER
1078#define YY_SKIP_YYWRAP
1079
1080typedef enum { LP_NONE, LP_INFO, LP_CATEGORY, LP_URL, LP_VERSION} lib_cmds;
1081
1082int libread(FILE* f, char* buf, int max_size);
1083int current_pos(int i);
1084void print_version(lp_modes mode, char *p);
1085void copy_string(lp_modes mode);
1086extern void piCleanUp(procinfov pi);
1087void make_version(char *p, int what);
1088
1089int brace1 = 0;  /* { } */
1090int brace2 = 0;  /* ( ) */
1091int brace3 = 0;  /* [ ] */
1092int quote  = 0;  /* " */
1093int offset = 0;
1094BOOLEAN p_static = FALSE;
1095int old_state = 0;
1096lib_cmds last_cmd = LP_NONE;
1097
1098char libnamebuf[128];
1099char *text_buffer=NULL;
1100long string_start;
1101
1102char *yylp_buffer_start;
1103int yylplineno = 1;
1104int lpverbose = 0, check = 0;
1105int texinfo_out = 0;
1106int found_info=0,
1107    found_cat=0,
1108    found_version=0,
1109    found_oldhelp = 0,
1110    found_proc_in_proc = 0;
1111
1112const char *yylp_errlist[]= {
1113   "",
1114   "missing close bracket ')' for proc definition in line %d.",  /*  1 */
1115   "missing close bracket ')' for procbody in line %d.",         /*  2 */
1116   "missing close bracket ']' for procbody in line %d.",         /*  3 */
1117   "too many ')' closed brackets in line %d.",                   /*  4 */
1118   "too many ']' closed brackets in line %d.",                   /*  5 */
1119   "missing close bracket ')' for example in line %d.",          /*  6 */
1120   "missing close bracket ']' for example in line %d.",          /*  7 */
1121   "cannot assign character '%c' in line %d to any group.",      /*  8 */
1122   "there must be a quote missing somewhere before line %d.",    /*  9 */
1123   "missing close bracket '}' at end of library in line %d.",    /* 10 */
1124   "missing close bracket ')' at end of library in line %d.",    /* 11 */
1125   "missing close bracket ']' at end of library in line %d.",    /* 12 */
1126   NULL
1127};
1128int yylp_errno = 0;
1129
1130#ifdef STANDALONE_PARSER
1131procinfov pi;
1132int category_out = 0;
1133void printpi(procinfov pi);
1134void pi_clear(procinfov pi);
1135extern "C" {
1136  int yylpwrap();
1137}
1138void main_init(int argc, char *argv[]);
1139void main_result(char *libname);
1140#else /* STANDALONE_PARSER */
1141idhdl h0;
1142idhdl h_top;
1143#define pi IDPROC(h0)
1144extern "C"
1145{
1146  int yylpwrap();
1147}
1148extern libstackv library_stack;
1149#endif /* STANDALONE_PARSER */
1150
1151static unsigned long help_chksum;
1152
1153#define SET_DEF_END(mode, pi, p) \
1154  if ( mode == LOAD_LIB) pi->data.s.def_end = p;
1155#define SET_HELP_START(mode, pi, p) \
1156  if ( mode == LOAD_LIB) {pi->data.s.help_start = p; help_chksum = 0;}
1157#define SET_HELP_END(mode, pi, p) \
1158  if ( mode == LOAD_LIB) {pi->data.s.help_end = p;  \
1159              pi->data.s.help_chksum = help_chksum;}
1160
1161#define SET_BODY_START(mode, pi, l, p) \
1162     if ( mode == LOAD_LIB)            \
1163     {                                 \
1164       pi->data.s.body_lineno = l;     \
1165       pi->data.s.body_start = p;      \
1166     }
1167#define SET_BODY_END(mode, pi, p) \
1168     if ( mode == LOAD_LIB)       \
1169     {                            \
1170       pi->data.s.body_end = p-1; \
1171       pi->data.s.proc_end = p-1; \
1172     }
1173
1174#define SET_EXAMPLE_START(mode, pi, l, p) \
1175   if ( mode == LOAD_LIB)                 \
1176   {                                      \
1177     pi->data.s.example_lineno = l;       \
1178     pi->data.s.example_start = p;        \
1179   }
1180#define SET_PROC_END(mode, pi, p)   \
1181     if ( mode == LOAD_LIB)         \
1182     {                              \
1183       pi->data.s.proc_end = p-1;   \
1184       if(pi->data.s.body_end==0)   \
1185         pi->data.s.body_end = p-1; \
1186     }
1187
1188#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x8000; else (c) >>= 1;
1189#define IncrCheckSum(c)                          \
1190do                                            \
1191{                                             \
1192  ROTATE_RIGHT(help_chksum);                  \
1193  help_chksum += c;                           \
1194  help_chksum &= 0xffff;                      \
1195}                                             \
1196while(0)
1197
1198#undef YY_DECL
1199#define YY_DECL int yylex(char *newlib, char *libfile, \
1200                           lib_style_types *lib_style, \
1201                           idhdl pl, BOOLEAN autoexport, lp_modes mode)
1202#undef YY_INPUT
1203#define YY_INPUT(buf,result,max_size) \
1204          if ( ((result = libread( (yyin), (char *) buf, max_size )) < 0 ) \
1205                  && ferror( yyin ) ) \
1206                YY_FATAL_ERROR( "read in flex scanner failed" );
1207
1208#define YY_USER_INIT { \
1209       BEGIN(header); \
1210       yylplineno = 1; \
1211       yylp_errno = 0; \
1212       *lib_style = OLD_LIBSTYLE; \
1213       strcpy(libnamebuf,"(**unknown version**)"); \
1214     }
1215
1216#if 0
1217<pbody>proc[ \t]+{name}  {
1218                           printf("MISSING: PROC-cmd found. ERROR!\n"); }
1219<pbody>example[ \t]*\n   {
1220                           yylplineno++;
1221                           printf("MISSING: EXAMPLE-cmd found. ERROR!\n"); }
1222info=+"\"" {
1223#endif
1224
1225/* %start START */
1226#define header 1
1227
1228#define help 2
1229
1230#define libcmd 3
1231
1232#define libcmd2 4
1233
1234#define pdef 5
1235
1236#define phead 6
1237
1238#define poldhelp 7
1239
1240#define phelp 8
1241
1242#define pbody 9
1243
1244#define pstr 10
1245
1246#define pexample 11
1247
1248#define pestr 12
1249
1250#define string 13
1251
1252#define comment 14
1253
1254#define info 15
1255
1256#define category 16
1257
1258#define url 17
1259
1260#define version 18
1261
1262
1263/* Macros after this point can all be overridden by user definitions in
1264 * section 1.
1265 */
1266
1267#ifndef YY_SKIP_YYWRAP
1268#ifdef __cplusplus
1269extern "C" int yywrap YY_PROTO(( void ));
1270#else
1271extern int yywrap YY_PROTO(( void ));
1272#endif
1273#endif
1274
1275#ifndef YY_NO_UNPUT
1276static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1277#endif
1278
1279#ifndef yytext_ptr
1280static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1281#endif
1282
1283#ifdef YY_NEED_STRLEN
1284static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1285#endif
1286
1287#ifndef YY_NO_INPUT
1288#ifdef __cplusplus
1289static int yyinput YY_PROTO(( void ));
1290#else
1291static int input YY_PROTO(( void ));
1292#endif
1293#endif
1294
1295#if YY_STACK_USED
1296static int yy_start_stack_ptr = 0;
1297static int yy_start_stack_depth = 0;
1298static int *yy_start_stack = 0;
1299#ifndef YY_NO_PUSH_STATE
1300static void yy_push_state YY_PROTO(( int new_state ));
1301#endif
1302#ifndef YY_NO_POP_STATE
1303static void yy_pop_state YY_PROTO(( void ));
1304#endif
1305#ifndef YY_NO_TOP_STATE
1306static int yy_top_state YY_PROTO(( void ));
1307#endif
1308
1309#else
1310#define YY_NO_PUSH_STATE 1
1311#define YY_NO_POP_STATE 1
1312#define YY_NO_TOP_STATE 1
1313#endif
1314
1315#ifdef YY_MALLOC_DECL
1316YY_MALLOC_DECL
1317#else
1318#if __STDC__
1319#ifndef __cplusplus
1320#include <stdlib.h>
1321#endif
1322#else
1323/* Just try to get by without declaring the routines.  This will fail
1324 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1325 * or sizeof(void*) != sizeof(int).
1326 */
1327#endif
1328#endif
1329
1330/* Amount of stuff to slurp up with each read. */
1331#ifndef YY_READ_BUF_SIZE
1332#define YY_READ_BUF_SIZE 8192
1333#endif
1334
1335/* Copy whatever the last rule matched to the standard output. */
1336
1337#ifndef ECHO
1338/* This used to be an fputs(), but since the string might contain NUL's,
1339 * we now use fwrite().
1340 */
1341#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1342#endif
1343
1344/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1345 * is returned in "result".
1346 */
1347#ifndef YY_INPUT
1348#define YY_INPUT(buf,result,max_size) \
1349        if ( yy_current_buffer->yy_is_interactive ) \
1350                { \
1351                int c = '*', n; \
1352                for ( n = 0; n < max_size && \
1353                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1354                        buf[n] = (char) c; \
1355                if ( c == '\n' ) \
1356                        buf[n++] = (char) c; \
1357                if ( c == EOF && ferror( yyin ) ) \
1358                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
1359                result = n; \
1360                } \
1361        else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1362                  && ferror( yyin ) ) \
1363                YY_FATAL_ERROR( "input in flex scanner failed" );
1364#endif
1365
1366/* No semi-colon after return; correct usage is to write "yyterminate();" -
1367 * we don't want an extra ';' after the "return" because that will cause
1368 * some compilers to complain about unreachable statements.
1369 */
1370#ifndef yyterminate
1371#define yyterminate() return YY_NULL
1372#endif
1373
1374/* Number of entries by which start-condition stack grows. */
1375#ifndef YY_START_STACK_INCR
1376#define YY_START_STACK_INCR 25
1377#endif
1378
1379/* Report a fatal error. */
1380#ifndef YY_FATAL_ERROR
1381#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1382#endif
1383
1384/* Default declaration of generated scanner - a define so the user can
1385 * easily add parameters.
1386 */
1387#ifndef YY_DECL
1388#define YY_DECL int yylex YY_PROTO(( void ))
1389#endif
1390
1391/* Code executed at the beginning of each rule, after yytext and yyleng
1392 * have been set up.
1393 */
1394#ifndef YY_USER_ACTION
1395#define YY_USER_ACTION
1396#endif
1397
1398/* Code executed at the end of each rule. */
1399#ifndef YY_BREAK
1400#define YY_BREAK break;
1401#endif
1402
1403#define YY_RULE_SETUP \
1404        if ( yyleng > 0 ) \
1405                yy_current_buffer->yy_at_bol = \
1406                                (yytext[yyleng - 1] == '\n'); \
1407        YY_USER_ACTION
1408
1409YY_DECL
1410        {
1411        register yy_state_type yy_current_state;
1412        register char *yy_cp = NULL, *yy_bp = NULL;
1413        register int yy_act;
1414
1415#line 228 "libparse.l"
1416
1417
1418        if ( yy_init )
1419                {
1420                yy_init = 0;
1421
1422#ifdef YY_USER_INIT
1423                YY_USER_INIT;
1424#endif
1425
1426                if ( ! yy_start )
1427                        yy_start = 1;   /* first start state */
1428
1429                if ( ! yyin )
1430                        yyin = stdin;
1431
1432                if ( ! yyout )
1433                        yyout = stdout;
1434
1435                if ( ! yy_current_buffer )
1436                        yy_current_buffer =
1437                                yy_create_buffer( yyin, YY_BUF_SIZE );
1438
1439                yy_load_buffer_state();
1440                }
1441
1442        while ( 1 )             /* loops until end-of-file is reached */
1443                {
1444                yy_more_len = 0;
1445                if ( yy_more_flag )
1446                        {
1447                        yy_more_len = yy_c_buf_p - yytext_ptr;
1448                        yy_more_flag = 0;
1449                        }
1450                yy_cp = yy_c_buf_p;
1451
1452                /* Support of yytext. */
1453                *yy_cp = yy_hold_char;
1454
1455                /* yy_bp points to the position in yy_ch_buf of the start of
1456                 * the current run.
1457                 */
1458                yy_bp = yy_cp;
1459
1460                yy_current_state = yy_start;
1461                yy_current_state += YY_AT_BOL();
1462yy_match:
1463                do
1464                        {
1465                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1466                        if ( yy_accept[yy_current_state] )
1467                                {
1468                                yy_last_accepting_state = yy_current_state;
1469                                yy_last_accepting_cpos = yy_cp;
1470                                }
1471                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1472                                {
1473                                yy_current_state = (int) yy_def[yy_current_state];
1474                                if ( yy_current_state >= 485 )
1475                                        yy_c = yy_meta[(unsigned int) yy_c];
1476                                }
1477                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1478                        ++yy_cp;
1479                        }
1480                while ( yy_base[yy_current_state] != 2200 );
1481
1482yy_find_action:
1483                yy_act = yy_accept[yy_current_state];
1484                if ( yy_act == 0 )
1485                        { /* have to back up */
1486                        yy_cp = yy_last_accepting_cpos;
1487                        yy_current_state = yy_last_accepting_state;
1488                        yy_act = yy_accept[yy_current_state];
1489                        }
1490
1491                YY_DO_BEFORE_ACTION;
1492
1493
1494do_action:      /* This label is used only to access EOF actions. */
1495
1496
1497                switch ( yy_act )
1498        { /* beginning of action switch */
1499                        case 0: /* must back up */
1500                        /* undo the effects of YY_DO_BEFORE_ACTION */
1501                        *yy_cp = yy_hold_char;
1502                        yy_cp = yy_last_accepting_cpos;
1503                        yy_current_state = yy_last_accepting_state;
1504                        goto yy_find_action;
1505
1506case 1:
1507YY_RULE_SETUP
1508#line 229 "libparse.l"
1509{ }
1510        YY_BREAK
1511case 2:
1512YY_RULE_SETUP
1513#line 230 "libparse.l"
1514{ old_state = YYSTATE; BEGIN(comment); }
1515        YY_BREAK
1516case 3:
1517YY_RULE_SETUP
1518#line 232 "libparse.l"
1519{
1520         yyless(4); old_state = YYSTATE; BEGIN(info);
1521       }
1522        YY_BREAK
1523case 4:
1524YY_RULE_SETUP
1525#line 235 "libparse.l"
1526{
1527         yyless(8); old_state = YYSTATE; BEGIN(category);
1528       }
1529        YY_BREAK
1530case 5:
1531YY_RULE_SETUP
1532#line 238 "libparse.l"
1533{
1534             if ( mode != GET_INFO )
1535             {
1536               #ifdef STANDALONE_PARSER
1537               if (texinfo_out)
1538               {
1539                 char *c = yytext;
1540                 printf("$url = \"");
1541                 while ((*c != '\0') && (*c != '"')) c++;
1542                 c++;
1543                 while ((*c != '\0') && (*c != '"'))
1544                 {
1545                    if (*c != '\r') putchar(*c);
1546                    c++;
1547                 }
1548                 printf("\";\n");
1549               }
1550               #endif
1551             }
1552       }
1553        YY_BREAK
1554case 6:
1555YY_RULE_SETUP
1556#line 259 "libparse.l"
1557{
1558             found_version++;
1559             if ( mode != GET_INFO )
1560             {
1561               make_version(yytext,1);
1562               #ifdef STANDALONE_PARSER
1563               if (texinfo_out)
1564               {
1565                 char *c = libnamebuf;
1566                 printf("$version = \"");
1567                 while (*c != '\0')
1568                 {
1569                    if (*== '$' || *== '@') putchar('\\');
1570                    if (*c != '\r') putchar(*c);
1571                    if (*== '\\')
1572                    {
1573                      c++;
1574                      if (*c != '"') putchar('\\');
1575                    }
1576                    else
1577                      c++;
1578                 }
1579                 printf("\";\n");
1580               }
1581               else if (!category_out)
1582                 printf("Version:%s;\n", libnamebuf);
1583               #else
1584               if (text_buffer!=NULL) omFree((ADDRESS)text_buffer);
1585               text_buffer = omStrDup(libnamebuf);
1586               omMarkAsStaticAddr(text_buffer);
1587               #endif
1588             }
1589           }
1590        YY_BREAK
1591case 7:
1592YY_RULE_SETUP
1593#line 293 "libparse.l"
1594{ p_static=TRUE; }
1595        YY_BREAK
1596case 8:
1597YY_RULE_SETUP
1598#line 295 "libparse.l"
1599{
1600             char proc[256];
1601             BEGIN(pdef);
1602             found_proc_in_proc = 0;
1603             proc[0]='\0';
1604             sscanf( yytext, "%*[^p]proc %s", proc);
1605             if(strlen(proc)<1) sscanf( yytext, "proc %s", proc);
1606             #if YYLPDEBUG > 1
1607             printf("Newlib:%s\n", newlib);
1608             #endif
1609             #ifdef STANDALONE_PARSER
1610             if ( pi != NULL )
1611             {
1612               printpi(pi);
1613               pi_clear(pi);
1614             }
1615             #ifdef STANDALONE_PARSER
1616             pi = (procinfo *)malloc(sizeof(procinfo));
1617             #else
1618             pi = (procinfo *)omAlloc(sizeof(procinfo));
1619             #endif
1620             iiInitSingularProcinfo(pi, newlib, proc, yylplineno,
1621                                    current_pos(0), p_static);
1622             #else /*STANDALONE_PARSER*/
1623             if( mode == LOAD_LIB)
1624             {
1625               h0 = enterid( proc, 0 /*myynest*/, PROC_CMD,
1626                                 &(IDPACKAGE(pl)->idroot), TRUE, !p_static);
1627               if (h0==NULL) return(1);
1628               if((!p_static) && autoexport)
1629               {
1630                  package save=currPack;
1631                  currPack=basePack;
1632                  h_top = enterid( proc, 0 /*myynest*/, PROC_CMD,
1633                                 &(basePack->idroot), FALSE );
1634                  currPack=save;
1635                  if (h_top==NULL) return(1);
1636               }
1637               /* omCheckAddr(IDID(h0)); */
1638               if (h0!=NULL)
1639               {
1640                 iiInitSingularProcinfo(IDPROC(h0), newlib, proc,
1641                                yylplineno, current_pos(0),p_static);
1642                 if ((!p_static) && (h_top != NULL) && autoexport)
1643                 {
1644                   if(IDPROC(h_top)!=NULL) piCleanUp((procinfo *)IDPROC(h_top));
1645                   IDPROC(h_top)=IDPROC(h0);
1646                   IDPROC(h_top)->ref++;
1647                 }
1648                 IDPROC(h0)->pack=IDPACKAGE(pl);
1649                 if (BVERBOSE(V_LOAD_PROC))
1650                   Warn( "     proc '%s' registered", proc );
1651               }
1652               #endif /*STANDALONE_PARSER*/
1653               SET_DEF_END(mode, pi, current_pos(yyleng+1));
1654               #if YYLPDEBUG
1655               if(lpverbose)
1656               {
1657                  printf("// PROCEDURE '%s' status: %s, ", proc,
1658                      p_static ? "local" : "global");
1659                  printf("starting at line %d,%d: definition end: %d (%d).\n",
1660                      yylplineno, current_pos(0), (int)pi->data.s.def_end, brace1);
1661               }
1662               #endif
1663               p_static=FALSE;
1664             #ifndef STANDALONE_PARSER
1665             }
1666             #endif /*STANDALONE_PARSER*/
1667           }
1668        YY_BREAK
1669case 9:
1670YY_RULE_SETUP
1671#line 364 "libparse.l"
1672{
1673             BEGIN(pexample);
1674             SET_EXAMPLE_START(mode, pi, yylplineno, current_pos(0));
1675             #if YYLPDEBUG
1676             if(lpverbose)
1677             {
1678                printf("//     EXAMPLE at line %d,%d (%d)\n", yylplineno,
1679                    current_pos(0), brace1);
1680             }
1681             #endif
1682           }
1683        YY_BREAK
1684case 10:
1685YY_RULE_SETUP
1686#line 376 "libparse.l"
1687{ quote++;
1688             BEGIN(libcmd);
1689           }
1690        YY_BREAK
1691case 11:
1692YY_RULE_SETUP
1693#line 380 "libparse.l"
1694{ quote++; brace2++;
1695             BEGIN(libcmd2);
1696           }
1697        YY_BREAK
1698case 12:
1699YY_RULE_SETUP
1700#line 384 "libparse.l"
1701{
1702             make_version(yytext, 0);
1703             #if YYLPDEBUG > 1
1704             printf("+(id)HEAD:%s\n", yytext);
1705             #endif
1706           }
1707        YY_BREAK
1708case 13:
1709YY_RULE_SETUP
1710#line 390 "libparse.l"
1711{
1712             #if YYLPDEBUG
1713             printf("+(cmt)HEAD:%s\n", yytext);
1714             #endif
1715           }
1716        YY_BREAK
1717case 14:
1718YY_RULE_SETUP
1719#line 395 "libparse.l"
1720{
1721             #if YYLPDEBUG > 1
1722             printf("-HEAD:%s\n", yytext);
1723             #endif
1724           }
1725        YY_BREAK
1726case 15:
1727YY_RULE_SETUP
1728#line 400 "libparse.l"
1729{ yyless(0);
1730             BEGIN(INITIAL);
1731             yymore();
1732           }
1733        YY_BREAK
1734case 16:
1735YY_RULE_SETUP
1736#line 404 "libparse.l"
1737{
1738             yyless(0);
1739             *lib_style = NEW_LIBSTYLE;
1740             BEGIN(INITIAL);
1741             yymore();
1742           }
1743        YY_BREAK
1744case 17:
1745YY_RULE_SETUP
1746#line 411 "libparse.l"
1747{ quote++;
1748             BEGIN(libcmd);
1749           }
1750        YY_BREAK
1751case 18:
1752YY_RULE_SETUP
1753#line 414 "libparse.l"
1754{ quote++; brace2++;
1755             BEGIN(libcmd2);
1756           }
1757        YY_BREAK
1758case 19:
1759YY_RULE_SETUP
1760#line 417 "libparse.l"
1761{ yylplineno++; }
1762        YY_BREAK
1763case 20:
1764YY_RULE_SETUP
1765#line 418 "libparse.l"
1766{
1767             #if YYLPDEBUG > 1
1768             printf(" HEAD:%s\n", yytext);
1769             #endif
1770             yyless(0);
1771             BEGIN(help);
1772           }
1773        YY_BREAK
1774case 21:
1775YY_RULE_SETUP
1776#line 425 "libparse.l"
1777{
1778             #if YYLPDEBUG > 1
1779             printf(" HELP:%s\n", yytext);
1780             #endif
1781             BEGIN(INITIAL); }
1782        YY_BREAK
1783case 22:
1784YY_RULE_SETUP
1785#line 430 "libparse.l"
1786{
1787             #if YYLPDEBUG > 1
1788             printf(" HELP:%s\n", yytext);
1789             #endif
1790             BEGIN(INITIAL);
1791           }
1792        YY_BREAK
1793case 23:
1794YY_RULE_SETUP
1795#line 436 "libparse.l"
1796{
1797             yyless(0);
1798             *lib_style = NEW_LIBSTYLE;
1799             BEGIN(INITIAL);
1800             yymore();
1801           }
1802        YY_BREAK
1803case 24:
1804YY_RULE_SETUP
1805#line 442 "libparse.l"
1806{
1807             yyless(0);
1808             //printf("2) proc found.\n");
1809             BEGIN(INITIAL);
1810             yymore();
1811           }
1812        YY_BREAK
1813case 25:
1814YY_RULE_SETUP
1815#line 448 "libparse.l"
1816{ quote++;
1817             BEGIN(libcmd);
1818           }
1819        YY_BREAK
1820case 26:
1821YY_RULE_SETUP
1822#line 451 "libparse.l"
1823{ quote++; brace2++;
1824             BEGIN(libcmd2);
1825           }
1826        YY_BREAK
1827case 27:
1828YY_RULE_SETUP
1829#line 455 "libparse.l"
1830{ yylplineno++; }
1831        YY_BREAK
1832case 28:
1833YY_RULE_SETUP
1834#line 456 "libparse.l"
1835{
1836             #if YYLPDEBUG
1837             if(lpverbose>2) printf("--->%s<---\n", yytext);
1838             #endif
1839           }
1840        YY_BREAK
1841case 29:
1842YY_RULE_SETUP
1843#line 461 "libparse.l"
1844{
1845             found_oldhelp=1;
1846             #if YYLPDEBUG > 1
1847             printf("-HELP:%s\n", yytext);
1848             #endif
1849           }
1850        YY_BREAK
1851case 30:
1852YY_RULE_SETUP
1853#line 469 "libparse.l"
1854{ quote--;
1855             yytext[yyleng-1] = '\0';
1856             #ifndef STANDALONE_PARSER
1857             if ( mode == LOAD_LIB )
1858             {
1859               library_stack->push(newlib, yytext);
1860             }
1861             #endif /* STANDALONE_PARSER */
1862             #if YYLPDEBUG
1863             if(lpverbose>1) printf("LIB:'%s'\n", yytext);
1864             #endif
1865             BEGIN(INITIAL);
1866           }
1867        YY_BREAK
1868case 31:
1869YY_RULE_SETUP
1870#line 482 "libparse.l"
1871{ quote--; brace2--;
1872             yytext[yyleng-1] = '\0';
1873             #ifndef STANDALONE_PARSER
1874             if ( mode == LOAD_LIB )
1875             {
1876               library_stack->push(newlib, yytext);
1877             }
1878             #endif /* STANDALONE_PARSER */
1879             #if YYLPDEBUG
1880             if(lpverbose>1) printf("LIB:'%s'\n", yytext);
1881             #endif
1882             BEGIN(INITIAL);
1883           }
1884        YY_BREAK
1885case 32:
1886YY_RULE_SETUP
1887#line 496 "libparse.l"
1888{ }
1889        YY_BREAK
1890case 33:
1891YY_RULE_SETUP
1892#line 497 "libparse.l"
1893{
1894             brace2++;
1895             #if YYLPDEBUG > 1
1896             printf("%s", yytext);
1897             #endif
1898           }
1899        YY_BREAK
1900case 34:
1901YY_RULE_SETUP
1902#line 503 "libparse.l"
1903{
1904             brace2--;
1905             #if YYLPDEBUG > 1
1906             printf(">%s<\n", yytext);
1907             printf("{=%d, (=%d, [=%d\n", brace1, brace2, brace3);
1908             #endif
1909             if(brace2<=0)
1910             {
1911               #if YYLPDEBUG > 1
1912               printf("BEGIN(phead){=%d, (=%d, [=%d\n", brace1, brace2, brace3);
1913               #endif
1914               SET_DEF_END(mode, pi, current_pos(yyleng));
1915               BEGIN(phead);
1916             }
1917           }
1918        YY_BREAK
1919case 35:
1920YY_RULE_SETUP
1921#line 518 "libparse.l"
1922{
1923             if(brace2>0)
1924             {
1925               #if YYLPDEBUG > 1
1926               printf("{=%d, (=%d, [=%d\n", brace1, brace2, brace3);
1927               #endif
1928               yylp_errno = YYLP_DEF_BR2;
1929               return(1);
1930             }
1931             else
1932             {
1933               brace1++; BEGIN(pbody);
1934               if(lpverbose)
1935                  printf("//     BODY at line %d,%d (%d)\n", yylplineno,
1936                      current_pos(0), brace1);
1937               SET_BODY_START(mode, pi, yylplineno, current_pos(0));
1938             }
1939           }
1940        YY_BREAK
1941case 36:
1942YY_RULE_SETUP
1943#line 536 "libparse.l"
1944{ yylplineno++;
1945              if(brace2<=0)
1946              {
1947#if YYLPDEBUG > 1
1948                printf("BEGIN(phead-2){=%d, (=%d, [=%d\n", brace1, brace2, brace3);
1949#endif
1950                BEGIN(phead);
1951              }
1952            }
1953        YY_BREAK
1954case 37:
1955YY_RULE_SETUP
1956#line 545 "libparse.l"
1957{ }
1958        YY_BREAK
1959case 38:
1960YY_RULE_SETUP
1961#line 546 "libparse.l"
1962{ old_state = YYSTATE; BEGIN(comment); }
1963        YY_BREAK
1964case 39:
1965YY_RULE_SETUP
1966#line 547 "libparse.l"
1967{
1968             if(brace2<=0)
1969             {
1970               BEGIN(phead);
1971               yyless(0);
1972             }
1973           }
1974        YY_BREAK
1975case 40:
1976YY_RULE_SETUP
1977#line 555 "libparse.l"
1978{
1979              #if YYLPDEBUG
1980              if(lpverbose>2)printf("0-Len=%d;\n", yyleng);
1981              #endif
1982              if(check)
1983              {
1984                printf("Procedure %s (line %d) has OLD-STYLE-HELP!\n",
1985                       pi->procname, pi->data.s.proc_lineno);
1986              }
1987              SET_HELP_START(mode, pi, current_pos(0));
1988              BEGIN(poldhelp);
1989              yyless(0);
1990           }
1991        YY_BREAK
1992case 41:
1993YY_RULE_SETUP
1994#line 568 "libparse.l"
1995{
1996              #if YYLPDEBUG
1997              if(lpverbose>2)printf("1-Len=%d;\n", yyleng);
1998              #endif
1999              BEGIN(phelp);
2000              yyless(0);
2001           }
2002        YY_BREAK
2003case 42:
2004YY_RULE_SETUP
2005#line 575 "libparse.l"
2006{
2007              if(check && yyleng>2)
2008              {
2009                printf("Procedure %s (line %d) has OLD-STYLE-HELP!\n",
2010                       pi->procname, pi->data.s.proc_lineno);
2011              }
2012              #if YYLPDEBUG
2013              if(lpverbose>2 && yyleng>2)
2014                 printf("2-Len=%d, %s;\n", yyleng, pi->procname);
2015              #endif
2016              SET_HELP_START(mode, pi, current_pos(0));
2017              BEGIN(poldhelp);
2018              yyless(0);
2019           }
2020        YY_BREAK
2021case 43:
2022YY_RULE_SETUP
2023#line 589 "libparse.l"
2024{ printf("[%s]", yytext); }
2025        YY_BREAK
2026case 44:
2027YY_RULE_SETUP
2028#line 591 "libparse.l"
2029{ }
2030        YY_BREAK
2031case 45:
2032YY_RULE_SETUP
2033#line 592 "libparse.l"
2034{
2035                SET_HELP_END(mode, pi, current_pos(0));
2036                brace1++; BEGIN(pbody);
2037                if(lpverbose)
2038                {
2039                   printf("//     HELP from %d to %d\n",
2040                       (int)pi->data.s.help_start, (int)pi->data.s.help_end);
2041                   printf("//     BODY at line %d,%d (%d)\n", yylplineno,
2042                       current_pos(0), brace1);
2043                }
2044#if YYLPDEBUG > 1
2045                printf("BEGIN(pbody){=%d, (=%d, [=%d\n", brace1, brace2, brace3);
2046#endif
2047                SET_BODY_START(mode, pi, yylplineno, current_pos(0));
2048#if YYLPDEBUG > 1
2049                printf("BODY at %d/%d", yylplineno, current_pos(0));
2050#endif
2051              }
2052        YY_BREAK
2053case 46:
2054YY_RULE_SETUP
2055#line 610 "libparse.l"
2056{ yylplineno++; }
2057        YY_BREAK
2058case 47:
2059YY_RULE_SETUP
2060#line 611 "libparse.l"
2061{ }
2062        YY_BREAK
2063case 48:
2064YY_RULE_SETUP
2065#line 613 "libparse.l"
2066{
2067             old_state = YYSTATE;
2068             BEGIN(string);
2069             SET_HELP_START(mode, pi, current_pos(1));
2070           }
2071        YY_BREAK
2072case 49:
2073YY_RULE_SETUP
2074#line 618 "libparse.l"
2075{}
2076        YY_BREAK
2077case 50:
2078YY_RULE_SETUP
2079#line 619 "libparse.l"
2080{
2081             brace1++; BEGIN(pbody);
2082             if(lpverbose)
2083             {
2084                printf("//     HELP from %d to %d\n",
2085                    (int)pi->data.s.help_start, (int)pi->data.s.help_end);
2086                printf("//     BODY at line %d,%d (%d)\n", yylplineno,
2087                    current_pos(0), brace1);
2088             }
2089             #if YYLPDEBUG > 1
2090             printf("BEGIN(pbody){=%d, (=%d, [=%d\n", brace1, brace2, brace3);
2091             #endif
2092             SET_BODY_START(mode, pi, yylplineno, current_pos(0));
2093             #if YYLPDEBUG > 1
2094             printf("BODY at %d/%d", yylplineno, current_pos(0));
2095             #endif
2096           }
2097        YY_BREAK
2098case 51:
2099YY_RULE_SETUP
2100#line 636 "libparse.l"
2101{ yylplineno++;}
2102        YY_BREAK
2103case 52:
2104YY_RULE_SETUP
2105#line 638 "libparse.l"
2106{ }
2107        YY_BREAK
2108case 53:
2109YY_RULE_SETUP
2110#line 639 "libparse.l"
2111{ quote++; old_state = YYSTATE;
2112                 BEGIN(string); /* printf("%s", yytext); */
2113               }
2114        YY_BREAK
2115case 54:
2116YY_RULE_SETUP
2117#line 643 "libparse.l"
2118{
2119             if(check) printf("*** found 2 proc whithin procedure '%s'.\n",
2120                          pi->procname);
2121             yyless(yyleng-1);
2122           }
2123        YY_BREAK
2124case 55:
2125YY_RULE_SETUP
2126#line 648 "libparse.l"
2127{
2128             if(check) printf("*** found 1 proc whithin procedure '%s'.\n",
2129                          pi->procname);
2130             yyless(yyleng-1);
2131           }
2132        YY_BREAK
2133case 56:
2134YY_RULE_SETUP
2135#line 653 "libparse.l"
2136{
2137                 brace1++;
2138                 #if YYLPDEBUG > 1
2139                 printf("line: %d, (%d)%s\n", yylplineno, brace1, yytext);
2140                 #endif
2141                }
2142        YY_BREAK
2143case 57:
2144YY_RULE_SETUP
2145#line 659 "libparse.l"
2146{
2147                           #if YYLPDEBUG > 1
2148                           printf("line: %d, (%d)%s\n",
2149                             yylplineno, brace1, yytext);
2150                           #endif
2151                           brace1--;
2152                           if(brace2>0)
2153                           {
2154                             yylp_errno = YYLP_BODY_BR2;
2155                             return(1);
2156                           }
2157                           if(brace3>0)
2158                           {
2159                             yylp_errno = YYLP_BODY_BR3;
2160                             return(1);
2161                           }
2162                           if(brace1<=0)
2163                           {
2164                             SET_BODY_END(mode, pi, current_pos(yyleng));
2165                             SET_PROC_END(mode, pi, current_pos(yyleng));
2166                             #if YYLPDEBUG > 1
2167                               printf("-%d\n", current_pos(0));
2168                             #endif
2169                             BEGIN(INITIAL);
2170                           }
2171                         }
2172        YY_BREAK
2173case 58:
2174YY_RULE_SETUP
2175#line 685 "libparse.l"
2176{
2177                           brace2++; /* printf("%s", yytext); */
2178                         }
2179        YY_BREAK
2180case 59:
2181YY_RULE_SETUP
2182#line 688 "libparse.l"
2183{
2184                           brace2--; /* printf("%s", yytext); */
2185                           if(brace2<0) {
2186                             yylp_errno = YYLP_BODY_TMBR2;
2187                             return(1);
2188                           }
2189                         }
2190        YY_BREAK
2191case 60:
2192YY_RULE_SETUP
2193#line 695 "libparse.l"
2194{
2195                           brace3++; /* printf("%s", yytext); */
2196                         }
2197        YY_BREAK
2198case 61:
2199YY_RULE_SETUP
2200#line 698 "libparse.l"
2201{
2202                           brace3--; /* printf("%s", yytext); */
2203                           if(brace3<0) {
2204                             yylp_errno = YYLP_BODY_TMBR3;
2205                             return(1);
2206                           }
2207                         }
2208        YY_BREAK
2209case 62:
2210YY_RULE_SETUP
2211#line 705 "libparse.l"
2212{ yylplineno++; }
2213        YY_BREAK
2214case 63:
2215YY_RULE_SETUP
2216#line 706 "libparse.l"
2217{ }
2218        YY_BREAK
2219case 64:
2220YY_RULE_SETUP
2221#line 708 "libparse.l"
2222{
2223             quote++; BEGIN(string);
2224             found_info++;
2225             string_start = current_pos(yyleng);
2226             *lib_style = NEW_LIBSTYLE;
2227             last_cmd = LP_INFO;
2228       }
2229        YY_BREAK
2230case 65:
2231YY_RULE_SETUP
2232#line 715 "libparse.l"
2233{ yylplineno++; }
2234        YY_BREAK
2235case 66:
2236YY_RULE_SETUP
2237#line 716 "libparse.l"
2238{ }
2239        YY_BREAK
2240case 67:
2241YY_RULE_SETUP
2242#line 718 "libparse.l"
2243{
2244             quote++; BEGIN(string);
2245             found_cat++;
2246             string_start = current_pos(yyleng);
2247             *lib_style = NEW_LIBSTYLE;
2248             last_cmd = LP_CATEGORY;
2249       }
2250        YY_BREAK
2251case 68:
2252YY_RULE_SETUP
2253#line 725 "libparse.l"
2254{ yylplineno++; }
2255        YY_BREAK
2256case 69:
2257YY_RULE_SETUP
2258#line 726 "libparse.l"
2259{ }
2260        YY_BREAK
2261case 70:
2262YY_RULE_SETUP
2263#line 729 "libparse.l"
2264{ quote--;
2265                           copy_string(mode);
2266                           last_cmd = LP_NONE;
2267                           if(old_state==phelp)
2268                           {
2269                              SET_HELP_END(mode, pi, current_pos(0));
2270                           }
2271                           BEGIN(old_state); /* printf("%s", yytext); */
2272                         }
2273        YY_BREAK
2274case 71:
2275YY_RULE_SETUP
2276#line 738 "libparse.l"
2277{ if (old_state == phelp) IncrCheckSum(*yytext);}
2278        YY_BREAK
2279case 72:
2280YY_RULE_SETUP
2281#line 739 "libparse.l"
2282{ yylplineno++; if (old_state == phelp) IncrCheckSum('\n');}
2283        YY_BREAK
2284case 73:
2285YY_RULE_SETUP
2286#line 740 "libparse.l"
2287{ if (old_state == phelp) IncrCheckSum(*yytext);}
2288        YY_BREAK
2289case 74:
2290YY_RULE_SETUP
2291#line 742 "libparse.l"
2292{ }
2293        YY_BREAK
2294case 75:
2295YY_RULE_SETUP
2296#line 743 "libparse.l"
2297{ quote++; old_state = YYSTATE;
2298                           BEGIN(string); /* printf("%s", yytext); */
2299                         }
2300        YY_BREAK
2301case 76:
2302YY_RULE_SETUP
2303#line 746 "libparse.l"
2304{
2305                           brace1++; /* printf("(%d)%s", brace1, yytext); */
2306                         }
2307        YY_BREAK
2308case 77:
2309YY_RULE_SETUP
2310#line 749 "libparse.l"
2311{
2312                           brace1--; /* printf("(%d)%s", brace1, yytext); */
2313                           if(brace1<=0) {
2314                             if(brace2>0) { yylp_errno=YYLP_EX_BR2; return(1); }
2315                             if(brace3>0) { yylp_errno=YYLP_EX_BR3; return(1); }
2316                             BEGIN(INITIAL);
2317                             SET_PROC_END(mode, pi, current_pos(yyleng));
2318                           }
2319                         }
2320        YY_BREAK
2321case 78:
2322YY_RULE_SETUP
2323#line 758 "libparse.l"
2324{
2325                           brace2++; /* printf("%s", yytext); */
2326                         }
2327        YY_BREAK
2328case 79:
2329YY_RULE_SETUP
2330#line 761 "libparse.l"
2331{
2332                           brace2--; /* printf("%s", yytext); */
2333                         }
2334        YY_BREAK
2335case 80:
2336YY_RULE_SETUP
2337#line 764 "libparse.l"
2338{
2339                           brace3++; /* printf("%s", yytext); */
2340                         }
2341        YY_BREAK
2342case 81:
2343YY_RULE_SETUP
2344#line 767 "libparse.l"
2345{
2346                           brace3--; /* printf("%s", yytext); */
2347                         }
2348        YY_BREAK
2349case 82:
2350YY_RULE_SETUP
2351#line 770 "libparse.l"
2352{ yylplineno++; }
2353        YY_BREAK
2354case 83:
2355YY_RULE_SETUP
2356#line 771 "libparse.l"
2357{ }
2358        YY_BREAK
2359case 84:
2360YY_RULE_SETUP
2361#line 773 "libparse.l"
2362{ quote--;
2363                           BEGIN(pexample); /* printf("%s", yytext); */
2364                         }
2365        YY_BREAK
2366case 85:
2367YY_RULE_SETUP
2368#line 776 "libparse.l"
2369{ }
2370        YY_BREAK
2371case 86:
2372YY_RULE_SETUP
2373#line 777 "libparse.l"
2374{ }
2375        YY_BREAK
2376case 87:
2377YY_RULE_SETUP
2378#line 778 "libparse.l"
2379{ yylplineno++; }
2380        YY_BREAK
2381case 88:
2382YY_RULE_SETUP
2383#line 779 "libparse.l"
2384{ }
2385        YY_BREAK
2386case 89:
2387YY_RULE_SETUP
2388#line 781 "libparse.l"
2389{ BEGIN(old_state); }
2390        YY_BREAK
2391case 90:
2392YY_RULE_SETUP
2393#line 782 "libparse.l"
2394{ yylplineno++; }
2395        YY_BREAK
2396case 91:
2397YY_RULE_SETUP
2398#line 783 "libparse.l"
2399{ }
2400        YY_BREAK
2401case 92:
2402YY_RULE_SETUP
2403#line 785 "libparse.l"
2404{ yylplineno++; }
2405        YY_BREAK
2406case 93:
2407YY_RULE_SETUP
2408#line 786 "libparse.l"
2409{ }
2410        YY_BREAK
2411case 94:
2412YY_RULE_SETUP
2413#line 787 "libparse.l"
2414{ p_static = FALSE;
2415                            #if YYLPDEBUG > 1
2416                            printf("%s", yytext);
2417                            #endif
2418                         }
2419        YY_BREAK
2420case 95:
2421YY_RULE_SETUP
2422#line 792 "libparse.l"
2423{ p_static = FALSE;
2424                           yylp_errno = YYLP_BAD_CHAR;
2425                           #ifdef STANDALONE_PARSER
2426                           printf("[%d]", *yytext);
2427                           #else
2428                           if (text_buffer!=NULL) omFree((ADDRESS)text_buffer);
2429                           text_buffer = omStrDup(yytext);
2430                           omMarkAsStaticAddr(text_buffer);
2431                           #endif
2432                           #if YYLPDEBUG > 1
2433                             printf("[%s]", yytext);
2434                           #endif
2435                           return(1);
2436                         }
2437        YY_BREAK
2438case 96:
2439YY_RULE_SETUP
2440#line 807 "libparse.l"
2441ECHO;
2442        YY_BREAK
2443case YY_STATE_EOF(INITIAL):
2444case YY_STATE_EOF(header):
2445case YY_STATE_EOF(help):
2446case YY_STATE_EOF(libcmd):
2447case YY_STATE_EOF(libcmd2):
2448case YY_STATE_EOF(pdef):
2449case YY_STATE_EOF(phead):
2450case YY_STATE_EOF(poldhelp):
2451case YY_STATE_EOF(phelp):
2452case YY_STATE_EOF(pbody):
2453case YY_STATE_EOF(pstr):
2454case YY_STATE_EOF(pexample):
2455case YY_STATE_EOF(pestr):
2456case YY_STATE_EOF(string):
2457case YY_STATE_EOF(comment):
2458case YY_STATE_EOF(info):
2459case YY_STATE_EOF(category):
2460case YY_STATE_EOF(url):
2461case YY_STATE_EOF(version):
2462        yyterminate();
2463
2464        case YY_END_OF_BUFFER:
2465                {
2466                /* Amount of text matched not including the EOB char. */
2467                int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2468
2469                /* Undo the effects of YY_DO_BEFORE_ACTION. */
2470                *yy_cp = yy_hold_char;
2471                YY_RESTORE_YY_MORE_OFFSET
2472
2473                if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2474                        {
2475                        /* We're scanning a new file or input source.  It's
2476                         * possible that this happened because the user
2477                         * just pointed yyin at a new source and called
2478                         * yylex().  If so, then we have to assure
2479                         * consistency between yy_current_buffer and our
2480                         * globals.  Here is the right place to do so, because
2481                         * this is the first action (other than possibly a
2482                         * back-up) that will match for the new input source.
2483                         */
2484                        yy_n_chars = yy_current_buffer->yy_n_chars;
2485                        yy_current_buffer->yy_input_file = yyin;
2486                        yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2487                        }
2488
2489                /* Note that here we test for yy_c_buf_p "<=" to the position
2490                 * of the first EOB in the buffer, since yy_c_buf_p will
2491                 * already have been incremented past the NUL character
2492                 * (since all states make transitions on EOB to the
2493                 * end-of-buffer state).  Contrast this with the test
2494                 * in input().
2495                 */
2496                if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2497                        { /* This was really a NUL. */
2498                        yy_state_type yy_next_state;
2499
2500                        yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2501
2502                        yy_current_state = yy_get_previous_state();
2503
2504                        /* Okay, we're now positioned to make the NUL
2505                         * transition.  We couldn't have
2506                         * yy_get_previous_state() go ahead and do it
2507                         * for us because it doesn't know how to deal
2508                         * with the possibility of jamming (and we don't
2509                         * want to build jamming into it because then it
2510                         * will run more slowly).
2511                         */
2512
2513                        yy_next_state = yy_try_NUL_trans( yy_current_state );
2514
2515                        yy_bp = yytext_ptr + YY_MORE_ADJ;
2516
2517                        if ( yy_next_state )
2518                                {
2519                                /* Consume the NUL. */
2520                                yy_cp = ++yy_c_buf_p;
2521                                yy_current_state = yy_next_state;
2522                                goto yy_match;
2523                                }
2524
2525                        else
2526                                {
2527                                yy_cp = yy_c_buf_p;
2528                                goto yy_find_action;
2529                                }
2530                        }
2531
2532                else switch ( yy_get_next_buffer() )
2533                        {
2534                        case EOB_ACT_END_OF_FILE:
2535                                {
2536                                yy_did_buffer_switch_on_eof = 0;
2537
2538                                if ( yywrap() )
2539                                        {
2540                                        /* Note: because we've taken care in
2541                                         * yy_get_next_buffer() to have set up
2542                                         * yytext, we can now set up
2543                                         * yy_c_buf_p so that if some total
2544                                         * hoser (like flex itself) wants to
2545                                         * call the scanner after we return the
2546                                         * YY_NULL, it'll still work - another
2547                                         * YY_NULL will get returned.
2548                                         */
2549                                        yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2550
2551                                        yy_act = YY_STATE_EOF(YY_START);
2552                                        goto do_action;
2553                                        }
2554
2555                                else
2556                                        {
2557                                        if ( ! yy_did_buffer_switch_on_eof )
2558                                                YY_NEW_FILE;
2559                                        }
2560                                break;
2561                                }
2562
2563                        case EOB_ACT_CONTINUE_SCAN:
2564                                yy_c_buf_p =
2565                                        yytext_ptr + yy_amount_of_matched_text;
2566
2567                                yy_current_state = yy_get_previous_state();
2568
2569                                yy_cp = yy_c_buf_p;
2570                                yy_bp = yytext_ptr + YY_MORE_ADJ;
2571                                goto yy_match;
2572
2573                        case EOB_ACT_LAST_MATCH:
2574                                yy_c_buf_p =
2575                                &yy_current_buffer->yy_ch_buf[yy_n_chars];
2576
2577                                yy_current_state = yy_get_previous_state();
2578
2579                                yy_cp = yy_c_buf_p;
2580                                yy_bp = yytext_ptr + YY_MORE_ADJ;
2581                                goto yy_find_action;
2582                        }
2583                break;
2584                }
2585
2586        default:
2587                YY_FATAL_ERROR(
2588                        "fatal flex scanner internal error--no action found" );
2589        } /* end of action switch */
2590                } /* end of scanning one token */
2591        } /* end of yylex */
2592
2593
2594/* yy_get_next_buffer - try to read in a new buffer
2595 *
2596 * Returns a code representing an action:
2597 *      EOB_ACT_LAST_MATCH -
2598 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2599 *      EOB_ACT_END_OF_FILE - end of file
2600 */
2601
2602static int yy_get_next_buffer()
2603        {
2604        register char *dest = yy_current_buffer->yy_ch_buf;
2605        register char *source = yytext_ptr;
2606        register int number_to_move, i;
2607        int ret_val;
2608
2609        if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2610                YY_FATAL_ERROR(
2611                "fatal flex scanner internal error--end of buffer missed" );
2612
2613        if ( yy_current_buffer->yy_fill_buffer == 0 )
2614                { /* Don't try to fill the buffer, so this is an EOF. */
2615                if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2616                        {
2617                        /* We matched a single character, the EOB, so
2618                         * treat this as a final EOF.
2619                         */
2620                        return EOB_ACT_END_OF_FILE;
2621                        }
2622
2623                else
2624                        {
2625                        /* We matched some text prior to the EOB, first
2626                         * process it.
2627                         */
2628                        return EOB_ACT_LAST_MATCH;
2629                        }
2630                }
2631
2632        /* Try to read more data. */
2633
2634        /* First move last chars to start of buffer. */
2635        number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2636
2637        for ( i = 0; i < number_to_move; ++i )
2638                *(dest++) = *(source++);
2639
2640        if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2641                /* don't do the read, it's not guaranteed to return an EOF,
2642                 * just force an EOF
2643                 */
2644                yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2645
2646        else
2647                {
2648                int num_to_read =
2649                        yy_current_buffer->yy_buf_size - number_to_move - 1;
2650
2651                while ( num_to_read <= 0 )
2652                        { /* Not enough room in the buffer - grow it. */
2653#ifdef YY_USES_REJECT
2654                        YY_FATAL_ERROR(
2655"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2656#else
2657
2658                        /* just a shorter name for the current buffer */
2659                        YY_BUFFER_STATE b = yy_current_buffer;
2660
2661                        int yy_c_buf_p_offset =
2662                                (int) (yy_c_buf_p - b->yy_ch_buf);
2663
2664                        if ( b->yy_is_our_buffer )
2665                                {
2666                                int new_size = b->yy_buf_size * 2;
2667
2668                                if ( new_size <= 0 )
2669                                        b->yy_buf_size += b->yy_buf_size / 8;
2670                                else
2671                                        b->yy_buf_size *= 2;
2672
2673                                b->yy_ch_buf = (char *)
2674                                        /* Include room in for 2 EOB chars. */
2675                                        yy_flex_realloc( (void *) b->yy_ch_buf,
2676                                                         b->yy_buf_size + 2 );
2677                                }
2678                        else
2679                                /* Can't grow it, we don't own it. */
2680                                b->yy_ch_buf = 0;
2681
2682                        if ( ! b->yy_ch_buf )
2683                                YY_FATAL_ERROR(
2684                                "fatal error - scanner input buffer overflow" );
2685
2686                        yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2687
2688                        num_to_read = yy_current_buffer->yy_buf_size -
2689                                                number_to_move - 1;
2690#endif
2691                        }
2692
2693                if ( num_to_read > YY_READ_BUF_SIZE )
2694                        num_to_read = YY_READ_BUF_SIZE;
2695
2696                /* Read in more data. */
2697                YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2698                        yy_n_chars, num_to_read );
2699
2700                yy_current_buffer->yy_n_chars = yy_n_chars;
2701                }
2702
2703        if ( yy_n_chars == 0 )
2704                {
2705                if ( number_to_move == YY_MORE_ADJ )
2706                        {
2707                        ret_val = EOB_ACT_END_OF_FILE;
2708                        yyrestart( yyin );
2709                        }
2710
2711                else
2712                        {
2713                        ret_val = EOB_ACT_LAST_MATCH;
2714                        yy_current_buffer->yy_buffer_status =
2715                                YY_BUFFER_EOF_PENDING;
2716                        }
2717                }
2718
2719        else
2720                ret_val = EOB_ACT_CONTINUE_SCAN;
2721
2722        yy_n_chars += number_to_move;
2723        yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2724        yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2725
2726        yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2727
2728        return ret_val;
2729        }
2730
2731
2732/* yy_get_previous_state - get the state just before the EOB char was reached */
2733
2734static yy_state_type yy_get_previous_state()
2735        {
2736        register yy_state_type yy_current_state;
2737        register char *yy_cp;
2738
2739        yy_current_state = yy_start;
2740        yy_current_state += YY_AT_BOL();
2741
2742        for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2743                {
2744                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2745                if ( yy_accept[yy_current_state] )
2746                        {
2747                        yy_last_accepting_state = yy_current_state;
2748                        yy_last_accepting_cpos = yy_cp;
2749                        }
2750                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2751                        {
2752                        yy_current_state = (int) yy_def[yy_current_state];
2753                        if ( yy_current_state >= 485 )
2754                                yy_c = yy_meta[(unsigned int) yy_c];
2755                        }
2756                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2757                }
2758
2759        return yy_current_state;
2760        }
2761
2762
2763/* yy_try_NUL_trans - try to make a transition on the NUL character
2764 *
2765 * synopsis
2766 *      next_state = yy_try_NUL_trans( current_state );
2767 */
2768
2769#ifdef YY_USE_PROTOS
2770static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2771#else
2772static yy_state_type yy_try_NUL_trans( yy_current_state )
2773yy_state_type yy_current_state;
2774#endif
2775        {
2776        register int yy_is_jam;
2777        register char *yy_cp = yy_c_buf_p;
2778
2779        register YY_CHAR yy_c = 1;
2780        if ( yy_accept[yy_current_state] )
2781                {
2782                yy_last_accepting_state = yy_current_state;
2783                yy_last_accepting_cpos = yy_cp;
2784                }
2785        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2786                {
2787                yy_current_state = (int) yy_def[yy_current_state];
2788                if ( yy_current_state >= 485 )
2789                        yy_c = yy_meta[(unsigned int) yy_c];
2790                }
2791        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2792        yy_is_jam = (yy_current_state == 484);
2793
2794        return yy_is_jam ? 0 : yy_current_state;
2795        }
2796
2797
2798#ifndef YY_NO_UNPUT
2799#ifdef YY_USE_PROTOS
2800static void yyunput( int c, register char *yy_bp )
2801#else
2802static void yyunput( c, yy_bp )
2803int c;
2804register char *yy_bp;
2805#endif
2806        {
2807        register char *yy_cp = yy_c_buf_p;
2808
2809        /* undo effects of setting up yytext */
2810        *yy_cp = yy_hold_char;
2811
2812        if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2813                { /* need to shift things up to make room */
2814                /* +2 for EOB chars. */
2815                register int number_to_move = yy_n_chars + 2;
2816                register char *dest = &yy_current_buffer->yy_ch_buf[
2817                                        yy_current_buffer->yy_buf_size + 2];
2818                register char *source =
2819                                &yy_current_buffer->yy_ch_buf[number_to_move];
2820
2821                while ( source > yy_current_buffer->yy_ch_buf )
2822                        *--dest = *--source;
2823
2824                yy_cp += (int) (dest - source);
2825                yy_bp += (int) (dest - source);
2826                yy_current_buffer->yy_n_chars =
2827                        yy_n_chars = yy_current_buffer->yy_buf_size;
2828
2829                if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2830                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
2831                }
2832
2833        *--yy_cp = (char) c;
2834
2835
2836        yytext_ptr = yy_bp;
2837        yy_hold_char = *yy_cp;
2838        yy_c_buf_p = yy_cp;
2839        }
2840#endif  /* ifndef YY_NO_UNPUT */
2841
2842
2843#ifdef __cplusplus
2844static int yyinput()
2845#else
2846static int input()
2847#endif
2848        {
2849        int c;
2850
2851        *yy_c_buf_p = yy_hold_char;
2852
2853        if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2854                {
2855                /* yy_c_buf_p now points to the character we want to return.
2856                 * If this occurs *before* the EOB characters, then it's a
2857                 * valid NUL; if not, then we've hit the end of the buffer.
2858                 */
2859                if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2860                        /* This was really a NUL. */
2861                        *yy_c_buf_p = '\0';
2862
2863                else
2864                        { /* need more input */
2865                        int offset = yy_c_buf_p - yytext_ptr;
2866                        ++yy_c_buf_p;
2867
2868                        switch ( yy_get_next_buffer() )
2869                                {
2870                                case EOB_ACT_LAST_MATCH:
2871                                        /* This happens because yy_g_n_b()
2872                                         * sees that we've accumulated a
2873                                         * token and flags that we need to
2874                                         * try matching the token before
2875                                         * proceeding.  But for input(),
2876                                         * there's no matching to consider.
2877                                         * So convert the EOB_ACT_LAST_MATCH
2878                                         * to EOB_ACT_END_OF_FILE.
2879                                         */
2880
2881                                        /* Reset buffer status. */
2882                                        yyrestart( yyin );
2883
2884                                        /* fall through */
2885
2886                                case EOB_ACT_END_OF_FILE:
2887                                        {
2888                                        if ( yywrap() )
2889                                                return EOF;
2890
2891                                        if ( ! yy_did_buffer_switch_on_eof )
2892                                                YY_NEW_FILE;
2893#ifdef __cplusplus
2894                                        return yyinput();
2895#else
2896                                        return input();
2897#endif
2898                                        }
2899
2900                                case EOB_ACT_CONTINUE_SCAN:
2901                                        yy_c_buf_p = yytext_ptr + offset;
2902                                        break;
2903                                }
2904                        }
2905                }
2906
2907        c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
2908        *yy_c_buf_p = '\0';     /* preserve yytext */
2909        yy_hold_char = *++yy_c_buf_p;
2910
2911        yy_current_buffer->yy_at_bol = (c == '\n');
2912
2913        return c;
2914        }
2915
2916
2917#ifdef YY_USE_PROTOS
2918void yyrestart( FILE *input_file )
2919#else
2920void yyrestart( input_file )
2921FILE *input_file;
2922#endif
2923        {
2924        if ( ! yy_current_buffer )
2925                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2926
2927        yy_init_buffer( yy_current_buffer, input_file );
2928        yy_load_buffer_state();
2929        }
2930
2931
2932#ifdef YY_USE_PROTOS
2933void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2934#else
2935void yy_switch_to_buffer( new_buffer )
2936YY_BUFFER_STATE new_buffer;
2937#endif
2938        {
2939        if ( yy_current_buffer == new_buffer )
2940                return;
2941
2942        if ( yy_current_buffer )
2943                {
2944                /* Flush out information for old buffer. */
2945                *yy_c_buf_p = yy_hold_char;
2946                yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2947                yy_current_buffer->yy_n_chars = yy_n_chars;
2948                }
2949
2950        yy_current_buffer = new_buffer;
2951        yy_load_buffer_state();
2952
2953        /* We don't actually know whether we did this switch during
2954         * EOF (yywrap()) processing, but the only time this flag
2955         * is looked at is after yywrap() is called, so it's safe
2956         * to go ahead and always set it.
2957         */
2958        yy_did_buffer_switch_on_eof = 1;
2959        }
2960
2961
2962#ifdef YY_USE_PROTOS
2963void yy_load_buffer_state( void )
2964#else
2965void yy_load_buffer_state()
2966#endif
2967        {
2968        yy_n_chars = yy_current_buffer->yy_n_chars;
2969        yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2970        yyin = yy_current_buffer->yy_input_file;
2971        yy_hold_char = *yy_c_buf_p;
2972        }
2973
2974
2975#ifdef YY_USE_PROTOS
2976YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2977#else
2978YY_BUFFER_STATE yy_create_buffer( file, size )
2979FILE *file;
2980int size;
2981#endif
2982        {
2983        YY_BUFFER_STATE b;
2984
2985        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2986        if ( ! b )
2987                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2988
2989        b->yy_buf_size = size;
2990
2991        /* yy_ch_buf has to be 2 characters longer than the size given because
2992         * we need to put in 2 end-of-buffer characters.
2993         */
2994        b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2995        if ( ! b->yy_ch_buf )
2996                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2997
2998        b->yy_is_our_buffer = 1;
2999
3000        yy_init_buffer( b, file );
3001
3002        return b;
3003        }
3004
3005
3006#ifdef YY_USE_PROTOS
3007void yy_delete_buffer( YY_BUFFER_STATE b )
3008#else
3009void yy_delete_buffer( b )
3010YY_BUFFER_STATE b;
3011#endif
3012        {
3013        if ( ! b )
3014                return;
3015
3016        if ( b == yy_current_buffer )
3017                yy_current_buffer = (YY_BUFFER_STATE) 0;
3018
3019        if ( b->yy_is_our_buffer )
3020                yy_flex_free( (void *) b->yy_ch_buf );
3021
3022        yy_flex_free( (void *) b );
3023        }
3024
3025
3026#ifndef YY_ALWAYS_INTERACTIVE
3027#ifndef YY_NEVER_INTERACTIVE
3028extern int isatty YY_PROTO(( int ));
3029#endif
3030#endif
3031
3032#ifdef YY_USE_PROTOS
3033void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3034#else
3035void yy_init_buffer( b, file )
3036YY_BUFFER_STATE b;
3037FILE *file;
3038#endif
3039
3040
3041        {
3042        yy_flush_buffer( b );
3043
3044        b->yy_input_file = file;
3045        b->yy_fill_buffer = 1;
3046
3047#if YY_ALWAYS_INTERACTIVE
3048        b->yy_is_interactive = 1;
3049#else
3050#if YY_NEVER_INTERACTIVE
3051        b->yy_is_interactive = 0;
3052#else
3053        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3054#endif
3055#endif
3056        }
3057
3058
3059#ifdef YY_USE_PROTOS
3060void yy_flush_buffer( YY_BUFFER_STATE b )
3061#else
3062void yy_flush_buffer( b )
3063YY_BUFFER_STATE b;
3064#endif
3065
3066        {
3067        if ( ! b )
3068                return;
3069
3070        b->yy_n_chars = 0;
3071
3072        /* We always need two end-of-buffer characters.  The first causes
3073         * a transition to the end-of-buffer state.  The second causes
3074         * a jam in that state.
3075         */
3076        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3077        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3078
3079        b->yy_buf_pos = &b->yy_ch_buf[0];
3080
3081        b->yy_at_bol = 1;
3082        b->yy_buffer_status = YY_BUFFER_NEW;
3083
3084        if ( b == yy_current_buffer )
3085                yy_load_buffer_state();
3086        }
3087
3088
3089#ifndef YY_NO_SCAN_BUFFER
3090#ifdef YY_USE_PROTOS
3091YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3092#else
3093YY_BUFFER_STATE yy_scan_buffer( base, size )
3094char *base;
3095yy_size_t size;
3096#endif
3097        {
3098        YY_BUFFER_STATE b;
3099
3100        if ( size < 2 ||
3101             base[size-2] != YY_END_OF_BUFFER_CHAR ||
3102             base[size-1] != YY_END_OF_BUFFER_CHAR )
3103                /* They forgot to leave room for the EOB's. */
3104                return 0;
3105
3106        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3107        if ( ! b )
3108                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3109
3110        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
3111        b->yy_buf_pos = b->yy_ch_buf = base;
3112        b->yy_is_our_buffer = 0;
3113        b->yy_input_file = 0;
3114        b->yy_n_chars = b->yy_buf_size;
3115        b->yy_is_interactive = 0;
3116        b->yy_at_bol = 1;
3117        b->yy_fill_buffer = 0;
3118        b->yy_buffer_status = YY_BUFFER_NEW;
3119
3120        yy_switch_to_buffer( b );
3121
3122        return b;
3123        }
3124#endif
3125
3126
3127#ifndef YY_NO_SCAN_STRING
3128#ifdef YY_USE_PROTOS
3129YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3130#else
3131YY_BUFFER_STATE yy_scan_string( yy_str )
3132yyconst char *yy_str;
3133#endif
3134        {
3135        int len;
3136        for ( len = 0; yy_str[len]; ++len )
3137                ;
3138
3139        return yy_scan_bytes( yy_str, len );
3140        }
3141#endif
3142
3143
3144#ifndef YY_NO_SCAN_BYTES
3145#ifdef YY_USE_PROTOS
3146YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3147#else
3148YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3149yyconst char *bytes;
3150int len;
3151#endif
3152        {
3153        YY_BUFFER_STATE b;
3154        char *buf;
3155        yy_size_t n;
3156        int i;
3157
3158        /* Get memory for full buffer, including space for trailing EOB's. */
3159        n = len + 2;
3160        buf = (char *) yy_flex_alloc( n );
3161        if ( ! buf )
3162                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3163
3164        for ( i = 0; i < len; ++i )
3165                buf[i] = bytes[i];
3166
3167        buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3168
3169        b = yy_scan_buffer( buf, n );
3170        if ( ! b )
3171                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3172
3173        /* It's okay to grow etc. this buffer, and we should throw it
3174         * away when we're done.
3175         */
3176        b->yy_is_our_buffer = 1;
3177
3178        return b;
3179        }
3180#endif
3181
3182
3183#ifndef YY_NO_PUSH_STATE
3184#ifdef YY_USE_PROTOS
3185static void yy_push_state( int new_state )
3186#else
3187static void yy_push_state( new_state )
3188int new_state;
3189#endif
3190        {
3191        if ( yy_start_stack_ptr >= yy_start_stack_depth )
3192                {
3193                yy_size_t new_size;
3194
3195                yy_start_stack_depth += YY_START_STACK_INCR;
3196                new_size = yy_start_stack_depth * sizeof( int );
3197
3198                if ( ! yy_start_stack )
3199                        yy_start_stack = (int *) yy_flex_alloc( new_size );
3200
3201                else
3202                        yy_start_stack = (int *) yy_flex_realloc(
3203                                        (void *) yy_start_stack, new_size );
3204
3205                if ( ! yy_start_stack )
3206                        YY_FATAL_ERROR(
3207                        "out of memory expanding start-condition stack" );
3208                }
3209
3210        yy_start_stack[yy_start_stack_ptr++] = YY_START;
3211
3212        BEGIN(new_state);
3213        }
3214#endif
3215
3216
3217#ifndef YY_NO_POP_STATE
3218static void yy_pop_state()
3219        {
3220        if ( --yy_start_stack_ptr < 0 )
3221                YY_FATAL_ERROR( "start-condition stack underflow" );
3222
3223        BEGIN(yy_start_stack[yy_start_stack_ptr]);
3224        }
3225#endif
3226
3227
3228#ifndef YY_NO_TOP_STATE
3229static int yy_top_state()
3230        {
3231        return yy_start_stack[yy_start_stack_ptr - 1];
3232        }
3233#endif
3234
3235#ifndef YY_EXIT_FAILURE
3236#define YY_EXIT_FAILURE 2
3237#endif
3238
3239#ifdef YY_USE_PROTOS
3240static void yy_fatal_error( yyconst char msg[] )
3241#else
3242static void yy_fatal_error( msg )
3243char msg[];
3244#endif
3245        {
3246        (void) fprintf( stderr, "%s\n", msg );
3247        exit( YY_EXIT_FAILURE );
3248        }
3249
3250
3251
3252/* Redefine yyless() so it works in section 3 code. */
3253
3254#undef yyless
3255#define yyless(n) \
3256        do \
3257                { \
3258                /* Undo effects of setting up yytext. */ \
3259                yytext[yyleng] = yy_hold_char; \
3260                yy_c_buf_p = yytext + n; \
3261                yy_hold_char = *yy_c_buf_p; \
3262                *yy_c_buf_p = '\0'; \
3263                yyleng = n; \
3264                } \
3265        while ( 0 )
3266
3267
3268/* Internal utility routines. */
3269
3270#ifndef yytext_ptr
3271#ifdef YY_USE_PROTOS
3272static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3273#else
3274static void yy_flex_strncpy( s1, s2, n )
3275char *s1;
3276yyconst char *s2;
3277int n;
3278#endif
3279        {
3280        register int i;
3281        for ( i = 0; i < n; ++i )
3282                s1[i] = s2[i];
3283        }
3284#endif
3285
3286#ifdef YY_NEED_STRLEN
3287#ifdef YY_USE_PROTOS
3288static int yy_flex_strlen( yyconst char *s )
3289#else
3290static int yy_flex_strlen( s )
3291yyconst char *s;
3292#endif
3293        {
3294        register int n;
3295        for ( n = 0; s[n]; ++n )
3296                ;
3297
3298        return n;
3299        }
3300#endif
3301
3302
3303#ifdef YY_USE_PROTOS
3304static void *yy_flex_alloc( yy_size_t size )
3305#else
3306static void *yy_flex_alloc( size )
3307yy_size_t size;
3308#endif
3309        {
3310        return (void *) malloc( size );
3311        }
3312
3313#ifdef YY_USE_PROTOS
3314static void *yy_flex_realloc( void *ptr, yy_size_t size )
3315#else
3316static void *yy_flex_realloc( ptr, size )
3317void *ptr;
3318yy_size_t size;
3319#endif
3320        {
3321        /* The cast to (char *) in the following accommodates both
3322         * implementations that use char* generic pointers, and those
3323         * that use void* generic pointers.  It works with the latter
3324         * because both ANSI C and C++ allow castless assignment from
3325         * any pointer type to void*, and deal with argument conversions
3326         * as though doing an assignment.
3327         */
3328        return (void *) realloc( (char *) ptr, size );
3329        }
3330
3331#ifdef YY_USE_PROTOS
3332static void yy_flex_free( void *ptr )
3333#else
3334static void yy_flex_free( ptr )
3335void *ptr;
3336#endif
3337        {
3338        free( ptr );
3339        }
3340
3341#if YY_MAIN
3342int main()
3343        {
3344        yylex();
3345        return 0;
3346        }
3347#endif
3348#line 807 "libparse.l"
3349
3350
3351int current_pos(int i)
3352{
3353  return(i+offset+(int)(yytext-yylp_buffer_start));
3354}
3355
3356int libread(FILE* f, char* buf, int max_size)
3357{ int rc;
3358
3359  offset = ftell(f);
3360  rc  = myfread( buf, 1, max_size, f );
3361  #if YYLPDEBUG >2
3362    printf("fread: %d of %d\n", rc, max_size);
3363  #endif
3364  yylp_buffer_start = buf;
3365  return rc;
3366}
3367
3368extern "C" {
3369  int yylpwrap()
3370  {
3371    //printf("======================= YYWRAP ====================\n");
3372    if(brace1>0) { yylp_errno=YYLP_MISS_BR1; }
3373    if(brace2>0) { yylp_errno=YYLP_MISS_BR2; }
3374    if(brace3>0) { yylp_errno=YYLP_MISS_BR3; }
3375    if(quote>0) { yylp_errno=YYLP_MISSQUOT; }
3376    /* printf("{=%d, (=%d, [=%d\n", brace1, brace2, brace3);/**/
3377    if(feof(yyin)) return 1; else return 0;
3378  }
3379}
3380
3381void reinit_yylp()
3382{
3383   brace1 = 0;
3384   brace2 = 0;
3385   brace3 = 0;
3386   quote  = 0;
3387   yy_init=1;
3388   yy_delete_buffer(yy_current_buffer);
3389}
3390
3391void make_version(char *p,int what)
3392{
3393  char ver[10];
3394  char date[16];
3395  ver[0]='?'; ver[1]='.'; ver[2]='?'; ver[3]='\0';
3396  date[0]='?'; date[1]='\0';
3397  if(what) sscanf(p,"%*[^=]= %*s %*s %10s %16s",ver,date);
3398  else sscanf(p,"// %*s %*s %10s %16s",ver,date);
3399  strcpy(libnamebuf,"(");
3400  strcat(libnamebuf,ver);
3401  strcat(libnamebuf,",");
3402  strcat(libnamebuf,date);
3403  strcat(libnamebuf,")");
3404  if(what && strcmp(libnamebuf, "(?.?,?)")==0)
3405  {
3406    sscanf(p,"%*[^\"]\"%[^\"]\"",libnamebuf);
3407  }
3408  //printf("ID=(%d)%s; \n", what, p);
3409}
3410
3411void copy_string(lp_modes mode)
3412{
3413#ifdef STANDALONE_PARSER
3414  if ((texinfo_out
3415     && (last_cmd == LP_INFO || last_cmd == LP_CATEGORY || last_cmd == LP_URL))
3416  || (category_out && last_cmd == LP_CATEGORY)
3417)
3418  {
3419    long current_location = ftell(yylpin), i = string_start, quote = 0;
3420    char c;
3421    if (texinfo_out)
3422    {
3423     if (last_cmd == LP_INFO)
3424     {
3425       printf("$info = <<EOT;\n");
3426     }
3427     else if (last_cmd == LP_URL)
3428     {
3429       printf("$url = <<EOT;\n");
3430     }
3431     else
3432     {
3433       printf("$category = <<EOT;\n");
3434     }
3435    }
3436    fseek (yylpin, i, SEEK_SET);
3437    while (i< current_location)
3438    {
3439      c = fgetc(yylpin);
3440      if (c == '\\')
3441      {
3442        quote = (! quote);
3443      }
3444      else if (c == '"')
3445      {
3446        if (! quote) break;
3447      }
3448      else
3449        quote = 0;
3450      if (c == '@' || c == '$') putchar('\\');
3451      if (c != '\r') putchar(c);
3452      i++;
3453    }
3454    if (category_out) exit(0);
3455    fseek (yylpin, current_location, SEEK_SET);
3456    printf("\nEOT\n");
3457  }
3458#else
3459  if((last_cmd == LP_INFO)&&(mode == GET_INFO))
3460  {
3461    int i, offset=0;
3462    long current_location = ftell(yylpin);
3463    int len = (int)(current_pos(0) - string_start);
3464    fseek(yylpin, string_start, SEEK_SET);
3465    if (text_buffer!=NULL) omFree((ADDRESS)text_buffer);
3466    text_buffer = (char *)omAlloc(len+2);
3467    omMarkAsStaticAddr(text_buffer);
3468    myfread(text_buffer, len, 1, yylpin);
3469    fseek(yylpin, current_location, SEEK_SET);
3470    text_buffer[len]='\0';
3471    offset=0;
3472    for(i=0;i<=len; i++)
3473    {
3474      if(text_buffer[i]=='\\' &&
3475         (text_buffer[i+1]=='\"' || text_buffer[i+1]=='{' ||
3476          text_buffer[i+1]=='}' || text_buffer[i+1]=='\\'))
3477      {
3478        i++;
3479        offset++;
3480      }
3481      if(offset>0) text_buffer[i-offset] = text_buffer[i];
3482    }
3483  }
3484#endif /* STANDALONE_PARSER */
3485}
3486
3487void print_init()
3488{
3489   printf("Init=%d\n", yy_init);
3490}
3491
3492void print_version(lp_modes mode, char *p)
3493{
3494#ifdef STANDALONE_PARSER
3495  //printf("loading %s%s", p, libnamebuf);
3496#else
3497  if ( mode == LOAD_LIB )
3498  {
3499    if (BVERBOSE(V_LOAD_LIB) && p!=NULL ) Print(" %s...", p);
3500       //Warn( "loading %s%s", p, libnamebuf);
3501  }
3502#endif
3503}
3504
3505#ifdef STANDALONE_PARSER
3506main( int argc, char *argv[] )
3507{
3508  lib_style_types lib_style;
3509  main_init(argc, argv);
3510  if(yyin == NULL)
3511  {
3512    fprintf(stderr, "No library found to parse.\n");
3513    exit(1);
3514  }
3515  if (! (texinfo_out || category_out))
3516  {
3517    if(lpverbose)printf("Verbose level=%d\n", lpverbose);
3518    if(check)printf("Reporting most possible annomalies.\n");
3519    if(lpverbose||check)printf("\n");
3520
3521    printf( "  %-15s  %20s      %s,%s    %s,%s     %s,%s\n", "Library",
3522            "function", "line", "start-eod", "line", "body-eob",
3523            "line", "example-eoe");
3524  }
3525  yylplex(argv[0], argv[0], &lib_style,NULL);
3526  if(yylp_errno)
3527  {
3528    printf("ERROR occured: [%d] ", yylp_errno);
3529    printf(yylp_errlist[yylp_errno], yylplineno);
3530    printf("\n");
3531  }
3532  else if(pi!=NULL) printpi(pi);
3533  if (texinfo_out)
3534    printf("1;");
3535  exit(0);
3536}
3537
3538#endif /* STANDALONE_PARSER */
3539#endif /* HAVE_LIBPARSE */
Note: See TracBrowser for help on using the repository browser.