00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #define YYBISON 1
00038
00039
00040 #define YYSKELETON_NAME "yacc.c"
00041
00042
00043 #define YYPURE 1
00044
00045
00046 #define YYLSP_NEEDED 1
00047
00048
00049
00050 #define yyparse ws_yy_parse
00051 #define yylex ws_yy_lex
00052 #define yyerror ws_yy_error
00053 #define yylval ws_yy_lval
00054 #define yychar ws_yy_char
00055 #define yydebug ws_yy_debug
00056 #define yynerrs ws_yy_nerrs
00057 #define yylloc ws_yy_lloc
00058
00059
00060 #ifndef YYTOKENTYPE
00061 # define YYTOKENTYPE
00062
00063
00064 enum yytokentype {
00065 tINVALID = 258,
00066 tTRUE = 259,
00067 tFALSE = 260,
00068 tINTEGER = 261,
00069 tFLOAT = 262,
00070 tSTRING = 263,
00071 tIDENTIFIER = 264,
00072 tACCESS = 265,
00073 tAGENT = 266,
00074 tBREAK = 267,
00075 tCONTINUE = 268,
00076 tIDIV = 269,
00077 tIDIVA = 270,
00078 tDOMAIN = 271,
00079 tELSE = 272,
00080 tEQUIV = 273,
00081 tEXTERN = 274,
00082 tFOR = 275,
00083 tFUNCTION = 276,
00084 tHEADER = 277,
00085 tHTTP = 278,
00086 tIF = 279,
00087 tISVALID = 280,
00088 tMETA = 281,
00089 tNAME = 282,
00090 tPATH = 283,
00091 tRETURN = 284,
00092 tTYPEOF = 285,
00093 tUSE = 286,
00094 tUSER = 287,
00095 tVAR = 288,
00096 tWHILE = 289,
00097 tURL = 290,
00098 tDELETE = 291,
00099 tIN = 292,
00100 tLIB = 293,
00101 tNEW = 294,
00102 tNULL = 295,
00103 tTHIS = 296,
00104 tVOID = 297,
00105 tWITH = 298,
00106 tCASE = 299,
00107 tCATCH = 300,
00108 tCLASS = 301,
00109 tCONST = 302,
00110 tDEBUGGER = 303,
00111 tDEFAULT = 304,
00112 tDO = 305,
00113 tENUM = 306,
00114 tEXPORT = 307,
00115 tEXTENDS = 308,
00116 tFINALLY = 309,
00117 tIMPORT = 310,
00118 tPRIVATE = 311,
00119 tPUBLIC = 312,
00120 tSIZEOF = 313,
00121 tSTRUCT = 314,
00122 tSUPER = 315,
00123 tSWITCH = 316,
00124 tTHROW = 317,
00125 tTRY = 318,
00126 tEQ = 319,
00127 tLE = 320,
00128 tGE = 321,
00129 tNE = 322,
00130 tAND = 323,
00131 tOR = 324,
00132 tPLUSPLUS = 325,
00133 tMINUSMINUS = 326,
00134 tLSHIFT = 327,
00135 tRSSHIFT = 328,
00136 tRSZSHIFT = 329,
00137 tADDA = 330,
00138 tSUBA = 331,
00139 tMULA = 332,
00140 tDIVA = 333,
00141 tANDA = 334,
00142 tORA = 335,
00143 tXORA = 336,
00144 tREMA = 337,
00145 tLSHIFTA = 338,
00146 tRSSHIFTA = 339,
00147 tRSZSHIFTA = 340
00148 };
00149 #endif
00150 #define tINVALID 258
00151 #define tTRUE 259
00152 #define tFALSE 260
00153 #define tINTEGER 261
00154 #define tFLOAT 262
00155 #define tSTRING 263
00156 #define tIDENTIFIER 264
00157 #define tACCESS 265
00158 #define tAGENT 266
00159 #define tBREAK 267
00160 #define tCONTINUE 268
00161 #define tIDIV 269
00162 #define tIDIVA 270
00163 #define tDOMAIN 271
00164 #define tELSE 272
00165 #define tEQUIV 273
00166 #define tEXTERN 274
00167 #define tFOR 275
00168 #define tFUNCTION 276
00169 #define tHEADER 277
00170 #define tHTTP 278
00171 #define tIF 279
00172 #define tISVALID 280
00173 #define tMETA 281
00174 #define tNAME 282
00175 #define tPATH 283
00176 #define tRETURN 284
00177 #define tTYPEOF 285
00178 #define tUSE 286
00179 #define tUSER 287
00180 #define tVAR 288
00181 #define tWHILE 289
00182 #define tURL 290
00183 #define tDELETE 291
00184 #define tIN 292
00185 #define tLIB 293
00186 #define tNEW 294
00187 #define tNULL 295
00188 #define tTHIS 296
00189 #define tVOID 297
00190 #define tWITH 298
00191 #define tCASE 299
00192 #define tCATCH 300
00193 #define tCLASS 301
00194 #define tCONST 302
00195 #define tDEBUGGER 303
00196 #define tDEFAULT 304
00197 #define tDO 305
00198 #define tENUM 306
00199 #define tEXPORT 307
00200 #define tEXTENDS 308
00201 #define tFINALLY 309
00202 #define tIMPORT 310
00203 #define tPRIVATE 311
00204 #define tPUBLIC 312
00205 #define tSIZEOF 313
00206 #define tSTRUCT 314
00207 #define tSUPER 315
00208 #define tSWITCH 316
00209 #define tTHROW 317
00210 #define tTRY 318
00211 #define tEQ 319
00212 #define tLE 320
00213 #define tGE 321
00214 #define tNE 322
00215 #define tAND 323
00216 #define tOR 324
00217 #define tPLUSPLUS 325
00218 #define tMINUSMINUS 326
00219 #define tLSHIFT 327
00220 #define tRSSHIFT 328
00221 #define tRSZSHIFT 329
00222 #define tADDA 330
00223 #define tSUBA 331
00224 #define tMULA 332
00225 #define tDIVA 333
00226 #define tANDA 334
00227 #define tORA 335
00228 #define tXORA 336
00229 #define tREMA 337
00230 #define tLSHIFTA 338
00231 #define tRSSHIFTA 339
00232 #define tRSZSHIFTA 340
00233
00234
00235
00236
00237
00238 #line 1 "wmlscript/wsgram.y"
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253 #include "wmlscript/wsint.h"
00254
00255 #define YYPARSE_PARAM pctx
00256 #define YYLEX_PARAM pctx
00257
00258
00259
00260
00261 extern void yyerror(char *msg);
00262
00263 #if WS_DEBUG
00264
00265 WsCompilerPtr global_compiler = NULL;
00266 #endif
00267
00268
00269
00270
00271 #ifndef YYDEBUG
00272 # define YYDEBUG 0
00273 #endif
00274
00275
00276 #ifdef YYERROR_VERBOSE
00277 # undef YYERROR_VERBOSE
00278 # define YYERROR_VERBOSE 1
00279 #else
00280 # define YYERROR_VERBOSE 0
00281 #endif
00282
00283 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
00284 #line 34 "wmlscript/wsgram.y"
00285 typedef union YYSTYPE {
00286 WsUInt32 integer;
00287 WsFloat vfloat;
00288 char *identifier;
00289 WsUtf8String *string;
00290
00291 WsBool boolean;
00292 WsList *list;
00293 WsFormalParm *parm;
00294 WsVarDec *vardec;
00295
00296 WsPragmaMetaBody *meta_body;
00297
00298 WsStatement *stmt;
00299 WsExpression *expr;
00300 } YYSTYPE;
00301
00302 #line 302 "y.tab.c"
00303 # define yystype YYSTYPE
00304 # define YYSTYPE_IS_DECLARED 1
00305 # define YYSTYPE_IS_TRIVIAL 1
00306 #endif
00307
00308 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
00309 typedef struct YYLTYPE
00310 {
00311 int first_line;
00312 int first_column;
00313 int last_line;
00314 int last_column;
00315 } YYLTYPE;
00316 # define yyltype YYLTYPE
00317 # define YYLTYPE_IS_DECLARED 1
00318 # define YYLTYPE_IS_TRIVIAL 1
00319 #endif
00320
00321
00322
00323
00324
00325
00326 #line 326 "y.tab.c"
00327
00328 #if ! defined (yyoverflow) || YYERROR_VERBOSE
00329
00330
00331
00332 # if YYSTACK_USE_ALLOCA
00333 # define YYSTACK_ALLOC alloca
00334 # else
00335 # ifndef YYSTACK_USE_ALLOCA
00336 # if defined (alloca) || defined (_ALLOCA_H)
00337 # define YYSTACK_ALLOC alloca
00338 # else
00339 # ifdef __GNUC__
00340 # define YYSTACK_ALLOC __builtin_alloca
00341 # endif
00342 # endif
00343 # endif
00344 # endif
00345
00346 # ifdef YYSTACK_ALLOC
00347
00348 # define YYSTACK_FREE(Ptr) do { ; } while (0)
00349 # else
00350 # if defined (__STDC__) || defined (__cplusplus)
00351 # include <stdlib.h>
00352 # define YYSIZE_T size_t
00353 # endif
00354 # define YYSTACK_ALLOC malloc
00355 # define YYSTACK_FREE free
00356 # endif
00357 #endif
00358
00359
00360 #if (! defined (yyoverflow) \
00361 && (! defined (__cplusplus) \
00362 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00363
00364
00365 union yyalloc
00366 {
00367 short yyss;
00368 YYSTYPE yyvs;
00369 YYLTYPE yyls;
00370 };
00371
00372
00373 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00374
00375
00376
00377 # define YYSTACK_BYTES(N) \
00378 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00379 + 2 * YYSTACK_GAP_MAXIMUM)
00380
00381
00382
00383 # ifndef YYCOPY
00384 # if 1 < __GNUC__
00385 # define YYCOPY(To, From, Count) \
00386 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00387 # else
00388 # define YYCOPY(To, From, Count) \
00389 do \
00390 { \
00391 register YYSIZE_T yyi; \
00392 for (yyi = 0; yyi < (Count); yyi++) \
00393 (To)[yyi] = (From)[yyi]; \
00394 } \
00395 while (0)
00396 # endif
00397 # endif
00398
00399
00400
00401
00402
00403
00404 # define YYSTACK_RELOCATE(Stack) \
00405 do \
00406 { \
00407 YYSIZE_T yynewbytes; \
00408 YYCOPY (&yyptr->Stack, Stack, yysize); \
00409 Stack = &yyptr->Stack; \
00410 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00411 yyptr += yynewbytes / sizeof (*yyptr); \
00412 } \
00413 while (0)
00414
00415 #endif
00416
00417 #if defined (__STDC__) || defined (__cplusplus)
00418 typedef signed char yysigned_char;
00419 #else
00420 typedef short yysigned_char;
00421 #endif
00422
00423
00424 #define YYFINAL 17
00425
00426 #define YYLAST 448
00427
00428
00429 #define YYNTOKENS 109
00430
00431 #define YYNNTS 55
00432
00433 #define YYNRULES 146
00434
00435 #define YYNSTATES 257
00436
00437
00438 #define YYUNDEFTOK 2
00439 #define YYMAXUTOK 340
00440
00441 #define YYTRANSLATE(YYX) \
00442 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00443
00444
00445 static const unsigned char yytranslate[] =
00446 {
00447 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00450 2, 2, 2, 106, 2, 107, 2, 104, 97, 2,
00451 87, 88, 102, 100, 89, 101, 108, 103, 2, 2,
00452 2, 2, 2, 2, 2, 2, 2, 2, 94, 86,
00453 98, 92, 99, 93, 2, 2, 2, 2, 2, 2,
00454 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00455 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00456 2, 2, 2, 2, 96, 2, 2, 2, 2, 2,
00457 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00458 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00459 2, 2, 2, 90, 95, 91, 105, 2, 2, 2,
00460 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00462 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00463 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00464 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00465 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00466 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00467 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00468 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00469 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00472 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00473 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
00474 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
00475 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
00476 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
00477 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
00478 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
00479 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
00480 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
00481 85
00482 };
00483
00484 #if YYDEBUG
00485
00486
00487 static const unsigned short yyprhs[] =
00488 {
00489 0, 0, 3, 6, 8, 10, 12, 15, 19, 21,
00490 23, 25, 27, 31, 34, 37, 40, 45, 48, 50,
00491 52, 54, 57, 61, 65, 68, 72, 74, 76, 78,
00492 80, 83, 92, 93, 95, 96, 98, 99, 101, 103,
00493 107, 109, 111, 113, 116, 118, 120, 123, 126, 128,
00494 132, 134, 135, 137, 139, 142, 146, 149, 151, 155,
00495 158, 159, 162, 170, 176, 182, 184, 194, 205, 209,
00496 210, 212, 214, 218, 220, 224, 228, 232, 236, 240,
00497 244, 248, 252, 256, 260, 264, 268, 272, 274, 280,
00498 282, 286, 288, 292, 294, 298, 300, 304, 306, 310,
00499 312, 316, 320, 322, 326, 330, 334, 338, 340, 344,
00500 348, 352, 354, 358, 362, 364, 368, 372, 376, 380,
00501 382, 385, 388, 391, 394, 397, 400, 403, 406, 408,
00502 411, 414, 416, 419, 424, 429, 431, 433, 435, 437,
00503 439, 441, 443, 447, 450, 454, 456
00504 };
00505
00506
00507 static const short yyrhs[] =
00508 {
00509 110, 0, -1, 111, 126, -1, 126, -1, 1, -1,
00510 112, -1, 111, 112, -1, 31, 113, 86, -1, 1,
00511 -1, 114, -1, 115, -1, 117, -1, 35, 9, 8,
00512 -1, 10, 116, -1, 16, 8, -1, 28, 8, -1,
00513 16, 8, 28, 8, -1, 26, 118, -1, 119, -1,
00514 120, -1, 121, -1, 27, 122, -1, 23, 18, 122,
00515 -1, 32, 11, 122, -1, 123, 124, -1, 123, 124,
00516 125, -1, 8, -1, 8, -1, 8, -1, 127, -1,
00517 126, 127, -1, 128, 21, 9, 87, 129, 88, 133,
00518 130, -1, -1, 19, -1, -1, 131, -1, -1, 86,
00519 -1, 9, -1, 131, 89, 9, -1, 133, -1, 136,
00520 -1, 86, -1, 145, 86, -1, 140, -1, 141, -1,
00521 13, 86, -1, 12, 86, -1, 143, -1, 90, 134,
00522 91, -1, 1, -1, -1, 135, -1, 132, -1, 135,
00523 132, -1, 33, 137, 86, -1, 33, 1, -1, 138,
00524 -1, 137, 89, 138, -1, 9, 139, -1, -1, 92,
00525 147, -1, 24, 87, 145, 88, 132, 17, 132, -1,
00526 24, 87, 145, 88, 132, -1, 34, 87, 145, 88,
00527 132, -1, 142, -1, 20, 87, 144, 86, 144, 86,
00528 144, 88, 132, -1, 20, 87, 33, 137, 86, 144,
00529 86, 144, 88, 132, -1, 29, 144, 86, -1, -1,
00530 145, -1, 146, -1, 145, 89, 146, -1, 147, -1,
00531 9, 92, 146, -1, 9, 77, 146, -1, 9, 78,
00532 146, -1, 9, 82, 146, -1, 9, 75, 146, -1,
00533 9, 76, 146, -1, 9, 83, 146, -1, 9, 84,
00534 146, -1, 9, 85, 146, -1, 9, 79, 146, -1,
00535 9, 81, 146, -1, 9, 80, 146, -1, 9, 15,
00536 146, -1, 148, -1, 148, 93, 146, 94, 146, -1,
00537 149, -1, 148, 69, 149, -1, 150, -1, 149, 68,
00538 150, -1, 151, -1, 150, 95, 151, -1, 152, -1,
00539 151, 96, 152, -1, 153, -1, 152, 97, 153, -1,
00540 154, -1, 153, 64, 154, -1, 153, 67, 154, -1,
00541 155, -1, 154, 98, 155, -1, 154, 99, 155, -1,
00542 154, 65, 155, -1, 154, 66, 155, -1, 156, -1,
00543 155, 72, 156, -1, 155, 73, 156, -1, 155, 74,
00544 156, -1, 157, -1, 156, 100, 157, -1, 156, 101,
00545 157, -1, 158, -1, 157, 102, 158, -1, 157, 103,
00546 158, -1, 157, 14, 158, -1, 157, 104, 158, -1,
00547 159, -1, 30, 158, -1, 25, 158, -1, 70, 9,
00548 -1, 71, 9, -1, 100, 158, -1, 101, 158, -1,
00549 105, 158, -1, 106, 158, -1, 160, -1, 9, 70,
00550 -1, 9, 71, -1, 161, -1, 9, 162, -1, 9,
00551 107, 9, 162, -1, 9, 108, 9, 162, -1, 9,
00552 -1, 3, -1, 4, -1, 5, -1, 6, -1, 7,
00553 -1, 8, -1, 87, 145, 88, -1, 87, 88, -1,
00554 87, 163, 88, -1, 146, -1, 163, 89, 146, -1
00555 };
00556
00557
00558 static const unsigned short yyrline[] =
00559 {
00560 0, 122, 122, 123, 124, 131, 132, 136, 137, 142,
00561 143, 144, 148, 153, 157, 167, 178, 201, 205, 206,
00562 207, 211, 229, 249, 284, 286, 290, 291, 292, 297,
00563 298, 302, 317, 318, 323, 324, 327, 329, 333, 351,
00564 372, 380, 381, 383, 385, 386, 387, 389, 391, 394,
00565 402, 411, 412, 416, 421, 426, 428, 433, 438, 443,
00566 459, 460, 465, 467, 472, 474, 478, 481, 487, 494,
00567 495, 500, 501, 506, 507, 509, 511, 513, 515, 517,
00568 519, 521, 523, 525, 527, 529, 531, 536, 537, 542,
00569 543, 548, 549, 554, 555, 560, 561, 566, 567, 572,
00570 573, 575, 580, 581, 583, 585, 587, 592, 593, 595,
00571 597, 602, 603, 605, 610, 611, 613, 615, 617, 622,
00572 623, 625, 627, 629, 631, 647, 649, 651, 656, 657,
00573 659, 664, 665, 675, 677, 682, 684, 686, 688, 690,
00574 692, 694, 696, 701, 703, 708, 713
00575 };
00576 #endif
00577
00578 #if YYDEBUG || YYERROR_VERBOSE
00579
00580
00581 static const char *const yytname[] =
00582 {
00583 "$end", "error", "$undefined", "tINVALID", "tTRUE", "tFALSE", "tINTEGER",
00584 "tFLOAT", "tSTRING", "tIDENTIFIER", "tACCESS", "tAGENT", "tBREAK",
00585 "tCONTINUE", "tIDIV", "tIDIVA", "tDOMAIN", "tELSE", "tEQUIV", "tEXTERN",
00586 "tFOR", "tFUNCTION", "tHEADER", "tHTTP", "tIF", "tISVALID", "tMETA",
00587 "tNAME", "tPATH", "tRETURN", "tTYPEOF", "tUSE", "tUSER", "tVAR",
00588 "tWHILE", "tURL", "tDELETE", "tIN", "tLIB", "tNEW", "tNULL", "tTHIS",
00589 "tVOID", "tWITH", "tCASE", "tCATCH", "tCLASS", "tCONST", "tDEBUGGER",
00590 "tDEFAULT", "tDO", "tENUM", "tEXPORT", "tEXTENDS", "tFINALLY",
00591 "tIMPORT", "tPRIVATE", "tPUBLIC", "tSIZEOF", "tSTRUCT", "tSUPER",
00592 "tSWITCH", "tTHROW", "tTRY", "tEQ", "tLE", "tGE", "tNE", "tAND", "tOR",
00593 "tPLUSPLUS", "tMINUSMINUS", "tLSHIFT", "tRSSHIFT", "tRSZSHIFT", "tADDA",
00594 "tSUBA", "tMULA", "tDIVA", "tANDA", "tORA", "tXORA", "tREMA",
00595 "tLSHIFTA", "tRSSHIFTA", "tRSZSHIFTA", "';'", "'('", "')'", "','",
00596 "'{'", "'}'", "'='", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'",
00597 "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'!'", "'#'", "'.'",
00598 "$accept", "CompilationUnit", "Pragmas", "Pragma", "PragmaDeclaration",
00599 "ExternalCompilationUnitPragma", "AccessControlPragma",
00600 "AccessControlSpecifier", "MetaPragma", "MetaSpecifier", "MetaName",
00601 "MetaHttpEquiv", "MetaUserAgent", "MetaBody", "MetaPropertyName",
00602 "MetaContent", "MetaScheme", "FunctionDeclarations",
00603 "FunctionDeclaration", "ExternOpt", "FormalParameterListOpt",
00604 "SemicolonOpt", "FormalParameterList", "Statement", "Block",
00605 "StatementListOpt", "StatementList", "VariableStatement",
00606 "VariableDeclarationList", "VariableDeclaration",
00607 "VariableInitializedOpt", "IfStatement", "IterationStatement",
00608 "ForStatement", "ReturnStatement", "ExpressionOpt", "Expression",
00609 "AssignmentExpression", "ConditionalExpression", "LogicalORExpression",
00610 "LogicalANDExpression", "BitwiseORExpression", "BitwiseXORExpression",
00611 "BitwiseANDExpression", "EqualityExpression", "RelationalExpression",
00612 "ShiftExpression", "AdditiveExpression", "MultiplicativeExpression",
00613 "UnaryExpression", "PostfixExpression", "CallExpression",
00614 "PrimaryExpression", "Arguments", "ArgumentList", 0
00615 };
00616 #endif
00617
00618 # ifdef YYPRINT
00619
00620
00621 static const unsigned short yytoknum[] =
00622 {
00623 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00624 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
00625 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
00626 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
00627 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
00628 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
00629 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
00630 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
00631 335, 336, 337, 338, 339, 340, 59, 40, 41, 44,
00632 123, 125, 61, 63, 58, 124, 94, 38, 60, 62,
00633 43, 45, 42, 47, 37, 126, 33, 35, 46
00634 };
00635 # endif
00636
00637
00638 static const unsigned char yyr1[] =
00639 {
00640 0, 109, 110, 110, 110, 111, 111, 112, 112, 113,
00641 113, 113, 114, 115, 116, 116, 116, 117, 118, 118,
00642 118, 119, 120, 121, 122, 122, 123, 124, 125, 126,
00643 126, 127, 128, 128, 129, 129, 130, 130, 131, 131,
00644 132, 132, 132, 132, 132, 132, 132, 132, 132, 133,
00645 133, 134, 134, 135, 135, 136, 136, 137, 137, 138,
00646 139, 139, 140, 140, 141, 141, 142, 142, 143, 144,
00647 144, 145, 145, 146, 146, 146, 146, 146, 146, 146,
00648 146, 146, 146, 146, 146, 146, 146, 147, 147, 148,
00649 148, 149, 149, 150, 150, 151, 151, 152, 152, 153,
00650 153, 153, 154, 154, 154, 154, 154, 155, 155, 155,
00651 155, 156, 156, 156, 157, 157, 157, 157, 157, 158,
00652 158, 158, 158, 158, 158, 158, 158, 158, 159, 159,
00653 159, 160, 160, 160, 160, 161, 161, 161, 161, 161,
00654 161, 161, 161, 162, 162, 163, 163
00655 };
00656
00657
00658 static const unsigned char yyr2[] =
00659 {
00660 0, 2, 2, 1, 1, 1, 2, 3, 1, 1,
00661 1, 1, 3, 2, 2, 2, 4, 2, 1, 1,
00662 1, 2, 3, 3, 2, 3, 1, 1, 1, 1,
00663 2, 8, 0, 1, 0, 1, 0, 1, 1, 3,
00664 1, 1, 1, 2, 1, 1, 2, 2, 1, 3,
00665 1, 0, 1, 1, 2, 3, 2, 1, 3, 2,
00666 0, 2, 7, 5, 5, 1, 9, 10, 3, 0,
00667 1, 1, 3, 1, 3, 3, 3, 3, 3, 3,
00668 3, 3, 3, 3, 3, 3, 3, 1, 5, 1,
00669 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
00670 3, 3, 1, 3, 3, 3, 3, 1, 3, 3,
00671 3, 1, 3, 3, 1, 3, 3, 3, 3, 1,
00672 2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
00673 2, 1, 2, 4, 4, 1, 1, 1, 1, 1,
00674 1, 1, 3, 2, 3, 1, 3
00675 };
00676
00677
00678
00679
00680 static const unsigned char yydefact[] =
00681 {
00682 0, 8, 33, 0, 0, 0, 5, 3, 29, 0,
00683 0, 0, 0, 0, 9, 10, 11, 1, 8, 6,
00684 2, 30, 0, 0, 0, 13, 0, 0, 0, 17,
00685 18, 19, 20, 0, 7, 0, 14, 15, 0, 26,
00686 21, 0, 0, 12, 34, 0, 22, 27, 24, 23,
00687 38, 0, 35, 16, 28, 25, 0, 0, 50, 0,
00688 36, 39, 136, 137, 138, 139, 140, 141, 135, 0,
00689 0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
00690 42, 0, 0, 0, 0, 0, 53, 40, 0, 0,
00691 41, 44, 45, 65, 48, 0, 71, 73, 87, 89,
00692 91, 93, 95, 97, 99, 102, 107, 111, 114, 119,
00693 128, 131, 37, 31, 0, 129, 130, 0, 0, 0,
00694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00695 0, 0, 132, 47, 46, 69, 0, 135, 121, 0,
00696 70, 120, 56, 60, 0, 57, 0, 122, 123, 0,
00697 124, 125, 126, 127, 49, 54, 43, 0, 0, 0,
00698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00699 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,
00700 78, 79, 75, 76, 83, 85, 84, 77, 80, 81,
00701 82, 143, 145, 0, 74, 0, 0, 0, 0, 0,
00702 68, 0, 59, 55, 0, 0, 142, 72, 90, 0,
00703 92, 94, 96, 98, 100, 101, 105, 106, 103, 104,
00704 108, 109, 110, 112, 113, 117, 115, 116, 118, 144,
00705 0, 133, 134, 0, 69, 0, 61, 58, 0, 0,
00706 146, 69, 0, 63, 64, 88, 0, 69, 0, 69,
00707 0, 62, 0, 0, 0, 66, 67
00708 };
00709
00710
00711 static const short yydefgoto[] =
00712 {
00713 -1, 4, 5, 6, 13, 14, 15, 25, 16, 29,
00714 30, 31, 32, 40, 41, 48, 55, 7, 8, 9,
00715 51, 113, 52, 86, 87, 88, 89, 90, 144, 145,
00716 202, 91, 92, 93, 94, 139, 95, 96, 97, 98,
00717 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
00718 109, 110, 111, 132, 193
00719 };
00720
00721
00722
00723 #define YYPACT_NINF -135
00724 static const short yypact[] =
00725 {
00726 59, 39, -135, 28, 68, 63, -135, 38, -135, 62,
00727 37, 54, 13, -43, -135, -135, -135, -135, -135, -135,
00728 38, -135, 57, 67, 87, -135, 92, 108, 109, -135,
00729 -135, -135, -135, 121, -135, 47, 123, -135, 108, -135,
00730 -135, 141, 108, -135, 155, 164, -135, -135, 166, -135,
00731 -135, 89, 107, -135, -135, -135, 1, 188, -135, 132,
00732 112, -135, -135, -135, -135, -135, -135, -135, 340, 115,
00733 120, 124, 125, 296, 308, 296, 35, 126, 198, 201,
00734 -135, 308, 296, 296, 296, 296, -135, -135, 129, 175,
00735 -135, -135, -135, -135, -135, -83, -135, -135, -48, 146,
00736 122, 119, 127, 12, -25, 45, 5, 44, -135, -135,
00737 -135, -135, -135, -135, 308, -135, -135, 308, 308, 308,
00738 308, 308, 308, 308, 308, 308, 308, 308, 222, 308,
00739 207, 212, -135, -135, -135, 264, 308, -38, -135, 148,
00740 147, -135, -135, 143, -1, -135, 308, -135, -135, 43,
00741 -135, -135, -135, -135, -135, -135, -135, 308, 296, 308,
00742 296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
00743 296, 296, 296, 296, 296, 296, 296, 296, 296, -135,
00744 -135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
00745 -135, -135, -135, 66, -135, 152, 152, 231, 156, 70,
00746 -135, 296, -135, -135, 231, 82, -135, -135, 146, 149,
00747 122, 119, 127, 12, -25, -25, 45, 45, 45, 45,
00748 5, 5, 5, 44, 44, -135, -135, -135, -135, -135,
00749 308, -135, -135, 25, 308, 22, -135, -135, 22, 308,
00750 -135, 308, 158, 224, -135, -135, 162, 308, 22, 308,
00751 161, -135, 163, 22, 22, -135, -135
00752 };
00753
00754
00755 static const short yypgoto[] =
00756 {
00757 -135, -135, -135, 245, -135, -135, -135, -135, -135, -135,
00758 -135, -135, -135, 29, -135, -135, -135, 248, 17, -135,
00759 -135, -135, -135, -85, 199, -135, -135, -135, 60, 50,
00760 -135, -135, -135, -135, -135, -134, -74, -109, 55, -135,
00761 100, 99, 102, 98, 101, -22, -65, -46, 20, 14,
00762 -135, -135, -135, -10, -135
00763 };
00764
00765
00766
00767
00768
00769 #define YYTABLE_NINF -53
00770 static const short yytable[] =
00771 {
00772 140, 198, 58, 156, 155, 179, 157, 149, 180, 181,
00773 182, 183, 184, 185, 186, 187, 188, 189, 190, 192,
00774 194, 158, 33, 58, 21, 62, 63, 64, 65, 66,
00775 67, 68, 115, 116, 69, 70, 142, 21, 10, -4,
00776 166, 167, 71, 34, 143, 159, 72, 73, 207, 128,
00777 209, 74, 75, 23, 11, 76, 77, 2, 175, -32,
00778 1, 140, 199, 12, 18, 24, 35, 46, 17, 130,
00779 131, 49, 205, 168, 169, 36, 164, 26, 2, 165,
00780 -32, 27, 2, 22, -32, 203, 28, 138, 204, 141,
00781 3, 59, 78, 79, 3, 37, 150, 151, 152, 153,
00782 242, 216, 217, 218, 219, 173, 174, 246, 80, 81,
00783 38, 241, 59, 250, 204, 252, 39, 170, 171, 172,
00784 42, 240, 82, 83, 220, 221, 222, 84, 85, 43,
00785 245, 206, 157, 58, 44, 62, 63, 64, 65, 66,
00786 67, 68, 214, 215, 69, 70, 176, 177, 178, 47,
00787 243, 45, 71, 244, 229, 230, 72, 73, 235, 157,
00788 140, 74, 75, 251, 50, 76, 77, 140, 255, 256,
00789 238, 157, 53, 140, 54, 140, 58, 56, 62, 63,
00790 64, 65, 66, 67, 68, 231, 232, 69, 70, 225,
00791 226, 227, 228, 223, 224, 71, 57, 61, 112, 72,
00792 73, 133, 78, 79, 74, 75, 134, 147, 76, 77,
00793 148, 135, 136, 146, 160, 162, 195, 161, 80, 81,
00794 154, 196, 59, -51, 163, 62, 63, 64, 65, 66,
00795 67, 68, 82, 83, 200, 201, 157, 84, 85, 128,
00796 143, 248, 234, 239, 247, 78, 79, 73, 249, 253,
00797 19, 254, 75, 20, 237, 60, 236, 233, 208, 210,
00798 212, 80, 81, 211, 213, 59, -52, 62, 63, 64,
00799 65, 66, 67, 68, 0, 82, 83, 0, 0, 0,
00800 84, 85, 0, 0, 0, 0, 0, 0, 0, 73,
00801 0, 0, 78, 79, 75, 0, 0, 197, 0, 62,
00802 63, 64, 65, 66, 67, 137, 0, 0, 0, 81,
00803 191, 62, 63, 64, 65, 66, 67, 68, 0, 0,
00804 0, 73, 82, 83, 0, 0, 75, 84, 85, 0,
00805 0, 0, 0, 73, 78, 79, 0, 0, 75, 0,
00806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00807 0, 81, 0, 0, 0, 114, 0, 0, 0, 0,
00808 0, 0, 0, 0, 82, 83, 78, 79, 0, 84,
00809 85, 0, 0, 0, 0, 0, 0, 0, 78, 79,
00810 0, 0, 0, 81, 0, 0, 0, 0, 0, 0,
00811 0, 0, 0, 0, 0, 81, 82, 83, 0, 0,
00812 0, 84, 85, 0, 0, 0, 0, 0, 82, 83,
00813 115, 116, 0, 84, 85, 117, 118, 119, 120, 121,
00814 122, 123, 124, 125, 126, 127, 0, 128, 0, 0,
00815 0, 0, 129, 0, 0, 0, 0, 0, 0, 0,
00816 0, 0, 0, 0, 0, 0, 0, 130, 131
00817 };
00818
00819 static const short yycheck[] =
00820 {
00821 74, 135, 1, 86, 89, 114, 89, 81, 117, 118,
00822 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
00823 129, 69, 9, 1, 7, 3, 4, 5, 6, 7,
00824 8, 9, 70, 71, 12, 13, 1, 20, 10, 0,
00825 65, 66, 20, 86, 9, 93, 24, 25, 157, 87,
00826 159, 29, 30, 16, 26, 33, 34, 19, 14, 21,
00827 1, 135, 136, 35, 1, 28, 9, 38, 0, 107,
00828 108, 42, 146, 98, 99, 8, 64, 23, 19, 67,
00829 21, 27, 19, 21, 21, 86, 32, 73, 89, 75,
00830 31, 90, 70, 71, 31, 8, 82, 83, 84, 85,
00831 234, 166, 167, 168, 169, 100, 101, 241, 86, 87,
00832 18, 86, 90, 247, 89, 249, 8, 72, 73, 74,
00833 11, 230, 100, 101, 170, 171, 172, 105, 106, 8,
00834 239, 88, 89, 1, 87, 3, 4, 5, 6, 7,
00835 8, 9, 164, 165, 12, 13, 102, 103, 104, 8,
00836 235, 28, 20, 238, 88, 89, 24, 25, 88, 89,
00837 234, 29, 30, 248, 9, 33, 34, 241, 253, 254,
00838 88, 89, 8, 247, 8, 249, 1, 88, 3, 4,
00839 5, 6, 7, 8, 9, 195, 196, 12, 13, 175,
00840 176, 177, 178, 173, 174, 20, 89, 9, 86, 24,
00841 25, 86, 70, 71, 29, 30, 86, 9, 33, 34,
00842 9, 87, 87, 87, 68, 96, 9, 95, 86, 87,
00843 91, 9, 90, 91, 97, 3, 4, 5, 6, 7,
00844 8, 9, 100, 101, 86, 92, 89, 105, 106, 87,
00845 9, 17, 86, 94, 86, 70, 71, 25, 86, 88,
00846 5, 88, 30, 5, 204, 56, 201, 197, 158, 160,
00847 162, 86, 87, 161, 163, 90, 91, 3, 4, 5,
00848 6, 7, 8, 9, -1, 100, 101, -1, -1, -1,
00849 105, 106, -1, -1, -1, -1, -1, -1, -1, 25,
00850 -1, -1, 70, 71, 30, -1, -1, 33, -1, 3,
00851 4, 5, 6, 7, 8, 9, -1, -1, -1, 87,
00852 88, 3, 4, 5, 6, 7, 8, 9, -1, -1,
00853 -1, 25, 100, 101, -1, -1, 30, 105, 106, -1,
00854 -1, -1, -1, 25, 70, 71, -1, -1, 30, -1,
00855 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00856 -1, 87, -1, -1, -1, 15, -1, -1, -1, -1,
00857 -1, -1, -1, -1, 100, 101, 70, 71, -1, 105,
00858 106, -1, -1, -1, -1, -1, -1, -1, 70, 71,
00859 -1, -1, -1, 87, -1, -1, -1, -1, -1, -1,
00860 -1, -1, -1, -1, -1, 87, 100, 101, -1, -1,
00861 -1, 105, 106, -1, -1, -1, -1, -1, 100, 101,
00862 70, 71, -1, 105, 106, 75, 76, 77, 78, 79,
00863 80, 81, 82, 83, 84, 85, -1, 87, -1, -1,
00864 -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
00865 -1, -1, -1, -1, -1, -1, -1, 107, 108
00866 };
00867
00868
00869
00870 static const unsigned char yystos[] =
00871 {
00872 0, 1, 19, 31, 110, 111, 112, 126, 127, 128,
00873 10, 26, 35, 113, 114, 115, 117, 0, 1, 112,
00874 126, 127, 21, 16, 28, 116, 23, 27, 32, 118,
00875 119, 120, 121, 9, 86, 9, 8, 8, 18, 8,
00876 122, 123, 11, 8, 87, 28, 122, 8, 124, 122,
00877 9, 129, 131, 8, 8, 125, 88, 89, 1, 90,
00878 133, 9, 3, 4, 5, 6, 7, 8, 9, 12,
00879 13, 20, 24, 25, 29, 30, 33, 34, 70, 71,
00880 86, 87, 100, 101, 105, 106, 132, 133, 134, 135,
00881 136, 140, 141, 142, 143, 145, 146, 147, 148, 149,
00882 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
00883 160, 161, 86, 130, 15, 70, 71, 75, 76, 77,
00884 78, 79, 80, 81, 82, 83, 84, 85, 87, 92,
00885 107, 108, 162, 86, 86, 87, 87, 9, 158, 144,
00886 145, 158, 1, 9, 137, 138, 87, 9, 9, 145,
00887 158, 158, 158, 158, 91, 132, 86, 89, 69, 93,
00888 68, 95, 96, 97, 64, 67, 65, 66, 98, 99,
00889 72, 73, 74, 100, 101, 14, 102, 103, 104, 146,
00890 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
00891 146, 88, 146, 163, 146, 9, 9, 33, 144, 145,
00892 86, 92, 139, 86, 89, 145, 88, 146, 149, 146,
00893 150, 151, 152, 153, 154, 154, 155, 155, 155, 155,
00894 156, 156, 156, 157, 157, 158, 158, 158, 158, 88,
00895 89, 162, 162, 137, 86, 88, 147, 138, 88, 94,
00896 146, 86, 144, 132, 132, 146, 144, 86, 17, 86,
00897 144, 132, 144, 88, 88, 132, 132
00898 };
00899
00900 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
00901 # define YYSIZE_T __SIZE_TYPE__
00902 #endif
00903 #if ! defined (YYSIZE_T) && defined (size_t)
00904 # define YYSIZE_T size_t
00905 #endif
00906 #if ! defined (YYSIZE_T)
00907 # if defined (__STDC__) || defined (__cplusplus)
00908 # include <stddef.h>
00909 # define YYSIZE_T size_t
00910 # endif
00911 #endif
00912 #if ! defined (YYSIZE_T)
00913 # define YYSIZE_T unsigned int
00914 #endif
00915
00916 #define yyerrok (yyerrstatus = 0)
00917 #define yyclearin (yychar = YYEMPTY)
00918 #define YYEMPTY (-2)
00919 #define YYEOF 0
00920
00921 #define YYACCEPT goto yyacceptlab
00922 #define YYABORT goto yyabortlab
00923 #define YYERROR do \
00924 { \
00925 yylerrsp = yylsp; \
00926 *++yylerrsp = yyloc; \
00927 goto yyerrlab1; \
00928 } \
00929 while (0)
00930
00931
00932
00933
00934
00935
00936 #define YYFAIL goto yyerrlab
00937
00938 #define YYRECOVERING() (!!yyerrstatus)
00939
00940 #define YYBACKUP(Token, Value) \
00941 do \
00942 if (yychar == YYEMPTY && yylen == 1) \
00943 { \
00944 yychar = (Token); \
00945 yylval = (Value); \
00946 yytoken = YYTRANSLATE (yychar); \
00947 YYPOPSTACK; \
00948 goto yybackup; \
00949 } \
00950 else \
00951 { \
00952 yyerror ("syntax error: cannot back up");\
00953 YYERROR; \
00954 } \
00955 while (0)
00956
00957 #define YYTERROR 1
00958 #define YYERRCODE 256
00959
00960
00961
00962
00963 #ifndef YYLLOC_DEFAULT
00964 # define YYLLOC_DEFAULT(Current, Rhs, N) \
00965 Current.first_line = Rhs[1].first_line; \
00966 Current.first_column = Rhs[1].first_column; \
00967 Current.last_line = Rhs[N].last_line; \
00968 Current.last_column = Rhs[N].last_column;
00969 #endif
00970
00971
00972
00973 #ifdef YYLEX_PARAM
00974 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
00975 #else
00976 # define YYLEX yylex (&yylval, &yylloc)
00977 #endif
00978
00979
00980 #if YYDEBUG
00981
00982 # ifndef YYFPRINTF
00983 # include <stdio.h>
00984 # define YYFPRINTF fprintf
00985 # endif
00986
00987 # define YYDPRINTF(Args) \
00988 do { \
00989 if (yydebug) \
00990 YYFPRINTF Args; \
00991 } while (0)
00992
00993 # define YYDSYMPRINT(Args) \
00994 do { \
00995 if (yydebug) \
00996 yysymprint Args; \
00997 } while (0)
00998
00999 # define YYDSYMPRINTF(Title, Token, Value, Location) \
01000 do { \
01001 if (yydebug) \
01002 { \
01003 YYFPRINTF (stderr, "%s ", Title); \
01004 yysymprint (stderr, \
01005 Token, Value, Location); \
01006 YYFPRINTF (stderr, "\n"); \
01007 } \
01008 } while (0)
01009
01010
01011
01012
01013
01014
01015 #if defined (__STDC__) || defined (__cplusplus)
01016 static void
01017 yy_stack_print (short *bottom, short *top)
01018 #else
01019 static void
01020 yy_stack_print (bottom, top)
01021 short *bottom;
01022 short *top;
01023 #endif
01024 {
01025 YYFPRINTF (stderr, "Stack now");
01026 for (; bottom <= top; ++bottom)
01027 YYFPRINTF (stderr, " %d", *bottom);
01028 YYFPRINTF (stderr, "\n");
01029 }
01030
01031 # define YY_STACK_PRINT(Bottom, Top) \
01032 do { \
01033 if (yydebug) \
01034 yy_stack_print ((Bottom), (Top)); \
01035 } while (0)
01036
01037
01038
01039
01040
01041
01042 #if defined (__STDC__) || defined (__cplusplus)
01043 static void
01044 yy_reduce_print (int yyrule)
01045 #else
01046 static void
01047 yy_reduce_print (yyrule)
01048 int yyrule;
01049 #endif
01050 {
01051 int yyi;
01052 unsigned int yylineno = yyrline[yyrule];
01053 YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
01054 yyrule - 1, yylineno);
01055
01056 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
01057 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
01058 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
01059 }
01060
01061 # define YY_REDUCE_PRINT(Rule) \
01062 do { \
01063 if (yydebug) \
01064 yy_reduce_print (Rule); \
01065 } while (0)
01066
01067
01068
01069 int yydebug;
01070 #else
01071 # define YYDPRINTF(Args)
01072 # define YYDSYMPRINT(Args)
01073 # define YYDSYMPRINTF(Title, Token, Value, Location)
01074 # define YY_STACK_PRINT(Bottom, Top)
01075 # define YY_REDUCE_PRINT(Rule)
01076 #endif
01077
01078
01079
01080 #ifndef YYINITDEPTH
01081 # define YYINITDEPTH 200
01082 #endif
01083
01084
01085
01086
01087
01088
01089
01090
01091 #if YYMAXDEPTH == 0
01092 # undef YYMAXDEPTH
01093 #endif
01094
01095 #ifndef YYMAXDEPTH
01096 # define YYMAXDEPTH 10000
01097 #endif
01098
01099
01100
01101 #if YYERROR_VERBOSE
01102
01103 # ifndef yystrlen
01104 # if defined (__GLIBC__) && defined (_STRING_H)
01105 # define yystrlen strlen
01106 # else
01107
01108 static YYSIZE_T
01109 # if defined (__STDC__) || defined (__cplusplus)
01110 yystrlen (const char *yystr)
01111 # else
01112 yystrlen (yystr)
01113 const char *yystr;
01114 # endif
01115 {
01116 register const char *yys = yystr;
01117
01118 while (*yys++ != '\0')
01119 continue;
01120
01121 return yys - yystr - 1;
01122 }
01123 # endif
01124 # endif
01125
01126 # ifndef yystpcpy
01127 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
01128 # define yystpcpy stpcpy
01129 # else
01130
01131
01132 static char *
01133 # if defined (__STDC__) || defined (__cplusplus)
01134 yystpcpy (char *yydest, const char *yysrc)
01135 # else
01136 yystpcpy (yydest, yysrc)
01137 char *yydest;
01138 const char *yysrc;
01139 # endif
01140 {
01141 register char *yyd = yydest;
01142 register const char *yys = yysrc;
01143
01144 while ((*yyd++ = *yys++) != '\0')
01145 continue;
01146
01147 return yyd - 1;
01148 }
01149 # endif
01150 # endif
01151
01152 #endif
01153
01154
01155
01156 #if YYDEBUG
01157
01158
01159
01160
01161 #if defined (__STDC__) || defined (__cplusplus)
01162 static void
01163 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
01164 #else
01165 static void
01166 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
01167 FILE *yyoutput;
01168 int yytype;
01169 YYSTYPE *yyvaluep;
01170 YYLTYPE *yylocationp;
01171 #endif
01172 {
01173
01174 (void) yyvaluep;
01175 (void) yylocationp;
01176
01177 if (yytype < YYNTOKENS)
01178 {
01179 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01180 # ifdef YYPRINT
01181 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01182 # endif
01183 }
01184 else
01185 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01186
01187 switch (yytype)
01188 {
01189 default:
01190 break;
01191 }
01192 YYFPRINTF (yyoutput, ")");
01193 }
01194
01195 #endif
01196
01197
01198
01199
01200 #if defined (__STDC__) || defined (__cplusplus)
01201 static void
01202 yydestruct (int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
01203 #else
01204 static void
01205 yydestruct (yytype, yyvaluep, yylocationp)
01206 int yytype;
01207 YYSTYPE *yyvaluep;
01208 YYLTYPE *yylocationp;
01209 #endif
01210 {
01211
01212 (void) yyvaluep;
01213 (void) yylocationp;
01214
01215 switch (yytype)
01216 {
01217
01218 default:
01219 break;
01220 }
01221 }
01222
01223
01224
01225
01226 #ifdef YYPARSE_PARAM
01227 # if defined (__STDC__) || defined (__cplusplus)
01228 int yyparse (void *YYPARSE_PARAM);
01229 # else
01230 int yyparse ();
01231 # endif
01232 #else
01233 #if defined (__STDC__) || defined (__cplusplus)
01234 int yyparse (void);
01235 #else
01236 int yyparse ();
01237 #endif
01238 #endif
01239
01240
01241
01242
01243
01244
01245
01246
01247
01248
01249 #ifdef YYPARSE_PARAM
01250 # if defined (__STDC__) || defined (__cplusplus)
01251 int yyparse (void *YYPARSE_PARAM)
01252 # else
01253 int yyparse (YYPARSE_PARAM)
01254 void *YYPARSE_PARAM;
01255 # endif
01256 #else
01257 #if defined (__STDC__) || defined (__cplusplus)
01258 int
01259 yyparse (void)
01260 #else
01261 int
01262 yyparse ()
01263
01264 #endif
01265 #endif
01266 {
01267
01268 int yychar;
01269
01270
01271 YYSTYPE yylval;
01272
01273
01274 int yynerrs;
01275
01276 YYLTYPE yylloc;
01277
01278 register int yystate;
01279 register int yyn;
01280 int yyresult;
01281
01282 int yyerrstatus;
01283
01284 int yytoken = 0;
01285
01286
01287
01288
01289
01290
01291
01292
01293
01294
01295 short yyssa[YYINITDEPTH];
01296 short *yyss = yyssa;
01297 register short *yyssp;
01298
01299
01300 YYSTYPE yyvsa[YYINITDEPTH];
01301 YYSTYPE *yyvs = yyvsa;
01302 register YYSTYPE *yyvsp;
01303
01304
01305 YYLTYPE yylsa[YYINITDEPTH];
01306 YYLTYPE *yyls = yylsa;
01307 YYLTYPE *yylsp;
01308 YYLTYPE *yylerrsp;
01309
01310 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
01311
01312 YYSIZE_T yystacksize = YYINITDEPTH;
01313
01314
01315
01316 YYSTYPE yyval;
01317 YYLTYPE yyloc;
01318
01319
01320
01321 int yylen;
01322
01323 YYDPRINTF ((stderr, "Starting parse\n"));
01324
01325 yystate = 0;
01326 yyerrstatus = 0;
01327 yynerrs = 0;
01328 yychar = YYEMPTY;
01329
01330
01331
01332
01333
01334
01335 yyssp = yyss;
01336 yyvsp = yyvs;
01337 yylsp = yyls;
01338 goto yysetstate;
01339
01340
01341
01342
01343 yynewstate:
01344
01345
01346
01347 yyssp++;
01348
01349 yysetstate:
01350 *yyssp = yystate;
01351
01352 if (yyss + yystacksize - 1 <= yyssp)
01353 {
01354
01355 YYSIZE_T yysize = yyssp - yyss + 1;
01356
01357 #ifdef yyoverflow
01358 {
01359
01360
01361
01362 YYSTYPE *yyvs1 = yyvs;
01363 short *yyss1 = yyss;
01364 YYLTYPE *yyls1 = yyls;
01365
01366
01367
01368
01369
01370 yyoverflow ("parser stack overflow",
01371 &yyss1, yysize * sizeof (*yyssp),
01372 &yyvs1, yysize * sizeof (*yyvsp),
01373 &yyls1, yysize * sizeof (*yylsp),
01374 &yystacksize);
01375 yyls = yyls1;
01376 yyss = yyss1;
01377 yyvs = yyvs1;
01378 }
01379 #else
01380 # ifndef YYSTACK_RELOCATE
01381 goto yyoverflowlab;
01382 # else
01383
01384 if (YYMAXDEPTH <= yystacksize)
01385 goto yyoverflowlab;
01386 yystacksize *= 2;
01387 if (YYMAXDEPTH < yystacksize)
01388 yystacksize = YYMAXDEPTH;
01389
01390 {
01391 short *yyss1 = yyss;
01392 union yyalloc *yyptr =
01393 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01394 if (! yyptr)
01395 goto yyoverflowlab;
01396 YYSTACK_RELOCATE (yyss);
01397 YYSTACK_RELOCATE (yyvs);
01398 YYSTACK_RELOCATE (yyls);
01399 # undef YYSTACK_RELOCATE
01400 if (yyss1 != yyssa)
01401 YYSTACK_FREE (yyss1);
01402 }
01403 # endif
01404 #endif
01405
01406 yyssp = yyss + yysize - 1;
01407 yyvsp = yyvs + yysize - 1;
01408 yylsp = yyls + yysize - 1;
01409
01410 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01411 (unsigned long int) yystacksize));
01412
01413 if (yyss + yystacksize - 1 <= yyssp)
01414 YYABORT;
01415 }
01416
01417 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01418
01419 goto yybackup;
01420
01421
01422
01423
01424 yybackup:
01425
01426
01427
01428
01429
01430
01431
01432 yyn = yypact[yystate];
01433 if (yyn == YYPACT_NINF)
01434 goto yydefault;
01435
01436
01437
01438
01439 if (yychar == YYEMPTY)
01440 {
01441 YYDPRINTF ((stderr, "Reading a token: "));
01442 yychar = YYLEX;
01443 }
01444
01445 if (yychar <= YYEOF)
01446 {
01447 yychar = yytoken = YYEOF;
01448 YYDPRINTF ((stderr, "Now at end of input.\n"));
01449 }
01450 else
01451 {
01452 yytoken = YYTRANSLATE (yychar);
01453 YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
01454 }
01455
01456
01457
01458 yyn += yytoken;
01459 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01460 goto yydefault;
01461 yyn = yytable[yyn];
01462 if (yyn <= 0)
01463 {
01464 if (yyn == 0 || yyn == YYTABLE_NINF)
01465 goto yyerrlab;
01466 yyn = -yyn;
01467 goto yyreduce;
01468 }
01469
01470 if (yyn == YYFINAL)
01471 YYACCEPT;
01472
01473
01474 YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
01475
01476
01477 if (yychar != YYEOF)
01478 yychar = YYEMPTY;
01479
01480 *++yyvsp = yylval;
01481 *++yylsp = yylloc;
01482
01483
01484
01485 if (yyerrstatus)
01486 yyerrstatus--;
01487
01488 yystate = yyn;
01489 goto yynewstate;
01490
01491
01492
01493
01494
01495 yydefault:
01496 yyn = yydefact[yystate];
01497 if (yyn == 0)
01498 goto yyerrlab;
01499 goto yyreduce;
01500
01501
01502
01503
01504
01505 yyreduce:
01506
01507 yylen = yyr2[yyn];
01508
01509
01510
01511
01512
01513
01514
01515
01516
01517 yyval = yyvsp[1-yylen];
01518
01519
01520 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
01521 YY_REDUCE_PRINT (yyn);
01522 switch (yyn)
01523 {
01524 case 4:
01525 #line 125 "wmlscript/wsgram.y"
01526 { ws_error_syntax(pctx, yylsp[0].first_line); }
01527 break;
01528
01529 case 8:
01530 #line 138 "wmlscript/wsgram.y"
01531 { ws_error_syntax(pctx, yylsp[0].first_line); }
01532 break;
01533
01534 case 12:
01535 #line 149 "wmlscript/wsgram.y"
01536 { ws_pragma_use(pctx, yylsp[-1].first_line, yyvsp[-1].identifier, yyvsp[0].string); }
01537 break;
01538
01539 case 14:
01540 #line 158 "wmlscript/wsgram.y"
01541 {
01542 WsCompiler *compiler = (WsCompiler *) pctx;
01543
01544
01545 if (!ws_bc_add_pragma_access_domain(compiler->bc, yyvsp[0].string->data,
01546 yyvsp[0].string->len))
01547 ws_error_memory(pctx);
01548 ws_lexer_free_utf8(compiler, yyvsp[0].string);
01549 }
01550 break;
01551
01552 case 15:
01553 #line 168 "wmlscript/wsgram.y"
01554 {
01555 WsCompiler *compiler = (WsCompiler *) pctx;
01556
01557
01558 if (!ws_bc_add_pragma_access_path(compiler->bc, yyvsp[0].string->data,
01559 yyvsp[0].string->len))
01560 ws_error_memory(pctx);
01561
01562 ws_lexer_free_utf8(compiler, yyvsp[0].string);
01563 }
01564 break;
01565
01566 case 16:
01567 #line 179 "wmlscript/wsgram.y"
01568 {
01569 WsCompiler *compiler = (WsCompiler *) pctx;
01570 WsBool success = WS_TRUE;
01571
01572
01573 if (!ws_bc_add_pragma_access_domain(compiler->bc, yyvsp[-2].string->data,
01574 yyvsp[-2].string->len))
01575 success = WS_FALSE;
01576
01577 if (!ws_bc_add_pragma_access_path(compiler->bc, yyvsp[0].string->data,
01578 yyvsp[0].string->len))
01579 success = WS_FALSE;
01580
01581 if (!success)
01582 ws_error_memory(pctx);
01583
01584 ws_lexer_free_utf8(compiler, yyvsp[-2].string);
01585 ws_lexer_free_utf8(compiler, yyvsp[0].string);
01586 }
01587 break;
01588
01589 case 21:
01590 #line 212 "wmlscript/wsgram.y"
01591 {
01592 WsCompiler *compiler = (WsCompiler *) pctx;
01593
01594
01595
01596 if (compiler->params.meta_name_cb)
01597 (*compiler->params.meta_name_cb)(
01598 yyvsp[0].meta_body->property_name, yyvsp[0].meta_body->content,
01599 yyvsp[0].meta_body->scheme,
01600 compiler->params.meta_name_cb_context);
01601
01602
01603 ws_pragma_meta_body_free(compiler, yyvsp[0].meta_body);
01604 }
01605 break;
01606
01607 case 22:
01608 #line 230 "wmlscript/wsgram.y"
01609 {
01610 WsCompiler *compiler = (WsCompiler *) pctx;
01611
01612
01613
01614
01615 if (compiler->params.meta_http_equiv_cb)
01616 (*compiler->params.meta_http_equiv_cb)(
01617 yyvsp[0].meta_body->property_name,
01618 yyvsp[0].meta_body->content,
01619 yyvsp[0].meta_body->scheme,
01620 compiler->params.meta_http_equiv_cb_context);
01621
01622
01623 ws_pragma_meta_body_free(compiler, yyvsp[0].meta_body);
01624 }
01625 break;
01626
01627 case 23:
01628 #line 250 "wmlscript/wsgram.y"
01629 {
01630 WsBool success;
01631 WsCompiler *compiler = (WsCompiler *) pctx;
01632
01633
01634 if (yyvsp[0].meta_body) {
01635 if (yyvsp[0].meta_body->scheme)
01636 success
01637 = ws_bc_add_pragma_user_agent_property_and_scheme(
01638 compiler->bc,
01639 yyvsp[0].meta_body->property_name->data,
01640 yyvsp[0].meta_body->property_name->len,
01641 yyvsp[0].meta_body->content->data,
01642 yyvsp[0].meta_body->content->len,
01643 yyvsp[0].meta_body->scheme->data,
01644 yyvsp[0].meta_body->scheme->len);
01645 else
01646 success = ws_bc_add_pragma_user_agent_property(
01647 compiler->bc,
01648 yyvsp[0].meta_body->property_name->data,
01649 yyvsp[0].meta_body->property_name->len,
01650 yyvsp[0].meta_body->content->data,
01651 yyvsp[0].meta_body->content->len);
01652
01653
01654 ws_pragma_meta_body_free(compiler, yyvsp[0].meta_body);
01655
01656 if (!success)
01657 ws_error_memory(pctx);
01658 }
01659 }
01660 break;
01661
01662 case 24:
01663 #line 285 "wmlscript/wsgram.y"
01664 { yyval.meta_body = ws_pragma_meta_body(pctx, yyvsp[-1].string, yyvsp[0].string, NULL); }
01665 break;
01666
01667 case 25:
01668 #line 287 "wmlscript/wsgram.y"
01669 { yyval.meta_body = ws_pragma_meta_body(pctx, yyvsp[-2].string, yyvsp[-1].string, yyvsp[0].string); }
01670 break;
01671
01672 case 31:
01673 #line 304 "wmlscript/wsgram.y"
01674 {
01675 char *name = ws_strdup(yyvsp[-5].identifier);
01676
01677 ws_lexer_free_block(pctx, yyvsp[-5].identifier);
01678
01679 if (name)
01680 ws_function(pctx, yyvsp[-7].boolean, name, yylsp[-5].first_line, yyvsp[-3].list, yyvsp[-1].list);
01681 else
01682 ws_error_memory(pctx);
01683 }
01684 break;
01685
01686 case 32:
01687 #line 317 "wmlscript/wsgram.y"
01688 { yyval.boolean = WS_FALSE; }
01689 break;
01690
01691 case 33:
01692 #line 318 "wmlscript/wsgram.y"
01693 { yyval.boolean = WS_TRUE; }
01694 break;
01695
01696 case 34:
01697 #line 323 "wmlscript/wsgram.y"
01698 { yyval.list = ws_list_new(pctx); }
01699 break;
01700
01701 case 38:
01702 #line 334 "wmlscript/wsgram.y"
01703 {
01704 char *id;
01705 WsFormalParm *parm;
01706
01707 id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, yyvsp[0].identifier);
01708 parm = ws_formal_parameter(pctx, yylsp[0].first_line, id);
01709
01710 ws_lexer_free_block(pctx, yyvsp[0].identifier);
01711
01712 if (id == NULL || parm == NULL) {
01713 ws_error_memory(pctx);
01714 yyval.list = NULL;
01715 } else {
01716 yyval.list = ws_list_new(pctx);
01717 ws_list_append(pctx, yyval.list, parm);
01718 }
01719 }
01720 break;
01721
01722 case 39:
01723 #line 352 "wmlscript/wsgram.y"
01724 {
01725 char *id;
01726 WsFormalParm *parm;
01727
01728 id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, yyvsp[0].identifier);
01729 parm = ws_formal_parameter(pctx, yylsp[-2].first_line, id);
01730
01731 ws_lexer_free_block(pctx, yyvsp[0].identifier);
01732
01733 if (id == NULL || parm == NULL) {
01734 ws_error_memory(pctx);
01735 yyval.list = NULL;
01736 } else
01737 ws_list_append(pctx, yyvsp[-2].list, parm);
01738 }
01739 break;
01740
01741 case 40:
01742 #line 373 "wmlscript/wsgram.y"
01743 {
01744 if (yyvsp[0].list)
01745 yyval.stmt = ws_stmt_block(pctx, yyvsp[0].list->first_line, yyvsp[0].list->last_line,
01746 yyvsp[0].list);
01747 else
01748 yyval.stmt = NULL;
01749 }
01750 break;
01751
01752 case 42:
01753 #line 382 "wmlscript/wsgram.y"
01754 { yyval.stmt = ws_stmt_empty(pctx, yylsp[0].first_line); }
01755 break;
01756
01757 case 43:
01758 #line 384 "wmlscript/wsgram.y"
01759 { yyval.stmt = ws_stmt_expr(pctx, yyvsp[-1].expr->line, yyvsp[-1].expr); }
01760 break;
01761
01762 case 46:
01763 #line 388 "wmlscript/wsgram.y"
01764 { yyval.stmt = ws_stmt_continue(pctx, yylsp[-1].first_line); }
01765 break;
01766
01767 case 47:
01768 #line 390 "wmlscript/wsgram.y"
01769 { yyval.stmt = ws_stmt_break(pctx, yylsp[-1].first_line); }
01770 break;
01771
01772 case 49:
01773 #line 395 "wmlscript/wsgram.y"
01774 {
01775 yyval.list = yyvsp[-1].list;
01776 if (yyval.list) {
01777 yyval.list->first_line = yylsp[-2].first_line;
01778 yyval.list->last_line = yylsp[0].first_line;
01779 }
01780 }
01781 break;
01782
01783 case 50:
01784 #line 403 "wmlscript/wsgram.y"
01785 {
01786 ws_error_syntax(pctx, yylsp[0].first_line);
01787 yyval.list = NULL;
01788 }
01789 break;
01790
01791 case 51:
01792 #line 411 "wmlscript/wsgram.y"
01793 { yyval.list = ws_list_new(pctx); }
01794 break;
01795
01796 case 53:
01797 #line 417 "wmlscript/wsgram.y"
01798 {
01799 yyval.list = ws_list_new(pctx);
01800 ws_list_append(pctx, yyval.list, yyvsp[0].stmt);
01801 }
01802 break;
01803
01804 case 54:
01805 #line 422 "wmlscript/wsgram.y"
01806 { ws_list_append(pctx, yyvsp[-1].list, yyvsp[0].stmt); }
01807 break;
01808
01809 case 55:
01810 #line 427 "wmlscript/wsgram.y"
01811 { yyval.stmt = ws_stmt_variable(pctx, yylsp[-2].first_line, yyvsp[-1].list); }
01812 break;
01813
01814 case 56:
01815 #line 429 "wmlscript/wsgram.y"
01816 { ws_error_syntax(pctx, yylsp[0].first_line); }
01817 break;
01818
01819 case 57:
01820 #line 434 "wmlscript/wsgram.y"
01821 {
01822 yyval.list = ws_list_new(pctx);
01823 ws_list_append(pctx, yyval.list, yyvsp[0].vardec);
01824 }
01825 break;
01826
01827 case 58:
01828 #line 439 "wmlscript/wsgram.y"
01829 { ws_list_append(pctx, yyvsp[-2].list, yyvsp[0].vardec); }
01830 break;
01831
01832 case 59:
01833 #line 444 "wmlscript/wsgram.y"
01834 {
01835 char *id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree,
01836 yyvsp[-1].identifier);
01837
01838 ws_lexer_free_block(pctx, yyvsp[-1].identifier);
01839 if (id == NULL) {
01840 ws_error_memory(pctx);
01841 yyval.vardec = NULL;
01842 } else
01843 yyval.vardec = ws_variable_declaration(pctx, id, yyvsp[0].expr);
01844 }
01845 break;
01846
01847 case 60:
01848 #line 459 "wmlscript/wsgram.y"
01849 { yyval.expr = NULL; }
01850 break;
01851
01852 case 61:
01853 #line 461 "wmlscript/wsgram.y"
01854 { yyval.expr = yyvsp[0].expr; }
01855 break;
01856
01857 case 62:
01858 #line 466 "wmlscript/wsgram.y"
01859 { yyval.stmt = ws_stmt_if(pctx, yylsp[-6].first_line, yyvsp[-4].expr, yyvsp[-2].stmt, yyvsp[0].stmt); }
01860 break;
01861
01862 case 63:
01863 #line 468 "wmlscript/wsgram.y"
01864 { yyval.stmt = ws_stmt_if(pctx, yylsp[-4].first_line, yyvsp[-2].expr, yyvsp[0].stmt, NULL); }
01865 break;
01866
01867 case 64:
01868 #line 473 "wmlscript/wsgram.y"
01869 { yyval.stmt = ws_stmt_while(pctx, yylsp[-4].first_line, yyvsp[-2].expr, yyvsp[0].stmt); }
01870 break;
01871
01872 case 66:
01873 #line 480 "wmlscript/wsgram.y"
01874 { yyval.stmt = ws_stmt_for(pctx, yylsp[-8].first_line, NULL, yyvsp[-6].expr, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].stmt); }
01875 break;
01876
01877 case 67:
01878 #line 483 "wmlscript/wsgram.y"
01879 { yyval.stmt = ws_stmt_for(pctx, yylsp[-9].first_line, yyvsp[-6].list, NULL, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].stmt); }
01880 break;
01881
01882 case 68:
01883 #line 488 "wmlscript/wsgram.y"
01884 { yyval.stmt = ws_stmt_return(pctx, yylsp[-2].first_line, yyvsp[-1].expr); }
01885 break;
01886
01887 case 69:
01888 #line 494 "wmlscript/wsgram.y"
01889 { yyval.expr = NULL; }
01890 break;
01891
01892 case 72:
01893 #line 502 "wmlscript/wsgram.y"
01894 { yyval.expr = ws_expr_comma(pctx, yylsp[-1].first_line, yyvsp[-2].expr, yyvsp[0].expr); }
01895 break;
01896
01897 case 74:
01898 #line 508 "wmlscript/wsgram.y"
01899 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, '=', yyvsp[0].expr); }
01900 break;
01901
01902 case 75:
01903 #line 510 "wmlscript/wsgram.y"
01904 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tMULA, yyvsp[0].expr); }
01905 break;
01906
01907 case 76:
01908 #line 512 "wmlscript/wsgram.y"
01909 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tDIVA, yyvsp[0].expr); }
01910 break;
01911
01912 case 77:
01913 #line 514 "wmlscript/wsgram.y"
01914 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tREMA, yyvsp[0].expr); }
01915 break;
01916
01917 case 78:
01918 #line 516 "wmlscript/wsgram.y"
01919 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tADDA, yyvsp[0].expr); }
01920 break;
01921
01922 case 79:
01923 #line 518 "wmlscript/wsgram.y"
01924 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tSUBA, yyvsp[0].expr); }
01925 break;
01926
01927 case 80:
01928 #line 520 "wmlscript/wsgram.y"
01929 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tLSHIFTA, yyvsp[0].expr); }
01930 break;
01931
01932 case 81:
01933 #line 522 "wmlscript/wsgram.y"
01934 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tRSSHIFTA, yyvsp[0].expr); }
01935 break;
01936
01937 case 82:
01938 #line 524 "wmlscript/wsgram.y"
01939 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tRSZSHIFTA, yyvsp[0].expr); }
01940 break;
01941
01942 case 83:
01943 #line 526 "wmlscript/wsgram.y"
01944 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tANDA, yyvsp[0].expr); }
01945 break;
01946
01947 case 84:
01948 #line 528 "wmlscript/wsgram.y"
01949 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tXORA, yyvsp[0].expr); }
01950 break;
01951
01952 case 85:
01953 #line 530 "wmlscript/wsgram.y"
01954 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tORA, yyvsp[0].expr); }
01955 break;
01956
01957 case 86:
01958 #line 532 "wmlscript/wsgram.y"
01959 { yyval.expr = ws_expr_assign(pctx, yylsp[-2].first_line, yyvsp[-2].identifier, tIDIVA, yyvsp[0].expr); }
01960 break;
01961
01962 case 88:
01963 #line 538 "wmlscript/wsgram.y"
01964 { yyval.expr = ws_expr_conditional(pctx, yylsp[-3].first_line, yyvsp[-4].expr, yyvsp[-2].expr, yyvsp[0].expr); }
01965 break;
01966
01967 case 90:
01968 #line 544 "wmlscript/wsgram.y"
01969 { yyval.expr = ws_expr_logical(pctx, yylsp[-1].first_line, WS_ASM_SCOR, yyvsp[-2].expr, yyvsp[0].expr); }
01970 break;
01971
01972 case 92:
01973 #line 550 "wmlscript/wsgram.y"
01974 { yyval.expr = ws_expr_logical(pctx, yylsp[-1].first_line, WS_ASM_SCAND, yyvsp[-2].expr, yyvsp[0].expr); }
01975 break;
01976
01977 case 94:
01978 #line 556 "wmlscript/wsgram.y"
01979 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_B_OR, yyvsp[-2].expr, yyvsp[0].expr); }
01980 break;
01981
01982 case 96:
01983 #line 562 "wmlscript/wsgram.y"
01984 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_B_XOR, yyvsp[-2].expr, yyvsp[0].expr); }
01985 break;
01986
01987 case 98:
01988 #line 568 "wmlscript/wsgram.y"
01989 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_B_AND, yyvsp[-2].expr, yyvsp[0].expr); }
01990 break;
01991
01992 case 100:
01993 #line 574 "wmlscript/wsgram.y"
01994 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_EQ, yyvsp[-2].expr, yyvsp[0].expr); }
01995 break;
01996
01997 case 101:
01998 #line 576 "wmlscript/wsgram.y"
01999 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_NE, yyvsp[-2].expr, yyvsp[0].expr); }
02000 break;
02001
02002 case 103:
02003 #line 582 "wmlscript/wsgram.y"
02004 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_LT, yyvsp[-2].expr, yyvsp[0].expr); }
02005 break;
02006
02007 case 104:
02008 #line 584 "wmlscript/wsgram.y"
02009 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_GT, yyvsp[-2].expr, yyvsp[0].expr); }
02010 break;
02011
02012 case 105:
02013 #line 586 "wmlscript/wsgram.y"
02014 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_LE, yyvsp[-2].expr, yyvsp[0].expr); }
02015 break;
02016
02017 case 106:
02018 #line 588 "wmlscript/wsgram.y"
02019 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_GE, yyvsp[-2].expr, yyvsp[0].expr); }
02020 break;
02021
02022 case 108:
02023 #line 594 "wmlscript/wsgram.y"
02024 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_B_LSHIFT, yyvsp[-2].expr, yyvsp[0].expr); }
02025 break;
02026
02027 case 109:
02028 #line 596 "wmlscript/wsgram.y"
02029 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_B_RSSHIFT, yyvsp[-2].expr, yyvsp[0].expr); }
02030 break;
02031
02032 case 110:
02033 #line 598 "wmlscript/wsgram.y"
02034 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_B_RSZSHIFT, yyvsp[-2].expr, yyvsp[0].expr); }
02035 break;
02036
02037 case 112:
02038 #line 604 "wmlscript/wsgram.y"
02039 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_ADD, yyvsp[-2].expr, yyvsp[0].expr); }
02040 break;
02041
02042 case 113:
02043 #line 606 "wmlscript/wsgram.y"
02044 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_SUB, yyvsp[-2].expr, yyvsp[0].expr); }
02045 break;
02046
02047 case 115:
02048 #line 612 "wmlscript/wsgram.y"
02049 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_MUL, yyvsp[-2].expr, yyvsp[0].expr); }
02050 break;
02051
02052 case 116:
02053 #line 614 "wmlscript/wsgram.y"
02054 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_DIV, yyvsp[-2].expr, yyvsp[0].expr); }
02055 break;
02056
02057 case 117:
02058 #line 616 "wmlscript/wsgram.y"
02059 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_IDIV, yyvsp[-2].expr, yyvsp[0].expr); }
02060 break;
02061
02062 case 118:
02063 #line 618 "wmlscript/wsgram.y"
02064 { yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_REM, yyvsp[-2].expr, yyvsp[0].expr); }
02065 break;
02066
02067 case 120:
02068 #line 624 "wmlscript/wsgram.y"
02069 { yyval.expr = ws_expr_unary(pctx, yylsp[-1].first_line, WS_ASM_TYPEOF, yyvsp[0].expr); }
02070 break;
02071
02072 case 121:
02073 #line 626 "wmlscript/wsgram.y"
02074 { yyval.expr = ws_expr_unary(pctx, yylsp[-1].first_line, WS_ASM_ISVALID, yyvsp[0].expr); }
02075 break;
02076
02077 case 122:
02078 #line 628 "wmlscript/wsgram.y"
02079 { yyval.expr = ws_expr_unary_var(pctx, yylsp[-1].first_line, WS_TRUE, yyvsp[0].identifier); }
02080 break;
02081
02082 case 123:
02083 #line 630 "wmlscript/wsgram.y"
02084 { yyval.expr = ws_expr_unary_var(pctx, yylsp[-1].first_line, WS_FALSE, yyvsp[0].identifier); }
02085 break;
02086
02087 case 124:
02088 #line 632 "wmlscript/wsgram.y"
02089 {
02090
02091
02092
02093
02094
02095
02096
02097
02098
02099
02100
02101 yyval.expr = ws_expr_binary(pctx, yylsp[-1].first_line, WS_ASM_SUB, yyvsp[0].expr,
02102 ws_expr_const_integer(pctx, yylsp[-1].first_line, 0));
02103 }
02104 break;
02105
02106 case 125:
02107 #line 648 "wmlscript/wsgram.y"
02108 { yyval.expr = ws_expr_unary(pctx, yylsp[-1].first_line, WS_ASM_UMINUS, yyvsp[0].expr); }
02109 break;
02110
02111 case 126:
02112 #line 650 "wmlscript/wsgram.y"
02113 { yyval.expr = ws_expr_unary(pctx, yylsp[-1].first_line, WS_ASM_B_NOT, yyvsp[0].expr); }
02114 break;
02115
02116 case 127:
02117 #line 652 "wmlscript/wsgram.y"
02118 { yyval.expr = ws_expr_unary(pctx, yylsp[-1].first_line, WS_ASM_NOT, yyvsp[0].expr); }
02119 break;
02120
02121 case 129:
02122 #line 658 "wmlscript/wsgram.y"
02123 { yyval.expr = ws_expr_postfix_var(pctx, yylsp[-1].first_line, WS_TRUE, yyvsp[-1].identifier); }
02124 break;
02125
02126 case 130:
02127 #line 660 "wmlscript/wsgram.y"
02128 { yyval.expr = ws_expr_postfix_var(pctx, yylsp[-1].first_line, WS_FALSE, yyvsp[-1].identifier); }
02129 break;
02130
02131 case 132:
02132 #line 666 "wmlscript/wsgram.y"
02133 {
02134 WsFunctionHash *f = ws_function_hash(pctx, yyvsp[-1].identifier);
02135
02136
02137 if (f)
02138 f->usage_count++;
02139
02140 yyval.expr = ws_expr_call(pctx, yylsp[-1].first_line, ' ', NULL, yyvsp[-1].identifier, yyvsp[0].list);
02141 }
02142 break;
02143
02144 case 133:
02145 #line 676 "wmlscript/wsgram.y"
02146 { yyval.expr = ws_expr_call(pctx, yylsp[-1].first_line, '#', yyvsp[-3].identifier, yyvsp[-1].identifier, yyvsp[0].list); }
02147 break;
02148
02149 case 134:
02150 #line 678 "wmlscript/wsgram.y"
02151 { yyval.expr = ws_expr_call(pctx, yylsp[-1].first_line, '.', yyvsp[-3].identifier, yyvsp[-1].identifier, yyvsp[0].list); }
02152 break;
02153
02154 case 135:
02155 #line 683 "wmlscript/wsgram.y"
02156 { yyval.expr = ws_expr_symbol(pctx, yylsp[0].first_line, yyvsp[0].identifier); }
02157 break;
02158
02159 case 136:
02160 #line 685 "wmlscript/wsgram.y"
02161 { yyval.expr = ws_expr_const_invalid(pctx, yylsp[0].first_line); }
02162 break;
02163
02164 case 137:
02165 #line 687 "wmlscript/wsgram.y"
02166 { yyval.expr = ws_expr_const_true(pctx, yylsp[0].first_line); }
02167 break;
02168
02169 case 138:
02170 #line 689 "wmlscript/wsgram.y"
02171 { yyval.expr = ws_expr_const_false(pctx, yylsp[0].first_line); }
02172 break;
02173
02174 case 139:
02175 #line 691 "wmlscript/wsgram.y"
02176 { yyval.expr = ws_expr_const_integer(pctx, yylsp[0].first_line, yyvsp[0].integer); }
02177 break;
02178
02179 case 140:
02180 #line 693 "wmlscript/wsgram.y"
02181 { yyval.expr = ws_expr_const_float(pctx, yylsp[0].first_line, yyvsp[0].vfloat); }
02182 break;
02183
02184 case 141:
02185 #line 695 "wmlscript/wsgram.y"
02186 { yyval.expr = ws_expr_const_string(pctx, yylsp[0].first_line, yyvsp[0].string); }
02187 break;
02188
02189 case 142:
02190 #line 697 "wmlscript/wsgram.y"
02191 { yyval.expr = yyvsp[-1].expr; }
02192 break;
02193
02194 case 143:
02195 #line 702 "wmlscript/wsgram.y"
02196 { yyval.list = ws_list_new(pctx); }
02197 break;
02198
02199 case 144:
02200 #line 704 "wmlscript/wsgram.y"
02201 { yyval.list = yyvsp[-1].list; }
02202 break;
02203
02204 case 145:
02205 #line 709 "wmlscript/wsgram.y"
02206 {
02207 yyval.list = ws_list_new(pctx);
02208 ws_list_append(pctx, yyval.list, yyvsp[0].expr);
02209 }
02210 break;
02211
02212 case 146:
02213 #line 714 "wmlscript/wsgram.y"
02214 { ws_list_append(pctx, yyvsp[-2].list, yyvsp[0].expr); }
02215 break;
02216
02217
02218 }
02219
02220
02221 #line 2221 "y.tab.c"
02222
02223 yyvsp -= yylen;
02224 yyssp -= yylen;
02225 yylsp -= yylen;
02226
02227 YY_STACK_PRINT (yyss, yyssp);
02228
02229 *++yyvsp = yyval;
02230 *++yylsp = yyloc;
02231
02232
02233
02234
02235
02236 yyn = yyr1[yyn];
02237
02238 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
02239 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02240 yystate = yytable[yystate];
02241 else
02242 yystate = yydefgoto[yyn - YYNTOKENS];
02243
02244 goto yynewstate;
02245
02246
02247
02248
02249
02250 yyerrlab:
02251
02252 if (!yyerrstatus)
02253 {
02254 ++yynerrs;
02255 #if YYERROR_VERBOSE
02256 yyn = yypact[yystate];
02257
02258 if (YYPACT_NINF < yyn && yyn < YYLAST)
02259 {
02260 YYSIZE_T yysize = 0;
02261 int yytype = YYTRANSLATE (yychar);
02262 char *yymsg;
02263 int yyx, yycount;
02264
02265 yycount = 0;
02266
02267
02268 for (yyx = yyn < 0 ? -yyn : 0;
02269 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
02270 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02271 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
02272 yysize += yystrlen ("syntax error, unexpected ") + 1;
02273 yysize += yystrlen (yytname[yytype]);
02274 yymsg = (char *) YYSTACK_ALLOC (yysize);
02275 if (yymsg != 0)
02276 {
02277 char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
02278 yyp = yystpcpy (yyp, yytname[yytype]);
02279
02280 if (yycount < 5)
02281 {
02282 yycount = 0;
02283 for (yyx = yyn < 0 ? -yyn : 0;
02284 yyx < (int) (sizeof (yytname) / sizeof (char *));
02285 yyx++)
02286 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02287 {
02288 const char *yyq = ! yycount ? ", expecting " : " or ";
02289 yyp = yystpcpy (yyp, yyq);
02290 yyp = yystpcpy (yyp, yytname[yyx]);
02291 yycount++;
02292 }
02293 }
02294 yyerror (yymsg);
02295 YYSTACK_FREE (yymsg);
02296 }
02297 else
02298 yyerror ("syntax error; also virtual memory exhausted");
02299 }
02300 else
02301 #endif
02302 yyerror ("syntax error");
02303 }
02304
02305 yylerrsp = yylsp;
02306
02307 if (yyerrstatus == 3)
02308 {
02309
02310
02311
02312
02313 if (yychar == YYEOF)
02314 {
02315
02316 YYPOPSTACK;
02317
02318 while (yyss < yyssp)
02319 {
02320 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
02321 yydestruct (yystos[*yyssp], yyvsp, yylsp);
02322 YYPOPSTACK;
02323 }
02324 YYABORT;
02325 }
02326
02327 YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
02328 yydestruct (yytoken, &yylval, &yylloc);
02329 yychar = YYEMPTY;
02330 *++yylerrsp = yylloc;
02331 }
02332
02333
02334
02335 goto yyerrlab1;
02336
02337
02338
02339
02340
02341 yyerrlab1:
02342 yyerrstatus = 3;
02343
02344 for (;;)
02345 {
02346 yyn = yypact[yystate];
02347 if (yyn != YYPACT_NINF)
02348 {
02349 yyn += YYTERROR;
02350 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
02351 {
02352 yyn = yytable[yyn];
02353 if (0 < yyn)
02354 break;
02355 }
02356 }
02357
02358
02359 if (yyssp == yyss)
02360 YYABORT;
02361
02362 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
02363 yydestruct (yystos[yystate], yyvsp, yylsp);
02364 yyvsp--;
02365 yystate = *--yyssp;
02366 yylsp--;
02367 YY_STACK_PRINT (yyss, yyssp);
02368 }
02369
02370 if (yyn == YYFINAL)
02371 YYACCEPT;
02372
02373 YYDPRINTF ((stderr, "Shifting error token, "));
02374
02375 *++yyvsp = yylval;
02376 YYLLOC_DEFAULT (yyloc, yylsp, (yylerrsp - yylsp));
02377 *++yylsp = yyloc;
02378
02379 yystate = yyn;
02380 goto yynewstate;
02381
02382
02383
02384
02385
02386 yyacceptlab:
02387 yyresult = 0;
02388 goto yyreturn;
02389
02390
02391
02392
02393 yyabortlab:
02394 yyresult = 1;
02395 goto yyreturn;
02396
02397 #ifndef yyoverflow
02398
02399
02400
02401 yyoverflowlab:
02402 yyerror ("parser stack overflow");
02403 yyresult = 2;
02404
02405 #endif
02406
02407 yyreturn:
02408 #ifndef yyoverflow
02409 if (yyss != yyssa)
02410 YYSTACK_FREE (yyss);
02411 #endif
02412 return yyresult;
02413 }
02414
02415
02416 #line 717 "wmlscript/wsgram.y"
02417
02418
02419 void
02420 yyerror(char *msg)
02421 {
02422 #if WS_DEBUG
02423 fprintf(stderr, "*** %s:%d: wsc: %s - this msg will be removed ***\n",
02424 global_compiler->input_name, global_compiler->linenum, msg);
02425 #endif
02426 }
02427
See file LICENSE for details about the license agreement for using,
modifying, copying or deriving work from this software.