#ifndef lint static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #endif #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define yyclearin (yychar=(-1)) #define yyerrok (yyerrflag=0) #define YYRECOVERING (yyerrflag!=0) extern int yyparse(void); #define yyparse parserparse #define yylex parserlex #define yyerror parsererror #define yychar parserchar #define yyval parserval #define yylval parserlval #define yydebug parserdebug #define yynerrs parsernerrs #define yyerrflag parsererrflag #define yyss parserss #define yyssp parserssp #define yyvs parservs #define yyvsp parservsp #define yylhs parserlhs #define yylen parserlen #define yydefred parserdefred #define yydgoto parserdgoto #define yysindex parsersindex #define yyrindex parserrindex #define yygindex parsergindex #define yytable parsertable #define yycheck parsercheck #define yyname parsername #define yyrule parserrule #define YYPREFIX "parser" #line 2 "parser.y" /**/ /* (C) Copyright 2001 by Thomas Driemeyer www.bitrot.de.*/ /**/ /* This is free software; you can redistribute it and/or modify it under the*/ /* terms of the GNU Library General Public License as published by the Free*/ /* Software Foundation; either version 2 of the License, or (at your option)*/ /* any later version. This library is distributed in the hope that it will*/ /* be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of*/ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library*/ /* General Public License for more details.*/ /**/ /* expression language grammar, compiled to parser.C by yacc*/ /**/ #include #include #include #include #include #include #include #include "form.h" #include "section.h" #include "database.h" #include "evaluate.h" #include "util.h" #define yyparse Evaluate::yyeparse #line 32 "parser.y" typedef union { int ival; double dval; char *sval; Arg *aval; } YYSTYPE; #line 68 "y.tab.c" #define NUMBER 257 #define STRING 258 #define SYMBOL 259 #define FIELD 260 #define VAR 261 #define EQ 262 #define NEQ 263 #define LE 264 #define GE 265 #define SHR 266 #define SHL 267 #define AND 268 #define OR 269 #define IN 270 #define PLA 271 #define MIA 272 #define MUA 273 #define MOA 274 #define DVA 275 #define ANA 276 #define ORA 277 #define INC 278 #define DEC_ 279 #define APP 280 #define AVG 281 #define DEV 282 #define AMIN 283 #define AMAX 284 #define SUM 285 #define QAVG 286 #define QDEV 287 #define QMIN_ 288 #define QMAX_ 289 #define QSUM 290 #define SAVG 291 #define SDEV 292 #define SMIN 293 #define SMAX 294 #define SSUM 295 #define ABS 296 #define INT 297 #define BOUND 298 #define LEN 299 #define CHOP 300 #define TR 301 #define SUBSTR 302 #define SQRT 303 #define EXP 304 #define LOG 305 #define LN 306 #define POW 307 #define RANDOM 308 #define SIN 309 #define COS 310 #define TAN 311 #define ASIN 312 #define ACOS 313 #define ATAN 314 #define ATAN2 315 #define DATE 316 #define TIME 317 #define DURATION 318 #define EXPAND 319 #define YEAR 320 #define MONTH 321 #define DAY 322 #define HOUR 323 #define MINUTE 324 #define SECOND 325 #define LEAP 326 #define JULIAN 327 #define SECTION_ 328 #define DBASE_ 329 #define FORM_ 330 #define PREVFORM 331 #define SWITCH 332 #define THIS 333 #define LAST 334 #define DISP 335 #define FOREACH 336 #define HOST 337 #define USER 338 #define UID 339 #define GID 340 #define SYSTEM 341 #define ACCESS 342 #define BEEP 343 #define ERROR 344 #define PRINTF 345 #define UMINUS 346 #define YYERRCODE 256 short parserlhs[] = { -1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 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, }; short parserlen[] = { 2, 1, 1, 3, 3, 3, 1, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 1, 4, 3, 6, 4, 2, 4, 6, 8, 1, 1, 1, 1, 4, 1, 1, 6, 4, 6, 1, 1, 4, 4, 4, 4, 7, 4, 1, 4, 1, 3, 1, 3, 3, 1, 4, 3, 6, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 6, 1, 4, 4, 4, 4, 4, 4, 6, 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 6, }; short parserdefred[] = { 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 32, 29, 0, 0, 27, 28, 0, 45, 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, 49, 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, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 93, 94, 141, 142, 0, 0, 0, 0, 0, 0, 0, 23, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 0, 67, 68, 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, 69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 24, 0, 0, 40, 39, 41, 42, 0, 31, 0, 0, 35, 22, 0, 46, 44, 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, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 81, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 114, 115, 116, 117, 0, 120, 121, 122, 123, 124, 125, 0, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 139, 128, 0, 0, 0, 0, 25, 0, 0, 34, 36, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 118, 126, 143, 26, 0, 112, }; short parserdgoto[] = { 26, 106, 133, 134, }; short parsersindex[] = { 230, 0, -59, -52, -36, -35, -28, -25, -18, -11, -3, -75, 0, 0, 0, 16, 28, 0, 0, 38, 0, 39, 49, 230, 159, -231, 0, 3062, 230, 159, 230, 230, 230, 230, 230, 159, 159, 159, -217, 159, 230, 230, 230, 230, 230, 263, 0, -50, 235, -178, -170, 53, 54, 55, 56, 64, 65, 66, 67, 80, 82, 83, 84, 85, 87, 88, 89, 90, 91, 93, 94, 96, 114, 115, 126, 0, 128, 156, 160, 162, 163, 166, 168, 173, 175, 178, 180, 186, 187, 189, 190, 195, 196, 197, 26, 0, 0, 0, 0, 0, 208, 159, 159, 159, 230, 159, 727, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 147, 968, 147, 147, 846, 1194, 2176, 979, 1006, 1033, -38, 1044, 3031, 614, 1408, 3062, -17, 3, 0, 159, 159, 159, 159, 159, 159, 159, 159, 159, 0, 0, 159, 0, 0, -4, -2, -1, 2, 5, 7, 9, 12, 21, 23, 24, 29, 30, 31, 34, 159, 159, 159, 230, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 230, 230, 230, 159, 159, 159, 159, 159, 159, 159, 159, 159, 230, 0, 0, 0, 1701, 1128, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 0, 15, 15, 203, 203, 107, 594, 2956, 203, 203, 0, 199, 0, 230, 159, 0, 0, 0, 0, 159, 0, 230, 230, 0, 0, 230, 0, 0, 2528, 1277, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 2528, 216, 220, 227, 233, 247, 257, 270, 271, 272, 274, 275, 277, 279, 283, 287, 1155, 1288, 2203, 1926, 1315, 1342, 1388, 1400, 2256, 1436, 1472, 1582, 1648, 1683, 1711, 2330, 2937, 2971, 2980, 1738, 1749, 1776, 1834, 1845, 2010, 2021, 2079, 2093, 3095, 0, 0, 1882, 1882, 20, 20, 43, 43, 2886, 2727, 2517, 2120, -12, 2917, 2278, 20, 20, 50, 50, 0, 0, 0, 230, 230, 2991, 2365, 2132, 3011, 3022, 3062, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 159, 594, 147, 0, 159, 289, 0, 0, 159, 2517, 2415, 2443, 2168, 2517, 2454, 0, 2528, 159, 0, 0, 0, 0, 2489, 0, }; short parserrindex[] = { 0, 0, 273, 459, 0, 0, 0, 539, 550, 0, 0, 570, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 699, 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, 856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 883, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 747, 0, 911, 1219, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 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, 1, 234, 590, 603, 40, 577, 0, 626, 672, 0, 579, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 0, 300, 320, 338, 736, 737, 787, 1071, 1118, 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, 2864, 2874, 2760, 2797, 1223, 2609, 153, 154, 310, 0, 77, 336, 8, 2841, 2851, 2563, 2601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 941, 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, 659, 1558, 0, 0, 0, 0, 0, 0, 294, 294, 294, 0, 346, 294, 0, 1119, 0, 0, 0, 0, 0, 294, 0, }; short parsergindex[] = { 0, -29, 191, 295, }; #define YYTABLESIZE 3365 short parsertable[] = { 119, 13, 28, 238, 32, 33, 125, 126, 127, 31, 129, 137, 34, 52, 52, 35, 39, 52, 52, 52, 52, 52, 36, 52, 246, 219, 212, 245, 107, 37, 217, 216, 29, 215, 52, 218, 52, 38, 52, 52, 17, 138, 13, 128, 247, 13, 72, 245, 213, 72, 214, 47, 72, 239, 47, 48, 40, 219, 48, 13, 13, 117, 217, 216, 13, 215, 72, 218, 41, 52, 52, 72, 195, 196, 197, 115, 199, 116, 42, 43, 219, 17, 211, 149, 17, 217, 216, 219, 215, 44, 218, 150, 217, 151, 152, 153, 154, 218, 17, 17, 52, 72, 72, 17, 155, 156, 157, 158, 248, 249, 250, 251, 252, 253, 254, 255, 256, 193, 74, 257, 159, 74, 160, 161, 162, 163, 13, 164, 165, 166, 167, 168, 72, 169, 170, 74, 171, 273, 274, 275, 74, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 117, 172, 173, 292, 293, 294, 295, 296, 297, 298, 299, 300, 17, 174, 115, 175, 116, 74, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 27, 102, 117, 88, 89, 176, 88, 89, 105, 177, 74, 178, 179, 101, 327, 180, 115, 181, 116, 328, 88, 89, 182, 45, 183, 88, 89, 184, 118, 185, 120, 121, 122, 123, 124, 186, 187, 30, 188, 189, 130, 131, 132, 14, 190, 191, 192, 52, 52, 52, 52, 52, 52, 52, 52, 88, 89, 194, 117, 200, 201, 202, 203, 204, 205, 258, 333, 259, 260, 325, 334, 261, 13, 13, 262, 25, 263, 335, 264, 24, 13, 265, 18, 336, 14, 72, 72, 14, 110, 111, 266, 104, 267, 268, 103, 204, 205, 337, 269, 270, 271, 14, 14, 272, 198, 148, 14, 338, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 117, 17, 339, 340, 341, 18, 342, 343, 18, 344, 18, 345, 386, 113, 115, 346, 116, 114, 387, 347, 385, 392, 18, 18, 18, 388, 18, 18, 1, 91, 135, 54, 58, 0, 54, 58, 74, 74, 389, 390, 0, 0, 91, 391, 23, 91, 0, 393, 54, 58, 14, 276, 59, 54, 58, 59, 399, 0, 0, 91, 108, 109, 110, 111, 289, 290, 291, 0, 73, 59, 60, 73, 0, 60, 59, 0, 301, 0, 90, 136, 0, 90, 0, 54, 58, 73, 0, 60, 0, 18, 73, 0, 60, 0, 91, 90, 0, 0, 0, 0, 108, 109, 110, 111, 59, 0, 0, 46, 112, 0, 47, 48, 88, 88, 89, 326, 0, 0, 0, 0, 73, 73, 60, 329, 330, 0, 0, 331, 49, 50, 90, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 6, 73, 0, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 0, 86, 87, 88, 89, 90, 91, 92, 93, 94, 1, 0, 2, 3, 95, 96, 97, 0, 14, 14, 98, 99, 6, 100, 0, 6, 14, 6, 139, 140, 141, 142, 143, 144, 145, 146, 147, 378, 379, 6, 6, 6, 0, 6, 6, 0, 0, 108, 109, 110, 111, 0, 4, 5, 6, 112, 0, 18, 18, 18, 18, 38, 0, 0, 0, 18, 0, 0, 7, 8, 9, 10, 37, 0, 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, 15, 0, 0, 0, 16, 17, 18, 0, 30, 19, 0, 20, 21, 22, 0, 4, 0, 19, 38, 0, 0, 38, 6, 38, 0, 0, 0, 0, 15, 37, 0, 0, 37, 0, 37, 38, 38, 38, 0, 38, 38, 16, 73, 73, 0, 0, 37, 37, 37, 30, 37, 37, 30, 0, 30, 0, 4, 0, 19, 4, 0, 19, 0, 19, 11, 0, 30, 30, 30, 15, 30, 30, 15, 4, 4, 19, 19, 19, 117, 19, 19, 0, 16, 0, 0, 16, 15, 15, 15, 0, 15, 15, 115, 243, 116, 114, 242, 10, 117, 16, 16, 16, 38, 16, 16, 11, 0, 0, 11, 0, 12, 113, 115, 37, 116, 114, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 11, 11, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 10, 0, 4, 10, 19, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 15, 12, 10, 10, 0, 0, 6, 6, 6, 6, 0, 0, 0, 16, 6, 12, 12, 12, 0, 12, 12, 56, 56, 0, 0, 56, 56, 56, 56, 56, 0, 56, 20, 0, 0, 0, 11, 0, 0, 0, 0, 0, 56, 0, 56, 0, 56, 56, 0, 219, 212, 0, 0, 220, 217, 216, 208, 215, 0, 218, 0, 0, 62, 61, 0, 62, 61, 0, 0, 10, 0, 0, 213, 20, 214, 209, 20, 56, 56, 62, 61, 0, 12, 0, 62, 61, 38, 38, 38, 38, 20, 20, 0, 0, 38, 20, 0, 37, 37, 37, 37, 0, 0, 0, 0, 37, 211, 0, 56, 0, 0, 0, 0, 63, 62, 61, 63, 30, 30, 30, 30, 0, 0, 0, 0, 30, 19, 19, 19, 19, 63, 0, 0, 0, 19, 63, 210, 15, 15, 15, 15, 108, 109, 110, 111, 15, 0, 0, 0, 112, 16, 16, 16, 16, 0, 0, 0, 20, 16, 0, 0, 108, 109, 110, 111, 63, 0, 0, 0, 112, 0, 0, 232, 11, 11, 11, 11, 117, 129, 129, 0, 11, 129, 129, 129, 129, 129, 0, 129, 0, 113, 115, 0, 116, 114, 0, 7, 0, 0, 129, 0, 129, 0, 129, 129, 127, 127, 0, 0, 127, 127, 127, 127, 127, 0, 127, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 127, 12, 127, 0, 127, 127, 0, 0, 129, 129, 0, 7, 0, 0, 7, 0, 0, 0, 0, 0, 56, 56, 56, 56, 56, 56, 56, 56, 7, 7, 0, 0, 0, 7, 0, 127, 127, 53, 53, 129, 0, 53, 53, 53, 53, 53, 0, 53, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 53, 0, 53, 0, 53, 53, 219, 212, 127, 0, 0, 217, 216, 208, 215, 0, 218, 219, 212, 0, 0, 235, 217, 216, 208, 215, 0, 218, 0, 213, 0, 214, 209, 0, 0, 53, 53, 7, 0, 0, 213, 0, 214, 209, 219, 212, 0, 0, 236, 217, 216, 208, 215, 0, 218, 0, 0, 0, 0, 0, 0, 0, 231, 211, 0, 0, 53, 213, 0, 214, 209, 219, 212, 0, 211, 237, 217, 216, 208, 215, 0, 218, 219, 212, 0, 0, 0, 217, 216, 208, 215, 0, 218, 210, 213, 0, 214, 209, 0, 0, 0, 211, 0, 0, 210, 213, 0, 214, 209, 108, 109, 110, 111, 64, 0, 0, 64, 112, 0, 129, 129, 129, 129, 129, 129, 129, 129, 0, 211, 0, 64, 210, 0, 0, 0, 64, 0, 0, 240, 211, 0, 0, 0, 0, 0, 0, 127, 127, 127, 127, 127, 127, 127, 127, 0, 0, 0, 0, 210, 0, 57, 55, 0, 57, 55, 64, 219, 212, 0, 210, 303, 217, 216, 208, 215, 0, 218, 57, 55, 0, 0, 0, 57, 55, 0, 0, 0, 0, 0, 213, 0, 214, 209, 219, 212, 0, 0, 348, 217, 216, 208, 215, 0, 218, 53, 53, 53, 53, 53, 53, 53, 53, 57, 55, 0, 0, 213, 0, 214, 209, 8, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 233, 0, 117, 200, 201, 202, 203, 204, 205, 206, 207, 211, 0, 0, 210, 113, 115, 0, 116, 114, 0, 0, 8, 76, 0, 8, 76, 0, 0, 76, 200, 201, 202, 203, 204, 205, 206, 207, 0, 8, 8, 210, 0, 76, 8, 76, 0, 76, 76, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 219, 212, 76, 76, 0, 217, 216, 208, 215, 0, 218, 219, 212, 0, 0, 349, 217, 216, 208, 215, 0, 218, 0, 213, 0, 214, 209, 0, 0, 0, 8, 0, 0, 76, 213, 0, 214, 209, 219, 212, 0, 0, 352, 217, 216, 208, 215, 0, 218, 0, 0, 0, 0, 0, 0, 0, 332, 211, 0, 0, 0, 213, 0, 214, 209, 219, 212, 0, 211, 353, 217, 216, 208, 215, 0, 218, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 210, 213, 0, 214, 209, 0, 0, 0, 211, 0, 0, 210, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 219, 212, 0, 0, 354, 217, 216, 208, 215, 0, 218, 211, 219, 212, 210, 0, 355, 217, 216, 208, 215, 0, 218, 213, 244, 214, 209, 0, 0, 117, 0, 108, 109, 110, 111, 213, 0, 214, 209, 112, 0, 210, 113, 115, 0, 116, 114, 0, 219, 212, 0, 0, 357, 217, 216, 208, 215, 211, 218, 0, 76, 76, 76, 76, 76, 76, 76, 76, 0, 211, 0, 213, 0, 214, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 212, 0, 210, 358, 217, 216, 208, 215, 0, 218, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 211, 0, 213, 0, 214, 209, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 21, 0, 210, 0, 0, 0, 0, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 21, 0, 0, 21, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 21, 21, 0, 219, 212, 21, 0, 359, 217, 216, 208, 215, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 214, 209, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 108, 109, 110, 111, 0, 0, 211, 0, 112, 0, 0, 0, 0, 21, 0, 219, 212, 0, 0, 360, 217, 216, 208, 215, 0, 218, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 210, 0, 213, 0, 214, 209, 0, 0, 0, 0, 0, 0, 0, 0, 219, 212, 0, 0, 361, 217, 216, 208, 215, 0, 218, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 211, 213, 0, 214, 209, 117, 219, 212, 0, 0, 362, 217, 216, 208, 215, 0, 218, 0, 113, 115, 0, 116, 114, 0, 0, 0, 0, 0, 0, 213, 210, 214, 209, 219, 212, 211, 0, 367, 217, 216, 208, 215, 0, 218, 219, 212, 0, 0, 368, 217, 216, 208, 215, 0, 218, 0, 213, 0, 214, 209, 0, 0, 0, 211, 0, 210, 0, 213, 0, 214, 209, 219, 212, 0, 0, 369, 217, 216, 208, 215, 0, 218, 0, 0, 302, 0, 0, 0, 0, 0, 211, 0, 0, 210, 213, 0, 214, 209, 0, 0, 0, 211, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 211, 219, 212, 210, 0, 370, 217, 216, 208, 215, 0, 218, 219, 212, 0, 0, 371, 217, 216, 208, 215, 0, 218, 0, 213, 0, 214, 209, 0, 0, 210, 0, 0, 0, 0, 213, 0, 214, 209, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 219, 0, 0, 0, 0, 217, 216, 0, 215, 211, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 0, 0, 213, 0, 214, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 108, 109, 110, 111, 351, 0, 210, 0, 112, 117, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 113, 115, 0, 116, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 219, 212, 0, 0, 372, 217, 216, 208, 215, 0, 218, 219, 212, 0, 0, 373, 217, 216, 208, 215, 0, 218, 0, 213, 0, 214, 209, 0, 0, 0, 0, 0, 0, 0, 213, 0, 214, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 211, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 211, 219, 212, 0, 0, 374, 217, 216, 208, 215, 0, 218, 0, 0, 0, 219, 212, 0, 0, 210, 217, 216, 208, 215, 213, 218, 214, 209, 0, 0, 210, 202, 203, 204, 205, 0, 0, 0, 213, 0, 214, 209, 219, 212, 0, 0, 0, 217, 216, 208, 215, 0, 218, 0, 219, 212, 0, 0, 211, 217, 216, 208, 215, 377, 218, 213, 0, 214, 209, 0, 0, 375, 211, 108, 109, 110, 111, 213, 0, 214, 209, 112, 0, 0, 0, 0, 0, 0, 210, 0, 219, 212, 0, 0, 397, 217, 216, 208, 215, 211, 218, 0, 210, 0, 0, 234, 0, 117, 0, 0, 382, 211, 0, 213, 0, 214, 209, 0, 0, 0, 113, 115, 0, 116, 114, 219, 212, 0, 0, 210, 217, 216, 350, 215, 0, 218, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 211, 213, 0, 214, 209, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 210, 219, 212, 0, 0, 211, 217, 216, 356, 215, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 213, 0, 214, 209, 217, 216, 0, 215, 0, 218, 0, 210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 214, 200, 201, 202, 203, 204, 205, 206, 207, 0, 211, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 219, 212, 0, 0, 0, 217, 216, 363, 215, 0, 218, 0, 0, 210, 0, 200, 201, 202, 203, 204, 205, 206, 207, 213, 0, 214, 209, 200, 201, 202, 203, 204, 205, 206, 207, 219, 212, 0, 0, 0, 217, 216, 381, 215, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 211, 213, 0, 214, 209, 0, 200, 201, 202, 203, 204, 205, 206, 207, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 219, 212, 210, 0, 395, 217, 216, 211, 215, 0, 218, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 213, 0, 214, 209, 0, 219, 212, 0, 0, 396, 217, 216, 0, 215, 210, 218, 219, 212, 0, 0, 398, 217, 216, 0, 215, 0, 218, 0, 213, 0, 214, 209, 0, 0, 211, 0, 0, 0, 0, 213, 0, 214, 209, 200, 201, 202, 203, 204, 205, 206, 207, 219, 212, 0, 0, 400, 217, 216, 0, 215, 0, 218, 211, 0, 210, 200, 201, 202, 203, 204, 205, 0, 0, 211, 213, 0, 214, 209, 0, 219, 212, 0, 0, 0, 217, 216, 0, 215, 0, 218, 219, 212, 210, 0, 0, 217, 216, 0, 215, 0, 218, 0, 213, 210, 214, 209, 0, 0, 211, 0, 0, 0, 0, 213, 0, 214, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 79, 0, 0, 79, 0, 79, 79, 79, 0, 0, 211, 0, 210, 0, 0, 0, 0, 0, 0, 0, 79, 211, 79, 0, 79, 79, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 78, 0, 210, 78, 0, 78, 78, 78, 75, 0, 0, 75, 0, 210, 75, 0, 0, 79, 79, 0, 78, 0, 78, 0, 78, 78, 0, 0, 75, 0, 75, 0, 75, 75, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 79, 0, 0, 0, 0, 0, 0, 78, 78, 0, 0, 0, 0, 0, 0, 75, 75, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 78, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 0, 0, 0, 0, 0, 219, 212, 0, 0, 0, 217, 216, 0, 215, 0, 218, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, 213, 0, 214, 200, 201, 202, 203, 204, 205, 206, 207, 86, 0, 0, 86, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 86, 211, 86, 86, 0, 79, 79, 79, 79, 79, 79, 79, 79, 0, 0, 87, 0, 0, 87, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, 0, 86, 86, 87, 0, 87, 0, 87, 87, 0, 0, 78, 78, 78, 78, 78, 78, 78, 78, 75, 75, 75, 75, 75, 75, 75, 75, 82, 0, 0, 82, 0, 86, 82, 0, 0, 0, 83, 87, 87, 83, 0, 0, 83, 0, 0, 0, 82, 0, 82, 84, 82, 82, 84, 0, 0, 84, 83, 0, 83, 85, 83, 83, 85, 0, 0, 85, 0, 0, 87, 84, 219, 212, 0, 0, 84, 217, 216, 0, 215, 85, 218, 82, 82, 0, 85, 0, 0, 0, 0, 0, 0, 83, 83, 213, 0, 214, 0, 0, 0, 0, 0, 219, 212, 0, 84, 84, 217, 216, 0, 215, 0, 218, 82, 0, 85, 85, 0, 0, 0, 0, 0, 0, 83, 0, 213, 364, 214, 211, 0, 0, 117, 0, 0, 0, 0, 84, 200, 201, 202, 203, 204, 205, 206, 113, 115, 85, 116, 114, 0, 117, 0, 0, 0, 0, 0, 0, 0, 210, 0, 365, 0, 324, 113, 115, 117, 116, 114, 0, 366, 86, 86, 86, 86, 117, 0, 86, 86, 113, 115, 380, 116, 114, 0, 0, 117, 0, 113, 115, 0, 116, 114, 0, 0, 0, 0, 0, 0, 113, 115, 383, 116, 114, 0, 0, 117, 0, 87, 87, 87, 87, 384, 0, 87, 87, 0, 117, 0, 113, 115, 0, 116, 114, 241, 0, 117, 0, 0, 0, 113, 115, 0, 116, 114, 0, 0, 0, 0, 113, 115, 0, 116, 114, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 82, 82, 0, 117, 82, 82, 0, 0, 83, 83, 83, 83, 0, 0, 83, 83, 113, 115, 0, 116, 114, 84, 84, 0, 0, 0, 0, 84, 84, 0, 0, 85, 85, 0, 376, 0, 117, 85, 85, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 113, 115, 0, 116, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 204, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 109, 110, 111, 0, 0, 0, 0, 112, }; short parsercheck[] = { 29, 0, 61, 41, 40, 40, 35, 36, 37, 61, 39, 61, 40, 37, 38, 40, 91, 41, 42, 43, 44, 45, 40, 47, 41, 37, 38, 44, 259, 40, 42, 43, 91, 45, 58, 47, 60, 40, 62, 63, 0, 91, 41, 260, 41, 44, 38, 44, 60, 41, 62, 41, 44, 91, 44, 41, 40, 37, 44, 58, 59, 46, 42, 43, 63, 45, 58, 47, 40, 93, 94, 63, 101, 102, 103, 60, 105, 62, 40, 40, 37, 41, 94, 261, 44, 42, 43, 37, 45, 40, 47, 261, 42, 40, 40, 40, 40, 47, 58, 59, 124, 93, 94, 63, 40, 40, 40, 40, 137, 138, 139, 140, 141, 142, 143, 144, 145, 91, 41, 148, 40, 44, 40, 40, 40, 40, 125, 40, 40, 40, 40, 40, 124, 40, 40, 58, 40, 166, 167, 168, 63, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 46, 40, 40, 185, 186, 187, 188, 189, 190, 191, 192, 193, 125, 40, 60, 40, 62, 93, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 0, 33, 46, 41, 41, 40, 44, 44, 40, 40, 124, 40, 40, 45, 234, 40, 60, 40, 62, 239, 58, 58, 40, 23, 40, 63, 63, 40, 28, 40, 30, 31, 32, 33, 34, 40, 40, 280, 40, 40, 40, 41, 42, 0, 40, 40, 40, 262, 263, 264, 265, 266, 267, 268, 269, 93, 93, 40, 46, 262, 263, 264, 265, 266, 267, 260, 41, 260, 260, 61, 41, 260, 262, 263, 260, 36, 260, 41, 260, 40, 270, 260, 0, 41, 41, 268, 269, 44, 264, 265, 260, 123, 260, 260, 126, 266, 267, 41, 260, 260, 260, 58, 59, 260, 104, 61, 63, 41, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 46, 270, 41, 41, 41, 41, 41, 41, 44, 41, 46, 41, 350, 59, 60, 41, 62, 63, 356, 41, 61, 41, 58, 59, 60, 363, 62, 63, 0, 44, 44, 41, 41, -1, 44, 44, 268, 269, 376, 377, -1, -1, 41, 381, 123, 44, -1, 385, 58, 58, 125, 169, 41, 63, 63, 44, 394, -1, -1, 58, 262, 263, 264, 265, 182, 183, 184, -1, 41, 58, 41, 44, -1, 44, 63, -1, 194, -1, 41, 125, -1, 44, -1, 93, 93, 58, -1, 58, -1, 125, 63, -1, 63, -1, 93, 58, -1, -1, -1, -1, 262, 263, 264, 265, 93, -1, -1, 257, 270, -1, 260, 261, 268, 269, 269, 233, -1, -1, -1, -1, 93, 94, 93, 241, 242, -1, -1, 245, 278, 279, 93, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 0, 124, -1, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, 320, 321, 322, 323, 324, 325, 326, 327, 328, 258, -1, 260, 261, 333, 334, 335, -1, 262, 263, 339, 340, 41, 342, -1, 44, 270, 46, 271, 272, 273, 274, 275, 276, 277, 278, 279, 324, 325, 58, 59, 60, -1, 62, 63, -1, -1, 262, 263, 264, 265, -1, 300, 301, 302, 270, -1, 262, 263, 264, 265, 0, -1, -1, -1, 270, -1, -1, 316, 317, 318, 319, 0, -1, -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, 332, -1, -1, -1, 336, 337, 338, -1, 0, 341, -1, 343, 344, 345, -1, 0, -1, 0, 41, -1, -1, 44, 125, 46, -1, -1, -1, -1, 0, 41, -1, -1, 44, -1, 46, 58, 59, 60, -1, 62, 63, 0, 268, 269, -1, -1, 58, 59, 60, 41, 62, 63, 44, -1, 46, -1, 41, -1, 41, 44, -1, 44, -1, 46, 0, -1, 58, 59, 60, 41, 62, 63, 44, 58, 59, 58, 59, 60, 46, 62, 63, -1, 41, -1, -1, 44, 58, 59, 60, -1, 62, 63, 60, 41, 62, 63, 44, 0, 46, 58, 59, 60, 125, 62, 63, 41, -1, -1, 44, -1, 0, 59, 60, 125, 62, 63, -1, -1, -1, -1, -1, -1, 58, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, 41, -1, 125, 44, 125, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, 125, 44, 58, 59, -1, -1, 262, 263, 264, 265, -1, -1, -1, 125, 270, 58, 59, 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, 0, -1, -1, -1, 125, -1, -1, -1, -1, -1, 58, -1, 60, -1, 62, 63, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, 41, 41, -1, 44, 44, -1, -1, 125, -1, -1, 60, 41, 62, 63, 44, 93, 94, 58, 58, -1, 125, -1, 63, 63, 262, 263, 264, 265, 58, 59, -1, -1, 270, 63, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, 94, -1, 124, -1, -1, -1, -1, 41, 93, 93, 44, 262, 263, 264, 265, -1, -1, -1, -1, 270, 262, 263, 264, 265, 58, -1, -1, -1, 270, 63, 124, 262, 263, 264, 265, 262, 263, 264, 265, 270, -1, -1, -1, 270, 262, 263, 264, 265, -1, -1, -1, 125, 270, -1, -1, 262, 263, 264, 265, 93, -1, -1, -1, 270, -1, -1, 41, 262, 263, 264, 265, 46, 37, 38, -1, 270, 41, 42, 43, 44, 45, -1, 47, -1, 59, 60, -1, 62, 63, -1, 0, -1, -1, 58, -1, 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, 58, 270, 60, -1, 62, 63, -1, -1, 93, 94, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 58, 59, -1, -1, -1, 63, -1, 93, 94, 37, 38, 124, -1, 41, 42, 43, 44, 45, -1, 47, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, 58, -1, 60, -1, 62, 63, 37, 38, 124, -1, -1, 42, 43, 44, 45, -1, 47, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, 60, -1, 62, 63, -1, -1, 93, 94, 125, -1, -1, 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, 124, 60, -1, 62, 63, 37, 38, -1, 94, 41, 42, 43, 44, 45, -1, 47, 37, 38, -1, -1, -1, 42, 43, 44, 45, -1, 47, 124, 60, -1, 62, 63, -1, -1, -1, 94, -1, -1, 124, 60, -1, 62, 63, 262, 263, 264, 265, 41, -1, -1, 44, 270, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 94, -1, 58, 124, -1, -1, -1, 63, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, 124, -1, 41, 41, -1, 44, 44, 93, 37, 38, -1, 124, 41, 42, 43, 44, 45, -1, 47, 58, 58, -1, -1, -1, 63, 63, -1, -1, -1, -1, -1, 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, 262, 263, 264, 265, 266, 267, 268, 269, 93, 93, -1, -1, 60, -1, 62, 63, 0, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 44, -1, 46, 262, 263, 264, 265, 266, 267, 268, 269, 94, -1, -1, 124, 59, 60, -1, 62, 63, -1, -1, 41, 38, -1, 44, 41, -1, -1, 44, 262, 263, 264, 265, 266, 267, 268, 269, -1, 58, 59, 124, -1, 58, 63, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 37, 38, 93, 94, -1, 42, 43, 44, 45, -1, 47, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, 60, -1, 62, 63, -1, -1, -1, 125, -1, -1, 124, 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, 60, -1, 62, 63, 37, 38, -1, 94, 41, 42, 43, 44, 45, -1, 47, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, 124, 60, -1, 62, 63, -1, -1, -1, 94, -1, -1, 124, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, 94, 37, 38, 124, -1, 41, 42, 43, 44, 45, -1, 47, 60, 41, 62, 63, -1, -1, 46, -1, 262, 263, 264, 265, 60, -1, 62, 63, 270, -1, 124, 59, 60, -1, 62, 63, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, 94, 47, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 94, -1, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 124, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, 94, -1, 60, -1, 62, 63, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 0, -1, 124, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, 41, -1, -1, 44, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, 58, 59, -1, 37, 38, 63, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, 63, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 262, 263, 264, 265, -1, -1, 94, -1, 270, -1, -1, -1, -1, 125, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 124, -1, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 94, 60, -1, 62, 63, 46, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, 60, 124, 62, 63, 37, 38, 94, -1, 41, 42, 43, 44, 45, -1, 47, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, 60, -1, 62, 63, -1, -1, -1, 94, -1, 124, -1, 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, 125, -1, -1, -1, -1, -1, 94, -1, -1, 124, 60, -1, 62, 63, -1, -1, -1, 94, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, 94, 37, 38, 124, -1, 41, 42, 43, 44, 45, -1, 47, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, 60, -1, 62, 63, -1, -1, 124, -1, -1, -1, -1, 60, -1, 62, 63, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 37, -1, -1, -1, -1, 42, 43, -1, 45, 94, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, 60, -1, 62, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, 262, 263, 264, 265, 41, -1, 124, -1, 270, 46, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 94, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 94, 37, 38, -1, -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, -1, 37, 38, -1, -1, 124, 42, 43, 44, 45, 60, 47, 62, 63, -1, -1, 124, 264, 265, 266, 267, -1, -1, -1, 60, -1, 62, 63, 37, 38, -1, -1, -1, 42, 43, 44, 45, -1, 47, -1, 37, 38, -1, -1, 94, 42, 43, 44, 45, 58, 47, 60, -1, 62, 63, -1, -1, 93, 94, 262, 263, 264, 265, 60, -1, 62, 63, 270, -1, -1, -1, -1, -1, -1, 124, -1, 37, 38, -1, -1, 41, 42, 43, 44, 45, 94, 47, -1, 124, -1, -1, 44, -1, 46, -1, -1, 93, 94, -1, 60, -1, 62, 63, -1, -1, -1, 59, 60, -1, 62, 63, 37, 38, -1, -1, 124, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, 94, 60, -1, 62, 63, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 124, 37, 38, -1, -1, 94, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 60, -1, 62, 63, 42, 43, -1, 45, -1, 47, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, 62, 262, 263, 264, 265, 266, 267, 268, 269, -1, 94, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, 44, 45, -1, 47, -1, -1, 124, -1, 262, 263, 264, 265, 266, 267, 268, 269, 60, -1, 62, 63, 262, 263, 264, 265, 266, 267, 268, 269, 37, 38, -1, -1, -1, 42, 43, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, 60, -1, 62, 63, -1, 262, 263, 264, 265, 266, 267, 268, 269, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, 37, 38, 124, -1, 41, 42, 43, 94, 45, -1, 47, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, 60, -1, 62, 63, -1, 37, 38, -1, -1, 41, 42, 43, -1, 45, 124, 47, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, -1, 60, -1, 62, 63, -1, -1, 94, -1, -1, -1, -1, 60, -1, 62, 63, 262, 263, 264, 265, 266, 267, 268, 269, 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, 47, 94, -1, 124, 262, 263, 264, 265, 266, 267, -1, -1, 94, 60, -1, 62, 63, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, 37, 38, 124, -1, -1, 42, 43, -1, 45, -1, 47, -1, 60, 124, 62, 63, -1, -1, 94, -1, -1, -1, -1, 60, -1, 62, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 38, -1, -1, 41, -1, 43, 44, 45, -1, -1, 94, -1, 124, -1, -1, -1, -1, -1, -1, -1, 58, 94, 60, -1, 62, 63, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, 38, -1, 124, 41, -1, 43, 44, 45, 38, -1, -1, 41, -1, 124, 44, -1, -1, 93, 94, -1, 58, -1, 60, -1, 62, 63, -1, -1, 58, -1, 60, -1, 62, 63, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, 124, -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, 93, 94, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, 124, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, -1, -1, -1, 37, 38, -1, -1, -1, 42, 43, -1, 45, -1, 47, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 60, -1, 62, 262, 263, 264, 265, 266, 267, 268, 269, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, 60, 94, 62, 63, -1, 262, 263, 264, 265, 266, 267, 268, 269, -1, -1, 38, -1, -1, 41, -1, -1, 44, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, 93, 94, 58, -1, 60, -1, 62, 63, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 262, 263, 264, 265, 266, 267, 268, 269, 38, -1, -1, 41, -1, 124, 44, -1, -1, -1, 38, 93, 94, 41, -1, -1, 44, -1, -1, -1, 58, -1, 60, 38, 62, 63, 41, -1, -1, 44, 58, -1, 60, 38, 62, 63, 41, -1, -1, 44, -1, -1, 124, 58, 37, 38, -1, -1, 63, 42, 43, -1, 45, 58, 47, 93, 94, -1, 63, -1, -1, -1, -1, -1, -1, 93, 94, 60, -1, 62, -1, -1, -1, -1, -1, 37, 38, -1, 93, 94, 42, 43, -1, 45, -1, 47, 124, -1, 93, 94, -1, -1, -1, -1, -1, -1, 124, -1, 60, 41, 62, 94, -1, -1, 46, -1, -1, -1, -1, 124, 262, 263, 264, 265, 266, 267, 268, 59, 60, 124, 62, 63, -1, 46, -1, -1, -1, -1, -1, -1, -1, 124, -1, 41, -1, 58, 59, 60, 46, 62, 63, -1, 41, 262, 263, 264, 265, 46, -1, 268, 269, 59, 60, 41, 62, 63, -1, -1, 46, -1, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, 59, 60, 41, 62, 63, -1, -1, 46, -1, 262, 263, 264, 265, 41, -1, 268, 269, -1, 46, -1, 59, 60, -1, 62, 63, 44, -1, 46, -1, -1, -1, 59, 60, -1, 62, 63, -1, -1, -1, -1, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, 46, 268, 269, -1, -1, 262, 263, 264, 265, -1, -1, 268, 269, 59, 60, -1, 62, 63, 262, 263, -1, -1, -1, -1, 268, 269, -1, -1, 262, 263, -1, 44, -1, 46, 268, 269, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, 59, 60, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, 266, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, 265, -1, -1, -1, -1, 270, }; #define YYFINAL 26 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 346 #if YYDEBUG char *parsername[] = { "end-of-file",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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,"NUMBER", "STRING","SYMBOL","FIELD","VAR","EQ","NEQ","LE","GE","SHR","SHL","AND","OR", "IN","PLA","MIA","MUA","MOA","DVA","ANA","ORA","INC","DEC_","APP","AVG","DEV", "AMIN","AMAX","SUM","QAVG","QDEV","QMIN_","QMAX_","QSUM","SAVG","SDEV","SMIN", "SMAX","SSUM","ABS","INT","BOUND","LEN","CHOP","TR","SUBSTR","SQRT","EXP","LOG", "LN","POW","RANDOM","SIN","COS","TAN","ASIN","ACOS","ATAN","ATAN2","DATE", "TIME","DURATION","EXPAND","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","LEAP", "JULIAN","SECTION_","DBASE_","FORM_","PREVFORM","SWITCH","THIS","LAST","DISP", "FOREACH","HOST","USER","UID","GID","SYSTEM","ACCESS","BEEP","ERROR","PRINTF", "UMINUS", }; char *parserrule[] = { "$accept : stmt", "stmt : string", "string : STRING", "string : '{' string '}'", "string : string ';' string", "string : string '.' string", "string : VAR", "string : VAR APP string", "string : VAR '=' string", "string : '(' number ')'", "string : string '?' string ':' string", "string : string '<' string", "string : string '>' string", "string : string EQ string", "string : string NEQ string", "string : string LE string", "string : string GE string", "string : string IN string", "string : FIELD", "string : FIELD '[' number ']'", "string : FIELD '=' string", "string : FIELD '[' number ']' '=' string", "string : SYSTEM '(' string ')'", "string : '$' SYMBOL", "string : CHOP '(' string ')'", "string : TR '(' string ',' string ')'", "string : SUBSTR '(' string ',' number ',' number ')'", "string : HOST", "string : USER", "string : PREVFORM", "string : SECTION_", "string : SECTION_ '[' number ']'", "string : FORM_", "string : DBASE_", "string : SWITCH '(' string ',' string ')'", "string : FOREACH '(' string ')'", "string : FOREACH '(' string ',' string ')'", "string : TIME", "string : DATE", "string : TIME '(' number ')'", "string : DATE '(' number ')'", "string : DURATION '(' number ')'", "string : EXPAND '(' FIELD ')'", "string : EXPAND '(' FIELD '[' number ']' ')'", "string : PRINTF '(' args ')'", "string : BEEP", "string : ERROR '(' args ')'", "args : string", "args : args ',' string", "number : NUMBER", "number : '{' string '}'", "number : '(' number ')'", "number : FIELD", "number : FIELD '[' number ']'", "number : FIELD '=' number", "number : FIELD '[' number ']' '=' number", "number : VAR", "number : VAR '=' number", "number : VAR PLA number", "number : VAR MIA number", "number : VAR MUA number", "number : VAR DVA number", "number : VAR MOA number", "number : VAR ANA number", "number : VAR ORA number", "number : VAR INC", "number : VAR DEC_", "number : INC VAR", "number : DEC_ VAR", "number : '-' number", "number : '!' number", "number : '~' number", "number : number '&' number", "number : number '^' number", "number : number '|' number", "number : number SHL number", "number : number SHR number", "number : number '%' number", "number : number '+' number", "number : number '-' number", "number : number '*' number", "number : number '/' number", "number : number '<' number", "number : number '>' number", "number : number EQ number", "number : number NEQ number", "number : number LE number", "number : number GE number", "number : number AND number", "number : number OR number", "number : number '?' number ':' number", "number : number ',' number", "number : THIS", "number : LAST", "number : DISP", "number : AVG '(' FIELD ')'", "number : DEV '(' FIELD ')'", "number : AMIN '(' FIELD ')'", "number : AMAX '(' FIELD ')'", "number : SUM '(' FIELD ')'", "number : QAVG '(' FIELD ')'", "number : QDEV '(' FIELD ')'", "number : QMIN_ '(' FIELD ')'", "number : QMAX_ '(' FIELD ')'", "number : QSUM '(' FIELD ')'", "number : SAVG '(' FIELD ')'", "number : SDEV '(' FIELD ')'", "number : SMIN '(' FIELD ')'", "number : SMAX '(' FIELD ')'", "number : SSUM '(' FIELD ')'", "number : ABS '(' number ')'", "number : INT '(' number ')'", "number : BOUND '(' number ',' number ',' number ')'", "number : LEN '(' string ')'", "number : SQRT '(' number ')'", "number : EXP '(' number ')'", "number : LOG '(' number ')'", "number : LN '(' number ')'", "number : POW '(' number ',' number ')'", "number : RANDOM", "number : SIN '(' number ')'", "number : COS '(' number ')'", "number : TAN '(' number ')'", "number : ASIN '(' number ')'", "number : ACOS '(' number ')'", "number : ATAN '(' number ')'", "number : ATAN2 '(' number ',' number ')'", "number : SECTION_", "number : SECTION_ '[' number ']'", "number : DATE", "number : DATE '(' string ')'", "number : TIME '(' string ')'", "number : DURATION '(' string ')'", "number : YEAR '(' number ')'", "number : MONTH '(' number ')'", "number : DAY '(' number ')'", "number : HOUR '(' number ')'", "number : MINUTE '(' number ')'", "number : SECOND '(' number ')'", "number : JULIAN '(' number ')'", "number : LEAP '(' number ')'", "number : UID", "number : GID", "number : ACCESS '(' string ',' number ')'", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 500 #define YYMAXDEPTH 500 #endif #endif int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short yyss[YYSTACKSIZE]; YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse(void) { register int yym, yyn, yystate; #if YYDEBUG register char *yys; extern char *getenv(); if (yys = getenv("YYDEBUG")) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = (-1); yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; yychar = (-1); if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; #ifdef lint goto yynewerror; #endif yynewerror: yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yyssp); #endif if (yyssp <= yyss) goto yyabort; --yyssp; --yyvsp; } } } else { if (yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = (-1); goto yyloop; } yyreduce: #if YYDEBUG if (yydebug) printf("%sdebug: state %d, reducing by rule %d (%s)\n", YYPREFIX, yystate, yyn, yyrule[yyn]); #endif yym = yylen[yyn]; yyval = yyvsp[1-yym]; switch (yyn) { case 1: #line 71 "parser.y" { yyret = yyvsp[0].sval; } break; case 2: #line 74 "parser.y" { yyval.sval = yyvsp[0].sval; } break; case 3: #line 75 "parser.y" { yyval.sval = yyvsp[-1].sval; } break; case 4: #line 76 "parser.y" { yyval.sval = yyvsp[0].sval; f_free(yyvsp[-2].sval); } break; case 5: #line 77 "parser.y" { char *s=yyvsp[-2].sval, *t=yyvsp[0].sval, *r=new char[f_len(s)+f_len(t)+1]; *r=0; if (s) strcpy(r, s); f_free(s); if (t) strcat(r, t); f_free(t); yyval.sval = r; } break; case 6: #line 82 "parser.y" { yyval.sval = f_getsvar(yyvsp[0].ival); } break; case 7: #line 83 "parser.y" { int v=yyvsp[-2].ival; char *s=f_getsvar(v), *t=yyvsp[0].sval, *r=new char[f_len(s)+f_len(t)+1]; *r=0; if (s) strcpy(r, s); f_free(s); if (t) strcat(r, t); f_free(t); yyval.sval = f_setsvar(v, r); } break; case 8: #line 89 "parser.y" { yyval.sval = f_setsvar(yyvsp[-2].ival, yyvsp[0].sval);} break; case 9: #line 90 "parser.y" { yyval.sval = f_str(yyvsp[-1].dval); } break; case 10: #line 91 "parser.y" { yyval.sval = f_num(yyvsp[-4].sval) ? yyvsp[-2].sval : yyvsp[0].sval; } break; case 11: #line 92 "parser.y" { yyval.sval = f_str((double) (f_cmp(yyvsp[-2].sval, yyvsp[0].sval) < 0));} break; case 12: #line 94 "parser.y" { yyval.sval = f_str((double) (f_cmp(yyvsp[-2].sval, yyvsp[0].sval) > 0));} break; case 13: #line 96 "parser.y" { yyval.sval = f_str((double) (f_cmp(yyvsp[-2].sval, yyvsp[0].sval) == 0));} break; case 14: #line 98 "parser.y" { yyval.sval = f_str((double) (f_cmp(yyvsp[-2].sval, yyvsp[0].sval) != 0));} break; case 15: #line 100 "parser.y" { yyval.sval = f_str((double) (f_cmp(yyvsp[-2].sval, yyvsp[0].sval) <= 0));} break; case 16: #line 102 "parser.y" { yyval.sval = f_str((double) (f_cmp(yyvsp[-2].sval, yyvsp[0].sval) >= 0));} break; case 17: #line 104 "parser.y" { yyval.sval = f_str((double)f_instr(yyvsp[-2].sval, yyvsp[0].sval));} break; case 18: #line 105 "parser.y" { yyval.sval = f_field(yyvsp[0].ival,database->getrow());} break; case 19: #line 106 "parser.y" { yyval.sval = f_field(yyvsp[-3].ival, (int)yyvsp[-1].dval); } break; case 20: #line 107 "parser.y" { yyval.sval = f_assign(yyvsp[-2].ival, database->getrow(), yyvsp[0].sval); assigned = 1; } break; case 21: #line 111 "parser.y" { yyval.sval = f_assign(yyvsp[-5].ival, (int)yyvsp[-3].dval, yyvsp[0].sval); assigned = 1; } break; case 22: #line 113 "parser.y" { yyval.sval = f_system(yyvsp[-1].sval); } break; case 23: #line 114 "parser.y" { yyval.sval = copystring(getenv(yyvsp[0].sval)); } break; case 24: #line 115 "parser.y" { char *s=yyvsp[-1].sval; if (s) { int n=strlen(s); if (n && s[n-1]=='\n') s[n-1] = 0; } yyval.sval = s; } break; case 25: #line 118 "parser.y" { yyval.sval = f_tr(yyvsp[-3].sval, yyvsp[-1].sval); } break; case 26: #line 120 "parser.y" { yyval.sval = f_substr(yyvsp[-5].sval, (int)yyvsp[-3].dval, (int)yyvsp[-1].dval);} break; case 27: #line 121 "parser.y" { char s[80]; if (gethostname(s, 80)) *s=0; s[80-1]=0; yyval.sval = copystring(s);} break; case 28: #line 123 "parser.y" { yyval.sval = copystring(getenv("USER")); } break; case 29: #line 124 "parser.y" { yyval.sval = copystring(prev_form); } break; case 30: #line 125 "parser.y" { yyval.sval = !database ? 0 : copystring( sections->at(sections->curr())->name);} break; case 31: #line 127 "parser.y" { yyval.sval = copystring(sections->at( f_section((int)yyvsp[-1].dval))->name);} break; case 32: #line 129 "parser.y" { yyval.sval = form && form->name ? copystring(resolve_tilde (form->memindex, form->name, "gf")):0;} break; case 33: #line 133 "parser.y" { yyval.sval = form && form->dbase ? copystring(resolve_tilde (form->memindex, form->dbase, form->proc ? 0 : "db")) :0;} break; case 34: #line 140 "parser.y" { char *name = yyvsp[-3].sval, *expr = yyvsp[-1].sval; f_free(switch_name); f_free(switch_expr); switch_name = copystring(name); switch_expr = copystring(expr); f_free(name); f_free(expr); yyval.sval = 0; } break; case 35: #line 146 "parser.y" { f_foreach(0, yyvsp[-1].sval); yyval.sval = 0; } break; case 36: #line 148 "parser.y" { f_foreach(yyvsp[-3].sval, yyvsp[-1].sval); yyval.sval = 0; } break; case 37: #line 149 "parser.y" { yyval.sval = copystring(mktimestring (time(0), FALSE)); } break; case 38: #line 151 "parser.y" { yyval.sval = copystring(mkdatestring (time(0))); } break; case 39: #line 153 "parser.y" { yyval.sval = copystring(mktimestring ((time_t)yyvsp[-1].dval, FALSE)); } break; case 40: #line 155 "parser.y" { yyval.sval = copystring(mkdatestring ((time_t)yyvsp[-1].dval)); } break; case 41: #line 157 "parser.y" { yyval.sval = copystring(mktimestring ((time_t)yyvsp[-1].dval, TRUE)); } break; case 42: #line 159 "parser.y" { yyval.sval = f_expand(yyvsp[-1].ival, database->getrow()); } break; case 43: #line 162 "parser.y" { yyval.sval = f_expand(yyvsp[-4].ival, (int)yyvsp[-2].dval); } break; case 44: #line 163 "parser.y" { yyval.sval = f_printf(yyvsp[-1].aval); } break; case 45: #line 164 "parser.y" { /*<<< XBell(display, 0);*/ yyval.sval = 0; } break; case 46: #line 165 "parser.y" { char *s = f_printf(yyvsp[-1].aval); QMessageBox::warning(0, "KGrok", s); f_free(s); yyval.sval = 0; } break; case 47: #line 170 "parser.y" { yyval.aval = f_addarg(0, yyvsp[0].sval); } break; case 48: #line 171 "parser.y" { yyval.aval = f_addarg(yyvsp[-2].aval, yyvsp[0].sval); } break; case 49: #line 174 "parser.y" { yyval.dval = yyvsp[0].dval; } break; case 50: #line 175 "parser.y" { yyval.dval = f_num(yyvsp[-1].sval); } break; case 51: #line 176 "parser.y" { yyval.dval = yyvsp[-1].dval; } break; case 52: #line 177 "parser.y" { yyval.dval = f_num(f_field(yyvsp[0].ival, database->getrow())); } break; case 53: #line 179 "parser.y" { yyval.dval = f_num(f_field(yyvsp[-3].ival, (int)yyvsp[-1].dval)); } break; case 54: #line 180 "parser.y" { f_free(f_assign(yyvsp[-2].ival, database-> getrow(), f_str(yyval.dval = yyvsp[0].dval))); assigned = 1; } break; case 55: #line 184 "parser.y" { f_free(f_assign(yyvsp[-5].ival, (int)yyvsp[-3].dval, f_str(yyval.dval = yyvsp[0].dval))); assigned = 1; } break; case 56: #line 186 "parser.y" { yyval.dval = f_getnvar(yyvsp[0].ival); } break; case 57: #line 187 "parser.y" { yyval.dval = f_setnvar(yyvsp[-2].ival, yyvsp[0].dval); } break; case 58: #line 188 "parser.y" { int v = yyvsp[-2].ival; yyval.dval = f_setnvar(v, f_getnvar(v)+yyvsp[0].dval); } break; case 59: #line 190 "parser.y" { int v = yyvsp[-2].ival; yyval.dval = f_setnvar(v, f_getnvar(v)-yyvsp[0].dval); } break; case 60: #line 192 "parser.y" { int v = yyvsp[-2].ival; yyval.dval = f_setnvar(v, f_getnvar(v)*yyvsp[0].dval); } break; case 61: #line 194 "parser.y" { int v = yyvsp[-2].ival; double d=yyvsp[0].dval; if(d==0)d=1; yyval.dval = f_setnvar(v, f_getnvar(v)/d); } break; case 62: #line 196 "parser.y" { int v = yyvsp[-2].ival; double d=yyvsp[0].dval; if(d==0)d=1; yyval.dval = f_setnvar(v, (double)((int) f_getnvar(v)%(int)d));} break; case 63: #line 199 "parser.y" { int v = yyvsp[-2].ival; yyval.dval = f_setnvar(v, (double)((int)yyvsp[0].dval & (int)f_getnvar(v)));} break; case 64: #line 202 "parser.y" { int v = yyvsp[-2].ival; yyval.dval = f_setnvar(v, (double)((int)yyvsp[0].dval | (int)f_getnvar(v)));} break; case 65: #line 205 "parser.y" { int v = yyvsp[-1].ival; yyval.dval = f_setnvar(v, f_getnvar(v)+1)-1;} break; case 66: #line 207 "parser.y" { int v = yyvsp[-1].ival; yyval.dval = f_setnvar(v, f_getnvar(v)-1)+1;} break; case 67: #line 209 "parser.y" { int v = yyvsp[0].ival; yyval.dval = f_setnvar(v, f_getnvar(v)+1); } break; case 68: #line 211 "parser.y" { int v = yyvsp[0].ival; yyval.dval = f_setnvar(v, f_getnvar(v)-1); } break; case 69: #line 213 "parser.y" { yyval.dval = - yyvsp[0].dval; } break; case 70: #line 214 "parser.y" { yyval.dval = ! yyvsp[0].dval; } break; case 71: #line 215 "parser.y" { yyval.dval = ~ (int)yyvsp[0].dval; } break; case 72: #line 216 "parser.y" { yyval.dval = (int)yyvsp[-2].dval & (int)yyvsp[0].dval; } break; case 73: #line 217 "parser.y" { yyval.dval = (int)yyvsp[-2].dval ^ (int)yyvsp[0].dval; } break; case 74: #line 218 "parser.y" { yyval.dval = (int)yyvsp[-2].dval | (int)yyvsp[0].dval; } break; case 75: #line 219 "parser.y" { yyval.dval = (int)yyvsp[-2].dval << (int)yyvsp[0].dval; } break; case 76: #line 220 "parser.y" { yyval.dval = (int)yyvsp[-2].dval >> (int)yyvsp[0].dval; } break; case 77: #line 221 "parser.y" { int i=(int)yyvsp[0].dval; if (i==0) i=1; yyval.dval = (int)yyvsp[-2].dval % i; } break; case 78: #line 223 "parser.y" { yyval.dval = yyvsp[-2].dval + yyvsp[0].dval; } break; case 79: #line 224 "parser.y" { yyval.dval = yyvsp[-2].dval - yyvsp[0].dval; } break; case 80: #line 225 "parser.y" { yyval.dval = yyvsp[-2].dval * yyvsp[0].dval; } break; case 81: #line 226 "parser.y" { double d=yyvsp[0].dval; if (d==0) d=1; yyval.dval = yyvsp[-2].dval / d; } break; case 82: #line 228 "parser.y" { yyval.dval = yyvsp[-2].dval < yyvsp[0].dval; } break; case 83: #line 229 "parser.y" { yyval.dval = yyvsp[-2].dval > yyvsp[0].dval; } break; case 84: #line 230 "parser.y" { yyval.dval = yyvsp[-2].dval == yyvsp[0].dval; } break; case 85: #line 231 "parser.y" { yyval.dval = yyvsp[-2].dval != yyvsp[0].dval; } break; case 86: #line 232 "parser.y" { yyval.dval = yyvsp[-2].dval <= yyvsp[0].dval; } break; case 87: #line 233 "parser.y" { yyval.dval = yyvsp[-2].dval >= yyvsp[0].dval; } break; case 88: #line 234 "parser.y" { yyval.dval = yyvsp[-2].dval && yyvsp[0].dval; } break; case 89: #line 235 "parser.y" { yyval.dval = yyvsp[-2].dval || yyvsp[0].dval; } break; case 90: #line 236 "parser.y" { yyval.dval = yyvsp[-4].dval ? yyvsp[-2].dval : yyvsp[0].dval; } break; case 91: #line 237 "parser.y" { yyval.dval = yyvsp[0].dval; } break; case 92: #line 238 "parser.y" { yyval.dval = database->getrow() > 0 ? database->getrow() : 0; } break; case 93: #line 240 "parser.y" { yyval.dval = database ? database->rowcount() - 1 : -1; } break; case 94: #line 242 "parser.y" { /*<<<$$ = database && card->disprow >= 0 && card->disprow < database->rowcount() ? card->disprow : -1; <<<*/ } break; case 95: #line 246 "parser.y" { yyval.dval = f_avg(yyvsp[-1].ival); } break; case 96: #line 247 "parser.y" { yyval.dval = f_dev(yyvsp[-1].ival); } break; case 97: #line 248 "parser.y" { yyval.dval = f_min(yyvsp[-1].ival); } break; case 98: #line 249 "parser.y" { yyval.dval = f_max(yyvsp[-1].ival); } break; case 99: #line 250 "parser.y" { yyval.dval = f_sum(yyvsp[-1].ival); } break; case 100: #line 251 "parser.y" { yyval.dval = f_qavg(yyvsp[-1].ival); } break; case 101: #line 252 "parser.y" { yyval.dval = f_qdev(yyvsp[-1].ival); } break; case 102: #line 253 "parser.y" { yyval.dval = f_qmin(yyvsp[-1].ival); } break; case 103: #line 254 "parser.y" { yyval.dval = f_qmax(yyvsp[-1].ival); } break; case 104: #line 255 "parser.y" { yyval.dval = f_qsum(yyvsp[-1].ival); } break; case 105: #line 256 "parser.y" { yyval.dval = f_savg(yyvsp[-1].ival); } break; case 106: #line 257 "parser.y" { yyval.dval = f_sdev(yyvsp[-1].ival); } break; case 107: #line 258 "parser.y" { yyval.dval = f_smin(yyvsp[-1].ival); } break; case 108: #line 259 "parser.y" { yyval.dval = f_smax(yyvsp[-1].ival); } break; case 109: #line 260 "parser.y" { yyval.dval = f_ssum(yyvsp[-1].ival); } break; case 110: #line 261 "parser.y" { yyval.dval = fabs(yyvsp[-1].dval); } break; case 111: #line 262 "parser.y" { yyval.dval = (int)(yyvsp[-1].dval); } break; case 112: #line 264 "parser.y" { register double a=yyvsp[-5].dval, b=yyvsp[-3].dval, c=yyvsp[-1].dval; yyval.dval = a < b ? b : a > c ? c : a; } break; case 113: #line 266 "parser.y" { char *a=yyvsp[-1].sval; yyval.dval = a ? f_len(a) : 0; f_free(a); } break; case 114: #line 268 "parser.y" { yyval.dval = sqrt(fabs(yyvsp[-1].dval)); } break; case 115: #line 269 "parser.y" { yyval.dval = exp(yyvsp[-1].dval); } break; case 116: #line 270 "parser.y" { double a=yyvsp[-1].dval; yyval.dval = a<=0 ? 0:log10(a);} break; case 117: #line 271 "parser.y" { double a=yyvsp[-1].dval; yyval.dval = a<=0 ? 0:log(a); } break; case 118: #line 273 "parser.y" { yyval.dval = pow(yyvsp[-3].dval, yyvsp[-1].dval); } break; case 119: #line 274 "parser.y" { yyval.dval = drand48(); } break; case 120: #line 275 "parser.y" { yyval.dval = sin(yyvsp[-1].dval); } break; case 121: #line 276 "parser.y" { yyval.dval = cos(yyvsp[-1].dval); } break; case 122: #line 277 "parser.y" { yyval.dval = tan(yyvsp[-1].dval); } break; case 123: #line 278 "parser.y" { yyval.dval = asin(yyvsp[-1].dval); } break; case 124: #line 279 "parser.y" { yyval.dval = acos(yyvsp[-1].dval); } break; case 125: #line 280 "parser.y" { yyval.dval = atan(yyvsp[-1].dval); } break; case 126: #line 282 "parser.y" { yyval.dval = atan2(yyvsp[-3].dval, yyvsp[-1].dval); } break; case 127: #line 283 "parser.y" { yyval.dval = database ? sections->curr() :0;} break; case 128: #line 284 "parser.y" { yyval.dval = f_section((int)yyvsp[-1].dval); } break; case 129: #line 285 "parser.y" { yyval.dval = time(0); } break; case 130: #line 286 "parser.y" { yyval.dval = parse_datetimestring(yyvsp[-1].sval); } break; case 131: #line 287 "parser.y" { yyval.dval = parse_timestring(yyvsp[-1].sval, FALSE); } break; case 132: #line 288 "parser.y" { yyval.dval = parse_timestring(yyvsp[-1].sval, TRUE); } break; case 133: #line 289 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_year; } break; case 134: #line 291 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_mon+1; } break; case 135: #line 293 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_mday; } break; case 136: #line 295 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_hour; } break; case 137: #line 297 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_min; } break; case 138: #line 299 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_sec; } break; case 139: #line 301 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; yyval.dval = localtime(&t)->tm_yday; } break; case 140: #line 303 "parser.y" { const time_t t = (time_t)yyvsp[-1].dval; int y=localtime(&t)->tm_year; yyval.dval = !(y%4) ^ !(y%100) ^ !(y%400); } break; case 141: #line 306 "parser.y" { yyval.dval = getuid(); } break; case 142: #line 307 "parser.y" { yyval.dval = getgid(); } break; case 143: #line 309 "parser.y" { char *a = yyvsp[-3].sval; yyval.dval = a ? access(a, (int)yyvsp[-1].dval) : 0; f_free(a); } break; #line 1993 "y.tab.c" } yyssp -= yym; yystate = *yyssp; yyvsp -= yym; yym = yylhs[yyn]; if (yystate == 0 && yym == 0) { #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state 0 to\ state %d\n", YYPREFIX, YYFINAL); #endif yystate = YYFINAL; *++yyssp = YYFINAL; *++yyvsp = yyval; if (yychar < 0) { if ((yychar = yylex()) < 0) yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == 0) goto yyaccept; goto yyloop; } if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yystate) yystate = yytable[yyn]; else yystate = yydgoto[yym]; #if YYDEBUG if (yydebug) printf("%sdebug: after reduction, shifting from state %d \ to state %d\n", YYPREFIX, *yyssp, yystate); #endif if (yyssp >= yyss + yystacksize - 1) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }