From e5081f8c08424e4511d50a3b1fc187666c95852c Mon Sep 17 00:00:00 2001 From: evans1629 Date: Sun, 15 Dec 2002 07:51:35 +0000 Subject: [PATCH] ADded numabstract types. --- src/Headers/cgrammar_tokens.h | 77 +- src/Headers/cpplib.h | 2 +- src/Headers/cprim.h | 2 +- src/Headers/exprNode.h | 4 +- src/Headers/lclsyntable.h | 19 +- src/Headers/lcltokentable.h | 9 +- src/Headers/lctype.h | 15 +- src/Headers/llgrammar_gen.h | 279 +-- src/Headers/llgrammar_gen2.h | 279 +-- src/Headers/misc.h | 14 +- src/Headers/opFormNode.h | 2 +- src/Headers/qual.h | 147 +- src/Headers/sigNode.h | 2 +- src/Headers/signNode.h | 2 +- src/Headers/signature_gen.h | 101 +- src/Headers/uentry.h | 8 +- src/Headers/version.h | 2 +- src/Makefile.am | 3 +- src/Makefile.in | 3 +- src/abstract.c | 16 +- src/cgrammar.c.der | 4266 ++++++++++++++++----------------- src/cgrammar.y | 3 +- src/constraintExpr.c | 10 +- src/constraintGeneration.c | 2 +- src/context.c | 14 +- src/cpphash.c | 4 +- src/cpplib.c | 39 +- src/cprim.c | 48 +- src/cscanner.l | 1 + src/cstring.c | 2 +- src/cstringList.c | 2 +- src/cstringSList.c | 2 +- src/ctbase.i | 90 +- src/ctype.c | 44 +- src/exprNode.c | 1232 +++++----- src/fileTable.c | 2 +- src/filelocList.c | 4 +- src/flags.c | 4 + src/flags.def | 24 + src/general.c | 16 + src/inputStream.c | 12 +- src/lcllib.c | 9 +- src/lclsyntable.c | 6 +- src/lcltokentable.c | 6 +- src/llerror.c | 57 +- src/llgrammar.c.der | 3764 +++++++++++++++-------------- src/llmain.c | 9 + src/lslinit.c | 2 + src/mtscanner.c | 3 +- src/osd.c | 9 +- src/qual.c | 23 + src/signature.c.der | 1352 ++++++----- src/symtable.c | 9 +- src/tokentable.c | 6 +- src/uentry.c | 89 +- src/usymtab.c | 4 +- src/usymtab_interface.c | 10 +- test/Makefile.am | 21 +- test/Makefile.in | 19 +- test/charlit.expect | 6 +- test/modifies.c | 3 +- test/mystrncat.c | 2 +- test/nullassign.expect | 9 + test/nullret.expect | 9 + test/numabstract.c | 22 + test/numabstract.expect | 37 + test/sizesigns.c | 8 +- test/sizesigns.expect | 26 + 68 files changed, 6656 insertions(+), 5671 deletions(-) create mode 100644 test/nullassign.expect create mode 100644 test/nullret.expect create mode 100644 test/numabstract.c create mode 100644 test/numabstract.expect diff --git a/src/Headers/cgrammar_tokens.h b/src/Headers/cgrammar_tokens.h index 36cdfe3..01aa633 100644 --- a/src/Headers/cgrammar_tokens.h +++ b/src/Headers/cgrammar_tokens.h @@ -265,44 +265,45 @@ typedef union # define QNOTNULL 408 # define QRELNULL 409 # define QABSTRACT 410 -# define QCONCRETE 411 -# define QMUTABLE 412 -# define QIMMUTABLE 413 -# define QTRUENULL 414 -# define QFALSENULL 415 -# define QEXTERNAL 416 -# define QREFCOUNTED 417 -# define QREFS 418 -# define QNEWREF 419 -# define QTEMPREF 420 -# define QKILLREF 421 -# define QRELDEF 422 -# define CGCHAR 423 -# define CBOOL 424 -# define CINT 425 -# define CGFLOAT 426 -# define CDOUBLE 427 -# define CVOID 428 -# define QANYTYPE 429 -# define QINTEGRALTYPE 430 -# define QUNSIGNEDINTEGRALTYPE 431 -# define QSIGNEDINTEGRALTYPE 432 -# define QNULLTERMINATED 433 -# define QSETBUFFERSIZE 434 -# define QSETSTRINGLENGTH 435 -# define QMAXSET 436 -# define QMAXREAD 437 -# define QTESTINRANGE 438 -# define TCAND 439 -# define IDENTIFIER 440 -# define NEW_IDENTIFIER 441 -# define TYPE_NAME_OR_ID 442 -# define CANNOTATION 443 -# define CCONSTANT 444 -# define ITER_NAME 445 -# define ITER_ENDNAME 446 -# define TYPE_NAME 447 -# define METASTATE_NAME 448 +# define QNUMABSTRACT 411 +# define QCONCRETE 412 +# define QMUTABLE 413 +# define QIMMUTABLE 414 +# define QTRUENULL 415 +# define QFALSENULL 416 +# define QEXTERNAL 417 +# define QREFCOUNTED 418 +# define QREFS 419 +# define QNEWREF 420 +# define QTEMPREF 421 +# define QKILLREF 422 +# define QRELDEF 423 +# define CGCHAR 424 +# define CBOOL 425 +# define CINT 426 +# define CGFLOAT 427 +# define CDOUBLE 428 +# define CVOID 429 +# define QANYTYPE 430 +# define QINTEGRALTYPE 431 +# define QUNSIGNEDINTEGRALTYPE 432 +# define QSIGNEDINTEGRALTYPE 433 +# define QNULLTERMINATED 434 +# define QSETBUFFERSIZE 435 +# define QSETSTRINGLENGTH 436 +# define QMAXSET 437 +# define QMAXREAD 438 +# define QTESTINRANGE 439 +# define TCAND 440 +# define IDENTIFIER 441 +# define NEW_IDENTIFIER 442 +# define TYPE_NAME_OR_ID 443 +# define CANNOTATION 444 +# define CCONSTANT 445 +# define ITER_NAME 446 +# define ITER_ENDNAME 447 +# define TYPE_NAME 448 +# define METASTATE_NAME 449 extern cgrammar_YYSTYPE yylval; diff --git a/src/Headers/cpplib.h b/src/Headers/cpplib.h index 1633d67..c4778b1 100644 --- a/src/Headers/cpplib.h +++ b/src/Headers/cpplib.h @@ -155,7 +155,7 @@ struct cppReader { /* Current maximum length of directory names in the search path for include files. (Altered as we get more of them.) */ - int max_include_len; + size_t max_include_len; /*@null@*/ struct if_stack *if_stack; diff --git a/src/Headers/cprim.h b/src/Headers/cprim.h index 4720f9e..93607e7 100644 --- a/src/Headers/cprim.h +++ b/src/Headers/cprim.h @@ -114,8 +114,8 @@ extern bool cprim_closeEnough (cprim, cprim) /*@*/ ; extern bool cprim_closeEnoughDeep (cprim, cprim) /*@*/ ; extern /*@only@*/ cstring cprim_unparse (cprim) /*@*/ ; extern cprim cprim_fromInt (int p_i); - extern bool cprim_isInt(cprim p_c); +extern int cprim_getExpectedBits (cprim p_c) /*@*/ ; # else # error "Multiple include" diff --git a/src/Headers/exprNode.h b/src/Headers/exprNode.h index 1e68d4f..c9fed14 100644 --- a/src/Headers/exprNode.h +++ b/src/Headers/exprNode.h @@ -325,8 +325,8 @@ extern /*@dependent@*/ /*@observer@*/ cstring exprNode_unparse (/*@temp@*/ exprNode p_e) /*@*/ ; extern /*@falsewhennull@*/ bool exprNode_isBlock (exprNode p_e) /*@*/ ; -extern /*@falsewhennull@*/ bool exprNode_isCharLit (exprNode p_e) /*@*/ ; -extern /*@falsewhennull@*/ bool exprNode_isNumLit (exprNode p_e) /*@*/ ; +extern /*@falsewhennull@*/ bool exprNode_isCharLiteral (exprNode p_e) /*@*/ ; +extern /*@falsewhennull@*/ bool exprNode_isNumLiteral (exprNode p_e) /*@*/ ; extern exprNode exprNode_makeInitialization (/*@only@*/ idDecl p_t, /*@only@*/ exprNode p_e); diff --git a/src/Headers/lclsyntable.h b/src/Headers/lclsyntable.h index 067f9e1..16de564 100644 --- a/src/Headers/lclsyntable.h +++ b/src/Headers/lclsyntable.h @@ -4,13 +4,20 @@ ** */ /* -** syntable.h +** lclsyntable.h */ -extern void LCLAddSyn(lsymbol, lsymbol); +# ifndef LCLSYNTABLE_H +# define LCLSYNTABLE_H + +extern void LCLAddSyn(lsymbol, lsymbol); extern /*@exposed@*/ ltoken LCLGetTokenForSyn(lsymbol); -extern bool LCLIsSyn(lsymbol); +extern bool LCLIsSyn(lsymbol); + +extern void LCLSynTableInit(void); +extern void LCLSynTableReset(void); +extern void LCLSynTableCleanup(void); -extern void LCLSynTableInit(void); -extern void LCLSynTableReset(void); -extern void LCLSynTableCleanup(void); +# else +# error "Multiple include" +# endif diff --git a/src/Headers/lcltokentable.h b/src/Headers/lcltokentable.h index b07ff71..eb27782 100644 --- a/src/Headers/lcltokentable.h +++ b/src/Headers/lcltokentable.h @@ -4,9 +4,12 @@ ** */ /* -** tokentable.h +** lcltokentable.h */ +# ifndef LCLTOKENTABLE_H +# define LCLTOKENTABLE_H + extern /*@exposed@*/ ltoken LCLInsertToken (ltokenCode, lsymbol, lsymbol, bool) /*@modifies internalState@*/ ; @@ -18,3 +21,7 @@ extern /*@exposed@*/ ltoken LCLReserveToken (ltokenCode, char *) extern void LCLTokenTableInit(void); extern void LCLTokenTableCleanup(void); + +# else +# error "Multiple include" +# endif diff --git a/src/Headers/lctype.h b/src/Headers/lctype.h index 3288b34..dd2f320 100644 --- a/src/Headers/lctype.h +++ b/src/Headers/lctype.h @@ -25,7 +25,8 @@ typedef enum CT_UNKNOWN, CT_PRIM, CT_USER, - CT_ABST, + CT_ABST, + CT_NUMABST, CT_ENUM, CT_PTR, CT_ARRAY, @@ -166,6 +167,7 @@ extern bool ctype_genMatch (ctype p_c1, ctype p_c2, bool p_force, bool p_arg, bo extern bool ctype_isSimple (ctype p_c) /*@*/ ; extern bool ctype_isAbstract (ctype p_c) /*@*/ ; +extern bool ctype_isNumAbstract (ctype p_c) /*@*/ ; extern bool ctype_isArray (ctype p_c) /*@*/ ; extern bool ctype_isFixedArray (ctype p_c) /*@*/ ; extern bool ctype_isIncompleteArray (ctype p_c) /*@*/ ; @@ -201,7 +203,8 @@ extern bool ctype_isDouble (ctype p_c) /*@*/ ; extern bool ctype_isSigned (ctype p_c) /*@*/ ; extern bool ctype_isUnsigned (ctype p_c) /*@*/ ; extern bool ctype_isRealAP (ctype p_c) /*@*/ ; -extern bool ctype_isRealAbstract(ctype p_c) /*@*/ ; +extern bool ctype_isRealAbstract(ctype p_c) /*@*/ ; +extern bool ctype_isRealNumAbstract(ctype p_c) /*@*/ ; extern bool ctype_isRealArray (ctype p_c) /*@*/ ; extern bool ctype_isRealBool (ctype p_c) /*@*/ ; extern bool ctype_isRealFunction (ctype p_c) /*@*/ ; @@ -211,7 +214,7 @@ extern bool ctype_isRealPointer (ctype p_c) /*@*/ ; extern bool ctype_isRealSU (ctype p_c) /*@*/ ; extern bool ctype_isRealVoid (ctype p_c) /*@*/ ; extern bool ctype_isStruct (ctype p_c) /*@*/ ; -extern bool ctype_isStructorUnion(ctype p_c) /*@*/ ; +extern bool ctype_isStructorUnion(ctype p_c) /*@*/ ; extern bool ctype_isUA (ctype p_c) /*@*/ ; extern bool ctype_isUnion (ctype p_c) /*@*/ ; extern bool ctype_isVoid (ctype p_c) /*@*/ ; @@ -237,6 +240,7 @@ extern ctype ctype_baseArrayPtr (ctype p_c) /*@*/ ; extern ctype ctype_combine (ctype p_dominant, ctype p_modifier) ; extern ctype ctype_createAbstract (typeId p_u) /*@*/ ; +extern ctype ctype_createNumAbstract (typeId p_u) /*@*/ ; extern ctype ctype_createForwardStruct (/*@only@*/ cstring p_n) /*@*/ ; extern ctype ctype_createForwardUnion (/*@only@*/ cstring p_n) /*@*/ ; @@ -253,6 +257,11 @@ extern ctype ctype_createUser (typeId p_u) ; extern bool ctype_isUnnamedSU (ctype p_c) /*@*/ ; extern bool ctype_isUser (ctype p_c) /*@*/ ; +extern ctype ctype_biggerType (ctype p_c1, ctype p_c2) + /* EFFECTS: returns whichever of c1 or c2 is bigger (storage requirements). + If they are equal, returns c1. */ + /*@*/ ; + extern ctype ctype_expectFunction(ctype p_c) ; extern ctype ctype_dontExpectFunction (ctype p_c) ; diff --git a/src/Headers/llgrammar_gen.h b/src/Headers/llgrammar_gen.h index 2ea02d7..205a8b1 100644 --- a/src/Headers/llgrammar_gen.h +++ b/src/Headers/llgrammar_gen.h @@ -54,6 +54,10 @@ /* < end of bison.head > */ +#ifndef BISON_LLGRAMMAR_TAB_H +# define BISON_LLGRAMMAR_TAB_H + +#ifndef YYSTYPE typedef union { ltoken ltok; /* a leaf is also an ltoken */ @@ -120,144 +124,149 @@ typedef union /*@only@*/ interfaceNodeList interfacelist; /*@only@*/ CTypesNode ctypes; /*@-redef@*/ -} YYSTYPE; -#define simpleOp 257 -#define PREFIX_OP 258 -#define POSTFIX_OP 259 -#define LLT_MULOP 260 -#define LLT_SEMI 261 -#define LLT_VERTICALBAR 262 -#define ITERATION_OP 263 -#define LLT_LPAR 264 -#define LLT_LBRACKET 265 -#define selectSym 266 -#define LLT_IF_THEN_ELSE 267 -#define logicalOp 268 -#define eqSepSym 269 -#define equationSym 270 -#define commentSym 271 -#define LLT_WHITESPACE 272 -#define LLT_EOL 273 -#define LLT_TYPEDEF_NAME 274 -#define quantifierSym 275 -#define openSym 276 -#define closeSym 277 -#define sepSym 278 -#define simpleId 279 -#define mapSym 280 -#define markerSym 281 -#define preSym 282 -#define postSym 283 -#define anySym 284 -#define LLT_COLON 285 -#define LLT_COMMA 286 -#define LLT_EQUALS 287 -#define LLT_LBRACE 288 -#define LLT_RBRACE 289 -#define LLT_RBRACKET 290 -#define LLT_RPAR 291 -#define LLT_QUOTE 292 -#define eqOp 293 -#define LLT_CCHAR 294 -#define LLT_CFLOAT 295 -#define LLT_CINTEGER 296 -#define LLT_LCSTRING 297 -#define LLT_ALL 298 -#define LLT_ANYTHING 299 -#define LLT_BE 300 -#define LLT_BODY 301 -#define LLT_CLAIMS 302 -#define LLT_CHECKS 303 -#define LLT_CONSTANT 304 -#define LLT_ELSE 305 -#define LLT_ENSURES 306 -#define LLT_FOR 307 -#define LLT_FRESH 308 -#define LLT_IF 309 -#define LLT_IMMUTABLE 310 -#define LLT_IMPORTS 311 -#define LLT_CONSTRAINT 312 -#define LLT_ISSUB 313 -#define LLT_LET 314 -#define LLT_MODIFIES 315 -#define LLT_MUTABLE 316 -#define LLT_NOTHING 317 -#define LLT_INTERNAL 318 -#define LLT_FILESYS 319 -#define LLT_OBJ 320 -#define LLT_OUT 321 -#define LLT_SEF 322 -#define LLT_ONLY 323 -#define LLT_PARTIAL 324 -#define LLT_OWNED 325 -#define LLT_DEPENDENT 326 -#define LLT_KEEP 327 -#define LLT_KEPT 328 -#define LLT_TEMP 329 -#define LLT_SHARED 330 -#define LLT_UNIQUE 331 -#define LLT_UNUSED 332 -#define LLT_EXITS 333 -#define LLT_MAYEXIT 334 -#define LLT_NEVEREXIT 335 -#define LLT_TRUEEXIT 336 -#define LLT_FALSEEXIT 337 -#define LLT_UNDEF 338 -#define LLT_KILLED 339 -#define LLT_CHECKMOD 340 -#define LLT_CHECKED 341 -#define LLT_UNCHECKED 342 -#define LLT_CHECKEDSTRICT 343 -#define LLT_TRUENULL 344 -#define LLT_FALSENULL 345 -#define LLT_LNULL 346 -#define LLT_LNOTNULL 347 -#define LLT_RETURNED 348 -#define LLT_OBSERVER 349 -#define LLT_EXPOSED 350 -#define LLT_REFCOUNTED 351 -#define LLT_REFS 352 -#define LLT_RELNULL 353 -#define LLT_RELDEF 354 -#define LLT_KILLREF 355 -#define LLT_NULLTERMINATED 356 -#define LLT_TEMPREF 357 -#define LLT_NEWREF 358 -#define LLT_PRIVATE 359 -#define LLT_REQUIRES 360 -#define LLT_RESULT 361 -#define LLT_SIZEOF 362 -#define LLT_SPEC 363 -#define LLT_TAGGEDUNION 364 -#define LLT_THEN 365 -#define LLT_TYPE 366 -#define LLT_TYPEDEF 367 -#define LLT_UNCHANGED 368 -#define LLT_USES 369 -#define LLT_CHAR 370 -#define LLT_CONST 371 -#define LLT_DOUBLE 372 -#define LLT_ENUM 373 -#define LLT_FLOAT 374 -#define LLT_INT 375 -#define LLT_ITER 376 -#define LLT_YIELD 377 -#define LLT_LONG 378 -#define LLT_SHORT 379 -#define LLT_SIGNED 380 -#define LLT_UNKNOWN 381 -#define LLT_STRUCT 382 -#define LLT_TELIPSIS 383 -#define LLT_UNION 384 -#define LLT_UNSIGNED 385 -#define LLT_VOID 386 -#define LLT_VOLATILE 387 -#define LLT_PRINTFLIKE 388 -#define LLT_SCANFLIKE 389 -#define LLT_MESSAGELIKE 390 +} yystype; +# define YYSTYPE yystype +# define YYSTYPE_IS_TRIVIAL 1 +#endif +# define simpleOp 257 +# define PREFIX_OP 258 +# define POSTFIX_OP 259 +# define LLT_MULOP 260 +# define LLT_SEMI 261 +# define LLT_VERTICALBAR 262 +# define ITERATION_OP 263 +# define LLT_LPAR 264 +# define LLT_LBRACKET 265 +# define selectSym 266 +# define LLT_IF_THEN_ELSE 267 +# define logicalOp 268 +# define eqSepSym 269 +# define equationSym 270 +# define commentSym 271 +# define LLT_WHITESPACE 272 +# define LLT_EOL 273 +# define LLT_TYPEDEF_NAME 274 +# define quantifierSym 275 +# define openSym 276 +# define closeSym 277 +# define sepSym 278 +# define simpleId 279 +# define mapSym 280 +# define markerSym 281 +# define preSym 282 +# define postSym 283 +# define anySym 284 +# define LLT_COLON 285 +# define LLT_COMMA 286 +# define LLT_EQUALS 287 +# define LLT_LBRACE 288 +# define LLT_RBRACE 289 +# define LLT_RBRACKET 290 +# define LLT_RPAR 291 +# define LLT_QUOTE 292 +# define eqOp 293 +# define LLT_CCHAR 294 +# define LLT_CFLOAT 295 +# define LLT_CINTEGER 296 +# define LLT_LCSTRING 297 +# define LLT_ALL 298 +# define LLT_ANYTHING 299 +# define LLT_BE 300 +# define LLT_BODY 301 +# define LLT_CLAIMS 302 +# define LLT_CHECKS 303 +# define LLT_CONSTANT 304 +# define LLT_ELSE 305 +# define LLT_ENSURES 306 +# define LLT_FOR 307 +# define LLT_FRESH 308 +# define LLT_IF 309 +# define LLT_IMMUTABLE 310 +# define LLT_IMPORTS 311 +# define LLT_CONSTRAINT 312 +# define LLT_ISSUB 313 +# define LLT_LET 314 +# define LLT_MODIFIES 315 +# define LLT_MUTABLE 316 +# define LLT_NOTHING 317 +# define LLT_INTERNAL 318 +# define LLT_FILESYS 319 +# define LLT_OBJ 320 +# define LLT_OUT 321 +# define LLT_SEF 322 +# define LLT_ONLY 323 +# define LLT_PARTIAL 324 +# define LLT_OWNED 325 +# define LLT_DEPENDENT 326 +# define LLT_KEEP 327 +# define LLT_KEPT 328 +# define LLT_TEMP 329 +# define LLT_SHARED 330 +# define LLT_UNIQUE 331 +# define LLT_UNUSED 332 +# define LLT_EXITS 333 +# define LLT_MAYEXIT 334 +# define LLT_NEVEREXIT 335 +# define LLT_TRUEEXIT 336 +# define LLT_FALSEEXIT 337 +# define LLT_UNDEF 338 +# define LLT_KILLED 339 +# define LLT_CHECKMOD 340 +# define LLT_CHECKED 341 +# define LLT_UNCHECKED 342 +# define LLT_CHECKEDSTRICT 343 +# define LLT_TRUENULL 344 +# define LLT_FALSENULL 345 +# define LLT_LNULL 346 +# define LLT_LNOTNULL 347 +# define LLT_RETURNED 348 +# define LLT_OBSERVER 349 +# define LLT_EXPOSED 350 +# define LLT_REFCOUNTED 351 +# define LLT_REFS 352 +# define LLT_RELNULL 353 +# define LLT_RELDEF 354 +# define LLT_KILLREF 355 +# define LLT_NULLTERMINATED 356 +# define LLT_TEMPREF 357 +# define LLT_NEWREF 358 +# define LLT_PRIVATE 359 +# define LLT_REQUIRES 360 +# define LLT_RESULT 361 +# define LLT_SIZEOF 362 +# define LLT_SPEC 363 +# define LLT_TAGGEDUNION 364 +# define LLT_THEN 365 +# define LLT_TYPE 366 +# define LLT_TYPEDEF 367 +# define LLT_UNCHANGED 368 +# define LLT_USES 369 +# define LLT_CHAR 370 +# define LLT_CONST 371 +# define LLT_DOUBLE 372 +# define LLT_ENUM 373 +# define LLT_FLOAT 374 +# define LLT_INT 375 +# define LLT_ITER 376 +# define LLT_YIELD 377 +# define LLT_LONG 378 +# define LLT_SHORT 379 +# define LLT_SIGNED 380 +# define LLT_UNKNOWN 381 +# define LLT_STRUCT 382 +# define LLT_TELIPSIS 383 +# define LLT_UNION 384 +# define LLT_UNSIGNED 385 +# define LLT_VOID 386 +# define LLT_VOLATILE 387 +# define LLT_PRINTFLIKE 388 +# define LLT_SCANFLIKE 389 +# define LLT_MESSAGELIKE 390 extern YYSTYPE yllval; + +#endif /* not BISON_LLGRAMMAR_TAB_H */ /* ** Resets all flags in bison.head */ diff --git a/src/Headers/llgrammar_gen2.h b/src/Headers/llgrammar_gen2.h index 2ea02d7..205a8b1 100644 --- a/src/Headers/llgrammar_gen2.h +++ b/src/Headers/llgrammar_gen2.h @@ -54,6 +54,10 @@ /* < end of bison.head > */ +#ifndef BISON_LLGRAMMAR_TAB_H +# define BISON_LLGRAMMAR_TAB_H + +#ifndef YYSTYPE typedef union { ltoken ltok; /* a leaf is also an ltoken */ @@ -120,144 +124,149 @@ typedef union /*@only@*/ interfaceNodeList interfacelist; /*@only@*/ CTypesNode ctypes; /*@-redef@*/ -} YYSTYPE; -#define simpleOp 257 -#define PREFIX_OP 258 -#define POSTFIX_OP 259 -#define LLT_MULOP 260 -#define LLT_SEMI 261 -#define LLT_VERTICALBAR 262 -#define ITERATION_OP 263 -#define LLT_LPAR 264 -#define LLT_LBRACKET 265 -#define selectSym 266 -#define LLT_IF_THEN_ELSE 267 -#define logicalOp 268 -#define eqSepSym 269 -#define equationSym 270 -#define commentSym 271 -#define LLT_WHITESPACE 272 -#define LLT_EOL 273 -#define LLT_TYPEDEF_NAME 274 -#define quantifierSym 275 -#define openSym 276 -#define closeSym 277 -#define sepSym 278 -#define simpleId 279 -#define mapSym 280 -#define markerSym 281 -#define preSym 282 -#define postSym 283 -#define anySym 284 -#define LLT_COLON 285 -#define LLT_COMMA 286 -#define LLT_EQUALS 287 -#define LLT_LBRACE 288 -#define LLT_RBRACE 289 -#define LLT_RBRACKET 290 -#define LLT_RPAR 291 -#define LLT_QUOTE 292 -#define eqOp 293 -#define LLT_CCHAR 294 -#define LLT_CFLOAT 295 -#define LLT_CINTEGER 296 -#define LLT_LCSTRING 297 -#define LLT_ALL 298 -#define LLT_ANYTHING 299 -#define LLT_BE 300 -#define LLT_BODY 301 -#define LLT_CLAIMS 302 -#define LLT_CHECKS 303 -#define LLT_CONSTANT 304 -#define LLT_ELSE 305 -#define LLT_ENSURES 306 -#define LLT_FOR 307 -#define LLT_FRESH 308 -#define LLT_IF 309 -#define LLT_IMMUTABLE 310 -#define LLT_IMPORTS 311 -#define LLT_CONSTRAINT 312 -#define LLT_ISSUB 313 -#define LLT_LET 314 -#define LLT_MODIFIES 315 -#define LLT_MUTABLE 316 -#define LLT_NOTHING 317 -#define LLT_INTERNAL 318 -#define LLT_FILESYS 319 -#define LLT_OBJ 320 -#define LLT_OUT 321 -#define LLT_SEF 322 -#define LLT_ONLY 323 -#define LLT_PARTIAL 324 -#define LLT_OWNED 325 -#define LLT_DEPENDENT 326 -#define LLT_KEEP 327 -#define LLT_KEPT 328 -#define LLT_TEMP 329 -#define LLT_SHARED 330 -#define LLT_UNIQUE 331 -#define LLT_UNUSED 332 -#define LLT_EXITS 333 -#define LLT_MAYEXIT 334 -#define LLT_NEVEREXIT 335 -#define LLT_TRUEEXIT 336 -#define LLT_FALSEEXIT 337 -#define LLT_UNDEF 338 -#define LLT_KILLED 339 -#define LLT_CHECKMOD 340 -#define LLT_CHECKED 341 -#define LLT_UNCHECKED 342 -#define LLT_CHECKEDSTRICT 343 -#define LLT_TRUENULL 344 -#define LLT_FALSENULL 345 -#define LLT_LNULL 346 -#define LLT_LNOTNULL 347 -#define LLT_RETURNED 348 -#define LLT_OBSERVER 349 -#define LLT_EXPOSED 350 -#define LLT_REFCOUNTED 351 -#define LLT_REFS 352 -#define LLT_RELNULL 353 -#define LLT_RELDEF 354 -#define LLT_KILLREF 355 -#define LLT_NULLTERMINATED 356 -#define LLT_TEMPREF 357 -#define LLT_NEWREF 358 -#define LLT_PRIVATE 359 -#define LLT_REQUIRES 360 -#define LLT_RESULT 361 -#define LLT_SIZEOF 362 -#define LLT_SPEC 363 -#define LLT_TAGGEDUNION 364 -#define LLT_THEN 365 -#define LLT_TYPE 366 -#define LLT_TYPEDEF 367 -#define LLT_UNCHANGED 368 -#define LLT_USES 369 -#define LLT_CHAR 370 -#define LLT_CONST 371 -#define LLT_DOUBLE 372 -#define LLT_ENUM 373 -#define LLT_FLOAT 374 -#define LLT_INT 375 -#define LLT_ITER 376 -#define LLT_YIELD 377 -#define LLT_LONG 378 -#define LLT_SHORT 379 -#define LLT_SIGNED 380 -#define LLT_UNKNOWN 381 -#define LLT_STRUCT 382 -#define LLT_TELIPSIS 383 -#define LLT_UNION 384 -#define LLT_UNSIGNED 385 -#define LLT_VOID 386 -#define LLT_VOLATILE 387 -#define LLT_PRINTFLIKE 388 -#define LLT_SCANFLIKE 389 -#define LLT_MESSAGELIKE 390 +} yystype; +# define YYSTYPE yystype +# define YYSTYPE_IS_TRIVIAL 1 +#endif +# define simpleOp 257 +# define PREFIX_OP 258 +# define POSTFIX_OP 259 +# define LLT_MULOP 260 +# define LLT_SEMI 261 +# define LLT_VERTICALBAR 262 +# define ITERATION_OP 263 +# define LLT_LPAR 264 +# define LLT_LBRACKET 265 +# define selectSym 266 +# define LLT_IF_THEN_ELSE 267 +# define logicalOp 268 +# define eqSepSym 269 +# define equationSym 270 +# define commentSym 271 +# define LLT_WHITESPACE 272 +# define LLT_EOL 273 +# define LLT_TYPEDEF_NAME 274 +# define quantifierSym 275 +# define openSym 276 +# define closeSym 277 +# define sepSym 278 +# define simpleId 279 +# define mapSym 280 +# define markerSym 281 +# define preSym 282 +# define postSym 283 +# define anySym 284 +# define LLT_COLON 285 +# define LLT_COMMA 286 +# define LLT_EQUALS 287 +# define LLT_LBRACE 288 +# define LLT_RBRACE 289 +# define LLT_RBRACKET 290 +# define LLT_RPAR 291 +# define LLT_QUOTE 292 +# define eqOp 293 +# define LLT_CCHAR 294 +# define LLT_CFLOAT 295 +# define LLT_CINTEGER 296 +# define LLT_LCSTRING 297 +# define LLT_ALL 298 +# define LLT_ANYTHING 299 +# define LLT_BE 300 +# define LLT_BODY 301 +# define LLT_CLAIMS 302 +# define LLT_CHECKS 303 +# define LLT_CONSTANT 304 +# define LLT_ELSE 305 +# define LLT_ENSURES 306 +# define LLT_FOR 307 +# define LLT_FRESH 308 +# define LLT_IF 309 +# define LLT_IMMUTABLE 310 +# define LLT_IMPORTS 311 +# define LLT_CONSTRAINT 312 +# define LLT_ISSUB 313 +# define LLT_LET 314 +# define LLT_MODIFIES 315 +# define LLT_MUTABLE 316 +# define LLT_NOTHING 317 +# define LLT_INTERNAL 318 +# define LLT_FILESYS 319 +# define LLT_OBJ 320 +# define LLT_OUT 321 +# define LLT_SEF 322 +# define LLT_ONLY 323 +# define LLT_PARTIAL 324 +# define LLT_OWNED 325 +# define LLT_DEPENDENT 326 +# define LLT_KEEP 327 +# define LLT_KEPT 328 +# define LLT_TEMP 329 +# define LLT_SHARED 330 +# define LLT_UNIQUE 331 +# define LLT_UNUSED 332 +# define LLT_EXITS 333 +# define LLT_MAYEXIT 334 +# define LLT_NEVEREXIT 335 +# define LLT_TRUEEXIT 336 +# define LLT_FALSEEXIT 337 +# define LLT_UNDEF 338 +# define LLT_KILLED 339 +# define LLT_CHECKMOD 340 +# define LLT_CHECKED 341 +# define LLT_UNCHECKED 342 +# define LLT_CHECKEDSTRICT 343 +# define LLT_TRUENULL 344 +# define LLT_FALSENULL 345 +# define LLT_LNULL 346 +# define LLT_LNOTNULL 347 +# define LLT_RETURNED 348 +# define LLT_OBSERVER 349 +# define LLT_EXPOSED 350 +# define LLT_REFCOUNTED 351 +# define LLT_REFS 352 +# define LLT_RELNULL 353 +# define LLT_RELDEF 354 +# define LLT_KILLREF 355 +# define LLT_NULLTERMINATED 356 +# define LLT_TEMPREF 357 +# define LLT_NEWREF 358 +# define LLT_PRIVATE 359 +# define LLT_REQUIRES 360 +# define LLT_RESULT 361 +# define LLT_SIZEOF 362 +# define LLT_SPEC 363 +# define LLT_TAGGEDUNION 364 +# define LLT_THEN 365 +# define LLT_TYPE 366 +# define LLT_TYPEDEF 367 +# define LLT_UNCHANGED 368 +# define LLT_USES 369 +# define LLT_CHAR 370 +# define LLT_CONST 371 +# define LLT_DOUBLE 372 +# define LLT_ENUM 373 +# define LLT_FLOAT 374 +# define LLT_INT 375 +# define LLT_ITER 376 +# define LLT_YIELD 377 +# define LLT_LONG 378 +# define LLT_SHORT 379 +# define LLT_SIGNED 380 +# define LLT_UNKNOWN 381 +# define LLT_STRUCT 382 +# define LLT_TELIPSIS 383 +# define LLT_UNION 384 +# define LLT_UNSIGNED 385 +# define LLT_VOID 386 +# define LLT_VOLATILE 387 +# define LLT_PRINTFLIKE 388 +# define LLT_SCANFLIKE 389 +# define LLT_MESSAGELIKE 390 extern YYSTYPE yllval; + +#endif /* not BISON_LLGRAMMAR_TAB_H */ /* ** Resets all flags in bison.head */ diff --git a/src/Headers/misc.h b/src/Headers/misc.h index c35b296..e541751 100644 --- a/src/Headers/misc.h +++ b/src/Headers/misc.h @@ -23,12 +23,14 @@ extern void assertDefined (/*@sef@*/ /*@unused@*/ void *p_x) ; /*@-czechfcns@*/ -extern int size_toInt (size_t p_x) /*@*/ /*@ensures result==p_x@*/; -extern long size_toLong (size_t p_x) /*@*/ /*@ensures result==p_x@*/ ; -extern size_t size_fromInt (int p_x) /*@*/ /*@ensures result==p_x@*/ ; -extern int longUnsigned_toInt (long unsigned int p_x) /*@*/ /*@ensures result==p_x@*/ ; -extern int long_toInt (long p_x) /*@*/ /*@ensures result==p_x@*/; -extern long unsigned longUnsigned_fromInt (int p_x) /*@*/ /*@ensures result==p_x@*/ ; +extern int size_toInt (size_t p_x) /*@*/ /*@ensures result == p_x@*/; +extern long size_toLong (size_t p_x) /*@*/ /*@ensures result == p_x@*/ ; +extern size_t size_fromInt (int p_x) /*@*/ /*@ensures result == p_x@*/ ; +extern size_t size_fromLong (long p_x) /*@*/ /*@ensures result == p_x@*/ ; +extern size_t size_fromLongUnsigned (long unsigned p_x) /*@*/ /*@ensures result == p_x@*/ ; +extern int longUnsigned_toInt (long unsigned int p_x) /*@*/ /*@ensures result == p_x@*/ ; +extern int long_toInt (long p_x) /*@*/ /*@ensures result == p_x@*/; +extern long unsigned longUnsigned_fromInt (int p_x) /*@*/ /*@ensures result == p_x@*/ ; /*@=czechfcns@*/ # include "mstring.h" diff --git a/src/Headers/opFormNode.h b/src/Headers/opFormNode.h index a8114eb..b6ea7f6 100644 --- a/src/Headers/opFormNode.h +++ b/src/Headers/opFormNode.h @@ -23,7 +23,7 @@ struct s_opFormNode { ltoken tok; /* keeps the openSym token */ opFormKind kind; opFormUnion content; - unsigned int key; + unsigned long int key; ltoken close; /* keeps the closeSym token */ } ; diff --git a/src/Headers/qual.h b/src/Headers/qual.h index 44e2727..2b77e6b 100644 --- a/src/Headers/qual.h +++ b/src/Headers/qual.h @@ -35,7 +35,7 @@ typedef enum { QU_NEVEREXIT, QU_EXITS, QU_MAYEXIT, QU_TRUEEXIT, QU_FALSEEXIT, QU_UNUSED, QU_EXTERNAL, QU_SEF, QU_NOTNULL, - QU_ABSTRACT, QU_CONCRETE, + QU_ABSTRACT, QU_NUMABSTRACT, QU_CONCRETE, QU_MUTABLE, QU_IMMUTABLE, QU_REFCOUNTED, QU_REFS, QU_NEWREF, QU_KILLREF, QU_TEMPREF, QU_TRUENULL, QU_FALSENULL, @@ -126,6 +126,8 @@ extern bool qual_isUnused (qual) /*@*/ ; extern bool qual_isExternal (qual) /*@*/ ; extern bool qual_isSef (qual) /*@*/ ; extern bool qual_isAbstract (qual) /*@*/ ; +extern bool qual_isNumAbstract (qual) /*@*/ ; +extern bool qual_isEitherAbstract (/*@sef@*/ qual) /*@*/ ; extern bool qual_isConcrete (qual) /*@*/ ; extern bool qual_isMutable (qual) /*@*/ ; extern bool qual_isImmutable (qual) /*@*/ ; @@ -162,71 +164,71 @@ extern /*@observer@*/ annotationInfo qual_getAnnotationInfo (qual) /*@*/ ; extern void qual_initMod (void) /*@modifies internalState@*/ ; extern void qual_destroyMod (void) /*@modifies internalState@*/ ; -# define qual_isUnknown(q) ((q)->kind == QU_UNKNOWN) -# define qual_isTrueNull(q) ((q)->kind == QU_TRUENULL) -# define qual_isFalseNull(q) ((q)->kind == QU_FALSENULL) -# define qual_isOwned(q) ((q)->kind == QU_OWNED) -# define qual_isDependent(q) ((q)->kind == QU_DEPENDENT) -# define qual_isRefCounted(q) ((q)->kind == QU_REFCOUNTED) -# define qual_isRefs(q) ((q)->kind == QU_REFS) -# define qual_isNewRef(q) ((q)->kind == QU_NEWREF) -# define qual_isKillRef(q) ((q)->kind == QU_KILLREF) -# define qual_isTempRef(q) ((q)->kind == QU_TEMPREF) -# define qual_isLong(q) ((q)->kind == QU_LONG) -# define qual_isShort(q) ((q)->kind == QU_SHORT) -# define qual_isSigned(q) ((q)->kind == QU_SIGNED) -# define qual_isUnsigned(q) ((q)->kind == QU_UNSIGNED) -# define qual_isUnique(q) ((q)->kind == QU_UNIQUE) -# define qual_isExits(q) ((q)->kind == QU_EXITS) -# define qual_isMayExit(q) ((q)->kind == QU_MAYEXIT) -# define qual_isNeverExit(q) ((q)->kind == QU_NEVEREXIT) -# define qual_isTrueExit(q) ((q)->kind == QU_TRUEEXIT) -# define qual_isFalseExit(q) ((q)->kind == QU_FALSEEXIT) -# define qual_isConst(q) ((q)->kind == QU_CONST) -# define qual_isRestrict(q) ((q)->kind == QU_RESTRICT) -# define qual_isVolatile(q) ((q)->kind == QU_VOLATILE) -# define qual_isInline(q) ((q)->kind == QU_INLINE) -# define qual_isExtern(q) ((q)->kind == QU_EXTERN) -# define qual_isStatic(q) ((q)->kind == QU_STATIC) -# define qual_isAuto(q) ((q)->kind == QU_AUTO) -# define qual_isRegister(q) ((q)->kind == QU_REGISTER) -# define qual_isOut(q) ((q)->kind == QU_OUT) -# define qual_isIn(q) ((q)->kind == QU_IN) -# define qual_isYield(q) ((q)->kind == QU_YIELD) -# define qual_isOnly(q) ((q)->kind == QU_ONLY) -# define qual_isImpOnly(q) ((q)->kind == QU_IMPONLY) -# define qual_isPartial(q) ((q)->kind == QU_PARTIAL) -# define qual_isSpecial(q) ((q)->kind == QU_SPECIAL) -# define qual_isKeep(q) ((q)->kind == QU_KEEP) -# define qual_isKept(q) ((q)->kind == QU_KEPT) -# define qual_isTemp(q) ((q)->kind == QU_TEMP) -# define qual_isShared(q) ((q)->kind == QU_SHARED) -# define qual_isRelDef(q) ((q)->kind == QU_RELDEF) -# define qual_isNull(q) ((q)->kind == QU_NULL) -# define qual_isIsNull(q) ((q)->kind == QU_ISNULL) -# define qual_isRelNull(q) ((q)->kind == QU_RELNULL) -# define qual_isNotNull(q) ((q)->kind == QU_NOTNULL) -# define qual_isReturned(q) ((q)->kind == QU_RETURNED) -# define qual_isExposed(q) ((q)->kind == QU_EXPOSED) -# define qual_isObserver(q) ((q)->kind == QU_OBSERVER) -# define qual_isUnused(q) ((q)->kind == QU_UNUSED) -# define qual_isExternal(q) ((q)->kind == QU_EXTERNAL) -# define qual_isSef(q) ((q)->kind == QU_SEF) -# define qual_isAbstract(q) ((q)->kind == QU_ABSTRACT) -# define qual_isConcrete(q) ((q)->kind == QU_CONCRETE) -# define qual_isMutable(q) ((q)->kind == QU_MUTABLE) -# define qual_isImmutable(q) ((q)->kind == QU_IMMUTABLE) -# define qual_isChecked(q) ((q)->kind == QU_CHECKED) -# define qual_isCheckMod(q) ((q)->kind == QU_CHECKMOD) -# define qual_isCheckedStrict(q) ((q)->kind == QU_CHECKEDSTRICT) -# define qual_isUnchecked(q) ((q)->kind == QU_UNCHECKED) -# define qual_isUndef(q) ((q)->kind == QU_UNDEF) -# define qual_isKilled(q) ((q)->kind == QU_KILLED) -# define qual_isPrintfLike(q) ((q)->kind == QU_PRINTFLIKE) -# define qual_isScanfLike(q) ((q)->kind == QU_SCANFLIKE) -# define qual_isMessageLike(q) ((q)->kind == QU_MESSAGELIKE) -# define qual_isMetaState(q) ((q)->kind == QU_USERANNOT) - +# define qual_isUnknown(q) ((q)->kind == QU_UNKNOWN) +# define qual_isTrueNull(q) ((q)->kind == QU_TRUENULL) +# define qual_isFalseNull(q) ((q)->kind == QU_FALSENULL) +# define qual_isOwned(q) ((q)->kind == QU_OWNED) +# define qual_isDependent(q) ((q)->kind == QU_DEPENDENT) +# define qual_isRefCounted(q) ((q)->kind == QU_REFCOUNTED) +# define qual_isRefs(q) ((q)->kind == QU_REFS) +# define qual_isNewRef(q) ((q)->kind == QU_NEWREF) +# define qual_isKillRef(q) ((q)->kind == QU_KILLREF) +# define qual_isTempRef(q) ((q)->kind == QU_TEMPREF) +# define qual_isLong(q) ((q)->kind == QU_LONG) +# define qual_isShort(q) ((q)->kind == QU_SHORT) +# define qual_isSigned(q) ((q)->kind == QU_SIGNED) +# define qual_isUnsigned(q) ((q)->kind == QU_UNSIGNED) +# define qual_isUnique(q) ((q)->kind == QU_UNIQUE) +# define qual_isExits(q) ((q)->kind == QU_EXITS) +# define qual_isMayExit(q) ((q)->kind == QU_MAYEXIT) +# define qual_isNeverExit(q) ((q)->kind == QU_NEVEREXIT) +# define qual_isTrueExit(q) ((q)->kind == QU_TRUEEXIT) +# define qual_isFalseExit(q) ((q)->kind == QU_FALSEEXIT) +# define qual_isConst(q) ((q)->kind == QU_CONST) +# define qual_isRestrict(q) ((q)->kind == QU_RESTRICT) +# define qual_isVolatile(q) ((q)->kind == QU_VOLATILE) +# define qual_isInline(q) ((q)->kind == QU_INLINE) +# define qual_isExtern(q) ((q)->kind == QU_EXTERN) +# define qual_isStatic(q) ((q)->kind == QU_STATIC) +# define qual_isAuto(q) ((q)->kind == QU_AUTO) +# define qual_isRegister(q) ((q)->kind == QU_REGISTER) +# define qual_isOut(q) ((q)->kind == QU_OUT) +# define qual_isIn(q) ((q)->kind == QU_IN) +# define qual_isYield(q) ((q)->kind == QU_YIELD) +# define qual_isOnly(q) ((q)->kind == QU_ONLY) +# define qual_isImpOnly(q) ((q)->kind == QU_IMPONLY) +# define qual_isPartial(q) ((q)->kind == QU_PARTIAL) +# define qual_isSpecial(q) ((q)->kind == QU_SPECIAL) +# define qual_isKeep(q) ((q)->kind == QU_KEEP) +# define qual_isKept(q) ((q)->kind == QU_KEPT) +# define qual_isTemp(q) ((q)->kind == QU_TEMP) +# define qual_isShared(q) ((q)->kind == QU_SHARED) +# define qual_isRelDef(q) ((q)->kind == QU_RELDEF) +# define qual_isNull(q) ((q)->kind == QU_NULL) +# define qual_isIsNull(q) ((q)->kind == QU_ISNULL) +# define qual_isRelNull(q) ((q)->kind == QU_RELNULL) +# define qual_isNotNull(q) ((q)->kind == QU_NOTNULL) +# define qual_isReturned(q) ((q)->kind == QU_RETURNED) +# define qual_isExposed(q) ((q)->kind == QU_EXPOSED) +# define qual_isObserver(q) ((q)->kind == QU_OBSERVER) +# define qual_isUnused(q) ((q)->kind == QU_UNUSED) +# define qual_isExternal(q) ((q)->kind == QU_EXTERNAL) +# define qual_isSef(q) ((q)->kind == QU_SEF) +# define qual_isAbstract(q) ((q)->kind == QU_ABSTRACT) +# define qual_isNumAbstract(q) ((q)->kind == QU_NUMABSTRACT) +# define qual_isConcrete(q) ((q)->kind == QU_CONCRETE) +# define qual_isMutable(q) ((q)->kind == QU_MUTABLE) +# define qual_isImmutable(q) ((q)->kind == QU_IMMUTABLE) +# define qual_isChecked(q) ((q)->kind == QU_CHECKED) +# define qual_isCheckMod(q) ((q)->kind == QU_CHECKMOD) +# define qual_isCheckedStrict(q) ((q)->kind == QU_CHECKEDSTRICT) +# define qual_isUnchecked(q) ((q)->kind == QU_UNCHECKED) +# define qual_isUndef(q) ((q)->kind == QU_UNDEF) +# define qual_isKilled(q) ((q)->kind == QU_KILLED) +# define qual_isPrintfLike(q) ((q)->kind == QU_PRINTFLIKE) +# define qual_isScanfLike(q) ((q)->kind == QU_SCANFLIKE) +# define qual_isMessageLike(q) ((q)->kind == QU_MESSAGELIKE) +# define qual_isMetaState(q) ((q)->kind == QU_USERANNOT) # define qual_isNullTerminated(q) ((q)->kind == QU_NULLTERMINATED) extern qual qual_createPlain (quenum) /*@*/ ; @@ -239,7 +241,8 @@ extern qual qual_createNewRef (void) /*@*/ ; extern qual qual_createKillRef (void) /*@*/ ; extern qual qual_createTempRef (void) /*@*/ ; extern qual qual_createNotNull (void) /*@*/ ; -extern qual qual_createAbstract (void) /*@*/ ; +extern qual qual_createAbstract (void) /*@*/ ; +extern qual qual_createNumAbstract (void) /*@*/ ; extern qual qual_createConcrete (void) /*@*/ ; extern qual qual_createMutable (void) /*@*/ ; extern qual qual_createImmutable (void) /*@*/ ; @@ -312,6 +315,7 @@ extern qual qual_createMessageLike (void) /*@*/ ; # define qual_createTempRef() qual_createPlain (QU_TEMPREF) # define qual_createNotNull() qual_createPlain (QU_NOTNULL) # define qual_createAbstract() qual_createPlain (QU_ABSTRACT) +# define qual_createNumAbstract() qual_createPlain (QU_NUMABSTRACT) # define qual_createConcrete() qual_createPlain (QU_CONCRETE) # define qual_createMutable() qual_createPlain (QU_MUTABLE) # define qual_createImmutable() qual_createPlain (QU_IMMUTABLE) @@ -395,7 +399,11 @@ extern bool qual_isNullStateQual (/*@sef@*/ qual) /*@*/ ; || qual_isNotNull (q)) # define qual_isTypeQual(q) \ - (qual_isAbstract(q) || qual_isMutable(q) || qual_isImmutable(q)) + (qual_isAbstract(q) || qual_isNumAbstract(q) || qual_isConcrete(q) \ + || qual_isMutable(q) || qual_isImmutable(q)) + +# define qual_isEitherAbstract(q) \ + (qual_isAbstract(q) || qual_isNumAbstract(q)) # define qual_isControlQual(q) (qual_isExits(q) || qual_isMayExit (q)) # define qual_isStorageClass(q) (qual_isExtern(q) || qual_isStatic(q)) @@ -424,6 +432,9 @@ extern bool qual_isExitQual (/*@sef@*/ qual p_q) /*@*/ ; (qual_isExits (q) || qual_isNeverExit (q) || qual_isMayExit (q) \ || qual_isTrueExit (q) || qual_isFalseExit (q)) +extern char qual_abstractCode (qual) /*@*/ ; +extern qual qual_abstractFromCodeChar (char) /*@*/ ; + # else # error "Multiple include" # endif diff --git a/src/Headers/sigNode.h b/src/Headers/sigNode.h index 193c2ac..5dc3d2b 100644 --- a/src/Headers/sigNode.h +++ b/src/Headers/sigNode.h @@ -8,7 +8,7 @@ typedef struct { ltoken tok; ltokenList domain; ltoken range; - unsigned int key; + unsigned long int key; } *sigNode; extern /*@only@*/ cstring sigNode_unparse (/*@null@*/ sigNode p_n) /*@*/ ; diff --git a/src/Headers/signNode.h b/src/Headers/signNode.h index 77e749a..0969738 100644 --- a/src/Headers/signNode.h +++ b/src/Headers/signNode.h @@ -7,7 +7,7 @@ typedef struct { ltoken tok; sortList domain; sort range; - unsigned int key; + unsigned long int key; } *signNode; extern /*@only@*/ cstring signNode_unparse (signNode p_sn) /*@*/ ; diff --git a/src/Headers/signature_gen.h b/src/Headers/signature_gen.h index 6e3249a..9b23e62 100644 --- a/src/Headers/signature_gen.h +++ b/src/Headers/signature_gen.h @@ -54,6 +54,10 @@ /* < end of bison.head > */ +#ifndef BISON_SIGNATURE_TAB_H +# define BISON_SIGNATURE_TAB_H + +#ifndef YYSTYPE typedef union { ltoken ltok; /* a leaf is also an ltoken */ unsigned int count; @@ -64,53 +68,58 @@ typedef union { /*@owned@*/ lslOp operator; /*@only@*/ lslOpList operators; /*@-redef@*/ /*@-matchfields@*/ -} YYSTYPE; -#define LST_SIMPLEID 257 -#define LST_LOGICALOP 258 -#define LST_EQOP 259 -#define LST_SIMPLEOP 260 -#define LST_MAPSYM 261 -#define LST_FIELDMAPSYM 262 -#define LST_MARKERSYM 263 -#define LST_ifTOKEN 264 -#define LST_thenTOKEN 265 -#define LST_elseTOKEN 266 -#define LST_LBRACKET 267 -#define LST_RBRACKET 268 -#define LST_SELECTSYM 269 -#define LST_SEPSYM 270 -#define LST_OPENSYM 271 -#define LST_CLOSESYM 272 -#define LST_COLON 273 -#define LST_COMMA 274 -#define LST_EOL 275 -#define LST_COMMENTSYM 276 -#define LST_WHITESPACE 277 -#define LST_QUANTIFIERSYM 278 -#define LST_EQUATIONSYM 279 -#define LST_EQSEPSYM 280 -#define LST_COMPOSESYM 281 -#define LST_LPAR 282 -#define LST_RPAR 283 -#define LST_assertsTOKEN 284 -#define LST_assumesTOKEN 285 -#define LST_byTOKEN 286 -#define LST_convertsTOKEN 287 -#define LST_enumerationTOKEN 288 -#define LST_equationsTOKEN 289 -#define LST_exemptingTOKEN 290 -#define LST_forTOKEN 291 -#define LST_generatedTOKEN 292 -#define LST_impliesTOKEN 293 -#define LST_includesTOKEN 294 -#define LST_introducesTOKEN 295 -#define LST_ofTOKEN 296 -#define LST_partitionedTOKEN 297 -#define LST_traitTOKEN 298 -#define LST_tupleTOKEN 299 -#define LST_unionTOKEN 300 -#define LST_BADTOKEN 301 +} yystype; +# define YYSTYPE yystype +# define YYSTYPE_IS_TRIVIAL 1 +#endif +# define LST_SIMPLEID 257 +# define LST_LOGICALOP 258 +# define LST_EQOP 259 +# define LST_SIMPLEOP 260 +# define LST_MAPSYM 261 +# define LST_FIELDMAPSYM 262 +# define LST_MARKERSYM 263 +# define LST_ifTOKEN 264 +# define LST_thenTOKEN 265 +# define LST_elseTOKEN 266 +# define LST_LBRACKET 267 +# define LST_RBRACKET 268 +# define LST_SELECTSYM 269 +# define LST_SEPSYM 270 +# define LST_OPENSYM 271 +# define LST_CLOSESYM 272 +# define LST_COLON 273 +# define LST_COMMA 274 +# define LST_EOL 275 +# define LST_COMMENTSYM 276 +# define LST_WHITESPACE 277 +# define LST_QUANTIFIERSYM 278 +# define LST_EQUATIONSYM 279 +# define LST_EQSEPSYM 280 +# define LST_COMPOSESYM 281 +# define LST_LPAR 282 +# define LST_RPAR 283 +# define LST_assertsTOKEN 284 +# define LST_assumesTOKEN 285 +# define LST_byTOKEN 286 +# define LST_convertsTOKEN 287 +# define LST_enumerationTOKEN 288 +# define LST_equationsTOKEN 289 +# define LST_exemptingTOKEN 290 +# define LST_forTOKEN 291 +# define LST_generatedTOKEN 292 +# define LST_impliesTOKEN 293 +# define LST_includesTOKEN 294 +# define LST_introducesTOKEN 295 +# define LST_ofTOKEN 296 +# define LST_partitionedTOKEN 297 +# define LST_traitTOKEN 298 +# define LST_tupleTOKEN 299 +# define LST_unionTOKEN 300 +# define LST_BADTOKEN 301 + +#endif /* not BISON_SIGNATURE_TAB_H */ /* ** Resets all flags in bison.head */ diff --git a/src/Headers/uentry.h b/src/Headers/uentry.h index ec9e60b..030f353 100644 --- a/src/Headers/uentry.h +++ b/src/Headers/uentry.h @@ -72,7 +72,7 @@ typedef struct typedef struct { - ynm abs; + qual abs; /* oneof QU_UNKNOWN, QU_ABSTRACT, QU_NUMABSTRACT, QU_CONCRETE */ ynm mut; ctype type; } *udinfo ; @@ -415,11 +415,11 @@ extern /*@notnull@*/ /*@only@*/ uentry /*@*/ ; extern /*@notnull@*/ /*@only@*/ uentry - uentry_makeDatatype (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut, ynm p_abstract, + uentry_makeDatatype (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut, qual p_abstract, /*@only@*/ fileloc p_f) /*@*/ ; extern /*@notnull@*/ /*@only@*/ uentry uentry_makeDatatypeAux (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut, - ynm p_abstract, /*@keep@*/ fileloc p_f, bool p_priv) /*@*/ ; + qual p_abstract, /*@keep@*/ fileloc p_f, bool p_priv) /*@*/ ; extern /*@notnull@*/ uentry uentry_makeElipsisMarker (void) /*@*/ ; extern void uentry_makeVarFunction (/*@temp@*/ uentry p_ue) /*@modifies p_ue@*/ ; @@ -472,7 +472,7 @@ extern /*@notnull@*/ /*@only@*/ extern /*@notnull@*/ /*@only@*/ uentry uentry_makeIdDatatype (idDecl p_id); extern /*@notnull@*/ /*@only@*/ - uentry uentry_makeBoolDatatype (ynm p_abstract); + uentry uentry_makeBoolDatatype (qual p_abstract); extern void uentry_mergeDefinition (uentry p_old, /*@only@*/ uentry p_unew); extern void uentry_mergeEntries (uentry p_spec, /*@only@*/ uentry p_def); extern uentry uentry_nameCopy (/*@only@*/ cstring p_name, uentry p_e); diff --git a/src/Headers/version.h b/src/Headers/version.h index 49a4aef..c3fb8e7 100644 --- a/src/Headers/version.h +++ b/src/Headers/version.h @@ -14,7 +14,7 @@ */ /*@constant float SPLINT_LIBVERSION; @*/ -# define SPLINT_LIBVERSION 3.0 +# define SPLINT_LIBVERSION 3.017 /*@constant observer char *SPLINT_MAINTAINER; @*/ # define SPLINT_MAINTAINER "splint-bug@splint.org" diff --git a/src/Makefile.am b/src/Makefile.am index 261a6a7..39c5f1c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -253,7 +253,8 @@ COMMONSRC = $(CPPSRC) $(CSRC) $(CHECKSRC) $(GENERALSRC) \ ALLSRC = $(GRAMSRC) $(COMMONSRC) $(SPLINTSRC) $(OVERFLOWCHSRC) $(DER_FILES) $(HEADERSRC) #files to run Splint on -LINTSRC = $(COMMONSRC) $(SPLINTSRC) cscanner.c cgrammar.c +LINTSRC = $(COMMONSRC) $(SPLINTSRC) +# cscanner.c cgrammar.c #ALLSRC = $(COMMONSRC) $(SPLINTSRC) $(DER_FILES) $(HEADERSRC) diff --git a/src/Makefile.in b/src/Makefile.in index 8b988ce..7531187 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -349,7 +349,8 @@ COMMONSRC = $(CPPSRC) $(CSRC) $(CHECKSRC) $(GENERALSRC) \ ALLSRC = $(GRAMSRC) $(COMMONSRC) $(SPLINTSRC) $(OVERFLOWCHSRC) $(DER_FILES) $(HEADERSRC) #files to run Splint on -LINTSRC = $(COMMONSRC) $(SPLINTSRC) cscanner.c cgrammar.c +LINTSRC = $(COMMONSRC) $(SPLINTSRC) +## cscanner.c cgrammar.c #ALLSRC = $(COMMONSRC) $(SPLINTSRC) $(DER_FILES) $(HEADERSRC) diff --git a/src/abstract.c b/src/abstract.c index 301a81f..64807cf 100644 --- a/src/abstract.c +++ b/src/abstract.c @@ -1365,7 +1365,7 @@ nameNode_unparse (/*@null@*/ nameNode n) makesigNode (ltoken t, /*@only@*/ ltokenList domain, ltoken range) { sigNode s = (sigNode) dmalloc (sizeof (*s)); - unsigned int key; + unsigned long int key; /* ** Assign a hash key here to speed up lookup of operators. @@ -1383,7 +1383,7 @@ makesigNode (ltoken t, /*@only@*/ ltokenList domain, ltoken range) } end_ltokenList_elements; s->key = key; - return (s); + return (s); } cstring sigNode_unparse (/*@null@*/ sigNode n) @@ -1413,10 +1413,9 @@ sigNode_unparseText (/*@null@*/ sigNode n) return cstring_undefined; } -static unsigned int - opFormNode2key (opFormNode op, opFormKind k) +static unsigned long opFormNode2key (opFormNode op, opFormKind k) { - unsigned int key; + unsigned long int key; switch (k) { @@ -1474,7 +1473,7 @@ makeOpFormNode (ltoken t, opFormKind k, opFormUnion u, ltoken close) { opFormNode n = (opFormNode) dmalloc (sizeof (*n)); - unsigned int key = 0; + unsigned long int key = 0; /* ** Assign a hash key here to speed up lookup of operators. @@ -1483,7 +1482,6 @@ makeOpFormNode (ltoken t, opFormKind k, opFormUnion u, n->tok = t; n->close = close; n->kind = k; - switch (k) { @@ -1536,7 +1534,7 @@ makeOpFormNode (ltoken t, opFormKind k, opFormUnion u, } } n->key = key; - return (n); + return (n); } static cstring printMiddle (int j) @@ -5357,7 +5355,7 @@ enteringFcnScope (lclTypeSpecNode t, declaratorNode d, globalList g) fctInfo fi = (fctInfo) dmalloc (sizeof (*fi)); signNode sign = (signNode) dmalloc (sizeof (*sign)); sortList domain = sortList_new (); - unsigned int key; + unsigned long int key; paramPairs = extractParams (d->type); returnSort = extractReturnSort (t, d); diff --git a/src/cgrammar.c.der b/src/cgrammar.c.der index ac12a8c..9e4421e 100644 --- a/src/cgrammar.c.der +++ b/src/cgrammar.c.der @@ -213,44 +213,45 @@ # define QNOTNULL 408 # define QRELNULL 409 # define QABSTRACT 410 -# define QCONCRETE 411 -# define QMUTABLE 412 -# define QIMMUTABLE 413 -# define QTRUENULL 414 -# define QFALSENULL 415 -# define QEXTERNAL 416 -# define QREFCOUNTED 417 -# define QREFS 418 -# define QNEWREF 419 -# define QTEMPREF 420 -# define QKILLREF 421 -# define QRELDEF 422 -# define CGCHAR 423 -# define CBOOL 424 -# define CINT 425 -# define CGFLOAT 426 -# define CDOUBLE 427 -# define CVOID 428 -# define QANYTYPE 429 -# define QINTEGRALTYPE 430 -# define QUNSIGNEDINTEGRALTYPE 431 -# define QSIGNEDINTEGRALTYPE 432 -# define QNULLTERMINATED 433 -# define QSETBUFFERSIZE 434 -# define QSETSTRINGLENGTH 435 -# define QMAXSET 436 -# define QMAXREAD 437 -# define QTESTINRANGE 438 -# define TCAND 439 -# define IDENTIFIER 440 -# define NEW_IDENTIFIER 441 -# define TYPE_NAME_OR_ID 442 -# define CANNOTATION 443 -# define CCONSTANT 444 -# define ITER_NAME 445 -# define ITER_ENDNAME 446 -# define TYPE_NAME 447 -# define METASTATE_NAME 448 +# define QNUMABSTRACT 411 +# define QCONCRETE 412 +# define QMUTABLE 413 +# define QIMMUTABLE 414 +# define QTRUENULL 415 +# define QFALSENULL 416 +# define QEXTERNAL 417 +# define QREFCOUNTED 418 +# define QREFS 419 +# define QNEWREF 420 +# define QTEMPREF 421 +# define QKILLREF 422 +# define QRELDEF 423 +# define CGCHAR 424 +# define CBOOL 425 +# define CINT 426 +# define CGFLOAT 427 +# define CDOUBLE 428 +# define CVOID 429 +# define QANYTYPE 430 +# define QINTEGRALTYPE 431 +# define QUNSIGNEDINTEGRALTYPE 432 +# define QSIGNEDINTEGRALTYPE 433 +# define QNULLTERMINATED 434 +# define QSETBUFFERSIZE 435 +# define QSETSTRINGLENGTH 436 +# define QMAXSET 437 +# define QMAXREAD 438 +# define QTESTINRANGE 439 +# define TCAND 440 +# define IDENTIFIER 441 +# define NEW_IDENTIFIER 442 +# define TYPE_NAME_OR_ID 443 +# define CANNOTATION 444 +# define CCONSTANT 445 +# define ITER_NAME 446 +# define ITER_ENDNAME 447 +# define TYPE_NAME 448 +# define METASTATE_NAME 449 /* @@ -366,12 +367,12 @@ typedef union -#define YYFINAL 1248 +#define YYFINAL 1249 #define YYFLAG -32768 -#define YYNTBASE 195 +#define YYNTBASE 196 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ -#define YYTRANSLATE(x) ((unsigned)(x) <= 448 ? yytranslate[x] : 463) +#define YYTRANSLATE(x) ((unsigned)(x) <= 449 ? yytranslate[x] : 464) /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ static const short yytranslate[] = @@ -420,7 +421,7 @@ static const short yytranslate[] = 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194 + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195 }; #if YYDEBUG @@ -462,263 +463,263 @@ static const short yyprhs[] = 1017, 1019, 1021, 1023, 1025, 1027, 1029, 1031, 1033, 1035, 1037, 1039, 1041, 1043, 1045, 1047, 1049, 1051, 1053, 1055, 1057, 1059, 1061, 1063, 1065, 1067, 1069, 1071, 1073, 1075, - 1077, 1079, 1081, 1083, 1085, 1088, 1091, 1094, 1097, 1100, - 1103, 1106, 1109, 1112, 1115, 1118, 1121, 1124, 1127, 1130, - 1133, 1136, 1139, 1142, 1145, 1148, 1151, 1154, 1157, 1160, - 1163, 1167, 1169, 1174, 1176, 1180, 1183, 1186, 1189, 1190, - 1192, 1193, 1194, 1195, 1208, 1209, 1210, 1222, 1229, 1236, - 1237, 1238, 1249, 1250, 1251, 1262, 1268, 1274, 1279, 1284, - 1285, 1287, 1289, 1292, 1298, 1302, 1305, 1310, 1312, 1316, - 1321, 1328, 1329, 1338, 1343, 1345, 1349, 1352, 1354, 1359, - 1361, 1363, 1366, 1369, 1371, 1374, 1376, 1379, 1381, 1383, - 1385, 1387, 1390, 1392, 1395, 1398, 1402, 1404, 1408, 1410, - 1414, 1416, 1418, 1422, 1423, 1426, 1427, 1432, 1437, 1439, - 1441, 1444, 1446, 1448, 1451, 1452, 1454, 1460, 1463, 1467, - 1471, 1476, 1480, 1485, 1490, 1496, 1498, 1500, 1502, 1504, - 1506, 1508, 1510, 1512, 1514, 1516, 1518, 1520, 1523, 1526, - 1534, 1541, 1544, 1545, 1546, 1557, 1558, 1565, 1567, 1569, - 1571, 1573, 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, - 1594, 1596, 1597, 1601, 1604, 1607, 1609, 1611, 1613, 1615, - 1617, 1619, 1621, 1623, 1625, 1627, 1631, 1633, 1635, 1638, - 1641, 1642, 1645, 1646, 1651, 1652, 1659, 1660, 1664, 1665, - 1671, 1675, 1678, 1682, 1683, 1684, 1685, 1686, 1687, 1689, - 1692, 1695, 1699, 1702, 1706, 1710, 1715, 1718, 1721, 1725, - 1729, 1734, 1736, 1739, 1741, 1744, 1746, 1750, 1752, 1757, - 1759, 1762, 1764, 1767, 1769, 1772, 1774, 1779, 1782, 1783, - 1789, 1790, 1797, 1802, 1807, 1808, 1809, 1820, 1822, 1823, - 1828, 1830, 1832, 1834, 1836, 1838, 1841, 1843, 1847, 1849, - 1854, 1858, 1863, 1870, 1876, 1882, 1885, 1888, 1890, 1893, - 1896, 1899, 1902, 1905, 1908, 1911, 1914, 1916, 1918, 1923, - 1925, 1929, 1933, 1937, 1939, 1943, 1947, 1949, 1953, 1957, - 1959, 1963, 1967, 1971, 1975, 1977, 1981, 1985, 1987, 1991, - 1993, 1997, 1999, 2003, 2005, 2009, 2011, 2015, 2017, 2018, - 2019, 2027, 2029, 2033, 2037, 2041, 2045, 2049, 2053, 2057, - 2061, 2065, 2069, 2073, 2075, 2076, 2078, 2081, 2089, 2092, - 2095, 2103, 2110, 2113, 2117, 2120, 2124, 2127, 2131, 2135, - 2139, 2143, 2146, 2150, 2151, 2153, 2154, 2156, 2158, 2160, - 2162, 2164, 2166, 2168, 2170, 2172, 2177 + 1077, 1079, 1081, 1083, 1085, 1087, 1090, 1093, 1096, 1099, + 1102, 1105, 1108, 1111, 1114, 1117, 1120, 1123, 1126, 1129, + 1132, 1135, 1138, 1141, 1144, 1147, 1150, 1153, 1156, 1159, + 1162, 1165, 1169, 1171, 1176, 1178, 1182, 1185, 1188, 1191, + 1192, 1194, 1195, 1196, 1197, 1210, 1211, 1212, 1224, 1231, + 1238, 1239, 1240, 1251, 1252, 1253, 1264, 1270, 1276, 1281, + 1286, 1287, 1289, 1291, 1294, 1300, 1304, 1307, 1312, 1314, + 1318, 1323, 1330, 1331, 1340, 1345, 1347, 1351, 1354, 1356, + 1361, 1363, 1365, 1368, 1371, 1373, 1376, 1378, 1381, 1383, + 1385, 1387, 1389, 1392, 1394, 1397, 1400, 1404, 1406, 1410, + 1412, 1416, 1418, 1420, 1424, 1425, 1428, 1429, 1434, 1439, + 1441, 1443, 1446, 1448, 1450, 1453, 1454, 1456, 1462, 1465, + 1469, 1473, 1478, 1482, 1487, 1492, 1498, 1500, 1502, 1504, + 1506, 1508, 1510, 1512, 1514, 1516, 1518, 1520, 1522, 1525, + 1528, 1536, 1543, 1546, 1547, 1548, 1559, 1560, 1567, 1569, + 1571, 1573, 1575, 1578, 1580, 1582, 1584, 1586, 1588, 1590, + 1592, 1596, 1598, 1599, 1603, 1606, 1609, 1611, 1613, 1615, + 1617, 1619, 1621, 1623, 1625, 1627, 1629, 1633, 1635, 1637, + 1640, 1643, 1644, 1647, 1648, 1653, 1654, 1661, 1662, 1666, + 1667, 1673, 1677, 1680, 1684, 1685, 1686, 1687, 1688, 1689, + 1691, 1694, 1697, 1701, 1704, 1708, 1712, 1717, 1720, 1723, + 1727, 1731, 1736, 1738, 1741, 1743, 1746, 1748, 1752, 1754, + 1759, 1761, 1764, 1766, 1769, 1771, 1774, 1776, 1781, 1784, + 1785, 1791, 1792, 1799, 1804, 1809, 1810, 1811, 1822, 1824, + 1825, 1830, 1832, 1834, 1836, 1838, 1840, 1843, 1845, 1849, + 1851, 1856, 1860, 1865, 1872, 1878, 1884, 1887, 1890, 1892, + 1895, 1898, 1901, 1904, 1907, 1910, 1913, 1916, 1918, 1920, + 1925, 1927, 1931, 1935, 1939, 1941, 1945, 1949, 1951, 1955, + 1959, 1961, 1965, 1969, 1973, 1977, 1979, 1983, 1987, 1989, + 1993, 1995, 1999, 2001, 2005, 2007, 2011, 2013, 2017, 2019, + 2020, 2021, 2029, 2031, 2035, 2039, 2043, 2047, 2051, 2055, + 2059, 2063, 2067, 2071, 2075, 2077, 2078, 2080, 2083, 2091, + 2094, 2097, 2105, 2112, 2115, 2119, 2122, 2126, 2129, 2133, + 2137, 2141, 2145, 2148, 2152, 2153, 2155, 2156, 2158, 2160, + 2162, 2164, 2166, 2168, 2170, 2172, 2174, 2179 }; static const short yyrhs[] = { - -1, 196, 0, 197, 0, 196, 197, 0, 258, 458, - 0, 198, 0, 199, 0, 209, 0, 212, 0, 296, - 0, 18, 0, 1, 0, 77, 340, 354, 364, 354, - 458, 305, 91, 0, 77, 340, 354, 364, 354, 23, - 305, 312, 311, 458, 91, 0, 0, 78, 200, 201, - 458, 91, 0, 202, 0, 340, 354, 202, 0, 206, - 0, 368, 206, 0, 461, 0, 305, 24, 354, 364, - 305, 25, 0, 203, 26, 27, 0, 203, 26, 305, - 295, 27, 354, 0, 0, 203, 306, 24, 25, 204, - 230, 0, 0, 203, 306, 24, 365, 25, 205, 230, - 0, 461, 0, 305, 24, 354, 202, 305, 25, 0, - 206, 26, 27, 0, 206, 26, 305, 295, 27, 354, - 0, 0, 206, 306, 24, 25, 207, 231, 0, 0, - 206, 306, 24, 365, 25, 208, 231, 0, 0, 0, - 79, 461, 24, 365, 25, 210, 231, 211, 458, 91, - 0, 92, 395, 95, 0, 93, 381, 95, 0, 94, - 382, 95, 0, 92, 95, 0, 253, 0, 215, 23, - 218, 0, 0, 227, 216, 22, 219, 0, 0, 5, - 217, 22, 219, 0, 215, 0, 215, 40, 218, 0, - 194, 0, 185, 0, 56, 0, 222, 220, 221, 0, - 222, 0, 225, 224, 225, 0, 182, 0, 183, 0, - 53, 0, 52, 0, 54, 0, 226, 0, 228, 24, - 225, 25, 0, 24, 225, 229, 225, 25, 0, 227, - 0, 190, 0, 460, 0, 187, 0, 227, 26, 27, - 0, 227, 26, 190, 27, 0, 34, 227, 0, 24, - 227, 25, 0, 227, 28, 461, 0, 227, 45, 461, - 0, 223, 0, 33, 0, 32, 0, 0, 232, 230, - 0, 0, 233, 231, 0, 234, 0, 238, 0, 237, - 0, 318, 0, 321, 0, 244, 0, 235, 0, 239, - 0, 237, 0, 319, 0, 323, 0, 245, 0, 235, - 91, 0, 0, 74, 236, 246, 458, 0, 76, 0, - 239, 91, 0, 0, 75, 240, 259, 0, 242, 0, - 242, 40, 241, 0, 187, 0, 244, 0, 0, 245, - 91, 0, 73, 241, 434, 0, 73, 241, 0, 247, - 0, 246, 21, 247, 0, 248, 249, 0, 0, 250, - 248, 0, 460, 0, 187, 0, 296, 0, 89, 0, + -1, 197, 0, 198, 0, 197, 198, 0, 259, 459, + 0, 199, 0, 200, 0, 210, 0, 213, 0, 297, + 0, 18, 0, 1, 0, 77, 341, 355, 365, 355, + 459, 306, 91, 0, 77, 341, 355, 365, 355, 23, + 306, 313, 312, 459, 91, 0, 0, 78, 201, 202, + 459, 91, 0, 203, 0, 341, 355, 203, 0, 207, + 0, 369, 207, 0, 462, 0, 306, 24, 355, 365, + 306, 25, 0, 204, 26, 27, 0, 204, 26, 306, + 296, 27, 355, 0, 0, 204, 307, 24, 25, 205, + 231, 0, 0, 204, 307, 24, 366, 25, 206, 231, + 0, 462, 0, 306, 24, 355, 203, 306, 25, 0, + 207, 26, 27, 0, 207, 26, 306, 296, 27, 355, + 0, 0, 207, 307, 24, 25, 208, 232, 0, 0, + 207, 307, 24, 366, 25, 209, 232, 0, 0, 0, + 79, 462, 24, 366, 25, 211, 232, 212, 459, 91, + 0, 92, 396, 95, 0, 93, 382, 95, 0, 94, + 383, 95, 0, 92, 95, 0, 254, 0, 216, 23, + 219, 0, 0, 228, 217, 22, 220, 0, 0, 5, + 218, 22, 220, 0, 216, 0, 216, 40, 219, 0, + 195, 0, 186, 0, 56, 0, 223, 221, 222, 0, + 223, 0, 226, 225, 226, 0, 183, 0, 184, 0, + 53, 0, 52, 0, 54, 0, 227, 0, 229, 24, + 226, 25, 0, 24, 226, 230, 226, 25, 0, 228, + 0, 191, 0, 461, 0, 188, 0, 228, 26, 27, + 0, 228, 26, 191, 27, 0, 34, 228, 0, 24, + 228, 25, 0, 228, 28, 462, 0, 228, 45, 462, + 0, 224, 0, 33, 0, 32, 0, 0, 233, 231, + 0, 0, 234, 232, 0, 235, 0, 239, 0, 238, + 0, 319, 0, 322, 0, 245, 0, 236, 0, 240, + 0, 238, 0, 320, 0, 324, 0, 246, 0, 236, + 91, 0, 0, 74, 237, 247, 459, 0, 76, 0, + 240, 91, 0, 0, 75, 241, 260, 0, 243, 0, + 243, 40, 242, 0, 188, 0, 245, 0, 0, 246, + 91, 0, 73, 242, 435, 0, 73, 242, 0, 248, + 0, 247, 21, 248, 0, 249, 250, 0, 0, 251, + 249, 0, 461, 0, 188, 0, 297, 0, 89, 0, 90, 0, 120, 0, 121, 0, 134, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, - 86, 0, 364, 0, 340, 354, 364, 0, 0, 19, - 255, 412, 0, 0, 0, 256, 416, 257, 405, 0, - 213, 254, 0, 262, 458, 0, 458, 0, 460, 0, - 187, 0, 188, 0, 260, 26, 27, 0, 260, 26, - 261, 27, 0, 34, 260, 0, 24, 260, 25, 0, - 260, 28, 461, 0, 260, 45, 461, 0, 260, 0, - 434, 0, 260, 0, 262, 21, 260, 0, 460, 0, - 187, 0, 263, 26, 27, 0, 263, 26, 261, 27, - 0, 34, 263, 0, 24, 263, 25, 0, 263, 28, - 461, 0, 263, 45, 461, 0, 0, 265, 0, 263, - 0, 265, 21, 263, 0, 460, 0, 187, 0, 434, - 0, 24, 293, 25, 0, 188, 0, 115, 0, 0, - 24, 267, 405, 25, 0, 266, 0, 268, 26, 293, - 27, 0, 268, 24, 25, 0, 268, 24, 269, 25, - 0, 71, 24, 292, 21, 376, 25, 0, 268, 354, - 28, 461, 305, 0, 268, 354, 45, 461, 305, 0, - 268, 48, 0, 268, 49, 0, 24, 376, 25, 19, - 417, 459, 20, 0, 292, 0, 269, 21, 292, 0, - 268, 0, 48, 270, 0, 49, 270, 0, 29, 276, - 0, 34, 276, 0, 33, 276, 0, 32, 276, 0, - 31, 276, 0, 30, 276, 0, 273, 0, 272, 0, - 271, 28, 461, 0, 271, 26, 293, 27, 0, 461, - 0, 47, 305, 24, 376, 354, 21, 271, 25, 305, - 0, 0, 305, 274, 275, 0, 42, 24, 376, 25, - 0, 42, 270, 0, 43, 24, 376, 25, 0, 43, - 270, 0, 270, 0, 24, 376, 25, 276, 0, 276, - 0, 277, 34, 276, 0, 277, 35, 276, 0, 277, - 36, 276, 0, 277, 0, 278, 33, 277, 0, 278, - 32, 277, 0, 278, 0, 279, 50, 278, 0, 279, - 51, 278, 0, 279, 0, 280, 37, 279, 0, 280, - 38, 279, 0, 280, 52, 279, 0, 280, 53, 279, - 0, 280, 0, 281, 54, 280, 0, 281, 55, 280, - 0, 281, 0, 282, 29, 281, 0, 282, 0, 283, - 39, 282, 0, 283, 0, 284, 40, 283, 0, 284, - 0, 0, 285, 56, 286, 284, 0, 285, 0, 0, - 287, 57, 288, 285, 0, 287, 0, 0, 0, 287, - 41, 290, 293, 22, 291, 289, 0, 289, 0, 270, - 23, 292, 0, 270, 58, 292, 0, 270, 59, 292, - 0, 270, 60, 292, 0, 270, 61, 292, 0, 270, - 62, 292, 0, 270, 63, 292, 0, 270, 64, 292, - 0, 270, 65, 292, 0, 270, 66, 292, 0, 270, - 67, 292, 0, 292, 0, 293, 21, 292, 0, 0, - 293, 0, 289, 0, 297, 0, 72, 0, 303, 0, - 340, 305, 18, 0, 0, 340, 354, 364, 354, 298, - 305, 311, 18, 305, 0, 0, 340, 354, 364, 354, - 23, 299, 305, 312, 311, 18, 305, 0, 301, 0, - 193, 0, 364, 354, 0, 0, 364, 354, 23, 302, - 305, 312, 0, 0, 46, 340, 304, 354, 309, 305, - 243, 18, 0, 46, 340, 305, 18, 0, 46, 307, - 305, 18, 0, 0, 0, 308, 305, 0, 301, 0, - 307, 21, 354, 301, 0, 310, 305, 0, 300, 0, - 309, 21, 354, 300, 0, 0, 311, 21, 354, 301, - 0, 292, 0, 19, 316, 20, 0, 19, 316, 21, - 20, 0, 313, 312, 0, 314, 23, 0, 461, 22, - 0, 315, 0, 314, 315, 0, 26, 295, 27, 0, - 28, 461, 0, 312, 0, 316, 21, 312, 0, 116, - 0, 114, 0, 117, 0, 118, 0, 119, 0, 319, - 91, 0, 0, 251, 354, 320, 265, 458, 305, 0, - 323, 91, 0, 252, 354, 0, 0, 322, 329, 324, - 264, 458, 305, 0, 0, 322, 325, 326, 458, 305, - 0, 221, 0, 214, 0, 143, 0, 144, 0, 146, + 86, 0, 365, 0, 341, 355, 365, 0, 0, 19, + 256, 413, 0, 0, 0, 257, 417, 258, 406, 0, + 214, 255, 0, 263, 459, 0, 459, 0, 461, 0, + 188, 0, 189, 0, 261, 26, 27, 0, 261, 26, + 262, 27, 0, 34, 261, 0, 24, 261, 25, 0, + 261, 28, 462, 0, 261, 45, 462, 0, 261, 0, + 435, 0, 261, 0, 263, 21, 261, 0, 461, 0, + 188, 0, 264, 26, 27, 0, 264, 26, 262, 27, + 0, 34, 264, 0, 24, 264, 25, 0, 264, 28, + 462, 0, 264, 45, 462, 0, 0, 266, 0, 264, + 0, 266, 21, 264, 0, 461, 0, 188, 0, 435, + 0, 24, 294, 25, 0, 189, 0, 115, 0, 0, + 24, 268, 406, 25, 0, 267, 0, 269, 26, 294, + 27, 0, 269, 24, 25, 0, 269, 24, 270, 25, + 0, 71, 24, 293, 21, 377, 25, 0, 269, 355, + 28, 462, 306, 0, 269, 355, 45, 462, 306, 0, + 269, 48, 0, 269, 49, 0, 24, 377, 25, 19, + 418, 460, 20, 0, 293, 0, 270, 21, 293, 0, + 269, 0, 48, 271, 0, 49, 271, 0, 29, 277, + 0, 34, 277, 0, 33, 277, 0, 32, 277, 0, + 31, 277, 0, 30, 277, 0, 274, 0, 273, 0, + 272, 28, 462, 0, 272, 26, 294, 27, 0, 462, + 0, 47, 306, 24, 377, 355, 21, 272, 25, 306, + 0, 0, 306, 275, 276, 0, 42, 24, 377, 25, + 0, 42, 271, 0, 43, 24, 377, 25, 0, 43, + 271, 0, 271, 0, 24, 377, 25, 277, 0, 277, + 0, 278, 34, 277, 0, 278, 35, 277, 0, 278, + 36, 277, 0, 278, 0, 279, 33, 278, 0, 279, + 32, 278, 0, 279, 0, 280, 50, 279, 0, 280, + 51, 279, 0, 280, 0, 281, 37, 280, 0, 281, + 38, 280, 0, 281, 52, 280, 0, 281, 53, 280, + 0, 281, 0, 282, 54, 281, 0, 282, 55, 281, + 0, 282, 0, 283, 29, 282, 0, 283, 0, 284, + 39, 283, 0, 284, 0, 285, 40, 284, 0, 285, + 0, 0, 286, 56, 287, 285, 0, 286, 0, 0, + 288, 57, 289, 286, 0, 288, 0, 0, 0, 288, + 41, 291, 294, 22, 292, 290, 0, 290, 0, 271, + 23, 293, 0, 271, 58, 293, 0, 271, 59, 293, + 0, 271, 60, 293, 0, 271, 61, 293, 0, 271, + 62, 293, 0, 271, 63, 293, 0, 271, 64, 293, + 0, 271, 65, 293, 0, 271, 66, 293, 0, 271, + 67, 293, 0, 293, 0, 294, 21, 293, 0, 0, + 294, 0, 290, 0, 298, 0, 72, 0, 304, 0, + 341, 306, 18, 0, 0, 341, 355, 365, 355, 299, + 306, 312, 18, 306, 0, 0, 341, 355, 365, 355, + 23, 300, 306, 313, 312, 18, 306, 0, 302, 0, + 194, 0, 365, 355, 0, 0, 365, 355, 23, 303, + 306, 313, 0, 0, 46, 341, 305, 355, 310, 306, + 244, 18, 0, 46, 341, 306, 18, 0, 46, 308, + 306, 18, 0, 0, 0, 309, 306, 0, 302, 0, + 308, 21, 355, 302, 0, 311, 306, 0, 301, 0, + 310, 21, 355, 301, 0, 0, 312, 21, 355, 302, + 0, 293, 0, 19, 317, 20, 0, 19, 317, 21, + 20, 0, 314, 313, 0, 315, 23, 0, 462, 22, + 0, 316, 0, 315, 316, 0, 26, 296, 27, 0, + 28, 462, 0, 313, 0, 317, 21, 313, 0, 116, + 0, 114, 0, 117, 0, 118, 0, 119, 0, 320, + 91, 0, 0, 252, 355, 321, 266, 459, 306, 0, + 324, 91, 0, 253, 355, 0, 0, 323, 330, 325, + 265, 459, 306, 0, 0, 323, 326, 327, 459, 306, + 0, 222, 0, 215, 0, 143, 0, 144, 0, 146, 0, 147, 0, 145, 0, 128, 0, 131, 0, 129, 0, 130, 0, 136, 0, 137, 0, 122, 0, 124, 0, 123, 0, 132, 0, 133, 0, 125, 0, 127, 0, 140, 0, 142, 0, 155, 0, 154, 0, 139, - 0, 141, 0, 179, 0, 189, 0, 138, 0, 153, - 0, 152, 0, 162, 0, 160, 0, 161, 0, 156, - 0, 157, 0, 158, 0, 159, 0, 163, 0, 164, - 0, 167, 0, 168, 0, 165, 0, 166, 0, 151, - 0, 148, 0, 149, 0, 150, 0, 120, 0, 121, - 0, 134, 0, 135, 0, 111, 305, 0, 113, 305, - 0, 112, 305, 0, 336, 305, 0, 329, 305, 0, - 327, 305, 0, 330, 305, 0, 328, 305, 0, 332, - 305, 0, 331, 305, 0, 333, 305, 0, 334, 305, - 0, 169, 354, 0, 171, 354, 0, 170, 354, 0, - 172, 354, 0, 173, 354, 0, 174, 354, 0, 175, - 354, 0, 176, 354, 0, 177, 354, 0, 178, 354, - 0, 462, 354, 0, 345, 354, 0, 359, 354, 0, - 335, 354, 0, 305, 340, 305, 0, 342, 0, 342, - 88, 341, 91, 0, 376, 0, 376, 21, 341, 0, - 317, 343, 0, 337, 343, 0, 338, 343, 0, 0, - 340, 0, 0, 0, 0, 354, 68, 461, 305, 19, - 346, 409, 355, 410, 347, 20, 344, 0, 0, 0, - 354, 69, 461, 305, 19, 348, 409, 355, 410, 349, - 20, 0, 354, 68, 461, 305, 19, 20, 0, 354, - 69, 461, 305, 19, 20, 0, 0, 0, 354, 68, - 305, 19, 350, 409, 355, 410, 351, 20, 0, 0, - 0, 354, 69, 305, 19, 352, 409, 355, 410, 353, - 20, 0, 354, 68, 305, 19, 20, 0, 354, 69, - 305, 19, 20, 0, 354, 68, 461, 354, 0, 354, - 69, 461, 354, 0, 0, 356, 0, 212, 0, 355, - 356, 0, 340, 354, 357, 305, 18, 0, 340, 305, - 18, 0, 358, 354, 0, 357, 21, 358, 354, 0, - 364, 0, 22, 305, 295, 0, 364, 22, 305, 295, - 0, 354, 70, 19, 361, 20, 305, 0, 0, 354, - 70, 461, 19, 360, 361, 20, 305, 0, 354, 70, - 461, 305, 0, 362, 0, 361, 21, 362, 0, 361, - 21, 0, 461, 0, 461, 23, 305, 295, 0, 203, - 0, 378, 0, 368, 193, 0, 368, 363, 0, 203, - 0, 368, 203, 0, 371, 0, 354, 369, 0, 111, - 0, 112, 0, 113, 0, 366, 0, 367, 366, 0, - 34, 0, 34, 367, 0, 34, 368, 0, 34, 367, - 368, 0, 370, 0, 370, 21, 5, 0, 461, 0, - 370, 21, 461, 0, 5, 0, 372, 0, 372, 21, - 5, 0, 0, 373, 375, 0, 0, 372, 21, 374, - 375, 0, 305, 340, 363, 305, 0, 461, 0, 339, - 0, 339, 377, 0, 368, 0, 379, 0, 368, 379, - 0, 0, 379, 0, 305, 24, 354, 377, 25, 0, - 26, 27, 0, 26, 295, 27, 0, 379, 26, 27, - 0, 379, 26, 295, 27, 0, 305, 24, 25, 0, - 305, 24, 371, 25, 0, 379, 305, 24, 25, 0, - 379, 305, 24, 371, 25, 0, 397, 0, 399, 0, - 402, 0, 405, 0, 420, 0, 423, 0, 455, 0, - 428, 0, 457, 0, 383, 0, 381, 0, 390, 0, - 383, 390, 0, 427, 383, 0, 454, 396, 11, 24, - 293, 25, 18, 0, 454, 396, 11, 24, 293, 25, - 0, 385, 390, 0, 0, 0, 13, 24, 294, 18, - 294, 18, 386, 294, 387, 25, 0, 0, 191, 407, - 24, 389, 431, 25, 0, 192, 0, 397, 0, 399, - 0, 402, 0, 393, 416, 0, 393, 0, 394, 0, - 420, 0, 391, 0, 384, 0, 388, 0, 457, 0, - 24, 390, 25, 0, 1, 0, 0, 422, 392, 390, - 0, 407, 19, 0, 411, 20, 0, 396, 0, 415, - 0, 397, 0, 399, 0, 402, 0, 406, 0, 421, - 0, 423, 0, 428, 0, 456, 0, 24, 396, 25, - 0, 457, 0, 1, 0, 461, 22, 0, 110, 380, - 0, 0, 101, 398, 0, 0, 6, 295, 400, 22, - 0, 0, 101, 398, 6, 295, 401, 22, 0, 0, - 7, 403, 22, 0, 0, 101, 398, 7, 404, 22, - 0, 24, 405, 25, 0, 407, 413, 0, 407, 414, - 408, 0, 0, 0, 0, 0, 0, 20, 0, 110, - 20, 0, 419, 20, 0, 419, 110, 20, 0, 416, - 20, 0, 416, 110, 20, 0, 416, 419, 20, 0, - 416, 419, 110, 20, 0, 19, 412, 0, 19, 20, - 0, 19, 415, 20, 0, 19, 416, 20, 0, 19, - 416, 419, 20, 0, 396, 0, 415, 396, 0, 296, - 0, 416, 296, 0, 418, 0, 417, 21, 418, 0, - 292, 0, 19, 417, 459, 20, 0, 380, 0, 419, - 380, 0, 18, 0, 293, 18, 0, 18, 0, 293, - 18, 0, 293, 0, 8, 24, 293, 25, 0, 422, - 380, 0, 0, 422, 380, 9, 424, 380, 0, 0, - 10, 24, 293, 425, 25, 380, 0, 11, 24, 293, - 25, 0, 11, 24, 293, 25, 0, 0, 0, 191, - 429, 407, 24, 430, 431, 25, 405, 453, 408, 0, - 433, 0, 0, 431, 432, 21, 433, 0, 452, 0, - 460, 0, 188, 0, 187, 0, 190, 0, 434, 190, - 0, 434, 0, 24, 293, 25, 0, 435, 0, 268, - 26, 293, 27, 0, 268, 24, 25, 0, 268, 24, - 269, 25, 0, 71, 24, 292, 21, 376, 25, 0, - 268, 354, 28, 461, 305, 0, 268, 354, 45, 461, - 305, 0, 268, 48, 0, 268, 49, 0, 436, 0, - 48, 270, 0, 49, 270, 0, 29, 276, 0, 34, - 276, 0, 33, 276, 0, 32, 276, 0, 31, 276, - 0, 30, 276, 0, 273, 0, 437, 0, 24, 376, - 25, 276, 0, 438, 0, 277, 34, 276, 0, 277, - 35, 276, 0, 277, 36, 276, 0, 439, 0, 278, - 33, 277, 0, 278, 32, 277, 0, 440, 0, 279, - 50, 278, 0, 279, 51, 278, 0, 441, 0, 280, - 37, 279, 0, 280, 38, 279, 0, 280, 52, 279, - 0, 280, 53, 279, 0, 442, 0, 281, 54, 280, - 0, 281, 55, 280, 0, 443, 0, 282, 29, 281, - 0, 444, 0, 283, 39, 282, 0, 445, 0, 284, - 40, 283, 0, 446, 0, 285, 56, 284, 0, 447, - 0, 287, 57, 285, 0, 448, 0, 0, 0, 287, - 41, 450, 293, 22, 451, 289, 0, 449, 0, 270, - 23, 292, 0, 270, 58, 292, 0, 270, 59, 292, - 0, 270, 60, 292, 0, 270, 61, 292, 0, 270, - 62, 292, 0, 270, 63, 292, 0, 270, 64, 292, - 0, 270, 65, 292, 0, 270, 66, 292, 0, 270, - 67, 292, 0, 192, 0, 0, 12, 0, 426, 380, - 0, 454, 380, 11, 24, 293, 25, 18, 0, 385, - 380, 0, 426, 396, 0, 454, 396, 11, 24, 293, - 25, 18, 0, 454, 396, 11, 24, 293, 25, 0, - 385, 396, 0, 14, 461, 18, 0, 15, 18, 0, - 100, 15, 18, 0, 16, 18, 0, 96, 16, 18, - 0, 97, 16, 18, 0, 98, 16, 18, 0, 99, - 16, 18, 0, 17, 18, 0, 17, 293, 18, 0, - 0, 18, 0, 0, 21, 0, 186, 0, 187, 0, - 191, 0, 192, 0, 460, 0, 188, 0, 193, 0, - 188, 0, 44, 24, 293, 25, 0, 44, 24, 376, - 25, 0 + 0, 141, 0, 180, 0, 190, 0, 138, 0, 153, + 0, 152, 0, 163, 0, 161, 0, 162, 0, 156, + 0, 157, 0, 158, 0, 159, 0, 160, 0, 164, + 0, 165, 0, 168, 0, 169, 0, 166, 0, 167, + 0, 151, 0, 148, 0, 149, 0, 150, 0, 120, + 0, 121, 0, 134, 0, 135, 0, 111, 306, 0, + 113, 306, 0, 112, 306, 0, 337, 306, 0, 330, + 306, 0, 328, 306, 0, 331, 306, 0, 329, 306, + 0, 333, 306, 0, 332, 306, 0, 334, 306, 0, + 335, 306, 0, 170, 355, 0, 172, 355, 0, 171, + 355, 0, 173, 355, 0, 174, 355, 0, 175, 355, + 0, 176, 355, 0, 177, 355, 0, 178, 355, 0, + 179, 355, 0, 463, 355, 0, 346, 355, 0, 360, + 355, 0, 336, 355, 0, 306, 341, 306, 0, 343, + 0, 343, 88, 342, 91, 0, 377, 0, 377, 21, + 342, 0, 318, 344, 0, 338, 344, 0, 339, 344, + 0, 0, 341, 0, 0, 0, 0, 355, 68, 462, + 306, 19, 347, 410, 356, 411, 348, 20, 345, 0, + 0, 0, 355, 69, 462, 306, 19, 349, 410, 356, + 411, 350, 20, 0, 355, 68, 462, 306, 19, 20, + 0, 355, 69, 462, 306, 19, 20, 0, 0, 0, + 355, 68, 306, 19, 351, 410, 356, 411, 352, 20, + 0, 0, 0, 355, 69, 306, 19, 353, 410, 356, + 411, 354, 20, 0, 355, 68, 306, 19, 20, 0, + 355, 69, 306, 19, 20, 0, 355, 68, 462, 355, + 0, 355, 69, 462, 355, 0, 0, 357, 0, 213, + 0, 356, 357, 0, 341, 355, 358, 306, 18, 0, + 341, 306, 18, 0, 359, 355, 0, 358, 21, 359, + 355, 0, 365, 0, 22, 306, 296, 0, 365, 22, + 306, 296, 0, 355, 70, 19, 362, 20, 306, 0, + 0, 355, 70, 462, 19, 361, 362, 20, 306, 0, + 355, 70, 462, 306, 0, 363, 0, 362, 21, 363, + 0, 362, 21, 0, 462, 0, 462, 23, 306, 296, + 0, 204, 0, 379, 0, 369, 194, 0, 369, 364, + 0, 204, 0, 369, 204, 0, 372, 0, 355, 370, + 0, 111, 0, 112, 0, 113, 0, 367, 0, 368, + 367, 0, 34, 0, 34, 368, 0, 34, 369, 0, + 34, 368, 369, 0, 371, 0, 371, 21, 5, 0, + 462, 0, 371, 21, 462, 0, 5, 0, 373, 0, + 373, 21, 5, 0, 0, 374, 376, 0, 0, 373, + 21, 375, 376, 0, 306, 341, 364, 306, 0, 462, + 0, 340, 0, 340, 378, 0, 369, 0, 380, 0, + 369, 380, 0, 0, 380, 0, 306, 24, 355, 378, + 25, 0, 26, 27, 0, 26, 296, 27, 0, 380, + 26, 27, 0, 380, 26, 296, 27, 0, 306, 24, + 25, 0, 306, 24, 372, 25, 0, 380, 306, 24, + 25, 0, 380, 306, 24, 372, 25, 0, 398, 0, + 400, 0, 403, 0, 406, 0, 421, 0, 424, 0, + 456, 0, 429, 0, 458, 0, 384, 0, 382, 0, + 391, 0, 384, 391, 0, 428, 384, 0, 455, 397, + 11, 24, 294, 25, 18, 0, 455, 397, 11, 24, + 294, 25, 0, 386, 391, 0, 0, 0, 13, 24, + 295, 18, 295, 18, 387, 295, 388, 25, 0, 0, + 192, 408, 24, 390, 432, 25, 0, 193, 0, 398, + 0, 400, 0, 403, 0, 394, 417, 0, 394, 0, + 395, 0, 421, 0, 392, 0, 385, 0, 389, 0, + 458, 0, 24, 391, 25, 0, 1, 0, 0, 423, + 393, 391, 0, 408, 19, 0, 412, 20, 0, 397, + 0, 416, 0, 398, 0, 400, 0, 403, 0, 407, + 0, 422, 0, 424, 0, 429, 0, 457, 0, 24, + 397, 25, 0, 458, 0, 1, 0, 462, 22, 0, + 110, 381, 0, 0, 101, 399, 0, 0, 6, 296, + 401, 22, 0, 0, 101, 399, 6, 296, 402, 22, + 0, 0, 7, 404, 22, 0, 0, 101, 399, 7, + 405, 22, 0, 24, 406, 25, 0, 408, 414, 0, + 408, 415, 409, 0, 0, 0, 0, 0, 0, 20, + 0, 110, 20, 0, 420, 20, 0, 420, 110, 20, + 0, 417, 20, 0, 417, 110, 20, 0, 417, 420, + 20, 0, 417, 420, 110, 20, 0, 19, 413, 0, + 19, 20, 0, 19, 416, 20, 0, 19, 417, 20, + 0, 19, 417, 420, 20, 0, 397, 0, 416, 397, + 0, 297, 0, 417, 297, 0, 419, 0, 418, 21, + 419, 0, 293, 0, 19, 418, 460, 20, 0, 381, + 0, 420, 381, 0, 18, 0, 294, 18, 0, 18, + 0, 294, 18, 0, 294, 0, 8, 24, 294, 25, + 0, 423, 381, 0, 0, 423, 381, 9, 425, 381, + 0, 0, 10, 24, 294, 426, 25, 381, 0, 11, + 24, 294, 25, 0, 11, 24, 294, 25, 0, 0, + 0, 192, 430, 408, 24, 431, 432, 25, 406, 454, + 409, 0, 434, 0, 0, 432, 433, 21, 434, 0, + 453, 0, 461, 0, 189, 0, 188, 0, 191, 0, + 435, 191, 0, 435, 0, 24, 294, 25, 0, 436, + 0, 269, 26, 294, 27, 0, 269, 24, 25, 0, + 269, 24, 270, 25, 0, 71, 24, 293, 21, 377, + 25, 0, 269, 355, 28, 462, 306, 0, 269, 355, + 45, 462, 306, 0, 269, 48, 0, 269, 49, 0, + 437, 0, 48, 271, 0, 49, 271, 0, 29, 277, + 0, 34, 277, 0, 33, 277, 0, 32, 277, 0, + 31, 277, 0, 30, 277, 0, 274, 0, 438, 0, + 24, 377, 25, 277, 0, 439, 0, 278, 34, 277, + 0, 278, 35, 277, 0, 278, 36, 277, 0, 440, + 0, 279, 33, 278, 0, 279, 32, 278, 0, 441, + 0, 280, 50, 279, 0, 280, 51, 279, 0, 442, + 0, 281, 37, 280, 0, 281, 38, 280, 0, 281, + 52, 280, 0, 281, 53, 280, 0, 443, 0, 282, + 54, 281, 0, 282, 55, 281, 0, 444, 0, 283, + 29, 282, 0, 445, 0, 284, 39, 283, 0, 446, + 0, 285, 40, 284, 0, 447, 0, 286, 56, 285, + 0, 448, 0, 288, 57, 286, 0, 449, 0, 0, + 0, 288, 41, 451, 294, 22, 452, 290, 0, 450, + 0, 271, 23, 293, 0, 271, 58, 293, 0, 271, + 59, 293, 0, 271, 60, 293, 0, 271, 61, 293, + 0, 271, 62, 293, 0, 271, 63, 293, 0, 271, + 64, 293, 0, 271, 65, 293, 0, 271, 66, 293, + 0, 271, 67, 293, 0, 193, 0, 0, 12, 0, + 427, 381, 0, 455, 381, 11, 24, 294, 25, 18, + 0, 386, 381, 0, 427, 397, 0, 455, 397, 11, + 24, 294, 25, 18, 0, 455, 397, 11, 24, 294, + 25, 0, 386, 397, 0, 14, 462, 18, 0, 15, + 18, 0, 100, 15, 18, 0, 16, 18, 0, 96, + 16, 18, 0, 97, 16, 18, 0, 98, 16, 18, + 0, 99, 16, 18, 0, 17, 18, 0, 17, 294, + 18, 0, 0, 18, 0, 0, 21, 0, 187, 0, + 188, 0, 192, 0, 193, 0, 461, 0, 189, 0, + 194, 0, 189, 0, 44, 24, 294, 25, 0, 44, + 24, 377, 25, 0 }; #endif @@ -762,42 +763,42 @@ static const short yyrline[] = 1288, 1289, 1290, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1314, 1315, 1319, 1320, 1324, 1325, 1329, 1330, 1331, 1332, - 1336, 1337, 1338, 1339, 1340, 1341, 1345, 1346, 1347, 1348, - 1352, 1353, 1354, 1355, 1359, 1360, 1361, 1362, 1363, 1364, - 1365, 1366, 1367, 1368, 1369, 1370, 1378, 1379, 1380, 1381, + 1333, 1337, 1338, 1339, 1340, 1341, 1342, 1346, 1347, 1348, + 1349, 1353, 1354, 1355, 1356, 1360, 1361, 1362, 1363, 1364, + 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, - 1395, 1400, 1401, 1406, 1407, 1412, 1413, 1414, 1418, 1419, - 1423, 1430, 1430, 1430, 1436, 1436, 1436, 1441, 1443, 1445, - 1445, 1445, 1450, 1450, 1450, 1455, 1457, 1459, 1460, 1464, - 1468, 1469, 1470, 1474, 1476, 1481, 1483, 1488, 1489, 1490, - 1495, 1497, 1497, 1499, 1503, 1505, 1507, 1511, 1516, 1524, - 1525, 1526, 1532, 1537, 1538, 1543, 1544, 1548, 1549, 1550, - 1554, 1555, 1559, 1560, 1561, 1562, 1566, 1567, 1571, 1572, - 1576, 1577, 1578, 1582, 1582, 1583, 1583, 1588, 1600, 1617, - 1618, 1622, 1623, 1624, 1628, 1629, 1633, 1635, 1636, 1638, - 1639, 1641, 1643, 1645, 1647, 1654, 1655, 1656, 1657, 1658, - 1659, 1660, 1661, 1662, 1667, 1671, 1675, 1676, 1681, 1683, - 1685, 1687, 1692, 1692, 1692, 1700, 1700, 1704, 1708, 1709, + 1392, 1396, 1401, 1402, 1407, 1408, 1413, 1414, 1415, 1419, + 1420, 1424, 1431, 1431, 1431, 1437, 1437, 1437, 1442, 1444, + 1446, 1446, 1446, 1451, 1451, 1451, 1456, 1458, 1460, 1461, + 1465, 1469, 1470, 1471, 1475, 1477, 1482, 1484, 1489, 1490, + 1491, 1496, 1498, 1498, 1500, 1504, 1506, 1508, 1512, 1517, + 1525, 1526, 1527, 1533, 1538, 1539, 1544, 1545, 1549, 1550, + 1551, 1555, 1556, 1560, 1561, 1562, 1563, 1567, 1568, 1572, + 1573, 1577, 1578, 1579, 1583, 1583, 1584, 1584, 1589, 1601, + 1618, 1619, 1623, 1624, 1625, 1629, 1630, 1634, 1636, 1637, + 1639, 1640, 1642, 1644, 1646, 1648, 1655, 1656, 1657, 1658, + 1659, 1660, 1661, 1662, 1663, 1668, 1672, 1676, 1677, 1682, + 1684, 1686, 1688, 1693, 1693, 1693, 1701, 1701, 1705, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, - 1720, 1724, 1724, 1731, 1735, 1739, 1740, 1744, 1745, 1746, - 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1758, 1759, - 1767, 1768, 1775, 1775, 1777, 1777, 1782, 1782, 1784, 1784, - 1789, 1790, 1795, 1799, 1803, 1807, 1811, 1815, 1819, 1820, - 1821, 1822, 1824, 1825, 1827, 1829, 1836, 1841, 1843, 1845, - 1847, 1852, 1853, 1857, 1858, 1862, 1863, 1867, 1868, 1872, - 1873, 1877, 1878, 1882, 1883, 1884, 1888, 1902, 1907, 1907, - 1912, 1912, 1917, 1923, 1927, 1927, 1927, 1938, 1939, 1939, - 1944, 1945, 1946, 1957, 1965, 1966, 1970, 1971, 1975, 1976, - 1977, 1978, 1979, 1981, 1982, 1983, 1984, 1988, 1989, 1990, - 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2006, - 2007, 2008, 2009, 2013, 2014, 2015, 2019, 2020, 2021, 2025, - 2026, 2027, 2028, 2029, 2033, 2034, 2035, 2039, 2040, 2044, - 2045, 2049, 2050, 2054, 2055, 2059, 2060, 2064, 2065, 2065, - 2065, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, - 2080, 2081, 2082, 2086, 2087, 2091, 2095, 2097, 2099, 2104, - 2105, 2107, 2109, 2113, 2114, 2115, 2117, 2118, 2119, 2120, - 2121, 2122, 2123, 2127, 2128, 2132, 2133, 2137, 2141, 2142, - 2143, 2144, 2145, 2149, 2150, 2151, 2152 + 1720, 1721, 1725, 1725, 1732, 1736, 1740, 1741, 1745, 1746, + 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1759, + 1760, 1768, 1769, 1776, 1776, 1778, 1778, 1783, 1783, 1785, + 1785, 1790, 1791, 1796, 1800, 1804, 1808, 1812, 1816, 1820, + 1821, 1822, 1823, 1825, 1826, 1828, 1830, 1837, 1842, 1844, + 1846, 1848, 1853, 1854, 1858, 1859, 1863, 1864, 1868, 1869, + 1873, 1874, 1878, 1879, 1883, 1884, 1885, 1889, 1903, 1908, + 1908, 1913, 1913, 1918, 1924, 1928, 1928, 1928, 1939, 1940, + 1940, 1945, 1946, 1947, 1958, 1966, 1967, 1971, 1972, 1976, + 1977, 1978, 1979, 1980, 1982, 1983, 1984, 1985, 1989, 1990, + 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2002, 2003, + 2007, 2008, 2009, 2010, 2014, 2015, 2016, 2020, 2021, 2022, + 2026, 2027, 2028, 2029, 2030, 2034, 2035, 2036, 2040, 2041, + 2045, 2046, 2050, 2051, 2055, 2056, 2060, 2061, 2065, 2066, + 2066, 2066, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, + 2080, 2081, 2082, 2083, 2087, 2088, 2092, 2096, 2098, 2100, + 2105, 2106, 2108, 2110, 2114, 2115, 2116, 2118, 2119, 2120, + 2121, 2122, 2123, 2124, 2128, 2129, 2133, 2134, 2138, 2142, + 2143, 2144, 2145, 2146, 2150, 2151, 2152, 2153 }; #endif @@ -833,19 +834,19 @@ static const char *const yytname[] = "QOWNED", "QDEPENDENT", "QRETURNED", "QEXPOSED", "QNULL", "QOBSERVER", "QISNULL", "QEXITS", "QMAYEXIT", "QNEVEREXIT", "QTRUEEXIT", "QFALSEEXIT", "QLONG", "QSIGNED", "QUNSIGNED", "QSHORT", "QUNUSED", - "QSEF", "QNOTNULL", "QRELNULL", "QABSTRACT", "QCONCRETE", "QMUTABLE", - "QIMMUTABLE", "QTRUENULL", "QFALSENULL", "QEXTERNAL", "QREFCOUNTED", - "QREFS", "QNEWREF", "QTEMPREF", "QKILLREF", "QRELDEF", "CGCHAR", - "CBOOL", "CINT", "CGFLOAT", "CDOUBLE", "CVOID", "QANYTYPE", - "QINTEGRALTYPE", "QUNSIGNEDINTEGRALTYPE", "QSIGNEDINTEGRALTYPE", - "QNULLTERMINATED", "QSETBUFFERSIZE", "QSETSTRINGLENGTH", "QMAXSET", - "QMAXREAD", "QTESTINRANGE", "TCAND", "IDENTIFIER", "NEW_IDENTIFIER", - "TYPE_NAME_OR_ID", "CANNOTATION", "CCONSTANT", "ITER_NAME", - "ITER_ENDNAME", "TYPE_NAME", "METASTATE_NAME", "file", "externalDefs", - "externalDef", "constantDecl", "fcnDecl", "@1", "plainFcn", - "plainNamedDecl", "namedDeclBase", "@2", "@3", "plainNamedDeclBase", - "@4", "@5", "iterDecl", "@6", "@7", "macroDef", "fcnDefHdr", - "metaStateConstraint", "metaStateSpecifier", "@8", "@9", + "QSEF", "QNOTNULL", "QRELNULL", "QABSTRACT", "QNUMABSTRACT", + "QCONCRETE", "QMUTABLE", "QIMMUTABLE", "QTRUENULL", "QFALSENULL", + "QEXTERNAL", "QREFCOUNTED", "QREFS", "QNEWREF", "QTEMPREF", "QKILLREF", + "QRELDEF", "CGCHAR", "CBOOL", "CINT", "CGFLOAT", "CDOUBLE", "CVOID", + "QANYTYPE", "QINTEGRALTYPE", "QUNSIGNEDINTEGRALTYPE", + "QSIGNEDINTEGRALTYPE", "QNULLTERMINATED", "QSETBUFFERSIZE", + "QSETSTRINGLENGTH", "QMAXSET", "QMAXREAD", "QTESTINRANGE", "TCAND", + "IDENTIFIER", "NEW_IDENTIFIER", "TYPE_NAME_OR_ID", "CANNOTATION", + "CCONSTANT", "ITER_NAME", "ITER_ENDNAME", "TYPE_NAME", "METASTATE_NAME", + "file", "externalDefs", "externalDef", "constantDecl", "fcnDecl", "@1", + "plainFcn", "plainNamedDecl", "namedDeclBase", "@2", "@3", + "plainNamedDeclBase", "@4", "@5", "iterDecl", "@6", "@7", "macroDef", + "fcnDefHdr", "metaStateConstraint", "metaStateSpecifier", "@8", "@9", "metaStateExpression", "metaStateName", "constraintSeperator", "BufConstraintList", "BufConstraint", "bufferModifier", "relationalOp", "BufConstraintExpr", "BufConstraintTerm", "BufConstraintSrefExpr", @@ -909,77 +910,77 @@ static const char *const yytname[] = /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const short yyr1[] = { - 0, 195, 195, 196, 196, 197, 197, 197, 197, 197, - 197, 197, 197, 198, 198, 200, 199, 201, 201, 202, - 202, 203, 203, 203, 203, 204, 203, 205, 203, 206, - 206, 206, 206, 207, 206, 208, 206, 210, 211, 209, - 212, 212, 212, 212, 213, 214, 216, 215, 217, 215, - 218, 218, 219, 220, 220, 221, 221, 222, 223, 223, - 224, 224, 224, 225, 225, 225, 226, 226, 227, 227, - 227, 227, 227, 227, 227, 227, 228, 229, 229, 230, - 230, 231, 231, 232, 232, 232, 232, 232, 232, 233, - 233, 233, 233, 233, 233, 234, 236, 235, 237, 238, - 240, 239, 241, 241, 242, 243, 243, 244, 245, 245, - 246, 246, 247, 248, 248, 249, 249, 249, 250, 250, - 250, 250, 250, 251, 251, 251, 251, 251, 252, 252, - 253, 253, 255, 254, 256, 257, 254, 258, 259, 259, - 260, 260, 260, 260, 260, 260, 260, 260, 260, 261, - 261, 262, 262, 263, 263, 263, 263, 263, 263, 263, - 263, 264, 264, 265, 265, 266, 266, 266, 266, 266, - 266, 267, 266, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 269, 269, 270, 270, 270, 270, 270, - 270, 270, 270, 270, 270, 270, 271, 271, 271, 272, - 274, 273, 275, 275, 275, 275, 276, 276, 277, 277, - 277, 277, 278, 278, 278, 279, 279, 279, 280, 280, - 280, 280, 280, 281, 281, 281, 282, 282, 283, 283, - 284, 284, 285, 286, 285, 287, 288, 287, 289, 290, - 291, 289, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 293, 293, 294, 294, 295, 296, - 296, 296, 297, 298, 297, 299, 297, 300, 300, 301, - 302, 301, 304, 303, 303, 303, 305, 306, 307, 308, - 308, 309, 310, 310, 311, 311, 312, 312, 312, 312, - 313, 313, 314, 314, 315, 315, 316, 316, 317, 317, - 317, 317, 317, 318, 320, 319, 321, 322, 324, 323, - 325, 323, 326, 326, 327, 327, 327, 327, 327, 328, - 328, 328, 328, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 330, 330, 331, 331, 332, 332, 333, 333, 333, 333, - 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, - 336, 336, 336, 336, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 337, 337, 337, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, - 339, 340, 340, 341, 341, 342, 342, 342, 343, 343, - 344, 346, 347, 345, 348, 349, 345, 345, 345, 350, - 351, 345, 352, 353, 345, 345, 345, 345, 345, 354, - 355, 355, 355, 356, 356, 357, 357, 358, 358, 358, - 359, 360, 359, 359, 361, 361, 361, 362, 362, 363, - 363, 363, 363, 364, 364, 365, 365, 366, 366, 366, - 367, 367, 368, 368, 368, 368, 369, 369, 370, 370, - 371, 371, 371, 373, 372, 374, 372, 375, 375, 376, - 376, 377, 377, 377, 378, 378, 379, 379, 379, 379, - 379, 379, 379, 379, 379, 380, 380, 380, 380, 380, - 380, 380, 380, 380, 381, 382, 383, 383, 384, 384, - 384, 384, 386, 387, 385, 389, 388, 388, 390, 390, - 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, - 390, 392, 391, 393, 394, 395, 395, 396, 396, 396, - 396, 396, 396, 396, 396, 396, 396, 396, 397, 397, - 398, 398, 400, 399, 401, 399, 403, 402, 404, 402, - 405, 405, 406, 407, 408, 409, 410, 411, 412, 412, - 412, 412, 412, 412, 412, 412, 413, 414, 414, 414, - 414, 415, 415, 416, 416, 417, 417, 418, 418, 419, - 419, 420, 420, 421, 421, 421, 422, 423, 424, 423, - 425, 423, 426, 427, 429, 430, 428, 431, 432, 431, - 433, 433, 433, 433, 434, 434, 435, 435, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 437, 437, 437, - 437, 437, 437, 437, 437, 437, 437, 438, 438, 439, - 439, 439, 439, 440, 440, 440, 441, 441, 441, 442, - 442, 442, 442, 442, 443, 443, 443, 444, 444, 445, - 445, 446, 446, 447, 447, 448, 448, 449, 450, 451, - 449, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 453, 453, 454, 455, 455, 455, 456, - 456, 456, 456, 457, 457, 457, 457, 457, 457, 457, - 457, 457, 457, 458, 458, 459, 459, 460, 461, 461, - 461, 461, 461, 462, 462, 462, 462 + 0, 196, 196, 197, 197, 198, 198, 198, 198, 198, + 198, 198, 198, 199, 199, 201, 200, 202, 202, 203, + 203, 204, 204, 204, 204, 205, 204, 206, 204, 207, + 207, 207, 207, 208, 207, 209, 207, 211, 212, 210, + 213, 213, 213, 213, 214, 215, 217, 216, 218, 216, + 219, 219, 220, 221, 221, 222, 222, 223, 224, 224, + 225, 225, 225, 226, 226, 226, 227, 227, 228, 228, + 228, 228, 228, 228, 228, 228, 229, 230, 230, 231, + 231, 232, 232, 233, 233, 233, 233, 233, 233, 234, + 234, 234, 234, 234, 234, 235, 237, 236, 238, 239, + 241, 240, 242, 242, 243, 244, 244, 245, 246, 246, + 247, 247, 248, 249, 249, 250, 250, 250, 251, 251, + 251, 251, 251, 252, 252, 252, 252, 252, 253, 253, + 254, 254, 256, 255, 257, 258, 255, 259, 260, 260, + 261, 261, 261, 261, 261, 261, 261, 261, 261, 262, + 262, 263, 263, 264, 264, 264, 264, 264, 264, 264, + 264, 265, 265, 266, 266, 267, 267, 267, 267, 267, + 267, 268, 267, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 270, 270, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 272, 272, 272, 273, + 275, 274, 276, 276, 276, 276, 277, 277, 278, 278, + 278, 278, 279, 279, 279, 280, 280, 280, 281, 281, + 281, 281, 281, 282, 282, 282, 283, 283, 284, 284, + 285, 285, 286, 287, 286, 288, 289, 288, 290, 291, + 292, 290, 293, 293, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 294, 294, 295, 295, 296, 297, + 297, 297, 298, 299, 298, 300, 298, 301, 301, 302, + 303, 302, 305, 304, 304, 304, 306, 307, 308, 309, + 309, 310, 311, 311, 312, 312, 313, 313, 313, 313, + 314, 314, 315, 315, 316, 316, 317, 317, 318, 318, + 318, 318, 318, 319, 321, 320, 322, 323, 325, 324, + 326, 324, 327, 327, 328, 328, 328, 328, 328, 329, + 329, 329, 329, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 331, 331, 332, 332, 333, 333, 334, 334, 334, 334, + 334, 335, 335, 335, 335, 335, 335, 336, 336, 336, + 336, 337, 337, 337, 337, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 339, 339, 339, + 339, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 340, 341, 341, 342, 342, 343, 343, 343, 344, + 344, 345, 347, 348, 346, 349, 350, 346, 346, 346, + 351, 352, 346, 353, 354, 346, 346, 346, 346, 346, + 355, 356, 356, 356, 357, 357, 358, 358, 359, 359, + 359, 360, 361, 360, 360, 362, 362, 362, 363, 363, + 364, 364, 364, 364, 365, 365, 366, 366, 367, 367, + 367, 368, 368, 369, 369, 369, 369, 370, 370, 371, + 371, 372, 372, 372, 374, 373, 375, 373, 376, 376, + 377, 377, 378, 378, 378, 379, 379, 380, 380, 380, + 380, 380, 380, 380, 380, 380, 381, 381, 381, 381, + 381, 381, 381, 381, 381, 382, 383, 384, 384, 385, + 385, 385, 385, 387, 388, 386, 390, 389, 389, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 393, 392, 394, 395, 396, 396, 397, 397, + 397, 397, 397, 397, 397, 397, 397, 397, 397, 398, + 398, 399, 399, 401, 400, 402, 400, 404, 403, 405, + 403, 406, 406, 407, 408, 409, 410, 411, 412, 413, + 413, 413, 413, 413, 413, 413, 413, 414, 415, 415, + 415, 415, 416, 416, 417, 417, 418, 418, 419, 419, + 420, 420, 421, 421, 422, 422, 422, 423, 424, 425, + 424, 426, 424, 427, 428, 430, 431, 429, 432, 433, + 432, 434, 434, 434, 434, 435, 435, 436, 436, 437, + 437, 437, 437, 437, 437, 437, 437, 437, 438, 438, + 438, 438, 438, 438, 438, 438, 438, 438, 439, 439, + 440, 440, 440, 440, 441, 441, 441, 442, 442, 442, + 443, 443, 443, 443, 443, 444, 444, 444, 445, 445, + 446, 446, 447, 447, 448, 448, 449, 449, 450, 451, + 452, 450, 453, 453, 453, 453, 453, 453, 453, 453, + 453, 453, 453, 453, 454, 454, 455, 456, 456, 456, + 457, 457, 457, 457, 458, 458, 458, 458, 458, 458, + 458, 458, 458, 458, 459, 459, 460, 460, 461, 462, + 462, 462, 462, 462, 463, 463, 463, 463 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1021,41 +1022,41 @@ static const short yyr2[] = 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, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 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, 1, 4, 1, 3, 2, 2, 2, 0, 1, - 0, 0, 0, 12, 0, 0, 11, 6, 6, 0, - 0, 10, 0, 0, 10, 5, 5, 4, 4, 0, - 1, 1, 2, 5, 3, 2, 4, 1, 3, 4, - 6, 0, 8, 4, 1, 3, 2, 1, 4, 1, - 1, 2, 2, 1, 2, 1, 2, 1, 1, 1, - 1, 2, 1, 2, 2, 3, 1, 3, 1, 3, - 1, 1, 3, 0, 2, 0, 4, 4, 1, 1, - 2, 1, 1, 2, 0, 1, 5, 2, 3, 3, - 4, 3, 4, 4, 5, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 7, - 6, 2, 0, 0, 10, 0, 6, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 3, - 1, 0, 3, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 1, 1, 2, 2, - 0, 2, 0, 4, 0, 6, 0, 3, 0, 5, - 3, 2, 3, 0, 0, 0, 0, 0, 1, 2, - 2, 3, 2, 3, 3, 4, 2, 2, 3, 3, - 4, 1, 2, 1, 2, 1, 3, 1, 4, 1, - 2, 1, 2, 1, 2, 1, 4, 2, 0, 5, - 0, 6, 4, 4, 0, 0, 10, 1, 0, 4, - 1, 1, 1, 1, 1, 2, 1, 3, 1, 4, - 3, 4, 6, 5, 5, 2, 2, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 1, 4, 1, - 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, - 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, - 3, 1, 3, 1, 3, 1, 3, 1, 0, 0, - 7, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 1, 0, 1, 2, 7, 2, 2, - 7, 6, 2, 3, 2, 3, 2, 3, 3, 3, - 3, 2, 3, 0, 1, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 4, 4 + 2, 3, 1, 4, 1, 3, 2, 2, 2, 0, + 1, 0, 0, 0, 12, 0, 0, 11, 6, 6, + 0, 0, 10, 0, 0, 10, 5, 5, 4, 4, + 0, 1, 1, 2, 5, 3, 2, 4, 1, 3, + 4, 6, 0, 8, 4, 1, 3, 2, 1, 4, + 1, 1, 2, 2, 1, 2, 1, 2, 1, 1, + 1, 1, 2, 1, 2, 2, 3, 1, 3, 1, + 3, 1, 1, 3, 0, 2, 0, 4, 4, 1, + 1, 2, 1, 1, 2, 0, 1, 5, 2, 3, + 3, 4, 3, 4, 4, 5, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 7, 6, 2, 0, 0, 10, 0, 6, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 0, 3, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, + 2, 0, 2, 0, 4, 0, 6, 0, 3, 0, + 5, 3, 2, 3, 0, 0, 0, 0, 0, 1, + 2, 2, 3, 2, 3, 3, 4, 2, 2, 3, + 3, 4, 1, 2, 1, 2, 1, 3, 1, 4, + 1, 2, 1, 2, 1, 2, 1, 4, 2, 0, + 5, 0, 6, 4, 4, 0, 0, 10, 1, 0, + 4, 1, 1, 1, 1, 1, 2, 1, 3, 1, + 4, 3, 4, 6, 5, 5, 2, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 4, + 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, + 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 0, + 0, 7, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 0, 1, 2, 7, 2, + 2, 7, 6, 2, 3, 2, 3, 2, 3, 3, + 3, 3, 2, 3, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 4 }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE @@ -1063,979 +1064,947 @@ static const short yyr2[] = error. */ static const short yydefact[] = { - 0, 12, 11, 452, 0, 419, 260, 419, 15, 0, + 0, 12, 11, 453, 0, 420, 260, 420, 15, 0, 0, 0, 0, 276, 276, 276, 299, 298, 300, 301, - 302, 360, 361, 325, 327, 326, 330, 331, 319, 321, - 322, 320, 328, 329, 362, 363, 323, 324, 340, 336, - 332, 337, 333, 314, 315, 318, 316, 317, 357, 358, - 359, 356, 342, 341, 335, 334, 346, 347, 348, 349, - 344, 345, 343, 350, 351, 354, 355, 352, 353, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 338, - 697, 698, 702, 339, 699, 700, 703, 0, 3, 6, - 7, 443, 8, 9, 134, 44, 693, 10, 259, 261, - 0, 398, 276, 276, 276, 276, 276, 276, 276, 276, - 419, 276, 398, 398, 419, 391, 419, 0, 419, 130, - 276, 701, 21, 419, 447, 448, 449, 450, 453, 454, - 276, 279, 276, 276, 272, 419, 704, 419, 419, 702, - 0, 537, 276, 546, 0, 0, 0, 675, 0, 0, - 0, 0, 276, 583, 0, 276, 276, 276, 276, 276, - 276, 276, 276, 276, 0, 43, 0, 0, 0, 0, - 0, 540, 276, 170, 166, 169, 604, 594, 173, 185, - 206, 195, 194, 208, 212, 215, 218, 223, 226, 228, - 230, 232, 235, 238, 242, 254, 585, 200, 0, 0, - 571, 527, 528, 529, 530, 0, 0, 531, 276, 532, - 0, 533, 167, 0, 534, 536, 165, 0, 520, 0, - 581, 0, 553, 507, 0, 0, 0, 516, 0, 517, - 496, 515, 512, 513, 508, 509, 510, 0, 0, 514, - 521, 0, 0, 518, 495, 0, 364, 366, 365, 376, - 378, 377, 379, 380, 381, 382, 383, 384, 385, 4, - 276, 0, 132, 137, 419, 694, 5, 419, 399, 395, - 369, 371, 368, 370, 373, 372, 374, 375, 389, 367, - 396, 397, 0, 276, 276, 387, 276, 276, 0, 388, - 444, 386, 451, 455, 276, 166, 169, 0, 419, 469, - 0, 165, 419, 0, 278, 419, 0, 269, 276, 693, - 17, 19, 0, 419, 276, 29, 463, 206, 258, 542, - 0, 276, 276, 276, 276, 0, 684, 686, 691, 0, - 553, 0, 0, 0, 188, 193, 192, 191, 190, 189, - 0, 276, 186, 187, 276, 0, 0, 0, 0, 0, - 540, 0, 276, 539, 276, 485, 486, 487, 488, 0, - 489, 490, 276, 492, 276, 491, 493, 553, 276, 276, - 180, 181, 0, 276, 276, 276, 276, 276, 276, 276, + 302, 361, 362, 325, 327, 326, 330, 331, 319, 321, + 322, 320, 328, 329, 363, 364, 323, 324, 340, 336, + 332, 337, 333, 314, 315, 318, 316, 317, 358, 359, + 360, 357, 342, 341, 335, 334, 346, 347, 348, 349, + 350, 344, 345, 343, 351, 352, 355, 356, 353, 354, + 420, 420, 420, 420, 420, 420, 420, 420, 420, 420, + 338, 698, 699, 703, 339, 700, 701, 704, 0, 3, + 6, 7, 444, 8, 9, 134, 44, 694, 10, 259, + 261, 0, 399, 276, 276, 276, 276, 276, 276, 276, + 276, 420, 276, 399, 399, 420, 392, 420, 0, 420, + 130, 276, 702, 21, 420, 448, 449, 450, 451, 454, + 455, 276, 279, 276, 276, 272, 420, 705, 420, 420, + 703, 0, 538, 276, 547, 0, 0, 0, 676, 0, + 0, 0, 0, 276, 584, 0, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 0, 43, 0, 0, 0, + 0, 0, 541, 276, 170, 166, 169, 605, 595, 173, + 185, 206, 195, 194, 208, 212, 215, 218, 223, 226, + 228, 230, 232, 235, 238, 242, 254, 586, 200, 0, + 0, 572, 528, 529, 530, 531, 0, 0, 532, 276, + 533, 0, 534, 167, 0, 535, 537, 165, 0, 521, + 0, 582, 0, 554, 508, 0, 0, 0, 517, 0, + 518, 497, 516, 513, 514, 509, 510, 511, 0, 0, + 515, 522, 0, 0, 519, 496, 0, 365, 367, 366, + 377, 379, 378, 380, 381, 382, 383, 384, 385, 386, + 4, 276, 0, 132, 137, 420, 695, 5, 420, 400, + 396, 370, 372, 369, 371, 374, 373, 375, 376, 390, + 368, 397, 398, 0, 276, 276, 388, 276, 276, 0, + 389, 445, 387, 452, 456, 276, 166, 169, 0, 420, + 470, 0, 165, 420, 0, 278, 420, 0, 269, 276, + 694, 17, 19, 0, 420, 276, 29, 464, 206, 258, + 543, 0, 276, 276, 276, 276, 0, 685, 687, 692, + 0, 554, 0, 0, 0, 188, 193, 192, 191, 190, + 189, 0, 276, 186, 187, 276, 0, 0, 0, 0, + 0, 541, 0, 276, 540, 276, 486, 487, 488, 489, + 0, 490, 491, 276, 493, 276, 492, 494, 554, 276, + 276, 180, 181, 0, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 233, 239, 236, 584, 276, 0, 682, 40, 0, 554, - 572, 587, 679, 605, 0, 538, 276, 0, 0, 0, - 582, 41, 497, 501, 573, 419, 511, 523, 524, 0, - 0, 0, 42, 23, 276, 463, 419, 419, 276, 262, - 131, 419, 0, 393, 0, 419, 0, 419, 0, 276, - 0, 705, 276, 276, 0, 471, 470, 472, 706, 276, - 275, 276, 274, 270, 419, 0, 276, 0, 419, 276, - 20, 460, 0, 0, 445, 461, 276, 0, 547, 0, - 590, 0, 257, 0, 683, 692, 553, 0, 168, 276, - 535, 276, 0, 0, 687, 688, 689, 690, 685, 541, - 276, 548, 0, 678, 419, 551, 676, 0, 0, 175, - 0, 183, 0, 0, 0, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 209, 210, 211, 214, - 213, 216, 217, 219, 220, 221, 222, 224, 225, 227, - 229, 231, 276, 276, 276, 255, 276, 276, 201, 567, - 704, 571, 0, 419, 552, 588, 0, 0, 519, 505, - 276, 574, 522, 0, 0, 25, 0, 558, 276, 579, - 133, 419, 276, 553, 276, 263, 392, 276, 409, 0, - 417, 412, 0, 418, 0, 434, 437, 431, 433, 390, - 477, 0, 463, 473, 276, 0, 280, 268, 282, 267, - 276, 276, 276, 693, 16, 31, 276, 463, 276, 18, - 446, 456, 458, 37, 465, 419, 464, 468, 543, 586, - 0, 592, 276, 172, 276, 207, 419, 0, 276, 544, - 0, 550, 566, 0, 595, 276, 176, 174, 276, 276, - 234, 0, 237, 276, 203, 276, 205, 568, 569, 276, - 276, 276, 593, 276, 419, 276, 419, 79, 27, 559, - 562, 276, 276, 560, 276, 580, 136, 0, 265, 276, - 394, 415, 555, 401, 416, 555, 404, 276, 436, 276, - 0, 478, 481, 276, 0, 479, 0, 463, 419, 106, - 281, 276, 276, 276, 0, 33, 0, 276, 0, 81, - 462, 276, 474, 276, 0, 276, 577, 695, 575, 0, - 0, 0, 549, 276, 276, 184, 178, 179, 240, 0, - 0, 570, 589, 0, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 0, 166, 169, 185, 206, 194, 212, - 215, 218, 223, 226, 228, 230, 232, 235, 0, 598, - 597, 167, 608, 617, 627, 629, 633, 636, 639, 644, - 647, 649, 651, 653, 655, 657, 661, 600, 165, 0, - 24, 0, 96, 100, 98, 123, 124, 125, 126, 127, - 128, 129, 26, 79, 83, 0, 85, 84, 0, 88, - 0, 419, 419, 86, 0, 87, 310, 0, 79, 563, - 564, 276, 561, 22, 276, 284, 419, 407, 555, 419, - 408, 555, 430, 435, 276, 0, 0, 482, 480, 483, - 0, 276, 0, 105, 276, 276, 0, 286, 271, 276, - 0, 292, 0, 276, 0, 419, 81, 35, 0, 457, - 459, 38, 81, 89, 91, 90, 94, 92, 93, 466, - 439, 0, 276, 474, 440, 475, 591, 502, 695, 276, - 0, 0, 177, 545, 0, 598, 276, 202, 204, 681, - 0, 0, 188, 193, 192, 191, 190, 189, 186, 187, - 276, 276, 276, 180, 181, 0, 276, 276, 276, 276, + 276, 233, 239, 236, 585, 276, 0, 683, 40, 0, + 555, 573, 588, 680, 606, 0, 539, 276, 0, 0, + 0, 583, 41, 498, 502, 574, 420, 512, 524, 525, + 0, 0, 0, 42, 23, 276, 464, 420, 420, 276, + 262, 131, 420, 0, 394, 0, 420, 0, 420, 0, + 276, 0, 706, 276, 276, 0, 472, 471, 473, 707, + 276, 275, 276, 274, 270, 420, 0, 276, 0, 420, + 276, 20, 461, 0, 0, 446, 462, 276, 0, 548, + 0, 591, 0, 257, 0, 684, 693, 554, 0, 168, + 276, 536, 276, 0, 0, 688, 689, 690, 691, 686, + 542, 276, 549, 0, 679, 420, 552, 677, 0, 0, + 175, 0, 183, 0, 0, 0, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 209, 210, 211, + 214, 213, 216, 217, 219, 220, 221, 222, 224, 225, + 227, 229, 231, 276, 276, 276, 255, 276, 276, 201, + 568, 705, 572, 0, 420, 553, 589, 0, 0, 520, + 506, 276, 575, 523, 0, 0, 25, 0, 559, 276, + 580, 133, 420, 276, 554, 276, 263, 393, 276, 410, + 0, 418, 413, 0, 419, 0, 435, 438, 432, 434, + 391, 478, 0, 464, 474, 276, 0, 280, 268, 282, + 267, 276, 276, 276, 694, 16, 31, 276, 464, 276, + 18, 447, 457, 459, 37, 466, 420, 465, 469, 544, + 587, 0, 593, 276, 172, 276, 207, 420, 0, 276, + 545, 0, 551, 567, 0, 596, 276, 176, 174, 276, + 276, 234, 0, 237, 276, 203, 276, 205, 569, 570, + 276, 276, 276, 594, 276, 420, 276, 420, 79, 27, + 560, 563, 276, 276, 561, 276, 581, 136, 0, 265, + 276, 395, 416, 556, 402, 417, 556, 405, 276, 437, + 276, 0, 479, 482, 276, 0, 480, 0, 464, 420, + 106, 281, 276, 276, 276, 0, 33, 0, 276, 0, + 81, 463, 276, 475, 276, 0, 276, 578, 696, 576, + 0, 0, 0, 550, 276, 276, 184, 178, 179, 240, + 0, 0, 571, 590, 0, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 0, 166, 169, 185, 206, 194, + 212, 215, 218, 223, 226, 228, 230, 232, 235, 0, + 599, 598, 167, 609, 618, 628, 630, 634, 637, 640, + 645, 648, 650, 652, 654, 656, 658, 662, 601, 165, + 0, 24, 0, 96, 100, 98, 123, 124, 125, 126, + 127, 128, 129, 26, 79, 83, 0, 85, 84, 0, + 88, 0, 420, 420, 86, 0, 87, 310, 0, 79, + 564, 565, 276, 562, 22, 276, 284, 420, 408, 556, + 420, 409, 556, 431, 436, 276, 0, 0, 483, 481, + 484, 0, 276, 0, 105, 276, 276, 0, 286, 271, + 276, 0, 292, 0, 276, 0, 420, 81, 35, 0, + 458, 460, 38, 81, 89, 91, 90, 94, 92, 93, + 467, 440, 0, 276, 475, 441, 476, 592, 503, 696, + 276, 0, 0, 177, 546, 0, 599, 276, 202, 204, + 682, 0, 0, 188, 193, 192, 191, 190, 189, 186, + 187, 276, 276, 276, 180, 181, 0, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, - 276, 276, 276, 233, 658, 236, 506, 0, 500, 104, - 109, 102, 113, 693, 80, 95, 99, 107, 304, 307, - 303, 0, 308, 306, 28, 565, 276, 0, 421, 419, - 419, 420, 419, 419, 419, 438, 276, 476, 484, 283, - 273, 296, 0, 0, 295, 289, 290, 293, 291, 284, - 13, 32, 34, 81, 30, 693, 82, 463, 467, 441, - 442, 276, 0, 576, 182, 0, 198, 0, 553, 241, - 680, 168, 276, 0, 175, 0, 0, 0, 0, 662, + 276, 276, 276, 276, 233, 659, 236, 507, 0, 501, + 104, 109, 102, 113, 694, 80, 95, 99, 107, 304, + 307, 303, 0, 308, 306, 28, 566, 276, 0, 422, + 420, 420, 421, 420, 420, 420, 439, 276, 477, 485, + 283, 273, 296, 0, 0, 295, 289, 290, 293, 291, + 284, 13, 32, 34, 81, 30, 694, 82, 464, 468, + 442, 443, 276, 0, 577, 182, 0, 198, 0, 554, + 241, 681, 168, 276, 0, 175, 0, 0, 0, 0, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 209, 210, 211, 214, 213, 216, 217, 219, 220, 221, - 222, 224, 225, 227, 229, 231, 654, 276, 656, 276, - 499, 108, 0, 118, 119, 120, 121, 122, 693, 110, - 419, 113, 0, 0, 141, 142, 101, 151, 693, 139, - 140, 0, 48, 0, 0, 58, 59, 69, 67, 313, - 0, 312, 56, 76, 0, 63, 66, 0, 693, 68, - 161, 284, 276, 419, 0, 276, 422, 410, 419, 413, - 419, 432, 287, 276, 294, 693, 36, 0, 276, 503, - 578, 276, 276, 0, 677, 674, 207, 276, 176, 174, - 276, 276, 0, 599, 103, 113, 97, 116, 112, 117, - 115, 114, 0, 145, 0, 0, 0, 0, 138, 0, - 0, 154, 163, 693, 153, 0, 0, 66, 0, 72, - 0, 54, 53, 0, 61, 60, 62, 0, 0, 0, - 0, 0, 0, 276, 693, 162, 0, 264, 276, 424, - 276, 276, 419, 427, 0, 402, 0, 405, 288, 297, - 0, 39, 276, 0, 199, 0, 196, 673, 554, 0, - 178, 179, 659, 111, 146, 143, 149, 0, 150, 147, - 148, 152, 0, 157, 0, 0, 0, 0, 276, 0, - 78, 77, 0, 73, 0, 50, 45, 46, 55, 66, - 57, 70, 0, 74, 75, 0, 0, 311, 276, 276, - 285, 276, 276, 0, 425, 276, 411, 0, 414, 0, - 14, 504, 197, 596, 177, 276, 144, 158, 155, 0, - 159, 160, 164, 305, 52, 49, 0, 0, 71, 47, - 64, 309, 266, 428, 419, 423, 276, 400, 406, 660, - 156, 65, 51, 426, 429, 403, 0, 0, 0 + 673, 209, 210, 211, 214, 213, 216, 217, 219, 220, + 221, 222, 224, 225, 227, 229, 231, 655, 276, 657, + 276, 500, 108, 0, 118, 119, 120, 121, 122, 694, + 110, 420, 113, 0, 0, 141, 142, 101, 151, 694, + 139, 140, 0, 48, 0, 0, 58, 59, 69, 67, + 313, 0, 312, 56, 76, 0, 63, 66, 0, 694, + 68, 161, 284, 276, 420, 0, 276, 423, 411, 420, + 414, 420, 433, 287, 276, 294, 694, 36, 0, 276, + 504, 579, 276, 276, 0, 678, 675, 207, 276, 176, + 174, 276, 276, 0, 600, 103, 113, 97, 116, 112, + 117, 115, 114, 0, 145, 0, 0, 0, 0, 138, + 0, 0, 154, 163, 694, 153, 0, 0, 66, 0, + 72, 0, 54, 53, 0, 61, 60, 62, 0, 0, + 0, 0, 0, 0, 276, 694, 162, 0, 264, 276, + 425, 276, 276, 420, 428, 0, 403, 0, 406, 288, + 297, 0, 39, 276, 0, 199, 0, 196, 674, 555, + 0, 178, 179, 660, 111, 146, 143, 149, 0, 150, + 147, 148, 152, 0, 157, 0, 0, 0, 0, 276, + 0, 78, 77, 0, 73, 0, 50, 45, 46, 55, + 66, 57, 70, 0, 74, 75, 0, 0, 311, 276, + 276, 285, 276, 276, 0, 426, 276, 412, 0, 415, + 0, 14, 505, 197, 597, 177, 276, 144, 158, 155, + 0, 159, 160, 164, 305, 52, 49, 0, 0, 71, + 47, 64, 309, 266, 429, 420, 424, 276, 401, 407, + 661, 156, 65, 51, 427, 430, 404, 0, 0, 0 }; static const short yydefgoto[] = { - 1246, 87, 88, 89, 90, 138, 309, 310, 91, 657, - 798, 311, 836, 963, 92, 699, 965, 938, 94, 1049, - 1185, 1131, 1115, 1186, 1225, 1123, 1051, 1052, 1053, 1127, - 1054, 1055, 1189, 1057, 1182, 782, 841, 783, 842, 784, - 843, 922, 844, 787, 845, 923, 920, 921, 822, 789, - 790, 1028, 1029, 1030, 1098, 1031, 791, 792, 95, 263, - 436, 264, 573, 96, 1036, 1166, 1167, 1038, 1112, 1134, - 1113, 178, 330, 179, 510, 180, 975, 181, 182, 405, - 548, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 542, 193, 544, 194, 543, 866, 195, 224, 483, - 319, 424, 98, 669, 804, 598, 599, 602, 99, 305, - 197, 261, 132, 133, 600, 601, 937, 828, 829, 830, - 831, 952, 101, 793, 847, 1041, 795, 796, 848, 1060, - 931, 1058, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 299, 425, 442, 115, 269, 1245, - 116, 808, 1207, 811, 1209, 672, 1144, 675, 1146, 117, - 940, 941, 1141, 1142, 118, 680, 584, 585, 852, 135, - 473, 127, 128, 120, 610, 611, 474, 475, 476, 701, - 616, 332, 816, 854, 457, 353, 225, 245, 226, 227, - 354, 971, 1153, 229, 653, 230, 231, 429, 232, 233, - 199, 410, 355, 351, 356, 477, 711, 357, 320, 630, - 358, 204, 359, 554, 806, 1067, 238, 570, 505, 409, - 206, 571, 707, 708, 572, 360, 207, 208, 361, 650, - 620, 362, 241, 363, 367, 714, 749, 917, 750, 212, - 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, - 762, 763, 764, 765, 766, 1017, 1215, 767, 1158, 364, - 365, 214, 366, 266, 860, 301, 217, 123 + 1247, 88, 89, 90, 91, 139, 310, 311, 92, 658, + 799, 312, 837, 964, 93, 700, 966, 939, 95, 1050, + 1186, 1132, 1116, 1187, 1226, 1124, 1052, 1053, 1054, 1128, + 1055, 1056, 1190, 1058, 1183, 783, 842, 784, 843, 785, + 844, 923, 845, 788, 846, 924, 921, 922, 823, 790, + 791, 1029, 1030, 1031, 1099, 1032, 792, 793, 96, 264, + 437, 265, 574, 97, 1037, 1167, 1168, 1039, 1113, 1135, + 1114, 179, 331, 180, 511, 181, 976, 182, 183, 406, + 549, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 543, 194, 545, 195, 544, 867, 196, 225, 484, + 320, 425, 99, 670, 805, 599, 600, 603, 100, 306, + 198, 262, 133, 134, 601, 602, 938, 829, 830, 831, + 832, 953, 102, 794, 848, 1042, 796, 797, 849, 1061, + 932, 1059, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 300, 426, 443, 116, 270, 1246, + 117, 809, 1208, 812, 1210, 673, 1145, 676, 1147, 118, + 941, 942, 1142, 1143, 119, 681, 585, 586, 853, 136, + 474, 128, 129, 121, 611, 612, 475, 476, 477, 702, + 617, 333, 817, 855, 458, 354, 226, 246, 227, 228, + 355, 972, 1154, 230, 654, 231, 232, 430, 233, 234, + 200, 411, 356, 352, 357, 478, 712, 358, 321, 631, + 359, 205, 360, 555, 807, 1068, 239, 571, 506, 410, + 207, 572, 708, 709, 573, 361, 208, 209, 362, 651, + 621, 363, 242, 364, 368, 715, 750, 918, 751, 213, + 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, + 763, 764, 765, 766, 767, 1018, 1216, 768, 1159, 365, + 366, 215, 367, 267, 861, 302, 218, 124 }; static const short yypact[] = { - 2483,-32768,-32768, 239, 167, 5520,-32768, 6818,-32768, 811, - 2346, 3733, 3733,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 2083,-32768,-32768, 36, 34, 5460,-32768, 6775,-32768, 759, + 3247, 3669, 3669,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768, 305,-32768,-32768,-32768,-32768, 2264,-32768, + -32768,-32768, 300,-32768,-32768, 80,-32768, 90,-32768,-32768, + -32768, 95, 6364,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768, 6364, 6364, 151, 114,-32768, 406,-32768, + -32768, 759,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 36, + -32768, 5706,-32768, 159,-32768, 151,-32768,-32768,-32768, 5460, + -32768, 188,-32768, 5706,-32768, 195, 206, 230,-32768, 251, + 759, 285, 318, 925,-32768, 2648, 5706, 5706, 5706, 5706, + 5706, 5706,-32768, 5738, 5738, 320,-32768, 341, 364, 370, + 392, 403, 321, 4946,-32768, 423, 441,-32768, 462,-32768, + 825, 1387,-32768,-32768,-32768, 682, 108, 190, 615, 296, + 472, 452, 467, 457, 127,-32768,-32768, 111,-32768, 3775, + 430, 446,-32768,-32768,-32768,-32768, 499, 3353,-32768, 4946, + -32768, 3775,-32768, 355, 3775,-32768,-32768, 541, 570,-32768, + 600,-32768, 2842, 462, 617, 432, 563, 3458,-32768, 3669, + -32768,-32768,-32768, 6090,-32768,-32768,-32768,-32768, 686, 704, + -32768,-32768, 3669, 3775,-32768,-32768, 646,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 556,-32768,-32768,-32768,-32768, 2663,-32768,-32768, - -32768, 155,-32768,-32768, 74,-32768, 99,-32768,-32768,-32768, - 198, 6410,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 6410, 6410, 221, 165,-32768, 395,-32768,-32768, - 811,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 239,-32768, - 5802,-32768, 272,-32768, 221,-32768,-32768,-32768, 5520,-32768, - 283,-32768, 5802,-32768, 334, 380, 426,-32768, 428, 811, - 416, 424, 871,-32768, 3045, 5802, 5802, 5802, 5802, 5802, - 5802,-32768, 5823, 5823, 433,-32768, 457, 459, 475, 499, - 514, 430, 4962,-32768, 534, 544,-32768, 624,-32768, 823, - 962,-32768,-32768,-32768, 447, 107, 150, 115, 356, 626, - 504, 629, 610, 109,-32768,-32768, 303,-32768, 3839, 592, - 612,-32768,-32768,-32768,-32768, 675, 3537,-32768, 4962,-32768, - 3839,-32768, 520, 3839,-32768,-32768, 698, 730,-32768, 745, - -32768, 3238, 624, 773, 593, 695, 3582,-32768, 3733,-32768, - -32768,-32768, 6138,-32768,-32768,-32768,-32768, 788, 794,-32768, - -32768, 3733, 3839,-32768,-32768, 749,-32768,-32768,-32768,-32768, + -32768, 716, 724,-32768,-32768, 6638,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 810, 826,-32768,-32768, 6682,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768, 739, 861,-32768,-32768, 759, 759, 254, + -32768, 300,-32768,-32768,-32768, 3413,-32768,-32768, 106, 5953, + 221, 740,-32768,-32768, 749,-32768,-32768, 761, 754, 861, + 90,-32768, 338, 775,-32768, 759,-32768, 160,-32768,-32768, + -32768, 787, 5706, 5706, 5706, 1979, 771,-32768,-32768,-32768, + 589, 797, 265, 786, 798,-32768,-32768,-32768,-32768,-32768, + -32768, 804, 3413,-32768,-32768, 5706, 828, 832, 840, 850, + 863, 321, 426, 3624,-32768, 4946,-32768,-32768,-32768,-32768, + 833,-32768,-32768, 4946,-32768, 4946,-32768,-32768,-32768, 5631, + 5706,-32768,-32768, 41, 5706, 5706, 5706, 5706, 5706, 5706, + 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, + 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, + 5706,-32768,-32768,-32768,-32768, 5706, 360,-32768,-32768, 2454, + -32768,-32768, 884,-32768,-32768, 923,-32768, 5706, 498, 920, + 929,-32768,-32768,-32768,-32768,-32768, 151, 6090,-32768,-32768, + 3669, 3141, 953,-32768,-32768, 5706, 113, 3881, 5029, 861, + -32768, 580, 6775, 928, 964, 968, 1038, 1058, 1038, 759, + 1070, 256,-32768,-32768, 5642, 1027, 654,-32768, 671,-32768, + 861,-32768, 1044,-32768,-32768,-32768, 1007, 1082, 1071,-32768, + 861, 338,-32768, 759, 1090,-32768, 1102, 759, 1100,-32768, + 358, 1105, 444, 1105, 1114,-32768,-32768, 797, 1109,-32768, + 5357,-32768,-32768, 1110, 1116,-32768,-32768,-32768,-32768,-32768, + -32768, 5706,-32768, 1113,-32768, 3881,-32768,-32768, 1129, 1120, + -32768, 464,-32768, 292, 759, 759,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 838, 762,-32768,-32768, 811, 811, 43,-32768, - 155,-32768,-32768,-32768, 5371,-32768,-32768, 322, 6002, 286, - 842,-32768,-32768, 851,-32768,-32768, 904, 912, 762, 99, - -32768, 256, 921,-32768, 811,-32768, 397,-32768,-32768,-32768, - 935, 5802, 5802, 5802, 1272, 941,-32768,-32768,-32768, 639, - 942, 410, 949, 975,-32768,-32768,-32768,-32768,-32768,-32768, - 1018, 5371,-32768,-32768, 5802, 1037, 1038, 1044, 1046, 1052, - 430, 326, 5392,-32768, 4962,-32768,-32768,-32768,-32768, 1058, - -32768,-32768, 4962,-32768, 4962,-32768,-32768,-32768, 5690, 5802, - -32768,-32768, 73, 5802, 5802, 5802, 5802, 5802, 5802, 5802, - 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, - 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, - -32768,-32768,-32768,-32768, 5802, 538,-32768,-32768, 2852,-32768, - -32768, 1071,-32768,-32768, 1070,-32768, 5802, 515, 1057, 1061, - -32768,-32768,-32768,-32768,-32768, 221, 6138,-32768,-32768, 3733, - 1952, 1075,-32768,-32768, 5802, 28, 3945, 5045, 762,-32768, - 482, 6818, 996, 1067, 1074, 1077, 1078, 1077, 811, 1080, - 467,-32768,-32768, 5701, 1066, 355,-32768, 370,-32768, 762, - -32768, 672,-32768,-32768,-32768, 1003, 1073, 1079,-32768, 762, - 256,-32768, 811, 1076,-32768, 1081, 811, 1086,-32768, 469, - 1090, 495, 1090, 1094,-32768,-32768, 942, 1089,-32768, 5419, - -32768,-32768, 1091, 1101,-32768,-32768,-32768,-32768,-32768,-32768, - 5802,-32768, 1099,-32768, 3945,-32768,-32768, 1104, 1102,-32768, - 599,-32768, 94, 811, 811,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 447, - 447, 107, 107, 150, 150, 150, 150, 115, 115, 356, - 626, 504, 5802, 5802, 5802,-32768, 5834, 5866,-32768,-32768, - 3431,-32768, 3688, 4133,-32768,-32768, 1107, 608,-32768,-32768, - 762,-32768,-32768, 1115, 1106,-32768, 1119,-32768, 2301,-32768, - -32768, 4321, 4509, 942,-32768, 1122,-32768,-32768, 1126, 1128, - -32768, 1129, 1131,-32768, 554,-32768, 1125,-32768,-32768,-32768, - -32768, 1124, 768, 370, 5733, 1130,-32768,-32768,-32768,-32768, - 1132,-32768,-32768, 369,-32768,-32768, 5802, 320, 762,-32768, - -32768, 1134,-32768,-32768, 1153, 6818,-32768,-32768,-32768,-32768, - 1135,-32768, 1272,-32768, 5440,-32768,-32768, 1140,-32768,-32768, - 1139,-32768,-32768, 1138,-32768, 5802,-32768,-32768,-32768,-32768, - 629, 742, 610, 5371,-32768, 5371,-32768,-32768,-32768, 4554, - 4962, 5802,-32768, 5922,-32768, 5802,-32768, 1256,-32768,-32768, - -32768, 4660, 4705,-32768, 4811,-32768,-32768, 1142,-32768,-32768, - -32768,-32768,-32768, 1149,-32768,-32768, 1150,-32768, 811,-32768, - 811,-32768,-32768, 156, 1146,-32768, 1145, 69,-32768, 1100, - -32768, 2401,-32768,-32768, 1151,-32768, 1154,-32768, 418, 1256, - -32768, 811, 589, 4962, 1162, 5440,-32768, 1160,-32768, 1163, - 1158, 1164,-32768, 5802, 5922,-32768,-32768,-32768,-32768, 1175, - 1176,-32768,-32768, 642, 5371, 5802, 5802, 5802, 5802, 5802, - 5802, 5823, 5823, 1161, 671, 674, 1023, 1250, 684, 850, - 790, 847, 621, 855, 1159, 1148, 1165, 1133, 192, 1179, - -32768, 91,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 706, 707, - -32768, 1019,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768, 1256,-32768, 1116,-32768,-32768, 1117,-32768, - 1118,-32768,-32768,-32768, 1120,-32768, 2065, 1127, 1256,-32768, - -32768, 4856,-32768,-32768,-32768,-32768, 6546,-32768,-32768, 6546, - -32768,-32768,-32768,-32768, 5802, 896, 1191,-32768,-32768,-32768, - 1192, 672, 1201,-32768, 2401, 5802, 811,-32768,-32768, 2401, - 575,-32768, 1198, 2401, 1137,-32768, 1256,-32768, 1196,-32768, - -32768,-32768, 1256,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 155, 1200,-32768, 525,-32768, 370,-32768,-32768, 1160, 4911, - 1202, 811,-32768,-32768, 729, 1204, 5802, 1140, 1140, 1207, - 732, 1211, 766, 791, 792, 807, 818, 827, 858, 886, - 5802, 5722, 5802, 887, 908, 79, 5802, 5802, 5802, 5802, - 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, - 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, 5802, - 5802, 5802, 5802, 5802,-32768, 5802,-32768, 1205, 1214,-32768, - 1048, 1206, 278, 71,-32768,-32768,-32768,-32768,-32768,-32768, - -32768, 543,-32768,-32768,-32768,-32768, 2401, 658,-32768, 221, - 5205,-32768, 6546, 5205, 6546,-32768,-32768,-32768,-32768,-32768, - -32768,-32768, 963, 1213,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768, 1256,-32768, 99,-32768, 169,-32768,-32768, - -32768, 5754, 1221,-32768,-32768, 567,-32768, 1224, 942,-32768, - -32768, 909, 5419, 1222, 947, 948, 247, 811, 811,-32768, + 682, 682, 108, 108, 190, 190, 190, 190, 615, 615, + 296, 472, 452, 5706, 5706, 5706,-32768, 5764, 5842,-32768, + -32768, 3036,-32768, 3564, 4070,-32768,-32768, 1123, 481,-32768, + -32768, 861,-32768,-32768, 1132, 1125,-32768, 1134,-32768, 4448, + -32768,-32768, 4259, 4493, 797,-32768, 1139,-32768,-32768, 1137, + 1146,-32768, 1148, 1152,-32768, 536,-32768, 1163,-32768,-32768, + -32768,-32768, 1161, 936, 671, 5674, 1165,-32768,-32768,-32768, + -32768, 1169,-32768,-32768, 149,-32768,-32768, 5706, 581, 861, + -32768,-32768, 1170,-32768,-32768, 1187, 6775,-32768,-32768,-32768, + -32768, 1168,-32768, 1979,-32768, 5378,-32768,-32768, 1175,-32768, + -32768, 1174,-32768,-32768, 1173,-32768, 5706,-32768,-32768,-32768, + -32768, 467, 555, 457, 3413,-32768, 3413,-32768,-32768,-32768, + 4599, 4946, 5706,-32768, 5872,-32768, 5706,-32768, 1607,-32768, + -32768,-32768, 4644, 4750,-32768, 4795,-32768,-32768, 1177,-32768, + -32768,-32768,-32768,-32768, 1178,-32768,-32768, 1185,-32768, 759, + -32768, 759,-32768,-32768, 64, 1182,-32768, 1183, 86,-32768, + 1136,-32768, 1868,-32768,-32768, 1184,-32768, 1194,-32768, 223, + 1607,-32768, 759, 790, 4946, 1196, 5378,-32768, 1191,-32768, + 1197, 1200, 1207,-32768, 5706, 5872,-32768,-32768,-32768,-32768, + 1209, 1217,-32768,-32768, 539, 3413, 5706, 5706, 5706, 5706, + 5706, 5706, 5738, 5738, 1198, 598, 649, 1101, 1527, 702, + 1068, 656, 562, 853, 676, 1214, 1206, 1204, 1190, 136, + 1223,-32768, 29,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 712, + 715,-32768, 1061,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768, 1607,-32768, 1159,-32768,-32768, 1160, + -32768, 1162,-32768,-32768,-32768, 1164,-32768, 1531, 1166, 1607, + -32768,-32768, 4901,-32768,-32768,-32768,-32768, 6501,-32768,-32768, + 6501,-32768,-32768,-32768,-32768, 5706, 902, 1229,-32768,-32768, + -32768, 1231, 1044, 1240,-32768, 1868, 5706, 759,-32768,-32768, + 1868, 397,-32768, 1237, 1868, 1171,-32768, 1607,-32768, 1238, + -32768,-32768,-32768, 1607,-32768,-32768,-32768,-32768,-32768,-32768, + -32768, 300, 1241,-32768, 721,-32768, 671,-32768,-32768, 1191, + 3096, 1246, 759,-32768,-32768, 733, 1243, 5706, 1175, 1175, + 1251, 765, 1247, 820, 834, 842, 844, 855, 875, 891, + 896, 5706, 5663, 5706, 908, 950, 134, 5706, 5706, 5706, + 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, + 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, 5706, + 5706, 5706, 5706, 5706, 5706,-32768, 5706,-32768, 1250, 1255, + -32768, 1083, 1236, -18, 395,-32768,-32768,-32768,-32768,-32768, + -32768,-32768, 701,-32768,-32768,-32768,-32768, 1868, 623,-32768, + 151, 5190,-32768, 6501, 5190, 6501,-32768,-32768,-32768,-32768, + -32768,-32768,-32768, 919, 1252,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768, 1607,-32768, 90,-32768, 402,-32768, + -32768,-32768, 5695, 1257,-32768,-32768, 621,-32768, 1260, 797, + -32768,-32768, 955, 5357, 1259, 965, 980, 302, 759, 759, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 956, 986, 988, 857, 903, 477, 946, 75, 445, 566, - 597, 388, 746, 81, 521, 137, 629, 5802, 610, 5922, - -32768, 520, 1019,-32768,-32768,-32768,-32768,-32768, 767,-32768, - 6274, 278, 113, 113,-32768,-32768,-32768, 103, 779,-32768, - -32768, 89,-32768, 335, 108,-32768,-32768,-32768,-32768,-32768, - 1225,-32768, -1,-32768, 1022,-32768, 733, 1223, 99,-32768, - 89,-32768,-32768,-32768, 1227, 548,-32768,-32768, 5205,-32768, - 5205,-32768,-32768, 2070,-32768, 824,-32768, 1166, 689,-32768, - -32768,-32768, 5802, 811,-32768, 1062, 991,-32768, 1010, 1013, - -32768,-32768, 973,-32768,-32768, 278,-32768,-32768,-32768,-32768, - -32768,-32768, 696, 103, 444, 811, 811, 113,-32768, 89, - 89,-32768, 244, 878,-32768, 1228, 985, 780, 108, 358, - 51,-32768,-32768, 335,-32768,-32768,-32768, 335, -10, 811, - 811, 1231, 335,-32768, 99, 1234, 925,-32768, 762,-32768, - -32768, 1239,-32768, 1240, 1229,-32768, 1241,-32768,-32768,-32768, - 1172,-32768, 498, 1245,-32768, 344,-32768,-32768,-32768, 1249, - 1027, 1029,-32768,-32768,-32768,-32768, 103, 1248, 520,-32768, - -32768, 103, 829, 244, 648, 811, 811, 89,-32768, 1082, - -32768,-32768, 335,-32768, 780, 1237,-32768, 358,-32768, 358, - -32768,-32768, 1251,-32768,-32768, 1082, 1254,-32768,-32768,-32768, - -32768, 5802, 548, 1262,-32768,-32768,-32768, 1261,-32768, 1263, - -32768,-32768,-32768,-32768, 1042, 5802,-32768,-32768,-32768, 1257, - -32768,-32768, 244,-32768,-32768,-32768, 1260, 51,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768, 5802,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768, 1287, 1288,-32768 + -32768, 990, 1003, 1005, 762, 1205, 886, 970, 92, 431, + 546, 792, 634, 767, 413, 579, 375, 467, 5706, 457, + 5872,-32768, 355, 1061,-32768,-32768,-32768,-32768,-32768, 689, + -32768, 6227, -18, 427, 427,-32768,-32768,-32768, 345, 773, + -32768,-32768, 70,-32768, 695, 120,-32768,-32768,-32768,-32768, + -32768, 1261,-32768, -10,-32768, 1128,-32768, 100, 1263, 90, + -32768, 70,-32768,-32768,-32768, 1265, 710,-32768,-32768, 5190, + -32768, 5190,-32768,-32768, 1581,-32768, 839,-32768, 1199, 894, + -32768,-32768,-32768, 5706, 759,-32768, 1096, 1016,-32768, 1018, + 1035,-32768,-32768, 971,-32768,-32768, -18,-32768,-32768,-32768, + -32768,-32768,-32768, 286, 345, 1145, 759, 759, 427,-32768, + 70, 70,-32768, 350, 995,-32768, 1269, 1032, 540, 120, + 484, 51,-32768,-32768, 695,-32768,-32768,-32768, 695, -8, + 759, 759, 1270, 695,-32768, 90, 1272, 1000,-32768, 861, + -32768,-32768, 1273,-32768, 1291, 1294,-32768, 1295,-32768,-32768, + -32768, 1228,-32768, 738, 1298,-32768, 307,-32768,-32768,-32768, + 1299, 1037, 1069,-32768,-32768,-32768,-32768, 345, 1293, 355, + -32768,-32768, 345, 972, 350, 1193, 759, 759, 70,-32768, + 1130,-32768,-32768, 695,-32768, 540, 1289,-32768, 484,-32768, + 484,-32768,-32768, 1304,-32768,-32768, 1130, 1310,-32768,-32768, + -32768,-32768, 5706, 710, 1319,-32768,-32768,-32768, 1320,-32768, + 1321,-32768,-32768,-32768,-32768, 1076, 5706,-32768,-32768,-32768, + 1312,-32768,-32768, 350,-32768,-32768,-32768, 1318, 51,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768, 5706,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768, 1346, 1349,-32768 }; static const short yypgoto[] = { - -32768,-32768, 1208,-32768,-32768,-32768,-32768, -430, -116,-32768, - -32768, 977,-32768,-32768,-32768,-32768,-32768, 76,-32768,-32768, - 361,-32768,-32768, 62, 98,-32768, 171,-32768,-32768,-32768, - -695,-32768, -874,-32768,-32768, -679, -685,-32768,-32768,-32768, - -596,-32768, -591,-32768, -571,-32768, 275,-32768,-32768, 609, - -659,-32768, 204, 276,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, -889, 144,-32768, -1012,-32768, - 262,-32768,-32768, -634, 443, 1109,-32768,-32768, -624,-32768, - -32768, -88, -374, -348, -342, -351, -391, -376, -384, -539, - -526,-32768, -622,-32768, -117,-32768,-32768, 1406, 1527, -595, - -370, 23,-32768,-32768,-32768, 505, -3,-32768,-32768,-32768, - 313, -265,-32768,-32768,-32768,-32768, -905, -751,-32768,-32768, - 497,-32768,-32768,-32768, -566,-32768,-32768,-32768, -558,-32768, - -32768,-32768,-32768,-32768, 529,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768, 21, 751,-32768, 927,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1121, - -771, -859,-32768, 145,-32768,-32768, 666, 670, 496, 1, - -411, 1226,-32768, 17,-32768,-32768, -576,-32768,-32768,-32768, - 649, -98, 1053,-32768, -448, -165, 1339,-32768, 1114,-32768, - 734,-32768,-32768,-32768,-32768, -163,-32768,-32768,-32768,-32768, - -32768, 93, 1203, 1009, 1323,-32768,-32768, 1386,-32768,-32768, - -322,-32768, 915, 202, -547, -688,-32768, 859,-32768,-32768, - 954, -185, 659, 507, -494, 24,-32768, 149, 50,-32768, - -32768, 131,-32768, 136,-32768,-32768, 653,-32768, 349, -605, + -32768,-32768, 1264,-32768,-32768,-32768,-32768, -427, -115,-32768, + -32768, 1039,-32768,-32768,-32768,-32768,-32768, 78,-32768,-32768, + 424,-32768,-32768, 129, 163,-32768, 231,-32768,-32768,-32768, + -1008,-32768, -887,-32768,-32768, -722, -763,-32768,-32768,-32768, + -603,-32768, -574,-32768, -566,-32768, 339,-32768,-32768, 677, + -684,-32768, 272, 329,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768, -882, 194,-32768, -1004,-32768, + 309,-32768,-32768, -622, 489, 912,-32768,-32768, -615,-32768, + -32768, 109, -375, -356, -327, -359, -380, -395, -393, -520, + -517,-32768, -614,-32768, -117,-32768,-32768, 1099, 1053, -598, + -371, 21,-32768,-32768,-32768, 550, -3,-32768,-32768,-32768, + 82, -271,-32768,-32768,-32768,-32768, -929, -777,-32768,-32768, + 548,-32768,-32768,-32768, -553,-32768,-32768,-32768, -535,-32768, + -32768,-32768,-32768,-32768, 586,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768, 22, 807,-32768, 1004,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 558, + -737, -583,-32768, 183,-32768,-32768, 706, 711, 537, 1, + -403, 1268,-32768, 17,-32768,-32768, -576,-32768,-32768,-32768, + 687, -107, 1092,-32768, -453, 396, 1381,-32768, 1156,-32768, + 1131,-32768,-32768,-32768,-32768, -178,-32768,-32768,-32768,-32768, + -32768, 344, 1189, 1050, 1306,-32768,-32768, 1316,-32768,-32768, + -323,-32768, 49, 245, -513, -682,-32768, 900,-32768,-32768, + 999, -186, 703, 554, -491, 103,-32768, 282, 161,-32768, + -32768, 535,-32768, 601,-32768,-32768, 700,-32768, 399, -639, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1476, - -32768,-32768, 1648, -272, 511, 0, 532,-32768 + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1353, + -32768,-32768, 1639, -258, 561, 0, 333,-32768 }; -#define YYLAST 7011 +#define YYLAST 6969 static const short yytable[] = { - 121, 119, 131, 640, 290, 121, 539, 593, 487, 121, - 216, 216, 216, 529, 530, 541, 684, 1191, 642, 736, - 129, 114, 540, 97, 566, 318, 134, 704, 137, 738, - 502, 748, 300, 471, 1037, 239, 239, 465, 943, 609, - 846, 531, 532, 411, 537, 538, 467, 426, 751, 533, - 534, 535, 536, 565, 1075, 1121, 1042, 1056, 418, 649, - 209, 785, 448, 422, 564, 423, 786, 334, 335, 336, - 337, 338, 339, 951, 471, 1118, 93, 662, 955, 437, - 736, 1066, 959, 591, 1066, 1044, 788, 121, 119, 265, - 738, 794, 748, 262, 819, 1032, -640, 1172, 1173, 797, - -640, 513, -648, 200, 924, 1033, -648, 987, 114, 751, - 97, 820, -606, 1109, 746, 404, -606, 265, 514, 934, - 121, 637, 268, 1110, 988, 389, 390, 747, 809, 1104, - 629, 1105, 1118, 268, 268, 395, 396, 1032, 121, 387, - 388, 210, 1044, 1102, 1103, 293, 211, 1033, 1106, 121, - 401, 962, 391, 392, 216, 314, 1136, 966, -652, 313, - 240, 240, -652, 93, 502, 1222, 402, 393, 394, 1117, - 1119, 1068, 216, 1070, 471, 746, 398, 846, 697, -277, - 1192, 260, 453, 846, 1122, 1061, 443, 785, 747, 503, - 3, 130, 786, -419, 682, -419, 696, 506, 216, 507, - 389, 390, 785, -419, 209, 467, 216, 786, 216, 1066, - 216, 1066, 788, 216, -419, -419, -419, 794, 1171, -419, - -419, 216, 267, 553, 686, 797, 216, 788, 216, 80, - 81, 139, 794, 914, 84, 85, 694, 80, 1047, -276, - 797, 216, 216, 492, 1184, 239, 1187, 333, 209, 915, - 239, 666, 239, 284, 855, 1069, 209, 80, 1034, 1035, - 209, 942, 743, 209, 944, 239, 562, 422, 404, 745, - 1174, 569, 1175, 3, 1089, 80, 1111, 744, 1076, 739, - -277, 413, 466, 121, 440, 210, 121, 121, 121, 1176, - 211, 406, 209, 302, 80, 1047, 526, 527, 528, 80, - 1034, 1035, 742, 412, 846, 740, 414, 316, 121, 464, - -276, 741, 453, 100, 121, 1021, 455, 318, 100, 452, - 3, 403, 1149, 743, 404, 471, 246, 247, 248, 210, - 745, 693, 500, 501, 211, 431, 318, 210, 744, 569, - 739, 210, 211, 404, 210, 695, 211, 451, 1116, 211, - 124, 125, 126, 1187, 216, -419, -419, -419, 321, 1043, - -419, -419, 216, 742, 216, 404, 740, 1023, 1024, 1044, - 240, 1212, 741, 210, 1016, 240, 1079, 240, 211, -276, - 1145, 453, 1147, 318, 1128, 736, 1129, 265, 569, 1018, - 240, 684, 692, 626, -276, 738, 594, 748, 1025, 1026, - 100, 625, 471, 1130, 322, 855, 569, 665, 216, -645, - 395, 396, 1027, -645, 751, 270, 271, 272, 273, 274, - 275, 276, 277, 839, 279, 391, 392, 282, 403, 216, - 216, 404, 1190, 100, 326, 488, 216, 1196, 121, 574, - 393, 394, 327, 298, 945, 303, 304, 306, 121, 561, - 323, 312, 324, 239, 239, 953, 596, 344, 209, 121, - 561, 121, 452, 286, 287, 288, -641, 298, 1032, 121, - -641, 1165, 121, 345, 340, 346, 121, 318, 1033, 443, - 746, 384, 385, 386, 665, 722, 314, 1226, 404, 318, - 404, 347, 488, 747, 619, 389, 390, 665, -637, 1168, - -419, 551, -637, -419, 216, -419, -419, -419, -419, 387, - 388, -419, -419, 121, 121, 348, 404, 1045, 1046, 1013, - 621, 80, 1047, -471, 453, 1048, 1003, 1004, 1015, 349, - 710, 350, 122, 420, 298, 1014, 404, 122, 856, 210, - 488, 140, -650, 398, 211, 719, -650, 720, 1042, -276, - 397, 453, 216, 216, 1005, 1006, -698, 1011, 1012, 3, - 121, 654, 1007, 1008, 1009, 1010, -702, 1043, 216, 1168, - 1140, 216, 216, 434, 677, 678, 561, 1044, 240, 240, - 546, 547, 3, -419, -419, -419, 850, -642, -419, -419, - -704, -642, 1081, 1082, 561, 1083, 100, 441, 956, 444, - 446, 825, 209, 826, 80, 81, 139, 298, 121, 84, - 85, 420, 454, -276, 404, 453, 389, 390, -643, 122, - 635, 100, -643, 3, 636, 314, 871, 312, 743, 404, - 80, 1034, 1035, 652, 176, 745, 702, 872, 873, 874, - 875, 876, 877, 744, -704, 739, -699, 389, 390, 216, - 216, 1039, 122, 768, 298, 397, 1085, 485, 904, 905, - 404, 216, 216, 404, 216, 298, 400, 869, 742, 399, - 315, 740, 1032, 906, 907, 1218, 1062, 741, 121, 1063, - 121, 325, 1033, 210, 80, 81, 139, 407, 211, 84, - 85, 216, -603, 1077, 408, -602, -603, 318, 121, -602, - 455, 121, 121, 216, 593, -626, 3, -525, 318, -626, - 413, 80, 81, 139, 768, 453, 84, 85, 969, 853, - -701, 1164, 1104, 3, 1105, 1045, 1046, -601, 404, 80, - 1047, -601, 918, 1048, 80, 81, 139, 850, 282, 84, - 85, 1106, -704, -704, 198, 228, 228, -704, -704, 979, - 404, 100, 415, 404, 977, -46, 1096, 981, 579, 1128, - 582, 1129, 588, 404, 718, 589, 1108, -646, 454, 416, - 595, -646, 100, 471, 100, 80, 81, 139, 1130, 606, - 84, 85, 312, 391, 392, 265, 1133, -620, 1095, 615, - 421, -620, -419, 682, -419, -700, 3, 265, 393, 394, - 1107, 216, -419, 1150, 441, 1183, 1128, 427, 1129, 1000, - 1001, 1002, -625, -624, 428, 122, -625, -624, 445, 447, - 449, 121, 900, 901, 216, 1130, 121, 939, -623, 216, - 939, 1233, -623, 216, 80, 1034, 1035, 433, 176, -622, - 122, 1178, 265, -622, 432, 1063, 315, 368, -621, 369, - 435, -419, -621, 121, 1217, 1174, 439, 1175, 80, 81, - 139, 121, 1198, 84, 85, 597, 1244, 458, -419, 460, - 853, 370, 371, 100, 1176, 80, 81, 139, -635, -618, - 84, 85, -635, -618, 897, 898, 899, 667, 198, 328, - 441, 384, 385, 386, 1086, 294, 265, 902, 903, 1177, - 155, 156, 157, 158, 159, 160, 595, -619, -615, 908, - 909, -619, -615, 689, 690, 691, 946, 678, 161, 162, - 163, 312, 462, 1040, -634, 205, 237, 237, -634, -616, - -607, 1059, 198, -616, -607, 463, 216, 384, 385, 386, - 198, 441, 164, 1199, 198, 468, 1063, 198, 80, 81, - 139, 716, 717, 84, 85, 228, 298, 478, 298, 484, - 228, 939, 228, 939, 939, 939, 486, -638, -610, 635, - 122, -638, -610, 1088, 489, 228, 198, -630, 387, 388, - 586, -630, 805, 1072, 1073, 373, 173, 121, 121, 1159, - 812, 122, 814, 122, 404, 1162, 454, 80, 81, 139, - 490, 315, 84, 85, 612, 833, 834, -631, 617, -632, - 838, -631, -628, -632, 615, 851, -628, 1180, 1181, 768, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 1100, -611, 1040, 1040, -609, -611, 290, 298, -609, 280, - 281, 1114, 491, 1059, 1059, 638, 639, 881, -613, 882, - -614, -419, -613, 1099, -614, 494, 495, 80, 295, 296, - 1114, 176, 496, -612, 497, 121, 1143, -612, -419, 205, - 498, 883, 884, 216, 1124, 1125, 1126, 504, 121, 574, - 555, 556, 558, 121, 318, 559, 563, 576, 577, 939, - 592, 939, 122, 578, 604, 1152, -276, 581, 1239, 587, - 605, 613, 614, 607, 1040, 121, 121, 1040, 618, 1114, - 1114, 404, 622, 205, 623, 633, 627, 936, 1059, 318, - 1059, 205, 628, 1059, 631, 205, 634, 1059, 205, 121, - 121, 651, 1059, 656, 100, 1200, 237, 419, 121, 655, - 315, 237, 198, 237, 658, 668, 671, 673, 679, 674, - 676, 681, 121, 688, 687, 698, 237, 205, 700, 624, - 703, 712, 713, 228, 228, 968, 851, 803, 595, 807, - 810, 817, 818, 771, 1040, 121, 121, 1114, 835, 837, - 857, 859, 1059, 862, 861, 880, 863, 911, 910, 913, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 867, 868, 121, 1143, 916, 912, 919, 925, 926, 927, - 586, 930, 586, 201, 234, 234, 947, 948, 933, 950, - 958, 964, 974, 832, 967, 980, 1019, 1059, 960, 978, - 840, 278, 1020, 617, 122, 283, 982, 285, 176, 289, - 1074, 1080, 1084, 1087, 291, 1139, 1022, 1132, 1120, 1206, - 1179, 317, 1064, 1195, 1157, 1177, 307, 1151, 308, 1071, - 1202, 1208, 1205, 1210, 317, 317, 317, 317, 317, 317, - 1211, 342, 343, 886, 1214, 1216, 1224, 1227, 1228, 1230, - 1235, 1237, 508, 1238, 1240, 1241, 198, 1247, 1248, 1242, - -256, 470, 1050, 1229, 1188, 259, 294, 1094, 823, 1163, - 372, 155, 156, 157, 158, 159, 160, 1101, 887, 888, - 889, 890, 891, 892, 893, 894, 895, 896, 1219, 161, - 162, 163, 1135, 205, 985, 932, 949, 957, 670, 771, - 772, 773, 774, 202, 235, 235, 775, 776, 777, 778, - 779, 780, 781, 164, 237, 237, 815, 1234, 813, 970, - 849, 244, 456, 122, 292, 430, 832, 201, 954, 499, - 1213, 832, 552, 632, 858, 832, 973, 865, 1093, 972, - 0, 0, 0, 0, 0, 1137, 0, 0, 100, 0, - 0, 0, 0, 0, 0, 122, 0, 173, 438, 0, - 0, 851, 0, 976, 1154, 0, 203, 236, 236, 0, - 441, 201, 0, 1160, 1161, 0, 0, 0, 0, 201, - 0, 0, 0, 201, 0, 0, 201, 0, 0, 0, - 0, 0, 0, 459, 234, 0, 461, 0, 0, 234, - 0, 234, 0, 0, 469, 0, 0, 472, 0, 0, - 0, 0, 0, 0, 234, 201, 1197, 0, 0, 0, - 0, 100, 0, 1201, 1203, 0, 0, 0, 80, 295, - 296, 0, 176, 0, 0, 851, 0, 205, 832, 0, - 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, - 0, 0, 0, 0, 0, 0, 213, 242, 242, 0, - 0, 1223, 0, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 0, - 0, 1231, 1232, 0, 0, 100, 0, 0, 1236, 1090, - 1091, 202, 0, 0, 0, 0, 0, 0, 0, 202, - 0, 0, 0, 202, 0, 0, 202, 196, 0, 0, - 203, 0, 0, 317, 235, 0, 560, 0, 0, 235, - 0, 235, 0, 0, 0, 0, 472, 0, 0, 0, - 0, 575, 317, 0, 235, 202, 580, 0, 583, 0, + 122, 120, 132, 594, 541, 122, 291, 542, 488, 122, + 217, 217, 217, 530, 531, 752, 847, 685, 540, 1192, + 130, 98, 115, 641, 301, 705, 319, 135, 643, 138, + 503, 1076, 737, 567, 532, 533, 1117, 538, 539, 739, + 749, 468, 1038, 610, 419, 1057, 1122, 427, 952, 423, + -607, 424, 466, 956, -607, 786, 1043, 960, 131, 206, + 238, 238, 925, 650, 565, 534, 535, 536, 537, 514, + 3, 1024, 1025, 944, 963, 1119, 752, 935, 94, 438, + 967, 663, 101, 592, 787, 1045, 515, 101, 122, 120, + 454, 472, 789, 737, 1110, 247, 248, 249, 3, 263, + 739, 749, 1026, 1027, 1111, 795, 1173, 1174, 266, 98, + 115, 820, 821, -641, 240, 240, 1028, -641, 472, 268, + 1191, 122, -46, 798, 269, 1197, 1129, 405, 1130, 404, + 630, 452, 405, 1137, 747, 269, 269, 748, 566, 122, + 388, 389, 390, 391, 1119, 1131, 294, 125, 126, 127, + 122, 1103, 1104, 847, 1045, 217, 315, 1118, 1120, 847, + 1062, 314, 988, 810, 503, 472, 94, 266, 402, -276, + 101, 210, 693, 217, 1223, 1227, 1123, 915, 444, 989, + 303, 786, 698, 1193, 403, 271, 272, 273, 274, 275, + 276, 277, 278, 916, 280, 747, 786, 283, 748, 217, + 468, 1077, 285, 101, 206, 697, 1069, 217, 1071, 217, + 787, 217, 317, 299, 217, 304, 305, 307, 789, 322, + 414, 313, 217, 554, 687, 787, 1172, 217, 840, 217, + 323, 795, 1185, 789, 1188, 493, 695, 299, 81, 1048, + 390, 391, 217, 217, 341, -276, 795, 454, 206, 798, + 856, 667, 563, 423, 324, 3, 206, 81, 1112, 745, + 206, 746, 1070, 206, 798, 335, 336, 337, 338, 339, + 340, 238, 420, 449, 744, 325, 238, 405, 238, 740, + 847, 489, 1022, 404, 122, 441, 405, 122, 122, 122, + 489, 238, 206, 241, 241, 743, 943, 1150, 741, 945, + -420, -420, -420, 327, 299, -420, -420, 81, 1048, 122, + 465, 1165, 1105, 405, 1106, 122, 210, 456, 319, 638, + 745, 453, 746, 405, -277, 240, 261, 742, 405, 1090, + 240, 1107, 240, 123, 1213, 744, 328, 319, 123, -705, + 740, 1188, 141, 435, 345, 240, 694, -420, -420, -420, + 396, 397, -420, -420, 201, 217, 743, 346, 1067, 741, + 210, 1067, -277, 217, 467, 217, 101, 442, 210, 445, + 447, 1105, 210, 1106, 1080, 210, 1175, 299, 1176, 405, + 347, 752, 455, 620, 319, 627, 348, 1146, 742, 1148, + 1107, 101, 685, -705, 1017, 1177, -653, 313, 737, 1019, + -653, 856, 547, 548, 210, 739, 749, 472, 349, 217, + 81, 82, 140, 266, 399, 85, 86, 509, 350, 1033, + 957, 123, 351, 826, 299, 827, -420, 683, -420, 1034, + 217, 217, 501, 502, -649, 299, -420, 217, -649, 122, + 575, 81, 82, 140, 946, -699, 85, 86, 562, 122, + 421, 1033, -642, 405, 123, 954, -642, 597, 206, 562, + 122, 1034, 122, -703, 453, 405, 1169, 396, 397, 622, + 122, 444, 316, 122, 287, 288, 289, 122, 319, 238, + 238, 390, 391, 326, -700, 636, 1067, 315, 1067, 637, + 319, 399, -705, -705, 527, 528, 529, -705, -705, 334, + 747, 398, 405, 748, 241, 217, 653, 400, 283, 241, + 1129, 241, 1130, 401, 122, 122, 421, 1015, 409, 405, + 1016, 101, 711, 489, 241, 408, 1004, 1005, 580, 1131, + 583, 1014, 589, 240, 240, 590, 1169, 720, 455, 721, + 596, -526, 101, 407, 101, 211, 414, 1006, 1007, 607, + 1012, 1013, 313, 217, 217, 413, 678, 679, 415, 616, + 405, 122, 655, -702, 870, 1184, 1129, -643, 1130, 217, + 210, -643, 217, 217, 442, 562, 405, 719, 1008, 1009, + 1010, 1011, 81, 1035, 1036, 1131, 472, 432, 851, -420, + -420, -420, 416, 562, -420, -420, 390, 391, -420, 626, + -651, -420, 206, -420, -651, 412, 696, 486, 398, 122, + 405, 212, 903, 904, 81, 1035, 1036, 123, 872, -604, + 446, 448, 450, -604, 417, 745, 315, 746, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 703, -701, + 744, 1063, 123, 101, 1064, 740, 1082, 1083, 316, 1084, + 217, 217, 392, 393, 769, -646, 1086, 668, 422, -646, + 442, 743, 217, 217, 741, 217, 1040, 394, 395, 279, + -603, 392, 393, 284, -603, 286, 596, 290, -276, 122, + 454, 122, 292, 690, 691, 692, 394, 395, 901, 902, + 211, 313, 217, 742, 308, -276, 309, 595, 319, 122, + 594, 456, 122, 122, 217, 428, 1043, 266, 1078, 319, + 1096, 442, 241, 241, 210, 769, 385, 386, 387, 1044, + 854, 717, 718, -627, 429, 1044, 299, -627, 299, 1045, + 909, 910, 1141, -602, 211, 1045, 405, -602, 373, 851, + 919, 433, 211, 434, 3, -276, 211, 454, 436, 211, + 980, 504, 806, 552, 405, 3, 212, 440, 978, 507, + 813, 508, 815, -472, 454, 459, 455, 461, -420, -420, + -420, 1097, 123, -420, -420, 834, 835, 464, 211, 463, + 839, 1109, 587, -636, 616, 852, 405, -636, -647, 485, + 982, 266, -647, 123, 1108, 123, 385, 386, 387, 469, + 212, 1134, 217, 316, 392, 393, 613, 299, 212, 479, + 618, 490, 212, -644, -276, 212, 454, -644, 1151, 394, + 395, 487, 122, 491, 3, 217, 439, 122, 492, 940, + 217, 1234, 940, 570, 217, 873, 874, 875, 876, 877, + 878, -621, 390, 391, 212, -621, 495, 639, 640, 369, + 496, 370, 505, -420, 122, -626, 1179, 266, 497, -626, + 1064, 460, 122, -625, 462, -624, 1245, -625, 498, -624, + -420, 854, 470, 371, 372, 473, -623, 1199, 1046, 1047, + -623, 499, 81, 1048, 1046, 1047, 1049, 937, 81, 1048, + 905, 906, 1049, 556, 123, 3, -622, 81, 82, 140, + -622, 570, 85, 86, 101, 907, 908, -638, 81, 82, + 140, -638, -619, 85, 86, 970, -619, -620, 388, 389, + 454, -620, 947, 679, 1041, 81, 82, 140, 3, -616, + 85, 86, 1060, -616, 557, 969, 852, 217, 596, 1073, + 1074, 472, 316, 329, 211, 559, 81, 82, 140, 295, + 570, 85, 86, 560, 156, 157, 158, 159, 160, 161, + -420, 683, -420, 940, 564, 940, 940, 940, 570, 666, + -420, -617, 162, 163, 164, -617, -608, 81, 82, 140, + -608, 1160, 85, 86, 561, 578, -611, 579, 122, 122, + -611, -639, 405, 1163, 473, -639, 165, 1218, 1175, 576, + 1176, 636, 388, 389, 581, 1089, 584, 1001, 1002, 1003, + 212, -631, 587, 266, 587, -631, 1178, 1177, 1200, 577, + 769, 1064, 1065, 604, -632, 833, -633, 609, -632, 1072, + -633, 1101, 841, 1041, 1041, 618, 123, -629, 291, -612, + 174, -629, 1115, -612, 1060, 1060, 666, 723, 81, 82, + 140, 593, 1100, 85, 86, 318, -610, -276, -614, 666, + -610, 1115, -614, 197, 1181, 1182, 122, 1144, 318, 318, + 318, 318, 318, 318, 217, 343, 344, 582, 3, 122, + 575, 81, 82, 140, 122, 319, 85, 86, 211, 588, + -615, 940, 1087, 940, -615, 608, 1153, -613, 605, 1240, + 857, -613, 898, 899, 900, 1041, 122, 122, 1041, 606, + 1115, 1115, 81, 296, 297, 614, 177, 281, 282, 1060, + 319, 1060, 619, 615, 1060, 882, 405, 883, 1060, -420, + 122, 122, 623, 1060, 624, 628, 1201, 629, 632, 122, + 634, 199, 229, 229, 635, 1138, -420, 652, 101, 884, + 885, 684, 657, 122, 212, 123, 656, 672, 833, 659, + 955, 852, 669, 833, 1155, 674, 473, 833, 675, 1033, + 442, 677, 1166, 1161, 1162, 1041, 122, 122, 1115, 1034, + 1125, 1126, 1127, 1060, 298, 710, 680, 123, 682, 688, + 689, 699, 701, 704, 625, 977, 713, 714, 808, 202, + 235, 235, 804, 122, 1144, 811, 330, 818, 332, 772, + 819, 836, 860, 576, 858, 771, 1198, 1033, 862, 838, + 1219, 101, 881, 1202, 1204, 863, -635, 1034, 1060, 864, + -635, 81, 82, 140, 868, 852, 85, 86, 598, 385, + 386, 387, 869, 911, 913, 912, 914, 822, 917, 920, + 926, 927, 197, 928, 948, 931, 949, 934, 951, 959, + 197, 1224, 961, 965, 197, 968, 975, 197, 979, 981, + 833, 1020, 983, 1021, 177, 418, 1023, 1081, 1085, 1075, + 1088, 1232, 1233, 1140, 1121, 101, 199, 1133, 1237, 1158, + 1152, 1180, 1196, 1178, 1203, 886, 197, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 1206, 1207, 1209, 203, 236, 236, 1211, + 1217, 1091, 1092, 1212, 1215, 1225, 204, 237, 237, 1228, + 199, 1229, 81, 1035, 1036, 1231, 177, 1236, 199, 1241, + 1238, 1239, 199, 1242, 202, 199, 1248, 318, 451, 1249, + 929, 930, 260, 229, 471, 1189, 1051, 1243, 229, 1230, + 229, 1102, 1095, 214, 243, 243, 318, 824, 1164, 1220, + 1136, 986, 950, 229, 199, 480, 481, 482, 483, 958, + 81, 1035, 1036, 933, 177, 671, 1235, 816, 202, 850, + 814, 971, 457, 245, 962, 451, 202, 293, 431, 123, + 202, 500, 318, 202, 1214, 633, 451, 833, 553, 859, + 374, 235, 123, 318, 974, 866, 235, 1157, 235, 1094, + 973, 0, 0, 513, 0, 0, 0, 0, 0, 0, + 0, 235, 202, 0, 0, 0, 0, 0, 0, 1170, + 1171, 0, 0, 0, 494, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 318, 0, 318, 0, 645, + 647, 203, 197, 1194, 1195, 0, 0, 0, 512, 0, + 558, 204, 123, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 525, 526, 0, 0, 123, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1066, 0, + 0, 0, 0, 0, 546, 203, 0, 318, 214, 1221, + 1222, 0, 0, 203, 0, 204, 0, 203, 0, 318, + 203, 0, 0, 204, 0, 0, 1079, 204, 236, 0, + 204, 0, 0, 236, 0, 236, 123, 0, 237, 0, + 199, 0, 0, 237, 0, 237, 0, 0, 236, 203, + 887, 0, 214, 0, 0, 0, 0, 0, 237, 204, + 214, 229, 229, 0, 214, 0, 738, 214, 0, 0, + 0, 0, 0, 0, 0, 243, 0, 0, 0, 0, + 243, 0, 243, 0, 0, 888, 889, 890, 891, 892, + 893, 894, 895, 896, 897, 243, 214, 642, 202, 0, + 825, 1149, 0, 0, 0, 295, 197, 826, 0, 827, + 156, 157, 158, 159, 160, 161, 0, 0, 0, 235, + 235, 0, 1139, 0, 0, 0, 0, 738, 162, 163, + 164, 0, 0, 0, 0, 0, 0, 0, 318, 318, + 318, 318, 318, 318, 879, 880, 0, 0, 0, 216, + 244, 244, 165, 23, 24, 25, 26, 0, 27, 0, + 0, 0, 0, 32, 33, 0, 0, 36, 37, 0, + 39, 40, 41, 42, 0, 0, 483, 0, 0, 0, + 772, 773, 774, 775, 199, 54, 55, 776, 777, 778, + 779, 780, 781, 782, 0, 0, 174, 451, 0, 451, + 0, 1205, 0, 0, 0, 724, 0, 0, 0, 770, + 0, 80, 0, 0, 0, 203, 0, 0, 0, 0, + 0, 84, 0, 0, 707, 204, 0, 318, 0, 0, + 0, 0, 0, 0, 0, 716, 236, 236, 318, 0, + 0, 0, 202, 0, 0, 0, 237, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 203, 603, 0, 0, 0, 608, - 0, 0, 203, 0, 0, 0, 203, 122, 317, 203, - 0, 0, 0, 0, 0, 832, 0, 236, 0, 317, - 122, 201, 236, 0, 236, 1156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 236, 203, 0, - 213, 0, 234, 234, 0, 0, 0, 1169, 1170, 0, + 0, 0, 214, 0, 0, 0, 0, 865, 81, 175, + 176, 0, 177, 85, 86, 0, 0, 0, 871, 318, + 0, 0, 0, 243, 243, 0, 0, 0, 0, 0, + 0, 828, 0, 1244, 216, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 0, 318, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 0, 0, 0, 0, 0, 0, 216, 0, 0, 0, + 216, 0, 0, 216, 0, 0, 0, 0, 0, 203, + 0, 244, 0, 0, 0, 0, 244, 0, 244, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 317, 0, 317, 0, 644, 646, 297, 215, 243, - 243, 1193, 1194, 0, 0, 0, 0, 0, 0, 0, - 122, 0, 0, 0, 213, 0, 0, 0, 0, 329, - 0, 331, 213, 0, 122, 0, 213, 0, 0, 213, - 0, 0, 0, 0, 0, 0, 0, 242, 0, 0, - 0, 0, 242, 317, 242, 0, 0, 1220, 1221, 0, - 0, 0, 0, 683, 0, 317, 0, 242, 213, 0, - 0, 0, 0, 0, 0, 196, 0, 0, 472, 0, - 0, 202, 0, 196, 122, 0, 0, 196, 0, 0, - 196, 0, 0, 0, 0, 0, 0, 709, 417, 0, - 493, 0, 235, 235, 0, 201, 0, 0, 0, 0, - 0, 0, 737, 0, 0, 0, 0, 0, 0, 196, - 0, 0, 0, 0, 511, 575, 0, 770, 0, 515, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, - 0, 0, 215, 0, 0, 0, 0, 0, 0, 821, - 545, 0, 0, 0, 0, 236, 236, 0, 0, 0, - 0, 450, 0, 737, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 317, 317, 317, 317, 317, 317, - 878, 879, 0, 0, 0, 0, 215, 0, 479, 480, - 481, 482, 0, 0, 215, 0, 0, 885, 215, 0, - 0, 215, 0, 0, 0, 0, 0, 0, 450, 243, - 0, 0, 0, 0, 243, 202, 243, 0, 0, 450, - 0, 0, 0, 0, 213, 0, 0, 0, 0, 243, - 215, 0, 0, 0, 0, 0, 512, 0, 0, 0, - 0, 0, 0, 0, 0, 242, 242, 0, 0, 0, - 0, 0, 928, 929, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 317, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 317, 196, 0, 0, 203, 0, - 0, 0, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 218, 0, 0, 961, 0, 142, 143, - 144, 0, 0, 219, 147, 148, 149, 150, 151, 152, - 220, -498, -498, 0, 0, 317, 221, -498, 0, 0, - 0, 155, 156, 157, 158, 159, 160, 0, 0, 0, - 0, 0, 0, 0, -276, -276, 0, 0, 0, 161, - 162, 163, 0, 0, 0, 0, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 164, 317, 0, 0, 0, 213, 0, - 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 715, 0, 0, 0, 0, 0, -498, 166, 167, - 168, 169, 170, 171, 0, 0, 215, 0, 0, 0, - 1065, 0, 172, 0, 0, 0, 0, 173, 0, 0, - 641, 0, 0, 0, 0, 0, 0, 243, 243, 196, - 0, 0, 0, 0, 0, 0, 0, 0, 1078, 824, - 1148, 317, 0, 0, 294, 0, 825, 827, 826, 155, - 156, 157, 158, 159, 160, 0, 0, 0, 0, 0, - 0, 706, 0, 0, 0, 0, 0, 161, 162, 163, - 0, 0, 0, 0, 0, 0, 0, 0, 737, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 174, - 175, 164, 176, 222, 223, 0, 0, 0, 0, 482, + 0, 244, 216, 0, 0, 0, 0, 825, 0, 0, + 0, 0, 295, 0, 826, 318, 827, 156, 157, 158, + 159, 160, 161, 0, 0, 0, 214, 0, 0, 0, + 0, 0, 0, 0, 0, 162, 163, 164, 0, 0, + 0, 0, 0, 0, 828, 0, 0, 0, 0, 828, + 0, 0, 738, 828, 0, 0, 987, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 450, 0, 450, 0, 0, 0, 0, 0, 723, 0, - 0, 0, 769, 0, 1138, 173, 0, 23, 24, 25, - 26, 0, 27, 0, 0, 0, 0, 32, 33, 0, - 215, 36, 37, 0, 39, 40, 41, 42, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, - 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 827, 0, 0, 0, 0, 827, 0, 0, 0, 827, - 864, 0, 0, 0, 79, 0, 0, 0, 0, 0, - 0, 870, 0, 0, 83, 0, 80, 174, 175, 0, - 176, 84, 85, 1204, 0, 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 983, 511, 0, 0, - 0, 0, 989, 990, 991, 992, 993, 994, 995, 996, - 997, 998, 999, 0, 0, 0, 0, 142, 143, 144, - 317, 145, 146, 147, 148, 149, 150, 151, 152, 220, - -553, 659, 0, 0, 317, 352, 0, 0, 0, 0, - 155, 156, 157, 158, 159, 160, 0, 0, 0, 0, - 0, 0, 827, 0, 0, 317, 0, 141, 161, 162, - 163, 0, 142, 143, 144, 1243, 145, 146, 147, 148, - 149, 150, 151, 152, 153, -553, 0, 0, 0, 0, - 154, 0, 164, 0, 0, 155, 156, 157, 158, 159, - 160, 0, 0, 0, 0, 0, 0, 0, -276, -276, - 0, 0, 0, 161, 162, 163, 0, 166, 167, 168, - 169, 170, 171, 0, 0, 0, 0, 0, 0, 986, - 0, 172, 0, 0, 0, 0, 173, 164, 0, 0, - 824, 0, 0, 0, 0, 294, 0, 825, 0, 826, - 155, 156, 157, 158, 159, 160, 0, 0, 0, 0, - 0, 165, 166, 167, 168, 169, 170, 171, 161, 162, - 163, 0, 0, 0, 0, 0, 172, 0, 0, 0, - 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 164, 0, 0, 0, 0, 0, 0, 827, - 0, 0, 0, -1, 1, 0, 0, 80, 174, 175, - 0, 176, 177, 85, 0, 0, 0, 0, 482, 0, + 984, 512, 0, 174, 0, 0, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, -256, 0, 0, + 0, 0, 0, 295, 0, 0, 0, 0, 156, 157, + 158, 159, 160, 161, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 483, 162, 163, 164, 0, + 0, 0, 0, 0, 0, 0, 828, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 216, 0, + 165, 0, 0, 0, 0, 81, 175, 176, 0, 177, + 85, 86, 0, 0, 0, 0, 0, 0, 0, 244, + 244, 1093, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, -276, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, - 0, 0, 80, 174, 175, 0, 176, 177, 85, 0, - 0, 0, 0, 0, 1092, 0, 0, 0, 0, 0, - 0, -419, -419, -419, 0, 6, 0, 0, 0, 0, - 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 11, 12, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 80, 174, 175, - 0, 176, 84, 85, 13, 14, 15, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 1155, + 0, 0, 0, 0, 318, 0, 0, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, 318, 5, + 0, 0, 0, 0, 0, 0, 1156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, + 0, -420, -420, -420, 0, 6, 0, 0, 0, 0, + 7, 8, 9, 0, 0, 0, 81, 296, 297, 0, + 177, 0, 0, 828, 0, 10, 11, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 216, 0, 13, 14, 15, 16, 0, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, -2, 1, 0, 0, 0, 0, 80, - 81, 82, 83, 0, 84, 85, 86, 0, 0, 0, - 0, 2, 0, 0, 0, 0, 0, -276, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 5, + 77, 78, 79, 80, -2, 1, 0, 0, 0, 0, + 81, 82, 83, 84, 0, 85, 86, 87, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, -276, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -420, -420, -420, 0, 6, 0, 0, 0, + 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -419, -419, -419, 0, 6, 0, 0, 0, 0, - 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 10, 11, 12, 0, 0, + 0, 0, 0, 0, 0, 13, 14, 15, 16, 0, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, + 0, 81, 82, 83, 84, 142, 85, 86, 87, 0, + 143, 144, 145, 0, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -554, 550, 0, 0, 0, 155, 0, + 0, 0, 0, 156, 157, 158, 159, 160, 161, 0, + 0, 0, 0, 0, 0, 0, -276, -276, 4, 0, + 5, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 13, 14, 15, 16, 0, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 0, 0, 0, 0, 0, 0, 80, - 81, 82, 83, 141, 84, 85, 86, 0, 142, 143, - 144, 0, 145, 146, 147, 148, 149, 150, 151, 152, - 153, -553, 549, 0, 0, 0, 154, 0, 0, 0, - 0, 155, 156, 157, 158, 159, 160, 0, 0, 0, - 0, 0, 0, 0, -276, -276, 4, 0, 5, 161, - 162, 163, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -420, -420, -420, 165, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -419, -419, -419, 164, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, - 168, 169, 170, 171, 0, 0, 0, 0, 0, 0, - 0, 0, 172, 13, 14, 15, 16, 173, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 0, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 0, 0, 0, 0, 0, 0, 80, 174, - 550, 83, 176, 177, 85, 86, 141, 0, 0, 0, - 0, 142, 143, 144, 0, 145, 146, 147, 148, 149, - 150, 151, 152, 153, -171, 0, 0, 0, 0, 154, - 0, 0, 0, 0, 155, 156, 157, 158, 159, 160, - 0, 0, 0, 0, 0, 0, 0, -276, -276, -276, - 0, 0, 161, 162, 163, 0, 0, 0, 0, 0, + 167, 168, 169, 170, 171, 172, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 13, 14, 15, 16, 174, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, + 0, 81, 175, 551, 84, 177, 178, 86, 87, 142, + 0, 0, 0, 0, 143, 144, 145, 0, 146, 147, + 148, 149, 150, 151, 152, 153, 154, -171, 0, 0, + 0, 0, 155, 0, 0, 0, 0, 156, 157, 158, + 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, + -276, -276, -276, 0, 0, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -276, -276, -276, 164, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -276, -276, -276, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 166, 167, 168, 169, 170, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 172, -276, -276, -276, -276, - 173, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, 0, -276, -276, -276, -276, -276, -276, -276, -276, + 0, 0, 0, 0, 167, 168, 169, 170, 171, 172, + 0, 0, 0, 0, 0, 0, 0, 0, 173, -276, + -276, -276, -276, 174, -276, -276, -276, -276, -276, -276, + -276, -276, -276, -276, 0, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, -276, 0, 0, 0, 0, 0, - 0, 80, 174, 175, -276, 176, 177, 85, -276, 218, - 0, 0, 0, 0, 142, 143, 144, 0, 0, 219, - 147, 148, 149, 150, 151, 152, 220, -171, -557, 0, - 0, 0, 221, 0, 0, 0, 0, 155, 156, 157, - 158, 159, 160, 0, 0, 0, 0, 0, 0, 0, - -276, -276, -276, 0, 0, 161, 162, 163, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -276, -276, -276, 164, + -276, -276, -276, -276, -276, -276, -276, -276, -276, 0, + 0, 0, 0, 0, 0, 81, 175, 176, -276, 177, + 178, 86, -276, 219, 0, 0, 0, 0, 143, 144, + 145, 0, 0, 220, 148, 149, 150, 151, 152, 153, + 221, -171, -558, 0, 0, 0, 222, 0, 0, 0, + 0, 156, 157, 158, 159, 160, 161, 0, 0, 0, + 0, 0, 0, 0, -276, -276, -276, 0, 0, 162, + 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -276, -276, -276, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, - 0, 0, 0, 0, 0, 0, 0, 0, 172, -276, - -276, -276, -276, 173, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, 0, -276, -276, -276, -276, -276, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 168, + 169, 170, 171, 172, 0, 0, 0, 0, 0, 0, + 0, 0, 173, -276, -276, -276, -276, 174, -276, -276, + -276, -276, -276, -276, -276, -276, -276, -276, 0, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, - -276, -276, -276, -276, -276, -276, -276, -276, 0, 0, - 0, 0, 0, 0, 80, 174, 175, -276, 176, 222, - 223, -276, -169, 0, 0, 0, 0, -169, -169, -169, - 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -702, -169, -169, 0, -169, 0, -169, + -276, -276, -276, -276, -276, -276, -276, -276, -276, -276, + -276, -276, -276, 0, 0, 0, 0, 0, 0, 81, + 175, 176, -276, 177, 223, 224, -276, -169, 0, 0, + 0, 0, -169, -169, -169, 0, -169, -169, -169, -169, + -169, -169, -169, -169, -169, -169, -169, -169, -703, -169, + -169, 0, -169, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, 0, -169, 0, -169, -169, + 0, -169, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, - -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, - 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, + -169, -169, -169, -169, 0, 0, 0, -169, 0, 0, + 0, 0, 0, 0, 0, 706, -697, 0, 0, 0, + 295, 0, 0, 0, 0, 156, 157, 158, 159, 160, + 161, 0, -169, -169, -169, -169, -169, -169, 0, 0, + 0, 0, 219, 162, 163, 164, -169, 143, 144, 145, + 0, -169, 220, 148, 149, 150, 151, 152, 153, 221, + -499, -499, 0, 0, 0, 222, -499, 165, 0, 0, + 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, + 0, 0, 0, -276, -276, 0, 0, 0, 162, 163, + 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, - -169, -169, -169, 0, 0, 0, 0, 0, 141, 0, - 0, -169, 0, 142, 143, 144, -169, 145, 146, 147, - 148, 149, 150, 151, 152, 153, -553, 0, 0, 0, - 0, 154, 0, 0, 0, 0, 155, 156, 157, 158, - 159, 160, 0, 0, 0, 0, 0, 0, 0, -276, - -276, 0, 0, 218, 161, 162, 163, 0, 142, 143, - 144, 0, 0, 219, 147, 148, 149, 150, 151, 152, - 220, -553, -557, 0, 0, 0, 221, 0, 164, 0, - 0, 155, 156, 157, 158, 159, 160, -169, -169, -169, - 0, -169, -169, -169, -276, -276, 0, 0, 0, 161, - 162, 163, -526, 166, 167, 168, 169, 170, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, - 0, 0, 173, 164, 0, 0, 0, 0, 0, 0, + 0, 174, 165, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -169, -169, -169, 0, -169, -169, -169, + 0, 0, 0, 0, 0, 0, -499, 167, 168, 169, + 170, 171, 172, 0, 0, 0, 0, 0, 142, 0, + 0, 173, 0, 143, 144, 145, 174, 146, 147, 148, + 149, 150, 151, 152, 153, 154, -554, 0, 0, 0, + 0, 155, 0, 0, 0, 0, 156, 157, 158, 159, + 160, 161, 0, 81, 296, 297, 0, 177, 0, -276, + -276, 0, 0, 0, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -494, 166, 167, - 168, 169, 170, 171, 0, 0, 0, 0, 0, 141, - 0, 0, 172, 0, 142, 143, 144, 173, 145, 146, - 147, 148, 149, 150, 151, 152, 153, -553, 647, 0, - 0, 0, 154, 0, 0, 0, 0, 155, 156, 157, - 158, 159, 160, 80, 174, 175, 0, 176, 177, 85, - -276, -276, 0, 0, 218, 161, 162, 163, 0, 142, - 143, 144, 0, 0, 219, 147, 148, 149, 150, 151, - 152, 220, -553, -557, 0, 0, 0, 221, 0, 164, - 0, 0, 155, 156, 157, 158, 159, 160, 80, 174, - 175, 0, 176, 222, 223, -276, -276, 0, 0, 0, - 161, 162, 163, 0, 166, 167, 168, 169, 170, 171, - 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, - 0, 0, 0, 173, 164, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 175, + 176, 0, 177, 223, 224, 0, 0, 0, 0, 0, + 0, 0, 166, 167, 168, 169, 170, 171, 172, 0, + 0, 0, 0, 0, 142, 0, 0, 173, 0, 143, + 144, 145, 174, 146, 147, 148, 149, 150, 151, 152, + 153, 154, -554, 0, 0, 0, 0, 155, 0, 0, + 0, 0, 156, 157, 158, 159, 160, 161, 0, 0, + 0, 0, 0, 0, 0, -276, -276, 0, 0, 0, + 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, - 167, 168, 169, 170, 171, 0, 0, 0, 0, 0, - 141, 0, 0, 172, 0, 142, 143, 144, 173, 145, - 146, 147, 148, 149, 150, 151, 152, 153, -553, 0, - 0, 0, 0, 154, 0, 0, 0, 0, 155, 156, - 157, 158, 159, 160, 80, 174, 175, 0, 176, 177, - 85, -276, -276, 0, 0, 0, 161, 162, 163, 0, + 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, + 0, 0, -171, 0, 81, 175, 176, 295, 177, 178, + 86, 0, 156, 157, 158, 159, 160, 161, -527, 167, + 168, 169, 170, 171, 172, 0, 0, 0, 0, 219, + 162, 163, 164, 173, 143, 144, 145, 0, 174, 220, + 148, 149, 150, 151, 152, 153, 221, -554, -558, 0, + 0, 0, 222, 0, 165, 0, 0, 156, 157, 158, + 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, + -276, -276, 0, 0, 0, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 174, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 164, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 174, 175, 0, 176, 222, 223, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 167, 168, 169, 170, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 172, - 0, 142, 143, 144, 173, 145, 146, 147, 148, 149, - 150, 151, 152, 220, -553, 567, 0, 0, 0, 352, - 0, 0, 0, 0, 155, 156, 157, 158, 159, 160, - 0, 0, 0, 0, 0, 0, 0, -276, -276, 4, - 0, 5, 161, 162, 163, 0, 0, 0, 0, 0, + 81, 175, 176, 0, 177, 178, 86, 0, 0, 0, + 0, 0, 0, -495, 167, 168, 169, 170, 171, 172, + 0, 0, 0, 0, 0, 142, 0, 0, 173, 0, + 143, 144, 145, 174, 146, 147, 148, 149, 150, 151, + 152, 153, 154, -554, 648, 0, 0, 0, 155, 0, + 0, 0, 0, 156, 157, 158, 159, 160, 161, 0, + 81, 296, 297, 0, 177, 0, -276, -276, 0, 0, + 0, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 164, 6, 0, 0, - 0, 0, 0, 0, 0, 80, 174, 175, 0, 176, - 177, 85, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 166, 167, 168, 169, 170, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 568, 13, 14, 15, 16, - 173, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, - 0, 80, 174, 550, 83, 176, 177, 85, 86, 142, - 143, 144, 0, 145, 146, 147, 148, 149, 150, 151, - 152, 220, -553, 648, 0, 0, 0, 352, 0, 0, - 0, 0, 155, 156, 157, 158, 159, 160, 0, 0, - 0, 0, 0, 0, 0, -276, -276, 4, 0, 5, - 161, 162, 163, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 164, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, + 0, 0, 0, -171, 0, 81, 175, 176, 353, 177, + 223, 224, 0, 156, 157, 158, 159, 160, 161, 0, + 167, 168, 169, 170, 171, 172, 0, 0, 0, 0, + 219, 162, 163, 164, 173, 143, 144, 145, 0, 174, + 220, 148, 149, 150, 151, 152, 153, 221, -554, -558, + 0, 0, 0, 222, 0, 165, 0, 0, 156, 157, + 158, 159, 160, 161, 0, 0, 0, 0, 0, 0, + 0, -276, -276, 0, 0, 0, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, - 167, 168, 169, 170, 171, 0, 0, 0, 0, 0, - 0, 0, 0, 172, 13, 14, 15, 16, 173, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 0, 0, 0, 0, 0, 0, 80, - 174, 550, 83, 176, 177, 85, 86, 142, 143, 144, - 0, 145, 146, 147, 148, 149, 150, 151, 152, 220, - -553, 660, 0, 0, 0, 352, 0, 0, 0, 0, - 155, 156, 157, 158, 159, 160, 0, 0, 0, 0, - 0, 0, 0, -276, -276, 4, 0, 5, 161, 162, - 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, + 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 81, 175, 176, 0, 177, 178, 86, 0, 0, + 0, 0, 0, 0, 0, 167, 168, 169, 170, 171, + 172, 0, 0, 0, 0, 0, 142, 0, 0, 173, + 0, 143, 144, 145, 174, 146, 147, 148, 149, 150, + 151, 152, 153, 154, -554, 0, 0, 0, 0, 155, + 0, 0, 0, 0, 156, 157, 158, 159, 160, 161, + 0, 81, 296, 297, 0, 177, 0, -276, -276, 0, + 0, 0, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 164, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 81, 175, 176, 0, + 177, 223, 224, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 168, 169, 170, 171, 172, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 0, 143, 144, 145, + 174, 146, 147, 148, 149, 150, 151, 152, 153, 221, + -554, 568, 0, 0, 0, 353, 0, 0, 0, 0, + 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, + 0, 0, 0, -276, -276, 4, 0, 5, 162, 163, + 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 166, 167, 168, - 169, 170, 171, 0, 0, 0, 0, 0, 0, 0, - 0, 661, 13, 14, 15, 16, 173, 17, 18, 19, + 0, 0, 165, 6, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 175, 176, 0, 177, 178, 86, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 168, 169, + 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, + 0, 569, 13, 14, 15, 16, 174, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 0, 0, 0, 0, 0, 0, 80, 174, 550, - 83, 176, 177, 85, 86, 142, 143, 144, 0, 145, - 146, 147, 148, 149, 150, 151, 152, 220, -553, 663, - 0, 0, 0, 352, 0, 0, 0, 0, 155, 156, - 157, 158, 159, 160, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 161, 162, 163, 0, - 142, 143, 144, 0, 145, 146, 147, 148, 149, 150, - 151, 152, 220, -553, 721, 0, 0, 0, 352, 0, - 164, 0, 0, 155, 156, 157, 158, 159, 160, 0, + 79, 80, 0, 0, 0, 0, 0, 0, 81, 175, + 551, 84, 177, 178, 86, 87, 143, 144, 145, 0, + 146, 147, 148, 149, 150, 151, 152, 153, 221, -554, + 649, 0, 0, 0, 353, 0, 0, 0, 0, 156, + 157, 158, 159, 160, 161, 0, 0, 0, 0, 0, + 0, 0, -276, -276, 4, 0, 5, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 161, 162, 163, 0, 166, 167, 168, 169, 170, - 171, 0, 0, 0, 0, 0, 0, 0, 0, 664, - 0, 0, 0, 0, 173, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 165, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 166, 167, 168, 169, 170, 171, 0, 0, 0, 0, - 0, 0, 0, 0, 172, 0, 142, 143, 144, 173, - 145, 146, 147, 148, 149, 150, 151, 152, 220, -553, - 799, 0, 0, 0, 352, 0, 0, 0, 0, 155, - 156, 157, 158, 159, 160, 80, 174, 175, 0, 176, - 177, 85, 0, 0, 0, 0, 0, 161, 162, 163, - 0, 142, 143, 144, 0, 145, 146, 147, 148, 149, - 150, 151, 152, 220, -553, 800, 0, 0, 0, 352, - 0, 164, 0, 0, 155, 156, 157, 158, 159, 160, - 80, 174, 175, 0, 176, 177, 85, 0, 0, 0, - 0, 0, 161, 162, 163, 0, 166, 167, 168, 169, - 170, 171, 0, 0, 0, 0, 0, 0, 0, 0, - 172, 0, 0, 0, 0, 173, 164, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 168, 169, 170, + 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, + 173, 13, 14, 15, 16, 174, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 0, 0, 0, 0, 0, 0, 81, 175, 551, + 84, 177, 178, 86, 87, 143, 144, 145, 0, 146, + 147, 148, 149, 150, 151, 152, 153, 221, -554, 661, + 0, 0, 0, 353, 0, 0, 0, 0, 156, 157, + 158, 159, 160, 161, 0, 0, 0, 0, 0, 0, + 0, -276, -276, 4, 0, 5, 162, 163, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 166, 167, 168, 169, 170, 171, 0, 0, 0, - 0, 0, 0, 0, 0, 801, 0, 142, 143, 144, - 173, 145, 146, 147, 148, 149, 150, 151, 152, 220, - -553, 802, 0, 0, 0, 352, 0, 0, 0, 0, - 155, 156, 157, 158, 159, 160, 80, 174, 175, 0, - 176, 177, 85, 0, 0, 0, 0, 0, 161, 162, - 163, 0, 142, 143, 144, 0, 145, 146, 147, 148, - 149, 150, 151, 152, 220, -553, 935, 0, 0, 0, - 352, 0, 164, 0, 0, 155, 156, 157, 158, 159, - 160, 80, 174, 175, 0, 176, 177, 85, 0, 0, - 0, 0, 0, 161, 162, 163, 0, 166, 167, 168, - 169, 170, 171, 0, 0, 0, 0, 0, 0, 0, - 0, 172, 0, 0, 0, 0, 173, 164, 0, 0, - 705, -696, 0, 0, 0, 294, 0, 0, 0, 0, - 155, 156, 157, 158, 159, 160, 0, 0, 0, 0, - 0, 0, 166, 167, 168, 169, 170, 171, 161, 162, - 163, 0, 0, 0, 0, 0, 172, 0, 142, 143, - 144, 173, 145, 146, 147, 148, 149, 150, 151, 152, - 220, -553, 164, 0, 0, 0, 352, 0, 0, 0, - 0, 155, 156, 157, 158, 159, 160, 80, 174, 175, - 0, 176, 177, 85, 0, 0, 0, 0, 0, 161, - 162, 163, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, - 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, - 0, 0, 80, 174, 175, 0, 176, 177, 85, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 166, 167, - 168, 169, 170, 171, -135, 0, 0, 0, 0, -135, - 0, 0, 172, 0, 0, 0, 0, 173, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 0, 5, 0, 0, 0, 0, 0, 80, 295, 296, - 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, + 165, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 167, 168, 169, 170, 171, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 662, + 13, 14, 15, 16, 174, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 0, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 0, 0, 0, 0, 0, 0, 81, 175, 551, 84, + 177, 178, 86, 87, 143, 144, 145, 0, 146, 147, + 148, 149, 150, 151, 152, 153, 221, -554, 660, 0, + 0, 0, 353, 0, 0, 0, 0, 156, 157, 158, + 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 162, 163, 164, 0, 143, + 144, 145, 0, 146, 147, 148, 149, 150, 151, 152, + 153, 221, -554, 664, 0, 0, 0, 353, 0, 165, + 0, 0, 156, 157, 158, 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 174, - 175, 0, 176, 177, 85, 0, 13, 14, 15, 16, - 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, -556, 0, 0, 0, 0, - 0, 0, 0, 136, 83, 0, 0, 0, 86, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, + 162, 163, 164, 0, 167, 168, 169, 170, 171, 172, + 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, + 0, 0, 0, 174, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, + 168, 169, 170, 171, 172, 0, 0, 0, 0, 0, + 0, 0, 0, 665, 0, 143, 144, 145, 174, 146, + 147, 148, 149, 150, 151, 152, 153, 221, -554, 722, + 0, 0, 0, 353, 0, 0, 0, 0, 156, 157, + 158, 159, 160, 161, 0, 81, 175, 176, 0, 177, + 178, 86, 0, 0, 0, 0, 162, 163, 164, 0, + 143, 144, 145, 0, 146, 147, 148, 149, 150, 151, + 152, 153, 221, -554, 800, 0, 0, 0, 353, 0, + 165, 0, 0, 156, 157, 158, 159, 160, 161, 0, + 81, 175, 176, 0, 177, 178, 86, 0, 0, 0, + 0, 162, 163, 164, 0, 167, 168, 169, 170, 171, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 173, + 0, 0, 0, 0, 174, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 167, 168, 169, 170, 171, 172, 0, 0, 0, 0, + 0, 0, 0, 0, 173, 0, 143, 144, 145, 174, + 146, 147, 148, 149, 150, 151, 152, 153, 221, -554, + 801, 0, 0, 0, 353, 0, 0, 0, 0, 156, + 157, 158, 159, 160, 161, 0, 81, 175, 176, 0, + 177, 178, 86, 0, 0, 0, 0, 162, 163, 164, + 0, 143, 144, 145, 0, 146, 147, 148, 149, 150, + 151, 152, 153, 221, -554, 803, 0, 0, 0, 353, + 0, 165, 0, 0, 156, 157, 158, 159, 160, 161, + 0, 81, 175, 176, 0, 177, 178, 86, 0, 0, + 0, 0, 162, 163, 164, 0, 167, 168, 169, 170, + 171, 172, 0, 0, 0, 0, 0, 0, 0, 0, + 802, 0, 0, 0, 0, 174, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 168, 169, 170, 171, 172, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 0, 143, 144, 145, + 174, 146, 147, 148, 149, 150, 151, 152, 153, 221, + -554, 936, 0, 0, 0, 353, 0, 0, 0, 0, + 156, 157, 158, 159, 160, 161, 0, 81, 175, 176, + 0, 177, 178, 86, 0, 0, 0, 0, 162, 163, + 164, 0, 143, 144, 145, 0, 146, 147, 148, 149, + 150, 151, 152, 153, 221, -554, 0, 0, 0, 0, + 353, 0, 165, 0, 0, 156, 157, 158, 159, 160, + 161, 0, 81, 175, 176, 0, 177, 178, 86, 0, + 0, 0, 0, 162, 163, 164, 0, 167, 168, 169, + 170, 171, 172, 0, 0, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 0, 174, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, - 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 0, 0, 0, 0, 0, - -171, 0, 0, 136, 83, 294, 0, 0, 86, 0, - 155, 156, 157, 158, 159, 160, 0, 0, 0, 0, - 0, -171, 0, 0, 0, 0, 352, 0, 161, 162, - 163, 155, 156, 157, 158, 159, 160, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 624, 161, - 162, 163, 164, 294, 0, 0, 0, 0, 155, 156, - 157, 158, 159, 160, 0, 0, 0, 0, 0, 705, - 0, 0, 0, 164, 294, 0, 161, 162, 163, 155, - 156, 157, 158, 159, 160, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 161, 162, 163, - 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, - 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 173, 0, 80, 295, 296, - 0, 176, 0, 0, 4, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 295, - 296, 0, 176, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 167, 168, 169, 170, 171, 172, -135, 0, + 0, 0, 0, -135, 0, 0, 173, 0, 0, 0, + 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 5, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 81, 175, + 176, 0, 177, 178, 86, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 295, 296, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 80, 295, 296, 0, - 176, 13, 14, 15, 16, 0, 17, 18, 19, 20, + 0, 0, 0, 81, 175, 176, 0, 177, 178, 86, + 13, 14, 15, 16, 0, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 0, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + -557, 0, 0, 0, 0, 0, 0, 0, 137, 84, + 0, 0, 0, 87, 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, 13, 14, 15, 16, 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 0, 0, 0, 0, 0, 0, 80, 81, 82, 83, - 0, 84, 85, 86, 294, 509, 0, 0, 0, 155, - 156, 157, 158, 159, 160, 294, 0, 0, 590, 0, - 155, 156, 157, 158, 159, 160, 0, 161, 162, 163, - 0, 0, 0, 0, 0, 0, 294, 984, 161, 162, - 163, 155, 156, 157, 158, 159, 160, 294, 0, 0, - 685, 164, 155, 156, 157, 158, 159, 160, 0, 161, - 162, 163, 164, 0, 0, 0, 0, 0, 294, -256, - 161, 162, 163, 155, 156, 157, 158, 159, 160, 0, - 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, - 0, 161, 162, 163, 164, 173, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, - 0, 0, 0, 0, 0, 164, 294, 0, 0, 0, - 0, 155, 156, 157, 158, 159, 160, 173, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 341, 173, 161, - 162, 163, 155, 156, 157, 158, 159, 160, 643, 0, - 0, 0, 0, 155, 156, 157, 158, 159, 160, 173, - 161, 162, 163, 164, 0, 0, 80, 295, 296, 0, - 176, 161, 162, 163, 0, 0, 0, 80, 295, 296, - 645, 176, 0, 0, 164, 155, 156, 157, 158, 159, - 160, 0, 0, 0, 0, 164, 0, 0, 80, 295, - 296, 0, 176, 161, 162, 163, 0, 173, 0, 80, - 295, 296, 0, 176, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 164, 173, 0, - 80, 295, 296, 0, 176, 0, 724, 0, 0, 173, - 0, 725, 726, 727, 728, 729, 730, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, - 731, 732, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 173, 0, 0, 0, 0, 0, 0, 80, 295, - 296, 0, 176, 733, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, - 295, 296, 0, 176, 0, 0, 0, 0, 0, 0, - 80, 295, 296, 0, 176, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, - 0, 0, 0, 0, -200, -200, 4, 0, 0, 0, - 0, 0, 80, 295, 296, 0, 176, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 625, 0, 0, 137, + 84, 295, 0, 0, 87, 0, 156, 157, 158, 159, + 160, 161, 0, 0, 0, 0, 0, 706, 0, 0, + 0, 0, 295, 0, 162, 163, 164, 156, 157, 158, + 159, 160, 161, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 162, 163, 164, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -276, 0, 0, 0, 0, 0, + 0, 0, 0, 174, 3, 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, 80, 734, - 735, 0, 176, 13, 14, 15, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 0, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 4, 0, 5, 0, 0, 0, 0, 0, - 136, 83, 0, 0, 0, 86, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -419, -419, -419, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, - 14, 15, 16, 0, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 0, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 4, 0, - 5, 0, 0, 0, 0, 0, 136, 83, 0, 0, - 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 81, 296, 297, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 81, 296, 297, 0, 177, + 0, 13, 14, 15, 16, 0, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 0, 0, 0, 0, 0, 0, 81, 82, 83, + 84, 0, 85, 86, 87, 295, 510, 0, 0, 0, + 156, 157, 158, 159, 160, 161, 295, 0, 0, 591, + 0, 156, 157, 158, 159, 160, 161, 0, 162, 163, + 164, 0, 0, 0, 0, 0, 0, 295, 985, 162, + 163, 164, 156, 157, 158, 159, 160, 161, 295, 0, + 0, 686, 165, 156, 157, 158, 159, 160, 161, 0, + 162, 163, 164, 165, 0, 0, 0, 0, 0, 295, + -256, 162, 163, 164, 156, 157, 158, 159, 160, 161, + 295, 0, 0, 0, 165, 156, 157, 158, 159, 160, + 161, 0, 162, 163, 164, 165, 174, 0, 0, 0, + 0, 0, 0, 162, 163, 164, 0, 174, 0, 0, + 0, 0, 342, 0, 0, 0, 165, 156, 157, 158, + 159, 160, 161, 0, 0, 0, 0, 165, 174, 0, + 0, 0, 0, 0, 0, 162, 163, 164, 644, 174, + 0, 0, 0, 156, 157, 158, 159, 160, 161, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, + 174, 162, 163, 164, 0, 0, 0, 0, 81, 296, + 297, 174, 177, 0, 0, 0, 0, 0, 0, 81, + 296, 297, 0, 177, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 81, 296, 297, 174, 177, 0, 0, 0, 0, 0, + 0, 81, 296, 297, 0, 177, 646, 0, 0, 0, + 0, 156, 157, 158, 159, 160, 161, 0, 0, 174, + 0, 0, 81, 296, 297, 0, 177, 0, 0, 162, + 163, 164, 0, 81, 296, 297, 725, 177, 0, 0, + 0, 726, 727, 728, 729, 730, 731, 0, 0, 0, + 0, 0, 0, 165, 0, 0, 0, 0, 0, 162, + 732, 733, 0, 0, 0, 81, 296, 297, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 14, 15, 16, 0, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 4, 0, 0, 0, 0, 0, - 80, 1097, 136, 83, 0, 0, 0, 86, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, -419, -419, - -419, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 734, 0, 0, 0, 0, 0, 0, + 0, 81, 296, 297, 0, 177, 0, 174, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, + 0, 0, 0, 0, 0, -200, -200, 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, 81, + 296, 297, 0, 177, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, + 735, 736, 0, 177, 13, 14, 15, 16, 0, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 4, 0, 5, 0, 0, 0, + 0, 0, 137, 84, 0, 0, 0, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -420, -420, + -420, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2046,37 +2015,51 @@ static const short yytable[] = 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 4, 0, 0, 0, 0, 0, 0, 0, 136, 83, - 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, + 80, 4, 0, 5, 0, 0, 0, 0, 0, 137, + 84, 0, 0, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, + 15, 16, 0, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 0, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 4, 0, + 0, 0, 0, 0, 81, 1098, 137, 84, 0, 0, + 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -420, -420, -420, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 11, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, - 16, 0, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 0, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 4, 0, 5, 0, - 0, 0, 0, 0, 136, 83, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 14, 15, 16, 0, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 4, 0, 0, 0, 0, + 0, 0, 0, 137, 84, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 13, 14, 15, 16, 0, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 0, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 4, 0, 0, 0, 0, 0, 0, 0, - 136, 83, 0, 0, 0, 86, 0, 0, 0, 0, + 0, 0, 0, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 13, 14, 15, 16, 0, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 0, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 4, 0, 5, 0, 0, 0, 0, 0, + 137, 84, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, @@ -2086,339 +2069,293 @@ static const short yytable[] = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 0, 0, - 0, 0, 0, 0, 0, 0, 136, 83, 0, 0, - 0, 86 + 72, 73, 74, 75, 76, 77, 78, 79, 80, 4, + 0, 0, 0, 0, 0, 0, 0, 137, 84, 0, + 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, + 0, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 0, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, + 0, 0, 0, 0, 137, 84, 0, 0, 0, 87 }; static const short yycheck[] = { - 0, 0, 5, 542, 120, 5, 397, 455, 330, 9, - 10, 11, 12, 387, 388, 399, 592, 27, 544, 653, - 3, 0, 398, 0, 435, 142, 5, 622, 7, 653, - 352, 653, 130, 5, 923, 11, 12, 309, 809, 469, - 699, 389, 390, 208, 395, 396, 311, 232, 653, 391, - 392, 393, 394, 25, 959, 56, 5, 931, 221, 553, - 10, 657, 19, 226, 434, 228, 657, 155, 156, 157, - 158, 159, 160, 824, 5, 24, 0, 571, 829, 264, - 714, 940, 833, 453, 943, 34, 657, 87, 87, 18, - 714, 657, 714, 19, 25, 24, 21, 1109, 1110, 657, - 25, 28, 21, 10, 783, 34, 25, 28, 87, 714, - 87, 687, 21, 24, 653, 21, 25, 18, 45, 798, - 120, 27, 101, 34, 45, 50, 51, 653, 675, 26, - 500, 28, 24, 112, 113, 54, 55, 24, 138, 32, - 33, 10, 34, 1032, 1033, 128, 10, 34, 45, 149, - 41, 836, 37, 38, 154, 138, 1061, 842, 21, 138, - 11, 12, 25, 87, 486, 1177, 57, 52, 53, 1043, - 1044, 942, 172, 944, 5, 714, 39, 836, 608, 24, - 190, 26, 26, 842, 185, 936, 284, 783, 714, 354, - 34, 24, 783, 24, 25, 26, 607, 362, 198, 364, - 50, 51, 798, 34, 154, 470, 206, 798, 208, 1068, - 210, 1070, 783, 213, 186, 187, 188, 783, 1107, 191, - 192, 221, 24, 408, 594, 783, 226, 798, 228, 186, - 187, 188, 798, 41, 191, 192, 606, 186, 187, 18, - 798, 241, 242, 341, 1118, 221, 1120, 154, 198, 57, - 226, 573, 228, 88, 702, 943, 206, 186, 187, 188, - 210, 808, 653, 213, 811, 241, 429, 430, 21, 653, - 26, 436, 28, 34, 27, 186, 187, 653, 963, 653, - 24, 190, 26, 283, 283, 154, 286, 287, 288, 45, - 154, 198, 242, 21, 186, 187, 384, 385, 386, 186, - 187, 188, 653, 210, 963, 653, 213, 24, 308, 308, - 24, 653, 26, 0, 314, 920, 299, 434, 5, 298, - 34, 18, 1073, 714, 21, 5, 13, 14, 15, 198, - 714, 603, 6, 7, 198, 242, 453, 206, 714, 504, - 714, 210, 206, 21, 213, 25, 210, 25, 1043, 213, - 111, 112, 113, 1227, 354, 186, 187, 188, 24, 24, - 191, 192, 362, 714, 364, 21, 714, 89, 90, 34, - 221, 27, 714, 242, 913, 226, 971, 228, 242, 24, - 1068, 26, 1070, 500, 26, 1019, 28, 18, 553, 915, - 241, 967, 23, 491, 24, 1019, 26, 1019, 120, 121, - 87, 489, 5, 45, 24, 853, 571, 572, 408, 21, - 54, 55, 134, 25, 1019, 102, 103, 104, 105, 106, - 107, 108, 109, 5, 111, 37, 38, 114, 18, 429, - 430, 21, 1127, 120, 18, 25, 436, 1132, 438, 438, - 52, 53, 18, 130, 814, 132, 133, 134, 448, 426, - 24, 138, 24, 429, 430, 825, 459, 24, 408, 459, - 437, 461, 441, 68, 69, 70, 21, 154, 24, 469, - 25, 27, 472, 16, 161, 16, 476, 594, 34, 577, - 1019, 34, 35, 36, 649, 650, 469, 1182, 21, 606, - 21, 16, 25, 1019, 25, 50, 51, 662, 21, 1104, - 18, 408, 25, 21, 504, 23, 186, 187, 188, 32, - 33, 191, 192, 513, 514, 16, 21, 182, 183, 910, - 25, 186, 187, 25, 26, 190, 900, 901, 912, 15, - 628, 101, 0, 18, 221, 911, 21, 5, 703, 408, - 25, 9, 21, 39, 408, 643, 25, 645, 5, 24, - 29, 26, 552, 553, 902, 903, 22, 908, 909, 34, - 560, 560, 904, 905, 906, 907, 22, 24, 568, 1174, - 22, 571, 572, 260, 20, 21, 553, 34, 429, 430, - 42, 43, 34, 186, 187, 188, 702, 21, 191, 192, - 34, 25, 25, 26, 571, 28, 283, 284, 23, 286, - 287, 26, 552, 28, 186, 187, 188, 294, 608, 191, - 192, 18, 299, 24, 21, 26, 50, 51, 21, 87, - 21, 308, 25, 34, 25, 608, 724, 314, 1019, 21, - 186, 187, 188, 25, 190, 1019, 615, 725, 726, 727, - 728, 729, 730, 1019, 88, 1019, 22, 50, 51, 649, - 650, 923, 120, 653, 341, 29, 978, 18, 37, 38, - 21, 661, 662, 21, 664, 352, 56, 25, 1019, 40, - 138, 1019, 24, 52, 53, 27, 18, 1019, 678, 21, - 680, 149, 34, 552, 186, 187, 188, 95, 552, 191, - 192, 691, 21, 965, 19, 21, 25, 814, 698, 25, - 683, 701, 702, 703, 1152, 21, 34, 95, 825, 25, - 190, 186, 187, 188, 714, 26, 191, 192, 193, 702, - 22, 25, 26, 34, 28, 182, 183, 21, 21, 186, - 187, 25, 25, 190, 186, 187, 188, 853, 425, 191, - 192, 45, 186, 187, 10, 11, 12, 191, 192, 866, - 21, 438, 22, 21, 25, 22, 1028, 25, 445, 26, - 447, 28, 449, 21, 22, 452, 1038, 21, 455, 24, - 457, 25, 459, 5, 461, 186, 187, 188, 45, 466, - 191, 192, 469, 37, 38, 18, 1058, 21, 21, 476, - 95, 25, 24, 25, 26, 22, 34, 18, 52, 53, - 21, 801, 34, 1075, 491, 25, 26, 19, 28, 897, - 898, 899, 21, 21, 20, 283, 25, 25, 286, 287, - 288, 821, 32, 33, 824, 45, 826, 806, 21, 829, - 809, 1201, 25, 833, 186, 187, 188, 27, 190, 21, - 308, 1113, 18, 25, 95, 21, 314, 24, 21, 26, - 24, 28, 25, 853, 25, 26, 18, 28, 186, 187, - 188, 861, 1134, 191, 192, 193, 1236, 25, 45, 18, - 853, 48, 49, 560, 45, 186, 187, 188, 21, 21, - 191, 192, 25, 25, 34, 35, 36, 574, 154, 18, - 577, 34, 35, 36, 982, 24, 18, 50, 51, 21, - 29, 30, 31, 32, 33, 34, 593, 21, 21, 54, - 55, 25, 25, 600, 601, 602, 20, 21, 47, 48, - 49, 608, 18, 923, 21, 10, 11, 12, 25, 21, - 21, 931, 198, 25, 25, 23, 936, 34, 35, 36, - 206, 628, 71, 18, 210, 24, 21, 213, 186, 187, - 188, 638, 639, 191, 192, 221, 643, 22, 645, 18, - 226, 940, 228, 942, 943, 944, 24, 21, 21, 21, - 438, 25, 25, 25, 25, 241, 242, 21, 32, 33, - 448, 25, 669, 20, 21, 23, 115, 987, 988, 1087, - 677, 459, 679, 461, 21, 22, 683, 186, 187, 188, - 25, 469, 191, 192, 472, 692, 693, 21, 476, 21, - 697, 25, 21, 25, 701, 702, 25, 32, 33, 1019, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 1030, 21, 1032, 1033, 21, 25, 1152, 724, 25, 112, - 113, 1041, 24, 1043, 1044, 513, 514, 24, 21, 26, - 21, 28, 25, 1030, 25, 18, 18, 186, 187, 188, - 1060, 190, 18, 21, 18, 1065, 1065, 25, 45, 154, - 18, 48, 49, 1073, 52, 53, 54, 19, 1078, 1078, - 9, 11, 25, 1083, 1201, 24, 11, 91, 21, 1068, - 24, 1070, 560, 19, 91, 1078, 19, 19, 1215, 19, - 27, 25, 21, 24, 1104, 1105, 1106, 1107, 22, 1109, - 1110, 21, 18, 198, 25, 11, 25, 804, 1118, 1236, - 1120, 206, 21, 1123, 25, 210, 24, 1127, 213, 1129, - 1130, 24, 1132, 27, 821, 1138, 221, 222, 1138, 24, - 608, 226, 408, 228, 25, 23, 20, 19, 23, 20, - 19, 27, 1152, 21, 24, 21, 241, 242, 5, 19, - 25, 22, 24, 429, 430, 852, 853, 25, 855, 20, - 20, 25, 27, 73, 1174, 1175, 1176, 1177, 27, 25, - 18, 21, 1182, 25, 21, 24, 22, 39, 29, 56, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 25, 25, 1202, 1202, 25, 40, 187, 91, 91, 91, - 678, 91, 680, 10, 11, 12, 25, 25, 91, 18, - 22, 25, 20, 691, 24, 18, 21, 1227, 91, 25, - 698, 110, 18, 701, 702, 114, 25, 116, 190, 118, - 27, 20, 18, 21, 123, 18, 40, 24, 23, 20, - 22, 142, 939, 22, 192, 21, 135, 91, 137, 946, - 21, 20, 22, 91, 155, 156, 157, 158, 159, 160, - 25, 162, 163, 23, 25, 27, 194, 40, 27, 25, - 18, 20, 367, 20, 27, 25, 552, 0, 0, 1227, - 18, 314, 931, 1195, 1123, 87, 24, 1022, 689, 1095, - 179, 29, 30, 31, 32, 33, 34, 1031, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 1174, 47, - 48, 49, 1060, 408, 881, 796, 821, 830, 577, 73, - 74, 75, 76, 10, 11, 12, 80, 81, 82, 83, - 84, 85, 86, 71, 429, 430, 680, 1202, 678, 853, - 701, 12, 299, 821, 128, 241, 824, 154, 826, 350, - 1158, 829, 408, 504, 705, 833, 859, 714, 1019, 858, - -1, -1, -1, -1, -1, 1062, -1, -1, 1065, -1, - -1, -1, -1, -1, -1, 853, -1, 115, 267, -1, - -1, 1078, -1, 861, 1081, -1, 10, 11, 12, -1, - 1087, 198, -1, 1090, 1091, -1, -1, -1, -1, 206, - -1, -1, -1, 210, -1, -1, 213, -1, -1, -1, - -1, -1, -1, 302, 221, -1, 305, -1, -1, 226, - -1, 228, -1, -1, 313, -1, -1, 316, -1, -1, - -1, -1, -1, -1, 241, 242, 1133, -1, -1, -1, - -1, 1138, -1, 1140, 1141, -1, -1, -1, 186, 187, - 188, -1, 190, -1, -1, 1152, -1, 552, 936, -1, - -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, - -1, -1, -1, -1, -1, -1, 10, 11, 12, -1, - -1, 1178, -1, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, -1, - -1, 1198, 1199, -1, -1, 1202, -1, -1, 1205, 987, - 988, 198, -1, -1, -1, -1, -1, -1, -1, 206, - -1, -1, -1, 210, -1, -1, 213, 10, -1, -1, - 154, -1, -1, 434, 221, -1, 425, -1, -1, 226, - -1, 228, -1, -1, -1, -1, 435, -1, -1, -1, - -1, 440, 453, -1, 241, 242, 445, -1, 447, -1, + 0, 0, 5, 456, 399, 5, 121, 400, 331, 9, + 10, 11, 12, 388, 389, 654, 700, 593, 398, 27, + 3, 0, 0, 543, 131, 623, 143, 5, 545, 7, + 353, 960, 654, 436, 390, 391, 1044, 396, 397, 654, + 654, 312, 924, 470, 222, 932, 56, 233, 825, 227, + 21, 229, 310, 830, 25, 658, 5, 834, 24, 10, + 11, 12, 784, 554, 435, 392, 393, 394, 395, 28, + 34, 89, 90, 810, 837, 24, 715, 799, 0, 265, + 843, 572, 0, 454, 658, 34, 45, 5, 88, 88, + 26, 5, 658, 715, 24, 13, 14, 15, 34, 19, + 715, 715, 120, 121, 34, 658, 1110, 1111, 18, 88, + 88, 25, 688, 21, 11, 12, 134, 25, 5, 24, + 1128, 121, 22, 658, 102, 1133, 26, 21, 28, 18, + 501, 25, 21, 1062, 654, 113, 114, 654, 25, 139, + 32, 33, 50, 51, 24, 45, 129, 111, 112, 113, + 150, 1033, 1034, 837, 34, 155, 139, 1044, 1045, 843, + 937, 139, 28, 676, 487, 5, 88, 18, 41, 18, + 88, 10, 23, 173, 1178, 1183, 186, 41, 285, 45, + 21, 784, 609, 191, 57, 103, 104, 105, 106, 107, + 108, 109, 110, 57, 112, 715, 799, 115, 715, 199, + 471, 964, 88, 121, 155, 608, 943, 207, 945, 209, + 784, 211, 24, 131, 214, 133, 134, 135, 784, 24, + 191, 139, 222, 409, 595, 799, 1108, 227, 5, 229, + 24, 784, 1119, 799, 1121, 342, 607, 155, 187, 188, + 50, 51, 242, 243, 162, 24, 799, 26, 199, 784, + 703, 574, 430, 431, 24, 34, 207, 187, 188, 654, + 211, 654, 944, 214, 799, 156, 157, 158, 159, 160, + 161, 222, 223, 19, 654, 24, 227, 21, 229, 654, + 964, 25, 921, 18, 284, 284, 21, 287, 288, 289, + 25, 242, 243, 11, 12, 654, 809, 1074, 654, 812, + 187, 188, 189, 18, 222, 192, 193, 187, 188, 309, + 309, 25, 26, 21, 28, 315, 155, 300, 435, 27, + 715, 299, 715, 21, 24, 222, 26, 654, 21, 27, + 227, 45, 229, 0, 27, 715, 18, 454, 5, 34, + 715, 1228, 9, 261, 24, 242, 604, 187, 188, 189, + 54, 55, 192, 193, 10, 355, 715, 16, 941, 715, + 199, 944, 24, 363, 26, 365, 284, 285, 207, 287, + 288, 26, 211, 28, 972, 214, 26, 295, 28, 21, + 16, 1020, 300, 25, 501, 492, 16, 1069, 715, 1071, + 45, 309, 968, 88, 914, 45, 21, 315, 1020, 916, + 25, 854, 42, 43, 243, 1020, 1020, 5, 16, 409, + 187, 188, 189, 18, 39, 192, 193, 368, 15, 24, + 23, 88, 101, 26, 342, 28, 24, 25, 26, 34, + 430, 431, 6, 7, 21, 353, 34, 437, 25, 439, + 439, 187, 188, 189, 815, 22, 192, 193, 427, 449, + 18, 24, 21, 21, 121, 826, 25, 460, 409, 438, + 460, 34, 462, 22, 442, 21, 1105, 54, 55, 25, + 470, 578, 139, 473, 68, 69, 70, 477, 595, 430, + 431, 50, 51, 150, 22, 21, 1069, 470, 1071, 25, + 607, 39, 187, 188, 385, 386, 387, 192, 193, 155, + 1020, 29, 21, 1020, 222, 505, 25, 40, 426, 227, + 26, 229, 28, 56, 514, 515, 18, 912, 19, 21, + 913, 439, 629, 25, 242, 95, 901, 902, 446, 45, + 448, 911, 450, 430, 431, 453, 1175, 644, 456, 646, + 458, 95, 460, 199, 462, 10, 191, 903, 904, 467, + 909, 910, 470, 553, 554, 211, 20, 21, 214, 477, + 21, 561, 561, 22, 25, 25, 26, 21, 28, 569, + 409, 25, 572, 573, 492, 554, 21, 22, 905, 906, + 907, 908, 187, 188, 189, 45, 5, 243, 703, 187, + 188, 189, 22, 572, 192, 193, 50, 51, 18, 490, + 21, 21, 553, 23, 25, 209, 25, 18, 29, 609, + 21, 10, 50, 51, 187, 188, 189, 284, 725, 21, + 287, 288, 289, 25, 24, 1020, 609, 1020, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 616, 22, + 1020, 18, 309, 561, 21, 1020, 25, 26, 315, 28, + 650, 651, 37, 38, 654, 21, 979, 575, 95, 25, + 578, 1020, 662, 663, 1020, 665, 924, 52, 53, 111, + 21, 37, 38, 115, 25, 117, 594, 119, 24, 679, + 26, 681, 124, 601, 602, 603, 52, 53, 32, 33, + 155, 609, 692, 1020, 136, 24, 138, 26, 815, 699, + 1153, 684, 702, 703, 704, 19, 5, 18, 966, 826, + 21, 629, 430, 431, 553, 715, 34, 35, 36, 24, + 703, 639, 640, 21, 20, 24, 644, 25, 646, 34, + 54, 55, 22, 21, 199, 34, 21, 25, 180, 854, + 25, 95, 207, 27, 34, 24, 211, 26, 24, 214, + 867, 355, 670, 409, 21, 34, 155, 18, 25, 363, + 678, 365, 680, 25, 26, 25, 684, 18, 187, 188, + 189, 1029, 439, 192, 193, 693, 694, 23, 243, 18, + 698, 1039, 449, 21, 702, 703, 21, 25, 21, 18, + 25, 18, 25, 460, 21, 462, 34, 35, 36, 24, + 199, 1059, 802, 470, 37, 38, 473, 725, 207, 22, + 477, 25, 211, 21, 24, 214, 26, 25, 1076, 52, + 53, 24, 822, 25, 34, 825, 268, 827, 24, 807, + 830, 1202, 810, 437, 834, 726, 727, 728, 729, 730, + 731, 21, 50, 51, 243, 25, 18, 514, 515, 24, + 18, 26, 19, 28, 854, 21, 1114, 18, 18, 25, + 21, 303, 862, 21, 306, 21, 1237, 25, 18, 25, + 45, 854, 314, 48, 49, 317, 21, 1135, 183, 184, + 25, 18, 187, 188, 183, 184, 191, 805, 187, 188, + 37, 38, 191, 9, 561, 34, 21, 187, 188, 189, + 25, 505, 192, 193, 822, 52, 53, 21, 187, 188, + 189, 25, 21, 192, 193, 194, 25, 21, 32, 33, + 26, 25, 20, 21, 924, 187, 188, 189, 34, 21, + 192, 193, 932, 25, 11, 853, 854, 937, 856, 20, + 21, 5, 609, 18, 409, 25, 187, 188, 189, 24, + 554, 192, 193, 24, 29, 30, 31, 32, 33, 34, + 24, 25, 26, 941, 11, 943, 944, 945, 572, 573, + 34, 21, 47, 48, 49, 25, 21, 187, 188, 189, + 25, 1088, 192, 193, 426, 21, 21, 19, 988, 989, + 25, 21, 21, 22, 436, 25, 71, 25, 26, 441, + 28, 21, 32, 33, 446, 25, 448, 898, 899, 900, + 409, 21, 679, 18, 681, 25, 21, 45, 18, 91, + 1020, 21, 940, 465, 21, 692, 21, 469, 25, 947, + 25, 1031, 699, 1033, 1034, 702, 703, 21, 1153, 21, + 115, 25, 1042, 25, 1044, 1045, 650, 651, 187, 188, + 189, 24, 1031, 192, 193, 143, 21, 19, 21, 663, + 25, 1061, 25, 10, 32, 33, 1066, 1066, 156, 157, + 158, 159, 160, 161, 1074, 163, 164, 19, 34, 1079, + 1079, 187, 188, 189, 1084, 1202, 192, 193, 553, 19, + 21, 1069, 983, 1071, 25, 24, 1079, 21, 91, 1216, + 704, 25, 34, 35, 36, 1105, 1106, 1107, 1108, 27, + 1110, 1111, 187, 188, 189, 25, 191, 113, 114, 1119, + 1237, 1121, 22, 21, 1124, 24, 21, 26, 1128, 28, + 1130, 1131, 18, 1133, 25, 25, 1139, 21, 25, 1139, + 11, 10, 11, 12, 24, 1063, 45, 24, 1066, 48, + 49, 593, 27, 1153, 553, 822, 24, 20, 825, 25, + 827, 1079, 23, 830, 1082, 19, 608, 834, 20, 24, + 1088, 19, 27, 1091, 1092, 1175, 1176, 1177, 1178, 34, + 52, 53, 54, 1183, 131, 627, 23, 854, 27, 24, + 21, 21, 5, 25, 19, 862, 22, 24, 20, 10, + 11, 12, 25, 1203, 1203, 20, 153, 25, 155, 73, + 27, 27, 21, 655, 18, 657, 1134, 24, 21, 25, + 27, 1139, 24, 1141, 1142, 25, 21, 34, 1228, 22, + 25, 187, 188, 189, 25, 1153, 192, 193, 194, 34, + 35, 36, 25, 29, 40, 39, 56, 689, 25, 188, + 91, 91, 199, 91, 25, 91, 25, 91, 18, 22, + 207, 1179, 91, 25, 211, 24, 20, 214, 25, 18, + 937, 21, 25, 18, 191, 222, 40, 20, 18, 27, + 21, 1199, 1200, 18, 23, 1203, 155, 24, 1206, 193, + 91, 22, 22, 21, 21, 737, 243, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 22, 20, 20, 10, 11, 12, 91, + 27, 988, 989, 25, 25, 195, 10, 11, 12, 40, + 199, 27, 187, 188, 189, 25, 191, 18, 207, 27, + 20, 20, 211, 25, 155, 214, 0, 435, 295, 0, + 792, 793, 88, 222, 315, 1124, 932, 1228, 227, 1196, + 229, 1032, 1023, 10, 11, 12, 454, 690, 1096, 1175, + 1061, 882, 822, 242, 243, 322, 323, 324, 325, 831, + 187, 188, 189, 797, 191, 578, 1203, 681, 199, 702, + 679, 854, 300, 12, 836, 342, 207, 129, 242, 1066, + 211, 351, 490, 214, 1159, 505, 353, 1074, 409, 706, + 23, 222, 1079, 501, 860, 715, 227, 1084, 229, 1020, + 859, -1, -1, 370, -1, -1, -1, -1, -1, -1, + -1, 242, 243, -1, -1, -1, -1, -1, -1, 1106, + 1107, -1, -1, -1, 345, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 543, -1, 545, -1, 547, + 548, 155, 409, 1130, 1131, -1, -1, -1, 369, -1, + 417, 155, 1139, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, -1, -1, 1153, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 940, -1, + -1, -1, -1, -1, 405, 199, -1, 595, 155, 1176, + 1177, -1, -1, 207, -1, 199, -1, 211, -1, 607, + 214, -1, -1, 207, -1, -1, 968, 211, 222, -1, + 214, -1, -1, 227, -1, 229, 1203, -1, 222, -1, + 409, -1, -1, 227, -1, 229, -1, -1, 242, 243, + 23, -1, 199, -1, -1, -1, -1, -1, 242, 243, + 207, 430, 431, -1, 211, -1, 654, 214, -1, -1, + -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, + 227, -1, 229, -1, -1, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 242, 243, 544, 409, -1, + 19, 20, -1, -1, -1, 24, 553, 26, -1, 28, + 29, 30, 31, 32, 33, 34, -1, -1, -1, 430, + 431, -1, 1064, -1, -1, -1, -1, 715, 47, 48, + 49, -1, -1, -1, -1, -1, -1, -1, 726, 727, + 728, 729, 730, 731, 732, 733, -1, -1, -1, 10, + 11, 12, 71, 122, 123, 124, 125, -1, 127, -1, + -1, -1, -1, 132, 133, -1, -1, 136, 137, -1, + 139, 140, 141, 142, -1, -1, 623, -1, -1, -1, + 73, 74, 75, 76, 553, 154, 155, 80, 81, 82, + 83, 84, 85, 86, -1, -1, 115, 644, -1, 646, + -1, 1143, -1, -1, -1, 652, -1, -1, -1, 656, + -1, 180, -1, -1, -1, 409, -1, -1, -1, -1, + -1, 190, -1, -1, 625, 409, -1, 815, -1, -1, + -1, -1, -1, -1, -1, 636, 430, 431, 826, -1, + -1, -1, 553, -1, -1, -1, 430, 431, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 198, 464, -1, -1, -1, 468, - -1, -1, 206, -1, -1, -1, 210, 1065, 489, 213, - -1, -1, -1, -1, -1, 1073, -1, 221, -1, 500, - 1078, 408, 226, -1, 228, 1083, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 241, 242, -1, - 154, -1, 429, 430, -1, -1, -1, 1105, 1106, -1, + -1, -1, 409, -1, -1, -1, -1, 714, 187, 188, + 189, -1, 191, 192, 193, -1, -1, -1, 725, 867, + -1, -1, -1, 430, 431, -1, -1, -1, -1, -1, + -1, 692, -1, 1235, 155, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 706, -1, -1, -1, -1, + 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, + 908, 909, 910, 911, 912, 913, 914, -1, 916, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 199, -1, + -1, -1, -1, -1, -1, -1, 207, -1, -1, -1, + 211, -1, -1, 214, -1, -1, -1, -1, -1, 553, + -1, 222, -1, -1, -1, -1, 227, -1, 229, 553, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 542, -1, 544, -1, 546, 547, 130, 10, 11, - 12, 1129, 1130, -1, -1, -1, -1, -1, -1, -1, - 1138, -1, -1, -1, 198, -1, -1, -1, -1, 152, - -1, 154, 206, -1, 1152, -1, 210, -1, -1, 213, - -1, -1, -1, -1, -1, -1, -1, 221, -1, -1, - -1, -1, 226, 594, 228, -1, -1, 1175, 1176, -1, - -1, -1, -1, 592, -1, 606, -1, 241, 242, -1, - -1, -1, -1, -1, -1, 198, -1, -1, 607, -1, - -1, 408, -1, 206, 1202, -1, -1, 210, -1, -1, - 213, -1, -1, -1, -1, -1, -1, 626, 221, -1, - 344, -1, 429, 430, -1, 552, -1, -1, -1, -1, - -1, -1, 653, -1, -1, -1, -1, -1, -1, 242, - -1, -1, -1, -1, 368, 654, -1, 656, -1, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - -1, -1, -1, -1, 408, -1, -1, -1, -1, -1, - -1, -1, 154, -1, -1, -1, -1, -1, -1, 688, - 404, -1, -1, -1, -1, 429, 430, -1, -1, -1, - -1, 294, -1, 714, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 725, 726, 727, 728, 729, 730, - 731, 732, -1, -1, -1, -1, 198, -1, 321, 322, - 323, 324, -1, -1, 206, -1, -1, 736, 210, -1, - -1, 213, -1, -1, -1, -1, -1, -1, 341, 221, - -1, -1, -1, -1, 226, 552, 228, -1, -1, 352, - -1, -1, -1, -1, 408, -1, -1, -1, -1, 241, - 242, -1, -1, -1, -1, -1, 369, -1, -1, -1, - -1, -1, -1, -1, -1, 429, 430, -1, -1, -1, - -1, -1, 791, 792, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 814, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 825, 408, -1, -1, 552, -1, - -1, -1, -1, 416, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 1, -1, -1, 835, -1, 6, 7, - 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, -1, -1, 866, 24, 25, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, 42, 43, -1, -1, -1, 47, - 48, 49, -1, -1, -1, -1, 897, 898, 899, 900, - 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, - 911, 912, 913, 71, 915, -1, -1, -1, 552, -1, - 624, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 635, -1, -1, -1, -1, -1, 95, 96, 97, - 98, 99, 100, 101, -1, -1, 408, -1, -1, -1, - 939, -1, 110, -1, -1, -1, -1, 115, -1, -1, - 543, -1, -1, -1, -1, -1, -1, 429, 430, 552, - -1, -1, -1, -1, -1, -1, -1, -1, 967, 19, - 20, 982, -1, -1, 24, -1, 26, 691, 28, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, - -1, 705, -1, -1, -1, -1, -1, 47, 48, 49, - -1, -1, -1, -1, -1, -1, -1, -1, 1019, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 186, 187, - 188, 71, 190, 191, 192, -1, -1, -1, -1, 622, + -1, 242, 243, -1, -1, -1, -1, 19, -1, -1, + -1, -1, 24, -1, 26, 983, 28, 29, 30, 31, + 32, 33, 34, -1, -1, -1, 553, -1, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, -1, -1, + -1, -1, -1, -1, 825, -1, -1, -1, -1, 830, + -1, -1, 1020, 834, -1, -1, 883, -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 860, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 643, -1, 645, -1, -1, -1, -1, -1, 651, -1, - -1, -1, 655, -1, 1063, 115, -1, 122, 123, 124, - 125, -1, 127, -1, -1, -1, -1, 132, 133, -1, - 552, 136, 137, -1, 139, 140, 141, 142, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 154, - 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 824, -1, -1, -1, -1, 829, -1, -1, -1, 833, - 713, -1, -1, -1, 179, -1, -1, -1, -1, -1, - -1, 724, -1, -1, 189, -1, 186, 187, 188, -1, - 190, 191, 192, 1142, -1, 859, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 880, 881, -1, -1, - -1, -1, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, -1, -1, -1, -1, 6, 7, 8, - 1201, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, -1, -1, 1215, 24, -1, -1, -1, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, 936, -1, -1, 1236, -1, 1, 47, 48, - 49, -1, 6, 7, 8, 1234, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, -1, -1, -1, -1, - 24, -1, 71, -1, -1, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, - -1, -1, -1, 47, 48, 49, -1, 96, 97, 98, - 99, 100, 101, -1, -1, -1, -1, -1, -1, 882, - -1, 110, -1, -1, -1, -1, 115, 71, -1, -1, - 19, -1, -1, -1, -1, 24, -1, 26, -1, 28, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, 95, 96, 97, 98, 99, 100, 101, 47, 48, - 49, -1, -1, -1, -1, -1, 110, -1, -1, -1, - -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 71, -1, -1, -1, -1, -1, -1, 1073, - -1, -1, -1, 0, 1, -1, -1, 186, 187, 188, - -1, 190, 191, 192, -1, -1, -1, -1, 971, -1, - -1, 18, -1, -1, -1, -1, -1, 24, -1, -1, - -1, -1, -1, -1, -1, -1, 115, 34, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, 46, - -1, -1, 186, 187, 188, -1, 190, 191, 192, -1, - -1, -1, -1, -1, 1017, -1, -1, -1, -1, -1, - -1, 68, 69, 70, -1, 72, -1, -1, -1, -1, - 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, 93, 94, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 186, 187, 188, - -1, 190, 191, 192, 111, 112, 113, 114, -1, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 1082, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 0, 1, -1, -1, -1, -1, 186, - 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, + 881, 882, -1, 115, -1, -1, 887, 888, 889, 890, + 891, 892, 893, 894, 895, 896, 897, 18, -1, -1, + -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 972, 47, 48, 49, -1, + -1, -1, -1, -1, -1, -1, 937, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 409, -1, + 71, -1, -1, -1, -1, 187, 188, 189, -1, 191, + 192, 193, -1, -1, -1, -1, -1, -1, -1, 430, + 431, 1018, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 0, 1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 115, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, 24, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 44, -1, 46, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1202, -1, -1, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 44, 1216, 46, + -1, -1, -1, -1, -1, -1, 1083, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1237, -1, 68, 69, 70, -1, 72, -1, -1, -1, -1, - 77, 78, 79, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, 93, 94, -1, -1, + 77, 78, 79, -1, -1, -1, 187, 188, 189, -1, + 191, -1, -1, 1074, -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 111, 112, 113, 114, -1, 116, + -1, -1, 553, -1, 111, 112, 113, 114, -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, -1, -1, -1, -1, -1, -1, 186, - 187, 188, 189, 1, 191, 192, 193, -1, 6, 7, - 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, - 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, + 177, 178, 179, 180, 0, 1, -1, -1, -1, -1, + 187, 188, 189, 190, -1, 192, 193, 194, -1, -1, + -1, -1, 18, -1, -1, -1, -1, -1, 24, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 44, -1, + 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, + -1, -1, 68, 69, 70, -1, 72, -1, -1, -1, + -1, 77, 78, 79, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 92, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, - 98, 99, 100, 101, -1, -1, -1, -1, -1, -1, - -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, -1, -1, -1, -1, -1, -1, 186, 187, - 188, 189, 190, 191, 192, 193, 1, -1, -1, -1, - -1, 6, 7, 8, -1, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, - -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, - -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 111, 112, 113, 114, -1, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, -1, -1, -1, -1, -1, + -1, 187, 188, 189, 190, 1, 192, 193, 194, -1, + 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, + -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, + 46, 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 68, 69, 70, 71, -1, -1, -1, + -1, -1, 68, 69, 70, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 96, 97, 98, 99, 100, 101, -1, -1, -1, - -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, -1, -1, -1, -1, -1, - -1, 186, 187, 188, 189, 190, 191, 192, 193, 1, - -1, -1, -1, -1, 6, 7, 8, -1, -1, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, + 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, + -1, -1, -1, -1, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, -1, -1, -1, -1, -1, + -1, 187, 188, 189, 190, 191, 192, 193, 194, 1, + -1, -1, -1, -1, 6, 7, 8, -1, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, 48, 49, -1, -1, @@ -2434,106 +2371,121 @@ static const short yycheck[] = 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, -1, -1, - -1, -1, -1, -1, 186, 187, 188, 189, 190, 191, - 192, 193, 1, -1, -1, -1, -1, 6, 7, 8, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, -1, 26, -1, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, -1, 45, -1, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, -1, - -1, -1, 71, -1, -1, -1, -1, -1, -1, -1, + 172, 173, 174, 175, 176, 177, 178, 179, 180, -1, + -1, -1, -1, -1, -1, 187, 188, 189, 190, 191, + 192, 193, 194, 1, -1, -1, -1, -1, 6, 7, + 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, + 48, 49, -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, 96, 97, 98, + 68, 69, 70, 71, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, + 98, 99, 100, 101, -1, -1, -1, -1, -1, -1, + -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, -1, -1, -1, -1, -1, -1, 187, + 188, 189, 190, 191, 192, 193, 194, 1, -1, -1, + -1, -1, 6, 7, 8, -1, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, -1, 26, -1, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + -1, 45, -1, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, -1, -1, -1, 71, -1, -1, + -1, -1, -1, -1, -1, 19, 20, -1, -1, -1, + 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, + 34, -1, 96, 97, 98, 99, 100, 101, -1, -1, + -1, -1, 1, 47, 48, 49, 110, 6, 7, 8, + -1, 115, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, -1, -1, -1, 24, 25, 71, -1, -1, + 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, + -1, -1, -1, 42, 43, -1, -1, -1, 47, 48, + 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 115, 71, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 187, 188, 189, -1, 191, 192, 193, + -1, -1, -1, -1, -1, -1, 95, 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, 1, -1, -1, 110, -1, 6, 7, 8, 115, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, - 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, - 43, -1, -1, 1, 47, 48, 49, -1, 6, 7, - 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, -1, -1, -1, 24, -1, 71, -1, - -1, 29, 30, 31, 32, 33, 34, 186, 187, 188, - -1, 190, 191, 192, 42, 43, -1, -1, -1, 47, - 48, 49, 95, 96, 97, 98, 99, 100, 101, -1, - -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, - -1, -1, 115, 71, -1, -1, -1, -1, -1, -1, + 33, 34, -1, 187, 188, 189, -1, 191, -1, 42, + 43, -1, -1, -1, 47, 48, 49, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 187, 188, + 189, -1, 191, 192, 193, -1, -1, -1, -1, -1, + -1, -1, 95, 96, 97, 98, 99, 100, 101, -1, + -1, -1, -1, -1, 1, -1, -1, 110, -1, 6, + 7, 8, 115, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, + -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, 42, 43, -1, -1, -1, + 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 95, 96, 97, - 98, 99, 100, 101, -1, -1, -1, -1, -1, 1, - -1, -1, 110, -1, 6, 7, 8, 115, 10, 11, + -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, + -1, -1, 19, -1, 187, 188, 189, 24, 191, 192, + 193, -1, 29, 30, 31, 32, 33, 34, 95, 96, + 97, 98, 99, 100, 101, -1, -1, -1, -1, 1, + 47, 48, 49, 110, 6, 7, 8, -1, 115, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, - -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, - 32, 33, 34, 186, 187, 188, -1, 190, 191, 192, - 42, 43, -1, -1, 1, 47, 48, 49, -1, 6, - 7, 8, -1, -1, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, -1, -1, -1, 24, -1, 71, - -1, -1, 29, 30, 31, 32, 33, 34, 186, 187, - 188, -1, 190, 191, 192, 42, 43, -1, -1, -1, - 47, 48, 49, -1, 96, 97, 98, 99, 100, 101, - -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, - -1, -1, -1, 115, 71, -1, -1, -1, -1, -1, + -1, -1, 24, -1, 71, -1, -1, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + 42, 43, -1, -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, - 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, - 1, -1, -1, 110, -1, 6, 7, 8, 115, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, -1, - -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, - 31, 32, 33, 34, 186, 187, 188, -1, 190, 191, - 192, 42, 43, -1, -1, -1, 47, 48, 49, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 115, 71, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, + -1, -1, -1, 95, 96, 97, 98, 99, 100, 101, + -1, -1, -1, -1, -1, 1, -1, -1, 110, -1, + 6, 7, 8, 115, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, + -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, + 187, 188, 189, -1, 191, -1, 42, 43, -1, -1, + -1, 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, + -1, -1, -1, 19, -1, 187, 188, 189, 24, 191, + 192, 193, -1, 29, 30, 31, 32, 33, 34, -1, + 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, + 1, 47, 48, 49, 110, 6, 7, 8, -1, 115, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + -1, -1, -1, 24, -1, 71, -1, -1, 29, 30, + 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, + -1, 42, 43, -1, -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 71, -1, -1, -1, -1, -1, -1, -1, -1, 186, - 187, 188, -1, 190, 191, 192, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, 96, 97, 98, 99, 100, - 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, + 101, -1, -1, -1, -1, -1, 1, -1, -1, 110, -1, 6, 7, 8, 115, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, + 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, - -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, - -1, 46, 47, 48, 49, -1, -1, -1, -1, -1, + -1, 187, 188, 189, -1, 191, -1, 42, 43, -1, + -1, -1, 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 71, 72, -1, -1, - -1, -1, -1, -1, -1, 186, 187, 188, -1, 190, - 191, 192, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 187, 188, 189, -1, + 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, 98, 99, 100, 101, -1, -1, -1, - -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, -1, -1, -1, -1, -1, - -1, 186, 187, 188, 189, 190, 191, 192, 193, 6, - 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, - -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, - -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, - 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 71, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, - 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, - -1, -1, -1, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, -1, -1, -1, -1, -1, -1, 186, - 187, 188, 189, 190, 191, 192, 193, 6, 7, 8, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, + -1, -1, -1, -1, -1, 110, -1, 6, 7, 8, + 115, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, @@ -2543,16 +2495,69 @@ static const short yycheck[] = 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, -1, -1, -1, -1, -1, -1, 186, 187, 188, - 189, 190, 191, 192, 193, 6, 7, 8, -1, 10, + 179, 180, -1, -1, -1, -1, -1, -1, 187, 188, + 189, 190, 191, 192, 193, 194, 6, 7, 8, -1, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, + 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, + -1, -1, 42, 43, 44, -1, 46, 47, 48, 49, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 96, 97, 98, 99, + 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, -1, -1, -1, -1, -1, -1, 187, 188, 189, + 190, 191, 192, 193, 194, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 47, 48, 49, -1, + -1, 42, 43, 44, -1, 46, 47, 48, 49, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 96, 97, 98, 99, 100, + 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + -1, -1, -1, -1, -1, -1, 187, 188, 189, 190, + 191, 192, 193, 194, 6, 7, 8, -1, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, + -1, -1, 24, -1, -1, -1, -1, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, -1, 6, + 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, -1, -1, -1, 24, -1, 71, + -1, -1, 29, 30, 31, 32, 33, 34, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 47, 48, 49, -1, 96, 97, 98, 99, 100, 101, + -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, + -1, -1, -1, 115, 71, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, + 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, 6, 7, 8, 115, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + -1, -1, -1, 24, -1, -1, -1, -1, 29, 30, + 31, 32, 33, 34, -1, 187, 188, 189, -1, 191, + 192, 193, -1, -1, -1, -1, 47, 48, 49, -1, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, 71, -1, -1, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, -1, 47, 48, 49, -1, 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, 115, 71, -1, -1, -1, -1, @@ -2562,12 +2567,12 @@ static const short yycheck[] = -1, -1, -1, -1, 110, -1, 6, 7, 8, 115, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, 29, - 30, 31, 32, 33, 34, 186, 187, 188, -1, 190, - 191, 192, -1, -1, -1, -1, -1, 47, 48, 49, + 30, 31, 32, 33, 34, -1, 187, 188, 189, -1, + 191, 192, 193, -1, -1, -1, -1, 47, 48, 49, -1, 6, 7, 8, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, 71, -1, -1, 29, 30, 31, 32, 33, 34, - 186, 187, 188, -1, 190, 191, 192, -1, -1, -1, + -1, 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, -1, 47, 48, 49, -1, 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, 115, 71, -1, -1, -1, @@ -2577,171 +2582,130 @@ static const short yycheck[] = -1, -1, -1, -1, -1, 110, -1, 6, 7, 8, 115, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, - 29, 30, 31, 32, 33, 34, 186, 187, 188, -1, - 190, 191, 192, -1, -1, -1, -1, -1, 47, 48, + 29, 30, 31, 32, 33, 34, -1, 187, 188, 189, + -1, 191, 192, 193, -1, -1, -1, -1, 47, 48, 49, -1, 6, 7, 8, -1, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, -1, -1, -1, + 14, 15, 16, 17, 18, 19, -1, -1, -1, -1, 24, -1, 71, -1, -1, 29, 30, 31, 32, 33, - 34, 186, 187, 188, -1, 190, 191, 192, -1, -1, + 34, -1, 187, 188, 189, -1, 191, 192, 193, -1, -1, -1, -1, 47, 48, 49, -1, 96, 97, 98, 99, 100, 101, -1, -1, -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, 115, 71, -1, -1, - 19, 20, -1, -1, -1, 24, -1, -1, -1, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, -1, 96, 97, 98, 99, 100, 101, 47, 48, - 49, -1, -1, -1, -1, -1, 110, -1, 6, 7, - 8, 115, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 71, -1, -1, -1, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, 186, 187, 188, - -1, 190, 191, 192, -1, -1, -1, -1, -1, 47, - 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 115, -1, -1, -1, - -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, - -1, -1, 186, 187, 188, -1, 190, 191, 192, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 96, 97, - 98, 99, 100, 101, 19, -1, -1, -1, -1, 24, - -1, -1, 110, -1, -1, -1, -1, 115, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, - -1, 46, -1, -1, -1, -1, -1, 186, 187, 188, - -1, 190, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, -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, 186, 187, - 188, -1, 190, 191, 192, -1, 111, 112, 113, 114, - -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 20, -1, -1, -1, -1, - -1, -1, -1, 188, 189, -1, -1, -1, 193, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 44, + -1, -1, 96, 97, 98, 99, 100, 101, 19, -1, + -1, -1, -1, 24, -1, -1, 110, -1, -1, -1, + -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 44, -1, 46, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 187, 188, + 189, -1, 191, 192, 193, -1, -1, -1, -1, -1, + -1, 72, -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, 187, 188, 189, -1, 191, 192, 193, + 111, 112, 113, 114, -1, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 20, -1, -1, -1, -1, -1, -1, -1, 189, 190, + -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, -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, 111, 112, 113, 114, - -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, -1, -1, -1, -1, -1, - 19, -1, -1, 188, 189, 24, -1, -1, 193, -1, - 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, - -1, 19, -1, -1, -1, -1, 24, -1, 47, 48, - 49, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 19, 47, - 48, 49, 71, 24, -1, -1, -1, -1, 29, 30, - 31, 32, 33, 34, -1, -1, -1, -1, -1, 19, - -1, -1, -1, 71, 24, -1, 47, 48, 49, 29, - 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 115, 47, 48, 49, - 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, - -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 115, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 111, 112, 113, 114, -1, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, -1, -1, -1, -1, -1, 19, -1, -1, 189, + 190, 24, -1, -1, 194, -1, 29, 30, 31, 32, + 33, 34, -1, -1, -1, -1, -1, 19, -1, -1, + -1, -1, 24, -1, 47, 48, 49, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 34, 115, -1, 186, 187, 188, - -1, 190, -1, -1, 44, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 186, 187, - 188, -1, 190, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 115, 34, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 44, -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, 186, 187, 188, -1, 190, + -1, -1, -1, -1, 187, 188, 189, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 186, 187, 188, -1, - 190, 111, 112, 113, 114, -1, 116, 117, 118, 119, + -1, -1, -1, -1, -1, 187, 188, 189, -1, 191, + -1, 111, 112, 113, 114, -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - -1, -1, -1, -1, -1, -1, 186, 187, 188, 189, - -1, 191, 192, 193, 24, 25, -1, -1, -1, 29, - 30, 31, 32, 33, 34, 24, -1, -1, 27, -1, - 29, 30, 31, 32, 33, 34, -1, 47, 48, 49, - -1, -1, -1, -1, -1, -1, 24, 25, 47, 48, - 49, 29, 30, 31, 32, 33, 34, 24, -1, -1, - 27, 71, 29, 30, 31, 32, 33, 34, -1, 47, - 48, 49, 71, -1, -1, -1, -1, -1, 24, 25, - 47, 48, 49, 29, 30, 31, 32, 33, 34, -1, - -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, - -1, 47, 48, 49, 71, 115, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 115, -1, -1, -1, - -1, -1, -1, -1, -1, 71, 24, -1, -1, -1, - -1, 29, 30, 31, 32, 33, 34, 115, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 24, 115, 47, + 180, -1, -1, -1, -1, -1, -1, 187, 188, 189, + 190, -1, 192, 193, 194, 24, 25, -1, -1, -1, + 29, 30, 31, 32, 33, 34, 24, -1, -1, 27, + -1, 29, 30, 31, 32, 33, 34, -1, 47, 48, + 49, -1, -1, -1, -1, -1, -1, 24, 25, 47, 48, 49, 29, 30, 31, 32, 33, 34, 24, -1, - -1, -1, -1, 29, 30, 31, 32, 33, 34, 115, - 47, 48, 49, 71, -1, -1, 186, 187, 188, -1, - 190, 47, 48, 49, -1, -1, -1, 186, 187, 188, - 24, 190, -1, -1, 71, 29, 30, 31, 32, 33, - 34, -1, -1, -1, -1, 71, -1, -1, 186, 187, - 188, -1, 190, 47, 48, 49, -1, 115, -1, 186, - 187, 188, -1, 190, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 71, 115, -1, - 186, 187, 188, -1, 190, -1, 24, -1, -1, 115, - -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, - 48, 49, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 115, -1, -1, -1, -1, -1, -1, 186, 187, - 188, -1, 190, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 186, - 187, 188, -1, 190, -1, -1, -1, -1, -1, -1, - 186, 187, 188, -1, 190, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, - -1, -1, -1, -1, 42, 43, 44, -1, -1, -1, - -1, -1, 186, 187, 188, -1, 190, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 27, 71, 29, 30, 31, 32, 33, 34, -1, + 47, 48, 49, 71, -1, -1, -1, -1, -1, 24, + 25, 47, 48, 49, 29, 30, 31, 32, 33, 34, + 24, -1, -1, -1, 71, 29, 30, 31, 32, 33, + 34, -1, 47, 48, 49, 71, 115, -1, -1, -1, + -1, -1, -1, 47, 48, 49, -1, 115, -1, -1, + -1, -1, 24, -1, -1, -1, 71, 29, 30, 31, + 32, 33, 34, -1, -1, -1, -1, 71, 115, -1, + -1, -1, -1, -1, -1, 47, 48, 49, 24, 115, + -1, -1, -1, 29, 30, 31, 32, 33, 34, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, + 115, 47, 48, 49, -1, -1, -1, -1, 187, 188, + 189, 115, 191, -1, -1, -1, -1, -1, -1, 187, + 188, 189, -1, 191, -1, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, 188, 189, 115, 191, -1, -1, -1, -1, -1, + -1, 187, 188, 189, -1, 191, 24, -1, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, -1, 115, + -1, -1, 187, 188, 189, -1, 191, -1, -1, 47, + 48, 49, -1, 187, 188, 189, 24, 191, -1, -1, + -1, 29, 30, 31, 32, 33, 34, -1, -1, -1, + -1, -1, -1, 71, -1, -1, -1, -1, -1, 47, + 48, 49, -1, -1, -1, 187, 188, 189, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 186, 187, - 188, -1, 190, 111, 112, 113, 114, -1, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 44, -1, 46, -1, -1, -1, -1, -1, - 188, 189, -1, -1, -1, 193, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 68, 69, 70, -1, - 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 71, -1, -1, -1, -1, -1, -1, + -1, 187, 188, 189, -1, 191, -1, 115, -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, 111, - 112, 113, 114, -1, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, -1, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 44, -1, - 46, -1, -1, -1, -1, -1, 188, 189, -1, -1, - -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 72, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 115, -1, -1, + -1, -1, -1, -1, -1, 42, 43, 44, -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, 187, + 188, 189, -1, 191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 111, 112, 113, 114, -1, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 44, -1, -1, -1, -1, -1, - 186, 187, 188, 189, -1, -1, -1, 193, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 187, + 188, 189, -1, 191, 111, 112, 113, 114, -1, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, -1, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 44, -1, 46, -1, -1, -1, + -1, -1, 189, 190, -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 69, - 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 70, -1, 72, -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, @@ -2752,37 +2716,51 @@ static const short yycheck[] = 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 44, -1, -1, -1, -1, -1, -1, -1, 188, 189, - -1, -1, -1, 193, -1, -1, -1, -1, -1, -1, + 180, 44, -1, 46, -1, -1, -1, -1, -1, 189, + 190, -1, -1, -1, 194, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, -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, 92, 93, - 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 111, 112, 113, - 114, -1, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 44, -1, 46, -1, - -1, -1, -1, -1, 188, 189, -1, -1, -1, 193, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 72, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 111, 112, + 113, 114, -1, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, -1, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 44, -1, + -1, -1, -1, -1, 187, 188, 189, 190, -1, -1, + -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 68, 69, 70, -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, 111, 112, 113, 114, -1, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, -1, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 44, -1, -1, -1, -1, -1, -1, -1, - 188, 189, -1, -1, -1, 193, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 111, 112, 113, 114, -1, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + -1, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 44, -1, -1, -1, -1, + -1, -1, -1, 189, 190, -1, -1, -1, 194, -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, 92, 93, 94, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 111, 112, 113, 114, -1, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, -1, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 44, -1, 46, -1, -1, -1, -1, -1, + 189, 190, -1, -1, -1, 194, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 72, -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, 111, @@ -2792,9 +2770,22 @@ static const short yycheck[] = 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, -1, -1, - -1, -1, -1, -1, -1, -1, 188, 189, -1, -1, - -1, 193 + 172, 173, 174, 175, 176, 177, 178, 179, 180, 44, + -1, -1, -1, -1, -1, -1, -1, 189, 190, -1, + -1, -1, 194, -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, 111, 112, 113, 114, + -1, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, -1, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, -1, -1, -1, -1, + -1, -1, -1, -1, 189, 190, -1, -1, -1, 194 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ @@ -4615,67 +4606,67 @@ case 346: { yyval.typequal = qual_createAbstract (); ; break;} case 347: -{ yyval.typequal = qual_createConcrete (); ; +{ yyval.typequal = qual_createNumAbstract (); ; break;} case 348: -{ yyval.typequal = qual_createMutable (); ; +{ yyval.typequal = qual_createConcrete (); ; break;} case 349: -{ yyval.typequal = qual_createImmutable (); ; +{ yyval.typequal = qual_createMutable (); ; break;} case 350: -{ yyval.typequal = qual_createRefCounted (); ; +{ yyval.typequal = qual_createImmutable (); ; break;} case 351: -{ yyval.typequal = qual_createRefs (); ; +{ yyval.typequal = qual_createRefCounted (); ; break;} case 352: -{ yyval.typequal = qual_createKillRef (); ; +{ yyval.typequal = qual_createRefs (); ; break;} case 353: -{ yyval.typequal = qual_createRelDef (); ; +{ yyval.typequal = qual_createKillRef (); ; break;} case 354: -{ yyval.typequal = qual_createNewRef (); ; +{ yyval.typequal = qual_createRelDef (); ; break;} case 355: -{ yyval.typequal = qual_createTempRef (); ; +{ yyval.typequal = qual_createNewRef (); ; break;} case 356: -{ yyval.typequal = qual_createShort (); ; +{ yyval.typequal = qual_createTempRef (); ; break;} case 357: -{ yyval.typequal = qual_createLong (); ; +{ yyval.typequal = qual_createShort (); ; break;} case 358: -{ yyval.typequal = qual_createSigned (); ; +{ yyval.typequal = qual_createLong (); ; break;} case 359: -{ yyval.typequal = qual_createUnsigned (); ; +{ yyval.typequal = qual_createSigned (); ; break;} case 360: -{ yyval.typequal = qual_createOut (); ; +{ yyval.typequal = qual_createUnsigned (); ; break;} case 361: -{ yyval.typequal = qual_createIn (); ; +{ yyval.typequal = qual_createOut (); ; break;} case 362: -{ yyval.typequal = qual_createPartial (); ; +{ yyval.typequal = qual_createIn (); ; break;} case 363: -{ yyval.typequal = qual_createSpecial (); ; +{ yyval.typequal = qual_createPartial (); ; break;} case 364: -{ yyval.typequal = qual_createConst (); ; +{ yyval.typequal = qual_createSpecial (); ; break;} case 365: -{ yyval.typequal = qual_createVolatile (); ; +{ yyval.typequal = qual_createConst (); ; break;} case 366: -{ yyval.typequal = qual_createRestrict (); ; +{ yyval.typequal = qual_createVolatile (); ; break;} case 367: -{ yyval.typequal = yyvsp[-1].typequal; ; +{ yyval.typequal = qual_createRestrict (); ; break;} case 368: { yyval.typequal = yyvsp[-1].typequal; ; @@ -4701,242 +4692,245 @@ case 374: case 375: { yyval.typequal = yyvsp[-1].typequal; ; break;} -case 382: -{ yyval.ctyp = ctype_makeAnytype (); ; +case 376: +{ yyval.typequal = yyvsp[-1].typequal; ; break;} case 383: -{ yyval.ctyp = ctype_anyintegral; ; +{ yyval.ctyp = ctype_makeAnytype (); ; break;} case 384: -{ yyval.ctyp = ctype_unsignedintegral; ; +{ yyval.ctyp = ctype_anyintegral; ; break;} case 385: +{ yyval.ctyp = ctype_unsignedintegral; ; + break;} +case 386: { yyval.ctyp = ctype_signedintegral; ; break;} -case 389: +case 390: { yyval.ctyp = ctype_fromQual (yyvsp[-1].typequal); ; break;} -case 390: +case 391: { yyval.qtyp = qtype_resolve (yyvsp[-1].qtyp); ; break;} -case 391: +case 392: { yyval.qtyp = yyvsp[0].qtyp; ; break;} -case 392: +case 393: { yyval.qtyp = qtype_mergeAlt (yyvsp[-3].qtyp, yyvsp[-1].qtyp); ; break;} -case 394: -{ yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ; - break;} case 395: -{ yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; +{ yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ; break;} case 396: { yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; break;} case 397: -{ yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ; +{ yyval.qtyp = qtype_addQual (yyvsp[0].qtyp, yyvsp[-1].typequal); ; break;} case 398: -{ yyval.qtyp = qtype_unknown (); ; +{ yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ; break;} case 399: -{ yyval.qtyp = yyvsp[0].qtyp; ; +{ yyval.qtyp = qtype_unknown (); ; break;} case 400: -{ yyval.conL = constraintList_undefined; ; +{ yyval.qtyp = yyvsp[0].qtyp; ; break;} case 401: -{ sRef_setGlobalScopeSafe (); ; +{ yyval.conL = constraintList_undefined; ; break;} case 402: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 403: -{ ctype ct; ct = declareStruct (yyvsp[-9].cname, yyvsp[-4].flist); context_setGlobalStructInfo(ct, yyvsp[0].conL); yyval.ctyp = ct; ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 404: -{ sRef_setGlobalScopeSafe (); ; +{ ctype ct; ct = declareStruct (yyvsp[-9].cname, yyvsp[-4].flist); context_setGlobalStructInfo(ct, yyvsp[0].conL); yyval.ctyp = ct; ; break;} case 405: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 406: -{ yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 407: -{ yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ; +{ yyval.ctyp = declareUnion (yyvsp[-8].cname, yyvsp[-3].flist); ; break;} case 408: -{ yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ; +{ yyval.ctyp = declareStruct (yyvsp[-3].cname, uentryList_new ()); ; break;} case 409: -{ sRef_setGlobalScopeSafe (); ; +{ yyval.ctyp = declareUnion (yyvsp[-3].cname, uentryList_new ()); ; break;} case 410: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 411: -{ yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 412: -{ sRef_setGlobalScopeSafe (); ; +{ yyval.ctyp = declareUnnamedStruct (yyvsp[-3].flist); ; break;} case 413: -{ sRef_clearGlobalScopeSafe (); ; +{ sRef_setGlobalScopeSafe (); ; break;} case 414: -{ yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ; +{ sRef_clearGlobalScopeSafe (); ; break;} case 415: -{ yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ; +{ yyval.ctyp = declareUnnamedUnion (yyvsp[-3].flist); ; break;} case 416: -{ yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ; +{ yyval.ctyp = ctype_createUnnamedStruct (uentryList_new ()); ; break;} case 417: -{ yyval.ctyp = handleStruct (yyvsp[-1].cname); ; +{ yyval.ctyp = ctype_createUnnamedUnion (uentryList_new ()); ; break;} case 418: -{ yyval.ctyp = handleUnion (yyvsp[-1].cname); ; +{ yyval.ctyp = handleStruct (yyvsp[-1].cname); ; break;} case 419: +{ yyval.ctyp = handleUnion (yyvsp[-1].cname); ; + break;} +case 420: { g_expectingTypeName = FALSE; ; break;} -case 421: +case 422: { yyval.flist = uentryList_undefined; /* bogus! */ ; break;} -case 422: +case 423: { yyval.flist = uentryList_mergeFields (yyvsp[-1].flist, yyvsp[0].flist); ; break;} -case 423: +case 424: { yyval.flist = fixUentryList (yyvsp[-2].ntyplist, yyvsp[-4].qtyp); ; break;} -case 424: +case 425: { yyval.flist = fixUnnamedDecl (yyvsp[-2].qtyp); ; break;} -case 425: +case 426: { yyval.ntyplist = idDeclList_singleton (yyvsp[-1].ntyp); ; break;} -case 426: +case 427: { yyval.ntyplist = idDeclList_add (yyvsp[-3].ntyplist, yyvsp[-1].ntyp); ; break;} -case 427: +case 428: { yyval.ntyp = yyvsp[0].ntyp; ; break;} -case 428: +case 429: { yyval.ntyp = idDecl_undefined; ; break;} -case 429: +case 430: { yyval.ntyp = yyvsp[-3].ntyp; ; break;} -case 430: +case 431: { yyval.ctyp = declareUnnamedEnum (yyvsp[-2].enumnamelist); ; break;} -case 431: +case 432: { context_pushLoc (); ; break;} -case 432: +case 433: { context_popLoc (); yyval.ctyp = declareEnum (yyvsp[-5].cname, yyvsp[-2].enumnamelist); ; break;} -case 433: +case 434: { yyval.ctyp = handleEnum (yyvsp[-1].cname); ; break;} -case 434: +case 435: { yyval.enumnamelist = enumNameList_single (yyvsp[0].cname); ; break;} -case 435: +case 436: { yyval.enumnamelist = enumNameList_push (yyvsp[-2].enumnamelist, yyvsp[0].cname); ; break;} -case 437: +case 438: { uentry ue = uentry_makeEnumConstant (yyvsp[0].cname, ctype_unknown); usymtab_supGlobalEntry (ue); yyval.cname = yyvsp[0].cname; ; break;} -case 438: +case 439: { uentry ue = uentry_makeEnumInitializedConstant (yyvsp[-3].cname, ctype_unknown, yyvsp[0].expr); usymtab_supGlobalEntry (ue); yyval.cname = yyvsp[-3].cname; ; break;} -case 440: +case 441: { yyval.ntyp = idDecl_create (cstring_undefined, qtype_create (yyvsp[0].ctyp)); ; break;} -case 441: +case 442: { qtype qt = qtype_unknown (); qtype_adjustPointers (yyvsp[-1].pointers, qt); yyval.ntyp = idDecl_create (cstring_copy (cscanner_observeLastIdentifier ()), qt); ; break;} -case 442: +case 443: { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ; break;} -case 444: +case 445: { yyval.ntyp = yyvsp[0].ntyp; qtype_adjustPointers (yyvsp[-1].pointers, idDecl_getTyp (yyval.ntyp)); ; break;} -case 445: +case 446: { yyval.entrylist = handleParamTypeList (yyvsp[0].entrylist); ; break;} -case 446: +case 447: { yyval.entrylist = handleParamIdList (yyvsp[0].entrylist); ; break;} -case 447: +case 448: { yyval.typequal = qual_createConst (); ; break;} -case 448: +case 449: { yyval.typequal = qual_createRestrict (); ; break;} -case 449: +case 450: { yyval.typequal = qual_createVolatile (); ; break;} -case 450: +case 451: { yyval.tquallist = qualList_single (yyvsp[0].typequal); ; break;} -case 451: +case 452: { yyval.tquallist = qualList_add (yyvsp[-1].tquallist, yyvsp[0].typequal); ; break;} -case 452: +case 453: { yyval.pointers = pointers_create (yyvsp[0].tok); ; break;} -case 453: +case 454: { yyval.pointers = pointers_createMods (yyvsp[-1].tok, yyvsp[0].tquallist); ; break;} -case 454: +case 455: { yyval.pointers = pointers_extend (pointers_create (yyvsp[-1].tok), yyvsp[0].pointers); ; break;} -case 455: +case 456: { yyval.pointers = pointers_extend (pointers_createMods (yyvsp[-2].tok, yyvsp[-1].tquallist), yyvsp[0].pointers); ; break;} -case 457: +case 458: { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ; break;} -case 458: +case 459: { yyval.entrylist = uentryList_single (uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ; break;} -case 459: +case 460: { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeVariableLoc (yyvsp[0].cname, ctype_int)); ; break;} -case 460: +case 461: { yyval.entrylist = uentryList_single (uentry_makeElipsisMarker ()); ; break;} -case 462: +case 463: { yyval.entrylist = uentryList_add (yyvsp[-2].entrylist, uentry_makeElipsisMarker ()); ; break;} -case 463: +case 464: { storeLoc (); ; break;} -case 464: +case 465: { yyval.entrylist = uentryList_single (yyvsp[0].oentry); ; break;} -case 465: +case 466: { storeLoc (); ; break;} -case 466: +case 467: { yyval.entrylist = uentryList_add (yyvsp[-3].entrylist, yyvsp[0].oentry); ; break;} -case 467: +case 468: { if (isFlipOldStyle ()) { @@ -4949,7 +4943,7 @@ case 467: yyval.oentry = makeCurrentParam (idDecl_fixParamBase (yyvsp[-1].ntyp, yyvsp[-2].qtyp)); ; break;} -case 468: +case 469: { idDecl tparam = idDecl_create (yyvsp[0].cname, qtype_unknown ()); @@ -4964,316 +4958,316 @@ case 468: idDecl_free (tparam); ; break;} -case 470: +case 471: { yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ; break;} -case 471: +case 472: { yyval.ctyp = ctype_adjustPointers (yyvsp[0].pointers, ctype_unknown); ; break;} -case 473: +case 474: { yyval.ctyp = ctype_adjustPointers (yyvsp[-1].pointers, yyvsp[0].ctyp); ; break;} -case 474: +case 475: { yyval.ctyp = ctype_unknown; ; break;} -case 476: +case 477: { yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ; break;} -case 477: +case 478: { yyval.ctyp = ctype_makeArray (ctype_unknown); ; break;} -case 478: +case 479: { yyval.ctyp = ctype_makeFixedArray (ctype_unknown, exprNode_getLongValue (yyvsp[-1].expr)); ; break;} -case 479: +case 480: { yyval.ctyp = ctype_makeInnerArray (yyvsp[-2].ctyp); ; break;} -case 480: +case 481: { yyval.ctyp = ctype_makeInnerFixedArray (yyvsp[-3].ctyp, exprNode_getLongValue (yyvsp[-1].expr)); ; break;} -case 481: +case 482: { yyval.ctyp = ctype_makeFunction (ctype_unknown, uentryList_makeMissingParams ()); ; break;} -case 482: +case 483: { yyval.ctyp = ctype_makeParamsFunction (ctype_unknown, yyvsp[-1].entrylist); ; break;} -case 483: +case 484: { yyval.ctyp = ctype_makeFunction (yyvsp[-3].ctyp, uentryList_makeMissingParams ()); ; break;} -case 484: +case 485: { yyval.ctyp = ctype_makeParamsFunction (yyvsp[-4].ctyp, yyvsp[-1].entrylist); ; break;} -case 494: +case 495: { yyval.expr = yyvsp[0].expr; ; break;} -case 497: +case 498: { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 498: +case 499: { yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 499: +case 500: { yyval.expr = exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr); ; break;} -case 500: +case 501: { yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} -case 501: +case 502: { yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 502: +case 503: { context_setProtectVars (); ; break;} -case 503: +case 504: { context_sizeofReleaseVars (); ; break;} -case 504: +case 505: { yyval.expr = exprNode_forPred (yyvsp[-7].expr, yyvsp[-5].expr, yyvsp[-2].expr); context_enterForClause (yyvsp[-5].expr); ; break;} -case 505: +case 506: { setProcessingIterVars (yyvsp[-2].entry); ; break;} -case 506: +case 507: { yyval.expr = exprNode_iterStart (yyvsp[-5].entry, yyvsp[-1].exprlist); ; break;} -case 507: +case 508: { yyval.expr = exprNode_createId (yyvsp[0].entry); ; break;} -case 511: +case 512: { yyval.expr = yyvsp[-1].expr; DPRINTF (("def stmt: %s", exprNode_unparse (yyval.expr))); ; break;} -case 519: +case 520: { yyval.expr = yyvsp[-1].expr; ; break;} -case 520: +case 521: { yyval.expr = exprNode_makeError (); ; break;} -case 521: +case 522: { exprNode_checkIfPred (yyvsp[0].expr); ; break;} -case 522: +case 523: { /* don't: context_exitTrueClause ($1, $2); */ yyval.expr = exprNode_if (yyvsp[-2].expr, yyvsp[0].expr); ; break;} -case 523: +case 524: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 524: +case 525: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 535: +case 536: { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 537: -{ yyval.expr = exprNode_makeError (); ; - break;} case 538: -{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; +{ yyval.expr = exprNode_makeError (); ; break;} case 539: -{ yyval.expr = exprNode_notReached (yyvsp[0].expr); ; +{ yyval.expr = exprNode_labelMarker (yyvsp[-1].cname); ; break;} case 540: -{ ; ; +{ yyval.expr = exprNode_notReached (yyvsp[0].expr); ; break;} case 541: { ; ; break;} case 542: -{ context_enterCaseClause (yyvsp[0].expr); ; +{ ; ; break;} case 543: -{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; +{ context_enterCaseClause (yyvsp[0].expr); ; break;} case 544: -{ context_enterCaseClause (yyvsp[0].expr); ; +{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, FALSE); ; break;} case 545: -{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; +{ context_enterCaseClause (yyvsp[0].expr); ; break;} case 546: -{ context_enterCaseClause (exprNode_undefined); ; +{ yyval.expr = exprNode_caseMarker (yyvsp[-2].expr, TRUE); ; break;} case 547: -{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; +{ context_enterCaseClause (exprNode_undefined); ; break;} case 548: -{ context_enterCaseClause (exprNode_undefined); ; +{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, FALSE); ; break;} case 549: -{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; +{ context_enterCaseClause (exprNode_undefined); ; break;} case 550: -{ yyval.expr = yyvsp[-1].expr; ; +{ yyval.expr = exprNode_defaultMarker (yyvsp[-2].tok, TRUE); ; break;} case 551: -{ yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; +{ yyval.expr = yyvsp[-1].expr; ; break;} case 552: -{ yyval.expr = yyvsp[-1].expr; ; +{ yyval.expr = yyvsp[0].expr; context_exitInner (yyvsp[0].expr); ; break;} case 553: -{ context_enterInnerContext (); ; +{ yyval.expr = yyvsp[-1].expr; ; break;} case 554: -{ context_exitInnerPlain (); ; +{ context_enterInnerContext (); ; break;} case 555: -{ context_enterStructInnerContext (); ; +{ context_exitInnerPlain (); ; break;} case 556: -{ context_exitStructInnerContext (); ; +{ context_enterStructInnerContext (); ; break;} case 557: -{ context_exitInnerSafe (); ; +{ context_exitStructInnerContext (); ; break;} case 558: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ context_exitInnerSafe (); ; break;} case 559: -{ yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 560: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_notReached (exprNode_createTok (yyvsp[0].tok)); ; break;} case 561: -{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 562: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} case 563: -{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 564: -{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_notReached (exprNode_updateLocation (yyvsp[-2].expr, lltok_getLoc (yyvsp[0].tok))); ; break;} case 565: +{ yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; + break;} +case 566: { yyval.expr = exprNode_notReached (exprNode_updateLocation (exprNode_concat (yyvsp[-3].expr, yyvsp[-2].expr), lltok_getLoc (yyvsp[-1].tok))); ; break;} -case 566: -{ yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ; - break;} case 567: -{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; +{ yyval.expr = exprNode_makeBlock (yyvsp[0].expr); ; break;} case 568: -{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; +{ yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} case 569: { yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; break;} case 570: +{ yyval.expr = exprNode_updateLocation (yyvsp[-1].expr, lltok_getLoc (yyvsp[0].tok)); ; + break;} +case 571: { yyval.expr = exprNode_updateLocation (exprNode_concat (yyvsp[-2].expr, yyvsp[-1].expr), lltok_getLoc (yyvsp[0].tok)); ; break;} -case 572: +case 573: { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 573: +case 574: { yyval.expr = yyvsp[0].expr; ; break;} -case 574: +case 575: { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 575: +case 576: { yyval.expr = yyvsp[0].expr; ; break;} -case 576: +case 577: { yyval.expr = exprNode_concat (yyvsp[-2].expr, yyvsp[0].expr); ; break;} -case 577: +case 578: { yyval.expr = yyvsp[0].expr; ; break;} -case 578: +case 579: { yyval.expr = yyvsp[-2].expr; ; break;} -case 579: +case 580: { yyval.expr = yyvsp[0].expr; ; break;} -case 580: +case 581: { yyval.expr = exprNode_concat (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 581: +case 582: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 582: +case 583: { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 583: +case 584: { yyval.expr = exprNode_createTok (yyvsp[0].tok); ; break;} -case 584: +case 585: { yyval.expr = exprNode_statement (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 585: +case 586: { yyval.expr = exprNode_checkExpr (yyvsp[0].expr); ; break;} -case 586: +case 587: { exprNode_produceGuards (yyvsp[-1].expr); context_enterTrueClause (yyvsp[-1].expr); exprNode_checkIfPred (yyvsp[-1].expr); yyval.expr = yyvsp[-1].expr; ; break;} -case 587: +case 588: { context_exitTrueClause (yyvsp[-1].expr, yyvsp[0].expr); yyval.expr = exprNode_if (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 588: +case 589: { context_enterFalseClause (yyvsp[-2].expr); ; break;} -case 589: +case 590: { context_exitClause (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); yyval.expr = exprNode_ifelse (yyvsp[-4].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 590: +case 591: { context_enterSwitch (yyvsp[0].expr); ; break;} -case 591: +case 592: { yyval.expr = exprNode_switch (yyvsp[-3].expr, yyvsp[0].expr); ; break;} -case 592: +case 593: { yyval.expr = exprNode_whilePred (yyvsp[-1].expr); context_enterWhileClause (yyvsp[-1].expr); ; break;} -case 593: +case 594: { yyval.expr = exprNode_whilePred(yyvsp[-1].expr); ; break;} -case 594: +case 595: { context_enterIterClause (); ; break;} -case 595: +case 596: { setProcessingIterVars (yyvsp[-3].entry); ; break;} -case 596: +case 597: { yyval.expr = exprNode_iter (yyvsp[-9].entry, yyvsp[-4].exprlist, yyvsp[-2].expr, yyvsp[-1].entry); ; break;} -case 597: +case 598: { yyval.exprlist = exprNodeList_singleton (yyvsp[0].expr); ; break;} -case 598: +case 599: { nextIterParam (); ; break;} -case 599: +case 600: { yyval.exprlist = exprNodeList_push (yyvsp[-3].exprlist, yyvsp[0].expr); ; break;} -case 600: +case 601: { yyval.expr = exprNode_iterExpr (yyvsp[0].expr); ; break;} -case 601: +case 602: { yyval.expr = exprNode_iterId (yyvsp[0].entry); ; break;} -case 602: +case 603: { uentry ue = coerceIterId (yyvsp[0].cname); if (uentry_isValid (ue)) @@ -5286,41 +5280,38 @@ case 602: } ; break;} -case 603: +case 604: { yyval.expr = exprNode_iterNewId (yyvsp[0].cname); ; break;} -case 605: +case 606: { yyval.expr = exprNode_combineLiterals (yyvsp[-1].expr, yyvsp[0].expr); ; break;} -case 607: +case 608: { yyval.expr = exprNode_addParens (yyvsp[-2].tok, yyvsp[-1].expr); ; break;} -case 609: -{ yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; - break;} case 610: -{ yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; +{ yyval.expr = exprNode_arrayFetch (yyvsp[-3].expr, yyvsp[-1].expr); ; break;} case 611: -{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ; +{ yyval.expr = exprNode_functionCall (yyvsp[-2].expr, exprNodeList_new ()); ; break;} case 612: -{ yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; +{ yyval.expr = exprNode_functionCall (yyvsp[-3].expr, yyvsp[-1].exprlist); ; break;} case 613: -{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; +{ yyval.expr = exprNode_vaArg (yyvsp[-5].tok, yyvsp[-3].expr, yyvsp[-1].qtyp); ; break;} case 614: -{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; +{ yyval.expr = exprNode_fieldAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; break;} case 615: -{ yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; +{ yyval.expr = exprNode_arrowAccess (yyvsp[-4].expr, yyvsp[-2].tok, yyvsp[-1].cname); ; break;} case 616: { yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} -case 618: -{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; +case 617: +{ yyval.expr = exprNode_postOp (yyvsp[-1].expr, yyvsp[0].tok); ; break;} case 619: { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; @@ -5344,33 +5335,33 @@ case 625: { yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 626: +{ yyval.expr = exprNode_preOp (yyvsp[0].expr, yyvsp[-1].tok); ; + break;} +case 627: { yyval.expr = yyvsp[0].expr; ; break;} -case 628: +case 629: { yyval.expr = exprNode_cast (yyvsp[-3].tok, yyvsp[0].expr, yyvsp[-2].qtyp); ; break;} -case 630: -{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; - break;} case 631: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 632: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 634: +case 633: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 635: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 637: +case 636: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 638: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 640: +case 639: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 641: @@ -5382,38 +5373,38 @@ case 642: case 643: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 645: +case 644: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 646: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 648: +case 647: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 650: +case 649: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 652: +case 651: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 654: +case 653: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 656: +case 655: { yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} -case 658: -{ context_enterTrueClause (yyvsp[-1].expr); ; +case 657: +{ yyval.expr = exprNode_op (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 659: -{ context_enterFalseClause (yyvsp[-4].expr); ; +{ context_enterTrueClause (yyvsp[-1].expr); ; break;} case 660: -{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; +{ context_enterFalseClause (yyvsp[-4].expr); ; break;} -case 662: -{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; +case 661: +{ yyval.expr = exprNode_cond (yyvsp[-6].expr, yyvsp[-3].expr, yyvsp[0].expr); ; break;} case 663: { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; @@ -5446,74 +5437,74 @@ case 672: { yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 673: -{ yyval.entry = yyvsp[0].entry; ; +{ yyval.expr = exprNode_assign (yyvsp[-2].expr, yyvsp[0].expr, yyvsp[-1].tok); ; break;} case 674: -{ yyval.entry = uentry_undefined; ; +{ yyval.entry = yyvsp[0].entry; ; break;} case 675: -{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; +{ yyval.entry = uentry_undefined; ; break;} case 676: -{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ context_enterDoWhileClause (); yyval.tok = yyvsp[0].tok; ; break;} case 677: -{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; +{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 678: -{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} case 679: -{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 680: -{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; +{ yyval.expr = exprNode_while (yyvsp[-1].expr, yyvsp[0].expr); context_exitWhileClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 681: -{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; +{ yyval.expr = exprNode_statement (exprNode_doWhile (yyvsp[-5].expr, yyvsp[-2].expr), yyvsp[0].tok); ; break;} case 682: -{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; +{ yyval.expr = exprNode_doWhile (yyvsp[-4].expr, yyvsp[-1].expr); ; break;} case 683: -{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ; +{ yyval.expr = exprNode_for (yyvsp[-1].expr, yyvsp[0].expr); context_exitForClause (yyvsp[-1].expr, yyvsp[0].expr); ; break;} case 684: -{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; +{ yyval.expr = exprNode_goto (yyvsp[-1].cname); ; break;} case 685: -{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; +{ yyval.expr = exprNode_continue (yyvsp[-1].tok, BADTOK); ; break;} case 686: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; +{ yyval.expr = exprNode_continue (yyvsp[-2].tok, QINNERCONTINUE); ; break;} case 687: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, BADTOK); ; break;} case 688: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSWITCHBREAK); ; break;} case 689: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QLOOPBREAK); ; break;} case 690: -{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QINNERBREAK); ; break;} case 691: -{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; +{ yyval.expr = exprNode_break (yyvsp[-1].tok, QSAFEBREAK); ; break;} case 692: +{ yyval.expr = exprNode_nullReturn (yyvsp[-1].tok); ; + break;} +case 693: { yyval.expr = exprNode_return (yyvsp[-1].expr); ; break;} -case 694: +case 695: { ; ; break;} -case 696: +case 697: { ; ; break;} -case 699: -{ yyval.cname = uentry_getName (yyvsp[0].entry); ; - break;} case 700: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} @@ -5521,15 +5512,18 @@ case 701: { yyval.cname = uentry_getName (yyvsp[0].entry); ; break;} case 702: +{ yyval.cname = uentry_getName (yyvsp[0].entry); ; + break;} +case 703: { yyval.cname = yyvsp[0].cname; ; break;} -case 704: +case 705: { yyval.ctyp = ctype_unknown; ; break;} -case 705: +case 706: { yyval.ctyp = exprNode_getType (yyvsp[-1].expr); exprNode_free (yyvsp[-1].expr); ; break;} -case 706: +case 707: { yyval.ctyp = qtype_getType (yyvsp[-1].qtyp); ; break;} } diff --git a/src/cgrammar.y b/src/cgrammar.y index 05f173d..897af93 100644 --- a/src/cgrammar.y +++ b/src/cgrammar.y @@ -189,7 +189,7 @@ extern void yyerror (char *); %token QRETURNED QEXPOSED QNULL QOBSERVER QISNULL %token QEXITS QMAYEXIT QNEVEREXIT QTRUEEXIT QFALSEEXIT %token QLONG QSIGNED QUNSIGNED QSHORT QUNUSED QSEF QNOTNULL QRELNULL -%token QABSTRACT QCONCRETE QMUTABLE QIMMUTABLE +%token QABSTRACT QNUMABSTRACT QCONCRETE QMUTABLE QIMMUTABLE %token QTRUENULL QFALSENULL QEXTERNAL %token QREFCOUNTED QREFS QNEWREF QTEMPREF QKILLREF QRELDEF %token CGCHAR CBOOL CINT CGFLOAT CDOUBLE CVOID @@ -1327,6 +1327,7 @@ returnQualifier typedefQualifier : QABSTRACT { $$ = qual_createAbstract (); } + | QNUMABSTRACT { $$ = qual_createNumAbstract (); } | QCONCRETE { $$ = qual_createConcrete (); } | QMUTABLE { $$ = qual_createMutable (); } | QIMMUTABLE { $$ = qual_createImmutable (); } diff --git a/src/constraintExpr.c b/src/constraintExpr.c index 69ee98f..aee3bd9 100644 --- a/src/constraintExpr.c +++ b/src/constraintExpr.c @@ -447,14 +447,10 @@ constraintExpr constraintExpr_makeExprNode (exprNode e) size = (int) sRef_getArraySize(s); ret = constraintExpr_makeIntLiteral (size); } - else if ( exprNode_isStringLiteral (t) ) + else if (exprNode_isStringLiteral (t)) { - cstring str; - int size; - - str = multiVal_forceString(exprNode_getValue(t) ); - size = cstring_length (str) + 1; - ret = constraintExpr_makeIntLiteral (size); + cstring str = multiVal_forceString (exprNode_getValue(t)); + ret = constraintExpr_makeIntLiteral (size_toLong (cstring_length (str) + 1)); } else { diff --git a/src/constraintGeneration.c b/src/constraintGeneration.c index e43f9f5..0cc3fb3 100644 --- a/src/constraintGeneration.c +++ b/src/constraintGeneration.c @@ -461,7 +461,7 @@ static exprNode doWhile (/*@returned@*/ exprNode e, /*@dependent@*/ exprNode tes size = sRef_getArraySize(el); DPRINTF((message("%s is a fixed array with size %d", sRef_unparse(el), (int)size))); - con = constraint_makeSRefSetBufferSize (el, (size - 1)); + con = constraint_makeSRefSetBufferSize (el, size_toLong (size - 1)); ret = constraintList_add(ret, con); } else diff --git a/src/context.c b/src/context.c index 0b45538..eed3a05 100644 --- a/src/context.c +++ b/src/context.c @@ -892,6 +892,7 @@ context_resetAllFlags (void) gc.flags[FLG_TYPE] = TRUE; gc.flags[FLG_INCOMPLETETYPE] = TRUE; gc.flags[FLG_ABSTRACT] = TRUE; + gc.flags[FLG_NUMABSTRACT] = TRUE; gc.flags[FLG_ITERBALANCE] = TRUE; gc.flags[FLG_ITERYIELD] = TRUE; gc.flags[FLG_DUPLICATECASES] = TRUE; @@ -1027,7 +1028,7 @@ context_setModeAux (cstring s, bool warn) flagcode modeflags[] = { FLG_ENUMINT, FLG_MACROMATCHNAME, - FLG_STRINGLITNOROOM, + FLG_STRINGLITNOROOM, FLG_STRINGLITNOROOMFINALNULL, FLG_MACROUNDEF, FLG_RELAXQUALS, FLG_USEALLGLOBS, FLG_CHECKSTRICTGLOBALS, @@ -1079,7 +1080,7 @@ context_setModeAux (cstring s, bool warn) FLG_UNKNOWNTRANS, FLG_KEEPTRANS, FLG_IMMEDIATETRANS, - + FLG_NUMABSTRACTCAST, FLG_EXPORTLOCAL, FLG_USERELEASED, FLG_ALIASUNIQUE, FLG_MAYALIASUNIQUE, @@ -1114,6 +1115,7 @@ context_setModeAux (cstring s, bool warn) FLG_CHARINDEX, FLG_ABSTVOIDP, FLG_USEALLGLOBS, FLG_CHARUNSIGNEDCHAR, FLG_PREDBOOLOTHERS, + FLG_NUMABSTRACTLIT, FLG_VARUNUSED, FLG_FUNCUNUSED, FLG_TYPEUNUSED, FLG_CHECKSTRICTGLOBALS, FLG_MACROMATCHNAME, @@ -1139,7 +1141,8 @@ context_setModeAux (cstring s, bool warn) { flagcode modeflags[] = { - FLG_EXPORTLOCAL, FLG_IMPTYPE, + FLG_EXPORTLOCAL, FLG_IMPTYPE, + FLG_NUMABSTRACTCAST, FLG_STATETRANSFER, FLG_STATEMERGE, FLG_CHECKSTRICTGLOBALIAS, FLG_CHECKEDGLOBALIAS, @@ -1235,7 +1238,8 @@ context_setModeAux (cstring s, bool warn) { flagcode modeflags[] = { - FLG_CHECKSTRICTGLOBALIAS, + FLG_CHECKSTRICTGLOBALIAS, + FLG_NUMABSTRACTCAST, FLG_CHECKEDGLOBALIAS, FLG_CHECKMODGLOBALIAS, FLG_UNCHECKEDGLOBALIAS, @@ -2962,7 +2966,7 @@ context_setString (flagcode flag, cstring val) if (cstring_lastChar (tval) != '\"') { - int n = cstring_length (tval) - 1; + int n = size_toInt (cstring_length (tval) - 1); while (isspace ((int) cstring_getChar (tval, size_fromInt (n)))) { diff --git a/src/cpphash.c b/src/cpphash.c index cf98cdf..f43a5dc 100644 --- a/src/cpphash.c +++ b/src/cpphash.c @@ -406,7 +406,7 @@ hashNode cpphash_install (char *name, int len, enum node_type type, int ivalue, char *value, int hash) { hashNode hp; - int i, bucket; + int bucket; char *p; DPRINTF (("Install: %s / %d", name, len)); @@ -427,8 +427,6 @@ hashNode cpphash_install (char *name, int len, enum node_type type, hash = cpphash_hashCode (name, size_fromInt (len), CPP_HASHSIZE); } - i = sizeof (*hp) + len + 1; - hp = (hashNode) dmalloc (sizeof (*hp)); bucket = hash; hp->bucket_hdr = &hashtab[bucket]; diff --git a/src/cpplib.c b/src/cpplib.c index 7abb0d1..9e35a66 100644 --- a/src/cpplib.c +++ b/src/cpplib.c @@ -762,11 +762,17 @@ cppReader_appendIncludeChain (cppReader *pfile, opts->first_bracket_include = first; for (dir = first; ; dir = dir->next) { - int len = cstring_length (dir->fname) + INCLUDE_LEN_FUDGE; + size_t len = cstring_length (dir->fname) + INCLUDE_LEN_FUDGE; + if (len > pfile->max_include_len) - pfile->max_include_len = len; + { + pfile->max_include_len = len; + } + if (dir == last) - break; + { + break; + } } } @@ -843,8 +849,9 @@ cppReader_addIncludeChain (cppReader *pfile, /*@only@*/ struct file_name_list *d if (opts->first_bracket_include == 0) { - int len = cstring_length (dir->fname) + INCLUDE_LEN_FUDGE; + size_t len = cstring_length (dir->fname) + INCLUDE_LEN_FUDGE; opts->first_bracket_include = dir; + if (len > pfile->max_include_len) { pfile->max_include_len = len; @@ -2741,8 +2748,8 @@ compare_defs (DEFINITION *d1, DEFINITION *d2) if (a1 != a2) return TRUE; - if (comp_def_part (first, p1, d1->length - (p1 - d1->expansion), - p2, d2->length - (p2 - d2->expansion), 1)) + if (comp_def_part (first, p1, size_toInt (d1->length - (p1 - d1->expansion)), + p2, size_toInt (d2->length - (p2 - d2->expansion)), 1)) return TRUE; return FALSE; @@ -3234,8 +3241,7 @@ output_line_command (cppReader *pfile, bool conditional, } } - cpplib_reserve (pfile, - size_fromInt (4 * cstring_length (ip->nominal_fname) + 50)); + cpplib_reserve (pfile, 4 * cstring_length (ip->nominal_fname) + 50); { #ifdef OUTPUT_LINE_COMMANDS @@ -3674,7 +3680,7 @@ cpplib_installBuiltinType (/*@observer@*/ char *name, ctype ctyp, if (!usymtab_existsTypeEither (sname)) { uentry ue = uentry_makeDatatype (sname, ctyp, - NO, NO, + NO, qual_createConcrete (), fileloc_createBuiltin ()); llassert (!usymtab_existsEither (sname)); usymtab_addGlobalEntry (ue); @@ -3979,7 +3985,7 @@ cpplib_macroExpand (cppReader *pfile, /*@dependent@*/ hashNode hp) args[i].raw = size_toLong (cpplib_getWritten (pfile)); token = macarg (pfile, rest_args); - args[i].raw_length = cpplib_getWritten (pfile) - args[i].raw; + args[i].raw_length = size_toInt (cpplib_getWritten (pfile) - args[i].raw); args[i].newlines = FALSE; /* FIXME */ } else @@ -4647,8 +4653,8 @@ do_include (cppReader *pfile, struct directive *keyword, /*@=onlytrans@*/ nam[n] = save; - if (n + INCLUDE_LEN_FUDGE > pfile->max_include_len) - pfile->max_include_len = n + INCLUDE_LEN_FUDGE; + if (n + INCLUDE_LEN_FUDGE > size_toInt (pfile->max_include_len)) + pfile->max_include_len = size_fromInt (n + INCLUDE_LEN_FUDGE); } else { @@ -5541,8 +5547,8 @@ do_xifdef (cppReader *pfile, struct directive *keyword, if (start_of_file && !skip) { DPRINTF (("Not skipping!")); - control_macro = (char *) dmalloc (size_fromInt (ident_length + 1)); - memcpy (control_macro, ident, size_fromInt (ident_length + 1)); + control_macro = (char *) dmalloc (ident_length + 1); + memcpy (control_macro, ident, ident_length + 1); } } else @@ -7546,7 +7552,7 @@ void cpplib_initializeReader (cppReader *pfile) /* Must be done after library is struct default_include *p = include_defaults; char *specd_prefix = opts->include_prefix; char *default_prefix = mstring_copy (GCC_INCLUDE_DIR); - int default_len = 0; + size_t default_len = 0; /* Remove the `include' from /usr/local/lib/gcc.../include. */ if (default_prefix != NULL) { @@ -7566,8 +7572,7 @@ void cpplib_initializeReader (cppReader *pfile) /* Must be done after library is /* Does this dir start with the prefix? */ llassert (default_prefix != NULL); - if (!strncmp (cstring_toCharsSafe (p->fname), default_prefix, - size_fromInt (default_len))) + if (!strncmp (cstring_toCharsSafe (p->fname), default_prefix, default_len)) { /* Yes; change prefix and add to search list. */ struct file_name_list *nlist diff --git a/src/cprim.c b/src/cprim.c index 6dd1be1..8f5aa55 100644 --- a/src/cprim.c +++ b/src/cprim.c @@ -469,6 +469,48 @@ bool cprim_isInt (cprim c) || (cprim_isAnyChar (c) && context_msgCharInt ())); } - - - +int cprim_getExpectedBits (cprim c) +{ + /* Any basis to these numbers? Just guesses for now..., check ISO spec */ + switch (c) + { + case CTX_UNKNOWN: + return 0; + case CTX_VOID: + return 0; + case CTX_CHAR: + return 8; + case CTX_UCHAR: + return 8; + case CTX_DOUBLE: + return 64; + case CTX_LDOUBLE: + return 128; + case CTX_FLOAT: + return 32; + case CTX_INT: + return 32; + case CTX_LINT: + return 64; + case CTX_LLINT: + return 128; + case CTX_ULLINT: + return 128; + case CTX_SINT: + return 8; + case CTX_UINT: + return 32; + case CTX_ULINT: + return 64; + case CTX_USINT: + return 8; + case CTX_UNSIGNEDINTEGRAL: + return 64; + case CTX_SIGNEDINTEGRAL: + return 64; + case CTX_ANYINTEGRAL: + return 64; + default: + return 0; + } +} diff --git a/src/cscanner.l b/src/cscanner.l index 4bb02db..e4fbf2d 100644 --- a/src/cscanner.l +++ b/src/cscanner.l @@ -702,6 +702,7 @@ static struct skeyword s_keytable[] = { { "kept", QKEPT } , { "notnull", QNOTNULL } , { "abstract", QABSTRACT } , + { "numabstract", QNUMABSTRACT } , { "concrete", QCONCRETE } , { "mutable", QMUTABLE } , { "immutable", QIMMUTABLE } , diff --git a/src/cstring.c b/src/cstring.c index d867531..e16ae33 100644 --- a/src/cstring.c +++ b/src/cstring.c @@ -828,7 +828,7 @@ cstring_copySegment (cstring s, size_t findex, size_t tindex) llassert (cstring_isDefined (s)); llassert (cstring_length (s) > tindex); - strncpy (res, (s + findex), size_fromInt ((tindex - findex + 1))); + strncpy (res, (s + findex), size_fromInt (size_toInt (tindex - findex) + 1)); return res; } diff --git a/src/cstringList.c b/src/cstringList.c index bdd2e57..da4ec63 100644 --- a/src/cstringList.c +++ b/src/cstringList.c @@ -199,7 +199,7 @@ cstringList_printSpaced (cstringList s, size_t indent, size_t gap, int linelen) } } - numcol = (linelen - indent) / (longest + gap); + numcol = size_toInt ((linelen - indent) / (longest + gap)); if (numcol <= 1) { diff --git a/src/cstringSList.c b/src/cstringSList.c index e9cff1a..9db2406 100644 --- a/src/cstringSList.c +++ b/src/cstringSList.c @@ -165,7 +165,7 @@ cstringSList_printSpaced (cstringSList s, size_t indent, size_t gap, int linelen } } - numcol = (linelen - indent) / (longest + gap); + numcol = size_toInt ((linelen - indent) / (longest + gap)); if (numcol <= 1) { diff --git a/src/ctbase.i b/src/ctbase.i index 5e3d374..893738a 100644 --- a/src/ctbase.i +++ b/src/ctbase.i @@ -33,6 +33,10 @@ abst_typedef /*@null@*/ struct s_ctbase *ctbase; +/*@function static bool ctuid_isAnyUserType (sef ctuid p_cid) @*/ +# define ctuid_isAnyUserType(cid) \ + ((cid) == CT_ABST || (cid) == CT_USER || (cid) == CT_NUMABST) + /*@private@*/ typedef struct { ctkind kind; ctbase ctbase; @@ -58,6 +62,7 @@ extern bool ctentry_isBogus (/*@sef@*/ ctentry p_c) /*@*/; static cttable cttab = { 0, 0, NULL }; static /*@notnull@*/ /*@only@*/ ctbase ctbase_createAbstract (typeId p_u); +static /*@notnull@*/ /*@only@*/ ctbase ctbase_createNumAbstract (typeId p_u); static /*@observer@*/ cstring ctentry_doUnparse (ctentry p_c) /*@modifies p_c@*/; static /*@only@*/ ctentry ctentry_make (ctkind p_ctk, /*@keep@*/ ctbase p_c, ctype p_base, @@ -399,7 +404,7 @@ ctbase_typeBaseUid (ctbase c) { return ctbase_typeBaseUid (ctype_getCtbase (c->contents.base)); } - else if (ct == CT_USER || ct == CT_ABST) + else if (ct == CT_USER || ct == CT_ABST || ct == CT_NUMABST) { return c->contents.tid; } @@ -434,7 +439,7 @@ ctbase_isBaseUA (ctbase c) return ctbase_isBaseUA (ctype_getCtbase (c->contents.farray->base)); } else - return (ct == CT_USER || ct == CT_ABST); + return (ct == CT_USER || ct == CT_ABST || ct == CT_NUMABST); } return FALSE; } @@ -476,8 +481,8 @@ ctbase_unparse (ctbase c) case CT_PRIM: return (cprim_unparse (c->contents.prim)); case CT_USER: - return (usymtab_getTypeEntryName (c->contents.tid)); case CT_ABST: + case CT_NUMABST: return (usymtab_getTypeEntryName (c->contents.tid)); case CT_EXPFCN: return (message ("", c->contents.base)); @@ -593,8 +598,8 @@ static /*@only@*/ cstring enumNameList_unparse (c->contents.cenum->members))); } case CT_USER: - return (usymtab_getTypeEntryName (c->contents.tid)); case CT_ABST: + case CT_NUMABST: return (usymtab_getTypeEntryName (c->contents.tid)); case CT_EXPFCN: return (message ("", c->contents.base)); @@ -653,6 +658,8 @@ ctbase_unparseNotypes (ctbase c) return (message ("uT#%d", c->contents.tid)); case CT_ABST: return (message ("aT#%d", c->contents.tid)); + case CT_NUMABST: + return (message ("nT#%d", c->contents.tid)); case CT_EXPFCN: return (message ("", ctbase_unparseNotypes (ctype_getCtbase (c->contents.base)))); case CT_PTR: @@ -702,6 +709,7 @@ ctbase_unparseDeclaration (ctbase c, /*@only@*/ cstring name) /*@*/ return (message ("%q %q", cprim_unparse (c->contents.prim), name)); case CT_USER: case CT_ABST: + case CT_NUMABST: return (message ("%q %q", usymtab_getTypeEntryName (c->contents.tid), name)); case CT_EXPFCN: llcontbuglit ("ctbase_unparseDeclaration: expfcn"); @@ -840,6 +848,10 @@ static ctbase ctbase_undump (d_char *c) /*@requires maxRead(*c) >= 2 @*/ res = ctbase_createAbstract (typeId_fromInt (reader_getInt (c))); reader_checkChar (c, '|'); return res; + case 'n': + res = ctbase_createNumAbstract (typeId_fromInt (reader_getInt (c))); + reader_checkChar (c, '|'); + return res; case 't': res = ctbase_makePointer (ctype_undump (c)); reader_checkChar (c, '|'); @@ -1013,6 +1025,8 @@ ctbase_dump (ctbase c) usymtab_convertId (c->contents.tid))); case CT_ABST: return (message ("a%d|", usymtab_convertId (c->contents.tid))); + case CT_NUMABST: + return (message ("n%d|", usymtab_convertId (c->contents.tid))); case CT_PTR: return (message ("t%q|", ctype_dump (c->contents.base))); case CT_ARRAY: @@ -1083,6 +1097,8 @@ ctbase_copy (/*@notnull@*/ ctbase c) return (ctbase_createUser (c->contents.tid)); case CT_ABST: return (ctbase_createAbstract (c->contents.tid)); + case CT_NUMABST: + return (ctbase_createNumAbstract (c->contents.tid)); case CT_EXPFCN: return (ctbase_expectFunction (c->contents.base)); case CT_PTR: @@ -1145,9 +1161,8 @@ ctbase_free (/*@only@*/ ctbase c) sfree (c); break; case CT_USER: - sfree (c); - break; case CT_ABST: + case CT_NUMABST: sfree (c); break; case CT_PTR: @@ -1293,13 +1308,12 @@ ctbase_genMatch (ctbase c1, ctbase c2, bool force, bool arg, bool def, bool deep return (context_msgBoolInt ()); } - if ((c1tid == CT_BOOL && (c2tid == CT_ABST || c2tid == CT_USER))) { + if ((c1tid == CT_BOOL && (ctuid_isAnyUserType (c2tid)))) { ctype t2c = c2->contents.base; - return (ctype_isBool (t2c)); } - if ((c2tid == CT_BOOL && (c1tid == CT_ABST || c1tid == CT_USER))) { + if ((c2tid == CT_BOOL && (ctuid_isAnyUserType (c1tid)))) { ctype t1c = c1->contents.base; return (ctype_isBool (t1c)); @@ -1364,7 +1378,7 @@ ctbase_genMatch (ctbase c1, ctbase c2, bool force, bool arg, bool def, bool deep if (context_getFlag (FLG_FORWARDDECL)) { - if (c1tid == CT_ABST || c1tid == CT_USER) + if (ctuid_isAnyUserType (c1tid)) { if (ctuid_isAP (c2tid)) { @@ -1383,7 +1397,7 @@ ctbase_genMatch (ctbase c1, ctbase c2, bool force, bool arg, bool def, bool deep } } - if (c2tid == CT_ABST || c2tid == CT_USER) + if (ctuid_isAnyUserType (c2tid)) { if (ctuid_isAP (c1tid)) { @@ -1420,7 +1434,7 @@ ctbase_genMatch (ctbase c1, ctbase c2, bool force, bool arg, bool def, bool deep case CT_BOOL: return (TRUE); case CT_ABST: - return (typeId_equal (c1->contents.tid, c2->contents.tid)); + case CT_NUMABST: case CT_USER: return (typeId_equal (c1->contents.tid, c2->contents.tid)); case CT_ENUM: @@ -1648,6 +1662,20 @@ ctbase_createAbstract (typeId u) return (c); } +static /*@only@*/ ctbase +ctbase_createNumAbstract (typeId u) +{ + ctbase c = ctbase_new (); + + c->type = CT_NUMABST; + c->contents.tid = u; + + /* also check its abstract? */ + + llassert (typeId_isValid (c->contents.tid)); + return (c); +} + static /*@only@*/ ctbase ctbase_createUnknown (void) { @@ -2061,6 +2089,7 @@ ctbase_newBase (ctype c, ctype p) case CT_USER: case CT_ENUM: case CT_ABST: + case CT_NUMABST: case CT_STRUCT: case CT_UNION: case CT_EXPFCN: @@ -2298,6 +2327,7 @@ ctbase_getBaseType (/*@notnull@*/ ctbase c) case CT_ENUMLIST: case CT_BOOL: case CT_ABST: + case CT_NUMABST: case CT_FCN: case CT_STRUCT: case CT_UNION: @@ -2354,6 +2384,7 @@ ctbase_compare (ctbase c1, ctbase c2, bool strict) return 1; case CT_ENUM: /* for now, keep like abstract */ case CT_ABST: + case CT_NUMABST: return (int_compare (c1->contents.tid, c2->contents.tid)); case CT_PTR: return (ctype_compare (c1->contents.base, c2->contents.base)); @@ -2466,12 +2497,18 @@ ctbase_isKind2 (/*@notnull@*/ ctbase c, ctuid kind1, ctuid kind2) static bool ctbase_isAbstract (/*@notnull@*/ ctbase c) { - return (c->type == CT_ABST); + return (c->type == CT_ABST || c->type == CT_NUMABST); +} + +static bool +ctbase_isNumAbstract (/*@notnull@*/ ctbase c) +{ + return (c->type == CT_NUMABST); } static bool ctbase_isUA (ctbase c) { - return (ctbase_isDefined (c) && ((c)->type == CT_USER || (c)->type == CT_ABST)); + return (ctbase_isDefined (c) && (ctuid_isAnyUserType (c->type))); } static bool @@ -2511,7 +2548,7 @@ ctbase_almostEqual (ctbase c1, ctbase c2) case CT_BOOL: return TRUE; case CT_ABST: - return (typeId_equal (c1->contents.tid, c2->contents.tid)); + case CT_NUMABST: case CT_USER: return (typeId_equal (c1->contents.tid, c2->contents.tid)); case CT_ENUM: @@ -2564,3 +2601,26 @@ size_t ctbase_getArraySize (ctbase ctb) return (r->contents.farray->size); } + +bool ctbase_isBigger (ctbase ct1, ctbase ct2) +{ + if (ct1 != NULL && ct2 != NULL + && (ct1->type == CT_PRIM && ct2->type == CT_PRIM)) + { + /* Only compare sizes for primitives */ + cprim cp1 = ct1->contents.prim; + cprim cp2 = ct2->contents.prim; + int nbits1 = cprim_getExpectedBits (cp1); + int nbits2 = cprim_getExpectedBits (cp2); + + if (nbits1 > nbits2) { + return TRUE; + } else { + return FALSE; + } + } + else + { + return FALSE; + } +} diff --git a/src/ctype.c b/src/ctype.c index 7fc16c4..6f9677e 100644 --- a/src/ctype.c +++ b/src/ctype.c @@ -157,7 +157,18 @@ ctype_createAbstract (typeId u) /* requires: ctype_createAbstract (u) is never called more than once for any u. */ /* [ tested by cttable_addFullSafe, not really required ] */ - return (cttable_addFullSafe (ctentry_makeNew (CTK_PLAIN, ctbase_createAbstract (u)))); + return (cttable_addFullSafe + (ctentry_makeNew (CTK_PLAIN, ctbase_createAbstract (u)))); +} + +ctype +ctype_createNumAbstract (typeId u) +{ + /* requires: ctype_createAbstract (u) is never called more than once for any u. */ + /* [ tested by cttable_addFullSafe, not really required ] */ + + return (cttable_addFullSafe + (ctentry_makeNew (CTK_PLAIN, ctbase_createNumAbstract (u)))); } int @@ -256,6 +267,16 @@ ctype_isAbstract (ctype c) || ctype_isAbstract (ctype_getConjB (c)))))); } +bool +ctype_isNumAbstract (ctype c) +{ + return (!ctype_isUnknown (c) + && ((ctype_isPlain (c) && ctbase_isNumAbstract (ctype_getCtbaseSafe (c))) || + (ctype_isConj (c) && + (ctype_isNumAbstract (ctype_getConjA (c)) + || ctype_isNumAbstract (ctype_getConjB (c)))))); +} + bool ctype_isImmutableAbstract (ctype t) { @@ -271,6 +292,15 @@ ctype_isRealAbstract (ctype c) ctype_isRealAbstract (ctype_getConjB (c))))); } +bool +ctype_isRealNumAbstract (ctype c) +{ + return (ctype_isNumAbstract (ctype_realType (c)) || + (ctype_isConj (c) && + (ctype_isRealNumAbstract (ctype_getConjA (c)) || + ctype_isRealNumAbstract (ctype_getConjB (c))))); +} + /* ** primitive creators */ @@ -1970,6 +2000,7 @@ ctype_getBaseType (ctype c) case CT_ENUMLIST: case CT_BOOL: case CT_ABST: + case CT_NUMABST: case CT_FCN: case CT_STRUCT: case CT_UNION: @@ -2796,3 +2827,14 @@ size_t ctype_getArraySize (ctype c) return size; } +ctype ctype_biggerType (ctype c1, ctype c2) +{ + if (ctbase_isBigger (ctype_getCtbaseSafe (c2), ctype_getCtbaseSafe (c1)) ) + { + return c2; + } + else + { + return c1; + } +} diff --git a/src/exprNode.c b/src/exprNode.c index 648c062..828ef6c 100644 --- a/src/exprNode.c +++ b/src/exprNode.c @@ -51,9 +51,10 @@ static void checkUniqueParams (exprNode p_fcn, /*@notnull@*/ exprNode p_current, exprNodeList p_args, int p_paramno, uentry p_ucurrent); static void updateAliases (/*@notnull@*/ exprNode p_e1, /*@notnull@*/ exprNode p_e2); -static void abstractOpError (ctype p_tr1, ctype p_tr2, lltok p_op, +static bool abstractOpError (ctype p_tr1, ctype p_tr2, lltok p_op, /*@notnull@*/ exprNode p_e1, /*@notnull@*/ exprNode p_e2, - fileloc p_loc1, fileloc p_loc2); + fileloc p_loc1, fileloc p_loc2) + /*@modifies g_warningstream@*/ ; static ctype checkNumerics (ctype p_tr1, ctype p_tr2, ctype p_te1, ctype p_te2, /*@notnull@*/ exprNode p_e1, /*@notnull@*/ exprNode p_e2, lltok p_op); static void doAssign (/*@notnull@*/ exprNode p_e1, /*@notnull@*/ exprNode p_e2, bool p_isInit); @@ -860,7 +861,7 @@ exprNode_wideStringLiteral (/*@only@*/ cstring t, /*@only@*/ fileloc loc) /*@only@*/ exprNode exprNode_stringLiteral (/*@only@*/ cstring t, /*@only@*/ fileloc loc) { - size_t len = size_fromInt (cstring_length (t) - 2); + size_t len = size_fromInt (size_toInt (cstring_length (t)) - 2); char *ts = cstring_toCharsSafe (t); char *s = cstring_toCharsSafe (cstring_create (len + 1)); @@ -1080,7 +1081,7 @@ static void exprNode_checkStringLiteralLength (ctype t1, exprNode e2) (FLG_STRINGLITNOROOMFINALNULL, message ("String literal with %d character%& " "is assigned to %s (no room for final null terminator): %s", - len + 1, + size_toInt (len + 1), ctype_unparse (t1), exprNode_unparse (e2)), e2->loc); @@ -1091,7 +1092,7 @@ static void exprNode_checkStringLiteralLength (ctype t1, exprNode e2) (FLG_STRINGLITNOROOM, message ("String literal with %d character%& " "is assigned to %s (no room for null terminator): %s", - len + 1, + size_toInt (len + 1), ctype_unparse (t1), exprNode_unparse (e2)), e2->loc); @@ -1103,7 +1104,7 @@ static void exprNode_checkStringLiteralLength (ctype t1, exprNode e2) (FLG_STRINGLITTOOLONG, message ("String literal with %d character%& (counting null terminator) " "is assigned to %s (insufficient storage available): %s", - len + 1, + size_toInt (len + 1), ctype_unparse (t1), exprNode_unparse (e2)), e2->loc); @@ -1113,7 +1114,7 @@ static void exprNode_checkStringLiteralLength (ctype t1, exprNode e2) voptgenerror (FLG_STRINGLITSMALLER, message ("String literal with %d character%& is assigned to %s (possible waste of storage): %s", - len + 1, + size_toInt (len + 1), ctype_unparse (t1), exprNode_unparse (e2)), e2->loc); @@ -4385,11 +4386,15 @@ exprNode_postOp (/*@only@*/ exprNode e, /*@only@*/ lltok op) { if (ctype_isRealAbstract (t)) { - voptgenerror - (FLG_ABSTRACT, - message ("Operand of %s is abstract type (%t): %s", - lltok_unparse (op), t, exprNode_unparse (e)), - e->loc); + if (ctype_isRealNumAbstract (t)) { + ; /* Allow operations on numabstract types */ + } else { + voptgenerror + (FLG_ABSTRACT, + message ("Operand of %s is abstract type (%t): %s", + lltok_unparse (op), t, exprNode_unparse (e)), + e->loc); + } } else { @@ -4496,15 +4501,22 @@ exprNode_preOp (/*@only@*/ exprNode e, /*@only@*/ lltok op) if (ctype_isRealAbstract (tr) && (!(ctype_isRealBool (te) && (opid == TEXCL)))) { - if (optgenerror (FLG_ABSTRACT, - message ("Operand of %s is abstract type (%t): %s", - lltok_unparse (op), tr, - exprNode_unparse (ret)), - e->loc)) + if (ctype_isRealNumAbstract (tr)) { - tr = te = ctype_unknown; - ret->typ = ctype_unknown; - sRef_setNullError (e->sref); + ; /* no warning for numabstract types */ + } + else + { + if (optgenerror (FLG_ABSTRACT, + message ("Operand of %s is abstract type (%t): %s", + lltok_unparse (op), tr, + exprNode_unparse (ret)), + e->loc)) + { + tr = te = ctype_unknown; + ret->typ = ctype_unknown; + sRef_setNullError (e->sref); + } } } } @@ -4547,8 +4559,8 @@ exprNode_preOp (/*@only@*/ exprNode e, /*@only@*/ lltok op) /* Arithmetic operations on pointers wil modify the size/len/null terminated status */ - if ((sRef_isPossiblyNullTerminated (e->sref)) || (sRef_isNullTerminated(e->sref))) { - + if ((sRef_isPossiblyNullTerminated (e->sref)) + || (sRef_isNullTerminated(e->sref))) { ret->sref = sRef_copy (e->sref); /* Operator : ++ */ @@ -5144,16 +5156,38 @@ exprNode_cast (/*@only@*/ lltok tok, /*@only@*/ exprNode e, /*@only@*/ qtype q) } else { - DPRINTF (("No access to: %s / %d", - ctype_unparse (bc), ctype_typeId (bc))); - DPRINTF (("Context %s %s", - bool_unparse (context_inFunctionLike ()), - context_unparse ())); - voptgenerror - (FLG_ABSTRACT, - message ("Cast to abstract type %t: %s", bc, - exprNode_unparse (ret)), - e->loc); + if (ctype_isNumAbstract (bc)) + { + if (exprNode_isNumLiteral (e)) + { + voptgenerror + (FLG_NUMABSTRACTCAST, + message ("Cast from literal to numabstract type %t: %s", bc, + exprNode_unparse (ret)), + e->loc); + } + else + { + voptgenerror + (FLG_NUMABSTRACT, + message ("Cast to numabstract type %t: %s", bc, + exprNode_unparse (ret)), + e->loc); + } + } + else + { + DPRINTF (("No access to: %s / %d", + ctype_unparse (bc), ctype_typeId (bc))); + DPRINTF (("Context %s %s", + bool_unparse (context_inFunctionLike ()), + context_unparse ())); + voptgenerror + (FLG_ABSTRACT, + message ("Cast to abstract type %t: %s", bc, + exprNode_unparse (ret)), + e->loc); + } } } } @@ -5367,588 +5401,588 @@ exprNode_makeOp (/*@keep@*/ exprNode e1, /*@keep@*/ exprNode e2, (opid == AND_OP || opid == OR_OP || opid == EQ_OP || opid == NE_OP)))) { - abstractOpError (tr1, tr2, op, e1, e2, e1->loc, e2->loc); + if (abstractOpError (tr1, tr2, op, e1, e2, e1->loc, e2->loc)) + { + tret = ctype_unknown; + goto skiprest; + } } - else if (ctype_isUnknown (te1) || ctype_isUnknown (te2)) + + if (ctype_isUnknown (te1) || ctype_isUnknown (te2)) { /* unknown types, no comparisons possible */ + goto skiprest; } - else + + switch (opid) { - switch (opid) + case TMULT: /* multiplication and division: */ + case TDIV: /* */ + case MUL_ASSIGN: /* numeric, numeric -> numeric */ + case DIV_ASSIGN: /* */ + if (opid == TMULT || opid == MUL_ASSIGN) { - case TMULT: /* multiplication and division: */ - case TDIV: /* */ - case MUL_ASSIGN: /* numeric, numeric -> numeric */ - case DIV_ASSIGN: /* */ - - if (opid == TMULT || opid == MUL_ASSIGN) - { - ret->val = multiVal_multiply (exprNode_getValue (e1), - exprNode_getValue (e2)); - } - else + ret->val = multiVal_multiply (exprNode_getValue (e1), + exprNode_getValue (e2)); + } + else + { + ret->val = multiVal_divide (exprNode_getValue (e1), + exprNode_getValue (e2)); + } + + tret = checkNumerics (tr1, tr2, te1, te2, e1, e2, op); + break; + + case TPLUS: /* addition and subtraction: */ + case TMINUS: /* pointer, int -> pointer */ + case SUB_ASSIGN: /* int, pointer -> pointer */ + case ADD_ASSIGN: /* numeric, numeric -> numeric */ + if (opid == TPLUS || opid == ADD_ASSIGN) + { + ret->val = multiVal_add (exprNode_getValue (e1), + exprNode_getValue (e2)); + } + else + { + ret->val = multiVal_subtract (exprNode_getValue (e1), + exprNode_getValue (e2)); + } + + tr1 = ctype_fixArrayPtr (tr1); + + if ((ctype_isRealPointer (tr1) && !exprNode_isNullValue (e1)) + && (!ctype_isRealPointer (tr2) && ctype_isRealInt (tr2))) + { + /* pointer + int */ + + if (context_msgPointerArith ()) { - ret->val = multiVal_divide (exprNode_getValue (e1), - exprNode_getValue (e2)); + voptgenerror + (FLG_POINTERARITH, + message ("Pointer arithmetic (%t, %t): %s", + te1, te2, exprNode_unparse (ret)), + e1->loc); } - - tret = checkNumerics (tr1, tr2, te1, te2, e1, e2, op); - break; - case TPLUS: /* addition and subtraction: */ - case TMINUS: /* pointer, int -> pointer */ - case SUB_ASSIGN: /* int, pointer -> pointer */ - case ADD_ASSIGN: /* numeric, numeric -> numeric */ - - if (opid == TPLUS || opid == ADD_ASSIGN) + /* + ** Swap terms so e1 is always the pointer + */ + + if (ctype_isRealPointer (tr1)) { - ret->val = multiVal_add (exprNode_getValue (e1), - exprNode_getValue (e2)); + ; } else { - ret->val = multiVal_subtract (exprNode_getValue (e1), - exprNode_getValue (e2)); + exprNode_swap (e1, e2); } - - tr1 = ctype_fixArrayPtr (tr1); - - if ((ctype_isRealPointer (tr1) && !exprNode_isNullValue (e1)) - && (!ctype_isRealPointer (tr2) && ctype_isRealInt (tr2))) + + if (sRef_possiblyNull (e1->sref) + && !usymtab_isGuarded (e1->sref)) { - /* pointer + int */ - - if (context_msgPointerArith ()) - { - voptgenerror - (FLG_POINTERARITH, - message ("Pointer arithmetic (%t, %t): %s", - te1, te2, exprNode_unparse (ret)), - e1->loc); - } - - /* - ** Swap terms so e1 is always the pointer - */ - - if (ctype_isRealPointer (tr1)) - { - ; - } - else - { - exprNode_swap (e1, e2); - } - - - if (sRef_possiblyNull (e1->sref) - && !usymtab_isGuarded (e1->sref)) - { - voptgenerror - (FLG_NULLPOINTERARITH, - message ("Pointer arithmetic involving possibly " - "null pointer %s: %s", - exprNode_unparse (e1), - exprNode_unparse (ret)), - e1->loc); - } - - ret->sref = sRef_copy (e1->sref); - - /* start modifications */ - /* added by Seejo on 4/16/2000 */ - - /* Arithmetic operations on pointers wil modify the size/len/null terminated - status */ - if ((sRef_isPossiblyNullTerminated (e1->sref)) || (sRef_isNullTerminated(e1->sref))) { - int val; - /*drl 1-4-2002 - added ugly fixed to stop - program from crashing on point + int +int - one day I'll fix this or ask Seejo wtf the codes supposed to do. */ - - if (!multiVal_isInt (e2->val) ) - break; - /*end drl*/ - - val = (int) multiVal_forceInt (e2->val); + voptgenerror + (FLG_NULLPOINTERARITH, + message ("Pointer arithmetic involving possibly " + "null pointer %s: %s", + exprNode_unparse (e1), + exprNode_unparse (ret)), + e1->loc); + } + + ret->sref = sRef_copy (e1->sref); + + /* start modifications */ + /* added by Seejo on 4/16/2000 */ + + /* Arithmetic operations on pointers wil modify the size/len/null terminated + status */ + if ((sRef_isPossiblyNullTerminated (e1->sref)) || (sRef_isNullTerminated(e1->sref))) { + int val; + /*drl 1-4-2002 + added ugly fixed to stop + program from crashing on point + int +int + one day I'll fix this or ask Seejo wtf the codes supposed to do. */ + + if (!multiVal_isInt (e2->val) ) + break; + /*end drl*/ + + val = (int) multiVal_forceInt (e2->val); + + /* Operator : + or += */ + if ((lltok_getTok (op) == TPLUS) || (lltok_getTok(op) == ADD_ASSIGN)) { + if (sRef_getSize(e1->sref) >= val) {/* Incrementing the pointer by + val should not result in a + size < 0 (size = 0 is ok !) */ - /* Operator : + or += */ - if ((lltok_getTok (op) == TPLUS) || (lltok_getTok(op) == ADD_ASSIGN)) { - if (sRef_getSize(e1->sref) >= val) {/* Incrementing the pointer by - val should not result in a - size < 0 (size = 0 is ok !) */ - - sRef_setSize (ret->sref, sRef_getSize(e1->sref) - val); - - if (sRef_getLen(e1->sref) == val) { /* i.e. the character at posn val is \0 */ - sRef_setNotNullTerminatedState(ret->sref); - sRef_resetLen (ret->sref); - } else { - sRef_setNullTerminatedState(ret->sref); - sRef_setLen (ret->sref, sRef_getLen(e1->sref) - val); - } - } - } + sRef_setSize (ret->sref, sRef_getSize(e1->sref) - val); - /* Operator : - or -= */ - if ((lltok_getTok (op) == TMINUS) || (lltok_getTok (op) == SUB_ASSIGN)) { - if (sRef_getSize(e1->sref) >= 0) { - sRef_setSize (ret->sref, sRef_getSize(e1->sref) + val); - sRef_setLen (ret->sref, sRef_getLen(e1->sref) + val); - } + if (sRef_getLen(e1->sref) == val) { /* i.e. the character at posn val is \0 */ + sRef_setNotNullTerminatedState(ret->sref); + sRef_resetLen (ret->sref); + } else { + sRef_setNullTerminatedState(ret->sref); + sRef_setLen (ret->sref, sRef_getLen(e1->sref) - val); } } - - /* end modifications */ - - sRef_setNullError (ret->sref); - - /* - ** Fixed for 2.2c: the alias state of ptr + int is dependent, - ** since is points to storage that should not be deallocated - ** through this pointer. - */ - - if (sRef_isOnly (ret->sref) - || sRef_isFresh (ret->sref)) - { - sRef_setAliasKind (ret->sref, AK_DEPENDENT, exprNode_loc (ret)); - } - - tret = e1->typ; } - else if ((!ctype_isRealPointer(tr1) && ctype_isRealInt (tr1)) - && (ctype_isRealPointer (tr2) && !exprNode_isNullValue (e2))) + + /* Operator : - or -= */ + if ((lltok_getTok (op) == TMINUS) || (lltok_getTok (op) == SUB_ASSIGN)) { + if (sRef_getSize(e1->sref) >= 0) { + sRef_setSize (ret->sref, sRef_getSize(e1->sref) + val); + sRef_setLen (ret->sref, sRef_getLen(e1->sref) + val); + } + } + } + + /* end modifications */ + + sRef_setNullError (ret->sref); + + /* + ** Fixed for 2.2c: the alias state of ptr + int is dependent, + ** since is points to storage that should not be deallocated + ** through this pointer. + */ + + if (sRef_isOnly (ret->sref) + || sRef_isFresh (ret->sref)) { - if (context_msgPointerArith ()) - { - voptgenerror - (FLG_POINTERARITH, - message ("Pointer arithmetic (%t, %t): %s", - te1, te2, exprNode_unparse (ret)), - e1->loc); - } - - if (sRef_possiblyNull (e1->sref) - && !usymtab_isGuarded (e1->sref)) - { - voptgenerror - (FLG_NULLPOINTERARITH, - message ("Pointer arithmetic involving possibly " - "null pointer %s: %s", - exprNode_unparse (e2), - exprNode_unparse (ret)), - e2->loc); - } - - ret->sref = sRef_copy (e2->sref); - - /* start modifications */ - /* added by Seejo on 4/16/2000 */ - - /* Arithmetic operations on pointers wil modify the size/len/null terminated - status */ - - if ((sRef_isPossiblyNullTerminated (e2->sref)) || (sRef_isNullTerminated(e2->sref))) { - int val = (int) multiVal_forceInt (e1->val); + sRef_setAliasKind (ret->sref, AK_DEPENDENT, exprNode_loc (ret)); + } + + tret = e1->typ; + } + else if ((!ctype_isRealPointer(tr1) && ctype_isRealInt (tr1)) + && (ctype_isRealPointer (tr2) && !exprNode_isNullValue (e2))) + { + if (context_msgPointerArith ()) + { + voptgenerror + (FLG_POINTERARITH, + message ("Pointer arithmetic (%t, %t): %s", + te1, te2, exprNode_unparse (ret)), + e1->loc); + } + + if (sRef_possiblyNull (e1->sref) + && !usymtab_isGuarded (e1->sref)) + { + voptgenerror + (FLG_NULLPOINTERARITH, + message ("Pointer arithmetic involving possibly " + "null pointer %s: %s", + exprNode_unparse (e2), + exprNode_unparse (ret)), + e2->loc); + } + + ret->sref = sRef_copy (e2->sref); + + /* start modifications */ + /* added by Seejo on 4/16/2000 */ + + /* Arithmetic operations on pointers wil modify the size/len/null terminated + status */ + + if ((sRef_isPossiblyNullTerminated (e2->sref)) || (sRef_isNullTerminated(e2->sref))) { + int val = (int) multiVal_forceInt (e1->val); + + /* Operator : + or += */ + if ((lltok_getTok (op) == TPLUS) || (lltok_getTok(op) == ADD_ASSIGN)) { + if (sRef_getSize(e2->sref) >= val) {/* Incrementing the pointer by + val should not result in a + size < 0 (size = 0 is ok !) */ - /* Operator : + or += */ - if ((lltok_getTok (op) == TPLUS) || (lltok_getTok(op) == ADD_ASSIGN)) { - if (sRef_getSize(e2->sref) >= val) {/* Incrementing the pointer by - val should not result in a - size < 0 (size = 0 is ok !) */ - - sRef_setSize (ret->sref, sRef_getSize(e2->sref) - val); - - if (sRef_getLen(e2->sref) == val) { /* i.e. the character at posn val is \0 */ - sRef_setNotNullTerminatedState(ret->sref); - sRef_resetLen (ret->sref); - } else { - sRef_setNullTerminatedState(ret->sref); - sRef_setLen (ret->sref, sRef_getLen(e2->sref) - val); - } - } - } + sRef_setSize (ret->sref, sRef_getSize(e2->sref) - val); - /* Operator : - or -= */ - if ((lltok_getTok (op) == TMINUS) || (lltok_getTok (op) == SUB_ASSIGN)) { - if (sRef_getSize(e2->sref) >= 0) { - sRef_setSize (ret->sref, sRef_getSize(e2->sref) + val); - sRef_setLen (ret->sref, sRef_getLen(e2->sref) + val); - } + if (sRef_getLen(e2->sref) == val) { /* i.e. the character at posn val is \0 */ + sRef_setNotNullTerminatedState(ret->sref); + sRef_resetLen (ret->sref); + } else { + sRef_setNullTerminatedState(ret->sref); + sRef_setLen (ret->sref, sRef_getLen(e2->sref) - val); } } - /* end modifications */ - - sRef_setNullError (ret->sref); - - /* - ** Fixed for 2.2c: the alias state of ptr + int is dependent, - ** since is points to storage that should not be deallocated - ** through this pointer. - */ - - if (sRef_isOnly (ret->sref) - || sRef_isFresh (ret->sref)) { - sRef_setAliasKind (ret->sref, AK_DEPENDENT, exprNode_loc (ret)); - } - - tret = e2->typ; - ret->sref = e2->sref; } - else - { - tret = checkNumerics (tr1, tr2, te1, te2, e1, e2, op); + + /* Operator : - or -= */ + if ((lltok_getTok (op) == TMINUS) || (lltok_getTok (op) == SUB_ASSIGN)) { + if (sRef_getSize(e2->sref) >= 0) { + sRef_setSize (ret->sref, sRef_getSize(e2->sref) + val); + sRef_setLen (ret->sref, sRef_getLen(e2->sref) + val); + } } + } + /* end modifications */ - break; - - case LEFT_ASSIGN: - case RIGHT_ASSIGN: - case LEFT_OP: - case RIGHT_OP: - case TAMPERSAND: /* bitwise & */ - case AND_ASSIGN: - case TCIRC: /* ^ (XOR) */ - case TBAR: - case XOR_ASSIGN: - case OR_ASSIGN: + sRef_setNullError (ret->sref); + + /* + ** Fixed for 2.2c: the alias state of ptr + int is dependent, + ** since is points to storage that should not be deallocated + ** through this pointer. + */ + + if (sRef_isOnly (ret->sref) + || sRef_isFresh (ret->sref)) { + sRef_setAliasKind (ret->sref, AK_DEPENDENT, exprNode_loc (ret)); + } + + tret = e2->typ; + ret->sref = e2->sref; + } + else + { + tret = checkNumerics (tr1, tr2, te1, te2, e1, e2, op); + } + + break; + + case LEFT_ASSIGN: + case RIGHT_ASSIGN: + case LEFT_OP: + case RIGHT_OP: + case TAMPERSAND: /* bitwise & */ + case AND_ASSIGN: + case TCIRC: /* ^ (XOR) */ + case TBAR: + case XOR_ASSIGN: + case OR_ASSIGN: + { + bool reported = FALSE; + + /* + ** Shift Operator + */ + + if (opid == LEFT_OP || opid == LEFT_ASSIGN + || opid == RIGHT_OP || opid == RIGHT_ASSIGN) { - bool reported = FALSE; + /* + ** evans 2002-01-01: fixed this to follow ISO 6.5.7. + */ + + if (!ctype_isUnsigned (tr2) + && !exprNode_isNonNegative (e2)) + { + reported = optgenerror + (FLG_SHIFTNEGATIVE, + message ("Right operand of %s may be negative (%t): %s", + lltok_unparse (op), te2, + exprNode_unparse (ret)), + e2->loc); + } + + if (!ctype_isUnsigned (tr1) + && !exprNode_isNonNegative (e1)) + { + reported = optgenerror + (FLG_SHIFTIMPLEMENTATION, + message ("Left operand of %s may be negative (%t): %s", + lltok_unparse (op), te1, + exprNode_unparse (ret)), + e1->loc); + } /* - ** Shift Operator + ** Should check size of right operand also... */ - - if (opid == LEFT_OP || opid == LEFT_ASSIGN - || opid == RIGHT_OP || opid == RIGHT_ASSIGN) + + } + else + { + if (!ctype_isUnsigned (tr1)) { - /* - ** evans 2002-01-01: fixed this to follow ISO 6.5.7. - */ - - if (!ctype_isUnsigned (tr2) - && !exprNode_isNonNegative (e2)) - { - reported = optgenerror - (FLG_SHIFTNEGATIVE, - message ("Right operand of %s may be negative (%t): %s", - lltok_unparse (op), te2, - exprNode_unparse (ret)), - e2->loc); - } - - if (!ctype_isUnsigned (tr1) - && !exprNode_isNonNegative (e1)) - { - reported = optgenerror - (FLG_SHIFTIMPLEMENTATION, - message ("Left operand of %s may be negative (%t): %s", - lltok_unparse (op), te1, - exprNode_unparse (ret)), - e1->loc); + if (exprNode_isNonNegative (e1)) { + ; + } else { + reported = optgenerror + (FLG_BITWISEOPS, + message ("Left operand of %s is not unsigned value (%t): %s", + lltok_unparse (op), te1, + exprNode_unparse (ret)), + e1->loc); + + if (reported) { + te1 = ctype_uint; } - - /* - ** Should check size of right operand also... - */ - + } } - else + else { - if (!ctype_isUnsigned (tr1)) + if (!ctype_isUnsigned (tr2)) { - if (exprNode_isNonNegative (e1)) { - ; - } else { + if (!exprNode_isNonNegative (e2)) { reported = optgenerror (FLG_BITWISEOPS, - message ("Left operand of %s is not unsigned value (%t): %s", - lltok_unparse (op), te1, + message ("Right operand of %s is not unsigned value (%t): %s", + lltok_unparse (op), te2, exprNode_unparse (ret)), - e1->loc); - - if (reported) { - te1 = ctype_uint; - } - } - } - else - { - if (!ctype_isUnsigned (tr2)) - { - if (!exprNode_isNonNegative (e2)) { - reported = optgenerror - (FLG_BITWISEOPS, - message ("Right operand of %s is not unsigned value (%t): %s", - lltok_unparse (op), te2, - exprNode_unparse (ret)), - e2->loc); - } - } + e2->loc); + } } } - - if (!reported) - { - if (!checkIntegral (e1, e2, ret, op)) { - te1 = ctype_unknown; - } - } - - DPRINTF (("Set: %s", ctype_unparse (te1))); - - /* - ** tret is the widest type of te1 and te2 - */ - - tret = ctype_widest (te1, te2); - break; } - case MOD_ASSIGN: - case TPERCENT: - if (checkIntegral (e1, e2, ret, op)) { - tret = te1; - } else { - tret = ctype_unknown; + + if (!reported) + { + if (!checkIntegral (e1, e2, ret, op)) { + te1 = ctype_unknown; + } } - break; - case EQ_OP: - case NE_OP: - case TLT: /* comparisons */ - case TGT: /* numeric, numeric -> bool */ - - DPRINTF (("Here we go: %s / %s", - ctype_unparse (tr1), ctype_unparse (tr2))); - - if ((ctype_isReal (tr1) && !ctype_isInt (tr1)) - || (ctype_isReal (tr2) && !ctype_isInt (tr2))) + + DPRINTF (("Set: %s", ctype_unparse (te1))); + + /* + ** tret is the widest type of te1 and te2 + */ + + tret = ctype_widest (te1, te2); + break; + } + case MOD_ASSIGN: + case TPERCENT: + if (checkIntegral (e1, e2, ret, op)) { + tret = te1; + } else { + tret = ctype_unknown; + } + break; + case EQ_OP: + case NE_OP: + case TLT: /* comparisons */ + case TGT: /* numeric, numeric -> bool */ + + DPRINTF (("Here we go: %s / %s", + ctype_unparse (tr1), ctype_unparse (tr2))); + + if ((ctype_isReal (tr1) && !ctype_isInt (tr1)) + || (ctype_isReal (tr2) && !ctype_isInt (tr2))) + { + ctype rtype = tr1; + bool fepsilon = FALSE; + + if (!ctype_isReal (rtype) || ctype_isInt (rtype)) { - ctype rtype = tr1; - bool fepsilon = FALSE; - - if (!ctype_isReal (rtype) || ctype_isInt (rtype)) - { - rtype = tr2; - } + rtype = tr2; + } + + if (opid == TLT || opid == TGT) + { + uentry ue1 = exprNode_getUentry (e1); + uentry ue2 = exprNode_getUentry (e2); - if (opid == TLT || opid == TGT) + /* + ** FLT_EPSILON, etc. really is a variable, not + ** a constant. + */ + + if (uentry_isVariable (ue1)) { - uentry ue1 = exprNode_getUentry (e1); - uentry ue2 = exprNode_getUentry (e2); - - /* - ** FLT_EPSILON, etc. really is a variable, not - ** a constant. - */ - - if (uentry_isVariable (ue1)) - { - cstring uname = uentry_rawName (ue1); - - if (cstring_equalLit (uname, "FLT_EPSILON") - || cstring_equalLit (uname, "DBL_EPSILON") - || cstring_equalLit (uname, "LDBL_EPSILON")) - { - fepsilon = TRUE; - } - } - - if (uentry_isVariable (ue2)) + cstring uname = uentry_rawName (ue1); + + if (cstring_equalLit (uname, "FLT_EPSILON") + || cstring_equalLit (uname, "DBL_EPSILON") + || cstring_equalLit (uname, "LDBL_EPSILON")) { - cstring uname = uentry_rawName (ue2); - - if (cstring_equalLit (uname, "FLT_EPSILON") - || cstring_equalLit (uname, "DBL_EPSILON") - || cstring_equalLit (uname, "LDBL_EPSILON")) - { - fepsilon = TRUE; - } + fepsilon = TRUE; } } - - if (fepsilon) - { - ; /* Don't complain. */ - } - else + + if (uentry_isVariable (ue2)) { - voptgenerror - (FLG_REALCOMPARE, - message ("Dangerous comparison involving %s types: %s", - ctype_unparse (rtype), - exprNode_unparse (ret)), - ret->loc); + cstring uname = uentry_rawName (ue2); + + if (cstring_equalLit (uname, "FLT_EPSILON") + || cstring_equalLit (uname, "DBL_EPSILON") + || cstring_equalLit (uname, "LDBL_EPSILON")) + { + fepsilon = TRUE; + } } } - /*@fallthrough@*/ - case LE_OP: - case GE_OP: - - /* - ** Types should match. - */ - - DPRINTF (("Match types: %s / %s", exprNode_unparse (e1), - exprNode_unparse (e2))); - - if (!exprNode_matchTypes (e1, e2)) + + if (fepsilon) { - hasError = gentypeerror - (te1, e1, te2, e2, - message ("Operands of %s have incompatible types (%t, %t): %s", - lltok_unparse (op), te1, te2, exprNode_unparse (ret)), - e1->loc); - + ; /* Don't complain. */ } - - if (hasError - || (ctype_isForceRealNumeric (&tr1) - && ctype_isForceRealNumeric (&tr2)) || - (ctype_isRealPointer (tr1) && ctype_isRealPointer (tr2))) + else + { + voptgenerror + (FLG_REALCOMPARE, + message ("Dangerous comparison involving %s types: %s", + ctype_unparse (rtype), + exprNode_unparse (ret)), + ret->loc); + } + } + /*@fallthrough@*/ + case LE_OP: + case GE_OP: + + /* + ** Types should match. + */ + + DPRINTF (("Match types: %s / %s", exprNode_unparse (e1), + exprNode_unparse (e2))); + + if (!exprNode_matchTypes (e1, e2)) + { + hasError = gentypeerror + (te1, e1, te2, e2, + message ("Operands of %s have incompatible types (%t, %t): %s", + lltok_unparse (op), te1, te2, exprNode_unparse (ret)), + e1->loc); + + } + + if (hasError + || (ctype_isForceRealNumeric (&tr1) + && ctype_isForceRealNumeric (&tr2)) || + (ctype_isRealPointer (tr1) && ctype_isRealPointer (tr2))) + { + ; /* okay */ + } + else + { + if ((ctype_isRealNumeric (tr1) && ctype_isRealPointer (tr2)) || + (ctype_isRealPointer (tr1) && ctype_isRealNumeric (tr2))) { - ; /* okay */ + voptgenerror + (FLG_PTRNUMCOMPARE, + message ("Comparison of pointer and numeric (%t, %t): %s", + te1, te2, exprNode_unparse (ret)), + e1->loc); } else { - if ((ctype_isRealNumeric (tr1) && ctype_isRealPointer (tr2)) || - (ctype_isRealPointer (tr1) && ctype_isRealNumeric (tr2))) - { - voptgenerror - (FLG_PTRNUMCOMPARE, - message ("Comparison of pointer and numeric (%t, %t): %s", - te1, te2, exprNode_unparse (ret)), - e1->loc); - } - else - { - (void) checkNumerics (tr1, tr2, te1, te2, e1, e2, op); - } - tret = ctype_bool; + (void) checkNumerics (tr1, tr2, te1, te2, e1, e2, op); } - - /* certain comparisons on unsigned's and zero look suspicious */ - - if (opid == TLT || opid == LE_OP || opid == GE_OP) + tret = ctype_bool; + } + + /* certain comparisons on unsigned's and zero look suspicious */ + + if (opid == TLT || opid == LE_OP || opid == GE_OP) + { + if ((ctype_isUnsigned (tr1) && exprNode_isZero (e2)) + || (ctype_isUnsigned (tr2) && exprNode_isZero (e1))) { - if ((ctype_isUnsigned (tr1) && exprNode_isZero (e2)) - || (ctype_isUnsigned (tr2) && exprNode_isZero (e1))) - { - voptgenerror - (FLG_UNSIGNEDCOMPARE, - message ("Comparison of unsigned value involving zero: %s", - exprNode_unparse (ret)), - e1->loc); - } + voptgenerror + (FLG_UNSIGNEDCOMPARE, + message ("Comparison of unsigned value involving zero: %s", + exprNode_unparse (ret)), + e1->loc); } - - /* EQ_OP should NOT be used with booleans (unless one is FALSE) */ + } + + /* EQ_OP should NOT be used with booleans (unless one is FALSE) */ + + if ((opid == EQ_OP || opid == NE_OP) && + ctype_isDirectBool (tr1) && ctype_isDirectBool (tr2)) + { + /* + ** is one a variable? + */ - if ((opid == EQ_OP || opid == NE_OP) && - ctype_isDirectBool (tr1) && ctype_isDirectBool (tr2)) + if (uentry_isVariable (exprNode_getUentry (e1)) + || uentry_isVariable (exprNode_getUentry (e2))) { /* - ** is one a variable? + ** comparisons with FALSE are okay */ - - if (uentry_isVariable (exprNode_getUentry (e1)) - || uentry_isVariable (exprNode_getUentry (e2))) + + if (exprNode_isFalseConstant (e1) + || exprNode_isFalseConstant (e2)) { - /* - ** comparisons with FALSE are okay - */ - - if (exprNode_isFalseConstant (e1) - || exprNode_isFalseConstant (e2)) - { - ; - } - else - { - voptgenerror - (FLG_BOOLCOMPARE, - message - ("Use of %q with %s variables (risks inconsistency because " - "of multiple true values): %s", - cstring_makeLiteral ((opid == EQ_OP) ? "==" : "!="), - context_printBoolName (), exprNode_unparse (ret)), - e1->loc); - } + ; + } + else + { + voptgenerror + (FLG_BOOLCOMPARE, + message + ("Use of %q with %s variables (risks inconsistency because " + "of multiple true values): %s", + cstring_makeLiteral ((opid == EQ_OP) ? "==" : "!="), + context_printBoolName (), exprNode_unparse (ret)), + e1->loc); } } - break; - - case AND_OP: /* bool, bool -> bool */ - case OR_OP: - - if (ctype_isForceRealBool (&tr1) && ctype_isForceRealBool (&tr2)) - { - ; - } - else + } + break; + + case AND_OP: /* bool, bool -> bool */ + case OR_OP: + if (ctype_isForceRealBool (&tr1) && ctype_isForceRealBool (&tr2)) + { + ; + } + else + { + if (context_maybeSet (FLG_BOOLOPS)) { - if (context_maybeSet (FLG_BOOLOPS)) + if (!ctype_isRealBool (te1) && !ctype_isRealBool (te2)) { - if (!ctype_isRealBool (te1) && !ctype_isRealBool (te2)) - { - if (ctype_sameName (te1, te2)) - { - voptgenerror - (FLG_BOOLOPS, - message ("Operands of %s are non-boolean (%t): %s", - lltok_unparse (op), te1, - exprNode_unparse (ret)), - e1->loc); - } - else - { - voptgenerror - (FLG_BOOLOPS, - message - ("Operands of %s are non-booleans (%t, %t): %s", - lltok_unparse (op), te1, te2, exprNode_unparse (ret)), - e1->loc); - } - } - else if (!ctype_isRealBool (te1)) + if (ctype_sameName (te1, te2)) { voptgenerror (FLG_BOOLOPS, - message ("Left operand of %s is non-boolean (%t): %s", - lltok_unparse (op), te1, exprNode_unparse (ret)), + message ("Operands of %s are non-boolean (%t): %s", + lltok_unparse (op), te1, + exprNode_unparse (ret)), e1->loc); } - else if (!ctype_isRealBool (te2)) - { - voptgenerror - (FLG_BOOLOPS, - message ("Right operand of %s is non-boolean (%t): %s", - lltok_unparse (op), te2, exprNode_unparse (ret)), - e2->loc); - } else { - ; + voptgenerror + (FLG_BOOLOPS, + message + ("Operands of %s are non-booleans (%t, %t): %s", + lltok_unparse (op), te1, te2, exprNode_unparse (ret)), + e1->loc); } } - tret = ctype_bool; + else if (!ctype_isRealBool (te1)) + { + voptgenerror + (FLG_BOOLOPS, + message ("Left operand of %s is non-boolean (%t): %s", + lltok_unparse (op), te1, exprNode_unparse (ret)), + e1->loc); + } + else if (!ctype_isRealBool (te2)) + { + voptgenerror + (FLG_BOOLOPS, + message ("Right operand of %s is non-boolean (%t): %s", + lltok_unparse (op), te2, exprNode_unparse (ret)), + e2->loc); + } + else + { + ; + } } - break; - default: { - llfatalbug - (cstring_makeLiteral - ("There has been a problem in the parser. This is believed to result " - "from a problem with bison v. 1.25. Please try rebuidling Splint " - "using the pre-compiled grammar files by commenting out the " - "BISON= line in the top-level Makefile.")); - } + tret = ctype_bool; } + break; + default: + llfatalbug + (cstring_makeLiteral + ("There has been a problem in the parser. This is believed to result " + "from a problem with bison v. 1.25. Please try rebuidling Splint " + "using the pre-compiled grammar files by commenting out the " + "BISON= line in the top-level Makefile.")); } - DPRINTF (("Return type: %s", ctype_unparse (tret))); +skiprest: ret->typ = tret; + DPRINTF (("Return type %s: %s", exprNode_unparse (ret), ctype_unparse (tret))); exprNode_checkUse (ret, e1->sref, e1->loc); exprNode_mergeUSs (ret, e2); @@ -6157,7 +6191,23 @@ exprNode_assign (/*@only@*/ exprNode e1, /*@only@*/ exprNode e2, /*@only@*/ llto { if (exprNode_matchLiteral (te1, e2)) { - ; + DPRINTF (("Literals match: %s / %s", + ctype_unparse (te1), exprNode_unparse (e2))); + if (ctype_isNumAbstract (te1)) { + if (!context_flagOn (FLG_NUMABSTRACTLIT, e1->loc)) { + (void) llgenhinterror + (FLG_NUMABSTRACT, + message + ("Assignment of %t literal to numabstract type %t: %s %s %s", + te2, te1, + exprNode_unparse (e1), + lltok_unparse (op), + exprNode_unparse (e2)), + cstring_makeLiteral + ("Use +numabstractlit to allow numeric literals to be used as numabstract values"), + e1->loc); + } + } } else { @@ -8619,7 +8669,7 @@ exprNode exprNode_makeInitialization (/*@only@*/ idDecl t, if (multiVal_isDefined (e->val)) { cstring slit = multiVal_forceString (e->val); - sRef_setLen (ret->sref, cstring_length (slit) + 1); + sRef_setLen (ret->sref, size_toInt (cstring_length (slit) + 1)); } if (ctype_isFixedArray (ct)) @@ -9723,7 +9773,7 @@ exprNode_isInitializer (exprNode e) } bool -exprNode_isCharLit (exprNode e) +exprNode_isCharLiteral (exprNode e) { if (exprNode_isDefined (e)) { @@ -9736,7 +9786,7 @@ exprNode_isCharLit (exprNode e) } bool -exprNode_isNumLit (exprNode e) +exprNode_isNumLiteral (exprNode e) { if (exprNode_isDefined (e)) { @@ -9777,6 +9827,12 @@ exprNode_matchLiteral (ctype expected, exprNode e) { long int val = multiVal_forceInt (m); + if (ctype_isNumAbstract (expected) + && context_flagOn (FLG_NUMABSTRACTLIT, exprNode_loc (e))) + { + return TRUE; + } + if (ctype_isDirectBool (ctype_realishType (expected))) { if (val == 0) @@ -10647,30 +10703,58 @@ static ctype DPRINTF (("No error: [%s] %s / [%s] %s", exprNode_unparse (e1), ctype_unparse (tr1), exprNode_unparse (e2), ctype_unparse (tr2))); + + ret = ctype_biggerType (tr1, tr2); } else { - (void) gentypeerror - (tr1, e1, tr2, e2, - message ("Incompatible types for %s (%s, %s): %s %s %s", - lltok_unparse (op), - ctype_unparse (te1), - ctype_unparse (te2), - exprNode_unparse (e1), lltok_unparse (op), - exprNode_unparse (e2)), - e1->loc); + if (ctype_isNumAbstract (tr1) + && exprNode_isNumLiteral (e2) + && context_flagOn (FLG_NUMABSTRACTLIT, e1->loc)) + { + ret = tr1; /* No error */ + } + else if (ctype_isNumAbstract (tr2) + && exprNode_isNumLiteral (e1) + && context_flagOn (FLG_NUMABSTRACTLIT, e1->loc)) + { + ret = tr2; + } + else + { + if (gentypeerror + (tr1, e1, tr2, e2, + message ("Incompatible types for %s (%s, %s): %s %s %s", + lltok_unparse (op), + ctype_unparse (te1), + ctype_unparse (te2), + exprNode_unparse (e1), lltok_unparse (op), + exprNode_unparse (e2)), + e1->loc)) + { + ret = ctype_unknown; + } + else + { + ret = ctype_biggerType (tr1, tr2); + } + } } - ret = ctype_unknown; } else { - if (ctype_isForceRealNumeric (&tr1) && ctype_isForceRealNumeric (&tr2)) + if (ctype_isNumAbstract (tr1)) + { + ret = tr1; + } + else if (ctype_isForceRealNumeric (&tr1) + && ctype_isForceRealNumeric (&tr2)) { ret = ctype_resolveNumerics (tr1, tr2); } else if (!context_msgStrictOps ()) { - if (ctype_isPointer (tr1)) + if (ctype_isPointer (tr1)) { if (ctype_isPointer (tr2) && !exprNode_isNullValue (e2)) { @@ -10776,7 +10860,7 @@ static ctype return ret; } -static void +static bool abstractOpError (ctype tr1, ctype tr2, lltok op, /*@notnull@*/ exprNode e1, /*@notnull@*/ exprNode e2, fileloc loc1, fileloc loc2) @@ -10785,26 +10869,48 @@ abstractOpError (ctype tr1, ctype tr2, lltok op, { if (ctype_match (tr1, tr2)) { - voptgenerror - (FLG_ABSTRACT, - message ("Operands of %s are abstract type (%t): %s %s %s", - lltok_unparse (op), tr1, - exprNode_unparse (e1), lltok_unparse (op), exprNode_unparse (e2)), - loc1); + if (ctype_isRealNumAbstract (tr1)) + { + ; /* No warning for numabstract types */ + } + else + { + return optgenerror + (FLG_ABSTRACT, + message ("Operands of %s are abstract type (%t): %s %s %s", + lltok_unparse (op), tr1, + exprNode_unparse (e1), lltok_unparse (op), exprNode_unparse (e2)), + loc1); + } } else { - voptgenerror - (FLG_ABSTRACT, - message ("Operands of %s are abstract types (%t, %t): %s %s %s", - lltok_unparse (op), tr1, tr2, - exprNode_unparse (e1), lltok_unparse (op), exprNode_unparse (e2)), - loc1); + if (ctype_isRealNumAbstract (tr1) && ctype_isRealNumAbstract (tr2)) + { + return optgenerror + (FLG_NUMABSTRACT, + message + ("Operands of %s are different numabstract types (%t, %t): %s %s %s", + lltok_unparse (op), tr1, tr2, + exprNode_unparse (e1), + lltok_unparse (op), exprNode_unparse (e2)), + loc1); + } + else + { + return optgenerror + (FLG_ABSTRACT, + message ("Operands of %s are abstract types (%t, %t): %s %s %s", + lltok_unparse (op), tr1, tr2, + exprNode_unparse (e1), lltok_unparse (op), + exprNode_unparse (e2)), + loc1); + } } } - else if (ctype_isRealAbstract (tr1)) + else if (ctype_isRealAbstract (tr1) && !ctype_isRealNumAbstract (tr1)) { - voptgenerror + return optgenerror (FLG_ABSTRACT, message ("Left operand of %s is abstract type (%t): %s %s %s", lltok_unparse (op), tr1, @@ -10813,9 +10919,9 @@ abstractOpError (ctype tr1, ctype tr2, lltok op, } else { - if (ctype_isRealAbstract (tr2)) + if (ctype_isRealAbstract (tr2) && !ctype_isRealNumAbstract (tr2)) { - voptgenerror + return optgenerror (FLG_ABSTRACT, message ("Right operand of %s is abstract type (%t): %s %s %s", lltok_unparse (op), tr2, @@ -10823,6 +10929,8 @@ abstractOpError (ctype tr1, ctype tr2, lltok op, loc2); } } + + return FALSE; } /* diff --git a/src/fileTable.c b/src/fileTable.c index 701e5f5..c4dfb49 100644 --- a/src/fileTable.c +++ b/src/fileTable.c @@ -928,7 +928,7 @@ static /*@only@*/ cstring makeTempName (cstring dir, cstring pre, cstring suf) static int pid = 0; static /*@owned@*/ char *msg = NULL; static /*@only@*/ cstring pidname = NULL; - int maxlen; + size_t maxlen; cstring smsg; llassert (cstring_length (pre) <= 3); diff --git a/src/filelocList.c b/src/filelocList.c index cb4454b..44164d1 100644 --- a/src/filelocList.c +++ b/src/filelocList.c @@ -215,7 +215,7 @@ int filelocList_realSize (filelocList s) cstring filelocList_unparseUses (filelocList s) { int i; - int linelen = 0; + size_t linelen = 0; int maxlen = context_getLineLen () - 3; cstring st = cstring_undefined; fileId lastFile = fileId_invalid; @@ -240,7 +240,7 @@ cstring filelocList_unparseUses (filelocList s) { if (fileId_equal (fileloc_fileId (s->elements[i]), lastFile)) { - if (linelen + 7 > maxlen) + if (linelen + 7 > size_fromInt (maxlen)) { st = message ("%q\n ", st); linelen = 6; diff --git a/src/flags.c b/src/flags.c index 118f521..a067490 100644 --- a/src/flags.c +++ b/src/flags.c @@ -149,6 +149,10 @@ static /*@observer@*/ cstring argcode_unparse (argcode arg) # endif } +# ifdef WIN32 +# pragma warning (enable:4715) +# endif + typedef struct { flagkind main; flagkind sub; diff --git a/src/flags.def b/src/flags.def index dbab4de..29d9527 100644 --- a/src/flags.def +++ b/src/flags.def @@ -472,6 +472,30 @@ static flaglist flags = "An abstraction barrier is broken. If necessary, use /*@access @*/ to allow access to an abstract type.", 0, 0 }, + { + FK_ABSTRACT, FK_NONE, plainFlag, + "numabstract", + FLG_NUMABSTRACT, + "data abstraction barriers", + "An abstraction barrier involving a numabstract type is broken. If necessary, use /*@access @*/ to allow access to a numabstract type.", + 0, 0 + }, + { + FK_ABSTRACT, FK_NONE, modeFlag, + "numabstractcast", + FLG_NUMABSTRACTCAST, + "numeric literal cast to numabstract type", + "A numeric literal is cast to a numabstract type.", + 0, 0 + }, + { + FK_ABSTRACT, FK_NONE, modeFlag, + "numabstractlit", + FLG_NUMABSTRACTLIT, + "numeric literal can used as numabstract type", + "A numeric literal can be used as a numabstract type.", + 0, 0 + }, { FK_ABSTRACT, FK_IMPLICIT, plainFlag, "impabstract", diff --git a/src/general.c b/src/general.c index b4bbca9..c90c87d 100644 --- a/src/general.c +++ b/src/general.c @@ -394,6 +394,22 @@ size_t size_fromInt (int x) /*@ensures result==x@*/ return res; } +size_t size_fromLong (long x) /*@ensures result==x@*/ +{ + size_t res = (size_t) x; + + llassert ((long) res == x); + return res; +} + +size_t size_fromLongUnsigned (unsigned long x) /*@ensures result==x@*/ +{ + size_t res = (size_t) x; + + llassert ((unsigned long) res == x); + return res; +} + int size_toInt (size_t x) { int res = (int) x; diff --git a/src/inputStream.c b/src/inputStream.c index 95b102a..973267a 100644 --- a/src/inputStream.c +++ b/src/inputStream.c @@ -203,7 +203,7 @@ extern /*@dependent@*/ /*@null@*/ char *inputStream_nextLine (inputStream s) { char *currentLine; - int len; + size_t len; llassert (inputStream_isDefined (s)); llassert (s->curLine == NULL); @@ -226,15 +226,15 @@ char *inputStream_nextLine (inputStream s) c = strchr (s->stringSourceTail, '\0'); } - len = c - s->stringSourceTail + 1; + len = size_fromInt (c - s->stringSourceTail + 1); - if (len > STUBMAXRECORDSIZE - 2) + if (len > size_fromInt (STUBMAXRECORDSIZE - 2)) { - len = (STUBMAXRECORDSIZE - 2); + len = size_fromInt (STUBMAXRECORDSIZE - 2); } currentLine = &(s->buffer)[0]; - strncpy (currentLine, s->stringSourceTail, size_fromInt (len)); + strncpy (currentLine, s->stringSourceTail, len); currentLine[len] = '\0'; s->stringSourceTail += len; /*@noaccess cstring@*/ @@ -260,7 +260,7 @@ char *inputStream_nextLine (inputStream s) } else { - if (len >= STUBMAXRECORDSIZE - 2) + if (len >= size_fromInt (STUBMAXRECORDSIZE - 2)) { lldiagmsg (message ("Input line too long: %s", cstring_fromChars (currentLine))); diff --git a/src/lcllib.c b/src/lcllib.c index 15a08c5..4ea77cd 100644 --- a/src/lcllib.c +++ b/src/lcllib.c @@ -302,7 +302,7 @@ dumpState (cstring cfname) */ fprintf (f, "%s %s\n", LIBRARY_MARKER, cstring_toCharsSafe (fname)); - fprintf (f, ";;%s\n", SPLINT_VERSION); + fprintf (f, ";;Splint %f\n", SPLINT_LIBVERSION); fprintf (f, ";;lib:%d\n", (int) context_getLibrary ()); fprintf (f, ";;ctTable\n"); @@ -484,10 +484,13 @@ loadLCDFile (FILE *f, cstring name) vname = cstring_fromChars (buf + 9); loadllmsg (message ("Load library %s is in obsolete Splint library " - "format (version %s). Attempting " + "format (version %f (%s), expecting version %f). Attempting " "to continue anyway, but results may be incorrect. Rebuild " "the library with this version of splint.", - name, vname)); + name, + version, + vname, + SPLINT_LIBVERSION)); } else { diff --git a/src/lclsyntable.c b/src/lclsyntable.c index e3e038a..4c3f171 100644 --- a/src/lclsyntable.c +++ b/src/lclsyntable.c @@ -121,7 +121,8 @@ AllocSynTable (void) /*@globals SynTable; @*/ { /* First time SynTable allocated. Set initial size. */ newSize = INITSYNTABLE; - SynTable = (lsymbol *) dmalloc (newSize * sizeof (*SynTable)); + SynTable = (lsymbol *) dmalloc + (size_fromLongUnsigned (newSize * sizeof (*SynTable))); } else { @@ -131,7 +132,8 @@ AllocSynTable (void) /*@globals SynTable; @*/ /* Synonym table already allocated. Calulate extension size. */ newSize = (unsigned long) (DELTASYNTABLE * oldSize); - SynTable = (lsymbol *) dmalloc (newSize * sizeof (*SynTable)); + SynTable = (lsymbol *) dmalloc + (size_fromLongUnsigned (newSize * sizeof (*SynTable))); for (i = 0; i < oldSize; i++) { diff --git a/src/lcltokentable.c b/src/lcltokentable.c index 21971ad..dfb206b 100644 --- a/src/lcltokentable.c +++ b/src/lcltokentable.c @@ -161,7 +161,8 @@ static void { newSize = INITTOKENTABLE; llassert (LCLTokenTable == NULL); - LCLTokenTable = (ltoken *) dmalloc (newSize * sizeof (*LCLTokenTable)); + LCLTokenTable = (ltoken *) dmalloc + (size_fromLongUnsigned (newSize * sizeof (*LCLTokenTable))); } else { @@ -170,7 +171,8 @@ static void llassert (oldLCLTokenTable != NULL); newSize = (long unsigned) (DELTATOKENTABLE * oldSize); - LCLTokenTable = (ltoken *) dmalloc (newSize * sizeof (*LCLTokenTable)); + LCLTokenTable = (ltoken *) dmalloc + (size_fromLongUnsigned (newSize * sizeof (*LCLTokenTable))); for (i = 0; i < oldSize; i++) { diff --git a/src/llerror.c b/src/llerror.c index 150046f..6736658 100644 --- a/src/llerror.c +++ b/src/llerror.c @@ -638,18 +638,22 @@ llgentypeerroraux (char *srcFile, int srcLine, ut2 = ctype_baseArrayPtr (ut2); } - if ((ctype_isFloat (ut1) && ctype_isDouble (ut2)) - || (ctype_isFloat (ut1) && ctype_isDouble (ut2))) + if (ctype_isRealNumAbstract (ut1) && exprNode_isNumLiteral (e2)) + { + hcode = FLG_NUMABSTRACTLIT; + } + else if ((ctype_isFloat (ut1) && ctype_isDouble (ut2)) + || (ctype_isFloat (ut1) && ctype_isDouble (ut2))) { hcode = FLG_FLOATDOUBLE; } - else if ((exprNode_isCharLit (e1) && ctype_isInt (ut2)) - || (exprNode_isCharLit (e2) && ctype_isInt (ut1))) + else if ((exprNode_isCharLiteral (e1) && ctype_isInt (ut2)) + || (exprNode_isCharLiteral (e2) && ctype_isInt (ut1))) { hcode = FLG_CHARINTLITERAL; } - else if ((exprNode_isNumLit (e1) && ctype_isReal (ut2)) - || (exprNode_isNumLit (e2) && ctype_isReal (ut1))) + else if ((exprNode_isNumLiteral (e1) && ctype_isReal (ut2)) + || (exprNode_isNumLiteral (e2) && ctype_isReal (ut1))) { hcode = FLG_NUMLITERAL; } @@ -793,10 +797,32 @@ llgentypeerroraux (char *srcFile, int srcLine, if (ctype_match (ct, ut1)) { - code = FLG_ABSTRACT; - hint = message ("Underlying types match, but %s is an " - "abstract type that is not accessible here.", - ctype_unparse (t2)); + if (ctype_isNumAbstract (ut2)) + { + if (exprNode_isNumLiteral (e1)) + { + code = FLG_NUMABSTRACTLIT; + hint = message ("Underlying types match, but %s is a " + "numabstract type that is not accessible here. " + "(Use +numabstractlit to allow numeric literals " + "to be used as numabstract type values.)", + ctype_unparse (t2)); + } + else + { + code = FLG_NUMABSTRACT; + hint = message ("Underlying types match, but %s is a " + "numabstract type that is not accessible here.", + ctype_unparse (t2)); + } + } + else + { + code = FLG_ABSTRACT; + hint = message ("Underlying types match, but %s is an " + "abstract type that is not accessible here.", + ctype_unparse (t2)); + } } } else @@ -839,7 +865,7 @@ llgentypeerroraux (char *srcFile, int srcLine, { if (!context_suppressFlagMsg (ocode, fl)) { - return llgenhinterror (code, s, hint, fl); + return xllgenhinterror (srcFile, srcLine, code, s, hint, fl); } else { @@ -855,7 +881,8 @@ llgentypeerroraux (char *srcFile, int srcLine, code = hcode; } - if (llgenerroraux (ocode, srcFile, srcLine, s, flagcodeHint (code), fl, TRUE, FALSE)) + if (llgenerroraux (ocode, srcFile, srcLine, s, + flagcodeHint (code), fl, TRUE, FALSE)) { if (code != ocode) { @@ -1252,7 +1279,7 @@ void printError (FILE *stream, /*@only@*/ cstring sc) { int maxlen = context_getLineLen (); size_t nspaces = lastfileloclen + 5; - int nextlen = maxlen - nspaces; + int nextlen = maxlen - size_toInt (nspaces); size_t len = cstring_length (sc); int indent = 0; char *s = cstring_toCharsSafe (sc); @@ -1309,7 +1336,7 @@ void printError (FILE *stream, /*@only@*/ cstring sc) if (nspaces < 1) nspaces = 1; - nextlen = maxlen - nspaces; + nextlen = size_toInt (maxlen - nspaces); mstring_split (&s, &t, maxlen, &indent); @@ -1341,7 +1368,7 @@ void printError (FILE *stream, /*@only@*/ cstring sc) else { nspaces = 4; - nextlen = maxlen - nspaces; + nextlen = size_toInt (maxlen - nspaces); DPRINTF (("Here 2: [%s]", s)); mstring_split (&s, &t, maxlen, &indent); diff --git a/src/llgrammar.c.der b/src/llgrammar.c.der index 103951b..1dc52a1 100644 --- a/src/llgrammar.c.der +++ b/src/llgrammar.c.der @@ -54,9 +54,8 @@ /* < end of bison.head > */ - -/* A Bison parser, made from llgrammar.y - by GNU Bison version 1.28 */ +/* A Bison parser, made from llgrammar.y + by GNU bison 1.35. */ #define YYBISON 1 /* Identify Bison output. */ @@ -67,140 +66,140 @@ #define yychar ylchar #define yydebug yldebug #define yynerrs ylnerrs -#define simpleOp 257 -#define PREFIX_OP 258 -#define POSTFIX_OP 259 -#define LLT_MULOP 260 -#define LLT_SEMI 261 -#define LLT_VERTICALBAR 262 -#define ITERATION_OP 263 -#define LLT_LPAR 264 -#define LLT_LBRACKET 265 -#define selectSym 266 -#define LLT_IF_THEN_ELSE 267 -#define logicalOp 268 -#define eqSepSym 269 -#define equationSym 270 -#define commentSym 271 -#define LLT_WHITESPACE 272 -#define LLT_EOL 273 -#define LLT_TYPEDEF_NAME 274 -#define quantifierSym 275 -#define openSym 276 -#define closeSym 277 -#define sepSym 278 -#define simpleId 279 -#define mapSym 280 -#define markerSym 281 -#define preSym 282 -#define postSym 283 -#define anySym 284 -#define LLT_COLON 285 -#define LLT_COMMA 286 -#define LLT_EQUALS 287 -#define LLT_LBRACE 288 -#define LLT_RBRACE 289 -#define LLT_RBRACKET 290 -#define LLT_RPAR 291 -#define LLT_QUOTE 292 -#define eqOp 293 -#define LLT_CCHAR 294 -#define LLT_CFLOAT 295 -#define LLT_CINTEGER 296 -#define LLT_LCSTRING 297 -#define LLT_ALL 298 -#define LLT_ANYTHING 299 -#define LLT_BE 300 -#define LLT_BODY 301 -#define LLT_CLAIMS 302 -#define LLT_CHECKS 303 -#define LLT_CONSTANT 304 -#define LLT_ELSE 305 -#define LLT_ENSURES 306 -#define LLT_FOR 307 -#define LLT_FRESH 308 -#define LLT_IF 309 -#define LLT_IMMUTABLE 310 -#define LLT_IMPORTS 311 -#define LLT_CONSTRAINT 312 -#define LLT_ISSUB 313 -#define LLT_LET 314 -#define LLT_MODIFIES 315 -#define LLT_MUTABLE 316 -#define LLT_NOTHING 317 -#define LLT_INTERNAL 318 -#define LLT_FILESYS 319 -#define LLT_OBJ 320 -#define LLT_OUT 321 -#define LLT_SEF 322 -#define LLT_ONLY 323 -#define LLT_PARTIAL 324 -#define LLT_OWNED 325 -#define LLT_DEPENDENT 326 -#define LLT_KEEP 327 -#define LLT_KEPT 328 -#define LLT_TEMP 329 -#define LLT_SHARED 330 -#define LLT_UNIQUE 331 -#define LLT_UNUSED 332 -#define LLT_EXITS 333 -#define LLT_MAYEXIT 334 -#define LLT_NEVEREXIT 335 -#define LLT_TRUEEXIT 336 -#define LLT_FALSEEXIT 337 -#define LLT_UNDEF 338 -#define LLT_KILLED 339 -#define LLT_CHECKMOD 340 -#define LLT_CHECKED 341 -#define LLT_UNCHECKED 342 -#define LLT_CHECKEDSTRICT 343 -#define LLT_TRUENULL 344 -#define LLT_FALSENULL 345 -#define LLT_LNULL 346 -#define LLT_LNOTNULL 347 -#define LLT_RETURNED 348 -#define LLT_OBSERVER 349 -#define LLT_EXPOSED 350 -#define LLT_REFCOUNTED 351 -#define LLT_REFS 352 -#define LLT_RELNULL 353 -#define LLT_RELDEF 354 -#define LLT_KILLREF 355 -#define LLT_NULLTERMINATED 356 -#define LLT_TEMPREF 357 -#define LLT_NEWREF 358 -#define LLT_PRIVATE 359 -#define LLT_REQUIRES 360 -#define LLT_RESULT 361 -#define LLT_SIZEOF 362 -#define LLT_SPEC 363 -#define LLT_TAGGEDUNION 364 -#define LLT_THEN 365 -#define LLT_TYPE 366 -#define LLT_TYPEDEF 367 -#define LLT_UNCHANGED 368 -#define LLT_USES 369 -#define LLT_CHAR 370 -#define LLT_CONST 371 -#define LLT_DOUBLE 372 -#define LLT_ENUM 373 -#define LLT_FLOAT 374 -#define LLT_INT 375 -#define LLT_ITER 376 -#define LLT_YIELD 377 -#define LLT_LONG 378 -#define LLT_SHORT 379 -#define LLT_SIGNED 380 -#define LLT_UNKNOWN 381 -#define LLT_STRUCT 382 -#define LLT_TELIPSIS 383 -#define LLT_UNION 384 -#define LLT_UNSIGNED 385 -#define LLT_VOID 386 -#define LLT_VOLATILE 387 -#define LLT_PRINTFLIKE 388 -#define LLT_SCANFLIKE 389 -#define LLT_MESSAGELIKE 390 +# define simpleOp 257 +# define PREFIX_OP 258 +# define POSTFIX_OP 259 +# define LLT_MULOP 260 +# define LLT_SEMI 261 +# define LLT_VERTICALBAR 262 +# define ITERATION_OP 263 +# define LLT_LPAR 264 +# define LLT_LBRACKET 265 +# define selectSym 266 +# define LLT_IF_THEN_ELSE 267 +# define logicalOp 268 +# define eqSepSym 269 +# define equationSym 270 +# define commentSym 271 +# define LLT_WHITESPACE 272 +# define LLT_EOL 273 +# define LLT_TYPEDEF_NAME 274 +# define quantifierSym 275 +# define openSym 276 +# define closeSym 277 +# define sepSym 278 +# define simpleId 279 +# define mapSym 280 +# define markerSym 281 +# define preSym 282 +# define postSym 283 +# define anySym 284 +# define LLT_COLON 285 +# define LLT_COMMA 286 +# define LLT_EQUALS 287 +# define LLT_LBRACE 288 +# define LLT_RBRACE 289 +# define LLT_RBRACKET 290 +# define LLT_RPAR 291 +# define LLT_QUOTE 292 +# define eqOp 293 +# define LLT_CCHAR 294 +# define LLT_CFLOAT 295 +# define LLT_CINTEGER 296 +# define LLT_LCSTRING 297 +# define LLT_ALL 298 +# define LLT_ANYTHING 299 +# define LLT_BE 300 +# define LLT_BODY 301 +# define LLT_CLAIMS 302 +# define LLT_CHECKS 303 +# define LLT_CONSTANT 304 +# define LLT_ELSE 305 +# define LLT_ENSURES 306 +# define LLT_FOR 307 +# define LLT_FRESH 308 +# define LLT_IF 309 +# define LLT_IMMUTABLE 310 +# define LLT_IMPORTS 311 +# define LLT_CONSTRAINT 312 +# define LLT_ISSUB 313 +# define LLT_LET 314 +# define LLT_MODIFIES 315 +# define LLT_MUTABLE 316 +# define LLT_NOTHING 317 +# define LLT_INTERNAL 318 +# define LLT_FILESYS 319 +# define LLT_OBJ 320 +# define LLT_OUT 321 +# define LLT_SEF 322 +# define LLT_ONLY 323 +# define LLT_PARTIAL 324 +# define LLT_OWNED 325 +# define LLT_DEPENDENT 326 +# define LLT_KEEP 327 +# define LLT_KEPT 328 +# define LLT_TEMP 329 +# define LLT_SHARED 330 +# define LLT_UNIQUE 331 +# define LLT_UNUSED 332 +# define LLT_EXITS 333 +# define LLT_MAYEXIT 334 +# define LLT_NEVEREXIT 335 +# define LLT_TRUEEXIT 336 +# define LLT_FALSEEXIT 337 +# define LLT_UNDEF 338 +# define LLT_KILLED 339 +# define LLT_CHECKMOD 340 +# define LLT_CHECKED 341 +# define LLT_UNCHECKED 342 +# define LLT_CHECKEDSTRICT 343 +# define LLT_TRUENULL 344 +# define LLT_FALSENULL 345 +# define LLT_LNULL 346 +# define LLT_LNOTNULL 347 +# define LLT_RETURNED 348 +# define LLT_OBSERVER 349 +# define LLT_EXPOSED 350 +# define LLT_REFCOUNTED 351 +# define LLT_REFS 352 +# define LLT_RELNULL 353 +# define LLT_RELDEF 354 +# define LLT_KILLREF 355 +# define LLT_NULLTERMINATED 356 +# define LLT_TEMPREF 357 +# define LLT_NEWREF 358 +# define LLT_PRIVATE 359 +# define LLT_REQUIRES 360 +# define LLT_RESULT 361 +# define LLT_SIZEOF 362 +# define LLT_SPEC 363 +# define LLT_TAGGEDUNION 364 +# define LLT_THEN 365 +# define LLT_TYPE 366 +# define LLT_TYPEDEF 367 +# define LLT_UNCHANGED 368 +# define LLT_USES 369 +# define LLT_CHAR 370 +# define LLT_CONST 371 +# define LLT_DOUBLE 372 +# define LLT_ENUM 373 +# define LLT_FLOAT 374 +# define LLT_INT 375 +# define LLT_ITER 376 +# define LLT_YIELD 377 +# define LLT_LONG 378 +# define LLT_SHORT 379 +# define LLT_SIGNED 380 +# define LLT_UNKNOWN 381 +# define LLT_STRUCT 382 +# define LLT_TELIPSIS 383 +# define LLT_UNION 384 +# define LLT_UNSIGNED 385 +# define LLT_VOID 386 +# define LLT_VOLATILE 387 +# define LLT_PRINTFLIKE 388 +# define LLT_SCANFLIKE 389 +# define LLT_MESSAGELIKE 390 @@ -243,6 +242,7 @@ bool g_inTypeDef = FALSE; # endif +#ifndef YYSTYPE typedef union { ltoken ltok; /* a leaf is also an ltoken */ @@ -309,17 +309,12 @@ typedef union /*@only@*/ interfaceNodeList interfacelist; /*@only@*/ CTypesNode ctypes; /*@-redef@*/ -} YYSTYPE; -#ifndef YYDEBUG -#define YYDEBUG 1 -#endif - -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const +} yystype; +# define YYSTYPE yystype +# define YYSTYPE_IS_TRIVIAL 1 #endif +#ifndef YYDEBUG +# define YYDEBUG 1 #endif @@ -328,1277 +323,1316 @@ typedef union #define YYFLAG -32768 #define YYNTBASE 137 +/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ #define YYTRANSLATE(x) ((unsigned)(x) <= 390 ? yytranslate[x] : 291) -static const short yytranslate[] = { 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, 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, - 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, 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, - 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, 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, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136 +/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ +static const short yytranslate[] = +{ + 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, 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, 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, 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, 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, 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, 1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136 }; -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 1, 5, 6, 9, 11, 13, 14, 17, 20, - 21, 24, 26, 28, 30, 34, 38, 40, 42, 44, - 46, 48, 50, 57, 58, 60, 62, 66, 69, 71, - 72, 76, 78, 80, 82, 84, 89, 93, 98, 103, - 105, 107, 109, 111, 113, 114, 128, 129, 144, 145, - 159, 164, 165, 166, 173, 174, 175, 183, 184, 185, - 193, 194, 195, 202, 203, 204, 211, 214, 217, 219, - 223, 225, 229, 231, 233, 237, 239, 241, 245, 247, - 252, 256, 263, 265, 269, 271, 273, 277, 279, 283, - 285, 289, 293, 297, 302, 304, 306, 308, 310, 312, - 316, 318, 322, 323, 326, 330, 333, 336, 337, 340, - 345, 346, 350, 352, 356, 362, 366, 368, 369, 373, - 374, 378, 379, 383, 387, 391, 393, 397, 399, 401, - 404, 406, 408, 409, 413, 414, 418, 419, 421, 423, - 425, 429, 431, 435, 436, 441, 447, 449, 453, 456, - 460, 464, 469, 473, 479, 486, 488, 492, 494, 496, - 499, 502, 506, 510, 514, 519, 521, 525, 530, 534, - 535, 538, 539, 541, 542, 549, 551, 555, 556, 560, - 561, 565, 567, 569, 571, 573, 575, 577, 579, 581, - 583, 585, 587, 590, 592, 594, 596, 598, 600, 602, - 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, - 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, - 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, - 664, 666, 668, 670, 672, 675, 681, 683, 686, 688, - 691, 692, 699, 700, 707, 710, 713, 714, 716, 718, - 721, 725, 727, 731, 732, 734, 741, 744, 746, 750, - 752, 754, 756, 760, 763, 766, 770, 775, 777, 781, - 784, 787, 791, 796, 798, 801, 804, 808, 813, 816, - 819, 822, 825, 829, 831, 832, 834, 838, 841, 843, - 845, 848, 852, 856, 861, 864, 868, 875, 877, 880, - 883, 887, 891, 896, 901, 907, 911, 916, 921, 927, - 930, 933, 937, 941, 943, 945, 947, 949, 951, 953, - 955, 956, 958, 960, 964, 966, 968, 973, 974, 976, - 978, 982, 984, 986, 993, 995, 999, 1001, 1006, 1010, - 1014, 1016, 1019, 1022, 1024, 1026, 1028, 1031, 1033, 1036, - 1039, 1043, 1045, 1047, 1050, 1053, 1057, 1059, 1062, 1066, - 1068, 1074, 1078, 1083, 1086, 1090, 1093, 1095, 1099, 1103, - 1105, 1110, 1112, 1115, 1119, 1123, 1127, 1132, 1136, 1138, - 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1159, 1164, 1169, - 1174, 1181, 1186, 1188, 1190, 1192, 1194, 1196, 1199, 1200, - 1204, 1206, 1210, 1214, 1219, 1221, 1223, 1225, 1227, 1229, - 1231, 1233, 1235 +#if YYDEBUG +static const short yyprhs[] = +{ + 0, 0, 1, 5, 6, 9, 11, 13, 14, 17, + 20, 21, 24, 26, 28, 30, 34, 38, 40, 42, + 44, 46, 48, 50, 57, 58, 60, 62, 66, 69, + 71, 72, 76, 78, 80, 82, 84, 89, 93, 98, + 103, 105, 107, 109, 111, 113, 114, 128, 129, 144, + 145, 159, 164, 165, 166, 173, 174, 175, 183, 184, + 185, 193, 194, 195, 202, 203, 204, 211, 214, 217, + 219, 223, 225, 229, 231, 233, 237, 239, 241, 245, + 247, 252, 256, 263, 265, 269, 271, 273, 277, 279, + 283, 285, 289, 293, 297, 302, 304, 306, 308, 310, + 312, 316, 318, 322, 323, 326, 330, 333, 336, 337, + 340, 345, 346, 350, 352, 356, 362, 366, 368, 369, + 373, 374, 378, 379, 383, 387, 391, 393, 397, 399, + 401, 404, 406, 408, 409, 413, 414, 418, 419, 421, + 423, 425, 429, 431, 435, 436, 441, 447, 449, 453, + 456, 460, 464, 469, 473, 479, 486, 488, 492, 494, + 496, 499, 502, 506, 510, 514, 519, 521, 525, 530, + 534, 535, 538, 539, 541, 542, 549, 551, 555, 556, + 560, 561, 565, 567, 569, 571, 573, 575, 577, 579, + 581, 583, 585, 587, 590, 592, 594, 596, 598, 600, + 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, + 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, + 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, + 662, 664, 666, 668, 670, 672, 675, 681, 683, 686, + 688, 691, 692, 699, 700, 707, 710, 713, 714, 716, + 718, 721, 725, 727, 731, 732, 734, 741, 744, 746, + 750, 752, 754, 756, 760, 763, 766, 770, 775, 777, + 781, 784, 787, 791, 796, 798, 801, 804, 808, 813, + 816, 819, 822, 825, 829, 831, 832, 834, 838, 841, + 843, 845, 848, 852, 856, 861, 864, 868, 875, 877, + 880, 883, 887, 891, 896, 901, 907, 911, 916, 921, + 927, 930, 933, 937, 941, 943, 945, 947, 949, 951, + 953, 955, 956, 958, 960, 964, 966, 968, 973, 974, + 976, 978, 982, 984, 986, 993, 995, 999, 1001, 1006, + 1010, 1014, 1016, 1019, 1022, 1024, 1026, 1028, 1031, 1033, + 1036, 1039, 1043, 1045, 1047, 1050, 1053, 1057, 1059, 1062, + 1066, 1068, 1074, 1078, 1083, 1086, 1090, 1093, 1095, 1099, + 1103, 1105, 1110, 1112, 1115, 1119, 1123, 1127, 1132, 1136, + 1138, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1159, 1164, + 1169, 1174, 1181, 1186, 1188, 1190, 1192, 1194, 1196, 1199, + 1200, 1204, 1206, 1210, 1214, 1219, 1221, 1223, 1225, 1227, + 1229, 1231, 1233, 1235 }; - -static const short yyrhs[] = { -1, - 139, 138, 141, 0, 0, 139, 140, 0, 144, 0, - 145, 0, 0, 146, 142, 0, 151, 142, 0, 0, - 142, 143, 0, 146, 0, 151, 0, 145, 0, 57, - 175, 7, 0, 115, 179, 7, 0, 154, 0, 155, - 0, 156, 0, 158, 0, 161, 0, 147, 0, 122, - 285, 10, 148, 37, 7, 0, 0, 149, 0, 150, - 0, 149, 32, 150, 0, 123, 244, 0, 244, 0, - 0, 109, 152, 153, 0, 154, 0, 155, 0, 156, - 0, 158, 0, 50, 227, 189, 7, 0, 227, 189, - 7, 0, 117, 227, 189, 7, 0, 133, 227, 189, - 7, 0, 163, 0, 172, 0, 134, 0, 135, 0, - 136, 0, 0, 227, 240, 191, 159, 34, 193, 195, - 199, 200, 201, 204, 205, 35, 0, 0, 157, 227, - 240, 191, 160, 34, 193, 195, 199, 200, 201, 204, - 205, 35, 0, 0, 48, 287, 10, 206, 37, 191, - 162, 34, 195, 200, 209, 204, 35, 0, 48, 284, - 287, 7, 0, 0, 0, 62, 164, 112, 20, 165, - 214, 0, 0, 0, 62, 166, 97, 112, 20, 167, - 214, 0, 0, 0, 97, 62, 168, 112, 20, 169, - 214, 0, 0, 0, 56, 170, 112, 20, 171, 214, - 0, 0, 0, 113, 227, 173, 219, 174, 7, 0, - 230, 7, 0, 238, 7, 0, 176, 0, 175, 32, - 176, 0, 178, 0, 3, 178, 3, 0, 43, 0, - 178, 0, 177, 32, 178, 0, 283, 0, 180, 0, - 179, 32, 180, 0, 289, 0, 289, 10, 182, 37, - 0, 10, 181, 37, 0, 10, 181, 37, 10, 182, - 37, 0, 289, 0, 181, 32, 289, 0, 184, 0, - 183, 0, 183, 32, 184, 0, 245, 0, 183, 32, - 245, 0, 185, 0, 184, 32, 185, 0, 245, 53, - 223, 0, 245, 53, 186, 0, 245, 53, 186, 256, - 0, 290, 0, 249, 0, 188, 0, 260, 0, 190, - 0, 189, 32, 190, 0, 240, 0, 240, 33, 187, - 0, 0, 191, 192, 0, 227, 189, 7, 0, 64, - 7, 0, 65, 7, 0, 0, 193, 194, 0, 105, - 227, 189, 7, 0, 0, 60, 196, 7, 0, 197, - 0, 196, 32, 197, 0, 285, 31, 198, 46, 260, - 0, 285, 46, 260, 0, 227, 0, 0, 49, 259, - 7, 0, 0, 106, 259, 7, 0, 0, 61, 63, - 7, 0, 61, 45, 7, 0, 61, 202, 7, 0, - 203, 0, 202, 32, 203, 0, 260, 0, 228, 0, - 66, 228, 0, 64, 0, 65, 0, 0, 52, 259, - 7, 0, 0, 48, 259, 7, 0, 0, 207, 0, - 208, 0, 129, 0, 208, 32, 129, 0, 244, 0, - 208, 32, 244, 0, 0, 47, 34, 210, 35, 0, - 47, 34, 210, 7, 35, 0, 211, 0, 10, 210, - 37, 0, 210, 6, 0, 210, 8, 210, 0, 210, - 7, 210, 0, 284, 10, 212, 37, 0, 284, 10, - 37, 0, 285, 33, 284, 10, 37, 0, 285, 33, - 284, 10, 212, 37, 0, 213, 0, 212, 32, 213, - 0, 277, 0, 285, 0, 3, 213, 0, 213, 3, - 0, 213, 3, 213, 0, 10, 213, 37, 0, 284, - 10, 37, 0, 284, 10, 212, 37, 0, 7, 0, - 34, 215, 35, 0, 34, 177, 35, 7, 0, 34, - 35, 7, 0, 0, 215, 158, 0, 0, 217, 0, - 0, 58, 218, 279, 10, 259, 37, 0, 220, 0, - 219, 32, 220, 0, 0, 240, 221, 222, 0, 0, - 34, 216, 35, 0, 132, 0, 116, 0, 118, 0, - 120, 0, 121, 0, 124, 0, 125, 0, 126, 0, - 131, 0, 127, 0, 223, 0, 224, 223, 0, 20, - 0, 224, 0, 67, 0, 78, 0, 68, 0, 69, - 0, 71, 0, 72, 0, 73, 0, 74, 0, 95, - 0, 79, 0, 80, 0, 82, 0, 83, 0, 81, - 0, 75, 0, 76, 0, 77, 0, 87, 0, 88, - 0, 89, 0, 90, 0, 91, 0, 99, 0, 100, - 0, 97, 0, 98, 0, 104, 0, 101, 0, 92, - 0, 93, 0, 94, 0, 96, 0, 70, 0, 102, - 0, 84, 0, 85, 0, 225, 0, 230, 0, 238, - 0, 226, 227, 0, 8, 228, 31, 228, 8, 0, - 227, 0, 227, 229, 0, 6, 0, 229, 6, 0, - 0, 128, 233, 231, 34, 234, 35, 0, 0, 130, - 233, 232, 34, 234, 35, 0, 128, 286, 0, 130, - 286, 0, 0, 286, 0, 235, 0, 234, 235, 0, - 227, 236, 7, 0, 240, 0, 236, 32, 240, 0, - 0, 32, 0, 119, 233, 34, 239, 237, 35, 0, - 119, 286, 0, 25, 0, 239, 32, 25, 0, 242, - 0, 241, 0, 285, 0, 10, 241, 37, 0, 6, - 241, 0, 241, 248, 0, 241, 10, 37, 0, 241, - 10, 207, 37, 0, 20, 0, 10, 242, 37, 0, - 6, 242, 0, 242, 248, 0, 242, 10, 37, 0, - 242, 10, 207, 37, 0, 20, 0, 6, 243, 0, - 243, 248, 0, 243, 10, 37, 0, 243, 10, 207, - 37, 0, 227, 243, 0, 227, 241, 0, 227, 246, - 0, 227, 246, 0, 66, 227, 246, 0, 249, 0, - 0, 247, 0, 10, 247, 37, 0, 6, 247, 0, - 6, 0, 248, 0, 247, 248, 0, 247, 10, 37, - 0, 10, 207, 37, 0, 247, 10, 207, 37, 0, - 11, 36, 0, 11, 188, 36, 0, 55, 27, 111, - 27, 51, 27, 0, 252, 0, 27, 252, 0, 252, - 27, 0, 27, 252, 27, 0, 250, 253, 251, 0, - 27, 250, 253, 251, 0, 250, 253, 251, 27, 0, - 27, 250, 253, 251, 27, 0, 11, 253, 36, 0, - 11, 253, 36, 27, 0, 27, 11, 253, 36, 0, - 27, 11, 253, 36, 27, 0, 12, 283, 0, 26, - 283, 0, 27, 12, 283, 0, 27, 26, 283, 0, - 22, 0, 34, 0, 23, 0, 35, 0, 264, 0, - 14, 0, 39, 0, 0, 254, 0, 27, 0, 254, - 255, 27, 0, 32, 0, 24, 0, 31, 257, 26, - 288, 0, 0, 258, 0, 288, 0, 258, 32, 288, - 0, 260, 0, 261, 0, 55, 261, 111, 261, 51, - 261, 0, 262, 0, 261, 14, 261, 0, 263, 0, - 278, 10, 259, 37, 0, 263, 39, 263, 0, 263, - 33, 263, 0, 265, 0, 268, 266, 0, 268, 267, - 0, 3, 0, 6, 0, 268, 0, 264, 265, 0, - 264, 0, 266, 264, 0, 264, 268, 0, 267, 264, - 268, 0, 273, 0, 269, 0, 269, 273, 0, 273, - 269, 0, 273, 269, 273, 0, 270, 0, 270, 273, - 0, 271, 31, 288, 0, 271, 0, 11, 272, 36, - 31, 288, 0, 11, 272, 36, 0, 11, 36, 31, - 288, 0, 11, 36, 0, 250, 272, 251, 0, 250, - 251, 0, 260, 0, 272, 255, 260, 0, 10, 261, - 37, 0, 285, 0, 290, 10, 274, 37, 0, 276, - 0, 273, 275, 0, 273, 12, 283, 0, 273, 26, - 283, 0, 273, 11, 36, 0, 273, 11, 274, 36, - 0, 273, 31, 288, 0, 261, 0, 274, 32, 261, - 0, 28, 0, 29, 0, 30, 0, 38, 0, 277, - 0, 107, 0, 54, 10, 274, 37, 0, 114, 10, - 44, 37, 0, 114, 10, 202, 37, 0, 108, 10, - 260, 37, 0, 59, 10, 260, 32, 260, 37, 0, - 108, 10, 227, 37, 0, 42, 0, 43, 0, 40, - 0, 41, 0, 279, 0, 278, 279, 0, 0, 21, - 280, 281, 0, 282, 0, 281, 32, 282, 0, 285, - 31, 198, 0, 285, 31, 66, 198, 0, 25, 0, - 20, 0, 25, 0, 25, 0, 283, 0, 283, 0, - 283, 0, 283, 0, 283, 0 +static const short yyrhs[] = +{ + -1, 139, 138, 141, 0, 0, 139, 140, 0, 144, + 0, 145, 0, 0, 146, 142, 0, 151, 142, 0, + 0, 142, 143, 0, 146, 0, 151, 0, 145, 0, + 57, 175, 7, 0, 115, 179, 7, 0, 154, 0, + 155, 0, 156, 0, 158, 0, 161, 0, 147, 0, + 122, 285, 10, 148, 37, 7, 0, 0, 149, 0, + 150, 0, 149, 32, 150, 0, 123, 244, 0, 244, + 0, 0, 109, 152, 153, 0, 154, 0, 155, 0, + 156, 0, 158, 0, 50, 227, 189, 7, 0, 227, + 189, 7, 0, 117, 227, 189, 7, 0, 133, 227, + 189, 7, 0, 163, 0, 172, 0, 134, 0, 135, + 0, 136, 0, 0, 227, 240, 191, 159, 34, 193, + 195, 199, 200, 201, 204, 205, 35, 0, 0, 157, + 227, 240, 191, 160, 34, 193, 195, 199, 200, 201, + 204, 205, 35, 0, 0, 48, 287, 10, 206, 37, + 191, 162, 34, 195, 200, 209, 204, 35, 0, 48, + 284, 287, 7, 0, 0, 0, 62, 164, 112, 20, + 165, 214, 0, 0, 0, 62, 166, 97, 112, 20, + 167, 214, 0, 0, 0, 97, 62, 168, 112, 20, + 169, 214, 0, 0, 0, 56, 170, 112, 20, 171, + 214, 0, 0, 0, 113, 227, 173, 219, 174, 7, + 0, 230, 7, 0, 238, 7, 0, 176, 0, 175, + 32, 176, 0, 178, 0, 3, 178, 3, 0, 43, + 0, 178, 0, 177, 32, 178, 0, 283, 0, 180, + 0, 179, 32, 180, 0, 289, 0, 289, 10, 182, + 37, 0, 10, 181, 37, 0, 10, 181, 37, 10, + 182, 37, 0, 289, 0, 181, 32, 289, 0, 184, + 0, 183, 0, 183, 32, 184, 0, 245, 0, 183, + 32, 245, 0, 185, 0, 184, 32, 185, 0, 245, + 53, 223, 0, 245, 53, 186, 0, 245, 53, 186, + 256, 0, 290, 0, 249, 0, 188, 0, 260, 0, + 190, 0, 189, 32, 190, 0, 240, 0, 240, 33, + 187, 0, 0, 191, 192, 0, 227, 189, 7, 0, + 64, 7, 0, 65, 7, 0, 0, 193, 194, 0, + 105, 227, 189, 7, 0, 0, 60, 196, 7, 0, + 197, 0, 196, 32, 197, 0, 285, 31, 198, 46, + 260, 0, 285, 46, 260, 0, 227, 0, 0, 49, + 259, 7, 0, 0, 106, 259, 7, 0, 0, 61, + 63, 7, 0, 61, 45, 7, 0, 61, 202, 7, + 0, 203, 0, 202, 32, 203, 0, 260, 0, 228, + 0, 66, 228, 0, 64, 0, 65, 0, 0, 52, + 259, 7, 0, 0, 48, 259, 7, 0, 0, 207, + 0, 208, 0, 129, 0, 208, 32, 129, 0, 244, + 0, 208, 32, 244, 0, 0, 47, 34, 210, 35, + 0, 47, 34, 210, 7, 35, 0, 211, 0, 10, + 210, 37, 0, 210, 6, 0, 210, 8, 210, 0, + 210, 7, 210, 0, 284, 10, 212, 37, 0, 284, + 10, 37, 0, 285, 33, 284, 10, 37, 0, 285, + 33, 284, 10, 212, 37, 0, 213, 0, 212, 32, + 213, 0, 277, 0, 285, 0, 3, 213, 0, 213, + 3, 0, 213, 3, 213, 0, 10, 213, 37, 0, + 284, 10, 37, 0, 284, 10, 212, 37, 0, 7, + 0, 34, 215, 35, 0, 34, 177, 35, 7, 0, + 34, 35, 7, 0, 0, 215, 158, 0, 0, 217, + 0, 0, 58, 218, 279, 10, 259, 37, 0, 220, + 0, 219, 32, 220, 0, 0, 240, 221, 222, 0, + 0, 34, 216, 35, 0, 132, 0, 116, 0, 118, + 0, 120, 0, 121, 0, 124, 0, 125, 0, 126, + 0, 131, 0, 127, 0, 223, 0, 224, 223, 0, + 20, 0, 224, 0, 67, 0, 78, 0, 68, 0, + 69, 0, 71, 0, 72, 0, 73, 0, 74, 0, + 95, 0, 79, 0, 80, 0, 82, 0, 83, 0, + 81, 0, 75, 0, 76, 0, 77, 0, 87, 0, + 88, 0, 89, 0, 90, 0, 91, 0, 99, 0, + 100, 0, 97, 0, 98, 0, 104, 0, 101, 0, + 92, 0, 93, 0, 94, 0, 96, 0, 70, 0, + 102, 0, 84, 0, 85, 0, 225, 0, 230, 0, + 238, 0, 226, 227, 0, 8, 228, 31, 228, 8, + 0, 227, 0, 227, 229, 0, 6, 0, 229, 6, + 0, 0, 128, 233, 231, 34, 234, 35, 0, 0, + 130, 233, 232, 34, 234, 35, 0, 128, 286, 0, + 130, 286, 0, 0, 286, 0, 235, 0, 234, 235, + 0, 227, 236, 7, 0, 240, 0, 236, 32, 240, + 0, 0, 32, 0, 119, 233, 34, 239, 237, 35, + 0, 119, 286, 0, 25, 0, 239, 32, 25, 0, + 242, 0, 241, 0, 285, 0, 10, 241, 37, 0, + 6, 241, 0, 241, 248, 0, 241, 10, 37, 0, + 241, 10, 207, 37, 0, 20, 0, 10, 242, 37, + 0, 6, 242, 0, 242, 248, 0, 242, 10, 37, + 0, 242, 10, 207, 37, 0, 20, 0, 6, 243, + 0, 243, 248, 0, 243, 10, 37, 0, 243, 10, + 207, 37, 0, 227, 243, 0, 227, 241, 0, 227, + 246, 0, 227, 246, 0, 66, 227, 246, 0, 249, + 0, 0, 247, 0, 10, 247, 37, 0, 6, 247, + 0, 6, 0, 248, 0, 247, 248, 0, 247, 10, + 37, 0, 10, 207, 37, 0, 247, 10, 207, 37, + 0, 11, 36, 0, 11, 188, 36, 0, 55, 27, + 111, 27, 51, 27, 0, 252, 0, 27, 252, 0, + 252, 27, 0, 27, 252, 27, 0, 250, 253, 251, + 0, 27, 250, 253, 251, 0, 250, 253, 251, 27, + 0, 27, 250, 253, 251, 27, 0, 11, 253, 36, + 0, 11, 253, 36, 27, 0, 27, 11, 253, 36, + 0, 27, 11, 253, 36, 27, 0, 12, 283, 0, + 26, 283, 0, 27, 12, 283, 0, 27, 26, 283, + 0, 22, 0, 34, 0, 23, 0, 35, 0, 264, + 0, 14, 0, 39, 0, 0, 254, 0, 27, 0, + 254, 255, 27, 0, 32, 0, 24, 0, 31, 257, + 26, 288, 0, 0, 258, 0, 288, 0, 258, 32, + 288, 0, 260, 0, 261, 0, 55, 261, 111, 261, + 51, 261, 0, 262, 0, 261, 14, 261, 0, 263, + 0, 278, 10, 259, 37, 0, 263, 39, 263, 0, + 263, 33, 263, 0, 265, 0, 268, 266, 0, 268, + 267, 0, 3, 0, 6, 0, 268, 0, 264, 265, + 0, 264, 0, 266, 264, 0, 264, 268, 0, 267, + 264, 268, 0, 273, 0, 269, 0, 269, 273, 0, + 273, 269, 0, 273, 269, 273, 0, 270, 0, 270, + 273, 0, 271, 31, 288, 0, 271, 0, 11, 272, + 36, 31, 288, 0, 11, 272, 36, 0, 11, 36, + 31, 288, 0, 11, 36, 0, 250, 272, 251, 0, + 250, 251, 0, 260, 0, 272, 255, 260, 0, 10, + 261, 37, 0, 285, 0, 290, 10, 274, 37, 0, + 276, 0, 273, 275, 0, 273, 12, 283, 0, 273, + 26, 283, 0, 273, 11, 36, 0, 273, 11, 274, + 36, 0, 273, 31, 288, 0, 261, 0, 274, 32, + 261, 0, 28, 0, 29, 0, 30, 0, 38, 0, + 277, 0, 107, 0, 54, 10, 274, 37, 0, 114, + 10, 44, 37, 0, 114, 10, 202, 37, 0, 108, + 10, 260, 37, 0, 59, 10, 260, 32, 260, 37, + 0, 108, 10, 227, 37, 0, 42, 0, 43, 0, + 40, 0, 41, 0, 279, 0, 278, 279, 0, 0, + 21, 280, 281, 0, 282, 0, 281, 32, 282, 0, + 285, 31, 198, 0, 285, 31, 66, 198, 0, 25, + 0, 20, 0, 25, 0, 25, 0, 283, 0, 283, + 0, 283, 0, 283, 0, 283, 0 }; #endif -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 382, 383, 387, 388, 392, 393, 397, 398, 399, 403, - 404, 408, 409, 410, 414, 421, 426, 428, 430, 432, - 434, 436, 441, 446, 447, 451, 453, 458, 459, 463, - 464, 468, 470, 472, 474, 479, 484, 486, 488, 493, - 494, 498, 499, 500, 504, 505, 512, 514, 525, 527, - 530, 535, 535, 536, 537, 537, 539, 540, 541, 542, - 543, 543, 544, 548, 549, 550, 551, 553, 570, 572, - 577, 578, 580, 584, 585, 589, 594, 596, 601, 603, - 605, 607, 612, 613, 617, 619, 621, 625, 627, 631, - 633, 637, 638, 639, 644, 645, 648, 651, 655, 657, - 662, 663, 667, 669, 674, 675, 676, 680, 681, 685, - 690, 691, 695, 696, 700, 701, 704, 708, 709, 713, - 714, 718, 719, 720, 721, 725, 726, 730, 731, 732, - 733, 734, 738, 739, 743, 744, 748, 749, 753, 754, - 755, 759, 760, 764, 765, 766, 770, 771, 774, 779, - 785, 794, 796, 798, 800, 805, 806, 810, 811, 812, - 813, 814, 815, 816, 818, 823, 824, 825, 826, 830, - 831, 835, 836, 840, 840, 850, 851, 856, 857, 861, - 862, 866, 867, 868, 869, 870, 871, 872, 873, 874, - 875, 884, 885, 891, 893, 900, 901, 902, 903, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 939, 941, 943, 945, 947, 957, 958, 964, 965, - 969, 971, 973, 975, 977, 979, 984, 985, 989, 990, - 996, 1000, 1002, 1007, 1008, 1012, 1014, 1019, 1020, 1031, - 1032, 1036, 1037, 1038, 1039, 1040, 1041, 1045, 1046, 1047, - 1048, 1049, 1050, 1060, 1061, 1062, 1063, 1064, 1071, 1072, - 1073, 1084, 1085, 1086, 1092, 1093, 1097, 1098, 1099, 1100, - 1101, 1102, 1103, 1104, 1108, 1109, 1113, 1115, 1117, 1119, - 1121, 1124, 1126, 1128, 1130, 1132, 1134, 1142, 1144, 1146, - 1149, 1152, 1155, 1161, 1162, 1166, 1167, 1171, 1172, 1173, - 1177, 1178, 1182, 1183, 1187, 1188, 1192, 1196, 1197, 1201, - 1202, 1206, 1210, 1217, 1219, 1220, 1224, 1225, 1230, 1232, - 1237, 1238, 1239, 1243, 1244, 1248, 1249, 1253, 1254, 1258, - 1259, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1273, 1274, - 1278, 1281, 1283, 1287, 1292, 1293, 1297, 1298, 1302, 1304, - 1306, 1308, 1309, 1311, 1313, 1315, 1318, 1320, 1325, 1326, - 1330, 1331, 1332, 1333, 1337, 1338, 1339, 1340, 1341, 1342, - 1347, 1353, 1364, 1365, 1366, 1367, 1371, 1373, 1378, 1382, - 1386, 1387, 1391, 1392, 1396, 1397, 1401, 1402, 1403, 1404, - 1405, 1406, 1407 +#if YYDEBUG +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const short yyrline[] = +{ + 0, 382, 382, 387, 388, 392, 393, 397, 398, 399, + 403, 404, 408, 409, 410, 414, 421, 426, 428, 430, + 432, 434, 436, 441, 446, 447, 451, 453, 458, 459, + 463, 463, 468, 470, 472, 474, 479, 484, 486, 488, + 493, 494, 498, 499, 500, 504, 504, 512, 512, 525, + 525, 530, 535, 535, 535, 537, 537, 537, 540, 540, + 540, 543, 543, 543, 548, 548, 548, 551, 553, 570, + 572, 577, 578, 580, 584, 585, 589, 594, 596, 601, + 603, 605, 607, 612, 613, 617, 619, 621, 625, 627, + 631, 633, 637, 638, 639, 644, 645, 648, 651, 655, + 657, 662, 663, 667, 669, 674, 675, 676, 680, 681, + 685, 690, 691, 695, 696, 700, 701, 704, 708, 709, + 713, 714, 718, 719, 720, 721, 725, 726, 730, 731, + 732, 733, 734, 738, 739, 743, 744, 748, 749, 753, + 754, 755, 759, 760, 764, 765, 766, 770, 771, 774, + 779, 785, 794, 796, 798, 800, 805, 806, 810, 811, + 812, 813, 814, 815, 816, 818, 823, 824, 825, 826, + 830, 831, 835, 836, 840, 840, 850, 851, 856, 856, + 861, 862, 866, 867, 868, 869, 870, 871, 872, 873, + 874, 875, 884, 885, 891, 893, 900, 901, 902, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, + 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, + 934, 935, 939, 941, 943, 945, 947, 957, 958, 964, + 965, 969, 969, 973, 973, 977, 979, 984, 985, 989, + 990, 996, 1000, 1002, 1007, 1008, 1012, 1014, 1019, 1020, + 1031, 1032, 1036, 1037, 1038, 1039, 1040, 1041, 1045, 1046, + 1047, 1048, 1049, 1050, 1060, 1061, 1062, 1063, 1064, 1071, + 1072, 1073, 1084, 1085, 1086, 1092, 1093, 1097, 1098, 1099, + 1100, 1101, 1102, 1103, 1104, 1108, 1109, 1113, 1115, 1117, + 1119, 1121, 1124, 1126, 1128, 1130, 1132, 1134, 1142, 1144, + 1146, 1149, 1152, 1155, 1161, 1162, 1166, 1167, 1171, 1172, + 1173, 1177, 1178, 1182, 1183, 1187, 1188, 1192, 1196, 1197, + 1201, 1202, 1206, 1210, 1217, 1219, 1220, 1224, 1225, 1230, + 1232, 1237, 1238, 1239, 1243, 1244, 1248, 1249, 1253, 1254, + 1258, 1259, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1273, + 1274, 1278, 1281, 1283, 1287, 1292, 1293, 1297, 1298, 1302, + 1304, 1306, 1308, 1309, 1311, 1313, 1315, 1318, 1320, 1325, + 1326, 1330, 1331, 1332, 1333, 1337, 1338, 1339, 1340, 1341, + 1342, 1347, 1353, 1364, 1365, 1366, 1367, 1371, 1373, 1378, + 1378, 1386, 1387, 1391, 1392, 1396, 1397, 1401, 1402, 1403, + 1404, 1405, 1406, 1407 }; #endif -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","simpleOp", -"PREFIX_OP","POSTFIX_OP","LLT_MULOP","LLT_SEMI","LLT_VERTICALBAR","ITERATION_OP", -"LLT_LPAR","LLT_LBRACKET","selectSym","LLT_IF_THEN_ELSE","logicalOp","eqSepSym", -"equationSym","commentSym","LLT_WHITESPACE","LLT_EOL","LLT_TYPEDEF_NAME","quantifierSym", -"openSym","closeSym","sepSym","simpleId","mapSym","markerSym","preSym","postSym", -"anySym","LLT_COLON","LLT_COMMA","LLT_EQUALS","LLT_LBRACE","LLT_RBRACE","LLT_RBRACKET", -"LLT_RPAR","LLT_QUOTE","eqOp","LLT_CCHAR","LLT_CFLOAT","LLT_CINTEGER","LLT_LCSTRING", -"LLT_ALL","LLT_ANYTHING","LLT_BE","LLT_BODY","LLT_CLAIMS","LLT_CHECKS","LLT_CONSTANT", -"LLT_ELSE","LLT_ENSURES","LLT_FOR","LLT_FRESH","LLT_IF","LLT_IMMUTABLE","LLT_IMPORTS", -"LLT_CONSTRAINT","LLT_ISSUB","LLT_LET","LLT_MODIFIES","LLT_MUTABLE","LLT_NOTHING", -"LLT_INTERNAL","LLT_FILESYS","LLT_OBJ","LLT_OUT","LLT_SEF","LLT_ONLY","LLT_PARTIAL", -"LLT_OWNED","LLT_DEPENDENT","LLT_KEEP","LLT_KEPT","LLT_TEMP","LLT_SHARED","LLT_UNIQUE", -"LLT_UNUSED","LLT_EXITS","LLT_MAYEXIT","LLT_NEVEREXIT","LLT_TRUEEXIT","LLT_FALSEEXIT", -"LLT_UNDEF","LLT_KILLED","LLT_CHECKMOD","LLT_CHECKED","LLT_UNCHECKED","LLT_CHECKEDSTRICT", -"LLT_TRUENULL","LLT_FALSENULL","LLT_LNULL","LLT_LNOTNULL","LLT_RETURNED","LLT_OBSERVER", -"LLT_EXPOSED","LLT_REFCOUNTED","LLT_REFS","LLT_RELNULL","LLT_RELDEF","LLT_KILLREF", -"LLT_NULLTERMINATED","LLT_TEMPREF","LLT_NEWREF","LLT_PRIVATE","LLT_REQUIRES", -"LLT_RESULT","LLT_SIZEOF","LLT_SPEC","LLT_TAGGEDUNION","LLT_THEN","LLT_TYPE", -"LLT_TYPEDEF","LLT_UNCHANGED","LLT_USES","LLT_CHAR","LLT_CONST","LLT_DOUBLE", -"LLT_ENUM","LLT_FLOAT","LLT_INT","LLT_ITER","LLT_YIELD","LLT_LONG","LLT_SHORT", -"LLT_SIGNED","LLT_UNKNOWN","LLT_STRUCT","LLT_TELIPSIS","LLT_UNION","LLT_UNSIGNED", -"LLT_VOID","LLT_VOLATILE","LLT_PRINTFLIKE","LLT_SCANFLIKE","LLT_MESSAGELIKE", -"interface","@1","externals","external","optDeclarations","declarations","declaration", -"imports","uses","export","iter","iterParamList","realIterParamList","iterParam", -"private","@2","private2","constDeclaration","varDeclaration","type","special", -"fcn","@3","@4","claim","@5","abstract","@6","@7","@8","@9","@10","@11","@12", -"@13","exposed","@14","@15","importNameList","importName","interfaceNameList", -"interfaceName","traitRefNodeList","traitRef","traitIdList","renaming","nameList", -"replaceNodeList","replace","name","initializer","constLclExpr","initDecls", -"initDecl","globals","globalDecl","privateInits","privateInit","optLetDecl", -"beDeclList","beDecl","sortSpec","optChecks","optRequire","optModify","storeRefList", -"storeRef","optEnsure","optClaim","optParamList","realParamList","paramList", -"optBody","callExpr","stmt","valueList","value","abstBody","fcns","optTypeInv", -"typeInv","@16","declaratorInvs","declaratorInv","@17","optExposedBody","CType", -"CTypes","typeSpecifier","specialQualifier","lclTypeSpec","lclType","pointers", -"structOrUnionSpec","@18","@19","optTagId","structDecls","structDecl","declaratorList", -"optCOMMA","enumSpec","enumeratorList","declarator","notype_decl","after_type_decl", -"parameter_decl","param","typeName","optAbstDeclarator","abstDeclarator","arrayQual", -"opForm","open","close","anyOp","middle","placeList","separator","signature", -"domain","sortList","lclPredicate","term","term0","equalityTerm","simpleOpTerm", -"simpleOp2","prefixOpTerm","postfixOps","infixOpPart","secondary","bracketed", -"sqBracketed","matched","args","primary","termList","stateFcn","lclPrimary", -"cLiteral","quantifiers","quantifier","@20","quantifiedList","quantified","simpleIdOrTypedefName", -"fcnId","varId","tagId","claimId","sortId","traitId","opId", NULL +#if (YYDEBUG) || defined YYERROR_VERBOSE + +/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ +static const char *const yytname[] = +{ + "$", "error", "$undefined.", "simpleOp", "PREFIX_OP", "POSTFIX_OP", + "LLT_MULOP", "LLT_SEMI", "LLT_VERTICALBAR", "ITERATION_OP", "LLT_LPAR", + "LLT_LBRACKET", "selectSym", "LLT_IF_THEN_ELSE", "logicalOp", + "eqSepSym", "equationSym", "commentSym", "LLT_WHITESPACE", "LLT_EOL", + "LLT_TYPEDEF_NAME", "quantifierSym", "openSym", "closeSym", "sepSym", + "simpleId", "mapSym", "markerSym", "preSym", "postSym", "anySym", + "LLT_COLON", "LLT_COMMA", "LLT_EQUALS", "LLT_LBRACE", "LLT_RBRACE", + "LLT_RBRACKET", "LLT_RPAR", "LLT_QUOTE", "eqOp", "LLT_CCHAR", + "LLT_CFLOAT", "LLT_CINTEGER", "LLT_LCSTRING", "LLT_ALL", "LLT_ANYTHING", + "LLT_BE", "LLT_BODY", "LLT_CLAIMS", "LLT_CHECKS", "LLT_CONSTANT", + "LLT_ELSE", "LLT_ENSURES", "LLT_FOR", "LLT_FRESH", "LLT_IF", + "LLT_IMMUTABLE", "LLT_IMPORTS", "LLT_CONSTRAINT", "LLT_ISSUB", + "LLT_LET", "LLT_MODIFIES", "LLT_MUTABLE", "LLT_NOTHING", "LLT_INTERNAL", + "LLT_FILESYS", "LLT_OBJ", "LLT_OUT", "LLT_SEF", "LLT_ONLY", + "LLT_PARTIAL", "LLT_OWNED", "LLT_DEPENDENT", "LLT_KEEP", "LLT_KEPT", + "LLT_TEMP", "LLT_SHARED", "LLT_UNIQUE", "LLT_UNUSED", "LLT_EXITS", + "LLT_MAYEXIT", "LLT_NEVEREXIT", "LLT_TRUEEXIT", "LLT_FALSEEXIT", + "LLT_UNDEF", "LLT_KILLED", "LLT_CHECKMOD", "LLT_CHECKED", + "LLT_UNCHECKED", "LLT_CHECKEDSTRICT", "LLT_TRUENULL", "LLT_FALSENULL", + "LLT_LNULL", "LLT_LNOTNULL", "LLT_RETURNED", "LLT_OBSERVER", + "LLT_EXPOSED", "LLT_REFCOUNTED", "LLT_REFS", "LLT_RELNULL", + "LLT_RELDEF", "LLT_KILLREF", "LLT_NULLTERMINATED", "LLT_TEMPREF", + "LLT_NEWREF", "LLT_PRIVATE", "LLT_REQUIRES", "LLT_RESULT", "LLT_SIZEOF", + "LLT_SPEC", "LLT_TAGGEDUNION", "LLT_THEN", "LLT_TYPE", "LLT_TYPEDEF", + "LLT_UNCHANGED", "LLT_USES", "LLT_CHAR", "LLT_CONST", "LLT_DOUBLE", + "LLT_ENUM", "LLT_FLOAT", "LLT_INT", "LLT_ITER", "LLT_YIELD", "LLT_LONG", + "LLT_SHORT", "LLT_SIGNED", "LLT_UNKNOWN", "LLT_STRUCT", "LLT_TELIPSIS", + "LLT_UNION", "LLT_UNSIGNED", "LLT_VOID", "LLT_VOLATILE", + "LLT_PRINTFLIKE", "LLT_SCANFLIKE", "LLT_MESSAGELIKE", "interface", "@1", + "externals", "external", "optDeclarations", "declarations", + "declaration", "imports", "uses", "export", "iter", "iterParamList", + "realIterParamList", "iterParam", "private", "@2", "private2", + "constDeclaration", "varDeclaration", "type", "special", "fcn", "@3", + "@4", "claim", "@5", "abstract", "@6", "@7", "@8", "@9", "@10", "@11", + "@12", "@13", "exposed", "@14", "@15", "importNameList", "importName", + "interfaceNameList", "interfaceName", "traitRefNodeList", "traitRef", + "traitIdList", "renaming", "nameList", "replaceNodeList", "replace", + "name", "initializer", "constLclExpr", "initDecls", "initDecl", + "globals", "globalDecl", "privateInits", "privateInit", "optLetDecl", + "beDeclList", "beDecl", "sortSpec", "optChecks", "optRequire", + "optModify", "storeRefList", "storeRef", "optEnsure", "optClaim", + "optParamList", "realParamList", "paramList", "optBody", "callExpr", + "stmt", "valueList", "value", "abstBody", "fcns", "optTypeInv", + "typeInv", "@16", "declaratorInvs", "declaratorInv", "@17", + "optExposedBody", "CType", "CTypes", "typeSpecifier", + "specialQualifier", "lclTypeSpec", "lclType", "pointers", + "structOrUnionSpec", "@18", "@19", "optTagId", "structDecls", + "structDecl", "declaratorList", "optCOMMA", "enumSpec", + "enumeratorList", "declarator", "notype_decl", "after_type_decl", + "parameter_decl", "param", "typeName", "optAbstDeclarator", + "abstDeclarator", "arrayQual", "opForm", "open", "close", "anyOp", + "middle", "placeList", "separator", "signature", "domain", "sortList", + "lclPredicate", "term", "term0", "equalityTerm", "simpleOpTerm", + "simpleOp2", "prefixOpTerm", "postfixOps", "infixOpPart", "secondary", + "bracketed", "sqBracketed", "matched", "args", "primary", "termList", + "stateFcn", "lclPrimary", "cLiteral", "quantifiers", "quantifier", + "@20", "quantifiedList", "quantified", "simpleIdOrTypedefName", "fcnId", + "varId", "tagId", "claimId", "sortId", "traitId", "opId", 0 }; #endif -static const short yyr1[] = { 0, - 138, 137, 139, 139, 140, 140, 141, 141, 141, 142, - 142, 143, 143, 143, 144, 145, 146, 146, 146, 146, - 146, 146, 147, 148, 148, 149, 149, 150, 150, 152, - 151, 153, 153, 153, 153, 154, 155, 155, 155, 156, - 156, 157, 157, 157, 159, 158, 160, 158, 162, 161, - 161, 164, 165, 163, 166, 167, 163, 168, 169, 163, - 170, 171, 163, 173, 174, 172, 172, 172, 175, 175, - 176, 176, 176, 177, 177, 178, 179, 179, 180, 180, - 180, 180, 181, 181, 182, 182, 182, 183, 183, 184, - 184, 185, 185, 185, 186, 186, 187, 188, 189, 189, - 190, 190, 191, 191, 192, 192, 192, 193, 193, 194, - 195, 195, 196, 196, 197, 197, 198, 199, 199, 200, - 200, 201, 201, 201, 201, 202, 202, 203, 203, 203, - 203, 203, 204, 204, 205, 205, 206, 206, 207, 207, - 207, 208, 208, 209, 209, 209, 210, 210, 210, 210, - 210, 211, 211, 211, 211, 212, 212, 213, 213, 213, - 213, 213, 213, 213, 213, 214, 214, 214, 214, 215, - 215, 216, 216, 218, 217, 219, 219, 221, 220, 222, - 222, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 224, 224, 225, 225, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 227, 227, 227, 227, 227, 228, 228, 229, 229, - 231, 230, 232, 230, 230, 230, 233, 233, 234, 234, - 235, 236, 236, 237, 237, 238, 238, 239, 239, 240, - 240, 241, 241, 241, 241, 241, 241, 242, 242, 242, - 242, 242, 242, 243, 243, 243, 243, 243, 244, 244, - 244, 245, 245, 245, 246, 246, 247, 247, 247, 247, - 247, 247, 247, 247, 248, 248, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 250, 250, 251, 251, 252, 252, 252, - 253, 253, 254, 254, 255, 255, 256, 257, 257, 258, - 258, 259, 260, 261, 261, 261, 262, 262, 262, 262, - 263, 263, 263, 264, 264, 265, 265, 266, 266, 267, - 267, 268, 268, 268, 268, 268, 268, 268, 269, 269, - 270, 270, 270, 270, 271, 271, 272, 272, 273, 273, - 273, 273, 273, 273, 273, 273, 273, 273, 274, 274, - 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, - 276, 276, 277, 277, 277, 277, 278, 278, 280, 279, - 281, 281, 282, 282, 283, 283, 284, 285, 286, 287, - 288, 289, 290 +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const short yyr1[] = +{ + 0, 138, 137, 139, 139, 140, 140, 141, 141, 141, + 142, 142, 143, 143, 143, 144, 145, 146, 146, 146, + 146, 146, 146, 147, 148, 148, 149, 149, 150, 150, + 152, 151, 153, 153, 153, 153, 154, 155, 155, 155, + 156, 156, 157, 157, 157, 159, 158, 160, 158, 162, + 161, 161, 164, 165, 163, 166, 167, 163, 168, 169, + 163, 170, 171, 163, 173, 174, 172, 172, 172, 175, + 175, 176, 176, 176, 177, 177, 178, 179, 179, 180, + 180, 180, 180, 181, 181, 182, 182, 182, 183, 183, + 184, 184, 185, 185, 185, 186, 186, 187, 188, 189, + 189, 190, 190, 191, 191, 192, 192, 192, 193, 193, + 194, 195, 195, 196, 196, 197, 197, 198, 199, 199, + 200, 200, 201, 201, 201, 201, 202, 202, 203, 203, + 203, 203, 203, 204, 204, 205, 205, 206, 206, 207, + 207, 207, 208, 208, 209, 209, 209, 210, 210, 210, + 210, 210, 211, 211, 211, 211, 212, 212, 213, 213, + 213, 213, 213, 213, 213, 213, 214, 214, 214, 214, + 215, 215, 216, 216, 218, 217, 219, 219, 221, 220, + 222, 222, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 224, 224, 225, 225, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 227, 227, 227, 227, 227, 228, 228, 229, + 229, 231, 230, 232, 230, 230, 230, 233, 233, 234, + 234, 235, 236, 236, 237, 237, 238, 238, 239, 239, + 240, 240, 241, 241, 241, 241, 241, 241, 242, 242, + 242, 242, 242, 242, 243, 243, 243, 243, 243, 244, + 244, 244, 245, 245, 245, 246, 246, 247, 247, 247, + 247, 247, 247, 247, 247, 248, 248, 249, 249, 249, + 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 249, 249, 249, 250, 250, 251, 251, 252, 252, + 252, 253, 253, 254, 254, 255, 255, 256, 257, 257, + 258, 258, 259, 260, 261, 261, 261, 262, 262, 262, + 262, 263, 263, 263, 264, 264, 265, 265, 266, 266, + 267, 267, 268, 268, 268, 268, 268, 268, 268, 269, + 269, 270, 270, 270, 270, 271, 271, 272, 272, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 274, + 274, 275, 275, 275, 275, 276, 276, 276, 276, 276, + 276, 276, 276, 277, 277, 277, 277, 278, 278, 280, + 279, 281, 281, 282, 282, 283, 283, 284, 285, 286, + 287, 288, 289, 290 }; -static const short yyr2[] = { 0, - 0, 3, 0, 2, 1, 1, 0, 2, 2, 0, - 2, 1, 1, 1, 3, 3, 1, 1, 1, 1, - 1, 1, 6, 0, 1, 1, 3, 2, 1, 0, - 3, 1, 1, 1, 1, 4, 3, 4, 4, 1, - 1, 1, 1, 1, 0, 13, 0, 14, 0, 13, - 4, 0, 0, 6, 0, 0, 7, 0, 0, 7, - 0, 0, 6, 0, 0, 6, 2, 2, 1, 3, - 1, 3, 1, 1, 3, 1, 1, 3, 1, 4, - 3, 6, 1, 3, 1, 1, 3, 1, 3, 1, - 3, 3, 3, 4, 1, 1, 1, 1, 1, 3, - 1, 3, 0, 2, 3, 2, 2, 0, 2, 4, - 0, 3, 1, 3, 5, 3, 1, 0, 3, 0, - 3, 0, 3, 3, 3, 1, 3, 1, 1, 2, - 1, 1, 0, 3, 0, 3, 0, 1, 1, 1, - 3, 1, 3, 0, 4, 5, 1, 3, 2, 3, - 3, 4, 3, 5, 6, 1, 3, 1, 1, 2, - 2, 3, 3, 3, 4, 1, 3, 4, 3, 0, - 2, 0, 1, 0, 6, 1, 3, 0, 3, 0, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 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, 2, 5, 1, 2, 1, 2, - 0, 6, 0, 6, 2, 2, 0, 1, 1, 2, - 3, 1, 3, 0, 1, 6, 2, 1, 3, 1, - 1, 1, 3, 2, 2, 3, 4, 1, 3, 2, - 2, 3, 4, 1, 2, 2, 3, 4, 2, 2, - 2, 2, 3, 1, 0, 1, 3, 2, 1, 1, - 2, 3, 3, 4, 2, 3, 6, 1, 2, 2, - 3, 3, 4, 4, 5, 3, 4, 4, 5, 2, - 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 3, 1, 1, 4, 0, 1, 1, - 3, 1, 1, 6, 1, 3, 1, 4, 3, 3, - 1, 2, 2, 1, 1, 1, 2, 1, 2, 2, - 3, 1, 1, 2, 2, 3, 1, 2, 3, 1, - 5, 3, 4, 2, 3, 2, 1, 3, 3, 1, - 4, 1, 2, 3, 3, 3, 4, 3, 1, 3, - 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, - 6, 4, 1, 1, 1, 1, 1, 2, 0, 3, - 1, 3, 3, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 1 +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const short yyr2[] = +{ + 0, 0, 3, 0, 2, 1, 1, 0, 2, 2, + 0, 2, 1, 1, 1, 3, 3, 1, 1, 1, + 1, 1, 1, 6, 0, 1, 1, 3, 2, 1, + 0, 3, 1, 1, 1, 1, 4, 3, 4, 4, + 1, 1, 1, 1, 1, 0, 13, 0, 14, 0, + 13, 4, 0, 0, 6, 0, 0, 7, 0, 0, + 7, 0, 0, 6, 0, 0, 6, 2, 2, 1, + 3, 1, 3, 1, 1, 3, 1, 1, 3, 1, + 4, 3, 6, 1, 3, 1, 1, 3, 1, 3, + 1, 3, 3, 3, 4, 1, 1, 1, 1, 1, + 3, 1, 3, 0, 2, 3, 2, 2, 0, 2, + 4, 0, 3, 1, 3, 5, 3, 1, 0, 3, + 0, 3, 0, 3, 3, 3, 1, 3, 1, 1, + 2, 1, 1, 0, 3, 0, 3, 0, 1, 1, + 1, 3, 1, 3, 0, 4, 5, 1, 3, 2, + 3, 3, 4, 3, 5, 6, 1, 3, 1, 1, + 2, 2, 3, 3, 3, 4, 1, 3, 4, 3, + 0, 2, 0, 1, 0, 6, 1, 3, 0, 3, + 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 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, 2, 5, 1, 2, 1, + 2, 0, 6, 0, 6, 2, 2, 0, 1, 1, + 2, 3, 1, 3, 0, 1, 6, 2, 1, 3, + 1, 1, 1, 3, 2, 2, 3, 4, 1, 3, + 2, 2, 3, 4, 1, 2, 2, 3, 4, 2, + 2, 2, 2, 3, 1, 0, 1, 3, 2, 1, + 1, 2, 3, 3, 4, 2, 3, 6, 1, 2, + 2, 3, 3, 4, 4, 5, 3, 4, 4, 5, + 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 3, 1, 1, 4, 0, 1, + 1, 3, 1, 1, 6, 1, 3, 1, 4, 3, + 3, 1, 2, 2, 1, 1, 1, 2, 1, 2, + 2, 3, 1, 1, 2, 2, 3, 1, 2, 3, + 1, 5, 3, 4, 2, 3, 2, 1, 3, 3, + 1, 4, 1, 2, 3, 3, 3, 4, 3, 1, + 3, 1, 1, 1, 1, 1, 1, 4, 4, 4, + 4, 6, 4, 1, 1, 1, 1, 1, 2, 0, + 3, 1, 3, 3, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1 }; -static const short yydefact[] = { 3, - 1, 0, 0, 7, 4, 5, 6, 0, 406, 405, - 73, 0, 69, 71, 76, 0, 0, 77, 412, 79, - 0, 194, 0, 0, 61, 52, 196, 198, 199, 228, - 200, 201, 202, 203, 210, 211, 212, 197, 205, 206, - 209, 207, 208, 230, 231, 213, 214, 215, 216, 217, - 224, 225, 226, 204, 227, 220, 221, 218, 219, 223, - 229, 222, 30, 0, 183, 0, 184, 247, 185, 186, - 0, 187, 188, 189, 191, 247, 247, 190, 182, 0, - 42, 43, 44, 2, 10, 22, 10, 17, 18, 19, - 0, 20, 21, 40, 41, 192, 195, 232, 0, 0, - 233, 234, 0, 15, 0, 0, 83, 16, 0, 0, - 220, 237, 0, 233, 234, 407, 410, 0, 0, 0, - 0, 0, 0, 58, 0, 64, 0, 0, 409, 257, - 408, 0, 241, 245, 243, 246, 0, 8, 9, 0, - 193, 235, 0, 0, 268, 0, 99, 103, 261, 260, - 262, 67, 68, 72, 70, 0, 81, 78, 344, 345, - 321, 0, 319, 314, 0, 0, 315, 320, 0, 0, - 0, 86, 85, 90, 285, 88, 284, 321, 298, 318, - 239, 238, 0, 0, 137, 0, 101, 0, 0, 0, - 0, 31, 32, 33, 34, 35, 0, 0, 0, 24, - 0, 0, 0, 11, 14, 12, 13, 103, 264, 270, - 0, 0, 37, 0, 0, 45, 0, 0, 265, 0, - 271, 84, 0, 323, 0, 322, 310, 311, 321, 0, - 0, 321, 299, 0, 285, 80, 0, 0, 289, 0, - 282, 286, 290, 0, 0, 300, 240, 0, 51, 140, - 0, 138, 139, 285, 142, 36, 62, 53, 0, 0, - 65, 176, 178, 38, 258, 254, 0, 0, 25, 26, - 29, 0, 0, 39, 47, 263, 269, 100, 0, 0, - 399, 408, 395, 396, 393, 394, 0, 0, 0, 386, - 0, 0, 102, 97, 0, 98, 333, 335, 337, 0, - 341, 346, 353, 357, 360, 352, 372, 385, 0, 397, - 413, 370, 0, 0, 0, 0, 104, 0, 266, 0, - 295, 0, 272, 0, 0, 306, 326, 325, 0, 0, - 312, 313, 0, 301, 0, 283, 87, 89, 91, 0, - 288, 0, 0, 0, 291, 93, 92, 96, 95, 316, - 317, 302, 236, 103, 0, 289, 0, 274, 280, 279, - 281, 0, 0, 56, 59, 0, 0, 180, 255, 0, - 28, 0, 0, 0, 0, 249, 0, 0, 0, 364, - 367, 0, 0, 0, 0, 0, 0, 0, 366, 0, - 0, 0, 0, 347, 346, 348, 342, 343, 354, 358, - 0, 0, 0, 0, 381, 382, 383, 0, 384, 355, - 373, 0, 398, 0, 106, 107, 108, 0, 267, 296, - 273, 82, 307, 324, 308, 303, 0, 293, 287, 292, - 0, 328, 94, 304, 49, 141, 143, 275, 289, 0, - 276, 166, 170, 63, 54, 0, 0, 177, 66, 172, - 179, 259, 256, 23, 27, 0, 252, 242, 250, 244, - 108, 369, 0, 362, 0, 400, 401, 0, 379, 0, - 0, 0, 194, 0, 0, 0, 131, 132, 0, 0, - 126, 129, 128, 365, 336, 340, 339, 350, 349, 0, - 411, 359, 376, 0, 374, 375, 378, 356, 0, 332, - 0, 111, 105, 309, 305, 0, 294, 0, 329, 330, - 0, 277, 0, 0, 0, 74, 0, 57, 60, 174, - 0, 173, 251, 0, 111, 363, 0, 368, 0, 0, - 0, 387, 0, 0, 392, 390, 388, 130, 0, 389, - 351, 377, 338, 371, 0, 0, 109, 118, 297, 0, - 0, 111, 278, 169, 0, 0, 167, 171, 0, 0, - 181, 253, 118, 361, 402, 0, 403, 117, 380, 0, - 0, 127, 0, 113, 0, 0, 0, 120, 327, 331, - 120, 75, 168, 103, 0, 120, 404, 334, 391, 112, - 0, 0, 0, 0, 0, 0, 122, 144, 0, 122, - 114, 0, 116, 110, 119, 0, 0, 133, 0, 133, - 0, 133, 0, 121, 0, 0, 0, 0, 135, 0, - 0, 175, 135, 115, 124, 123, 125, 0, 0, 0, - 0, 408, 0, 147, 0, 0, 50, 0, 134, 0, - 46, 0, 149, 0, 0, 145, 0, 0, 48, 136, - 0, 148, 146, 151, 150, 0, 0, 153, 0, 156, - 158, 0, 159, 407, 0, 160, 0, 0, 152, 161, - 0, 0, 163, 157, 162, 164, 0, 154, 0, 165, - 155, 0, 0, 0 +/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE + doesn't specify something else to do. Zero means the default is an + error. */ +static const short yydefact[] = +{ + 3, 1, 0, 0, 7, 4, 5, 6, 0, 406, + 405, 73, 0, 69, 71, 76, 0, 0, 77, 412, + 79, 0, 194, 0, 0, 61, 52, 196, 198, 199, + 228, 200, 201, 202, 203, 210, 211, 212, 197, 205, + 206, 209, 207, 208, 230, 231, 213, 214, 215, 216, + 217, 224, 225, 226, 204, 227, 220, 221, 218, 219, + 223, 229, 222, 30, 0, 183, 0, 184, 247, 185, + 186, 0, 187, 188, 189, 191, 247, 247, 190, 182, + 0, 42, 43, 44, 2, 10, 22, 10, 17, 18, + 19, 0, 20, 21, 40, 41, 192, 195, 232, 0, + 0, 233, 234, 0, 15, 0, 0, 83, 16, 0, + 0, 220, 237, 0, 233, 234, 407, 410, 0, 0, + 0, 0, 0, 0, 58, 0, 64, 0, 0, 409, + 257, 408, 0, 241, 245, 243, 246, 0, 8, 9, + 0, 193, 235, 0, 0, 268, 0, 99, 103, 261, + 260, 262, 67, 68, 72, 70, 0, 81, 78, 344, + 345, 321, 0, 319, 314, 0, 0, 315, 320, 0, + 0, 0, 86, 85, 90, 285, 88, 284, 321, 298, + 318, 239, 238, 0, 0, 137, 0, 101, 0, 0, + 0, 0, 31, 32, 33, 34, 35, 0, 0, 0, + 24, 0, 0, 0, 11, 14, 12, 13, 103, 264, + 270, 0, 0, 37, 0, 0, 45, 0, 0, 265, + 0, 271, 84, 0, 323, 0, 322, 310, 311, 321, + 0, 0, 321, 299, 0, 285, 80, 0, 0, 289, + 0, 282, 286, 290, 0, 0, 300, 240, 0, 51, + 140, 0, 138, 139, 285, 142, 36, 62, 53, 0, + 0, 65, 176, 178, 38, 258, 254, 0, 0, 25, + 26, 29, 0, 0, 39, 47, 263, 269, 100, 0, + 0, 399, 408, 395, 396, 393, 394, 0, 0, 0, + 386, 0, 0, 102, 97, 0, 98, 333, 335, 337, + 0, 341, 346, 353, 357, 360, 352, 372, 385, 0, + 397, 413, 370, 0, 0, 0, 0, 104, 0, 266, + 0, 295, 0, 272, 0, 0, 306, 326, 325, 0, + 0, 312, 313, 0, 301, 0, 283, 87, 89, 91, + 0, 288, 0, 0, 0, 291, 93, 92, 96, 95, + 316, 317, 302, 236, 103, 0, 289, 0, 274, 280, + 279, 281, 0, 0, 56, 59, 0, 0, 180, 255, + 0, 28, 0, 0, 0, 0, 249, 0, 0, 0, + 364, 367, 0, 0, 0, 0, 0, 0, 0, 366, + 0, 0, 0, 0, 347, 346, 348, 342, 343, 354, + 358, 0, 0, 0, 0, 381, 382, 383, 0, 384, + 355, 373, 0, 398, 0, 106, 107, 108, 0, 267, + 296, 273, 82, 307, 324, 308, 303, 0, 293, 287, + 292, 0, 328, 94, 304, 49, 141, 143, 275, 289, + 0, 276, 166, 170, 63, 54, 0, 0, 177, 66, + 172, 179, 259, 256, 23, 27, 0, 252, 242, 250, + 244, 108, 369, 0, 362, 0, 400, 401, 0, 379, + 0, 0, 0, 194, 0, 0, 0, 131, 132, 0, + 0, 126, 129, 128, 365, 336, 340, 339, 350, 349, + 0, 411, 359, 376, 0, 374, 375, 378, 356, 0, + 332, 0, 111, 105, 309, 305, 0, 294, 0, 329, + 330, 0, 277, 0, 0, 0, 74, 0, 57, 60, + 174, 0, 173, 251, 0, 111, 363, 0, 368, 0, + 0, 0, 387, 0, 0, 392, 390, 388, 130, 0, + 389, 351, 377, 338, 371, 0, 0, 109, 118, 297, + 0, 0, 111, 278, 169, 0, 0, 167, 171, 0, + 0, 181, 253, 118, 361, 402, 0, 403, 117, 380, + 0, 0, 127, 0, 113, 0, 0, 0, 120, 327, + 331, 120, 75, 168, 103, 0, 120, 404, 334, 391, + 112, 0, 0, 0, 0, 0, 0, 122, 144, 0, + 122, 114, 0, 116, 110, 119, 0, 0, 133, 0, + 133, 0, 133, 0, 121, 0, 0, 0, 0, 135, + 0, 0, 175, 135, 115, 124, 123, 125, 0, 0, + 0, 0, 408, 0, 147, 0, 0, 50, 0, 134, + 0, 46, 0, 149, 0, 0, 145, 0, 0, 48, + 136, 0, 148, 146, 151, 150, 0, 0, 153, 0, + 156, 158, 0, 159, 407, 0, 160, 0, 0, 152, + 161, 0, 0, 163, 157, 162, 164, 0, 154, 0, + 165, 155, 0, 0, 0 }; -static const short yydefgoto[] = { 682, - 4, 1, 5, 84, 138, 204, 6, 205, 206, 86, - 268, 269, 270, 207, 125, 192, 88, 89, 90, 91, - 92, 316, 378, 93, 511, 94, 122, 363, 123, 446, - 191, 447, 121, 362, 95, 197, 367, 12, 13, 515, - 14, 17, 18, 106, 171, 172, 173, 174, 346, 293, - 294, 146, 147, 216, 317, 502, 547, 548, 573, 574, - 567, 578, 597, 608, 480, 481, 619, 630, 251, 342, - 253, 610, 654, 634, 659, 660, 444, 517, 521, 522, - 560, 261, 262, 368, 451, 96, 97, 98, 99, 254, - 482, 182, 114, 201, 202, 128, 375, 376, 456, 370, - 115, 266, 187, 149, 150, 360, 255, 176, 241, 242, - 243, 177, 295, 352, 179, 225, 226, 465, 433, 508, - 509, 499, 500, 297, 298, 299, 300, 301, 397, 398, - 302, 303, 304, 305, 382, 306, 470, 411, 307, 308, - 309, 310, 383, 466, 467, 311, 662, 312, 130, 119, - 492, 20, 313 +static const short yydefgoto[] = +{ + 682, 4, 1, 5, 84, 138, 204, 6, 205, 206, + 86, 268, 269, 270, 207, 125, 192, 88, 89, 90, + 91, 92, 316, 378, 93, 511, 94, 122, 363, 123, + 446, 191, 447, 121, 362, 95, 197, 367, 12, 13, + 515, 14, 17, 18, 106, 171, 172, 173, 174, 346, + 293, 294, 146, 147, 216, 317, 502, 547, 548, 573, + 574, 567, 578, 597, 608, 480, 481, 619, 630, 251, + 342, 253, 610, 654, 634, 659, 660, 444, 517, 521, + 522, 560, 261, 262, 368, 451, 96, 97, 98, 99, + 254, 482, 182, 114, 201, 202, 128, 375, 376, 456, + 370, 115, 266, 187, 149, 150, 360, 255, 176, 241, + 242, 243, 177, 295, 352, 179, 225, 226, 465, 433, + 508, 509, 499, 500, 297, 298, 299, 300, 301, 397, + 398, 302, 303, 304, 305, 382, 306, 470, 411, 307, + 308, 309, 310, 383, 466, 467, 311, 662, 312, 130, + 119, 492, 20, 313 }; -static const short yypact[] = {-32768, - -25, 136, 368, 1350,-32768,-32768,-32768, 181,-32768,-32768, --32768, 94,-32768,-32768,-32768, 181, 110,-32768,-32768, 33, - 2903,-32768, 182, 2903,-32768, 17,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, -11,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 2903,-32768, 2903,-32768, 181,-32768,-32768, - 108,-32768,-32768,-32768,-32768, 181, 181,-32768,-32768, 2903, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 2903,-32768,-32768,-32768,-32768,-32768, 399,-32768, 2903, 408, - 155, 192, 205,-32768, 136, 204,-32768,-32768, 368, 1152, --32768, 233, 223,-32768,-32768, 266,-32768, 181, 305, 408, - 211, 235, 264,-32768, 1445,-32768, 408, 339,-32768, 347, --32768, 377,-32768, 347,-32768, 347, 408, 1247, 1247, 408, --32768,-32768, 408, 408,-32768, 196,-32768, 259, 322, 409, --32768,-32768,-32768,-32768,-32768, 181, 387,-32768,-32768,-32768, - 386, 181,-32768,-32768, 181, 534,-32768,-32768, 403, 2903, - 410, 445, 453,-32768, 360, 439,-32768, 386, 474,-32768, --32768, 496, 2903, 497, 2319, 239, 470, 486, 492, 401, - 404,-32768,-32768,-32768,-32768,-32768, 408, 282, 493, 2414, - 488, 494, 288,-32768,-32768,-32768,-32768,-32768, 322, 409, - 121, 141,-32768, 408, 3200, 1836, 1933, 3059,-32768, 2030, --32768,-32768, 1152,-32768, 499, 122,-32768,-32768, 386, 181, - 181, 386, 502, 421, 360,-32768, 1152, 1152, 360, 1741, --32768, 454,-32768, 328, 80,-32768,-32768, 525,-32768,-32768, - 504,-32768, 507, 380,-32768,-32768,-32768,-32768, 522, 524, - 515,-32768,-32768,-32768,-32768, 518, 2903, 514, 520,-32768, --32768, 2903, 2903,-32768, 1836,-32768,-32768,-32768, 3200, 3109, --32768, 266,-32768,-32768,-32768,-32768, 544, 3200, 545,-32768, - 549, 551,-32768,-32768, 3033,-32768, 550,-32768, 114, 3226, --32768, 374, 382, 382, 535, 193,-32768,-32768, 273,-32768, --32768,-32768, 555, 560, 562, 536,-32768, 408,-32768, 537, --32768, 539,-32768, 540, 541, 552,-32768,-32768, 553, 547, --32768,-32768, 80,-32768, 554,-32768, 453, 439,-32768, 439, - 454, 548, 177, 2127,-32768, 556,-32768,-32768,-32768,-32768, --32768, 557,-32768,-32768, 2509, 380, 1644,-32768, 322, 469, --32768, 47, 47,-32768,-32768, 408, 564, 538, 561, 559, --32768, 569, 2414, 408, 2611,-32768, 2713, 558, 36, 565, --32768, 293, 108, 3200, 10, 3200, 1022, 762,-32768, 220, - 3200, 3226, 3226,-32768,-32768, 268, 374, 374, 275, 275, - 181, 3150, 181, 181,-32768,-32768,-32768, 181,-32768, 382, --32768, 3200,-32768, 3200,-32768,-32768,-32768, 314,-32768,-32768, --32768,-32768,-32768,-32768, 563, 568, 566,-32768,-32768,-32768, - 573, 181,-32768,-32768, 1836,-32768,-32768, 469, 354, 2224, --32768,-32768, 165,-32768,-32768, 47, 47,-32768,-32768, 530, --32768,-32768,-32768,-32768,-32768, 317,-32768,-32768,-32768,-32768, --32768,-32768, 181, 567, 3200, 570,-32768, 572, 550, 362, - 3200, 579, 581, 575, 577, 578,-32768,-32768, 2903, 384, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 268, --32768,-32768,-32768, 157,-32768,-32768,-32768, 275, 583,-32768, - 397, -8,-32768,-32768,-32768, 574,-32768, 590, 591,-32768, - 571,-32768, 587, 592, 363,-32768, 1547,-32768,-32768,-32768, - 594,-32768,-32768, 408, -8,-32768, 181,-32768, 108, 2808, - 3200,-32768, 28, 3200,-32768,-32768,-32768,-32768, 892,-32768, --32768,-32768,-32768,-32768, 108, 2903,-32768, 582,-32768, 181, - 181, 576,-32768,-32768, 181, 593,-32768,-32768, 408, 605, --32768,-32768, 582,-32768,-32768, 2903,-32768,-32768, 550, 3200, - 600,-32768, 331,-32768, 103, 408, 3200, 521,-32768,-32768, - 521,-32768,-32768,-32768, 629, 521,-32768, 550,-32768,-32768, - 108, 2903, 3200, 336, 634, 3200, 584, 597, 3200, 584, --32768, 601,-32768,-32768,-32768, 639, 632, 596, 615, 596, - 613, 596, 3200,-32768, 644, 648, 337, 3200, 608, 49, - 623,-32768, 608,-32768,-32768,-32768,-32768, 652, 3200, 625, - 49, 651, 50,-32768, 653, 631,-32768, 627,-32768, 658, --32768, 63,-32768, 272, 49,-32768, 208, 642,-32768,-32768, - 49,-32768,-32768, 660,-32768, 222, 222,-32768, 419, 666, --32768, 661,-32768,-32768, 668,-32768, 41, 222,-32768, 316, - 432, 468,-32768, 666,-32768,-32768, 426,-32768, 430,-32768, --32768, 670, 676,-32768 +static const short yypact[] = +{ + -32768, -25, 136, 368, 1350,-32768,-32768,-32768, 181,-32768, + -32768,-32768, 94,-32768,-32768,-32768, 181, 110,-32768,-32768, + 33, 2903,-32768, 182, 2903,-32768, 17,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768, -11,-32768,-32768,-32768, + -32768,-32768,-32768,-32768, 2903,-32768, 2903,-32768, 181,-32768, + -32768, 108,-32768,-32768,-32768,-32768, 181, 181,-32768,-32768, + 2903,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768, 2903,-32768,-32768,-32768,-32768,-32768, 399,-32768, 2903, + 408, 155, 192, 205,-32768, 136, 204,-32768,-32768, 368, + 1152,-32768, 233, 223,-32768,-32768, 266,-32768, 181, 305, + 408, 211, 235, 264,-32768, 1445,-32768, 408, 339,-32768, + 347,-32768, 377,-32768, 347,-32768, 347, 408, 1247, 1247, + 408,-32768,-32768, 408, 408,-32768, 196,-32768, 259, 322, + 409,-32768,-32768,-32768,-32768,-32768, 181, 387,-32768,-32768, + -32768, 386, 181,-32768,-32768, 181, 534,-32768,-32768, 403, + 2903, 410, 445, 453,-32768, 360, 439,-32768, 386, 474, + -32768,-32768, 496, 2903, 497, 2319, 239, 470, 486, 492, + 401, 404,-32768,-32768,-32768,-32768,-32768, 408, 282, 493, + 2414, 488, 494, 288,-32768,-32768,-32768,-32768,-32768, 322, + 409, 121, 141,-32768, 408, 3200, 1836, 1933, 3059,-32768, + 2030,-32768,-32768, 1152,-32768, 499, 122,-32768,-32768, 386, + 181, 181, 386, 502, 421, 360,-32768, 1152, 1152, 360, + 1741,-32768, 454,-32768, 328, 80,-32768,-32768, 525,-32768, + -32768, 504,-32768, 507, 380,-32768,-32768,-32768,-32768, 522, + 524, 515,-32768,-32768,-32768,-32768, 518, 2903, 514, 520, + -32768,-32768, 2903, 2903,-32768, 1836,-32768,-32768,-32768, 3200, + 3109,-32768, 266,-32768,-32768,-32768,-32768, 544, 3200, 545, + -32768, 549, 551,-32768,-32768, 3033,-32768, 550,-32768, 114, + 3226,-32768, 374, 382, 382, 535, 193,-32768,-32768, 273, + -32768,-32768,-32768, 555, 560, 562, 536,-32768, 408,-32768, + 537,-32768, 539,-32768, 540, 541, 552,-32768,-32768, 553, + 547,-32768,-32768, 80,-32768, 554,-32768, 453, 439,-32768, + 439, 454, 548, 177, 2127,-32768, 556,-32768,-32768,-32768, + -32768,-32768, 557,-32768,-32768, 2509, 380, 1644,-32768, 322, + 469,-32768, 47, 47,-32768,-32768, 408, 564, 538, 561, + 559,-32768, 569, 2414, 408, 2611,-32768, 2713, 558, 36, + 565,-32768, 293, 108, 3200, 10, 3200, 1022, 762,-32768, + 220, 3200, 3226, 3226,-32768,-32768, 268, 374, 374, 275, + 275, 181, 3150, 181, 181,-32768,-32768,-32768, 181,-32768, + 382,-32768, 3200,-32768, 3200,-32768,-32768,-32768, 314,-32768, + -32768,-32768,-32768,-32768,-32768, 563, 568, 566,-32768,-32768, + -32768, 573, 181,-32768,-32768, 1836,-32768,-32768, 469, 354, + 2224,-32768,-32768, 165,-32768,-32768, 47, 47,-32768,-32768, + 530,-32768,-32768,-32768,-32768,-32768, 317,-32768,-32768,-32768, + -32768,-32768,-32768, 181, 567, 3200, 570,-32768, 572, 550, + 362, 3200, 579, 581, 575, 577, 578,-32768,-32768, 2903, + 384,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 268,-32768,-32768,-32768, 157,-32768,-32768,-32768, 275, 583, + -32768, 397, -8,-32768,-32768,-32768, 574,-32768, 590, 591, + -32768, 571,-32768, 587, 592, 363,-32768, 1547,-32768,-32768, + -32768, 594,-32768,-32768, 408, -8,-32768, 181,-32768, 108, + 2808, 3200,-32768, 28, 3200,-32768,-32768,-32768,-32768, 892, + -32768,-32768,-32768,-32768,-32768, 108, 2903,-32768, 582,-32768, + 181, 181, 576,-32768,-32768, 181, 593,-32768,-32768, 408, + 605,-32768,-32768, 582,-32768,-32768, 2903,-32768,-32768, 550, + 3200, 600,-32768, 331,-32768, 103, 408, 3200, 521,-32768, + -32768, 521,-32768,-32768,-32768, 629, 521,-32768, 550,-32768, + -32768, 108, 2903, 3200, 336, 634, 3200, 584, 597, 3200, + 584,-32768, 601,-32768,-32768,-32768, 639, 632, 596, 615, + 596, 613, 596, 3200,-32768, 644, 648, 337, 3200, 608, + 49, 623,-32768, 608,-32768,-32768,-32768,-32768, 652, 3200, + 625, 49, 651, 50,-32768, 653, 631,-32768, 627,-32768, + 658,-32768, 63,-32768, 272, 49,-32768, 208, 642,-32768, + -32768, 49,-32768,-32768, 660,-32768, 222, 222,-32768, 419, + 666,-32768, 661,-32768,-32768, 668,-32768, 41, 222,-32768, + 316, 432, 468,-32768, 666,-32768,-32768, 426,-32768, 430, + -32768,-32768, 670, 676,-32768 }; -static const short yypgoto[] = {-32768, --32768,-32768,-32768,-32768, 595,-32768,-32768, 678, 677,-32768, --32768,-32768, 307, 679,-32768,-32768, 610, 612, 616,-32768, - -121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 580,-32768, - -6,-32768, 585,-32768, 461,-32768, 451, 452,-32768,-32768, - 471, -108, 478, -188,-32768, 232,-32768, -458,-32768, 127, - -473, 175, -169, 142, 137, 206, -206, 120,-32768, -180, --32768,-32768, -507,-32768, -190, -230, -318,-32768,-32768,-32768, --32768,-32768, 381,-32768,-32768, -89,-32768,-32768,-32768, -3, - -18,-32768, 32,-32768,-32768, 407, 476, 68,-32768,-32768, - 56,-32768, -93, -127, 344, 398, -187, 257, -182, -213, - -101, 511, 30, -267, 603, -137,-32768, 586,-32768,-32768, --32768, -531, -204, -254,-32768, 105, -46, 466,-32768,-32768, - -278, 455,-32768,-32768, 472, -265, -205,-32768,-32768, -372, --32768, -303,-32768,-32768, 242, 7, -23, -38, 423, 656, - -377, 19, 531 +static const short yypgoto[] = +{ + -32768,-32768,-32768,-32768,-32768, 595,-32768,-32768, 678, 677, + -32768,-32768,-32768, 307, 679,-32768,-32768, 610, 612, 616, + -32768, -121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 580, + -32768, -6,-32768, 585,-32768, 461,-32768, 451, 452,-32768, + -32768, 471, -108, 478, -188,-32768, 232,-32768, -458,-32768, + 127, -473, 175, -169, 142, 137, 206, -206, 120,-32768, + -180,-32768,-32768, -507,-32768, -190, -230, -318,-32768,-32768, + -32768,-32768,-32768, 381,-32768,-32768, -89,-32768,-32768,-32768, + -3, -18,-32768, 32,-32768,-32768, 407, 476, 68,-32768, + -32768, 56,-32768, -93, -127, 344, 398, -187, 257, -182, + -213, -101, 511, 30, -267, 603, -137,-32768, 586,-32768, + -32768,-32768, -531, -204, -254,-32768, 105, -46, 466,-32768, + -32768, -278, 455,-32768,-32768, 472, -265, -205,-32768,-32768, + -372,-32768, -303,-32768,-32768, 242, 7, -23, -38, 423, + 656, -377, 19, 531 }; #define YYLAST 3340 -static const short yytable[] = { 118, - 100, 103, 113, 196, 252, 413, 148, 141, 15, 19, - 296, 186, 271, 296, 15, 209, 211, 112, 198, 275, - 120, 395, 19, 391, 379, 341, 343, 389, 203, 117, - 497, 2, 132, 385, 107, 101, 320, 399, 400, 324, - 245, 391, 110, 670, 445, 595, 208, 219, 221, 391, - 124, 545, 336, 442, 510, 643, 644, 645, 631, 102, - 126, 151, 127, 180, 606, 426, 563, 611, 643, 651, - 645, 361, 462, 632, 129, 381, 137, 673, 570, 371, - 443, 151, 129, 129, 646, 526, 628, 140, 151, 3, - 381, 330, 587, 581, 333, 142, 546, 640, 151, 652, - 104, 151, 350, 263, 151, 151, 175, 219, 221, 219, - 221, 15, 633, -55, 351, 19, 108, 488, 602, 180, - 471, 100, 484, 642, 117, 105, 359, 518, 519, 469, - 217, 218, 131, 592, 100, 100, 485, 655, 8, 178, - 345, 109, 341, 343, 498, 327, 392, 469, 593, 564, - 220, 218, 393, 328, 347, 9, 101, 276, 151, 469, - 10, 152, 19, 431, 248, 435, 235, 437, 227, 101, - 101, 228, 579, 580, 222, 151, 180, 277, 11, 112, - 102, 472, 475, 483, 9, 271, 344, 218, 531, 10, - 180, 180, 542, 102, 102, 232, 494, 180, 153, 514, - 9, 9, 213, 402, 403, 10, 116, 154, 501, 418, - 656, 541, 318, 429, 164, 151, 533, 657, 404, 175, - 405, 406, 407, 408, 656, 341, 167, 214, 209, 211, - 409, 657, 632, 175, 175, 156, 331, 332, 181, 345, - 157, 345, 350, 327, 658, 256, 632, 283, 284, 285, - 286, 328, 178, 183, 351, 396, 585, 219, 441, 513, - 528, 283, 284, 285, 286, -101, 178, 178, 374, 374, - 214, 318, 263, 178, 661, -405, 569, 279, 280, 151, - 457, 631, 412, 661, 661, 402, 403, 9, 264, 164, - -101, 215, 282, 281, 274, 661, 632, 661, 661, 661, - 404, 167, 405, 406, 407, 408, 653, 283, 284, 285, - 286, 209, 409, 214, 185, 588, 327, 151, 151, 214, - 503, 287, 188, 523, 328, 657, 289, 151, 464, 571, - 159, 217, 218, 160, 483, 151, 441, 590, 161, 162, - 632, 163, 604, 627, 468, 214, 189, 9, 524, 164, - 489, 490, 10, 165, 166, 283, 284, 285, 286, 439, - 190, 167, 591, 357, 218, 239, 168, 214, 539, 240, - 218, 374, 199, 374, 290, 291, 159, 16, 131, 160, - -248, 292, 169, 474, 112, 356, 200, 9, 603, 357, - 218, 279, 10, 531, 555, 558, 223, 556, 532, 358, - 151, 9, 483, 621, 131, 623, 282, 491, 624, 495, - 496, 598, 224, 143, 491, 539, 600, 144, 220, 218, - 540, 283, 284, 285, 286, 666, 667, 145, 531, 234, - 562, 318, 131, 544, 656, 287, 516, 674, 491, 675, - 289, 657, 459, 65, 459, 67, 236, 69, 70, 15, - 668, 72, 73, 74, 75, 669, 632, 668, 78, 79, - 538, 668, 680, 344, 218, 584, 681, 594, 676, 491, - 656, 283, 284, 285, 286, 112, 237, 657, 440, 218, - 677, 679, 133, 135, 238, 151, 210, 212, 290, 291, - 468, 244, 632, 338, 340, 292, 486, 487, 134, 136, - 246, 247, 215, 249, 678, 257, 575, 283, 284, 285, - 286, 258, 259, 559, 65, 260, 67, 265, 69, 70, - 151, 272, 72, 73, 74, 75, 568, 273, 334, 78, - 79, 335, 353, 491, 326, 112, 159, 151, 355, 160, - 354, 364, 576, 365, 229, 230, 366, 163, 582, 369, - 372, 373, 575, 384, 386, 164, 491, 491, 387, 231, - 388, 15, 568, 391, 414, 401, 415, 167, 416, 417, - 449, 450, 168, 419, 420, 454, 421, 422, 423, 424, - 427, 636, 425, 434, 428, 452, 432, 520, 568, 504, - -406, 461, 636, 453, 505, 463, 635, 527, 554, 583, - 549, 529, 530, 112, 552, 636, 636, 635, 663, 507, - 534, 535, 636, 536, 537, 550, 506, 663, 663, 543, - 635, 635, 551, 553, 665, 281, 596, 635, 561, 663, - 577, 663, 663, 663, 159, 545, 589, 160, 599, 21, - 605, 279, 280, 609, 607, 614, 613, 618, 620, 622, - 625, 473, 281, 164, 626, 629, 282, 637, 639, 641, - -407, 649, 647, 648, 650, 167, 664, 645, 670, 683, - 671, 283, 284, 285, 286, 684, 615, 672, 7, 455, - 85, 139, 87, 325, 155, 287, 288, 337, 322, 339, - 289, 278, 525, 158, 616, 477, 478, 479, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 601, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, - 58, 59, 60, 61, 193, 62, 194, 586, 290, 291, - 195, 612, 638, 617, 572, 292, 448, 65, 377, 67, - 68, 69, 70, 438, 348, 72, 73, 74, 75, 76, - 410, 77, 78, 79, 159, 394, 390, 160, 233, 21, - 565, 279, 280, 184, 349, 0, 0, 0, 0, 0, - 0, 473, 281, 164, 0, 0, 282, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, - 0, 283, 284, 285, 286, 476, 0, 0, 0, 0, - 0, 329, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 0, 0, 0, 0, 477, 478, 479, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, - 58, 59, 60, 61, 0, 62, 0, 0, 290, 291, - 0, 0, 0, 0, 0, 292, 0, 65, 0, 67, - 68, 69, 70, 0, 0, 72, 73, 74, 75, 76, - 0, 77, 78, 79, 159, 0, 0, 160, 0, 21, - 0, 279, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 473, 281, 164, 0, 0, 282, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, - 0, 283, 284, 285, 286, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 0, 0, 0, 0, 477, 478, 479, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, - 58, 59, 60, 61, 0, 62, 0, 0, 290, 291, - 0, 0, 0, 0, 0, 292, 0, 65, 0, 67, - 68, 69, 70, 0, 0, 72, 73, 74, 75, 76, - 0, 77, 78, 79, 159, 0, 0, 160, 0, 21, - 0, 279, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 473, 281, 164, 0, 0, 282, 0, 0, 0, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, - 0, 283, 284, 285, 286, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 287, 288, 0, 0, 0, - 289, 0, 0, 0, 0, 0, 0, 0, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, - 58, 59, 60, 61, 0, 62, 0, 0, 290, 291, - 0, 0, 0, 0, 0, 292, 0, 65, 0, 67, - 68, 69, 70, 0, 0, 72, 73, 74, 75, 76, - 0, 77, 78, 79, 159, 0, 0, 160, 0, 21, - 0, 0, 161, 162, 0, 163, 0, 0, 0, 0, - 0, 22, 0, 164, 0, 0, 0, 165, 166, 0, - 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, - 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 170, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, - 58, 59, 60, 61, 21, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 22, 65, 0, 67, - 68, 69, 70, 0, 0, 72, 73, 74, 75, 76, - 0, 77, 78, 79, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 0, 24, 0, 0, 0, - 0, 0, 25, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 0, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 0, - 62, 0, 0, 0, 0, 63, 0, 21, 0, 64, - 0, 3, 65, 66, 67, 68, 69, 70, 71, 22, - 72, 73, 74, 75, 76, 0, 77, 78, 79, 80, - 81, 82, 83, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 24, - 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 0, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 21, 62, 0, 0, 0, 0, 63, 0, - 0, 0, 64, 0, 22, 65, 66, 67, 68, 69, - 70, 71, 0, 72, 73, 74, 75, 76, 0, 77, - 78, 79, 80, 81, 82, 83, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 0, 62, 0, - 0, 0, 0, 0, 21, 0, 0, 64, 0, 0, - 65, 66, 67, 68, 69, 70, 22, 0, 72, 73, - 74, 75, 76, 0, 77, 78, 79, 80, 81, 82, - 83, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 0, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 111, 57, 58, 59, 60, 61, 439, - 62, 21, 0, 357, 218, 0, 0, 0, 0, 0, - 0, 0, 65, 22, 67, 68, 69, 70, 131, 0, - 72, 73, 74, 75, 76, 0, 77, 78, 79, 0, - 81, 82, 83, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 111, 57, 58, 59, 60, 61, 239, 62, 21, 0, - 240, 218, 0, 0, 0, 0, 0, 0, 0, 65, - 22, 67, 68, 69, 70, 0, 0, 72, 73, 74, - 75, 76, 250, 77, 78, 79, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 0, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 111, 57, 58, - 59, 60, 61, 21, 62, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 22, 65, 0, 67, 68, - 69, 70, 0, 0, 72, 73, 74, 75, 76, 250, - 77, 78, 79, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 314, - 315, 0, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 0, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 111, 57, 58, 59, 60, 61, 0, 62, - 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 22, 67, 68, 69, 70, 0, 0, 72, - 73, 74, 75, 76, 0, 77, 78, 79, 0, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, - 57, 58, 59, 60, 61, 0, 62, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 22, - 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, - 76, 250, 77, 78, 79, 0, 323, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 111, 57, 58, 59, - 60, 61, 0, 62, 21, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 22, 67, 68, 69, - 70, 0, 0, 72, 73, 74, 75, 76, 250, 77, - 78, 79, 0, 430, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 0, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 111, 57, 58, 59, 60, 61, 0, - 62, 21, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 65, 22, 67, 68, 69, 70, 0, 0, - 72, 73, 74, 75, 76, 250, 77, 78, 79, 0, - 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 111, 57, 58, 59, 60, 61, 21, 62, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 65, - 0, 67, 68, 69, 70, 0, 0, 72, 73, 74, - 75, 76, 250, 77, 78, 79, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 0, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 111, 57, 58, 59, 60, - 61, 21, 62, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 22, 65, 0, 67, 68, 69, 70, - 0, 0, 72, 73, 74, 75, 76, 250, 77, 78, - 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 111, 57, 58, 59, 60, 61, 21, 62, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 22, 65, - 0, 67, 68, 69, 70, 0, 267, 72, 73, 74, - 75, 76, 0, 77, 78, 79, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 0, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 111, 57, 58, 59, 60, - 61, 0, 62, 0, 0, 0, 0, 0, 21, 0, - 0, 0, 0, 0, 65, 0, 67, 68, 69, 70, - 22, 0, 72, 73, 74, 75, 76, 436, 77, 78, - 79, 0, 0, 0, 0, 458, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 0, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 111, 57, 58, - 59, 60, 61, 0, 62, 0, 0, 0, 0, 0, - 21, 0, 0, 0, 0, 0, 65, 0, 67, 68, - 69, 70, 22, 0, 72, 73, 74, 75, 76, 0, - 77, 78, 79, 0, 0, 0, 0, 460, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, - 57, 58, 59, 60, 61, 21, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 22, 65, 0, - 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, - 76, 0, 77, 78, 79, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 566, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 0, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 111, 57, 58, 59, 60, 61, - 21, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 22, 65, 0, 67, 68, 69, 70, 0, - 0, 72, 73, 74, 75, 76, 0, 77, 78, 79, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, - 57, 58, 59, 60, 61, 0, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, - 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, - 76, 0, 77, 78, 79, 159, 0, 0, 160, 0, - 0, 0, 279, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 281, 164, 350, 0, 282, 0, 0, - 0, 159, 0, 0, 160, 0, 167, 351, 279, 280, - 0, 0, 283, 284, 285, 286, 0, 0, 9, 281, - 164, 0, 0, 282, 0, 0, 287, 288, 0, 0, - 0, 289, 167, 0, 321, 0, 0, 0, 283, 284, - 285, 286, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 159, 287, 288, 160, 0, 0, 289, 279, 280, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 281, - 164, 0, 0, 282, 0, 0, 0, 0, 0, 290, - 291, 0, 167, 0, 380, 0, 292, 0, 283, 284, - 285, 286, 159, 0, 0, 160, 0, 0, 0, 279, - 280, 0, 287, 288, 0, 290, 291, 289, 0, 9, - 281, 164, 292, 0, 282, 0, 0, 0, 0, 0, - 0, 0, 0, 167, 0, 493, 0, 0, 0, 283, - 284, 285, 286, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 159, 287, 288, 160, 0, 0, 289, 279, - 280, 0, 0, 0, 0, 290, 291, 0, 0, 9, - 281, 164, 292, 0, 282, 0, 0, 0, 159, 0, - 0, 160, 0, 167, 0, 279, 280, 0, 0, 283, - 284, 285, 286, 0, 0, 9, 0, 164, 0, 0, - 282, 0, 0, 287, 288, 0, 290, 291, 289, 167, - 0, 0, 0, 292, 0, 283, 284, 285, 286, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 287, - 0, 0, 0, 0, 289, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 290, 291, 0, 0, - 0, 0, 0, 292, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 290, 291, 0, 0, 0, 0, 0, 292 +static const short yytable[] = +{ + 118, 100, 103, 113, 196, 252, 413, 148, 141, 15, + 19, 296, 186, 271, 296, 15, 209, 211, 112, 198, + 275, 120, 395, 19, 391, 379, 341, 343, 389, 203, + 117, 497, 2, 132, 385, 107, 101, 320, 399, 400, + 324, 245, 391, 110, 670, 445, 595, 208, 219, 221, + 391, 124, 545, 336, 442, 510, 643, 644, 645, 631, + 102, 126, 151, 127, 180, 606, 426, 563, 611, 643, + 651, 645, 361, 462, 632, 129, 381, 137, 673, 570, + 371, 443, 151, 129, 129, 646, 526, 628, 140, 151, + 3, 381, 330, 587, 581, 333, 142, 546, 640, 151, + 652, 104, 151, 350, 263, 151, 151, 175, 219, 221, + 219, 221, 15, 633, -55, 351, 19, 108, 488, 602, + 180, 471, 100, 484, 642, 117, 105, 359, 518, 519, + 469, 217, 218, 131, 592, 100, 100, 485, 655, 8, + 178, 345, 109, 341, 343, 498, 327, 392, 469, 593, + 564, 220, 218, 393, 328, 347, 9, 101, 276, 151, + 469, 10, 152, 19, 431, 248, 435, 235, 437, 227, + 101, 101, 228, 579, 580, 222, 151, 180, 277, 11, + 112, 102, 472, 475, 483, 9, 271, 344, 218, 531, + 10, 180, 180, 542, 102, 102, 232, 494, 180, 153, + 514, 9, 9, 213, 402, 403, 10, 116, 154, 501, + 418, 656, 541, 318, 429, 164, 151, 533, 657, 404, + 175, 405, 406, 407, 408, 656, 341, 167, 214, 209, + 211, 409, 657, 632, 175, 175, 156, 331, 332, 181, + 345, 157, 345, 350, 327, 658, 256, 632, 283, 284, + 285, 286, 328, 178, 183, 351, 396, 585, 219, 441, + 513, 528, 283, 284, 285, 286, -101, 178, 178, 374, + 374, 214, 318, 263, 178, 661, -405, 569, 279, 280, + 151, 457, 631, 412, 661, 661, 402, 403, 9, 264, + 164, -101, 215, 282, 281, 274, 661, 632, 661, 661, + 661, 404, 167, 405, 406, 407, 408, 653, 283, 284, + 285, 286, 209, 409, 214, 185, 588, 327, 151, 151, + 214, 503, 287, 188, 523, 328, 657, 289, 151, 464, + 571, 159, 217, 218, 160, 483, 151, 441, 590, 161, + 162, 632, 163, 604, 627, 468, 214, 189, 9, 524, + 164, 489, 490, 10, 165, 166, 283, 284, 285, 286, + 439, 190, 167, 591, 357, 218, 239, 168, 214, 539, + 240, 218, 374, 199, 374, 290, 291, 159, 16, 131, + 160, -248, 292, 169, 474, 112, 356, 200, 9, 603, + 357, 218, 279, 10, 531, 555, 558, 223, 556, 532, + 358, 151, 9, 483, 621, 131, 623, 282, 491, 624, + 495, 496, 598, 224, 143, 491, 539, 600, 144, 220, + 218, 540, 283, 284, 285, 286, 666, 667, 145, 531, + 234, 562, 318, 131, 544, 656, 287, 516, 674, 491, + 675, 289, 657, 459, 65, 459, 67, 236, 69, 70, + 15, 668, 72, 73, 74, 75, 669, 632, 668, 78, + 79, 538, 668, 680, 344, 218, 584, 681, 594, 676, + 491, 656, 283, 284, 285, 286, 112, 237, 657, 440, + 218, 677, 679, 133, 135, 238, 151, 210, 212, 290, + 291, 468, 244, 632, 338, 340, 292, 486, 487, 134, + 136, 246, 247, 215, 249, 678, 257, 575, 283, 284, + 285, 286, 258, 259, 559, 65, 260, 67, 265, 69, + 70, 151, 272, 72, 73, 74, 75, 568, 273, 334, + 78, 79, 335, 353, 491, 326, 112, 159, 151, 355, + 160, 354, 364, 576, 365, 229, 230, 366, 163, 582, + 369, 372, 373, 575, 384, 386, 164, 491, 491, 387, + 231, 388, 15, 568, 391, 414, 401, 415, 167, 416, + 417, 449, 450, 168, 419, 420, 454, 421, 422, 423, + 424, 427, 636, 425, 434, 428, 452, 432, 520, 568, + 504, -406, 461, 636, 453, 505, 463, 635, 527, 554, + 583, 549, 529, 530, 112, 552, 636, 636, 635, 663, + 507, 534, 535, 636, 536, 537, 550, 506, 663, 663, + 543, 635, 635, 551, 553, 665, 281, 596, 635, 561, + 663, 577, 663, 663, 663, 159, 545, 589, 160, 599, + 21, 605, 279, 280, 609, 607, 614, 613, 618, 620, + 622, 625, 473, 281, 164, 626, 629, 282, 637, 639, + 641, -407, 649, 647, 648, 650, 167, 664, 645, 670, + 683, 671, 283, 284, 285, 286, 684, 615, 672, 7, + 455, 85, 139, 87, 325, 155, 287, 288, 337, 322, + 339, 289, 278, 525, 158, 616, 477, 478, 479, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 601, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, + 57, 58, 59, 60, 61, 193, 62, 194, 586, 290, + 291, 195, 612, 638, 617, 572, 292, 448, 65, 377, + 67, 68, 69, 70, 438, 348, 72, 73, 74, 75, + 76, 410, 77, 78, 79, 159, 394, 390, 160, 233, + 21, 565, 279, 280, 184, 349, 0, 0, 0, 0, + 0, 0, 473, 281, 164, 0, 0, 282, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 0, 0, 283, 284, 285, 286, 476, 0, 0, 0, + 0, 0, 329, 0, 0, 0, 287, 288, 0, 0, + 0, 289, 0, 0, 0, 0, 477, 478, 479, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, + 57, 58, 59, 60, 61, 0, 62, 0, 0, 290, + 291, 0, 0, 0, 0, 0, 292, 0, 65, 0, + 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, + 76, 0, 77, 78, 79, 159, 0, 0, 160, 0, + 21, 0, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 473, 281, 164, 0, 0, 282, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 0, 0, 283, 284, 285, 286, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 288, 0, 0, + 0, 289, 0, 0, 0, 0, 477, 478, 479, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, + 57, 58, 59, 60, 61, 0, 62, 0, 0, 290, + 291, 0, 0, 0, 0, 0, 292, 0, 65, 0, + 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, + 76, 0, 77, 78, 79, 159, 0, 0, 160, 0, + 21, 0, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 473, 281, 164, 0, 0, 282, 0, 0, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 0, 0, 283, 284, 285, 286, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 288, 0, 0, + 0, 289, 0, 0, 0, 0, 0, 0, 0, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, + 57, 58, 59, 60, 61, 0, 62, 0, 0, 290, + 291, 0, 0, 0, 0, 0, 292, 0, 65, 0, + 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, + 76, 0, 77, 78, 79, 159, 0, 0, 160, 0, + 21, 0, 0, 161, 162, 0, 163, 0, 0, 0, + 0, 0, 22, 0, 164, 0, 0, 0, 165, 166, + 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, + 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 170, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 0, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 111, + 57, 58, 59, 60, 61, 21, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 22, 65, 0, + 67, 68, 69, 70, 0, 0, 72, 73, 74, 75, + 76, 0, 77, 78, 79, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 23, 0, 24, 0, 0, + 0, 0, 0, 25, 0, 0, 0, 0, 0, 26, + 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 0, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 0, 62, 0, 0, 0, 0, 63, 0, 21, 0, + 64, 0, 3, 65, 66, 67, 68, 69, 70, 71, + 22, 72, 73, 74, 75, 76, 0, 77, 78, 79, + 80, 81, 82, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 24, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 0, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 21, 62, 0, 0, 0, 0, 63, + 0, 0, 0, 64, 0, 22, 65, 66, 67, 68, + 69, 70, 71, 0, 72, 73, 74, 75, 76, 0, + 77, 78, 79, 80, 81, 82, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, + 0, 25, 0, 0, 0, 0, 0, 26, 0, 0, + 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 0, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 0, 62, + 0, 0, 0, 0, 0, 21, 0, 0, 64, 0, + 0, 65, 66, 67, 68, 69, 70, 22, 0, 72, + 73, 74, 75, 76, 0, 77, 78, 79, 80, 81, + 82, 83, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 0, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 111, 57, 58, 59, 60, 61, + 439, 62, 21, 0, 357, 218, 0, 0, 0, 0, + 0, 0, 0, 65, 22, 67, 68, 69, 70, 131, + 0, 72, 73, 74, 75, 76, 0, 77, 78, 79, + 0, 81, 82, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 111, 57, 58, 59, 60, 61, 239, 62, 21, + 0, 240, 218, 0, 0, 0, 0, 0, 0, 0, + 65, 22, 67, 68, 69, 70, 0, 0, 72, 73, + 74, 75, 76, 250, 77, 78, 79, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, + 58, 59, 60, 61, 21, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 22, 65, 0, 67, + 68, 69, 70, 0, 0, 72, 73, 74, 75, 76, + 250, 77, 78, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 314, 315, 0, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 0, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 111, 57, 58, 59, 60, 61, 0, + 62, 21, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 65, 22, 67, 68, 69, 70, 0, 0, + 72, 73, 74, 75, 76, 0, 77, 78, 79, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 111, 57, 58, 59, 60, 61, 0, 62, 21, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 22, 67, 68, 69, 70, 0, 0, 72, 73, 74, + 75, 76, 250, 77, 78, 79, 0, 323, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 0, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 111, 57, 58, + 59, 60, 61, 0, 62, 21, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 22, 67, 68, + 69, 70, 0, 0, 72, 73, 74, 75, 76, 250, + 77, 78, 79, 0, 430, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 0, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 111, 57, 58, 59, 60, 61, + 0, 62, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 22, 67, 68, 69, 70, 0, + 0, 72, 73, 74, 75, 76, 250, 77, 78, 79, + 0, 512, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 111, 57, 58, 59, 60, 61, 21, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 65, 0, 67, 68, 69, 70, 0, 0, 72, 73, + 74, 75, 76, 250, 77, 78, 79, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 0, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 111, 57, 58, 59, + 60, 61, 21, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 22, 65, 0, 67, 68, 69, + 70, 0, 0, 72, 73, 74, 75, 76, 250, 77, + 78, 79, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 111, 57, 58, 59, 60, 61, 21, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, + 65, 0, 67, 68, 69, 70, 0, 267, 72, 73, + 74, 75, 76, 0, 77, 78, 79, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 0, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 111, 57, 58, 59, + 60, 61, 0, 62, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 0, 0, 65, 0, 67, 68, 69, + 70, 22, 0, 72, 73, 74, 75, 76, 436, 77, + 78, 79, 0, 0, 0, 0, 458, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 0, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 111, 57, + 58, 59, 60, 61, 0, 62, 0, 0, 0, 0, + 0, 21, 0, 0, 0, 0, 0, 65, 0, 67, + 68, 69, 70, 22, 0, 72, 73, 74, 75, 76, + 0, 77, 78, 79, 0, 0, 0, 0, 460, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 111, 57, 58, 59, 60, 61, 21, 62, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 22, 65, + 0, 67, 68, 69, 70, 0, 0, 72, 73, 74, + 75, 76, 0, 77, 78, 79, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 566, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 0, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 111, 57, 58, 59, 60, + 61, 21, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 22, 65, 0, 67, 68, 69, 70, + 0, 0, 72, 73, 74, 75, 76, 0, 77, 78, + 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 111, 57, 58, 59, 60, 61, 0, 62, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 67, 68, 69, 70, 0, 0, 72, 73, 74, + 75, 76, 0, 77, 78, 79, 159, 0, 0, 160, + 0, 0, 0, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 281, 164, 350, 0, 282, 0, + 0, 0, 159, 0, 0, 160, 0, 167, 351, 279, + 280, 0, 0, 283, 284, 285, 286, 0, 0, 9, + 281, 164, 0, 0, 282, 0, 0, 287, 288, 0, + 0, 0, 289, 167, 0, 321, 0, 0, 0, 283, + 284, 285, 286, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 159, 287, 288, 160, 0, 0, 289, 279, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 281, 164, 0, 0, 282, 0, 0, 0, 0, 0, + 290, 291, 0, 167, 0, 380, 0, 292, 0, 283, + 284, 285, 286, 159, 0, 0, 160, 0, 0, 0, + 279, 280, 0, 287, 288, 0, 290, 291, 289, 0, + 9, 281, 164, 292, 0, 282, 0, 0, 0, 0, + 0, 0, 0, 0, 167, 0, 493, 0, 0, 0, + 283, 284, 285, 286, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 159, 287, 288, 160, 0, 0, 289, + 279, 280, 0, 0, 0, 0, 290, 291, 0, 0, + 9, 281, 164, 292, 0, 282, 0, 0, 0, 159, + 0, 0, 160, 0, 167, 0, 279, 280, 0, 0, + 283, 284, 285, 286, 0, 0, 9, 0, 164, 0, + 0, 282, 0, 0, 287, 288, 0, 290, 291, 289, + 167, 0, 0, 0, 292, 0, 283, 284, 285, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 287, 0, 0, 0, 0, 289, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 290, 291, 0, + 0, 0, 0, 0, 292, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 290, 291, 0, 0, 0, 0, 0, + 292 }; -static const short yycheck[] = { 23, - 4, 8, 21, 125, 185, 309, 100, 97, 2, 3, - 215, 120, 200, 218, 8, 143, 144, 21, 127, 208, - 24, 300, 16, 14, 279, 239, 240, 295, 137, 23, - 408, 57, 71, 288, 16, 4, 217, 303, 304, 220, - 178, 14, 10, 3, 363, 577, 140, 149, 150, 14, - 62, 60, 235, 7, 432, 6, 7, 8, 10, 4, - 64, 100, 66, 110, 596, 333, 525, 599, 6, 7, - 8, 254, 37, 25, 68, 280, 80, 37, 51, 267, - 34, 120, 76, 77, 35, 463, 618, 91, 127, 115, - 295, 229, 566, 552, 232, 99, 105, 629, 137, 37, - 7, 140, 23, 197, 143, 144, 110, 209, 210, 211, - 212, 105, 620, 97, 35, 109, 7, 396, 592, 166, - 111, 125, 390, 631, 118, 32, 254, 446, 447, 384, - 10, 11, 25, 31, 138, 139, 391, 645, 3, 110, - 242, 32, 356, 357, 410, 24, 33, 402, 46, 527, - 10, 11, 39, 32, 244, 20, 125, 37, 197, 414, - 25, 7, 156, 344, 183, 354, 170, 355, 162, 138, - 139, 165, 550, 551, 156, 214, 223, 37, 43, 183, - 125, 386, 387, 388, 20, 373, 10, 11, 32, 25, - 237, 238, 36, 138, 139, 166, 402, 244, 7, 35, - 20, 20, 7, 11, 12, 25, 25, 3, 414, 318, - 3, 490, 216, 37, 22, 254, 471, 10, 26, 223, - 28, 29, 30, 31, 3, 439, 34, 32, 356, 357, - 38, 10, 25, 237, 238, 32, 230, 231, 6, 341, - 37, 343, 23, 24, 37, 7, 25, 40, 41, 42, - 43, 32, 223, 31, 35, 302, 560, 359, 360, 440, - 465, 40, 41, 42, 43, 7, 237, 238, 272, 273, - 32, 275, 366, 244, 647, 10, 531, 10, 11, 318, - 374, 10, 10, 656, 657, 11, 12, 20, 7, 22, - 32, 33, 25, 21, 7, 668, 25, 670, 671, 672, - 26, 34, 28, 29, 30, 31, 35, 40, 41, 42, - 43, 439, 38, 32, 10, 570, 24, 356, 357, 32, - 7, 54, 112, 7, 32, 10, 59, 366, 36, 534, - 3, 10, 11, 6, 539, 374, 438, 7, 11, 12, - 25, 14, 7, 7, 383, 32, 112, 20, 32, 22, - 397, 398, 25, 26, 27, 40, 41, 42, 43, 6, - 97, 34, 32, 10, 11, 6, 39, 32, 32, 10, - 11, 375, 34, 377, 107, 108, 3, 10, 25, 6, - 34, 114, 55, 387, 388, 6, 10, 20, 593, 10, - 11, 10, 25, 32, 32, 517, 10, 35, 37, 20, - 439, 20, 607, 610, 25, 612, 25, 401, 613, 403, - 404, 581, 27, 6, 408, 32, 586, 10, 10, 11, - 37, 40, 41, 42, 43, 656, 657, 20, 32, 27, - 524, 435, 25, 37, 3, 54, 443, 668, 432, 670, - 59, 10, 375, 116, 377, 118, 37, 120, 121, 443, - 32, 124, 125, 126, 127, 37, 25, 32, 131, 132, - 479, 32, 37, 10, 11, 559, 37, 576, 37, 463, - 3, 40, 41, 42, 43, 479, 32, 10, 10, 11, - 671, 672, 76, 77, 32, 524, 143, 144, 107, 108, - 529, 53, 25, 237, 238, 114, 392, 393, 76, 77, - 27, 6, 33, 7, 37, 20, 545, 40, 41, 42, - 43, 20, 112, 517, 116, 112, 118, 25, 120, 121, - 559, 34, 124, 125, 126, 127, 530, 34, 27, 131, - 132, 111, 8, 527, 36, 539, 3, 576, 32, 6, - 37, 20, 546, 20, 11, 12, 32, 14, 555, 32, - 37, 32, 591, 10, 10, 22, 550, 551, 10, 26, - 10, 555, 566, 14, 10, 31, 7, 34, 7, 34, - 7, 34, 39, 37, 36, 7, 37, 37, 27, 27, - 27, 620, 36, 27, 37, 25, 31, 58, 592, 27, - 10, 34, 631, 35, 27, 31, 620, 31, 7, 7, - 27, 32, 31, 607, 34, 644, 645, 631, 647, 37, - 32, 37, 651, 37, 37, 26, 51, 656, 657, 37, - 644, 645, 32, 37, 648, 21, 106, 651, 35, 668, - 49, 670, 671, 672, 3, 60, 37, 6, 10, 8, - 7, 10, 11, 47, 61, 7, 46, 52, 34, 37, - 7, 20, 21, 22, 7, 48, 25, 35, 7, 35, - 10, 35, 10, 33, 7, 34, 25, 8, 3, 0, - 10, 40, 41, 42, 43, 0, 45, 10, 1, 373, - 4, 87, 4, 223, 105, 54, 55, 237, 218, 238, - 59, 214, 461, 109, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 591, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 125, 104, 125, 563, 107, 108, - 125, 600, 623, 607, 539, 114, 366, 116, 273, 118, - 119, 120, 121, 356, 244, 124, 125, 126, 127, 128, - 306, 130, 131, 132, 3, 300, 295, 6, 166, 8, - 529, 10, 11, 118, 244, -1, -1, -1, -1, -1, - -1, 20, 21, 22, -1, -1, 25, -1, -1, -1, - -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, - -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, - -1, 226, -1, -1, -1, 54, 55, -1, -1, -1, - 59, -1, -1, -1, -1, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, -1, 104, -1, -1, 107, 108, - -1, -1, -1, -1, -1, 114, -1, 116, -1, 118, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, 3, -1, -1, 6, -1, 8, - -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, - -1, 20, 21, 22, -1, -1, 25, -1, -1, -1, - -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, - -1, 40, 41, 42, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 54, 55, -1, -1, -1, - 59, -1, -1, -1, -1, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, -1, 104, -1, -1, 107, 108, - -1, -1, -1, -1, -1, 114, -1, 116, -1, 118, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, 3, -1, -1, 6, -1, 8, - -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, - -1, 20, 21, 22, -1, -1, 25, -1, -1, -1, - -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, - -1, 40, 41, 42, 43, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 54, 55, -1, -1, -1, - 59, -1, -1, -1, -1, -1, -1, -1, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, -1, 104, -1, -1, 107, 108, - -1, -1, -1, -1, -1, 114, -1, 116, -1, 118, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, 3, -1, -1, 6, -1, 8, - -1, -1, 11, 12, -1, 14, -1, -1, -1, -1, - -1, 20, -1, 22, -1, -1, -1, 26, 27, -1, - -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, - 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 55, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 8, 104, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 20, 116, -1, 118, - 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, - -1, 130, 131, 132, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 48, -1, 50, -1, -1, -1, - -1, -1, 56, -1, -1, -1, -1, -1, 62, -1, - -1, -1, -1, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, -1, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, -1, - 104, -1, -1, -1, -1, 109, -1, 8, -1, 113, - -1, 115, 116, 117, 118, 119, 120, 121, 122, 20, - 124, 125, 126, 127, 128, -1, 130, 131, 132, 133, - 134, 135, 136, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 48, -1, 50, - -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, - -1, 62, -1, -1, -1, -1, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 8, 104, -1, -1, -1, -1, 109, -1, - -1, -1, 113, -1, 20, 116, 117, 118, 119, 120, - 121, 122, -1, 124, 125, 126, 127, 128, -1, 130, - 131, 132, 133, 134, 135, 136, -1, -1, -1, -1, - -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, - 56, -1, -1, -1, -1, -1, 62, -1, -1, -1, - -1, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, -1, 104, -1, - -1, -1, -1, -1, 8, -1, -1, 113, -1, -1, - 116, 117, 118, 119, 120, 121, 20, -1, 124, 125, - 126, 127, 128, -1, 130, 131, 132, 133, 134, 135, - 136, 35, -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, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, -1, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 6, - 104, 8, -1, 10, 11, -1, -1, -1, -1, -1, - -1, -1, 116, 20, 118, 119, 120, 121, 25, -1, - 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, - 134, 135, 136, -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, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 6, 104, 8, -1, - 10, 11, -1, -1, -1, -1, -1, -1, -1, 116, - 20, 118, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, -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, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, -1, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 8, 104, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 20, 116, -1, 118, 119, - 120, 121, -1, -1, 124, 125, 126, 127, 128, 129, - 130, 131, 132, -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, 64, - 65, -1, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, -1, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, -1, 104, - 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 116, 20, 118, 119, 120, 121, -1, -1, 124, - 125, 126, 127, 128, -1, 130, 131, 132, -1, 37, - -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, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, -1, 104, 8, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 116, 20, - 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, 129, 130, 131, 132, -1, 37, -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, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, -1, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, -1, 104, 8, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 116, 20, 118, 119, 120, - 121, -1, -1, 124, 125, 126, 127, 128, 129, 130, - 131, 132, -1, 37, -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, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, -1, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, -1, - 104, 8, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 116, 20, 118, 119, 120, 121, -1, -1, - 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, - 37, -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, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 8, 104, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 20, 116, - -1, 118, 119, 120, 121, -1, -1, 124, 125, 126, - 127, 128, 129, 130, 131, 132, -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, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, -1, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 8, 104, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 20, 116, -1, 118, 119, 120, 121, - -1, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, -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, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 8, 104, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 20, 116, - -1, 118, 119, 120, 121, -1, 123, 124, 125, 126, - 127, 128, -1, 130, 131, 132, -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, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, -1, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, -1, 104, -1, -1, -1, -1, -1, 8, -1, - -1, -1, -1, -1, 116, -1, 118, 119, 120, 121, - 20, -1, 124, 125, 126, 127, 128, 129, 130, 131, - 132, -1, -1, -1, -1, 35, -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, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, -1, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, -1, 104, -1, -1, -1, -1, -1, - 8, -1, -1, -1, -1, -1, 116, -1, 118, 119, - 120, 121, 20, -1, 124, 125, 126, 127, 128, -1, - 130, 131, 132, -1, -1, -1, -1, 35, -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, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 8, 104, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 20, 116, -1, - 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, -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, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, -1, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 8, 104, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 20, 116, -1, 118, 119, 120, 121, -1, - -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, - -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, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, -1, 104, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, - 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, - 128, -1, 130, 131, 132, 3, -1, -1, 6, -1, - -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, - -1, -1, 20, 21, 22, 23, -1, 25, -1, -1, - -1, 3, -1, -1, 6, -1, 34, 35, 10, 11, - -1, -1, 40, 41, 42, 43, -1, -1, 20, 21, - 22, -1, -1, 25, -1, -1, 54, 55, -1, -1, - -1, 59, 34, -1, 36, -1, -1, -1, 40, 41, - 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 3, 54, 55, 6, -1, -1, 59, 10, 11, - -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, - 22, -1, -1, 25, -1, -1, -1, -1, -1, 107, - 108, -1, 34, -1, 36, -1, 114, -1, 40, 41, - 42, 43, 3, -1, -1, 6, -1, -1, -1, 10, - 11, -1, 54, 55, -1, 107, 108, 59, -1, 20, - 21, 22, 114, -1, 25, -1, -1, -1, -1, -1, - -1, -1, -1, 34, -1, 36, -1, -1, -1, 40, - 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 54, 55, 6, -1, -1, 59, 10, - 11, -1, -1, -1, -1, 107, 108, -1, -1, 20, - 21, 22, 114, -1, 25, -1, -1, -1, 3, -1, - -1, 6, -1, 34, -1, 10, 11, -1, -1, 40, - 41, 42, 43, -1, -1, 20, -1, 22, -1, -1, - 25, -1, -1, 54, 55, -1, 107, 108, 59, 34, - -1, -1, -1, 114, -1, 40, 41, 42, 43, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, -1, -1, -1, 59, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 107, 108, -1, -1, - -1, -1, -1, 114, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 107, 108, -1, -1, -1, -1, -1, 114 +static const short yycheck[] = +{ + 23, 4, 8, 21, 125, 185, 309, 100, 97, 2, + 3, 215, 120, 200, 218, 8, 143, 144, 21, 127, + 208, 24, 300, 16, 14, 279, 239, 240, 295, 137, + 23, 408, 57, 71, 288, 16, 4, 217, 303, 304, + 220, 178, 14, 10, 3, 363, 577, 140, 149, 150, + 14, 62, 60, 235, 7, 432, 6, 7, 8, 10, + 4, 64, 100, 66, 110, 596, 333, 525, 599, 6, + 7, 8, 254, 37, 25, 68, 280, 80, 37, 51, + 267, 34, 120, 76, 77, 35, 463, 618, 91, 127, + 115, 295, 229, 566, 552, 232, 99, 105, 629, 137, + 37, 7, 140, 23, 197, 143, 144, 110, 209, 210, + 211, 212, 105, 620, 97, 35, 109, 7, 396, 592, + 166, 111, 125, 390, 631, 118, 32, 254, 446, 447, + 384, 10, 11, 25, 31, 138, 139, 391, 645, 3, + 110, 242, 32, 356, 357, 410, 24, 33, 402, 46, + 527, 10, 11, 39, 32, 244, 20, 125, 37, 197, + 414, 25, 7, 156, 344, 183, 354, 170, 355, 162, + 138, 139, 165, 550, 551, 156, 214, 223, 37, 43, + 183, 125, 386, 387, 388, 20, 373, 10, 11, 32, + 25, 237, 238, 36, 138, 139, 166, 402, 244, 7, + 35, 20, 20, 7, 11, 12, 25, 25, 3, 414, + 318, 3, 490, 216, 37, 22, 254, 471, 10, 26, + 223, 28, 29, 30, 31, 3, 439, 34, 32, 356, + 357, 38, 10, 25, 237, 238, 32, 230, 231, 6, + 341, 37, 343, 23, 24, 37, 7, 25, 40, 41, + 42, 43, 32, 223, 31, 35, 302, 560, 359, 360, + 440, 465, 40, 41, 42, 43, 7, 237, 238, 272, + 273, 32, 275, 366, 244, 647, 10, 531, 10, 11, + 318, 374, 10, 10, 656, 657, 11, 12, 20, 7, + 22, 32, 33, 25, 21, 7, 668, 25, 670, 671, + 672, 26, 34, 28, 29, 30, 31, 35, 40, 41, + 42, 43, 439, 38, 32, 10, 570, 24, 356, 357, + 32, 7, 54, 112, 7, 32, 10, 59, 366, 36, + 534, 3, 10, 11, 6, 539, 374, 438, 7, 11, + 12, 25, 14, 7, 7, 383, 32, 112, 20, 32, + 22, 397, 398, 25, 26, 27, 40, 41, 42, 43, + 6, 97, 34, 32, 10, 11, 6, 39, 32, 32, + 10, 11, 375, 34, 377, 107, 108, 3, 10, 25, + 6, 34, 114, 55, 387, 388, 6, 10, 20, 593, + 10, 11, 10, 25, 32, 32, 517, 10, 35, 37, + 20, 439, 20, 607, 610, 25, 612, 25, 401, 613, + 403, 404, 581, 27, 6, 408, 32, 586, 10, 10, + 11, 37, 40, 41, 42, 43, 656, 657, 20, 32, + 27, 524, 435, 25, 37, 3, 54, 443, 668, 432, + 670, 59, 10, 375, 116, 377, 118, 37, 120, 121, + 443, 32, 124, 125, 126, 127, 37, 25, 32, 131, + 132, 479, 32, 37, 10, 11, 559, 37, 576, 37, + 463, 3, 40, 41, 42, 43, 479, 32, 10, 10, + 11, 671, 672, 76, 77, 32, 524, 143, 144, 107, + 108, 529, 53, 25, 237, 238, 114, 392, 393, 76, + 77, 27, 6, 33, 7, 37, 20, 545, 40, 41, + 42, 43, 20, 112, 517, 116, 112, 118, 25, 120, + 121, 559, 34, 124, 125, 126, 127, 530, 34, 27, + 131, 132, 111, 8, 527, 36, 539, 3, 576, 32, + 6, 37, 20, 546, 20, 11, 12, 32, 14, 555, + 32, 37, 32, 591, 10, 10, 22, 550, 551, 10, + 26, 10, 555, 566, 14, 10, 31, 7, 34, 7, + 34, 7, 34, 39, 37, 36, 7, 37, 37, 27, + 27, 27, 620, 36, 27, 37, 25, 31, 58, 592, + 27, 10, 34, 631, 35, 27, 31, 620, 31, 7, + 7, 27, 32, 31, 607, 34, 644, 645, 631, 647, + 37, 32, 37, 651, 37, 37, 26, 51, 656, 657, + 37, 644, 645, 32, 37, 648, 21, 106, 651, 35, + 668, 49, 670, 671, 672, 3, 60, 37, 6, 10, + 8, 7, 10, 11, 47, 61, 7, 46, 52, 34, + 37, 7, 20, 21, 22, 7, 48, 25, 35, 7, + 35, 10, 35, 10, 33, 7, 34, 25, 8, 3, + 0, 10, 40, 41, 42, 43, 0, 45, 10, 1, + 373, 4, 87, 4, 223, 105, 54, 55, 237, 218, + 238, 59, 214, 461, 109, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 591, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 125, 104, 125, 563, 107, + 108, 125, 600, 623, 607, 539, 114, 366, 116, 273, + 118, 119, 120, 121, 356, 244, 124, 125, 126, 127, + 128, 306, 130, 131, 132, 3, 300, 295, 6, 166, + 8, 529, 10, 11, 118, 244, -1, -1, -1, -1, + -1, -1, 20, 21, 22, -1, -1, 25, -1, -1, + -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, + -1, -1, 40, 41, 42, 43, 44, -1, -1, -1, + -1, -1, 226, -1, -1, -1, 54, 55, -1, -1, + -1, 59, -1, -1, -1, -1, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, -1, 104, -1, -1, 107, + 108, -1, -1, -1, -1, -1, 114, -1, 116, -1, + 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, + 128, -1, 130, 131, 132, 3, -1, -1, 6, -1, + 8, -1, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, 20, 21, 22, -1, -1, 25, -1, -1, + -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, + -1, -1, 40, 41, 42, 43, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 54, 55, -1, -1, + -1, 59, -1, -1, -1, -1, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, -1, 104, -1, -1, 107, + 108, -1, -1, -1, -1, -1, 114, -1, 116, -1, + 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, + 128, -1, 130, 131, 132, 3, -1, -1, 6, -1, + 8, -1, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, 20, 21, 22, -1, -1, 25, -1, -1, + -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, + -1, -1, 40, 41, 42, 43, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 54, 55, -1, -1, + -1, 59, -1, -1, -1, -1, -1, -1, -1, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, -1, 104, -1, -1, 107, + 108, -1, -1, -1, -1, -1, 114, -1, 116, -1, + 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, + 128, -1, 130, 131, 132, 3, -1, -1, 6, -1, + 8, -1, -1, 11, 12, -1, 14, -1, -1, -1, + -1, -1, 20, -1, 22, -1, -1, -1, 26, 27, + -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, + -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, -1, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 8, 104, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 20, 116, -1, + 118, 119, 120, 121, -1, -1, 124, 125, 126, 127, + 128, -1, 130, 131, 132, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 48, -1, 50, -1, -1, + -1, -1, -1, 56, -1, -1, -1, -1, -1, 62, + -1, -1, -1, -1, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, -1, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + -1, 104, -1, -1, -1, -1, 109, -1, 8, -1, + 113, -1, 115, 116, 117, 118, 119, 120, 121, 122, + 20, 124, 125, 126, 127, 128, -1, 130, 131, 132, + 133, 134, 135, 136, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, + 50, -1, -1, -1, -1, -1, 56, -1, -1, -1, + -1, -1, 62, -1, -1, -1, -1, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, -1, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 8, 104, -1, -1, -1, -1, 109, + -1, -1, -1, 113, -1, 20, 116, 117, 118, 119, + 120, 121, 122, -1, 124, 125, 126, 127, 128, -1, + 130, 131, 132, 133, 134, 135, 136, -1, -1, -1, + -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, + -1, 56, -1, -1, -1, -1, -1, 62, -1, -1, + -1, -1, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, -1, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, -1, 104, + -1, -1, -1, -1, -1, 8, -1, -1, 113, -1, + -1, 116, 117, 118, 119, 120, 121, 20, -1, 124, + 125, 126, 127, 128, -1, 130, 131, 132, 133, 134, + 135, 136, 35, -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, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, -1, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 6, 104, 8, -1, 10, 11, -1, -1, -1, -1, + -1, -1, -1, 116, 20, 118, 119, 120, 121, 25, + -1, 124, 125, 126, 127, 128, -1, 130, 131, 132, + -1, 134, 135, 136, -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, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 6, 104, 8, + -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, + 116, 20, 118, 119, 120, 121, -1, -1, 124, 125, + 126, 127, 128, 129, 130, 131, 132, -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, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 8, 104, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 20, 116, -1, 118, + 119, 120, 121, -1, -1, 124, 125, 126, 127, 128, + 129, 130, 131, 132, -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, + 64, 65, -1, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, -1, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, -1, + 104, 8, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 116, 20, 118, 119, 120, 121, -1, -1, + 124, 125, 126, 127, 128, -1, 130, 131, 132, -1, + 37, -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, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, -1, 104, 8, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, + 20, 118, 119, 120, 121, -1, -1, 124, 125, 126, + 127, 128, 129, 130, 131, 132, -1, 37, -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, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, -1, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, -1, 104, 8, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 116, 20, 118, 119, + 120, 121, -1, -1, 124, 125, 126, 127, 128, 129, + 130, 131, 132, -1, 37, -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, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, -1, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + -1, 104, 8, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 116, 20, 118, 119, 120, 121, -1, + -1, 124, 125, 126, 127, 128, 129, 130, 131, 132, + -1, 37, -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, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 8, 104, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, + 116, -1, 118, 119, 120, 121, -1, -1, 124, 125, + 126, 127, 128, 129, 130, 131, 132, -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, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, -1, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 8, 104, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 20, 116, -1, 118, 119, 120, + 121, -1, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, -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, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 8, 104, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, + 116, -1, 118, 119, 120, 121, -1, 123, 124, 125, + 126, 127, 128, -1, 130, 131, 132, -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, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, -1, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, -1, 104, -1, -1, -1, -1, -1, 8, + -1, -1, -1, -1, -1, 116, -1, 118, 119, 120, + 121, 20, -1, 124, 125, 126, 127, 128, 129, 130, + 131, 132, -1, -1, -1, -1, 35, -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, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, -1, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, -1, 104, -1, -1, -1, -1, + -1, 8, -1, -1, -1, -1, -1, 116, -1, 118, + 119, 120, 121, 20, -1, 124, 125, 126, 127, 128, + -1, 130, 131, 132, -1, -1, -1, -1, 35, -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, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 8, 104, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 20, 116, + -1, 118, 119, 120, 121, -1, -1, 124, 125, 126, + 127, 128, -1, 130, 131, 132, -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, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, -1, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 8, 104, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 20, 116, -1, 118, 119, 120, 121, + -1, -1, 124, 125, 126, 127, 128, -1, 130, 131, + 132, -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, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, -1, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, -1, 104, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, + -1, 118, 119, 120, 121, -1, -1, 124, 125, 126, + 127, 128, -1, 130, 131, 132, 3, -1, -1, 6, + -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, + -1, -1, -1, 20, 21, 22, 23, -1, 25, -1, + -1, -1, 3, -1, -1, 6, -1, 34, 35, 10, + 11, -1, -1, 40, 41, 42, 43, -1, -1, 20, + 21, 22, -1, -1, 25, -1, -1, 54, 55, -1, + -1, -1, 59, 34, -1, 36, -1, -1, -1, 40, + 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 54, 55, 6, -1, -1, 59, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, 20, + 21, 22, -1, -1, 25, -1, -1, -1, -1, -1, + 107, 108, -1, 34, -1, 36, -1, 114, -1, 40, + 41, 42, 43, 3, -1, -1, 6, -1, -1, -1, + 10, 11, -1, 54, 55, -1, 107, 108, 59, -1, + 20, 21, 22, 114, -1, 25, -1, -1, -1, -1, + -1, -1, -1, -1, 34, -1, 36, -1, -1, -1, + 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3, 54, 55, 6, -1, -1, 59, + 10, 11, -1, -1, -1, -1, 107, 108, -1, -1, + 20, 21, 22, 114, -1, 25, -1, -1, -1, 3, + -1, -1, 6, -1, 34, -1, 10, 11, -1, -1, + 40, 41, 42, 43, -1, -1, 20, -1, 22, -1, + -1, 25, -1, -1, 54, 55, -1, 107, 108, 59, + 34, -1, -1, -1, 114, -1, 40, 41, 42, 43, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 54, -1, -1, -1, -1, 59, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 107, 108, -1, + -1, -1, -1, -1, 114, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 107, 108, -1, -1, -1, -1, -1, + 114 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -/* This file comes from bison-1.28. */ - /* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software + Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1620,62 +1654,131 @@ static const short yycheck[] = { 23, This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +/* This is the parser code that is written into each bison parser when + the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# else +# ifndef YYSTACK_USE_ALLOCA +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC malloc +# define YYSTACK_FREE free +# endif +#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; +# if YYLSP_NEEDED + YYLTYPE yyls; +# endif +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# if YYLSP_NEEDED +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAX) +# else +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAX) +# endif + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ -#include #endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ + + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ #endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int #endif - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) @@ -1684,128 +1787,157 @@ static const short yycheck[] = { 23, #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ +#define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ + { \ + yychar = (Token); \ + yylval = (Value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ + { \ + yyerror ("syntax error: cannot back up"); \ + YYERROR; \ + } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 -#ifndef YYPURE -#define YYLEX yylex() -#endif -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ +/* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). -#ifndef YYPURE + When YYLLOC_DEFAULT is run, CURRENT is set the location of the + first token. By default, to implement support for ranges, extend + its range to the last symbol. */ -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; #endif -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ +/* YYLEX -- calling `yylex' with the right arguments. */ + +#if YYPURE +# if YYLSP_NEEDED +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval, &yylloc) +# endif +# else /* !YYLSP_NEEDED */ +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval) +# endif +# endif /* !YYLSP_NEEDED */ +#else /* !YYPURE */ +# define YYLEX yylex () +#endif /* !YYPURE */ + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +#endif /* !YYDEBUG */ + +/* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -#define YYINITDEPTH 200 +# define YYINITDEPTH 200 #endif -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ #if YYMAXDEPTH == 0 -#undef YYMAXDEPTH +# undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +# define YYMAXDEPTH 10000 #endif -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - unsigned int count; +#ifdef YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif { - register char *f = from; - register char *t = to; - register int i = count; + register const char *yys = yystr; - while (i-- > 0) - *t++ = *f++; -} + while (*yys++ != '\0') + continue; -#else /* __cplusplus */ + return yys - yystr - 1; +} +# endif +# endif -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, unsigned int count) +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif { - register char *t = to; - register char *f = from; - register int i = count; + register char *yyd = yydest; + register const char *yys = yysrc; - while (i-- > 0) - *t++ = *f++; -} + while ((*yyd++ = *yys++) != '\0') + continue; -#endif + return yyd - 1; +} +# endif +# endif #endif @@ -1817,76 +1949,121 @@ __yy_memcpy (char *to, char *from, unsigned int count) to the proper pointer type. */ #ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ +# if defined (__STDC__) || defined (__cplusplus) +# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +# define YYPARSE_PARAM_DECL +# else +# define YYPARSE_PARAM_ARG YYPARSE_PARAM +# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +# endif +#else /* !YYPARSE_PARAM */ +# define YYPARSE_PARAM_ARG +# define YYPARSE_PARAM_DECL +#endif /* !YYPARSE_PARAM */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ -#ifdef YYPARSE_PARAM +# ifdef YYPARSE_PARAM int yyparse (void *); -#else +# else int yyparse (void); +# endif #endif + +/* YY_DECL_VARIABLES -- depending whether we use a pure parser, + variables are global, or local to YYPARSE. */ + +#define YY_DECL_NON_LSP_VARIABLES \ +/* The lookahead symbol. */ \ +int yychar; \ + \ +/* The semantic value of the lookahead symbol. */ \ +YYSTYPE yylval; \ + \ +/* Number of parse errors so far. */ \ +int yynerrs; + +#if YYLSP_NEEDED +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES \ + \ +/* Location data for the lookahead symbol. */ \ +YYLTYPE yylloc; +#else +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES #endif + +/* If nonreentrant, generate the variables here. */ + +#if !YYPURE +YY_DECL_VARIABLES +#endif /* !YYPURE */ + int -yyparse(YYPARSE_PARAM_ARG) +yyparse (YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { + /* If reentrant, generate the variables here. */ +#if YYPURE + YY_DECL_VARIABLES +#endif /* !YYPURE */ + register int yystate; register int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yychar1 = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short yyssa[YYINITDEPTH]; + short *yyss = yyssa; register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + register YYSTYPE *yyvsp; -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ +#if YYLSP_NEEDED + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; +#endif -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#if YYLSP_NEEDED +# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else -#define YYPOPSTACK (yyvsp--, yyssp--) +# define YYPOPSTACK (yyvsp--, yyssp--) #endif - int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; + YYSIZE_T yystacksize = YYINITDEPTH; -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; +#if YYLSP_NEEDED + YYLTYPE yyloc; +#endif + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ int yylen; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; @@ -1898,110 +2075,110 @@ yyparse(YYPARSE_PARAM_ARG) so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss - 1; + yyssp = yyss; yyvsp = yyvs; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp = yyls; #endif + goto yysetstate; -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; - *++yyssp = yystate; + yysetstate: + *yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; + YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. */ +# if YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; +# else + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); +# endif + yyss = yyss1; + yyvs = yyvs1; + } #else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyoverflowlab; +# else /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 2; - } + goto yyoverflowlab; yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); -#endif + + { + short *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyoverflowlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); +# if YYLSP_NEEDED + YYSTACK_RELOCATE (yyls); +# endif +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif #endif /* no yyoverflow */ - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; +#if YYLSP_NEEDED + yylsp = yyls + yysize - 1; #endif -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); if (yyssp >= yyss + yystacksize - 1) YYABORT; } -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; - yybackup: + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ @@ -2020,10 +2197,7 @@ yynewstate: if (yychar == YYEMPTY) { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } @@ -2034,25 +2208,25 @@ yynewstate: yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif + YYDPRINTF ((stderr, "Now at end of input.\n")); } else { - yychar1 = YYTRANSLATE(yychar); + yychar1 = YYTRANSLATE (yychar); -#if YYDEBUG != 0 +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables + which are defined only if `YYDEBUG' is set. */ if (yydebug) { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT + YYFPRINTF (stderr, "Next token is %d (%s", + yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise + meaning of a token, for further debugging info. */ +# ifdef YYPRINT YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); +# endif + YYFPRINTF (stderr, ")\n"); } #endif } @@ -2084,56 +2258,78 @@ yynewstate: YYACCEPT; /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif + YYDPRINTF ((stderr, "Shifting token %d (%s), ", + yychar, yytname[yychar1])); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED *++yylsp = yylloc; #endif - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; yystate = yyn; goto yynewstate; -/* Do the default action for the current state. */ -yydefault: +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; + goto yyreduce; + -/* Do a reduction. yyn is the number of a rule to reduce with. */ +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ yyreduce: + /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ -#if YYDEBUG != 0 + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to the semantic value of + the lookahead token. This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + +#if YYLSP_NEEDED + /* Similarly for the default location. Let the user run additional + commands if for instance locations are ranges. */ + yyloc = yylsp[1-yylen]; + YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); +#endif + +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables which + are defined only if `YYDEBUG' is set. */ if (yydebug) { - int i; + int yyi; - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); + YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); } #endif - switch (yyn) { case 1: @@ -3283,49 +3479,34 @@ case 404: { yyval.var = makeVarNode (yyvsp[-3].ltok, TRUE, yyvsp[0].lcltypespec); ; break;} } - /* the action file gets copied in in place of this dollarsign */ + yyvsp -= yylen; yyssp -= yylen; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp -= yylen; #endif -#if YYDEBUG != 0 +#if YYDEBUG if (yydebug) { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); } #endif *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } +#if YYLSP_NEEDED + *++yylsp = yyloc; #endif - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ yyn = yyr1[yyn]; @@ -3337,10 +3518,13 @@ case 404: goto yynewstate; -yyerrlab: /* here on detecting error */ - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { ++yynerrs; @@ -3349,102 +3533,121 @@ yyerrlab: /* here on detecting error */ if (yyn > YYFLAG && yyn < YYLAST) { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) + YYSIZE_T yysize = 0; + char *yymsg; + int yyx, yycount; + + yycount = 0; + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) + if (yycheck[yyx + yyn] == yyx) + yysize += yystrlen (yytname[yyx]) + 15, yycount++; + yysize += yystrlen ("parse error, unexpected ") + 1; + yysize += yystrlen (yytname[YYTRANSLATE (yychar)]); + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg != 0) { - strcpy(msg, "parse error"); + char *yyp = yystpcpy (yymsg, "parse error, unexpected "); + yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]); - if (count < 5) + if (yycount < 5) { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) + yycount = 0; + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); + yyx++) + if (yycheck[yyx + yyn] == yyx) { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; + const char *yyq = ! yycount ? ", expecting " : " or "; + yyp = yystpcpy (yyp, yyq); + yyp = yystpcpy (yyp, yytname[yyx]); + yycount++; } } - yyerror(msg); - free(msg); + yyerror (yymsg); + YYSTACK_FREE (yymsg); } else - yyerror ("parse error; also virtual memory exceeded"); + yyerror ("parse error; also virtual memory exhausted"); } else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); +#endif /* defined (YYERROR_VERBOSE) */ + yyerror ("parse error"); } - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ + +/*--------------------------------------------------. +| yyerrlab1 -- error raised explicitly by an action | +`--------------------------------------------------*/ +yyerrlab1: if (yyerrstatus == 3) { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - + YYDPRINTF ((stderr, "Discarding token %d (%s).\n", + yychar, yytname[yychar1])); yychar = YYEMPTY; } - /* Else will try to reuse lookahead token - after shifting the error token. */ + /* Else will try to reuse lookahead token after shifting the error + token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; -yyerrdefault: /* current state does not do anything special for the error token. */ +/*-------------------------------------------------------------------. +| yyerrdefault -- current state does not do anything special for the | +| error token. | +`-------------------------------------------------------------------*/ +yyerrdefault: #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; + + /* If its default is to accept any token, ok. Otherwise pop it. */ + yyn = yydefact[yystate]; + if (yyn) + goto yydefault; #endif -yyerrpop: /* pop the current state because it cannot handle the error token */ - if (yyssp == yyss) YYABORT; +/*---------------------------------------------------------------. +| yyerrpop -- pop the current state because it cannot handle the | +| error token | +`---------------------------------------------------------------*/ +yyerrpop: + if (yyssp == yyss) + YYABORT; yyvsp--; yystate = *--yyssp; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp--; #endif -#if YYDEBUG != 0 +#if YYDEBUG if (yydebug) { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "Error: state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); } #endif +/*--------------. +| yyerrhandle. | +`--------------*/ yyerrhandle: - yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; @@ -3467,42 +3670,45 @@ yyerrhandle: if (yyn == YYFINAL) YYACCEPT; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif + YYDPRINTF ((stderr, "Shifting error token, ")); *++yyvsp = yylval; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +/*---------------------------------------------. +| yyoverflowab -- parser overflow comes here. | +`---------------------------------------------*/ +yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ + +yyreturn: +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); #endif - } - return 1; + return yyresult; } diff --git a/src/llmain.c b/src/llmain.c index fa9b8fe..887ec77 100644 --- a/src/llmain.c +++ b/src/llmain.c @@ -1143,7 +1143,12 @@ int main (int argc, char *argv[]) if (anylcl) { + /* Gack: really should figure out how to make configure find snprintf... */ +# ifdef WIN32 + (void) _snprintf (msg, 256, +# else (void) snprintf (msg, 256, +# endif "Time distribution (percent): initialize %.2f / lcl %.2f / " "pre-process %.2f / c check %.2f / finalize %.2f \n", (100.0 * (double) (libtime - before) / ttime), @@ -1154,7 +1159,11 @@ int main (int argc, char *argv[]) } else { +# ifdef WIN32 + (void) _snprintf (msg, 256, +# else (void) snprintf (msg, 256, +# endif "Time distribution (percent): initialize %.2f / " "pre-process %.2f / c check %.2f / finalize %.2f \n", (100.0 * (double) (libtime - before) / ttime), diff --git a/src/lslinit.c b/src/lslinit.c index f117411..3cb7301 100644 --- a/src/lslinit.c +++ b/src/lslinit.c @@ -39,6 +39,8 @@ # include "lclinit.h" # include "lclscan.h" # include "lclscanline.h" +# include "lclsyntable.h" +# include "lcltokentable.h" /* needed to parse init files */ # include "shift.h" diff --git a/src/mtscanner.c b/src/mtscanner.c index 51af450..3f3d8b3 100644 --- a/src/mtscanner.c +++ b/src/mtscanner.c @@ -307,7 +307,8 @@ ctype mtscanner_lookupType (mttok tok) else { ctype ct; - ue = uentry_makeDatatype (tname, ctype_unknown, MAYBE, MAYBE, mttok_stealLoc (tok)); + ue = uentry_makeDatatype (tname, ctype_unknown, MAYBE, QU_UNKNOWN, + mttok_stealLoc (tok)); DPRINTF (("Making mts entry: %s", uentry_unparse (ue))); ct = usymtab_supForwardTypeEntry (ue); DPRINTF (("Type: %s", ctype_unparse (ct))); diff --git a/src/osd.c b/src/osd.c index 68e90c8..047bb7e 100644 --- a/src/osd.c +++ b/src/osd.c @@ -868,6 +868,7 @@ static void osd_setWorkingDirectory (void) { lldiagmsg (message ("Cannot get working directory: %s\n", lldecodeerror (errno))); + osd_cwd = cstring_makeLiteral (""); } else { @@ -903,7 +904,7 @@ cstring osd_absolutePath (cstring cwd, cstring filename) llassert (cstring_isDefined (cwd2)); llassert (cstring_isDefined (filename)); - abs_buffer = (char *) dmalloc (size_fromInt (cstring_length (cwd2) + cstring_length (filename) + 2)); + abs_buffer = (char *) dmalloc (cstring_length (cwd2) + cstring_length (filename) + 2); endp = abs_buffer; /* @@ -1053,6 +1054,12 @@ cstring osd_outputPath (cstring filename) rel_buf_p = rel_buffer; *rel_buf_p = '\0'; + if (cwd_p == NULL) + { + /* Need to prevent recursive assertion failures */ + return cstring_copy (filename); + } + llassert (cwd_p != NULL); llassert (path_p != NULL); diff --git a/src/qual.c b/src/qual.c index 959cb79..843aab1 100644 --- a/src/qual.c +++ b/src/qual.c @@ -121,6 +121,7 @@ cstring qual_unparse (qual q) { case QU_UNKNOWN: return cstring_makeLiteralTemp ("unknown"); case QU_ABSTRACT: return cstring_makeLiteralTemp ("abstract"); + case QU_NUMABSTRACT:return cstring_makeLiteralTemp ("numabstract"); case QU_CONCRETE: return cstring_makeLiteralTemp ("concrete"); case QU_MUTABLE: return cstring_makeLiteralTemp ("mutable"); case QU_IMMUTABLE: return cstring_makeLiteralTemp ("immutable"); @@ -192,6 +193,28 @@ cstring qual_unparse (qual q) BADEXIT; } +qual qual_abstractFromCodeChar (char c) +{ + switch (c) { + case '-': return qual_createUnknown (); + case 'a': return qual_createAbstract (); + case 'n': return qual_createNumAbstract (); + case 'c': return qual_createConcrete (); + BADDEFAULT; + } +} + +char qual_abstractCode (qual q) +{ + switch (q->kind) { + case QU_UNKNOWN: return '-'; + case QU_ABSTRACT: return 'a'; + case QU_NUMABSTRACT: return 'n'; + case QU_CONCRETE: return 'c'; + BADDEFAULT; + } +} + extern bool qual_match (qual q1, qual q2) { if (q1->kind == q2->kind) { diff --git a/src/signature.c.der b/src/signature.c.der index e145429..12cb56b 100644 --- a/src/signature.c.der +++ b/src/signature.c.der @@ -54,9 +54,8 @@ /* < end of bison.head > */ - -/* A Bison parser, made from signature.y - by GNU Bison version 1.28 */ +/* A Bison parser, made from signature.y + by GNU bison 1.35. */ #define YYBISON 1 /* Identify Bison output. */ @@ -67,51 +66,51 @@ #define yychar lslchar #define yydebug lsldebug #define yynerrs lslnerrs -#define LST_SIMPLEID 257 -#define LST_LOGICALOP 258 -#define LST_EQOP 259 -#define LST_SIMPLEOP 260 -#define LST_MAPSYM 261 -#define LST_FIELDMAPSYM 262 -#define LST_MARKERSYM 263 -#define LST_ifTOKEN 264 -#define LST_thenTOKEN 265 -#define LST_elseTOKEN 266 -#define LST_LBRACKET 267 -#define LST_RBRACKET 268 -#define LST_SELECTSYM 269 -#define LST_SEPSYM 270 -#define LST_OPENSYM 271 -#define LST_CLOSESYM 272 -#define LST_COLON 273 -#define LST_COMMA 274 -#define LST_EOL 275 -#define LST_COMMENTSYM 276 -#define LST_WHITESPACE 277 -#define LST_QUANTIFIERSYM 278 -#define LST_EQUATIONSYM 279 -#define LST_EQSEPSYM 280 -#define LST_COMPOSESYM 281 -#define LST_LPAR 282 -#define LST_RPAR 283 -#define LST_assertsTOKEN 284 -#define LST_assumesTOKEN 285 -#define LST_byTOKEN 286 -#define LST_convertsTOKEN 287 -#define LST_enumerationTOKEN 288 -#define LST_equationsTOKEN 289 -#define LST_exemptingTOKEN 290 -#define LST_forTOKEN 291 -#define LST_generatedTOKEN 292 -#define LST_impliesTOKEN 293 -#define LST_includesTOKEN 294 -#define LST_introducesTOKEN 295 -#define LST_ofTOKEN 296 -#define LST_partitionedTOKEN 297 -#define LST_traitTOKEN 298 -#define LST_tupleTOKEN 299 -#define LST_unionTOKEN 300 -#define LST_BADTOKEN 301 +# define LST_SIMPLEID 257 +# define LST_LOGICALOP 258 +# define LST_EQOP 259 +# define LST_SIMPLEOP 260 +# define LST_MAPSYM 261 +# define LST_FIELDMAPSYM 262 +# define LST_MARKERSYM 263 +# define LST_ifTOKEN 264 +# define LST_thenTOKEN 265 +# define LST_elseTOKEN 266 +# define LST_LBRACKET 267 +# define LST_RBRACKET 268 +# define LST_SELECTSYM 269 +# define LST_SEPSYM 270 +# define LST_OPENSYM 271 +# define LST_CLOSESYM 272 +# define LST_COLON 273 +# define LST_COMMA 274 +# define LST_EOL 275 +# define LST_COMMENTSYM 276 +# define LST_WHITESPACE 277 +# define LST_QUANTIFIERSYM 278 +# define LST_EQUATIONSYM 279 +# define LST_EQSEPSYM 280 +# define LST_COMPOSESYM 281 +# define LST_LPAR 282 +# define LST_RPAR 283 +# define LST_assertsTOKEN 284 +# define LST_assumesTOKEN 285 +# define LST_byTOKEN 286 +# define LST_convertsTOKEN 287 +# define LST_enumerationTOKEN 288 +# define LST_equationsTOKEN 289 +# define LST_exemptingTOKEN 290 +# define LST_forTOKEN 291 +# define LST_generatedTOKEN 292 +# define LST_impliesTOKEN 293 +# define LST_includesTOKEN 294 +# define LST_introducesTOKEN 295 +# define LST_ofTOKEN 296 +# define LST_partitionedTOKEN 297 +# define LST_traitTOKEN 298 +# define LST_tupleTOKEN 299 +# define LST_unionTOKEN 300 +# define LST_BADTOKEN 301 @@ -139,6 +138,7 @@ static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */); /*@-nullassign@*/ +#ifndef YYSTYPE typedef union { ltoken ltok; /* a leaf is also an ltoken */ unsigned int count; @@ -149,17 +149,12 @@ typedef union { /*@owned@*/ lslOp operator; /*@only@*/ lslOpList operators; /*@-redef@*/ /*@-matchfields@*/ -} YYSTYPE; -#ifndef YYDEBUG -#define YYDEBUG 1 -#endif - -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const +} yystype; +# define YYSTYPE yystype +# define YYSTYPE_IS_TRIVIAL 1 #endif +#ifndef YYDEBUG +# define YYDEBUG 1 #endif @@ -168,165 +163,194 @@ typedef union { #define YYFLAG -32768 #define YYNTBASE 48 +/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ #define YYTRANSLATE(x) ((unsigned)(x) <= 301 ? yytranslate[x] : 62) -static const char yytranslate[] = { 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, 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, - 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, 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, - 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, 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, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47 +/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ +static const char yytranslate[] = +{ + 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, 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, 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, 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, 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, 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, 1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47 }; -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 7, 11, 13, 15, 22, 24, 27, - 30, 34, 38, 43, 48, 54, 58, 63, 68, 74, - 77, 81, 85, 87, 89, 91, 92, 94, 96, 100, - 102, 104, 108, 109, 111, 113, 117, 119 +#if YYDEBUG +static const short yyprhs[] = +{ + 0, 0, 2, 4, 7, 11, 13, 15, 22, 24, + 27, 30, 34, 38, 43, 48, 54, 58, 63, 68, + 74, 77, 81, 85, 87, 89, 91, 92, 94, 96, + 100, 102, 104, 108, 109, 111, 113, 117, 119 }; - -static const short yyrhs[] = { 49, - 0, 50, 0, 49, 50, 0, 51, 19, 57, 0, - 61, 0, 52, 0, 10, 9, 11, 9, 12, 9, - 0, 53, 0, 9, 53, 0, 53, 9, 0, 9, - 53, 9, 0, 17, 54, 18, 0, 9, 17, 54, - 18, 0, 17, 54, 18, 9, 0, 9, 17, 54, - 18, 9, 0, 13, 54, 14, 0, 9, 13, 54, - 14, 0, 13, 54, 14, 9, 0, 9, 13, 54, - 14, 9, 0, 15, 3, 0, 9, 15, 3, 0, - 9, 8, 3, 0, 6, 0, 4, 0, 5, 0, - 0, 55, 0, 9, 0, 55, 56, 9, 0, 20, - 0, 16, 0, 58, 7, 60, 0, 0, 59, 0, - 60, 0, 59, 20, 60, 0, 3, 0, 3, 0 +static const short yyrhs[] = +{ + 49, 0, 50, 0, 49, 50, 0, 51, 19, 57, + 0, 61, 0, 52, 0, 10, 9, 11, 9, 12, + 9, 0, 53, 0, 9, 53, 0, 53, 9, 0, + 9, 53, 9, 0, 17, 54, 18, 0, 9, 17, + 54, 18, 0, 17, 54, 18, 9, 0, 9, 17, + 54, 18, 9, 0, 13, 54, 14, 0, 9, 13, + 54, 14, 0, 13, 54, 14, 9, 0, 9, 13, + 54, 14, 9, 0, 15, 3, 0, 9, 15, 3, + 0, 9, 8, 3, 0, 6, 0, 4, 0, 5, + 0, 0, 55, 0, 9, 0, 55, 56, 9, 0, + 20, 0, 16, 0, 58, 7, 60, 0, 0, 59, + 0, 60, 0, 59, 20, 60, 0, 3, 0, 3, + 0 }; #endif -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 139, 142, 147, 152, 159, 161, 166, 168, 170, 172, - 174, 176, 178, 180, 182, 185, 188, 191, 194, 197, - 200, 205, 210, 212, 214, 218, 220, 224, 226, 230, - 232, 236, 240, 242, 246, 248, 252, 259 +#if YYDEBUG +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const short yyrline[] = +{ + 0, 139, 142, 147, 152, 159, 161, 166, 168, 170, + 172, 174, 176, 178, 180, 182, 185, 188, 191, 194, + 197, 200, 205, 210, 212, 214, 218, 220, 224, 226, + 230, 232, 236, 240, 242, 246, 248, 252, 259 }; #endif -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","LST_SIMPLEID", -"LST_LOGICALOP","LST_EQOP","LST_SIMPLEOP","LST_MAPSYM","LST_FIELDMAPSYM","LST_MARKERSYM", -"LST_ifTOKEN","LST_thenTOKEN","LST_elseTOKEN","LST_LBRACKET","LST_RBRACKET", -"LST_SELECTSYM","LST_SEPSYM","LST_OPENSYM","LST_CLOSESYM","LST_COLON","LST_COMMA", -"LST_EOL","LST_COMMENTSYM","LST_WHITESPACE","LST_QUANTIFIERSYM","LST_EQUATIONSYM", -"LST_EQSEPSYM","LST_COMPOSESYM","LST_LPAR","LST_RPAR","LST_assertsTOKEN","LST_assumesTOKEN", -"LST_byTOKEN","LST_convertsTOKEN","LST_enumerationTOKEN","LST_equationsTOKEN", -"LST_exemptingTOKEN","LST_forTOKEN","LST_generatedTOKEN","LST_impliesTOKEN", -"LST_includesTOKEN","LST_introducesTOKEN","LST_ofTOKEN","LST_partitionedTOKEN", -"LST_traitTOKEN","LST_tupleTOKEN","LST_unionTOKEN","LST_BADTOKEN","top","operatorList", -"operator","name","opForm","anyOp","middle","placeList","separator","signature", -"domain","sortList","sortId","opId", NULL +#if (YYDEBUG) || defined YYERROR_VERBOSE + +/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ +static const char *const yytname[] = +{ + "$", "error", "$undefined.", "LST_SIMPLEID", "LST_LOGICALOP", "LST_EQOP", + "LST_SIMPLEOP", "LST_MAPSYM", "LST_FIELDMAPSYM", "LST_MARKERSYM", + "LST_ifTOKEN", "LST_thenTOKEN", "LST_elseTOKEN", "LST_LBRACKET", + "LST_RBRACKET", "LST_SELECTSYM", "LST_SEPSYM", "LST_OPENSYM", + "LST_CLOSESYM", "LST_COLON", "LST_COMMA", "LST_EOL", "LST_COMMENTSYM", + "LST_WHITESPACE", "LST_QUANTIFIERSYM", "LST_EQUATIONSYM", + "LST_EQSEPSYM", "LST_COMPOSESYM", "LST_LPAR", "LST_RPAR", + "LST_assertsTOKEN", "LST_assumesTOKEN", "LST_byTOKEN", + "LST_convertsTOKEN", "LST_enumerationTOKEN", "LST_equationsTOKEN", + "LST_exemptingTOKEN", "LST_forTOKEN", "LST_generatedTOKEN", + "LST_impliesTOKEN", "LST_includesTOKEN", "LST_introducesTOKEN", + "LST_ofTOKEN", "LST_partitionedTOKEN", "LST_traitTOKEN", + "LST_tupleTOKEN", "LST_unionTOKEN", "LST_BADTOKEN", "top", + "operatorList", "operator", "name", "opForm", "anyOp", "middle", + "placeList", "separator", "signature", "domain", "sortList", "sortId", + "opId", 0 }; #endif -static const short yyr1[] = { 0, - 48, 49, 49, 50, 51, 51, 52, 52, 52, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 53, 53, 53, 54, 54, 55, 55, 56, - 56, 57, 58, 58, 59, 59, 60, 61 +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const short yyr1[] = +{ + 0, 48, 49, 49, 50, 51, 51, 52, 52, 52, + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, + 52, 52, 52, 53, 53, 53, 54, 54, 55, 55, + 56, 56, 57, 58, 58, 59, 59, 60, 61 }; -static const short yyr2[] = { 0, - 1, 1, 2, 3, 1, 1, 6, 1, 2, 2, - 3, 3, 4, 4, 5, 3, 4, 4, 5, 2, - 3, 3, 1, 1, 1, 0, 1, 1, 3, 1, - 1, 3, 0, 1, 1, 3, 1, 1 +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const short yyr2[] = +{ + 0, 1, 1, 2, 3, 1, 1, 6, 1, 2, + 2, 3, 3, 4, 4, 5, 3, 4, 4, 5, + 2, 3, 3, 1, 1, 1, 0, 1, 1, 3, + 1, 1, 3, 0, 1, 1, 3, 1, 1 }; -static const short yydefact[] = { 0, - 38, 24, 25, 23, 0, 0, 26, 0, 26, 1, - 2, 0, 6, 8, 5, 0, 26, 0, 26, 9, - 0, 28, 0, 27, 20, 0, 3, 33, 10, 22, - 0, 21, 0, 11, 0, 16, 31, 30, 0, 12, - 37, 4, 0, 34, 35, 17, 13, 0, 18, 29, - 14, 0, 0, 19, 15, 0, 32, 36, 7, 0, - 0, 0 +/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE + doesn't specify something else to do. Zero means the default is an + error. */ +static const short yydefact[] = +{ + 0, 38, 24, 25, 23, 0, 0, 26, 0, 26, + 1, 2, 0, 6, 8, 5, 0, 26, 0, 26, + 9, 0, 28, 0, 27, 20, 0, 3, 33, 10, + 22, 0, 21, 0, 11, 0, 16, 31, 30, 0, + 12, 37, 4, 0, 34, 35, 17, 13, 0, 18, + 29, 14, 0, 0, 19, 15, 0, 32, 36, 7, + 0, 0, 0 }; -static const short yydefgoto[] = { 60, - 10, 11, 12, 13, 14, 23, 24, 39, 42, 43, - 44, 45, 15 +static const short yydefgoto[] = +{ + 60, 10, 11, 12, 13, 14, 23, 24, 39, 42, + 43, 44, 45, 15 }; -static const short yypact[] = { -3, --32768,-32768,-32768,-32768, 11, -4, 0, 8, 0, -3, --32768, -1,-32768, 13,-32768, 17, 0, 22, 0, 18, - 20,-32768, 19, -12,-32768, 14,-32768, 31,-32768,-32768, - 21,-32768, 23,-32768, 27, 28,-32768,-32768, 29, 30, --32768,-32768, 33, 24,-32768, 34, 36, 35,-32768,-32768, --32768, 31, 31,-32768,-32768, 37,-32768,-32768,-32768, 42, - 48,-32768 +static const short yypact[] = +{ + -3,-32768,-32768,-32768,-32768, 11, -4, 0, 8, 0, + -3,-32768, -1,-32768, 13,-32768, 17, 0, 22, 0, + 18, 20,-32768, 19, -12,-32768, 14,-32768, 31,-32768, + -32768, 21,-32768, 23,-32768, 27, 28,-32768,-32768, 29, + 30,-32768,-32768, 33, 24,-32768, 34, 36, 35,-32768, + -32768,-32768, 31, 31,-32768,-32768, 37,-32768,-32768,-32768, + 42, 48,-32768 }; -static const short yypgoto[] = {-32768, --32768, 39,-32768,-32768, 45, 4,-32768,-32768,-32768,-32768, --32768, -23,-32768 +static const short yypgoto[] = +{ + -32768,-32768, 39,-32768,-32768, 45, 4,-32768,-32768,-32768, + -32768,-32768, -23,-32768 }; #define YYLAST 50 -static const short yytable[] = { 1, - 2, 3, 4, 37, 21, 5, 6, 38, 22, 7, - 25, 8, 26, 9, 2, 3, 4, 28, 16, 30, - 31, 29, 33, 17, 32, 18, 34, 19, 57, 58, - 35, 40, 36, 41, 46, 48, 49, 50, 51, 52, - 47, 61, 54, 53, 55, 59, 56, 62, 27, 20 +static const short yytable[] = +{ + 1, 2, 3, 4, 37, 21, 5, 6, 38, 22, + 7, 25, 8, 26, 9, 2, 3, 4, 28, 16, + 30, 31, 29, 33, 17, 32, 18, 34, 19, 57, + 58, 35, 40, 36, 41, 46, 48, 49, 50, 51, + 52, 47, 61, 54, 53, 55, 59, 56, 62, 27, + 20 }; -static const short yycheck[] = { 3, - 4, 5, 6, 16, 9, 9, 10, 20, 9, 13, - 3, 15, 9, 17, 4, 5, 6, 19, 8, 3, - 17, 9, 19, 13, 3, 15, 9, 17, 52, 53, - 11, 18, 14, 3, 14, 9, 9, 9, 9, 7, - 18, 0, 9, 20, 9, 9, 12, 0, 10, 5 +static const short yycheck[] = +{ + 3, 4, 5, 6, 16, 9, 9, 10, 20, 9, + 13, 3, 15, 9, 17, 4, 5, 6, 19, 8, + 3, 17, 9, 19, 13, 3, 15, 9, 17, 52, + 53, 11, 18, 14, 3, 14, 9, 9, 9, 9, + 7, 18, 0, 9, 20, 9, 9, 12, 0, 10, + 5 }; #define YYPURE 1 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -/* This file comes from bison-1.28. */ - /* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software + Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -348,62 +372,131 @@ static const short yycheck[] = { 3, This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ +/* This is the parser code that is written into each bison parser when + the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# else +# ifndef YYSTACK_USE_ALLOCA +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC malloc +# define YYSTACK_FREE free +# endif +#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; +# if YYLSP_NEEDED + YYLTYPE yyls; +# endif +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# if YYLSP_NEEDED +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAX) +# else +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAX) +# endif + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + register YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ -#ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA -#include -#else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ -#include #endif -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include */ - #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca -#endif /* __hpux */ + + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ #endif -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ - -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int #endif - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) @@ -412,128 +505,157 @@ static const short yycheck[] = { 3, #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ +#define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ + { \ + yychar = (Token); \ + yylval = (Value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ + { \ + yyerror ("syntax error: cannot back up"); \ + YYERROR; \ + } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 -#ifndef YYPURE -#define YYLEX yylex() -#endif -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif +/* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). -/* If nonreentrant, generate the variables here */ + When YYLLOC_DEFAULT is run, CURRENT is set the location of the + first token. By default, to implement support for ranges, extend + its range to the last symbol. */ -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; #endif -/* YYINITDEPTH indicates the initial size of the parser's stacks */ +/* YYLEX -- calling `yylex' with the right arguments. */ + +#if YYPURE +# if YYLSP_NEEDED +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval, &yylloc) +# endif +# else /* !YYLSP_NEEDED */ +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval) +# endif +# endif /* !YYLSP_NEEDED */ +#else /* !YYPURE */ +# define YYLEX yylex () +#endif /* !YYPURE */ + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +#endif /* !YYDEBUG */ + +/* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH -#define YYINITDEPTH 200 +# define YYINITDEPTH 200 #endif -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ #if YYMAXDEPTH == 0 -#undef YYMAXDEPTH +# undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 +# define YYMAXDEPTH 10000 #endif -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - unsigned int count; -{ - register char *f = from; - register char *t = to; - register int i = count; +#ifdef YYERROR_VERBOSE - while (i-- > 0) - *t++ = *f++; -} +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif +{ + register const char *yys = yystr; -#else /* __cplusplus */ + while (*yys++ != '\0') + continue; -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, unsigned int count) + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif { - register char *t = to; - register char *f = from; - register int i = count; + register char *yyd = yydest; + register const char *yys = yysrc; - while (i-- > 0) - *t++ = *f++; -} + while ((*yyd++ = *yys++) != '\0') + continue; -#endif + return yyd - 1; +} +# endif +# endif #endif @@ -545,76 +667,121 @@ __yy_memcpy (char *to, char *from, unsigned int count) to the proper pointer type. */ #ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ +# if defined (__STDC__) || defined (__cplusplus) +# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +# define YYPARSE_PARAM_DECL +# else +# define YYPARSE_PARAM_ARG YYPARSE_PARAM +# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +# endif +#else /* !YYPARSE_PARAM */ +# define YYPARSE_PARAM_ARG +# define YYPARSE_PARAM_DECL +#endif /* !YYPARSE_PARAM */ /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ -#ifdef YYPARSE_PARAM +# ifdef YYPARSE_PARAM int yyparse (void *); -#else +# else int yyparse (void); +# endif #endif + +/* YY_DECL_VARIABLES -- depending whether we use a pure parser, + variables are global, or local to YYPARSE. */ + +#define YY_DECL_NON_LSP_VARIABLES \ +/* The lookahead symbol. */ \ +int yychar; \ + \ +/* The semantic value of the lookahead symbol. */ \ +YYSTYPE yylval; \ + \ +/* Number of parse errors so far. */ \ +int yynerrs; + +#if YYLSP_NEEDED +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES \ + \ +/* Location data for the lookahead symbol. */ \ +YYLTYPE yylloc; +#else +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES #endif + +/* If nonreentrant, generate the variables here. */ + +#if !YYPURE +YY_DECL_VARIABLES +#endif /* !YYPURE */ + int -yyparse(YYPARSE_PARAM_ARG) +yyparse (YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { + /* If reentrant, generate the variables here. */ +#if YYPURE + YY_DECL_VARIABLES +#endif /* !YYPURE */ + register int yystate; register int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yychar1 = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short yyssa[YYINITDEPTH]; + short *yyss = yyssa; register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + register YYSTYPE *yyvsp; -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ +#if YYLSP_NEEDED + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; +#endif -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#if YYLSP_NEEDED +# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else -#define YYPOPSTACK (yyvsp--, yyssp--) +# define YYPOPSTACK (yyvsp--, yyssp--) #endif - int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; + YYSIZE_T yystacksize = YYINITDEPTH; -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; +#if YYLSP_NEEDED + YYLTYPE yyloc; +#endif + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ int yylen; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; @@ -626,110 +793,110 @@ yyparse(YYPARSE_PARAM_ARG) so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss - 1; + yyssp = yyss; yyvsp = yyvs; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp = yyls; #endif + goto yysetstate; -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; - *++yyssp = yystate; + yysetstate: + *yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; + YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. */ +# if YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; +# else + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); +# endif + yyss = yyss1; + yyvs = yyvs1; + } #else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyoverflowlab; +# else /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 2; - } + goto yyoverflowlab; yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); -#endif + + { + short *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyoverflowlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); +# if YYLSP_NEEDED + YYSTACK_RELOCATE (yyls); +# endif +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif #endif /* no yyoverflow */ - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; +#if YYLSP_NEEDED + yylsp = yyls + yysize - 1; #endif -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); if (yyssp >= yyss + yystacksize - 1) YYABORT; } -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; - yybackup: + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ @@ -748,10 +915,7 @@ yynewstate: if (yychar == YYEMPTY) { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } @@ -762,25 +926,25 @@ yynewstate: yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif + YYDPRINTF ((stderr, "Now at end of input.\n")); } else { - yychar1 = YYTRANSLATE(yychar); + yychar1 = YYTRANSLATE (yychar); -#if YYDEBUG != 0 +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables + which are defined only if `YYDEBUG' is set. */ if (yydebug) { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT + YYFPRINTF (stderr, "Next token is %d (%s", + yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise + meaning of a token, for further debugging info. */ +# ifdef YYPRINT YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); +# endif + YYFPRINTF (stderr, ")\n"); } #endif } @@ -812,56 +976,78 @@ yynewstate: YYACCEPT; /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif + YYDPRINTF ((stderr, "Shifting token %d (%s), ", + yychar, yytname[yychar1])); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED *++yylsp = yylloc; #endif - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; yystate = yyn; goto yynewstate; -/* Do the default action for the current state. */ -yydefault: +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; + goto yyreduce; -/* Do a reduction. yyn is the number of a rule to reduce with. */ + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ yyreduce: + /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ -#if YYDEBUG != 0 + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to the semantic value of + the lookahead token. This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + +#if YYLSP_NEEDED + /* Similarly for the default location. Let the user run additional + commands if for instance locations are ranges. */ + yyloc = yylsp[1-yylen]; + YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); +#endif + +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables which + are defined only if `YYDEBUG' is set. */ if (yydebug) { - int i; + int yyi; - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); + YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); } #endif - switch (yyn) { case 1: @@ -994,49 +1180,34 @@ case 38: { yyval.ltok = yyvsp[0].ltok; ; break;} } - /* the action file gets copied in in place of this dollarsign */ + yyvsp -= yylen; yyssp -= yylen; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp -= yylen; #endif -#if YYDEBUG != 0 +#if YYDEBUG if (yydebug) { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); } #endif *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } +#if YYLSP_NEEDED + *++yylsp = yyloc; #endif - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ yyn = yyr1[yyn]; @@ -1048,10 +1219,13 @@ case 38: goto yynewstate; -yyerrlab: /* here on detecting error */ - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) { ++yynerrs; @@ -1060,102 +1234,121 @@ yyerrlab: /* here on detecting error */ if (yyn > YYFLAG && yyn < YYLAST) { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) + YYSIZE_T yysize = 0; + char *yymsg; + int yyx, yycount; + + yycount = 0; + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) + if (yycheck[yyx + yyn] == yyx) + yysize += yystrlen (yytname[yyx]) + 15, yycount++; + yysize += yystrlen ("parse error, unexpected ") + 1; + yysize += yystrlen (yytname[YYTRANSLATE (yychar)]); + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg != 0) { - strcpy(msg, "parse error"); + char *yyp = yystpcpy (yymsg, "parse error, unexpected "); + yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]); - if (count < 5) + if (yycount < 5) { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) + yycount = 0; + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); + yyx++) + if (yycheck[yyx + yyn] == yyx) { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; + const char *yyq = ! yycount ? ", expecting " : " or "; + yyp = yystpcpy (yyp, yyq); + yyp = yystpcpy (yyp, yytname[yyx]); + yycount++; } } - yyerror(msg); - free(msg); + yyerror (yymsg); + YYSTACK_FREE (yymsg); } else - yyerror ("parse error; also virtual memory exceeded"); + yyerror ("parse error; also virtual memory exhausted"); } else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); +#endif /* defined (YYERROR_VERBOSE) */ + yyerror ("parse error"); } - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ + +/*--------------------------------------------------. +| yyerrlab1 -- error raised explicitly by an action | +`--------------------------------------------------*/ +yyerrlab1: if (yyerrstatus == 3) { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - + YYDPRINTF ((stderr, "Discarding token %d (%s).\n", + yychar, yytname[yychar1])); yychar = YYEMPTY; } - /* Else will try to reuse lookahead token - after shifting the error token. */ + /* Else will try to reuse lookahead token after shifting the error + token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; -yyerrdefault: /* current state does not do anything special for the error token. */ +/*-------------------------------------------------------------------. +| yyerrdefault -- current state does not do anything special for the | +| error token. | +`-------------------------------------------------------------------*/ +yyerrdefault: #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; + + /* If its default is to accept any token, ok. Otherwise pop it. */ + yyn = yydefact[yystate]; + if (yyn) + goto yydefault; #endif -yyerrpop: /* pop the current state because it cannot handle the error token */ - if (yyssp == yyss) YYABORT; +/*---------------------------------------------------------------. +| yyerrpop -- pop the current state because it cannot handle the | +| error token | +`---------------------------------------------------------------*/ +yyerrpop: + if (yyssp == yyss) + YYABORT; yyvsp--; yystate = *--yyssp; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED yylsp--; #endif -#if YYDEBUG != 0 +#if YYDEBUG if (yydebug) { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "Error: state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); } #endif +/*--------------. +| yyerrhandle. | +`--------------*/ yyerrhandle: - yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; @@ -1178,42 +1371,45 @@ yyerrhandle: if (yyn == YYFINAL) YYACCEPT; -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif + YYDPRINTF ((stderr, "Shifting error token, ")); *++yyvsp = yylval; -#ifdef YYLSP_NEEDED +#if YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +/*---------------------------------------------. +| yyoverflowab -- parser overflow comes here. | +`---------------------------------------------*/ +yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ + +yyreturn: +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); #endif - } - return 1; + return yyresult; } diff --git a/src/symtable.c b/src/symtable.c index 7c0c92f..94778bb 100644 --- a/src/symtable.c +++ b/src/symtable.c @@ -1078,10 +1078,11 @@ parseLine (char *line, inputStream srce, mapping map) if (!usymtab_existsGlobEither (cnamestr)) { (void) usymtab_addEntry - (uentry_makeDatatype (cnamestr, ctype_unknown, - ti->abstract ? ynm_fromBool (ti->modifiable) : MAYBE, - ti->abstract ? YES : NO, - fileloc_copy (imploc))); + (uentry_makeDatatype + (cnamestr, ctype_unknown, + ti->abstract ? ynm_fromBool (ti->modifiable) : MAYBE, + ti->abstract ? qual_createAbstract () : qual_createConcrete (), + fileloc_copy (imploc))); } } diff --git a/src/tokentable.c b/src/tokentable.c index a376eff..dbf231d 100644 --- a/src/tokentable.c +++ b/src/tokentable.c @@ -126,14 +126,16 @@ AllocTokenTable (void) { newSize = INITTOKENTABLE; llassert (TokenTable == NULL); - TokenTable = (ltoken *) dmalloc (newSize * sizeof (*TokenTable)); + TokenTable = (ltoken *) + dmalloc (size_fromLongUnsigned (newSize * sizeof (*TokenTable))); } else { o_ltoken *oldTokenTable = TokenTable; newSize = (long unsigned) (DELTATOKENTABLE * oldSize); - TokenTable = (ltoken *) dmalloc (newSize * sizeof (*TokenTable)); + TokenTable = (ltoken *) + dmalloc (size_fromLongUnsigned (newSize * sizeof (*TokenTable))); llassert (oldSize > 0); llassert (oldTokenTable != NULL); diff --git a/src/uentry.c b/src/uentry.c index 29277a3..855a770 100644 --- a/src/uentry.c +++ b/src/uentry.c @@ -712,11 +712,12 @@ bool uentry_isUnnamedVariable (uentry ue) { ctype ct = idDecl_getCtype (id); uentry ue = uentry_makeDatatype (idDecl_observeId (id), ct, - MAYBE, MAYBE, setLocation ()); + MAYBE, qual_createUnknown (), + setLocation ()); uentry_reflectQualifiers (ue, idDecl_getQuals (id)); - if (!ynm_isOn (ue->info->datatype->abs)) + if (!qual_isEitherAbstract (ue->info->datatype->abs)) { if (ctype_isUnknown (ct)) { @@ -2346,6 +2347,7 @@ uentry_reflectOtherQualifier (/*@notnull@*/ uentry ue, qual qel) uentry_setNullState (ue, NS_MNOTNULL); } else if (qual_isAbstract (qel) + || qual_isNumAbstract (qel) || qual_isConcrete (qel)) { if (!uentry_isDatatype (ue)) @@ -2358,7 +2360,9 @@ uentry_reflectOtherQualifier (/*@notnull@*/ uentry ue, qual qel) } else { - ue->info->datatype->abs = ynm_fromBool (qual_isAbstract (qel)); + ue->info->datatype->abs = qel; + DPRINTF (("Setting abstract %s: %s", + uentry_unparse (ue), qual_unparse (qel))); } } else if (qual_isMutable (qel)) @@ -3775,7 +3779,7 @@ uentry_makeUnspecFunction (cstring n, ctype t, /* is exported for use by usymtab_interface */ /*@notnull@*/ uentry - uentry_makeDatatypeAux (cstring n, ctype t, ynm mut, ynm abstract, + uentry_makeDatatypeAux (cstring n, ctype t, ynm mut, qual abstract, fileloc f, bool priv) { uentry e = uentry_alloc (); @@ -3816,7 +3820,7 @@ uentry_makeUnspecFunction (cstring n, ctype t, uentry_setDefined (e, f); } - if (ynm_isOn (abstract) && !(uentry_isCodeDefined (e))) + if (qual_isAbstract (abstract) && !(uentry_isCodeDefined (e))) { sRef_setNullState (e->sref, NS_ABSNULL, uentry_whereDeclared (e)); } @@ -3825,12 +3829,12 @@ uentry_makeUnspecFunction (cstring n, ctype t, } /*@notnull@*/ uentry - uentry_makeDatatype (cstring n, ctype t, ynm mut, ynm abstract, fileloc f) + uentry_makeDatatype (cstring n, ctype t, ynm mut, qual abstract, fileloc f) { return (uentry_makeDatatypeAux (n, t, mut, abstract, f, FALSE)); } -/*@notnull@*/ uentry uentry_makeBoolDatatype (ynm abstract) +/*@notnull@*/ uentry uentry_makeBoolDatatype (qual abstract) { uentry ret = uentry_makeDatatypeAux (context_getBoolName (), ctype_bool, NO, abstract, @@ -3951,7 +3955,7 @@ static /*@only@*/ /*@notnull@*/ uentry e->info = (uinfo) dmalloc (sizeof (*e->info)); e->info->datatype = (udinfo) dmalloc (sizeof (*e->info->datatype)); - e->info->datatype->abs = NO; + e->info->datatype->abs = qual_createUnknown (); e->info->datatype->mut = (kind == KENUMTAG) ? NO : MAYBE; e->info->datatype->type = t; e->warn = warnClause_undefined; /*@i452@*/ @@ -4237,7 +4241,7 @@ uentry_compare (uentry u1, uentry u2) u2->info->datatype->type)); COMPARERETURN (ynm_compare (u1->info->datatype->mut, u2->info->datatype->mut)); - return (ynm_compare (u1->info->datatype->abs, u2->info->datatype->abs)); + return (generic_compare (u1->info->datatype->abs, u2->info->datatype->abs)); } BADEXIT; @@ -4380,7 +4384,7 @@ static /*@only@*/ uentry } static /*@only@*/ uentry -uentry_makeDatatypeBase (/*@only@*/ cstring name, ctype ct, ynm abstract, +uentry_makeDatatypeBase (/*@only@*/ cstring name, ctype ct, qual abstract, ynm mut, ctype rtype, alkind ak, exkind exp, sstate defstate, nstate isnull, /*@only@*/ fileloc loc) @@ -4418,7 +4422,7 @@ uentry_makeDatatypeBase (/*@only@*/ cstring name, ctype ct, ynm abstract, sRef_setDefState (e->sref, defstate, loc); - if (ynm_isOn (abstract) && ctype_isUnknown (ct) && isnull == NS_UNKNOWN) + if (qual_isEitherAbstract (abstract) && ctype_isUnknown (ct) && isnull == NS_UNKNOWN) { isnull = NS_ABSNULL; } @@ -4653,7 +4657,7 @@ static /*@only@*/ uentry e->info = (uinfo) dmalloc (sizeof (*e->info)); e->info->datatype = (udinfo) dmalloc (sizeof (*e->info->datatype)); - e->info->datatype->abs = NO; + e->info->datatype->abs = qual_createUnknown (); e->info->datatype->mut = MAYBE; e->info->datatype->type = rtype; @@ -4850,7 +4854,7 @@ uentry_undump (ekind kind, fileloc loc, char **s) break; case KDATATYPE: { - ynm abstract; + qual abstract; ynm mut; ctype rtype; sstate defstate; @@ -4858,7 +4862,7 @@ uentry_undump (ekind kind, fileloc loc, char **s) alkind aliased; exkind exp; - advanceField (s); abstract = ynm_fromCodeChar (reader_loadChar (s)); + advanceField (s); abstract = qual_abstractFromCodeChar (reader_loadChar (s)); advanceField (s); mut = ynm_fromCodeChar (reader_loadChar (s)); advanceField (s); defstate = sstate_fromInt (reader_getInt (s)); advanceField (s); isnull = nstate_fromInt (reader_getInt (s)); @@ -5127,7 +5131,7 @@ uentry_dumpAux (uentry v, bool isParam) else { sdump = message ("%d@%d@%d@%d@%d", - (int) dss, + (int) dss, (int) nst, (int) alk, (int) exk, @@ -5160,9 +5164,9 @@ uentry_dumpAux (uentry v, bool isParam) ctype_unparse (v->utype), (int) v->utype)); */ - return (message ("%q@%s@%s@%d@%d@%d@%d@%q#%s", + return (message ("%q@%c@%s@%d@%d@%d@%d@%q#%s", ctype_dump (v->utype), - ynm_unparseCode (v->info->datatype->abs), + qual_abstractCode (v->info->datatype->abs), ynm_unparseCode (v->info->datatype->mut), (int) sRef_getDefState (v->sref), (int) sRef_getNullState (v->sref), @@ -5331,8 +5335,8 @@ uentry_unparseFull (uentry v) { cstring res; - res = message ("[%w] %s %s: %s [spec: %q; decl: %q; def: %q]", - (unsigned long) v, ekind_unparse (v->ukind), v->uname, + res = message ("[%p] %s %s: %s [spec: %q; decl: %q; def: %q]", + v, ekind_unparse (v->ukind), v->uname, ctype_unparse (v->utype), fileloc_unparse (uentry_whereSpecified (v)), fileloc_unparse (uentry_whereDeclared (v)), @@ -5348,7 +5352,7 @@ uentry_unparseFull (uentry v) (ctype_isDefined (v->info->datatype->type) ? v->info->datatype->type : ctype_unknown), ynm_unparse (v->info->datatype->mut), - ynm_unparse (v->info->datatype->abs), + qual_unparse (v->info->datatype->abs), sRef_unparseState (v->sref)); } else if (uentry_isFunction (v)) @@ -5488,10 +5492,10 @@ uentry_setAbstract (uentry e) typeId oldid; llassert (uentry_isDatatype (e) - && (ynm_isMaybe (e->info->datatype->abs))); + && (qual_isUnknown (e->info->datatype->abs))); oldid = ctype_typeId (e->info->datatype->type); - e->info->datatype->abs = YES; + e->info->datatype->abs = qual_createAbstract (); e->info->datatype->type = ctype_createAbstract (oldid); } @@ -5499,23 +5503,24 @@ void uentry_setConcrete (uentry e) { llassert (uentry_isDatatype (e) - && (ynm_isMaybe (e->info->datatype->abs))); + && (qual_isUnknown (e->info->datatype->abs) + || qual_isConcrete (e->info->datatype->abs))); - e->info->datatype->abs = NO; + e->info->datatype->abs = qual_createConcrete (); } bool uentry_isAbstractDatatype (uentry e) { return (uentry_isDatatype (e) - && (ynm_isOn (e->info->datatype->abs))); + && (qual_isEitherAbstract (e->info->datatype->abs))); } bool uentry_isMaybeAbstract (uentry e) { return (uentry_isDatatype (e) - && (ynm_isMaybe (e->info->datatype->abs))); + && (!qual_isConcrete (e->info->datatype->abs))); } bool @@ -5789,8 +5794,16 @@ uentry_getMods (uentry l) { BADBRANCH; } +# ifdef WIN32 +/* Make Microsoft VC++ happy */ +# pragma warning (disable:4715) +# endif } +# ifdef WIN32 +# pragma warning (enable:4715) +# endif + ekind uentry_getKind (uentry e) { @@ -6581,7 +6594,15 @@ uentry_setDatatype (uentry e, usymId uid) if (uentry_isAbstractType (e)) { - e->info->datatype->type = ctype_createAbstract (uid); + if (qual_isNumAbstract (e->info->datatype->abs)) + { + e->info->datatype->type = ctype_createNumAbstract (uid); + } + else + { + llassert (qual_isAbstract (e->info->datatype->abs)); + e->info->datatype->type = ctype_createAbstract (uid); + } } else { @@ -8868,10 +8889,10 @@ uentry_checkDatatypeConformance (/*@notnull@*/ uentry old, } } - if (unew->info->datatype->abs != MAYBE) + if (!qual_isUnknown (unew->info->datatype->abs)) { - if (ynm_isOff (old->info->datatype->abs) - && ynm_isOn (unew->info->datatype->abs)) + if (qual_isConcrete (old->info->datatype->abs) + && qual_isEitherAbstract (unew->info->datatype->abs)) { if (!ctype_isDirectBool (old->utype)) { @@ -8887,8 +8908,8 @@ uentry_checkDatatypeConformance (/*@notnull@*/ uentry old, } } } - else if (ynm_isOn (old->info->datatype->abs) - && ynm_isOff (unew->info->datatype->abs)) + else if (qual_isEitherAbstract (old->info->datatype->abs) + && qual_isConcrete (unew->info->datatype->abs)) { if (!ctype_isDirectBool (old->utype)) { @@ -8911,7 +8932,7 @@ uentry_checkDatatypeConformance (/*@notnull@*/ uentry old, } else { - if (ynm_isOn (old->info->datatype->abs)) + if (qual_isEitherAbstract (old->info->datatype->abs)) { old->sref = unew->sref; unew->info->datatype->mut = old->info->datatype->mut; @@ -8960,7 +8981,7 @@ uentry_checkDatatypeConformance (/*@notnull@*/ uentry old, } else { - if (ynm_isOn (old->info->datatype->abs)) + if (qual_isEitherAbstract (old->info->datatype->abs)) { if (ynm_isOn (old->info->datatype->mut) && ynm_isOff (unew->info->datatype->mut)) { diff --git a/src/usymtab.c b/src/usymtab.c index cf207a3..a1f4a3a 100644 --- a/src/usymtab.c +++ b/src/usymtab.c @@ -383,7 +383,7 @@ usymtab_initBool () ctype boolt = ctype_bool; /* evs 2000-07-24: bool is now treated as abstract (always) */ - uentry boolentry = uentry_makeBoolDatatype (YES); + uentry boolentry = uentry_makeBoolDatatype (qual_createAbstract ()); usymtab_supGlobalEntry (boolentry); context_addBoolAccess (); @@ -1234,10 +1234,12 @@ usymtab_supReturnTypeEntry (/*@only@*/ uentry e) uid = usymtab_supEntryAux (globtab, e, FALSE); e = usymtab_getTypeEntry (uid); + /*? evans 2002-12-16 removed this? it doesn't make sense if (uentry_isMaybeAbstract (e)) { uentry_setConcrete (e); } + */ } if (sRef_modInFunction ()) diff --git a/src/usymtab_interface.c b/src/usymtab_interface.c index 62bc37d..2ce488d 100644 --- a/src/usymtab_interface.c +++ b/src/usymtab_interface.c @@ -271,7 +271,8 @@ static ctype usymtab_supEntry (uentry_makeDatatype - (tn, ctype_unknown, MAYBE, NO, fileloc_getBuiltin ())); + (tn, ctype_unknown, MAYBE, qual_createConcrete (), + fileloc_getBuiltin ())); } /*@switchbreak@*/ break; @@ -876,7 +877,9 @@ declareAbstractType (abstractNode n, bool priv) loc = fileloc_fromTok (n->tok); ue = uentry_makeDatatypeAux (tn, ctype_unknown, - ynm_fromBool (n->isMutable), YES, loc, priv); + ynm_fromBool (n->isMutable), + qual_createAbstract (), + loc, priv); if (n->isRefCounted) { @@ -969,7 +972,8 @@ static void s = getVarName (i->declarator->type); - ue = uentry_makeDatatypeAux (s, realType, MAYBE, NO, loc, priv); + ue = uentry_makeDatatypeAux (s, realType, MAYBE, qual_createConcrete (), + loc, priv); uentry_reflectQualifiers (ue, qtype_getQuals (c)); diff --git a/test/Makefile.am b/test/Makefile.am index d2daf34..cff0f86 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -47,7 +47,7 @@ UNITTESTS = \ funcpointer functionmacro glob globals impabstract info init inparam internal iter keep libs \ linked lintcomments list longint loopexec looptesteffect \ macros macrosef merge mergenull modifies modtest moduncon \ - mongoincludes mystrncat noeffect null observer oldstyle outglob outparam \ + mongoincludes mystrncat noeffect null nullret nullassign numabstract observer oldstyle outglob outparam \ parentype postnotnull preds prefixes printflike rc refcounts release repexpose \ returned sharing shifts sizesigns slovaknames \ specclauses \ @@ -278,11 +278,12 @@ chararraylit: ### Two addition errors detected with 2.5 with -numliteral. +### evans 2002-12-15: finds one more but in charlit .PHONY: charlit charlit: -$(SPLINTR) +hints charlit.c -expect 4 -$(SPLINTR) +hints -numliteral charlit.c -expect 6 - -$(SPLINTR) +hints charlit.c +charintliteral +ignoresigns + -$(SPLINTR) +hints charlit.c +charintliteral +ignoresigns -expect 1 .PHONY: clauses clauses: @@ -618,7 +619,7 @@ null: .PHONY: nullret nullret: -$(SPLINTR) nullret.c -expect 2 - -$(SPLINTR) -nullret nullret.c -expect 1 + -$(SPLINTR) -nullret nullret.c -expect 0 .PHONY: nullassign nullassign: @@ -626,6 +627,14 @@ nullassign: -$(SPLINTR) -nullassign nullassign.c -expect 1 +### Added for 3.1 - evans 2002-12-14 + +.PHONY: numabstract +numabstract: + -$(SPLINTR) numabstract.c -expect 8 + -$(SPLINTR) numabstract.c +numabstractlit -expect 7 + -$(SPLINTR) numabstract.c -numabstractcast -expect 7 + # # Before 2.4, expected one more because error was reported both as # dependent and observer. @@ -745,10 +754,8 @@ shifts: ### evans - added 2002-08-17: check warnings with arbitrary integral types sizesigns: - -$(SPLINTR) +strict sizesigns.c - -$(SPLINTR) +strict +ignoresigns sizesigns.c - -$(SPLINTR) +strict +matcharbitraryintegral sizesigns.c - -$(SPLINTR) +strict +matcharbitraryintegral +ignoresigns sizesigns.c + -$(SPLINTR) +strict sizesigns.c -expect 5 + -$(SPLINTR) +strict +matchanyintegral sizesigns.c -expect 4 .PHONY: slovaknames slovaknames: diff --git a/test/Makefile.in b/test/Makefile.in index f3caed6..2d5e2b6 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -135,7 +135,7 @@ UNITTESTS = \ funcpointer functionmacro glob globals impabstract info init inparam internal iter keep libs \ linked lintcomments list longint loopexec looptesteffect \ macros macrosef merge mergenull modifies modtest moduncon \ - mongoincludes mystrncat noeffect null observer oldstyle outglob outparam \ + mongoincludes mystrncat noeffect null nullret nullassign numabstract observer oldstyle outglob outparam \ parentype postnotnull preds prefixes printflike rc refcounts release repexpose \ returned sharing shifts sizesigns slovaknames \ specclauses \ @@ -1076,11 +1076,12 @@ chararraylit: ### Two addition errors detected with 2.5 with -numliteral. +### evans 2002-12-15: finds one more but in charlit .PHONY: charlit charlit: -$(SPLINTR) +hints charlit.c -expect 4 -$(SPLINTR) +hints -numliteral charlit.c -expect 6 - -$(SPLINTR) +hints charlit.c +charintliteral +ignoresigns + -$(SPLINTR) +hints charlit.c +charintliteral +ignoresigns -expect 1 .PHONY: clauses clauses: @@ -1391,6 +1392,12 @@ mystrncat: noeffect: ${SPLINTP} noeffect.c +allmacros +checks -expect 3 +.PHONY: numabstract +numabstract: + -$(SPLINTR) numabstract.c -expect 8 + -$(SPLINTR) numabstract.c +numabstractlit -expect 7 + -$(SPLINTR) numabstract.c -numabstractcast -expect 7 + ### ### 2002-01-01: null1.c: expect increased to 15 because out must be defined ### checking detects one new error @@ -1414,7 +1421,7 @@ null: .PHONY: nullret nullret: -$(SPLINTR) nullret.c -expect 2 - -$(SPLINTR) -nullret nullret.c -expect 1 + -$(SPLINTR) -nullret nullret.c -expect 0 .PHONY: nullassign nullassign: @@ -1540,10 +1547,8 @@ shifts: ### evans - added 2002-08-17: check warnings with arbitrary integral types sizesigns: - -$(SPLINTR) +strict sizesigns.c - -$(SPLINTR) +strict +ignoresigns sizesigns.c - -$(SPLINTR) +strict +matcharbitraryintegral sizesigns.c - -$(SPLINTR) +strict +matcharbitraryintegral +ignoresigns sizesigns.c + -$(SPLINTR) +strict sizesigns.c -expect 5 + -$(SPLINTR) +strict +matchanyintegral sizesigns.c -expect 4 .PHONY: slovaknames slovaknames: diff --git a/test/charlit.expect b/test/charlit.expect index 0b76814..6b0b241 100644 --- a/test/charlit.expect +++ b/test/charlit.expect @@ -28,4 +28,8 @@ charlit.c:12:14: Variable u initialized to type int, expects unsigned int: -3 Finished checking --- 6 code warnings, as expected -Finished checking --- no warnings +charlit.c: (in function f) +charlit.c:6:3: Assignment of double to int: x = x + 'c' + 2 + z + To allow all numeric types to match, use +relaxtypes. + +Finished checking --- 1 code warning, as expected diff --git a/test/modifies.c b/test/modifies.c index 898ed97..854d01d 100644 --- a/test/modifies.c +++ b/test/modifies.c @@ -4,8 +4,7 @@ static int mstat; static /*@unused@*/ int internalState; int f3 (int p[]) - /*@modifies - internalState, fileSystem;@*/ ; /* 1. Modifies list uses ... */ + /*@modifies internalState, fileSystem;@*/ ; /* 1. Modifies list uses ... */ int f4 (int p[]) /*@modifies p[3];@*/; diff --git a/test/mystrncat.c b/test/mystrncat.c index 055cd2c..8cb5ad5 100644 --- a/test/mystrncat.c +++ b/test/mystrncat.c @@ -1,4 +1,4 @@ -void mystrncat (/*@unique@*/ /*@returned@*/ char *s1, char *s2, int n) +void mystrncat (/*@unique@*/ /*@returned@*/ char *s1, char *s2, size_t n) /*@modifies *s1@*/ /*@requires MaxSet(s1) >= ( MaxRead(s1) + n); @*/ /*@ensures MaxRead(result) >= (MaxRead(s1) + n); @*/; diff --git a/test/nullassign.expect b/test/nullassign.expect new file mode 100644 index 0000000..4217e8c --- /dev/null +++ b/test/nullassign.expect @@ -0,0 +1,9 @@ + +nullassign.c:1:10: Global a initialized to null value: int * a = 0 = 0 +nullassign.c:5:24: Global c initialized to null value: int * c = 0 = 0 + +Finished checking --- 2 code warnings, as expected + +nullassign.c:5:24: Global c initialized to null value: int * c = 0 = 0 + +Finished checking --- 1 code warning, as expected diff --git a/test/nullret.expect b/test/nullret.expect new file mode 100644 index 0000000..b440212 --- /dev/null +++ b/test/nullret.expect @@ -0,0 +1,9 @@ + +nullret.c: (in function f1) +nullret.c:1:22: Null storage returned as non-null: 0 +nullret.c: (in function f3) +nullret.c:7:22: Null storage returned as non-null: 0 + +Finished checking --- 2 code warnings, as expected + +Finished checking --- no warnings diff --git a/test/numabstract.c b/test/numabstract.c new file mode 100644 index 0000000..be3a008 --- /dev/null +++ b/test/numabstract.c @@ -0,0 +1,22 @@ +typedef /*@numabstract@*/ int apples; +typedef /*@numabstract@*/ int oranges; + +/*@noaccess apples@*/ +/*@noaccess oranges@*/ + +int adding (apples a, oranges o) +{ + int i; + apples a2; + a++; /* Okay */ + a2 = 13; /* error (unless -numabstractlit) ? */ + a2 = 'a'; /* error */ + i = 'c'; /* error */ + a2 = (apples) 13; /* unless +numabstractcast */ + a2 = a + 5; /* okay */ + a2 = o; /* error */ + a2 = a2 - a; /* okay */ + i = o; /* error */ + i = a2 + a; /* error */ + return a + o; /* error */ +} diff --git a/test/numabstract.expect b/test/numabstract.expect new file mode 100644 index 0000000..fa798de --- /dev/null +++ b/test/numabstract.expect @@ -0,0 +1,37 @@ + +numabstract.c: (in function adding) +numabstract.c:13:3: Assignment of char to apples: a2 = 'a' +numabstract.c:14:3: Assignment of char to int: i = 'c' +numabstract.c:15:17: Cast from literal to numabstract type apples: (apples)13 +numabstract.c:16:8: Incompatible types for + (apples, int): a + 5 +numabstract.c:17:3: Assignment of oranges to apples: a2 = o +numabstract.c:19:3: Assignment of oranges to int: i = o +numabstract.c:20:3: Assignment of apples to int: i = a2 + a +numabstract.c:21:10: Operands of + are different numabstract types (apples, + oranges): a + o + +Finished checking --- 8 code warnings, as expected + +numabstract.c: (in function adding) +numabstract.c:13:3: Assignment of char to apples: a2 = 'a' +numabstract.c:14:3: Assignment of char to int: i = 'c' +numabstract.c:15:17: Cast from literal to numabstract type apples: (apples)13 +numabstract.c:17:3: Assignment of oranges to apples: a2 = o +numabstract.c:19:3: Assignment of oranges to int: i = o +numabstract.c:20:3: Assignment of apples to int: i = a2 + a +numabstract.c:21:10: Operands of + are different numabstract types (apples, + oranges): a + o + +Finished checking --- 7 code warnings, as expected + +numabstract.c: (in function adding) +numabstract.c:13:3: Assignment of char to apples: a2 = 'a' +numabstract.c:14:3: Assignment of char to int: i = 'c' +numabstract.c:16:8: Incompatible types for + (apples, int): a + 5 +numabstract.c:17:3: Assignment of oranges to apples: a2 = o +numabstract.c:19:3: Assignment of oranges to int: i = o +numabstract.c:20:3: Assignment of apples to int: i = a2 + a +numabstract.c:21:10: Operands of + are different numabstract types (apples, + oranges): a + o + +Finished checking --- 7 code warnings, as expected diff --git a/test/sizesigns.c b/test/sizesigns.c index d574ae1..d469619 100644 --- a/test/sizesigns.c +++ b/test/sizesigns.c @@ -2,9 +2,9 @@ int foo (size_t z) { - if (z / sizeof(z) == 10) - return 1; - else - return 0; + if (z / sizeof(z) == 10) + return 1; + else + return 0; } diff --git a/test/sizesigns.expect b/test/sizesigns.expect index e69de29..4c1526b 100644 --- a/test/sizesigns.expect +++ b/test/sizesigns.expect @@ -0,0 +1,26 @@ + +Command Line: Setting mode strict after setting mode flags will override set + values of flags: exportlocal +sizesigns.c: (in function foo) +sizesigns.c:5:7: Operands of == have incompatible types (arbitrary unsigned + integral type, int): z / sizeof((z)) == 10 +sizesigns.c:6:12: Body of if clause of if statement is not a block: return 1 +sizesigns.c:8:12: Body of else clause of if statement is not a block: return 0 +sizesigns.c:3:5: Function foo declared but not used + sizesigns.c:9:1: Definition of foo +sizesigns.c:3:5: Function foo exported but not declared in header file + sizesigns.c:9:1: Definition of foo + +Finished checking --- 5 code warnings, as expected + +Command Line: Setting mode strict after setting mode flags will override set + values of flags: exportlocal +sizesigns.c: (in function foo) +sizesigns.c:6:12: Body of if clause of if statement is not a block: return 1 +sizesigns.c:8:12: Body of else clause of if statement is not a block: return 0 +sizesigns.c:3:5: Function foo declared but not used + sizesigns.c:9:1: Definition of foo +sizesigns.c:3:5: Function foo exported but not declared in header file + sizesigns.c:9:1: Definition of foo + +Finished checking --- 4 code warnings, as expected -- 2.45.2