diff options
Diffstat (limited to 'funtools/filter/lex.idx.c')
-rw-r--r-- | funtools/filter/lex.idx.c | 2829 |
1 files changed, 2829 insertions, 0 deletions
diff --git a/funtools/filter/lex.idx.c b/funtools/filter/lex.idx.c new file mode 100644 index 0000000..cfceac7 --- /dev/null +++ b/funtools/filter/lex.idx.c @@ -0,0 +1,2829 @@ +#define yy_create_buffer idx_create_buffer +#define yy_delete_buffer idx_delete_buffer +#define yy_scan_buffer idx_scan_buffer +#define yy_scan_string idx_scan_string +#define yy_scan_bytes idx_scan_bytes +#define yy_flex_debug idx_flex_debug +#define yy_init_buffer idx_init_buffer +#define yy_flush_buffer idx_flush_buffer +#define yy_load_buffer_state idx_load_buffer_state +#define yy_switch_to_buffer idx_switch_to_buffer +#define yyin idxin +#define yyleng idxleng +#define yylex idxlex +#define yyout idxout +#define yyrestart idxrestart +#define yytext idxtext +#define yywrap idxwrap + +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ + */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + +#include <stdio.h> + + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include <stdlib.h> +#include <unistd.h> + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include <io.h> +#include <stdlib.h> +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, idxtext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + +static YY_BUFFER_STATE yy_current_buffer = 0; + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart YY_PROTO(( FILE *input_file )); + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + +typedef unsigned char YY_CHAR; +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +typedef int yy_state_type; +extern char yytext[]; + + +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + idxtext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + if ( yyleng >= YYLMAX ) \ + YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ + yy_flex_strncpy( yytext, idxtext_ptr, yyleng + 1 ); \ + yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 15 +#define YY_END_OF_BUFFER 16 +static yyconst short int yy_accept[570] = + { 0, + 0, 0, 16, 14, 13, 15, 14, 14, 14, 14, + 1, 1, 14, 14, 14, 6, 6, 6, 14, 10, + 8, 0, 2, 2, 1, 0, 1, 0, 11, 9, + 12, 0, 6, 0, 6, 6, 7, 0, 0, 0, + 2, 1, 0, 0, 5, 0, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 0, 0, 2, + 1, 0, 0, 0, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 0, 0, + 0, 5, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 0, 0, 0, + + 6, 0, 6, 0, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 0, 0, 5, 0, 6, + 6, 0, 6, 6, 6, 6, 6, 6, 6, 0, + 5, 6, 0, 6, 0, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 0, 0, 0, 0, 0, 4, 0, 0, 3, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0 + } ; + +static yyconst int yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 1, 1, 1, 1, 5, 1, 6, + 7, 1, 8, 9, 10, 11, 1, 12, 13, 14, + 15, 16, 17, 15, 18, 19, 15, 1, 1, 20, + 21, 22, 1, 1, 26, 27, 28, 29, 30, 31, + 32, 25, 33, 25, 25, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 25, 45, 46, 25, + 23, 1, 24, 1, 25, 1, 26, 27, 28, 29, + + 30, 31, 32, 25, 33, 25, 25, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 25, 45, + 46, 25, 1, 47, 1, 48, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst int yy_meta[49] = + { 0, + 1, 1, 2, 1, 1, 3, 4, 5, 6, 5, + 7, 8, 8, 8, 8, 8, 8, 8, 8, 1, + 1, 1, 9, 1, 10, 11, 11, 11, 11, 12, + 11, 10, 10, 13, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 13, 10, 1, 14 + } ; + +static yyconst short int yy_base[607] = + { 0, + 0, 0, 2154, 2377, 2377, 2377, 2132, 2119, 2056, 0, + 38, 39, 2040, 2015, 2014, 47, 48, 51, 1979, 2377, + 2377, 2009, 1994, 1993, 0, 48, 2377, 0, 2377, 2377, + 2377, 45, 53, 1995, 87, 1987, 2377, 2003, 52, 53, + 0, 1979, 58, 2005, 2377, 1987, 61, 71, 74, 96, + 82, 73, 75, 51, 116, 118, 121, 1991, 81, 0, + 2377, 2002, 93, 139, 129, 124, 132, 127, 145, 150, + 151, 153, 155, 158, 166, 164, 169, 176, 1991, 179, + 194, 1983, 198, 187, 189, 202, 203, 205, 209, 210, + 213, 214, 228, 217, 229, 233, 237, 1988, 255, 243, + + 257, 262, 242, 252, 264, 249, 267, 268, 271, 276, + 286, 291, 292, 295, 297, 0, 304, 310, 97, 315, + 307, 334, 323, 325, 330, 296, 336, 329, 338, 1992, + 130, 341, 377, 348, 366, 345, 1987, 354, 367, 351, + 1983, 390, 404, 402, 422, 1977, 433, 1922, 179, 470, + 1915, 1942, 504, 416, 512, 447, 532, 451, 540, 1939, + 563, 1910, 220, 600, 1899, 298, 2377, 634, 455, 642, + 459, 662, 463, 670, 467, 693, 1898, 336, 730, 1896, + 378, 173, 484, 764, 488, 784, 492, 792, 496, 448, + 462, 815, 1895, 466, 360, 500, 282, 504, 849, 526, + + 420, 452, 503, 48, 527, 554, 94, 437, 102, 358, + 1926, 555, 567, 136, 377, 1925, 1924, 575, 1904, 579, + 1858, 1862, 299, 578, 1847, 221, 1864, 579, 1836, 1815, + 345, 1828, 1829, 581, 1813, 559, 1799, 586, 1795, 400, + 1784, 570, 1790, 353, 1785, 567, 1796, 190, 1758, 579, + 0, 484, 1760, 596, 584, 604, 1781, 597, 616, 616, + 1752, 857, 0, 576, 622, 1762, 0, 633, 1750, 694, + 903, 706, 697, 1748, 1744, 684, 2377, 1717, 627, 943, + 960, 984, 2377, 710, 1722, 1008, 1729, 1723, 628, 654, + 658, 682, 712, 1043, 743, 716, 722, 1056, 758, 1699, + + 748, 1080, 1708, 1699, 726, 749, 746, 828, 1121, 1682, + 1652, 1144, 747, 843, 1162, 1645, 1637, 1185, 1631, 1202, + 1630, 1219, 1243, 1622, 1622, 124, 908, 1283, 753, 777, + 707, 922, 1295, 804, 833, 805, 861, 1303, 933, 837, + 956, 1316, 989, 1609, 1590, 802, 1086, 838, 938, 925, + 1099, 847, 973, 988, 1262, 1334, 1581, 1551, 1357, 989, + 1352, 1376, 1556, 1548, 1399, 1534, 1417, 990, 1114, 991, + 1251, 801, 1430, 1453, 862, 1013, 904, 1443, 1466, 927, + 1017, 0, 1528, 1527, 1104, 998, 1500, 1133, 1075, 1276, + 1096, 1479, 1052, 1484, 1008, 1140, 1118, 1491, 1055, 1157, + + 1495, 1480, 1461, 1442, 1164, 1519, 1165, 1547, 1166, 1565, + 1172, 1576, 1432, 1429, 1413, 1411, 1184, 1102, 1160, 1390, + 1140, 1581, 1215, 1389, 1252, 1181, 1198, 1342, 1142, 1589, + 1395, 1325, 1265, 1497, 1320, 1537, 1258, 1238, 1237, 1222, + 1095, 1509, 1224, 1370, 1264, 1605, 1082, 1389, 1318, 1633, + 1321, 1661, 1061, 1047, 1013, 1012, 1342, 1623, 1003, 1615, + 1396, 1651, 989, 1679, 1301, 1432, 1435, 952, 1193, 1687, + 1544, 921, 1398, 1451, 1499, 908, 1212, 1694, 1594, 843, + 771, 756, 744, 723, 1255, 1701, 709, 1706, 1505, 1719, + 697, 1725, 1585, 1732, 679, 1743, 1604, 1747, 678, 1757, + + 1070, 0, 0, 0, 1425, 1761, 649, 1772, 1438, 1776, + 624, 1787, 1555, 1791, 615, 1800, 1603, 1808, 581, 1816, + 1586, 1824, 547, 1837, 1819, 1841, 518, 1854, 1619, 1858, + 473, 1866, 1647, 1871, 407, 1884, 1712, 1888, 0, 1897, + 1804, 1901, 0, 1906, 1666, 1912, 287, 1917, 1675, 1928, + 278, 1939, 1865, 1943, 172, 1956, 1944, 1968, 72, 1962, + 1832, 1974, 0, 1980, 1893, 1984, 0, 1992, 2377, 70, + 2008, 2019, 732, 2026, 2038, 2052, 1318, 2066, 2080, 2094, + 2108, 2122, 2136, 2148, 2156, 2170, 2182, 2190, 2204, 2209, + 2217, 2227, 2235, 2240, 58, 2253, 2264, 1349, 2278, 1379, + + 2292, 2306, 2320, 2334, 2348, 2362 + } ; + +static yyconst short int yy_def[607] = + { 0, + 569, 1, 569, 569, 569, 569, 569, 569, 569, 570, + 571, 571, 569, 569, 569, 572, 572, 572, 569, 569, + 569, 569, 570, 570, 12, 573, 569, 574, 569, 569, + 569, 575, 572, 576, 572, 35, 569, 569, 577, 573, + 40, 574, 575, 578, 569, 576, 576, 572, 572, 572, + 572, 572, 572, 35, 572, 572, 572, 569, 577, 59, + 569, 578, 569, 579, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, 569, 579, + 580, 576, 579, 572, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 569, 580, 576, + + 580, 581, 572, 575, 572, 572, 572, 572, 572, 572, + 572, 572, 572, 572, 572, 582, 581, 576, 583, 581, + 572, 575, 572, 572, 572, 572, 572, 572, 572, 569, + 569, 572, 575, 572, 575, 572, 569, 133, 133, 575, + 569, 133, 575, 133, 133, 569, 133, 147, 144, 147, + 150, 569, 133, 575, 133, 575, 133, 575, 133, 569, + 133, 161, 155, 161, 164, 159, 569, 133, 575, 133, + 575, 133, 575, 133, 575, 133, 176, 170, 176, 179, + 174, 575, 575, 174, 575, 133, 575, 133, 575, 578, + 184, 133, 192, 188, 578, 575, 575, 575, 188, 575, + + 578, 578, 199, 578, 578, 575, 578, 578, 578, 578, + 578, 578, 584, 578, 585, 578, 569, 585, 586, 587, + 569, 586, 586, 588, 569, 586, 569, 588, 589, 569, + 586, 569, 589, 589, 569, 586, 569, 589, 569, 586, + 569, 589, 569, 586, 569, 589, 569, 586, 569, 589, + 590, 586, 569, 589, 591, 586, 569, 589, 592, 591, + 593, 586, 594, 589, 592, 265, 595, 265, 593, 593, + 596, 597, 589, 569, 268, 595, 569, 276, 598, 593, + 586, 596, 569, 597, 599, 589, 569, 268, 600, 598, + 290, 280, 280, 593, 280, 281, 281, 586, 281, 599, + + 599, 601, 569, 268, 600, 305, 593, 280, 593, 593, + 309, 593, 586, 281, 586, 586, 315, 586, 599, 599, + 589, 589, 601, 569, 268, 593, 280, 312, 312, 312, + 586, 281, 318, 318, 318, 320, 320, 599, 320, 322, + 322, 589, 322, 569, 268, 593, 280, 328, 328, 586, + 281, 333, 333, 599, 320, 599, 599, 356, 599, 589, + 322, 589, 589, 362, 589, 569, 602, 593, 280, 586, + 281, 599, 320, 359, 359, 359, 589, 322, 365, 365, + 365, 602, 569, 569, 265, 276, 268, 290, 593, 280, + 586, 281, 599, 320, 374, 374, 589, 322, 379, 379, + + 569, 268, 276, 291, 593, 603, 586, 604, 599, 320, + 589, 322, 569, 268, 276, 291, 603, 593, 593, 280, + 309, 280, 593, 312, 604, 586, 586, 281, 315, 281, + 586, 318, 599, 320, 589, 322, 569, 268, 276, 291, + 593, 280, 309, 312, 586, 281, 315, 318, 599, 605, + 589, 606, 569, 268, 276, 291, 593, 280, 309, 312, + 586, 281, 315, 318, 605, 599, 599, 320, 356, 320, + 599, 359, 606, 589, 589, 322, 362, 322, 589, 365, + 569, 268, 276, 291, 593, 280, 309, 312, 586, 281, + 315, 318, 599, 320, 356, 359, 589, 322, 362, 365, + + 569, 268, 276, 291, 593, 280, 309, 312, 586, 281, + 315, 318, 599, 320, 356, 359, 589, 322, 362, 365, + 593, 280, 309, 312, 586, 281, 315, 318, 599, 320, + 356, 359, 589, 322, 362, 365, 593, 280, 309, 312, + 586, 281, 315, 318, 599, 320, 356, 359, 589, 322, + 362, 365, 599, 320, 356, 359, 589, 322, 362, 365, + 599, 320, 356, 359, 589, 322, 362, 365, 0, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + + 569, 569, 569, 569, 569, 569 + } ; + +static yyconst short int yy_nxt[2426] = + { 0, + 4, 5, 6, 7, 8, 4, 4, 4, 4, 9, + 10, 11, 12, 12, 12, 12, 12, 12, 12, 13, + 14, 15, 4, 4, 16, 16, 16, 16, 16, 17, + 16, 16, 18, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 19, 4, 24, 24, + 44, 45, 32, 32, 63, 40, 32, 40, 32, 59, + 569, 59, 569, 44, 45, 276, 64, 26, 26, 34, + 34, 27, 27, 34, 207, 34, 32, 23, 32, 32, + 32, 57, 28, 569, 47, 36, 33, 32, 569, 567, + 569, 35, 32, 34, 33, 34, 34, 34, 44, 45, + + 63, 32, 44, 131, 34, 72, 65, 73, 63, 34, + 66, 67, 48, 49, 50, 70, 51, 52, 34, 71, + 53, 32, 54, 32, 55, 56, 32, 209, 68, 32, + 54, 211, 32, 69, 32, 44, 45, 32, 34, 346, + 34, 74, 63, 34, 81, 82, 34, 270, 75, 34, + 32, 34, 76, 78, 34, 32, 32, 86, 32, 77, + 32, 43, 83, 32, 84, 216, 87, 34, 85, 32, + 88, 32, 34, 34, 32, 34, 90, 34, 190, 45, + 34, 32, 91, 89, 81, 82, 34, 142, 34, 563, + 92, 34, 32, 93, 104, 85, 94, 95, 34, 46, + + 100, 43, 83, 102, 82, 97, 96, 32, 32, 34, + 32, 34, 156, 223, 32, 32, 62, 101, 32, 32, + 43, 83, 32, 252, 34, 34, 231, 34, 153, 103, + 106, 34, 34, 32, 32, 34, 34, 105, 32, 34, + 107, 108, 32, 85, 223, 109, 110, 32, 81, 82, + 34, 34, 112, 171, 32, 34, 111, 44, 45, 34, + 46, 100, 64, 100, 34, 114, 47, 81, 118, 32, + 115, 34, 32, 32, 113, 121, 32, 62, 101, 62, + 101, 32, 124, 122, 119, 120, 34, 202, 45, 34, + 34, 32, 123, 34, 559, 125, 32, 32, 34, 127, + + 32, 32, 32, 555, 128, 126, 157, 226, 34, 81, + 118, 85, 32, 34, 34, 81, 82, 34, 34, 34, + 102, 118, 223, 129, 85, 85, 119, 120, 32, 34, + 32, 175, 85, 47, 135, 32, 134, 119, 120, 44, + 45, 32, 133, 32, 168, 34, 32, 34, 85, 132, + 32, 34, 34, 32, 85, 85, 44, 45, 34, 145, + 34, 85, 142, 34, 63, 139, 63, 34, 223, 185, + 34, 44, 45, 236, 136, 142, 223, 85, 139, 248, + 85, 85, 44, 45, 212, 217, 172, 143, 138, 139, + 139, 139, 139, 139, 139, 139, 201, 140, 144, 219, + + 143, 147, 148, 148, 148, 148, 148, 148, 148, 44, + 45, 189, 142, 149, 149, 149, 149, 149, 149, 149, + 149, 44, 45, 223, 153, 551, 63, 149, 149, 149, + 149, 149, 149, 150, 151, 151, 151, 151, 151, 151, + 151, 153, 244, 63, 148, 148, 148, 148, 148, 148, + 148, 148, 44, 45, 63, 142, 44, 45, 63, 157, + 44, 45, 204, 168, 44, 45, 154, 153, 44, 45, + 182, 172, 44, 45, 186, 157, 195, 155, 157, 210, + 205, 151, 151, 151, 151, 151, 151, 151, 151, 44, + 45, 547, 182, 44, 45, 196, 168, 44, 45, 200, + + 186, 44, 45, 158, 172, 44, 45, 223, 182, 44, + 45, 197, 197, 256, 159, 161, 162, 162, 162, 162, + 162, 162, 162, 163, 163, 163, 163, 163, 163, 163, + 163, 44, 45, 63, 186, 543, 206, 163, 163, 163, + 163, 163, 163, 164, 165, 165, 165, 165, 165, 165, + 165, 166, 166, 166, 166, 166, 166, 166, 166, 44, + 45, 63, 197, 208, 539, 166, 166, 166, 166, 166, + 166, 168, 44, 45, 162, 162, 162, 162, 162, 162, + 162, 162, 223, 217, 44, 45, 227, 227, 214, 238, + 234, 242, 259, 234, 535, 240, 169, 219, 246, 234, + + 229, 229, 234, 250, 234, 273, 261, 170, 172, 234, + 262, 165, 165, 165, 165, 165, 165, 165, 165, 234, + 234, 254, 258, 265, 259, 266, 267, 223, 531, 569, + 264, 274, 267, 173, 290, 305, 290, 305, 261, 277, + 527, 259, 569, 278, 174, 176, 177, 177, 177, 177, + 177, 177, 177, 178, 178, 178, 178, 178, 178, 178, + 178, 569, 279, 569, 277, 523, 259, 178, 178, 178, + 178, 178, 178, 179, 180, 180, 180, 180, 180, 180, + 180, 181, 181, 181, 181, 181, 181, 181, 181, 269, + 277, 307, 259, 519, 515, 181, 181, 181, 181, 181, + + 181, 182, 280, 286, 177, 177, 177, 177, 177, 177, + 177, 177, 283, 289, 259, 511, 283, 270, 259, 269, + 234, 307, 350, 222, 308, 313, 183, 507, 285, 222, + 223, 313, 285, 569, 314, 569, 41, 184, 186, 41, + 504, 180, 180, 180, 180, 180, 180, 180, 180, 310, + 269, 280, 269, 311, 319, 277, 320, 259, 326, 331, + 269, 503, 269, 187, 316, 222, 281, 222, 317, 270, + 223, 301, 312, 502, 188, 191, 191, 191, 191, 191, + 191, 191, 191, 310, 269, 280, 269, 318, 501, 191, + 191, 191, 191, 191, 191, 192, 193, 193, 193, 193, + + 193, 193, 193, 194, 194, 194, 194, 194, 194, 194, + 194, 222, 300, 222, 354, 368, 393, 194, 194, 194, + 194, 194, 194, 197, 301, 270, 193, 193, 193, 193, + 193, 193, 193, 193, 310, 269, 280, 269, 311, 316, + 222, 281, 222, 327, 233, 269, 360, 269, 198, 316, + 222, 281, 222, 317, 222, 500, 222, 312, 332, 199, + 203, 203, 203, 203, 203, 203, 203, 203, 300, 300, + 354, 300, 318, 355, 203, 203, 203, 203, 203, 203, + 223, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 222, 222, 222, 222, 222, 222, 222, + 222, 281, 222, 222, 310, 269, 280, 269, 311, 397, + 498, 347, 222, 222, 222, 261, 223, 234, 316, 222, + 281, 222, 317, 496, 233, 351, 233, 312, 370, 357, + 300, 320, 300, 358, 310, 269, 280, 269, 223, 222, + 292, 318, 293, 294, 295, 295, 295, 295, 295, 295, + 295, 295, 359, 233, 494, 360, 270, 296, 361, 297, + 298, 299, 299, 299, 299, 299, 299, 299, 299, 316, + 222, 281, 222, 223, 222, 222, 222, 222, 222, 222, + 222, 222, 281, 222, 222, 363, 233, 322, 233, 364, + + 372, 377, 491, 222, 222, 222, 261, 223, 389, 391, + 403, 301, 234, 270, 223, 300, 487, 300, 365, 357, + 300, 320, 300, 363, 233, 322, 233, 279, 484, 483, + 222, 234, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 309, 309, 309, 309, 309, 309, + 309, 309, 233, 482, 233, 409, 270, 315, 315, 315, + 315, 315, 315, 315, 315, 301, 277, 481, 259, 223, + 233, 233, 233, 233, 233, 233, 321, 233, 322, 233, + 233, 405, 310, 269, 280, 269, 311, 463, 270, 233, + + 233, 233, 285, 234, 369, 316, 222, 281, 222, 317, + 457, 265, 407, 266, 441, 312, 402, 371, 270, 223, + 310, 269, 280, 269, 311, 270, 233, 310, 318, 280, + 390, 411, 309, 309, 309, 309, 309, 309, 309, 309, + 290, 234, 290, 312, 270, 404, 357, 300, 320, 300, + 328, 329, 443, 329, 447, 330, 330, 330, 330, 330, + 330, 330, 330, 363, 233, 322, 233, 270, 316, 312, + 281, 318, 441, 315, 315, 315, 315, 315, 315, 315, + 315, 417, 425, 270, 433, 223, 269, 270, 223, 301, + 435, 333, 334, 445, 334, 234, 335, 335, 335, 335, + + 335, 335, 335, 335, 223, 495, 383, 423, 223, 336, + 445, 337, 338, 339, 339, 339, 339, 339, 339, 339, + 339, 223, 359, 280, 499, 301, 340, 441, 341, 342, + 343, 343, 343, 343, 343, 343, 343, 343, 270, 459, + 456, 365, 234, 233, 233, 233, 233, 233, 233, 321, + 233, 322, 233, 233, 222, 455, 454, 316, 222, 281, + 222, 317, 233, 233, 233, 285, 234, 392, 357, 300, + 320, 300, 358, 505, 383, 431, 453, 373, 270, 461, + 318, 449, 310, 269, 280, 269, 311, 223, 301, 233, + 348, 359, 348, 406, 349, 349, 349, 349, 349, 349, + + 349, 349, 352, 300, 352, 312, 353, 353, 353, 353, + 353, 353, 353, 353, 356, 356, 356, 356, 356, 356, + 356, 356, 60, 383, 471, 60, 301, 362, 362, 362, + 362, 362, 362, 362, 362, 465, 451, 448, 473, 234, + 357, 301, 320, 234, 234, 356, 356, 356, 356, 356, + 356, 356, 356, 291, 446, 485, 291, 301, 363, 233, + 322, 233, 364, 374, 375, 270, 375, 378, 376, 376, + 376, 376, 376, 376, 376, 376, 310, 269, 280, 269, + 301, 365, 363, 306, 322, 460, 306, 362, 362, 362, + 362, 362, 362, 362, 362, 316, 222, 281, 222, 234, + + 233, 444, 442, 226, 464, 379, 380, 445, 380, 489, + 381, 381, 381, 381, 381, 381, 381, 381, 223, 223, + 383, 479, 234, 384, 440, 385, 439, 386, 387, 387, + 387, 387, 387, 387, 387, 387, 357, 300, 320, 300, + 358, 521, 438, 394, 493, 437, 388, 493, 270, 363, + 233, 322, 233, 364, 525, 301, 398, 416, 301, 359, + 395, 223, 395, 497, 396, 396, 396, 396, 396, 396, + 396, 396, 365, 399, 234, 399, 415, 400, 400, 400, + 400, 400, 400, 400, 400, 316, 222, 281, 222, 317, + 357, 300, 320, 300, 358, 414, 408, 363, 233, 322, + + 233, 364, 410, 357, 300, 320, 300, 358, 318, 412, + 413, 497, 402, 359, 450, 310, 269, 280, 269, 311, + 365, 269, 234, 509, 458, 419, 359, 420, 223, 421, + 422, 422, 422, 422, 422, 422, 422, 422, 312, 401, + 401, 383, 423, 363, 233, 322, 233, 364, 424, 222, + 319, 382, 320, 427, 452, 428, 493, 429, 430, 430, + 430, 430, 430, 430, 430, 430, 365, 301, 529, 383, + 431, 357, 300, 320, 300, 358, 432, 365, 301, 234, + 359, 434, 363, 233, 322, 233, 364, 310, 269, 280, + 269, 311, 436, 442, 359, 316, 222, 281, 222, 317, + + 513, 446, 238, 537, 301, 365, 497, 367, 301, 270, + 312, 316, 222, 281, 222, 317, 533, 234, 318, 517, + 462, 310, 269, 280, 269, 366, 234, 234, 488, 310, + 269, 280, 269, 311, 318, 300, 486, 545, 345, 467, + 344, 468, 301, 469, 470, 470, 470, 470, 470, 470, + 470, 470, 312, 234, 301, 383, 471, 316, 222, 281, + 222, 317, 472, 233, 490, 549, 318, 475, 223, 476, + 234, 477, 478, 478, 478, 478, 478, 478, 478, 478, + 318, 312, 553, 383, 479, 316, 222, 281, 222, 301, + 480, 557, 492, 357, 300, 320, 300, 358, 234, 494, + + 363, 233, 322, 233, 364, 270, 498, 310, 269, 280, + 269, 311, 310, 269, 280, 269, 359, 325, 310, 506, + 280, 324, 301, 365, 508, 316, 222, 281, 222, 317, + 312, 316, 222, 281, 222, 270, 304, 510, 357, 300, + 320, 300, 358, 512, 303, 301, 279, 514, 318, 357, + 300, 320, 300, 363, 233, 322, 233, 364, 516, 288, + 287, 359, 518, 363, 233, 322, 233, 310, 269, 280, + 269, 311, 520, 270, 275, 270, 365, 522, 310, 269, + 280, 269, 316, 222, 281, 222, 317, 263, 524, 257, + 312, 253, 526, 316, 222, 281, 222, 357, 300, 320, + + 300, 358, 251, 528, 530, 318, 357, 300, 320, 300, + 316, 249, 281, 532, 363, 233, 322, 233, 364, 247, + 359, 534, 363, 233, 322, 233, 245, 223, 243, 536, + 310, 269, 280, 269, 311, 241, 541, 365, 357, 239, + 320, 538, 223, 310, 269, 280, 269, 316, 222, 281, + 222, 317, 234, 312, 540, 301, 237, 235, 542, 234, + 316, 222, 281, 222, 357, 300, 320, 300, 358, 232, + 318, 544, 357, 300, 320, 300, 546, 363, 233, 322, + 233, 364, 561, 230, 548, 223, 225, 359, 301, 550, + 363, 233, 322, 233, 310, 269, 280, 269, 311, 363, + + 365, 322, 552, 310, 269, 280, 269, 316, 222, 281, + 222, 317, 316, 222, 281, 222, 234, 312, 357, 300, + 320, 300, 358, 357, 300, 320, 300, 223, 554, 221, + 318, 220, 213, 556, 363, 233, 322, 233, 364, 43, + 43, 359, 43, 43, 558, 363, 233, 322, 233, 357, + 300, 320, 300, 358, 43, 560, 167, 365, 160, 43, + 562, 565, 357, 300, 320, 300, 43, 234, 363, 233, + 322, 233, 359, 564, 363, 233, 322, 233, 364, 568, + 357, 300, 320, 300, 358, 566, 357, 300, 320, 300, + 363, 233, 322, 233, 364, 152, 146, 365, 363, 233, + + 322, 233, 141, 359, 137, 116, 47, 98, 63, 79, + 47, 63, 61, 365, 25, 25, 58, 57, 47, 25, + 25, 33, 26, 39, 38, 37, 33, 33, 33, 33, + 33, 33, 33, 42, 31, 30, 42, 42, 43, 43, + 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, + 43, 43, 46, 46, 46, 46, 46, 46, 46, 46, + 29, 46, 46, 46, 46, 46, 62, 62, 22, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 99, 99, 99, 99, 99, 99, + + 99, 99, 99, 99, 99, 99, 99, 99, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 130, 21, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 119, 119, 119, 119, + 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, + 215, 215, 20, 569, 569, 569, 569, 215, 215, 215, + 215, 218, 569, 218, 218, 218, 218, 218, 218, 218, + 222, 222, 222, 222, 222, 222, 222, 222, 569, 222, + 222, 222, 222, 222, 224, 224, 569, 569, 569, 569, + 569, 224, 224, 224, 224, 228, 569, 228, 228, 228, + + 228, 228, 228, 228, 233, 233, 233, 233, 233, 233, + 233, 233, 569, 233, 233, 233, 233, 233, 255, 255, + 255, 255, 260, 569, 260, 260, 260, 260, 260, 260, + 260, 268, 569, 268, 268, 269, 269, 269, 269, 269, + 269, 269, 269, 569, 269, 269, 269, 269, 269, 272, + 272, 272, 272, 282, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 282, 282, 284, 569, 284, + 569, 284, 284, 284, 284, 284, 284, 284, 300, 300, + 300, 300, 300, 300, 300, 300, 569, 300, 300, 300, + 300, 300, 323, 323, 323, 323, 323, 323, 323, 323, + + 323, 323, 323, 323, 323, 323, 383, 569, 383, 383, + 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 426, 426, 426, 426, 426, 426, + 426, 426, 426, 426, 426, 426, 426, 426, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 474, 474, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 474, 474, 474, 3, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569 + } ; + +static yyconst short int yy_chk[2426] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 11, 12, + 32, 32, 16, 17, 204, 26, 18, 26, 33, 39, + 40, 39, 40, 43, 43, 595, 47, 11, 12, 16, + 17, 11, 12, 18, 204, 33, 48, 570, 52, 49, + 53, 54, 11, 12, 47, 18, 54, 51, 59, 559, + 59, 17, 35, 48, 54, 52, 49, 53, 63, 63, + + 207, 50, 119, 119, 51, 52, 48, 53, 209, 35, + 49, 49, 35, 35, 35, 51, 35, 35, 50, 51, + 35, 55, 35, 56, 35, 35, 57, 207, 50, 66, + 35, 209, 68, 50, 65, 131, 131, 67, 55, 326, + 56, 55, 214, 57, 64, 64, 66, 326, 55, 68, + 69, 65, 55, 57, 67, 70, 71, 67, 72, 56, + 73, 64, 64, 74, 65, 214, 68, 69, 66, 76, + 69, 75, 70, 71, 77, 72, 71, 73, 182, 182, + 74, 78, 72, 70, 80, 80, 76, 149, 75, 555, + 73, 77, 84, 74, 85, 75, 76, 76, 78, 81, + + 81, 80, 80, 83, 83, 78, 77, 86, 87, 84, + 88, 85, 149, 248, 89, 90, 81, 81, 91, 92, + 83, 83, 94, 248, 86, 87, 226, 88, 163, 84, + 87, 89, 90, 93, 95, 91, 92, 86, 96, 94, + 88, 89, 97, 92, 226, 90, 91, 103, 100, 100, + 93, 95, 94, 163, 106, 96, 93, 104, 104, 97, + 99, 99, 101, 101, 103, 96, 100, 102, 102, 105, + 97, 106, 107, 108, 95, 103, 109, 99, 99, 101, + 101, 110, 106, 104, 102, 102, 105, 197, 197, 107, + 108, 111, 105, 109, 551, 107, 112, 113, 110, 109, + + 114, 126, 115, 547, 110, 108, 166, 223, 111, 117, + 117, 111, 121, 112, 113, 118, 118, 114, 126, 115, + 120, 120, 223, 113, 114, 115, 117, 117, 123, 121, + 124, 166, 112, 118, 128, 125, 126, 120, 120, 122, + 122, 127, 122, 129, 178, 123, 132, 124, 123, 121, + 136, 128, 125, 134, 124, 125, 140, 140, 127, 140, + 129, 127, 138, 132, 210, 138, 195, 136, 231, 178, + 134, 135, 135, 231, 129, 139, 244, 134, 139, 244, + 136, 132, 133, 133, 210, 215, 181, 138, 133, 133, + 133, 133, 133, 133, 133, 133, 195, 135, 138, 215, + + 139, 142, 142, 142, 142, 142, 142, 142, 142, 143, + 143, 181, 143, 144, 144, 144, 144, 144, 144, 144, + 144, 154, 154, 240, 154, 535, 201, 144, 144, 144, + 144, 144, 144, 145, 145, 145, 145, 145, 145, 145, + 145, 147, 240, 208, 147, 147, 147, 147, 147, 147, + 147, 147, 156, 156, 190, 156, 158, 158, 202, 158, + 169, 169, 201, 169, 171, 171, 147, 171, 173, 173, + 191, 173, 175, 175, 194, 175, 190, 147, 150, 208, + 202, 150, 150, 150, 150, 150, 150, 150, 150, 183, + 183, 531, 183, 185, 185, 191, 185, 187, 187, 194, + + 187, 189, 189, 150, 189, 196, 196, 252, 196, 198, + 198, 203, 198, 252, 150, 153, 153, 153, 153, 153, + 153, 153, 153, 155, 155, 155, 155, 155, 155, 155, + 155, 200, 200, 205, 200, 527, 203, 155, 155, 155, + 155, 155, 155, 157, 157, 157, 157, 157, 157, 157, + 157, 159, 159, 159, 159, 159, 159, 159, 159, 206, + 206, 212, 206, 205, 523, 159, 159, 159, 159, 159, + 159, 161, 213, 213, 161, 161, 161, 161, 161, 161, + 161, 161, 236, 218, 220, 220, 224, 228, 212, 234, + 246, 238, 255, 242, 519, 236, 161, 218, 242, 264, + + 224, 228, 250, 246, 234, 264, 255, 161, 164, 238, + 256, 164, 164, 164, 164, 164, 164, 164, 164, 254, + 258, 250, 254, 259, 260, 259, 259, 256, 515, 265, + 258, 265, 265, 164, 279, 289, 279, 289, 260, 268, + 511, 268, 268, 268, 164, 168, 168, 168, 168, 168, + 168, 168, 168, 170, 170, 170, 170, 170, 170, 170, + 170, 290, 268, 290, 291, 507, 291, 170, 170, 170, + 170, 170, 170, 172, 172, 172, 172, 172, 172, 172, + 172, 174, 174, 174, 174, 174, 174, 174, 174, 292, + 276, 292, 276, 499, 495, 174, 174, 174, 174, 174, + + 174, 176, 270, 273, 176, 176, 176, 176, 176, 176, + 176, 176, 272, 276, 272, 491, 284, 270, 284, 293, + 273, 293, 331, 296, 293, 296, 176, 487, 272, 297, + 331, 297, 284, 305, 297, 305, 573, 176, 179, 573, + 484, 179, 179, 179, 179, 179, 179, 179, 179, 295, + 295, 295, 295, 295, 301, 306, 301, 306, 307, 313, + 329, 483, 329, 179, 299, 299, 299, 299, 299, 307, + 313, 301, 295, 482, 179, 184, 184, 184, 184, 184, + 184, 184, 184, 330, 330, 330, 330, 299, 481, 184, + 184, 184, 184, 184, 184, 186, 186, 186, 186, 186, + + 186, 186, 186, 188, 188, 188, 188, 188, 188, 188, + 188, 334, 336, 334, 336, 346, 372, 188, 188, 188, + 188, 188, 188, 192, 372, 346, 192, 192, 192, 192, + 192, 192, 192, 192, 308, 308, 308, 308, 308, 335, + 335, 335, 335, 308, 340, 348, 340, 348, 192, 314, + 314, 314, 314, 314, 352, 480, 352, 308, 314, 192, + 199, 199, 199, 199, 199, 199, 199, 199, 337, 375, + 337, 375, 314, 337, 199, 199, 199, 199, 199, 199, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + + 262, 262, 262, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 327, 327, 327, 327, 327, 377, + 476, 327, 271, 271, 271, 271, 271, 377, 332, 332, + 332, 332, 332, 472, 380, 332, 380, 327, 350, 339, + 339, 339, 339, 339, 349, 349, 349, 349, 350, 271, + 280, 332, 280, 280, 280, 280, 280, 280, 280, 280, + 280, 280, 339, 341, 468, 341, 280, 281, 341, 281, + 281, 281, 281, 281, 281, 281, 281, 281, 281, 353, + 353, 353, 353, 281, 282, 282, 282, 282, 282, 282, + 282, 282, 282, 282, 282, 343, 343, 343, 343, 343, + + 354, 360, 463, 282, 282, 282, 282, 282, 368, 370, + 386, 354, 360, 368, 370, 395, 459, 395, 343, 376, + 376, 376, 376, 381, 381, 381, 381, 386, 456, 455, + 282, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 294, 294, 294, 294, 294, 294, + 294, 294, 399, 454, 399, 393, 294, 298, 298, 298, + 298, 298, 298, 298, 298, 393, 501, 453, 501, 298, + 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, + 302, 389, 347, 347, 347, 347, 347, 447, 389, 302, + + 302, 302, 302, 302, 347, 351, 351, 351, 351, 351, + 441, 385, 391, 385, 418, 347, 385, 351, 441, 391, + 369, 369, 369, 369, 369, 418, 302, 309, 351, 309, + 369, 397, 309, 309, 309, 309, 309, 309, 309, 309, + 388, 397, 388, 369, 309, 388, 396, 396, 396, 396, + 309, 312, 421, 312, 429, 312, 312, 312, 312, 312, + 312, 312, 312, 400, 400, 400, 400, 312, 315, 421, + 315, 429, 419, 315, 315, 315, 315, 315, 315, 315, + 315, 405, 407, 419, 409, 315, 417, 405, 407, 409, + 411, 315, 318, 426, 318, 411, 318, 318, 318, 318, + + 318, 318, 318, 318, 426, 469, 417, 417, 318, 320, + 427, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 427, 469, 423, 477, 320, 322, 423, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 423, 443, + 440, 477, 322, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 425, 439, 438, 371, 371, 371, + 371, 371, 323, 323, 323, 323, 323, 371, 355, 355, + 355, 355, 355, 485, 425, 425, 437, 355, 485, 445, + 371, 433, 390, 390, 390, 390, 390, 445, 433, 323, + 328, 355, 328, 390, 328, 328, 328, 328, 328, 328, + + 328, 328, 333, 465, 333, 390, 333, 333, 333, 333, + 333, 333, 333, 333, 338, 338, 338, 338, 338, 338, + 338, 338, 577, 465, 465, 577, 338, 342, 342, 342, + 342, 342, 342, 342, 342, 449, 435, 432, 451, 342, + 356, 449, 356, 435, 451, 356, 356, 356, 356, 356, + 356, 356, 356, 598, 428, 457, 598, 356, 361, 361, + 361, 361, 361, 356, 359, 457, 359, 361, 359, 359, + 359, 359, 359, 359, 359, 359, 444, 444, 444, 444, + 359, 361, 362, 600, 362, 444, 600, 362, 362, 362, + 362, 362, 362, 362, 362, 448, 448, 448, 448, 362, + + 473, 424, 420, 431, 448, 362, 365, 431, 365, 461, + 365, 365, 365, 365, 365, 365, 365, 365, 431, 461, + 473, 473, 365, 367, 416, 367, 415, 367, 367, 367, + 367, 367, 367, 367, 367, 367, 373, 373, 373, 373, + 373, 505, 414, 373, 466, 413, 367, 467, 505, 378, + 378, 378, 378, 378, 509, 466, 378, 404, 467, 373, + 374, 509, 374, 474, 374, 374, 374, 374, 374, 374, + 374, 374, 378, 379, 474, 379, 403, 379, 379, 379, + 379, 379, 379, 379, 379, 392, 392, 392, 392, 392, + 394, 394, 394, 394, 394, 402, 392, 398, 398, 398, + + 398, 398, 394, 434, 434, 434, 434, 434, 392, 398, + 401, 475, 387, 394, 434, 442, 442, 442, 442, 442, + 398, 406, 475, 489, 442, 406, 434, 406, 489, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 442, 384, + 383, 406, 406, 436, 436, 436, 436, 436, 406, 408, + 471, 366, 471, 408, 436, 408, 471, 408, 408, 408, + 408, 408, 408, 408, 408, 408, 436, 471, 513, 408, + 408, 410, 410, 410, 410, 410, 408, 364, 513, 363, + 358, 410, 412, 412, 412, 412, 412, 422, 422, 422, + 422, 422, 412, 422, 410, 430, 430, 430, 430, 430, + + 493, 430, 479, 521, 357, 412, 479, 345, 493, 521, + 422, 446, 446, 446, 446, 446, 517, 479, 430, 497, + 446, 460, 460, 460, 460, 344, 517, 497, 460, 458, + 458, 458, 458, 458, 446, 450, 458, 529, 325, 450, + 324, 450, 529, 450, 450, 450, 450, 450, 450, 450, + 450, 450, 458, 321, 319, 450, 450, 462, 462, 462, + 462, 462, 450, 452, 462, 533, 317, 452, 316, 452, + 533, 452, 452, 452, 452, 452, 452, 452, 452, 452, + 462, 311, 545, 452, 452, 464, 464, 464, 464, 545, + 452, 549, 464, 470, 470, 470, 470, 470, 549, 470, + + 478, 478, 478, 478, 478, 310, 478, 486, 486, 486, + 486, 486, 488, 488, 488, 488, 470, 304, 537, 486, + 537, 303, 300, 478, 488, 490, 490, 490, 490, 490, + 486, 492, 492, 492, 492, 537, 288, 490, 494, 494, + 494, 494, 494, 492, 287, 285, 278, 494, 490, 496, + 496, 496, 496, 498, 498, 498, 498, 498, 496, 275, + 274, 494, 498, 500, 500, 500, 500, 506, 506, 506, + 506, 506, 500, 269, 266, 261, 498, 506, 508, 508, + 508, 508, 510, 510, 510, 510, 510, 257, 508, 253, + 506, 249, 510, 512, 512, 512, 512, 514, 514, 514, + + 514, 514, 247, 512, 514, 510, 516, 516, 516, 516, + 541, 245, 541, 516, 518, 518, 518, 518, 518, 243, + 514, 518, 520, 520, 520, 520, 241, 541, 239, 520, + 522, 522, 522, 522, 522, 237, 525, 518, 561, 235, + 561, 522, 525, 524, 524, 524, 524, 526, 526, 526, + 526, 526, 233, 522, 524, 561, 232, 230, 526, 229, + 528, 528, 528, 528, 530, 530, 530, 530, 530, 227, + 526, 528, 532, 532, 532, 532, 530, 534, 534, 534, + 534, 534, 553, 225, 532, 222, 221, 530, 553, 534, + 536, 536, 536, 536, 538, 538, 538, 538, 538, 565, + + 534, 565, 536, 540, 540, 540, 540, 542, 542, 542, + 542, 542, 544, 544, 544, 544, 565, 538, 546, 546, + 546, 546, 546, 548, 548, 548, 548, 219, 546, 217, + 542, 216, 211, 548, 550, 550, 550, 550, 550, 193, + 180, 546, 177, 165, 550, 552, 552, 552, 552, 554, + 554, 554, 554, 554, 162, 552, 160, 550, 152, 151, + 554, 557, 556, 556, 556, 556, 148, 557, 560, 560, + 560, 560, 554, 556, 558, 558, 558, 558, 558, 560, + 562, 562, 562, 562, 562, 558, 564, 564, 564, 564, + 566, 566, 566, 566, 566, 146, 141, 558, 568, 568, + + 568, 568, 137, 562, 130, 98, 82, 79, 62, 58, + 46, 44, 42, 566, 571, 571, 38, 36, 34, 571, + 571, 572, 24, 23, 22, 19, 572, 572, 572, 572, + 572, 572, 572, 574, 15, 14, 574, 574, 575, 575, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 576, 576, 576, 576, 576, 576, 576, 576, + 13, 576, 576, 576, 576, 576, 578, 578, 9, 578, + 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 580, 580, 580, 580, 580, 580, + + 580, 580, 580, 580, 580, 580, 580, 580, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 582, 8, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 582, 582, 583, 583, 583, 583, + 583, 583, 583, 583, 583, 583, 583, 583, 583, 583, + 584, 584, 7, 3, 0, 0, 0, 584, 584, 584, + 584, 585, 0, 585, 585, 585, 585, 585, 585, 585, + 586, 586, 586, 586, 586, 586, 586, 586, 0, 586, + 586, 586, 586, 586, 587, 587, 0, 0, 0, 0, + 0, 587, 587, 587, 587, 588, 0, 588, 588, 588, + + 588, 588, 588, 588, 589, 589, 589, 589, 589, 589, + 589, 589, 0, 589, 589, 589, 589, 589, 590, 590, + 590, 590, 591, 0, 591, 591, 591, 591, 591, 591, + 591, 592, 0, 592, 592, 593, 593, 593, 593, 593, + 593, 593, 593, 0, 593, 593, 593, 593, 593, 594, + 594, 594, 594, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 596, 596, 596, 596, 597, 0, 597, + 0, 597, 597, 597, 597, 597, 597, 597, 599, 599, + 599, 599, 599, 599, 599, 599, 0, 599, 599, 599, + 599, 599, 601, 601, 601, 601, 601, 601, 601, 601, + + 601, 601, 601, 601, 601, 601, 602, 0, 602, 602, + 602, 602, 602, 602, 602, 602, 602, 602, 602, 602, + 603, 603, 603, 603, 603, 603, 603, 603, 603, 603, + 603, 603, 603, 603, 604, 604, 604, 604, 604, 604, + 604, 604, 604, 604, 604, 604, 604, 604, 605, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 606, 606, 606, 606, 606, 606, 606, 606, + 606, 606, 606, 606, 606, 606, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +#ifndef YYLMAX +#define YYLMAX 8192 +#endif + +char yytext[YYLMAX]; +char *idxtext_ptr; +#line 1 "idx.l" +#define INITIAL 0 +#line 5 "idx.l" +#include <math.h> +#include <filter.h> +#include <idx.h> +#include <idx.tab.h> + +extern int idx_debug; + +static int _valint(char *s, idxvalrec **v); +static int _valfloat(char *s, idxvalrec **v); +static int _valname(char *s, idxvalrec **v); +static int _valreg(char *s, idxvalrec **v); +static int _valfunc(char *s, idxvalrec **v); +/* note that negative numbers are not defined here, but in the grammar */ +/* must match regions in filt.l */ +#line 1133 "lex.idx.c" + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, char *buf_ptr )); +#endif + +#ifndef idxtext_ptr +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +#endif + +#if YY_STACK_USED +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state )); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( void )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( void )); +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include <stdlib.h> +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( yy_current_buffer->yy_is_interactive ) \ + { \ + int c = '*', n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL int yylex YY_PROTO(( void )) +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +YY_DECL + { + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 35 "idx.l" + + +#line 1287 "lex.idx.c" + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 570 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 2377 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + +do_action: /* This label is used only to access EOF actions. */ + + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yy_hold_char; + yy_cp = yy_last_accepting_cpos; + yy_current_state = yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 37 "idx.l" +{return _valint(yytext, &(idxlval.val));} + YY_BREAK +case 2: +YY_RULE_SETUP +#line 39 "idx.l" +{return _valfloat(yytext, &(idxlval.val));} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 42 "idx.l" +{ + return _valreg(yytext, &(idxlval.val)); +} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 46 "idx.l" +{ + return _valreg(yytext, &(idxlval.val)); +} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 50 "idx.l" +{ + /* support functions with one level of nested parens */ + return _valfunc(yytext, &(idxlval.val)); +} + YY_BREAK +case 6: +YY_RULE_SETUP +#line 55 "idx.l" +{return _valname(yytext, &(idxlval.val));} + YY_BREAK +case 7: +YY_RULE_SETUP +#line 57 "idx.l" +{return OR;} + YY_BREAK +case 8: +YY_RULE_SETUP +#line 58 "idx.l" +{return AND;} + YY_BREAK +case 9: +YY_RULE_SETUP +#line 59 "idx.l" +{return EQ;} + YY_BREAK +case 10: +YY_RULE_SETUP +#line 60 "idx.l" +{return NE;} + YY_BREAK +case 11: +YY_RULE_SETUP +#line 61 "idx.l" +{return LE;} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 62 "idx.l" +{return GE;} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 64 "idx.l" +{;} + YY_BREAK +case YY_STATE_EOF(INITIAL): +#line 66 "idx.l" +{ + yy_delete_buffer( YY_CURRENT_BUFFER ); + yyterminate(); + } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 71 "idx.l" +{return yytext[0];} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 73 "idx.l" +ECHO; + YY_BREAK +#line 1459 "lex.idx.c" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - idxtext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = idxtext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = idxtext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yy_c_buf_p; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = idxtext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + idxtext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = idxtext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = idxtext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +static int yy_get_next_buffer() + { + register char *dest = yy_current_buffer->yy_ch_buf; + register char *source = idxtext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - idxtext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - idxtext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + idxtext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type yy_get_previous_state() + { + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = yy_start; + + for ( yy_cp = idxtext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 570 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif + { + register int yy_is_jam; + register char *yy_cp = yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yy_last_accepting_state = yy_current_state; + yy_last_accepting_cpos = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 570 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 569); + + return yy_is_jam ? 0 : yy_current_state; + } + + +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register char *yy_bp ) +#else +static void yyunput( c, yy_bp ) +int c; +register char *yy_bp; +#endif + { + register char *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register char *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register char *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + + idxtext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +#endif /* ifndef YY_NO_UNPUT */ + + +#ifdef __cplusplus +static int yyinput() +#else +static int input() +#endif + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - idxtext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = idxtext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ + *yy_c_buf_p = '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + + + return c; + } + + +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif + { + yy_n_chars = yy_current_buffer->yy_n_chars; + idxtext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif + } + + +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } + + +#ifndef YY_NO_SCAN_BUFFER +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +char *base; +yy_size_t size; +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; + } +#endif + + +#ifndef YY_NO_SCAN_STRING +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len ); + } +#endif + + +#ifndef YY_NO_SCAN_BYTES +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len ) +yyconst char *bytes; +int len; +#endif + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) yy_flex_alloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +#endif + + +#ifndef YY_NO_PUSH_STATE +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +static void yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +static int yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) +#else +static void yy_fatal_error( msg ) +char msg[]; +#endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef idxtext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +char *s1; +yyconst char *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 73 "idx.l" + + +#ifdef YY_USE_PROTOS +static int _valint(char *s, idxvalrec **v) +#else +static int _valint(s, v) + char *s; + idxvalrec **v; +#endif +{ + char *t; + *v = idxvalnew(s); + (*v)->ival = strtoll(s, &t, 0); + if( *t ) + idxerror("bad integer value"); + (*v)->type = NUM; + (*v)->ntype = PARSE_INTEGER; + (*v)->dval = (double)(*v)->ival; + return NUM; +} + +#ifdef YY_USE_PROTOS +static int _valfloat(char *s, idxvalrec **v) +#else +static int _valfloat(s, v) + char *s; + idxvalrec **v; +#endif +{ + char *t; + *v = idxvalnew(s); + (*v)->dval = strtod(s, &t); + if( *t ) + idxerror("bad float value"); + (*v)->type = NUM; + (*v)->ntype = PARSE_FLOAT; + return NUM; +} + +#ifdef YY_USE_PROTOS +static int _valname(char *s, idxvalrec **v) +#else +static int _valname(s, v) + char *s; + idxvalrec **v; +#endif +{ + int i; + int got; + int oflag; + int isize=0; + char *iname; + char *colname; + char tail[SZ_LINE]; + FilterSymbols sp=NULL; + idxvalrec *vv; + + *v = idxvalnew(s); + /* lookup the string */ + if( !(sp=FilterSymbolLookup(FilterDefault(), s)) ){ + idxerror("column name not found in data file"); + (*v)->type = INDEF; + return INDEF; + } + colname = idxinfo(IDX_COLNAME); + /* see what sort of symbol it is */ + switch(sp->type){ + case SYM_COL: + if( !(iname=idxindexfilename(s, &isize)) ){ + (*v)->type = INDEF; + return INDEF; + } + /* if we already have opened this index, just use the existing handle */ + if( (vv=idxlookupfilename(iname)) ){ + (*v)->igio = vv->igio; + (*v)->ifits = vv->ifits; + } + /* open index for first time and mark iname */ + else{ + oflag = setgerror(0); + (*v)->igio = ft_fitsheadopen(iname, &((*v)->ifits), tail, SZ_LINE, "r"); + setgerror(oflag); + if( !((*v)->igio) ){ + idxerror("existing index file can't be opened"); + (*v)->type = INDEF; + return INDEF; + } + else{ + (*v)->iname = xstrdup(iname); + } + } + xfree(iname); + if( (*v)->ifits ){ + for(got=0, i=0; i<(*v)->ifits->table->tfields; i++){ + if( !strcasecmp(s, (*v)->ifits->table->col[i].name) ){ + (*v)->vtype = (*v)->ifits->table->col[i].type; + (*v)->voffset = (*v)->ifits->table->col[i].offset; + (*v)->vn = (*v)->ifits->table->col[i].n; + got++; + } + if( !strcasecmp(colname, (*v)->ifits->table->col[i].name) ){ + (*v)->itype = (*v)->ifits->table->col[i].type; + (*v)->ioffset = (*v)->ifits->table->col[i].offset; + (*v)->in = (*v)->ifits->table->col[i].n; + got++; + } + } + if( got == 2 ){ +#ifdef HAVE_SYS_MMAN_H + if( !(*v)->igio->gz ){ + if(!((*v)->idata = mmap(NULL, isize, PROT_READ, MAP_PRIVATE, + fileno((*v)->igio->fp), 0)) ){ + idxerror("index file can't be mmap'ed"); + (*v)->type = INDEF; + return INDEF; + } + (*v)->ilen = isize; + } +#endif + (*v)->nrow = ft_naxis((*v)->ifits,2); + (*v)->type = COL; + return COL; + } + else{ + idxerror("column name and/or index not found in index file"); + } + } + else{ + (*v)->type = INDEF; + return INDEF; + } + case SYM_PAR: + (*v)->ntype=ParseDataType(sp->value, &(*v)->dval, &(*v)->ival); + (*v)->type = NUM; + switch((*v)->ntype){ + case PARSE_INTEGER: + case PARSE_HEXINT: + (*v)->dval = (double)(*v)->ival; + return NUM; + case PARSE_FLOAT: + return NUM; + default: + idxerror("invalid parameter type in index"); + return 0; + } + default: + idxerror("unknown symbol type in index"); + return 0; + } +} + +#ifdef YY_USE_PROTOS +static int _valreglims(idxvalrec *v, char *s) +#else +static int _valreglims(v, s) + idxvalrec *v; + char *s; +#endif +{ + int i; + int ip=0; + int nd=0, maxd=0; + double xcen, ycen; + double dval; + double *dvals; + double pts[8]; + char tbuf[SZ_LINE]; + char tbuf2[SZ_LINE]; + double angle; + double xwidth, yheight; + double angl; /* l: Cartesian angle in radians */ + double half_width, half_height;/* l: radii (1/2 width and height) */ + double cosangl, sinangl; /* l: sine, cosine of the Cartesian angle */ + double hw_cos, hw_sin; /* l: products of half_width with sin, cos */ + double hh_cos, hh_sin; /* l: products of half_height with sin, cos */ + + if( !strcmp(v->s, "circle") || !strcmp(v->s, "ncircle") || + !strcmp(v->s, "annulus") || !strcmp(v->s, "nannulus") ){ + if( !word(s, tbuf, &ip)||!word(s, tbuf2, &ip) ) return 0; + xcen = atof(tbuf); + ycen = atof(tbuf2); + dval = -1; + if( *v->s == 'n' ){ + if( !word(s, tbuf, &ip) || !word(s, tbuf, &ip) ) return 0; + dval = MAX(atof(tbuf),dval); + } + else{ + while( word(s, tbuf, &ip) && strcmp(tbuf, "-142857.142857") ){ + dval = MAX(atof(tbuf),dval); + } + } + v->rlo[0] = xcen - dval - 1; + v->rhi[0] = xcen + dval + 1; + v->rlo[1] = ycen - dval - 1; + v->rhi[1] = ycen + dval + 1; + return 1; + } + else if( !strcmp(v->s, "box") || !strcmp(v->s, "nbox") || + !strcmp(v->s, "ellipse") || !strcmp(v->s, "nellipse") ){ + if( !word(s, tbuf, &ip)||!word(s, tbuf2, &ip) ) return 0; + xcen = atof(tbuf); + ycen = atof(tbuf2); + maxd = SZ_LINE; + if( !(dvals=(double *)malloc(maxd*sizeof(double))) ) return 0; + if( *v->s == 'n' ){ + if( !word(s, tbuf, &ip) || !word(s, tbuf, &ip) ) return 0; + if( !word(s, tbuf, &ip) || !word(s, tbuf2, &ip) ) return 0; + dvals[nd++] = atof(tbuf); + dvals[nd++] = atof(tbuf2); + if( word(s, tbuf, &ip) && word(s, tbuf, &ip) ) + dvals[nd++] = atof(tbuf); + } + else{ + while( word(s, tbuf, &ip) && strcmp(tbuf, "-142857.142857") ){ + dvals[nd++] = atof(tbuf); + if( nd == maxd ){ + maxd += SZ_LINE; + if( !(dvals=(double *)realloc(dvals, maxd*sizeof(double))) ) return 0; + } + } + } +ellcom: + if( nd == 2 ){ + angle = 0.0; + xwidth = dvals[0]; + yheight = dvals[1]; + } + else{ + angle = dvals[nd-1]; + xwidth = dvals[nd-3]; + yheight = dvals[nd-2]; + } + if( dvals ) xfree(dvals); + + /* Why is this done in evfilter.c??? Doesn't seem necessary */ + /* angl = angle + 90.0; */ + angl = angle; + while (angl >= 360.0) angl = angl - 360.0; + /* convert to radians */ + angl = (angl / 180.0) * M_PI; + sinangl = sin (angl); + cosangl = cos (angl); + /* Why is this done in evfilter.c??? Doesn't seem necessary */ + /* since we rotate by 90.0 degrees to get from astro angle to cartesian, */ + /* we also need to switch the width and height. we do this secretly so */ + /* that the display will turn out right, by doing it in the half terms */ + if( !strcmp(v->s, "box") ){ + /* + half_width = yheight / 2.0; + half_height = xwidth / 2.0; + */ + half_width = xwidth / 2.0; + half_height = yheight / 2.0; + } + else{ + /* + half_width = yheight; + half_height = xwidth; + */ + half_width = xwidth; + half_height = yheight; + } + hw_cos = half_width * cosangl; + hw_sin = half_width * sinangl; + hh_cos = half_height * cosangl; + hh_sin = half_height * sinangl; + + pts[0] = xcen - hw_cos - hh_sin; + pts[1] = ycen - hw_sin + hh_cos; + pts[2] = xcen + hw_cos - hh_sin; + pts[3] = ycen + hw_sin + hh_cos; + pts[4] = xcen + hw_cos + hh_sin; + pts[5] = ycen + hw_sin - hh_cos; + pts[6] = xcen - hw_cos + hh_sin; + pts[7] = ycen - hw_sin - hh_cos; + + v->rlo[0] = pts[0]; + v->rhi[0] = pts[0]; + v->rlo[1] = pts[1]; + v->rhi[1] = pts[1]; + for(i=2; i<8; i+=2){ + v->rlo[0] = MIN(pts[i],v->rlo[0]); + v->rhi[0] = MAX(pts[i],v->rhi[0]); + v->rlo[1] = MIN(pts[i+1],v->rlo[1]); + v->rhi[1] = MAX(pts[i+1],v->rhi[1]); + } + return 1; + } + else if( !strcmp(v->s, "line") ){ + for(i=0; i<4; i++){ + if( word(s, tbuf, &ip) ){ + pts[i] = atof(tbuf); + } + } + v->rlo[0] = MIN(pts[0],pts[2]); + v->rhi[0] = MAX(pts[0],pts[2]); + v->rlo[1] = MIN(pts[1],pts[3]); + v->rhi[1] = MAX(pts[1],pts[3]); + return 1; + } + else if( !strcmp(v->s, "point") || !strcmp(v->s, "polygon") ){ + if( !word(s, tbuf, &ip)||!word(s, tbuf2, &ip) ) return 0; + xcen = atof(tbuf); + ycen = atof(tbuf2); + v->rlo[0] = xcen-1; + v->rhi[0] = xcen+1; + v->rlo[1] = ycen-1; + v->rhi[1] = ycen+1; + while( word(s, tbuf, &ip) && strcmp(tbuf, "-142857.142857") && + word(s, tbuf2, &ip) ){ + dval = atof(tbuf); + v->rlo[0] = MIN(dval-1,v->rlo[0]); + v->rhi[0] = MAX(dval+1,v->rhi[0]); + dval = atof(tbuf2); + v->rlo[1] = MIN(dval-1,v->rlo[1]); + v->rhi[1] = MAX(dval+1,v->rhi[1]); + } + return 1; + } + else if( !strcmp(v->s, "pie") || !strcmp(v->s, "qtpie") ){ + return 0; + } + else if( !strcmp(v->s, "panda") || !strcmp(v->s, "cpanda") ){ + maxd = SZ_LINE; + if( !(dvals=(double *)malloc(maxd*sizeof(double))) ) return 0; + while( word(s, tbuf, &ip) && strcmp(tbuf, "-142857.142857") ){ + dvals[nd++] = atof(tbuf); + if( nd == maxd ){ + maxd += SZ_LINE; + if( !(dvals=(double *)realloc(dvals, maxd*sizeof(double))) ) return 0; + } + } + v->rlo[0] = dvals[0] - dvals[6] - 1; + v->rhi[0] = dvals[0] + dvals[6] + 1; + v->rlo[1] = dvals[1] - dvals[6] - 1; + v->rhi[1] = dvals[1] + dvals[6] + 1; + if( dvals ) xfree(dvals); + return 1; + } + else if( !strcmp(v->s, "bpanda") || !strcmp(v->s, "epanda") ){ + maxd = 3; + if( !(dvals=(double *)malloc(maxd*sizeof(double))) ) return 0; + /* grab: xcen ycen */ + if( !word(s, tbuf, &ip)||!word(s, tbuf2, &ip) ) return 0; + xcen = atof(tbuf); + ycen = atof(tbuf2); + /* skip: ang1 ang2 nang xwlo yhlo */ + for(i=0; i<5; i++){ + if( !word(s, tbuf, &ip) ) return 0; + } + /* grab: xwhi yhhi */ + for(i=0; i<2; i++){ + if( !word(s, tbuf, &ip) ) return 0; + dvals[nd++] = atof(tbuf); + } + /* skip: nrad */ + if( !word(s, tbuf, &ip) ) return 0; + /* grab: ang */ + if( !word(s, tbuf, &ip) ) return 0; + dvals[nd++] = atof(tbuf); + /* we can now handle this with box/ellipse code */ + goto ellcom; + } + else if( !strcmp(v->s, "field") ){ + return 0; + } + else{ + return 0; + } +} + +#ifdef YY_USE_PROTOS +static int _valreg(char *s, idxvalrec **v) +#else +static int _valreg(s, v) + char *s; + idxvalrec **v; +#endif +{ + int ip=0; + char *t; + char tbuf[SZ_LINE]; + *v = idxvalnew(NULL); + newdtable("(),"); + while( *s == '(' ) s++; + if( !word(s, tbuf, &ip) ){ + (*v)->type = INDEF; + return REG; + } + if( strstr(tbuf, "field") ){ + (*v)->type = INDEF; + return REG; + } + t = tbuf+2; + if( *t == 'v' ) t++; + (*v)->s = xstrdup(t); + if( !word(s, tbuf, &ip) || !word(s, tbuf, &ip) || + !word(s, tbuf, &ip) || !word(s, tbuf, &ip) ){ + (*v)->type = INDEF; + return REG; + } + /* include/exclude */ + if( !atoi(tbuf) ){ + (*v)->type = INDEF; + return REG; + } + if( !word(s, tbuf, &ip) || !word(s, tbuf, &ip) || !word(s, tbuf, &ip) ){ + (*v)->type = INDEF; + return REG; + } + culc(tbuf); + _valname(tbuf, &(*v)->rv[0]); + if( !word(s, tbuf, &ip) || !word(s, tbuf, &ip) ){ + (*v)->type = INDEF; + return REG; + } + culc(tbuf); + _valname(tbuf, &(*v)->rv[1]); + if( !_valreglims(*v, &s[ip]) ){ + (*v)->type = INDEF; + return REG; + } + freedtable(); + (*v)->type = REG; + return REG; +} + +#ifdef YY_USE_PROTOS +static int _valfunc(char *s, idxvalrec **v) +#else +static int _valfunc(s, v) + char *s; + idxvalrec **v; +#endif +{ + *v = idxvalnew(s); + (*v)->type = FUNC; + return FUNC; +} + + +#ifdef YY_USE_PROTOS +void +idxstring(char *s) +#else +void idxstring(s) + char *s; +#endif +{ + idx_scan_string(s); +} + +#ifdef YY_USE_PROTOS +int +idxerror(char *msg) +#else +int idxerror(msg) + char *msg; +#endif +{ + Filter filter; + + YY_FLUSH_BUFFER; + /* turn indexing off */ + if( (filter=FilterDefault()) ){ + filter->doidx = -1; + } + /* output message, if necessary */ + if( idx_debug ){ + fprintf(stderr, "ERROR: %s", msg); + if( !strcmp(msg, "syntax error") ){ + fprintf(stderr, " (terminating index processing)"); + } + fprintf(stderr, "\n"); + } + yyterminate(); +} + +#ifdef YY_USE_PROTOS +int yywrap(void) +#else +int yywrap() +#endif +{ + return 1; +} + |