//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1997 - 1998 // // File: parser.cpp // //-------------------------------------------------------------------------- /* * Created by CSD YACC (IBM PC) from "parser.y" */ #include #line 2 "parser.y" #include "bnparse.h" // disable warning C4102: unreferenced label #pragma warning (disable : 4102) # define tokenEOF 0 # define tokenNil 258 # define tokenError 259 # define tokenIdent 260 # define tokenString 261 # define tokenInteger 262 # define tokenReal 263 # define tokenArray 264 # define tokenContinuous 265 # define tokenCreator 266 # define tokenDefault 267 # define tokenDiscrete 268 # define tokenFormat 269 # define tokenFunction 270 # define tokenImport 271 # define tokenIs 272 # define tokenKeyword 273 # define tokenLeak 274 # define tokenNA 275 # define tokenName 276 # define tokenNamed 277 # define tokenNetwork 278 # define tokenNode 279 # define tokenOf 280 # define tokenParent 281 # define tokenPosition 282 # define tokenProbability 283 # define tokenProperties 284 # define tokenProperty 285 # define tokenPropIdent 286 # define tokenStandard 287 # define tokenState 288 # define tokenType 289 # define tokenUser 290 # define tokenVersion 291 # define tokenWordChoice 292 # define tokenWordReal 293 # define tokenWordString 294 # define tokenAs 295 # define tokenLevel 296 # define tokenDomain 297 # define tokenDistribution 298 # define tokenDecisionGraph 299 # define tokenBranch 300 # define tokenOn 301 # define tokenLeaf 302 # define tokenVertex 303 # define tokenMultinoulli 304 # define tokenMerge 305 # define tokenWith 306 # define tokenFor 307 # define tokenRangeOp 308 # define UNARY 309 #define yyclearin yychar = -1 #define yyerrok yyerrflag = 0 #ifndef YYMAXDEPTH #define YYMAXDEPTH 150 #endif YYSTYPE yylval, yyval; #ifndef YYFARDATA #define YYFARDATA /*nothing*/ #endif #if ! defined YYSTATIC #define YYSTATIC /*nothing*/ #endif #ifndef YYOPTTIME #define YYOPTTIME 0 #endif #ifndef YYR_T #define YYR_T int #endif typedef YYR_T yyr_t; #ifndef YYEXIND_T #define YYEXIND_T unsigned int #endif typedef YYEXIND_T yyexind_t; #ifndef YYACT #define YYACT yyact #endif #ifndef YYPACT #define YYPACT yypact #endif #ifndef YYPGO #define YYPGO yypgo #endif #ifndef YYR1 #define YYR1 yyr1 #endif #ifndef YYR2 #define YYR2 yyr2 #endif #ifndef YYCHK #define YYCHK yychk #endif #ifndef YYDEF #define YYDEF yydef #endif #ifndef YYV #define YYV yyv #endif #ifndef YYS #define YYS yys #endif #ifndef YYLOCAL #define YYLOCAL #endif # define YYERRCODE 256 #line 473 "parser.y" YYSTATIC short yyexca[] ={ #if !(YYOPTTIME) -1, 1, #endif 0, -1, -2, 0, #if !(YYOPTTIME) -1, 76, #endif 125, 168, 44, 168, -2, 176, #if !(YYOPTTIME) -1, 260, #endif 125, 73, -2, 91, }; # define YYNPROD 200 #if YYOPTTIME YYSTATIC yyexind_t yyexcaind[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, }; #endif # define YYLAST 451 YYSTATIC short YYFARDATA YYACT[]={ 303, 24, 25, 80, 79, 120, 121, 89, 127, 295, 128, 126, 158, 129, 160, 20, 31, 157, 239, 206, 84, 306, 226, 225, 104, 133, 168, 54, 198, 178, 221, 98, 197, 254, 16, 102, 98, 6, 17, 15, 190, 185, 180, 62, 179, 80, 79, 238, 180, 78, 179, 235, 18, 19, 171, 170, 169, 99, 96, 270, 255, 101, 99, 180, 90, 179, 234, 91, 93, 94, 77, 90, 213, 209, 91, 208, 304, 232, 103, 309, 130, 308, 224, 119, 24, 25, 80, 79, 24, 25, 174, 297, 298, 296, 184, 137, 135, 299, 282, 274, 122, 261, 251, 216, 87, 148, 46, 28, 138, 139, 140, 115, 207, 75, 175, 136, 191, 155, 86, 143, 144, 145, 82, 278, 189, 264, 134, 173, 125, 118, 277, 52, 50, 48, 45, 27, 214, 22, 319, 74, 77, 264, 230, 152, 330, 317, 315, 317, 316, 247, 318, 228, 318, 317, 315, 110, 316, 66, 318, 97, 290, 289, 181, 181, 314, 272, 236, 166, 61, 165, 311, 59, 164, 142, 95, 111, 286, 243, 242, 287, 242, 113, 233, 240, 69, 70, 241, 196, 112, 67, 265, 229, 188, 60, 181, 215, 181, 319, 313, 319, 293, 202, 203, 69, 70, 319, 312, 68, 256, 124, 117, 259, 146, 53, 77, 23, 181, 131, 292, 263, 132, 192, 194, 186, 222, 205, 51, 37, 100, 109, 33, 159, 83, 8, 81, 85, 49, 39, 218, 38, 40, 26, 73, 116, 47, 30, 250, 161, 153, 200, 141, 162, 181, 172, 65, 258, 64, 76, 149, 177, 176, 80, 79, 77, 181, 177, 176, 80, 79, 183, 63, 44, 253, 35, 182, 302, 301, 281, 92, 285, 182, 294, 80, 79, 193, 92, 271, 123, 284, 201, 283, 280, 210, 279, 269, 182, 305, 307, 80, 79, 199, 310, 268, 181, 273, 320, 219, 262, 147, 321, 322, 222, 291, 223, 267, 324, 325, 326, 327, 328, 329, 323, 300, 260, 249, 275, 237, 76, 150, 151, 212, 211, 187, 114, 72, 154, 29, 245, 227, 288, 244, 276, 163, 266, 257, 246, 248, 204, 108, 107, 105, 71, 36, 42, 88, 252, 41, 32, 156, 55, 43, 34, 21, 5, 14, 13, 12, 11, 10, 9, 195, 7, 4, 3, 2, 1, 57, 56, 106, 58, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 217, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220 }; YYSTATIC short YYFARDATA YYPACT[]={ -1000,-1000,-241,-1000,-245, 14,-172,-245,-1000,-1000, -1000,-1000,-1000,-1000,-1000, 12,-153,-1000,-1000,-283, 190,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 187, -172,-172,-1000,-1000,-1000,-1000, 11,-154, 10, 9, 186, 8, 172, -98, -82,-1000,-1000,-1000,-259,-1000, -276,-156,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 6, 6, 6,-1000, 115,-1000,-1000,-1000,-229,-224,-225, 6,-101, -13, 85,-1000, 6,-303,-302,-176,-1000, -1000, 84,-1000,-292,-182, 176,-1000,-270, 1,-165, -1000,-1000,-1000,-217,-166,-1000,-1000,-1000,-1000,-1000, 6, 6, 6,-1000,-1000, 114,-1000,-1000,-1000,-1000, -1000, 6, 6, 6, 171,-155,-1000,-1000,-259,-172, -172,-217,-1000,-1000,-1000,-276,-172,-289,-290,-289, -1000,-1000,-156,-172,-1000, 113, 110, 108,-238,-1000, -1, -1,-1000,-167,-227, 183,-1000, 148,-1000,-1000, -1000,-1000,-1000,-1000,-237, 181,-1000,-1000,-1000,-237, 182,-172,-1000,-1000,-1000,-1000,-1000, 143,-248,-1000, -1000,-252, -1,-1000, 5,-1000,-1000,-1000,-1000,-217, -217,-1000,-1000,-1000,-1000, -72, 30, 13,-157,-1000, -172,-1000,-259,-1000, 20,-289,-179,-271, 60,-1000, 98,-1000,-1000,-1000,-1000,-172,-185, 138,-196,-211, -1000,-1000, 107,-1000,-223,-280,-1000,-1000, 142,-1000, -303, 136,-1000, 181,-1000,-1000,-1000,-1000,-1000,-1000, 5,-1000, 56, 30,-1000,-1000,-1000,-1000, 6,-158, -1000,-259, 20,-1000,-1000,-172,-1000, 6, 170,-1000, -159, 179,-1000,-1000, 97,-1000,-1000,-1000,-1000,-1000, 19, 106,-1000,-161,-172,-1000, 7, -2,-1000,-162, -1000, 6,-1000, 135,-1000,-1000,-1000,-1000,-1000, 102, 101, 20, 178, 159,-169,-1000,-1000,-163,-172,-1000, -1000, 134, 36, 6, 126,-1000,-1000,-1000,-1000,-1000, 81, 157, 120, 111, 36,-1000,-1000,-1000, 36, 36, -1000,-169,-1000,-1000, 36, 36, 36, 36, 36, 36, 103,-1000,-1000,-1000, 111, 105, 105, 44, 44, 44, -1000 }; YYSTATIC short YYFARDATA YYPGO[]={ 0, 380, 9, 112, 208, 159, 60, 379, 378, 377, 21, 29, 376, 375, 374, 373, 372, 371, 233, 369, 368, 367, 366, 365, 364, 363, 362, 361, 360, 359, 7, 358, 117, 357, 356, 354, 353, 352, 351, 350, 349, 348, 157, 347, 344, 343, 341, 339, 33, 338, 337, 336, 334, 333, 332, 331, 330, 326, 324, 323, 314, 308, 307, 304, 302, 294, 293, 291, 290, 288, 281, 277, 30, 276, 275, 0, 273, 271, 270, 256, 254, 253, 127, 250, 249, 114, 245, 244, 242, 139, 113, 116, 238, 237, 236, 235, 118, 234, 122, 232, 124, 231 }; YYSTATIC yyr_t YYFARDATA YYR1[]={ 0, 14, 13, 15, 17, 17, 18, 18, 18, 18, 18, 18, 16, 25, 25, 27, 26, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 32, 32, 9, 12, 7, 34, 35, 24, 33, 36, 33, 37, 20, 38, 38, 39, 39, 39, 39, 39, 8, 40, 43, 45, 43, 44, 44, 46, 47, 46, 48, 48, 48, 6, 4, 4, 50, 49, 41, 51, 52, 54, 21, 55, 55, 58, 60, 55, 53, 53, 53, 61, 61, 56, 62, 62, 63, 63, 57, 57, 59, 59, 64, 64, 65, 65, 65, 69, 68, 70, 70, 70, 2, 2, 2, 71, 66, 67, 73, 73, 74, 74, 72, 72, 3, 3, 3, 11, 11, 11, 11, 10, 10, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 19, 77, 77, 78, 78, 78, 79, 79, 80, 80, 1, 1, 1, 1, 1, 5, 5, 81, 42, 42, 83, 42, 82, 82, 84, 84, 85, 85, 85, 86, 22, 87, 88, 88, 88, 89, 89, 90, 90, 90, 90, 90, 90, 90, 90, 91, 92, 92, 92, 23, 93, 95, 95, 95, 96, 96, 94, 97, 97, 97, 98, 98, 98, 98, 99, 101, 100, 100 }; YYSTATIC yyr_t YYFARDATA YYR2[]={ 0, 0, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 0, 4, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 4, 4, 0, 0, 6, 0, 0, 3, 0, 6, 0, 3, 1, 1, 1, 1, 1, 3, 4, 2, 0, 6, 0, 1, 0, 0, 4, 0, 1, 3, 1, 1, 1, 0, 4, 7, 0, 0, 0, 9, 2, 1, 0, 0, 6, 0, 2, 1, 1, 3, 4, 0, 3, 1, 3, 0, 4, 0, 2, 3, 3, 0, 4, 2, 0, 2, 0, 1, 3, 1, 1, 1, 0, 2, 4, 0, 1, 1, 3, 1, 3, 2, 2, 1, 2, 2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 1, 1, 2, 2, 0, 5, 0, 3, 1, 1, 1, 2, 2, 6, 4, 3, 3, 1, 1, 3, 1, 1, 0, 5, 4, 0, 4, 3, 1, 1, 3, 1, 1, 1, 0, 4, 3, 0, 1, 3, 3, 1, 3, 3, 2, 2, 2, 2, 1, 1, 3, 0, 1, 3, 4, 4, 0, 1, 3, 3, 1, 3, 0, 1, 3, 4, 4, 4, 6, 2, 4, 0, 2 }; YYSTATIC short YYFARDATA YYCHK[]={ -1000, -13, -14, -15, -16, -25, 278, -17, -18, -19, -20, -21, -22, -23, -24, 284, 279, 283, 297, 298, 260, -26, 123, -4, 260, 261, -18, 123, 260, -51, -86, 299, -33, 40, -27, -76, -37, 40, -4, -93, -4, -34, -36, -28, -77, 123, 260, -87, 123, -94, 123, 40, 123, 41, 125, -29, -9, -12, -7, 269, 291, 266, 125, -78, -79, -80, -42, 271, 289, 285, 286, -38, -52, -88, -89, -90, -4, -10, 308, 263, 262, -97, -98, -99, 296, -95, -96, 260, -35, -30, 58, 61, 272, -30, -30, 59, 287, -5, 260, 286, -5, 286, 260, -30, 125, -39, -8, -40, -41, -42, 256, 276, 289, 282, -53, 124, 256, 125, 44, -30, 308, 308, -10, -4, 125, 44, 303, 300, 302, 305, 262, 41, 44, 295, 125, 261, -10, 261, -30, -30, -30, -83, 59, -30, -30, -30, 41, -61, 260, -89, -4, -4, -10, -98, -4, -32, -31, 306, 301,-101, 304, -32, -96, -4, 59, 59, 59, -1, 264, 294, 293, 292, -81, -82, 91, -85, 261, 260, -11, 45, 43, -10, 275, -82, 261, 268, 40, -54, 44,-100, 277, -91, 40,-100, 40, -4, 44, 280, 280, -82, -84, -85, -10, -10, -43, 297, 91, -3, 45, 43, 262, -55, -56, 59, 123, -30, 260, -4, -92, -90, -4, -72, -11, -32, 261, 294, 293, -49, 91, 93, 44, -4, 262, 44, 262, 262, 59, -57, 270, 298, 41, 44, 44, 41, -91, -50, -85, 93, -3, -58, -30, 260, -90, -11, -48, -6, -4, -44, -30, 41, -59, 260, -62, 40, 44, 93, -45, -60, -64, -65, 40, 267, 59, -63, 260, -6, -46, 123, 125, -66, -67, -71, 260, -68, -69, -30, 41, 44, -47, 59, 59, -72, 40, 41, -70, -2, 262, 260, 261, 260, -48, -73, -74, -75, 40, 260, -10, 261, 45, 43, -30, 44, 125, 41, 44, 43, 45, 42, 47, 94, -75, -75, -75, -2, -75, -75, -75, -75, -75, -75, 41 }; YYSTATIC short YYFARDATA YYDEF[]={ 1, -2, 0, 2, 0, 0, 14, 3, 4, 6, 7, 8, 9, 10, 11, 0, 0, 66, 161, 0, 35, 12, 15, 13, 61, 62, 5, 131, 38, 0, 0, 0, 32, 36, 17, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 67, 162, 164, 181, 189, 183, 33, 37, 16, 18, 19, 20, 21, 0, 0, 0, 132, 0, 135, 136, 137, 0, 0, 0, 0, 0, 75, 0, 165, 0, -2, 175, 0, 118, 119, 0, 190, 0, 0, 0, 184, 187, 0, 0, 22, 23, 24, 0, 0, 134, 138, 139, 147, 148, 0, 0, 0, 152, 39, 0, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 77, 163, 0, 0, 174, 173, 171, 172, 188, 0, 0, 28, 0, 28, 196, 182, 0, 0, 34, 0, 0, 0, 0, 149, 0, 0, 41, 0, 0, 0, 68, 76, 78, 166, 167, 170, 169, 191, 198, 0, 27, 25, 26, 198, 0, 0, 185, 186, 29, 30, 31, 141, 0, 144, 145, 0, 0, 151, 0, 155, 158, 159, 160, 0, 0, 116, 117, 153, 47, 0, 0, 0, 0, 192, 0, 193, 178, 194, 0, 28, 0, 0, 0, 150, 0, 156, 114, 115, 48, 0, 0, 0, 0, 0, 113, 69, 0, 71, 85, 0, 79, 199, 0, 179, 176, 0, 109, 0, 140, 142, 143, 146, 63, 154, 0, 49, 0, 0, 111, 112, 70, 72, 0, 0, 177, 0, 0, 197, 195, 57, 157, 52, 0, 87, 0, 81, 180, 110, 0, 58, 60, 50, 53, 65, -2, 0, 80, 0, 0, 64, 54, 0, 88, 102, 94, 0, 86, 0, 83, 59, 51, 55, 74, 0, 0, 0, 0, 0, 96, 93, 82, 0, 57, 89, 90, 103, 105, 0, 95, 97, 99, 100, 101, 84, 0, 0, 106, 107, 0, 126, 127, 128, 0, 0, 92, 0, 56, 104, 0, 0, 0, 0, 0, 0, 0, 129, 130, 98, 108, 121, 122, 123, 124, 125, 120 }; #ifdef YYRECOVER YYSTATIC short yyrecover[] = { -1000 }; #endif /* SCCSWHAT( "@(#)yypars.c 3.1 88/11/16 22:00:49 " ) */ #line 3 "yypars.c" # define YYFLAG -1000 # define YYERROR goto yyerrlab # define YYACCEPT return 0 # define YYABORT return 1 #ifdef YYDEBUG /* RRR - 10/9/85 */ #define yyprintf(a, b, c, d) printf(a, b, c, d) #else #define yyprintf(a, b, c, d) #endif #ifndef YYPRINT #define YYPRINT printf #endif /* parser for yacc output */ #ifdef YYDUMP int yydump = 1; /* 1 for dumping */ void yydumpinfo(void); #endif #ifdef YYDEBUG YYSTATIC int yydebug = 0; /* 1 for debugging */ #endif #ifndef YYVGLOBAL YYSTATIC #endif YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ YYSTATIC short yys[YYMAXDEPTH]; /* the parse stack */ #if ! defined(YYRECURSIVE) YYSTATIC int yychar = -1; /* current input token number */ YYSTATIC int yynerrs = 0; /* number of errors */ YYSTATIC short yyerrflag = 0; /* error recovery flag */ #endif #ifdef YYRECOVER /* ** yyscpy : copy f onto t and return a ptr to the null terminator at the ** end of t. */ YYSTATIC char *yyscpy(register char* t, register char* f) { while (*t = *f++) t++; return t; /* ptr to the null char */ } #endif #ifndef YYNEAR #define YYNEAR #endif #ifndef YYPASCAL #define YYPASCAL #endif #ifndef YYLOCAL #define YYLOCAL #endif #if ! defined YYPARSER #define YYPARSER yyparse #endif #if ! defined YYLEX #define YYLEX yylex #endif #if defined(YYRECURSIVE) YYSTATIC int yychar = -1; /* current input token number */ YYSTATIC int yynerrs = 0; /* number of errors */ YYSTATIC short yyerrflag = 0; /* error recovery flag */ YYSTATIC short yyn; YYSTATIC short yystate = 0; YYSTATIC short *yyps= &yys[-1]; YYSTATIC YYSTYPE *yypv= &yyv[-1]; YYSTATIC short yyj; YYSTATIC short yym; #endif YYLOCAL YYNEAR YYPASCAL YYPARSER() { #if !defined(YYRECURSIVE) register short yyn; short yystate = 0; short* yyps = &yys[-1]; YYSTYPE* yypv = &yyv[-1]; short yyj, yym; #endif #ifdef YYDUMP yydumpinfo(); #endif yystack: /* put a state and value onto the stack */ yyprintf("state %d, char %d\n", yystate, yychar, 0); if (++yyps > &yys[YYMAXDEPTH]) { yyerror("yacc stack overflow"); YYABORT; } *yyps = yystate; ++yypv; *yypv = yyval; yynewstate: yyn = YYPACT[yystate]; if (yyn <= YYFLAG) /* simple state, no lookahead */ goto yydefault; if (yychar < 0) /* need a lookahead */ yychar = YYLEX(); if (((yyn += (short)yychar) < 0) || (yyn >= YYLAST)) goto yydefault; if (YYCHK[ yyn = YYACT[yyn]] == yychar) { /* valid shift */ yychar = -1; yyval = yylval; yystate = yyn; if (yyerrflag > 0) --yyerrflag; goto yystack; } yydefault: /* default state action */ if ((yyn = YYDEF[yystate]) == -2) { register short* yyxi; if (yychar < 0) yychar = YYLEX(); /* ** search exception table, we find a -1 followed by the current state. ** if we find one, we'll look through terminal,state pairs. if we find ** a terminal which matches the current one, we have a match. ** the exception table is when we have a reduce on a terminal. */ #if YYOPTTIME for (yyxi = yyexca + yyexcaind[yystate]; *yyxi != yychar && *yyxi >= 0; yyxi += 2) ; #else for (yyxi = yyexca; *yyxi != -1 || yyxi[1] != yystate; yyxi += 2) ; while (*(yyxi += 2) >= 0) { if (*yyxi == yychar) break; } #endif if ((yyn = yyxi[1]) < 0) { YYACCEPT; // accept } } if (yyn == 0) /* error */ { /* error ... attempt to resume parsing */ switch (yyerrflag) { case 0: /* brand new error */ #ifdef YYRECOVER { register int i,j; for (i = 0; yyrecover[i] != -1000 && yystate > yyrecover[i]; i += 3) ; if (yystate == yyrecover[i]) { yyprintf("recovered, from state %d to state %d on token %d\n", yystate, yyrecover[i + 2], yyrecover[i + 1]); j = yyrecover[i + 1]; if (j < 0) { /* ** here we have one of the injection set, so we're not quite ** sure that the next valid thing will be a shift. so we'll ** count it as an error and continue. ** actually we're not absolutely sure that the next token ** we were supposed to get is the one when j > 0. for example, ** for(+) {;} error recovery with yyerrflag always set, stops ** after inserting one ; before the +. at the point of the +, ** we're pretty sure the guy wants a 'for' loop. without ** setting the flag, when we're almost absolutely sure, we'll ** give him one, since the only thing we can shift on this ** error is after finding an expression followed by a + */ yyerrflag++; j = -j; } if (yyerrflag <= 1) { /* only on first insertion */ yyrecerr(yychar, j); /* what was, what should be first */ } yyval = yyeval(j); yystate = yyrecover[i + 2]; goto yystack; } } #endif yyerror("syntax error"); yyerrlab: ++yynerrs; case 1: case 2: /* incompletely recovered error ... try again */ yyerrflag = 3; /* find a state where "error" is a legal shift action */ while (yyps >= yys) { yyn = YYPACT[*yyps] + YYERRCODE; if (yyn>= 0 && yyn < YYLAST && YYCHK[YYACT[yyn]] == YYERRCODE) { yystate = YYACT[yyn]; /* simulate a shift of "error" */ goto yystack; } yyn = YYPACT[*yyps]; /* the current yyps has no shift onn "error", pop stack */ yyprintf("error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1], 0); --yyps; --yypv; } /* there is no state on the stack with an error shift ... abort */ yyabort: YYABORT; case 3: /* no shift yet; clobber input char */ yyprintf("error recovery discards char %d\n", yychar, 0, 0); if (yychar == 0) goto yyabort; /* don't discard EOF, quit */ yychar = -1; goto yynewstate; /* try again in the same state */ } } /* reduction by production yyn */ yyreduce: { register YYSTYPE *yypvt; yyprintf("reduce %d\n",yyn, 0, 0); yypvt = yypv; yyps -= YYR2[yyn]; yypv -= YYR2[yyn]; yyval = yypv[1]; yym = yyn; yyn = (short)YYR1[yyn]; /* consult goto table to find next state */ yyj = YYPGO[yyn] + *yyps + 1; if (yyj >= YYLAST || YYCHK[yystate = YYACT[yyj]] != -yyn) { yystate = YYACT[YYPGO[yyn]]; } #ifdef YYDUMP yydumpinfo(); #endif switch (yym) { case 1: #line 76 "parser.y" { yyclearin; } break; case 13: #line 97 "parser.y" { SetNetworkSymb(yypvt[-0].zsr); } break; case 15: #line 100 "parser.y" { _eBlk = EBLKNET; } break; case 16: #line 102 "parser.y" { _eBlk = EBLKNONE; } break; case 19: #line 109 "parser.y" { SetFormat(yypvt[-0].zsr); } break; case 20: #line 110 "parser.y" { SetVersion(yypvt[-0].real); } break; case 21: #line 111 "parser.y" { SetCreator(yypvt[-0].zsr); } break; case 29: #line 128 "parser.y" { yyval.zsr = yypvt[-1].zsr; } break; case 30: #line 131 "parser.y" { yyval.real = yypvt[-1].real; } break; case 31: #line 134 "parser.y" { yyval.zsr = yypvt[-1].zsr; } break; case 32: #line 138 "parser.y" { _eBlk = EBLKIGN; WarningSkip(yypvt[-1].zsr); } break; case 33: #line 140 "parser.y" { SkipUntil("}"); } break; case 34: #line 141 "parser.y" { _eBlk = EBLKNONE; } break; case 36: #line 145 "parser.y" { SkipUntil(")"); } break; case 38: #line 150 "parser.y" { _eBlk = EBLKNODE; StartNodeDecl(yypvt[-0].zsr); } break; case 39: #line 153 "parser.y" { CheckNodeInfo(); _eBlk = EBLKNONE; } break; case 47: #line 167 "parser.y" { SetNodeFullName(yypvt[-0].zsr); } break; case 49: #line 173 "parser.y" { SetNodeDomain(yypvt[-0].zsr); } break; case 50: #line 174 "parser.y" { SetNodeCstate(yypvt[-2].ui); } break; case 55: #line 182 "parser.y" { ClearCstr(); } break; case 56: #line 182 "parser.y" { SetStates(); } break; case 60: #line 190 "parser.y" { AddStr(yypvt[-0].zsr); } break; case 63: #line 196 "parser.y" { ClearCstr(); } break; case 65: #line 199 "parser.y" { SetNodePosition(yypvt[-3].integer, yypvt[-1].integer); } break; case 66: #line 203 "parser.y" { _eBlk = EBLKPROB; ClearNodeInfo(); } break; case 67: #line 205 "parser.y" { SetNodeSymb(yypvt[-0].zsr, false); } break; case 68: #line 207 "parser.y" { CheckParentList(); } break; case 69: #line 208 "parser.y" { _eBlk = EBLKNONE; } break; case 71: #line 212 "parser.y" { EmptyProbEntries(); } break; case 72: #line 215 "parser.y" { InitProbEntries(); } break; case 73: #line 217 "parser.y" { CheckProbEntries(); } break; case 78: #line 226 "parser.y" { AddSymb(yypvt[-0].zsr); } break; case 79: #line 227 "parser.y" { AddSymb(yypvt[-0].zsr); } break; case 86: #line 241 "parser.y" { CheckCIFunc(yypvt[-1].zsr); } break; case 91: #line 252 "parser.y" { _vui.clear(); CheckDPI(false); } break; case 92: #line 253 "parser.y" { CheckDPI(false); } break; case 93: #line 254 "parser.y" { CheckDPI(true); } break; case 94: #line 257 "parser.y" { _vui.clear(); } break; case 97: #line 261 "parser.y" { AddUi(yypvt[-0].ui); } break; case 98: #line 262 "parser.y" { AddUi(yypvt[-0].ui); } break; case 99: #line 265 "parser.y" { yyval.ui = UiDpi(yypvt[-0].ui); } break; case 100: #line 266 "parser.y" { yyval.ui = UiDpi(yypvt[-0].zsr); } break; case 101: #line 267 "parser.y" { yyval.ui = UiDpi(yypvt[-0].zsr); } break; case 102: #line 270 "parser.y" { _vreal.clear(); } break; case 103: #line 270 "parser.y" { CheckProbVector(); } break; case 104: #line 273 "parser.y" { CheckPDF(yypvt[-3].zsr); } break; case 109: #line 284 "parser.y" { AddReal(yypvt[-0].real); } break; case 110: #line 285 "parser.y" { AddReal(yypvt[-0].real); } break; case 111: #line 289 "parser.y" { yyval.integer = -INT(yypvt[-0].ui); } break; case 112: #line 290 "parser.y" { yyval.integer = +INT(yypvt[-0].ui); } break; case 113: #line 291 "parser.y" { yyval.integer = INT(yypvt[-0].ui); } break; case 114: #line 294 "parser.y" { yyval.real = -yypvt[-0].real; } break; case 115: #line 295 "parser.y" { yyval.real = yypvt[-0].real; } break; case 117: #line 297 "parser.y" { yyval.real = -1; } break; case 118: #line 300 "parser.y" { yyval.real = yypvt[-0].real; } break; case 119: #line 301 "parser.y" { yyval.real = REAL(yypvt[-0].ui); } break; case 126: #line 310 "parser.y" { CheckIdent(yypvt[-0].zsr); } break; case 131: #line 319 "parser.y" { StartProperties(); } break; case 132: #line 321 "parser.y" { EndProperties(); } break; case 138: #line 331 "parser.y" { ImportPropStandard(); } break; case 139: #line 332 "parser.y" { ImportProp(yypvt[-0].zsr); } break; case 140: #line 335 "parser.y" { AddPropType(yypvt[-4].zsr, yypvt[-2].ui, yypvt[-0].zsr); } break; case 141: #line 336 "parser.y" { AddPropType(yypvt[-2].zsr, yypvt[-0].ui, ZSREF()); } break; case 142: #line 339 "parser.y" { yyval.ui = fPropString | fPropArray; } break; case 143: #line 340 "parser.y" { yyval.ui = fPropArray; } break; case 144: #line 341 "parser.y" { yyval.ui = fPropString; } break; case 145: #line 342 "parser.y" { yyval.ui = 0; } break; case 146: #line 343 "parser.y" { yyval.ui = fPropChoice; } break; case 149: #line 352 "parser.y" { ClearVpv(); } break; case 150: #line 352 "parser.y" { CheckProperty(yypvt[-3].zsr); } break; case 152: #line 354 "parser.y" { ClearVpv(); } break; case 153: #line 354 "parser.y" { CheckProperty(yypvt[-3].zsr); } break; case 158: #line 365 "parser.y" { AddPropVar( yypvt[-0].zsr ); } break; case 159: #line 366 "parser.y" { AddPropVar( yypvt[-0].zsr ); } break; case 160: #line 367 "parser.y" { AddPropVar( yypvt[-0].real ); } break; case 161: #line 371 "parser.y" { ClearDomain(); } break; case 162: #line 373 "parser.y" { CheckDomain( yypvt[-1].zsr ); } break; case 167: #line 385 "parser.y" { AddRange(yypvt[-0].zsr, false ); } break; case 168: #line 386 "parser.y" { AddRange(yypvt[-0].zsr, true ); } break; case 169: #line 393 "parser.y" { SetRanges( true, yypvt[-2].real, true, yypvt[-0].real ); } break; case 170: #line 395 "parser.y" { SetRanges( yypvt[-2].zsr, yypvt[-0].zsr ); } break; case 171: #line 397 "parser.y" { SetRanges( false, 0.0, true, yypvt[-0].real ); } break; case 172: #line 399 "parser.y" { SetRanges( ZSREF(), yypvt[-0].zsr ); } break; case 173: #line 401 "parser.y" { SetRanges( true, yypvt[-1].real, false, 0.0 ); } break; case 174: #line 403 "parser.y" { SetRanges( yypvt[-1].zsr, ZSREF() ); } break; case 175: #line 405 "parser.y" { SetRanges( true, yypvt[-0].real, true, yypvt[-0].real ); } break; case 176: #line 407 "parser.y" { SetRanges( yypvt[-0].zsr, yypvt[-0].zsr ); } break;/* End of actions */ } } goto yystack; /* stack new state and value */ } #ifdef YYDUMP YYLOCAL void YYNEAR YYPASCAL yydumpinfo(void) { short stackindex; short valindex; //dump yys printf("short yys[%d] {\n", YYMAXDEPTH); for (stackindex = 0; stackindex < YYMAXDEPTH; stackindex++){ if (stackindex) printf(", %s", stackindex % 10 ? "\0" : "\n"); printf("%6d", yys[stackindex]); } printf("\n};\n"); //dump yyv printf("YYSTYPE yyv[%d] {\n", YYMAXDEPTH); for (valindex = 0; valindex < YYMAXDEPTH; valindex++){ if (valindex) printf(", %s", valindex % 5 ? "\0" : "\n"); printf("%#*x", 3+sizeof(YYSTYPE), yyv[valindex]); } printf("\n};\n"); } #endif