1/*
2 * Created by Microsoft VCBU Internal YACC from "asmparse.y"
3 */
4
5#line 2 "asmparse.y"
6
7// Licensed to the .NET Foundation under one or more agreements.
8// The .NET Foundation licenses this file to you under the MIT license.
9// See the LICENSE file in the project root for more information.
10//
11// File asmparse.y
12//
13
14#include "ilasmpch.h"
15
16#include "grammar_before.cpp"
17
18
19#line 16 "asmparse.y"
20
21#define UNION 1
22typedef union {
23 CorRegTypeAttr classAttr;
24 CorMethodAttr methAttr;
25 CorFieldAttr fieldAttr;
26 CorMethodImpl implAttr;
27 CorEventAttr eventAttr;
28 CorPropertyAttr propAttr;
29 CorPinvokeMap pinvAttr;
30 CorDeclSecurity secAct;
31 CorFileFlags fileAttr;
32 CorAssemblyFlags asmAttr;
33 CorAssemblyFlags asmRefAttr;
34 CorTypeAttr exptAttr;
35 CorManifestResourceFlags manresAttr;
36 double* float64;
37 __int64* int64;
38 __int32 int32;
39 char* string;
40 BinStr* binstr;
41 Labels* labels;
42 Instr* instr; // instruction opcode
43 NVPair* pair;
44 pTyParList typarlist;
45 mdToken token;
46 TypeDefDescr* tdd;
47 CustomDescr* cad;
48 unsigned short opcode;
49} YYSTYPE;
50# define ERROR_ 257
51# define BAD_COMMENT_ 258
52# define BAD_LITERAL_ 259
53# define ID 260
54# define DOTTEDNAME 261
55# define QSTRING 262
56# define SQSTRING 263
57# define INT32 264
58# define INT64 265
59# define FLOAT64 266
60# define HEXBYTE 267
61# define TYPEDEF_T 268
62# define TYPEDEF_M 269
63# define TYPEDEF_F 270
64# define TYPEDEF_TS 271
65# define TYPEDEF_MR 272
66# define TYPEDEF_CA 273
67# define DCOLON 274
68# define ELIPSIS 275
69# define VOID_ 276
70# define BOOL_ 277
71# define CHAR_ 278
72# define UNSIGNED_ 279
73# define INT_ 280
74# define INT8_ 281
75# define INT16_ 282
76# define INT32_ 283
77# define INT64_ 284
78# define FLOAT_ 285
79# define FLOAT32_ 286
80# define FLOAT64_ 287
81# define BYTEARRAY_ 288
82# define UINT_ 289
83# define UINT8_ 290
84# define UINT16_ 291
85# define UINT32_ 292
86# define UINT64_ 293
87# define FLAGS_ 294
88# define CALLCONV_ 295
89# define MDTOKEN_ 296
90# define OBJECT_ 297
91# define STRING_ 298
92# define NULLREF_ 299
93# define DEFAULT_ 300
94# define CDECL_ 301
95# define VARARG_ 302
96# define STDCALL_ 303
97# define THISCALL_ 304
98# define FASTCALL_ 305
99# define CLASS_ 306
100# define TYPEDREF_ 307
101# define UNMANAGED_ 308
102# define FINALLY_ 309
103# define HANDLER_ 310
104# define CATCH_ 311
105# define FILTER_ 312
106# define FAULT_ 313
107# define EXTENDS_ 314
108# define IMPLEMENTS_ 315
109# define TO_ 316
110# define AT_ 317
111# define TLS_ 318
112# define TRUE_ 319
113# define FALSE_ 320
114# define _INTERFACEIMPL 321
115# define VALUE_ 322
116# define VALUETYPE_ 323
117# define NATIVE_ 324
118# define INSTANCE_ 325
119# define SPECIALNAME_ 326
120# define FORWARDER_ 327
121# define STATIC_ 328
122# define PUBLIC_ 329
123# define PRIVATE_ 330
124# define FAMILY_ 331
125# define FINAL_ 332
126# define SYNCHRONIZED_ 333
127# define INTERFACE_ 334
128# define SEALED_ 335
129# define NESTED_ 336
130# define ABSTRACT_ 337
131# define AUTO_ 338
132# define SEQUENTIAL_ 339
133# define EXPLICIT_ 340
134# define ANSI_ 341
135# define UNICODE_ 342
136# define AUTOCHAR_ 343
137# define IMPORT_ 344
138# define ENUM_ 345
139# define VIRTUAL_ 346
140# define NOINLINING_ 347
141# define AGGRESSIVEINLINING_ 348
142# define NOOPTIMIZATION_ 349
143# define AGGRESSIVEOPTIMIZATION_ 350
144# define UNMANAGEDEXP_ 351
145# define BEFOREFIELDINIT_ 352
146# define STRICT_ 353
147# define RETARGETABLE_ 354
148# define WINDOWSRUNTIME_ 355
149# define NOPLATFORM_ 356
150# define METHOD_ 357
151# define FIELD_ 358
152# define PINNED_ 359
153# define MODREQ_ 360
154# define MODOPT_ 361
155# define SERIALIZABLE_ 362
156# define PROPERTY_ 363
157# define TYPE_ 364
158# define ASSEMBLY_ 365
159# define FAMANDASSEM_ 366
160# define FAMORASSEM_ 367
161# define PRIVATESCOPE_ 368
162# define HIDEBYSIG_ 369
163# define NEWSLOT_ 370
164# define RTSPECIALNAME_ 371
165# define PINVOKEIMPL_ 372
166# define _CTOR 373
167# define _CCTOR 374
168# define LITERAL_ 375
169# define NOTSERIALIZED_ 376
170# define INITONLY_ 377
171# define REQSECOBJ_ 378
172# define CIL_ 379
173# define OPTIL_ 380
174# define MANAGED_ 381
175# define FORWARDREF_ 382
176# define PRESERVESIG_ 383
177# define RUNTIME_ 384
178# define INTERNALCALL_ 385
179# define _IMPORT 386
180# define NOMANGLE_ 387
181# define LASTERR_ 388
182# define WINAPI_ 389
183# define AS_ 390
184# define BESTFIT_ 391
185# define ON_ 392
186# define OFF_ 393
187# define CHARMAPERROR_ 394
188# define INSTR_NONE 395
189# define INSTR_VAR 396
190# define INSTR_I 397
191# define INSTR_I8 398
192# define INSTR_R 399
193# define INSTR_BRTARGET 400
194# define INSTR_METHOD 401
195# define INSTR_FIELD 402
196# define INSTR_TYPE 403
197# define INSTR_STRING 404
198# define INSTR_SIG 405
199# define INSTR_TOK 406
200# define INSTR_SWITCH 407
201# define _CLASS 408
202# define _NAMESPACE 409
203# define _METHOD 410
204# define _FIELD 411
205# define _DATA 412
206# define _THIS 413
207# define _BASE 414
208# define _NESTER 415
209# define _EMITBYTE 416
210# define _TRY 417
211# define _MAXSTACK 418
212# define _LOCALS 419
213# define _ENTRYPOINT 420
214# define _ZEROINIT 421
215# define _EVENT 422
216# define _ADDON 423
217# define _REMOVEON 424
218# define _FIRE 425
219# define _OTHER 426
220# define _PROPERTY 427
221# define _SET 428
222# define _GET 429
223# define _PERMISSION 430
224# define _PERMISSIONSET 431
225# define REQUEST_ 432
226# define DEMAND_ 433
227# define ASSERT_ 434
228# define DENY_ 435
229# define PERMITONLY_ 436
230# define LINKCHECK_ 437
231# define INHERITCHECK_ 438
232# define REQMIN_ 439
233# define REQOPT_ 440
234# define REQREFUSE_ 441
235# define PREJITGRANT_ 442
236# define PREJITDENY_ 443
237# define NONCASDEMAND_ 444
238# define NONCASLINKDEMAND_ 445
239# define NONCASINHERITANCE_ 446
240# define _LINE 447
241# define P_LINE 448
242# define _LANGUAGE 449
243# define _CUSTOM 450
244# define INIT_ 451
245# define _SIZE 452
246# define _PACK 453
247# define _VTABLE 454
248# define _VTFIXUP 455
249# define FROMUNMANAGED_ 456
250# define CALLMOSTDERIVED_ 457
251# define _VTENTRY 458
252# define RETAINAPPDOMAIN_ 459
253# define _FILE 460
254# define NOMETADATA_ 461
255# define _HASH 462
256# define _ASSEMBLY 463
257# define _PUBLICKEY 464
258# define _PUBLICKEYTOKEN 465
259# define ALGORITHM_ 466
260# define _VER 467
261# define _LOCALE 468
262# define EXTERN_ 469
263# define _MRESOURCE 470
264# define _MODULE 471
265# define _EXPORT 472
266# define LEGACY_ 473
267# define LIBRARY_ 474
268# define X86_ 475
269# define AMD64_ 476
270# define ARM_ 477
271# define ARM64_ 478
272# define MARSHAL_ 479
273# define CUSTOM_ 480
274# define SYSSTRING_ 481
275# define FIXED_ 482
276# define VARIANT_ 483
277# define CURRENCY_ 484
278# define SYSCHAR_ 485
279# define DECIMAL_ 486
280# define DATE_ 487
281# define BSTR_ 488
282# define TBSTR_ 489
283# define LPSTR_ 490
284# define LPWSTR_ 491
285# define LPTSTR_ 492
286# define OBJECTREF_ 493
287# define IUNKNOWN_ 494
288# define IDISPATCH_ 495
289# define STRUCT_ 496
290# define SAFEARRAY_ 497
291# define BYVALSTR_ 498
292# define LPVOID_ 499
293# define ANY_ 500
294# define ARRAY_ 501
295# define LPSTRUCT_ 502
296# define IIDPARAM_ 503
297# define IN_ 504
298# define OUT_ 505
299# define OPT_ 506
300# define PARAM_ 507
301# define _OVERRIDE 508
302# define WITH_ 509
303# define NULL_ 510
304# define HRESULT_ 511
305# define CARRAY_ 512
306# define USERDEFINED_ 513
307# define RECORD_ 514
308# define FILETIME_ 515
309# define BLOB_ 516
310# define STREAM_ 517
311# define STORAGE_ 518
312# define STREAMED_OBJECT_ 519
313# define STORED_OBJECT_ 520
314# define BLOB_OBJECT_ 521
315# define CF_ 522
316# define CLSID_ 523
317# define VECTOR_ 524
318# define _SUBSYSTEM 525
319# define _CORFLAGS 526
320# define ALIGNMENT_ 527
321# define _IMAGEBASE 528
322# define _STACKRESERVE 529
323# define _TYPEDEF 530
324# define _TEMPLATE 531
325# define _TYPELIST 532
326# define _MSCORLIB 533
327# define P_DEFINE 534
328# define P_UNDEF 535
329# define P_IFDEF 536
330# define P_IFNDEF 537
331# define P_ELSE 538
332# define P_ENDIF 539
333# define P_INCLUDE 540
334#define yyclearin yychar = -1
335#define yyerrok yyerrflag = 0
336#ifndef YYMAXDEPTH
337#define YYMAXDEPTH 150
338#endif
339YYSTYPE yylval, yyval;
340#ifndef YYFARDATA
341#define YYFARDATA /*nothing*/
342#endif
343#if ! defined YYSTATIC
344#define YYSTATIC /*nothing*/
345#endif
346#if ! defined YYCONST
347#define YYCONST /*nothing*/
348#endif
349#ifndef YYACT
350#define YYACT yyact
351#endif
352#ifndef YYPACT
353#define YYPACT yypact
354#endif
355#ifndef YYPGO
356#define YYPGO yypgo
357#endif
358#ifndef YYR1
359#define YYR1 yyr1
360#endif
361#ifndef YYR2
362#define YYR2 yyr2
363#endif
364#ifndef YYCHK
365#define YYCHK yychk
366#endif
367#ifndef YYDEF
368#define YYDEF yydef
369#endif
370#ifndef YYV
371#define YYV yyv
372#endif
373#ifndef YYS
374#define YYS yys
375#endif
376#ifndef YYLOCAL
377#define YYLOCAL
378#endif
379#ifndef YYR_T
380#define YYR_T int
381#endif
382typedef YYR_T yyr_t;
383#ifndef YYEXIND_T
384#define YYEXIND_T unsigned int
385#endif
386typedef YYEXIND_T yyexind_t;
387#ifndef YYOPTTIME
388#define YYOPTTIME 0
389#endif
390# define YYERRCODE 256
391
392#line 2052 "asmparse.y"
393
394
395#include "grammar_after.cpp"
396YYSTATIC YYCONST short yyexca[] = {
397#if !(YYOPTTIME)
398-1, 1,
399#endif
400 0, -1,
401 -2, 0,
402#if !(YYOPTTIME)
403-1, 452,
404#endif
405 41, 533,
406 -2, 308,
407#if !(YYOPTTIME)
408-1, 621,
409#endif
410 274, 550,
411 47, 550,
412 -2, 227,
413#if !(YYOPTTIME)
414-1, 642,
415#endif
416 40, 307,
417 60, 307,
418 -2, 550,
419#if !(YYOPTTIME)
420-1, 663,
421#endif
422 41, 533,
423 -2, 308,
424#if !(YYOPTTIME)
425-1, 686,
426#endif
427 274, 550,
428 47, 550,
429 -2, 511,
430#if !(YYOPTTIME)
431-1, 803,
432#endif
433 123, 232,
434 -2, 550,
435#if !(YYOPTTIME)
436-1, 828,
437#endif
438 41, 533,
439 -2, 308,
440#if !(YYOPTTIME)
441-1, 953,
442#endif
443 41, 533,
444 -2, 308,
445#if !(YYOPTTIME)
446-1, 986,
447#endif
448 41, 533,
449 -2, 308,
450#if !(YYOPTTIME)
451-1, 987,
452#endif
453 41, 533,
454 -2, 308,
455#if !(YYOPTTIME)
456-1, 1308,
457#endif
458 41, 533,
459 -2, 308,
460#if !(YYOPTTIME)
461-1, 1309,
462#endif
463 41, 533,
464 -2, 308,
465#if !(YYOPTTIME)
466-1, 1315,
467#endif
468 41, 533,
469 -2, 308,
470#if !(YYOPTTIME)
471-1, 1322,
472#endif
473 41, 533,
474 -2, 308,
475#if !(YYOPTTIME)
476-1, 1447,
477#endif
478 41, 533,
479 -2, 308,
480#if !(YYOPTTIME)
481-1, 1479,
482#endif
483 41, 533,
484 -2, 308,
485#if !(YYOPTTIME)
486-1, 1546,
487#endif
488 41, 533,
489 -2, 308,
490#if !(YYOPTTIME)
491-1, 1563,
492#endif
493 41, 533,
494 -2, 308,
495
496};
497
498# define YYNPROD 839
499#if YYOPTTIME
500YYSTATIC YYCONST yyexind_t yyexcaind[] = {
501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
546 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
563 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
565 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 20, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 0, 0, 0, 30, 0, 0, 0, 0, 0, 0,
582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
583 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 38, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
599 0, 0, 0, 0, 0, 0, 42, 46, 0, 0,
600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
631 0, 0, 0, 0, 0, 0, 0, 0, 50, 54,
632 0, 0, 0, 0, 0, 58, 0, 0, 0, 0,
633 0, 0, 62, 0, 0, 0, 0, 0, 0, 0,
634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
635 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
645 0, 0, 0, 0, 0, 0, 0, 66, 0, 0,
646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
655 0, 0, 0, 0, 0, 0, 74, 0, 0, 0,
656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
657 0, 0, 0, 78
658};
659#endif
660# define YYLAST 3932
661
662YYSTATIC YYCONST short YYFARDATA YYACT[] = {
663 699, 1398, 1121, 1466, 658, 1467, 639, 1024, 1465, 878,
664 1464, 963, 784, 753, 964, 221, 775, 26, 698, 725,
665 73, 75, 275, 414, 624, 877, 966, 1399, 535, 191,
666 477, 1503, 150, 788, 751, 756, 1134, 110, 1065, 107,
667 690, 852, 273, 153, 219, 660, 24, 44, 776, 218,
668 307, 10, 190, 176, 78, 81, 6, 86, 5, 598,
669 673, 262, 204, 515, 3, 188, 217, 983, 17, 301,
670 603, 136, 76, 1551, 1194, 1238, 214, 264, 7, 1242,
671 1057, 1113, 1111, 1112, 85, 1239, 580, 88, 87, 74,
672 89, 137, 74, 300, 115, 56, 139, 715, 712, 113,
673 1058, 98, 112, 178, 179, 180, 181, 696, 272, 519,
674 322, 1015, 56, 672, 220, 338, 18, 452, 277, 461,
675 278, 536, 68, 1228, 1229, 268, 216, 269, 56, 225,
676 376, 265, 1240, 277, 88, 87, 106, 89, 590, 931,
677 932, 343, 1226, 1227, 1021, 277, 361, 368, 345, 360,
678 359, 310, 312, 314, 316, 318, 358, 185, 654, 352,
679 653, 1414, 98, 353, 460, 327, 1555, 1519, 339, 1027,
680 342, 1126, 1127, 930, 373, 366, 154, 348, 1341, 133,
681 277, 357, 379, 1026, 362, 88, 87, 364, 89, 277,
682 271, 192, 387, 352, 513, 695, 694, 353, 365, 84,
683 369, 202, 203, 105, 363, 1264, 374, 346, 614, 450,
684 1059, 451, 351, 258, 416, 357, 88, 87, 186, 89,
685 442, 26, 661, 662, 456, 417, 418, 74, 763, 376,
686 1541, 472, 474, 371, 370, 305, 483, 388, 599, 1560,
687 1478, 1263, 410, 372, 1314, 500, 351, 479, 457, 441,
688 24, 1200, 825, 491, 435, 10, 492, 797, 56, 787,
689 486, 432, 490, 428, 475, 478, 773, 480, 481, 429,
690 494, 434, 17, 192, 666, 1234, 511, 511, 528, 534,
691 375, 433, 7, 585, 267, 584, 583, 376, 473, 485,
692 1487, 108, 586, 484, 710, 540, 116, 74, 640, 641,
693 1542, 74, 499, 479, 596, 498, 543, 493, 700, 571,
694 321, 268, 933, 934, 574, 935, 575, 154, 576, 436,
695 18, 1417, 548, 480, 481, 578, 579, 504, 541, 80,
696 79, 544, 854, 855, 856, 266, 88, 570, 596, 89,
697 572, 1545, 46, 573, 1544, 744, 745, 746, 88, 87,
698 1118, 89, 600, 469, 1351, 467, 471, 470, 348, 626,
699 627, 628, 568, 258, 192, 487, 497, 741, 612, 154,
700 88, 482, 1496, 89, 74, 510, 510, 527, 533, 1335,
701 605, 747, 748, 749, 177, 88, 87, 623, 89, 611,
702 1116, 581, 582, 947, 1141, 629, 630, 631, 594, 1142,
703 674, 135, 375, 620, 595, 1543, 610, 518, 348, 1518,
704 755, 1141, 606, 607, 608, 609, 1142, 321, 702, 1513,
705 643, 613, 1512, 198, 88, 87, 634, 89, 199, 182,
706 200, 618, 619, 621, 347, 277, 201, 459, 648, 649,
707 638, 1320, 1319, 1318, 1317, 1126, 1127, 88, 87, 1511,
708 89, 876, 152, 195, 808, 420, 664, 421, 422, 423,
709 847, 670, 1391, 1128, 651, 778, 198, 779, 196, 681,
710 642, 199, 962, 200, 943, 74, 1508, 743, 505, 201,
711 354, 355, 356, 177, 565, 859, 599, 1506, 667, 587,
712 537, 678, 536, 340, 341, 1510, 195, 692, 1252, 807,
713 88, 1499, 545, 89, 74, 88, 87, 1502, 89, 74,
714 685, 196, 1489, 669, 354, 355, 356, 689, 1130, 63,
715 599, 754, 701, 80, 79, 711, 680, 650, 453, 679,
716 74, 519, 1504, 512, 520, 647, 507, 508, 646, 645,
717 686, 177, 82, 88, 87, 350, 89, 723, 1488, 72,
718 71, 644, 70, 538, 691, 216, 413, 1141, 225, 542,
719 69, 724, 1142, 657, 74, 1241, 720, 74, 721, 1117,
720 49, 50, 51, 52, 53, 54, 55, 709, 675, 676,
721 677, 730, 671, 1450, 67, 714, 740, 49, 50, 51,
722 52, 53, 54, 55, 352, 74, 719, 479, 353, 716,
723 853, 152, 726, 49, 50, 51, 52, 53, 54, 55,
724 1172, 1171, 1170, 1169, 56, 758, 357, 480, 481, 348,
725 66, 88, 87, 600, 946, 764, 765, 1327, 74, 155,
726 688, 1439, 74, 783, 98, 638, 729, 328, 329, 330,
727 277, 750, 74, 697, 1437, 74, 703, 351, 80, 79,
728 479, 348, 705, 1435, 706, 111, 1433, 177, 377, 769,
729 770, 771, 332, 1233, 1416, 642, 815, 789, 813, 819,
730 480, 481, 74, 816, 592, 822, 541, 1326, 801, 802,
731 990, 1407, 798, 823, 1406, 812, 806, 851, 1404, 1390,
732 818, 382, 383, 384, 385, 97, 833, 834, 1180, 74,
733 352, 826, 216, 786, 768, 225, 1388, 800, 793, 803,
734 74, 809, 796, 1231, 846, 824, 542, 1378, 80, 79,
735 817, 152, 357, 857, 80, 79, 479, 1345, 780, 922,
736 80, 79, 821, 49, 50, 51, 52, 53, 54, 55,
737 516, 850, 936, 937, 860, 781, 480, 481, 1376, 277,
738 375, 988, 832, 351, 844, 74, 331, 591, 333, 334,
739 335, 336, 769, 600, 949, 192, 845, 942, 337, 848,
740 88, 87, 1374, 89, 156, 157, 158, 325, 155, 1372,
741 56, 1179, 1370, 924, 636, 925, 926, 927, 928, 929,
742 952, 324, 799, 1368, 985, 782, 772, 938, 495, 1366,
743 1013, 965, 362, 1364, 1011, 1362, 177, 1359, 1356, 442,
744 1000, 1009, 528, 605, 1237, 352, 954, 1354, 1350, 353,
745 762, 1012, 948, 1334, 1312, 1196, 960, 955, 46, 1017,
746 958, 692, 692, 1032, 277, 476, 276, 357, 441, 999,
747 1008, 817, 1022, 435, 997, 1007, 1010, 1044, 1037, 1014,
748 432, 817, 428, 849, 1019, 1035, 1016, 1018, 429, 1039,
749 434, 989, 1247, 1243, 1244, 1245, 1246, 635, 351, 761,
750 433, 1033, 1034, 1045, 88, 87, 444, 89, 74, 1030,
751 1043, 718, 1042, 1050, 74, 145, 56, 1041, 691, 691,
752 88, 87, 348, 89, 74, 954, 88, 87, 155, 89,
753 352, 1023, 828, 668, 353, 959, 817, 820, 436, 998,
754 1006, 527, 277, 1123, 814, 354, 355, 356, 733, 1055,
755 348, 617, 357, 156, 157, 158, 177, 56, 1064, 1060,
756 1061, 1062, 1063, 616, 1051, 96, 577, 564, 104, 103,
757 102, 101, 1122, 99, 100, 105, 1067, 1236, 1068, 1126,
758 1127, 1053, 529, 351, 74, 1124, 1, 1394, 1132, 615,
759 308, 88, 87, 448, 89, 58, 32, 59, 758, 1300,
760 455, 1337, 1338, 1339, 1298, 1119, 109, 445, 1296, 1140,
761 1129, 56, 446, 1138, 1125, 41, 43, 92, 1115, 1185,
762 1294, 1183, 1184, 991, 46, 326, 323, 277, 1178, 367,
763 1054, 1186, 61, 62, 47, 63, 348, 437, 438, 956,
764 189, 1133, 1415, 1182, 766, 1025, 1332, 526, 1175, 1181,
765 1301, 354, 355, 356, 205, 1299, 145, 447, 1219, 1297,
766 1131, 56, 1173, 590, 1167, 1165, 1195, 88, 87, 1203,
767 89, 1295, 984, 156, 157, 158, 1187, 1188, 1189, 1190,
768 1230, 941, 1202, 588, 945, 1232, 1191, 1192, 1193, 80,
769 79, 479, 443, 440, 1223, 1225, 1224, 1222, 708, 1176,
770 1235, 1197, 88, 87, 589, 89, 1163, 1198, 145, 1199,
771 707, 480, 481, 1174, 1218, 1168, 1166, 704, 1161, 49,
772 50, 51, 52, 53, 54, 55, 633, 521, 412, 187,
773 46, 118, 119, 120, 121, 122, 123, 124, 125, 126,
774 127, 128, 129, 130, 131, 132, 1400, 625, 790, 1248,
775 1177, 192, 192, 192, 192, 88, 87, 1164, 89, 524,
776 56, 192, 192, 192, 277, 1412, 354, 355, 356, 1162,
777 1159, 46, 1251, 192, 1157, 1265, 1155, 1269, 625, 1271,
778 1273, 1274, 1255, 1277, 1411, 1279, 1280, 1281, 1282, 1283,
779 1284, 1285, 1270, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
780 1254, 63, 1259, 1410, 1302, 1303, 1401, 1305, 1304, 1221,
781 1272, 523, 1275, 1276, 525, 1278, 56, 1048, 1267, 1047,
782 1153, 1160, 1307, 1286, 836, 1158, 501, 1156, 1151, 982,
783 981, 980, 742, 975, 974, 973, 972, 1316, 970, 971,
784 105, 1149, 979, 978, 977, 976, 378, 665, 1147, 969,
785 967, 354, 355, 356, 1313, 1145, 88, 87, 1143, 89,
786 74, 317, 315, 313, 1328, 454, 277, 1330, 1331, 193,
787 1321, 1154, 194, 1257, 1135, 46, 277, 590, 1540, 1152,
788 1336, 1340, 1001, 1333, 817, 49, 50, 51, 52, 53,
789 54, 55, 1150, 944, 1342, 198, 177, 1140, 526, 1148,
790 199, 311, 200, 309, 306, 590, 1146, 63, 201, 1144,
791 45, 1343, 308, 308, 308, 56, 968, 531, 415, 940,
792 532, 993, 994, 995, 996, 195, 1380, 1381, 1382, 1383,
793 1384, 1385, 1386, 1315, 831, 1347, 830, 590, 1329, 277,
794 196, 811, 1344, 1392, 1393, 61, 62, 47, 63, 767,
795 1397, 1396, 308, 760, 308, 308, 1379, 1402, 1403, 140,
796 717, 566, 1452, 1408, 590, 1451, 1395, 138, 1553, 1490,
797 590, 117, 303, 1405, 46, 193, 349, 1565, 194, 258,
798 1031, 792, 590, 923, 1556, 590, 1554, 1547, 1140, 1523,
799 1486, 49, 50, 51, 52, 53, 54, 55, 817, 1485,
800 1484, 198, 177, 1454, 1449, 1446, 199, 1443, 200, 1442,
801 524, 1438, 56, 1436, 201, 134, 1434, 1432, 1419, 152,
802 1413, 1409, 1389, 1387, 1377, 1375, 1373, 1371, 1445, 1369,
803 46, 195, 49, 50, 51, 52, 53, 54, 55, 1367,
804 1365, 1455, 1456, 1457, 1363, 1361, 196, 1453, 1360, 1444,
805 1448, 1358, 63, 1357, 1355, 1353, 1352, 1349, 1348, 1325,
806 1458, 1323, 523, 1311, 1470, 525, 1310, 1471, 1469, 1468,
807 1306, 1256, 97, 1253, 1476, 1563, 258, 1220, 693, 1114,
808 1052, 1038, 1481, 1036, 1480, 1029, 49, 50, 51, 52,
809 53, 54, 55, 1498, 1028, 1483, 1505, 1507, 1509, 1020,
810 1505, 1507, 1509, 961, 951, 950, 1495, 1507, 1516, 56,
811 1520, 1517, 1515, 1514, 1522, 1521, 88, 939, 858, 89,
812 841, 840, 838, 1497, 1500, 1501, 835, 829, 827, 46,
813 810, 41, 43, 1493, 530, 791, 49, 50, 51, 52,
814 53, 54, 55, 774, 738, 737, 1505, 1507, 1509, 736,
815 735, 63, 56, 734, 732, 731, 684, 94, 522, 637,
816 569, 425, 817, 503, 424, 512, 344, 320, 507, 508,
817 1548, 1546, 1479, 258, 1475, 206, 1474, 1473, 1472, 1552,
818 1447, 1550, 1441, 1005, 1549, 1003, 1004, 1440, 88, 87,
819 1431, 89, 1430, 1562, 1429, 1428, 155, 1561, 1564, 1427,
820 1426, 1425, 1424, 1423, 61, 62, 47, 63, 152, 1422,
821 1558, 1421, 1559, 88, 1420, 1557, 89, 1418, 449, 1300,
822 1298, 1296, 1294, 1322, 177, 1175, 46, 1491, 1173, 1167,
823 1165, 1163, 1161, 1159, 1492, 49, 50, 51, 52, 53,
824 54, 55, 1157, 1155, 817, 514, 1153, 1151, 1149, 1309,
825 1308, 245, 246, 247, 248, 249, 250, 251, 252, 253,
826 254, 255, 256, 257, 56, 1250, 1249, 1066, 59, 1056,
827 1049, 1040, 208, 259, 210, 228, 212, 213, 987, 986,
828 953, 843, 842, 839, 837, 728, 41, 43, 727, 517,
829 713, 49, 50, 51, 52, 53, 54, 55, 687, 683,
830 682, 663, 632, 61, 62, 47, 63, 602, 601, 593,
831 88, 567, 96, 89, 223, 104, 103, 102, 101, 547,
832 99, 100, 105, 46, 546, 496, 419, 411, 222, 386,
833 319, 304, 509, 302, 506, 502, 36, 184, 1324, 93,
834 152, 156, 157, 158, 33, 468, 466, 465, 245, 246,
835 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
836 257, 464, 463, 226, 224, 59, 46, 95, 244, 208,
837 259, 210, 228, 212, 213, 462, 227, 88, 87, 243,
838 89, 215, 209, 41, 43, 155, 207, 211, 879, 31,
839 49, 50, 51, 52, 53, 54, 55, 1002, 992, 439,
840 61, 62, 47, 63, 795, 431, 794, 430, 427, 539,
841 56, 223, 270, 177, 83, 29, 1268, 57, 1046, 34,
842 25, 16, 263, 1266, 15, 222, 14, 261, 13, 260,
843 12, 11, 9, 8, 4, 2, 234, 242, 241, 240,
844 239, 238, 237, 236, 235, 245, 246, 247, 248, 249,
845 250, 251, 252, 253, 254, 255, 256, 257, 1086, 233,
846 226, 224, 59, 232, 231, 230, 208, 259, 210, 228,
847 212, 213, 229, 114, 77, 42, 426, 752, 46, 656,
848 41, 43, 655, 1482, 299, 90, 183, 49, 50, 51,
849 52, 53, 54, 55, 861, 1139, 757, 61, 62, 47,
850 63, 38, 30, 58, 32, 59, 785, 1258, 223, 88,
851 87, 957, 89, 1137, 1136, 604, 1461, 155, 1460, 1459,
852 1477, 1463, 222, 41, 43, 1462, 1201, 1120, 597, 659,
853 156, 157, 158, 777, 91, 1069, 739, 65, 64, 197,
854 61, 62, 47, 63, 875, 177, 0, 60, 35, 0,
855 0, 0, 0, 21, 0, 1346, 37, 226, 224, 0,
856 0, 0, 0, 39, 40, 0, 0, 0, 0, 0,
857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
858 0, 0, 0, 0, 49, 50, 51, 52, 53, 54,
859 55, 874, 0, 0, 0, 0, 0, 0, 868, 0,
860 869, 870, 871, 0, 0, 0, 0, 0, 0, 0,
861 0, 0, 0, 38, 30, 58, 32, 59, 19, 20,
862 0, 22, 23, 48, 46, 27, 28, 49, 50, 51,
863 52, 53, 54, 55, 0, 41, 43, 0, 863, 864,
864 865, 0, 0, 0, 0, 0, 0, 0, 0, 0,
865 0, 0, 61, 62, 47, 63, 0, 0, 921, 60,
866 35, 0, 156, 157, 158, 21, 0, 0, 37, 0,
867 0, 874, 444, 1097, 0, 39, 40, 0, 868, 0,
868 869, 870, 871, 0, 862, 866, 867, 0, 872, 0,
869 0, 873, 1073, 1074, 0, 1081, 1095, 1075, 1076, 1077,
870 1078, 0, 1079, 1080, 0, 1096, 1082, 1083, 1084, 1085,
871 0, 0, 0, 0, 0, 0, 0, 0, 863, 864,
872 865, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873 19, 20, 0, 22, 23, 48, 0, 27, 28, 49,
874 50, 51, 52, 53, 54, 55, 0, 874, 0, 0,
875 0, 0, 0, 0, 868, 0, 869, 870, 871, 448,
876 0, 58, 32, 59, 862, 866, 867, 0, 872, 0,
877 0, 873, 0, 445, 0, 0, 0, 0, 446, 0,
878 0, 41, 43, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 893, 0, 863, 864, 865, 0, 61, 62,
880 47, 63, 146, 437, 438, 0, 920, 0, 0, 0,
881 0, 885, 886, 0, 894, 911, 887, 888, 889, 890,
882 0, 891, 892, 447, 912, 895, 896, 897, 898, 0,
883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
884 862, 866, 867, 0, 872, 0, 0, 873, 0, 0,
885 0, 0, 0, 0, 0, 0, 0, 0, 443, 440,
886 0, 0, 0, 0, 0, 0, 0, 0, 0, 909,
887 0, 913, 0, 0, 0, 0, 915, 0, 0, 0,
888 0, 0, 0, 0, 0, 49, 50, 51, 52, 53,
889 54, 55, 917, 1524, 0, 0, 0, 0, 0, 1071,
890 1072, 0, 1087, 1088, 1089, 0, 1090, 1091, 0, 0,
891 1092, 1093, 0, 1094, 0, 0, 0, 0, 0, 0,
892 1494, 0, 0, 0, 0, 918, 1070, 1098, 1099, 1100,
893 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110,
894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 893, 0, 0,
896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
897 0, 920, 0, 0, 0, 0, 885, 886, 0, 894,
898 911, 887, 888, 889, 890, 0, 891, 892, 0, 912,
899 895, 896, 897, 898, 0, 0, 146, 0, 0, 0,
900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 880, 0, 881, 882, 883,
902 884, 899, 900, 901, 916, 902, 903, 904, 905, 906,
903 907, 908, 910, 914, 909, 0, 913, 919, 0, 0,
904 175, 915, 0, 0, 151, 148, 163, 161, 170, 0,
905 164, 165, 166, 167, 152, 168, 169, 917, 0, 171,
906 172, 173, 174, 563, 1539, 0, 142, 162, 0, 0,
907 0, 0, 0, 0, 0, 141, 147, 0, 1529, 0,
908 146, 0, 0, 0, 0, 352, 0, 0, 0, 768,
909 918, 143, 144, 149, 1525, 555, 0, 549, 550, 551,
910 552, 0, 0, 1534, 0, 0, 0, 357, 0, 0,
911 0, 0, 0, 0, 0, 0, 0, 1535, 1536, 1537,
912 1538, 0, 0, 0, 0, 0, 160, 0, 0, 0,
913 0, 0, 0, 0, 557, 558, 559, 560, 622, 0,
914 554, 0, 0, 0, 561, 562, 553, 0, 0, 1526,
915 1527, 1528, 1530, 1531, 1532, 1533, 982, 981, 980, 0,
916 975, 974, 973, 972, 0, 970, 971, 105, 0, 979,
917 978, 977, 976, 0, 0, 0, 969, 967, 0, 0,
918 880, 0, 881, 882, 883, 884, 899, 900, 901, 916,
919 902, 903, 904, 905, 906, 907, 908, 910, 914, 0,
920 0, 0, 919, 0, 0, 0, 0, 0, 0, 0,
921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
922 0, 0, 0, 88, 87, 0, 89, 0, 0, 0,
923 0, 155, 0, 0, 175, 0, 0, 0, 151, 148,
924 163, 161, 170, 968, 164, 165, 166, 167, 556, 168,
925 169, 0, 0, 171, 172, 173, 174, 0, 0, 177,
926 142, 162, 0, 0, 0, 0, 0, 0, 0, 141,
927 147, 0, 0, 0, 146, 0, 0, 0, 0, 352,
928 0, 0, 0, 353, 0, 143, 144, 149, 0, 0,
929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
930 0, 357, 0, 0, 0, 0, 0, 88, 87, 0,
931 89, 0, 0, 0, 0, 155, 0, 0, 175, 0,
932 160, 159, 151, 148, 163, 161, 170, 0, 164, 165,
933 166, 167, 622, 168, 169, 0, 0, 171, 172, 173,
934 174, 0, 0, 177, 142, 162, 0, 0, 0, 0,
935 0, 0, 0, 141, 147, 0, 0, 0, 0, 0,
936 0, 0, 0, 0, 0, 0, 0, 0, 0, 143,
937 144, 149, 0, 0, 0, 0, 156, 157, 158, 0,
938 297, 198, 0, 0, 0, 0, 199, 0, 200, 0,
939 0, 0, 0, 0, 201, 0, 0, 0, 0, 0,
940 0, 0, 0, 0, 160, 0, 354, 355, 356, 0,
941 0, 195, 284, 63, 279, 280, 281, 282, 283, 0,
942 640, 641, 146, 287, 0, 0, 196, 352, 0, 0,
943 0, 353, 285, 0, 0, 0, 0, 295, 0, 286,
944 0, 0, 0, 0, 0, 0, 0, 0, 0, 357,
945 0, 288, 289, 290, 291, 292, 293, 294, 298, 0,
946 156, 157, 158, 0, 296, 0, 175, 0, 0, 0,
947 0, 0, 163, 161, 170, 0, 164, 165, 166, 167,
948 622, 168, 169, 0, 0, 171, 172, 173, 174, 0,
949 0, 0, 1261, 162, 0, 0, 0, 0, 0, 0,
950 0, 88, 87, 0, 89, 0, 0, 0, 0, 155,
951 0, 0, 175, 0, 0, 0, 151, 148, 163, 161,
952 170, 0, 164, 165, 166, 167, 146, 168, 169, 0,
953 0, 171, 172, 173, 174, 0, 0, 177, 142, 162,
954 1262, 0, 0, 0, 0, 0, 0, 141, 147, 0,
955 0, 0, 0, 0, 0, 0, 0, 0, 0, 1260,
956 0, 0, 0, 143, 144, 149, 0, 0, 0, 0,
957 0, 0, 982, 981, 980, 0, 975, 974, 973, 972,
958 0, 970, 971, 105, 274, 979, 978, 977, 976, 0,
959 0, 0, 969, 967, 0, 146, 0, 0, 160, 0,
960 354, 355, 356, 348, 0, 0, 0, 0, 0, 0,
961 0, 0, 0, 0, 640, 641, 0, 0, 1217, 1216,
962 1211, 0, 1210, 1209, 1208, 1207, 0, 1205, 1206, 105,
963 0, 1215, 1214, 1213, 1212, 0, 0, 0, 0, 0,
964 1204, 0, 0, 0, 0, 0, 0, 0, 0, 88,
965 87, 0, 89, 274, 156, 157, 158, 155, 0, 968,
966 175, 0, 0, 0, 151, 148, 163, 161, 170, 0,
967 164, 165, 166, 167, 0, 168, 169, 0, 0, 171,
968 172, 173, 174, 146, 0, 177, 142, 162, 0, 0,
969 0, 0, 0, 0, 0, 141, 147, 0, 0, 0,
970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
971 0, 143, 144, 149, 0, 0, 0, 0, 0, 0,
972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
974 0, 274, 0, 0, 0, 0, 160, 0, 354, 355,
975 356, 146, 0, 88, 87, 0, 89, 0, 0, 0,
976 0, 155, 0, 0, 175, 0, 0, 0, 151, 148,
977 163, 161, 170, 0, 164, 165, 166, 167, 0, 168,
978 169, 0, 0, 171, 172, 173, 174, 0, 0, 177,
979 142, 162, 0, 0, 0, 0, 0, 0, 0, 141,
980 147, 0, 156, 157, 158, 0, 0, 0, 0, 274,
981 0, 0, 0, 0, 0, 143, 144, 149, 0, 805,
982 0, 0, 88, 87, 0, 89, 0, 0, 0, 0,
983 155, 0, 0, 175, 0, 0, 0, 151, 148, 163,
984 161, 170, 0, 164, 165, 166, 167, 0, 168, 169,
985 160, 146, 171, 172, 173, 174, 0, 0, 177, 142,
986 162, 0, 0, 0, 804, 0, 0, 0, 141, 147,
987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
988 0, 0, 0, 0, 143, 144, 149, 0, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990 0, 0, 0, 0, 0, 0, 156, 157, 158, 274,
991 88, 87, 0, 89, 0, 0, 0, 0, 155, 160,
992 159, 175, 0, 0, 0, 151, 148, 163, 161, 170,
993 0, 164, 165, 166, 167, 0, 168, 169, 0, 0,
994 171, 172, 173, 174, 0, 0, 177, 142, 162, 0,
995 0, 0, 0, 0, 146, 0, 141, 147, 0, 0,
996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
997 0, 0, 143, 144, 149, 156, 157, 158, 88, 87,
998 0, 89, 0, 0, 0, 0, 155, 0, 0, 175,
999 0, 0, 0, 151, 148, 163, 161, 170, 0, 164,
1000 165, 166, 167, 0, 168, 169, 0, 160, 171, 172,
1001 173, 174, 274, 0, 177, 142, 162, 146, 0, 0,
1002 0, 0, 0, 0, 759, 147, 0, 0, 0, 0,
1003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1004 143, 144, 149, 0, 0, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1006 0, 0, 0, 156, 157, 158, 0, 0, 0, 0,
1007 0, 0, 0, 146, 0, 160, 0, 0, 88, 87,
1008 0, 89, 0, 0, 88, 87, 155, 89, 0, 175,
1009 0, 0, 0, 151, 148, 163, 161, 170, 0, 164,
1010 165, 166, 167, 0, 168, 169, 0, 0, 171, 172,
1011 173, 174, 0, 0, 177, 142, 162, 0, 409, 0,
1012 0, 0, 0, 0, 141, 147, 0, 146, 0, 0,
1013 0, 156, 157, 158, 0, 0, 0, 0, 0, 0,
1014 143, 144, 149, 0, 0, 0, 391, 0, 0, 0,
1015 407, 0, 0, 389, 390, 0, 0, 0, 393, 394,
1016 405, 395, 396, 397, 398, 399, 400, 401, 402, 392,
1017 0, 0, 0, 0, 0, 652, 406, 0, 0, 404,
1018 0, 88, 87, 146, 89, 988, 403, 0, 0, 155,
1019 0, 0, 175, 0, 0, 408, 151, 148, 163, 161,
1020 170, 0, 164, 165, 166, 167, 0, 168, 169, 0,
1021 0, 171, 172, 173, 174, 0, 0, 177, 142, 162,
1022 0, 0, 0, 0, 0, 0, 0, 141, 147, 0,
1023 0, 156, 157, 158, 0, 0, 0, 146, 0, 0,
1024 0, 722, 0, 143, 144, 149, 0, 0, 0, 0,
1025 0, 0, 0, 0, 488, 175, 489, 0, 0, 151,
1026 148, 163, 161, 170, 0, 164, 165, 166, 167, 0,
1027 168, 169, 0, 0, 171, 172, 173, 174, 458, 0,
1028 177, 142, 162, 0, 0, 0, 0, 0, 0, 0,
1029 141, 147, 0, 0, 0, 0, 0, 0, 0, 0,
1030 0, 0, 0, 0, 0, 0, 143, 144, 149, 0,
1031 380, 175, 381, 0, 0, 151, 148, 163, 161, 170,
1032 0, 164, 165, 166, 167, 0, 168, 169, 0, 0,
1033 171, 172, 173, 174, 156, 157, 158, 142, 162, 0,
1034 0, 160, 0, 0, 0, 0, 141, 147, 0, 0,
1035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1036 0, 0, 143, 144, 149, 175, 0, 0, 0, 151,
1037 148, 163, 161, 170, 0, 164, 165, 166, 167, 0,
1038 168, 169, 0, 0, 171, 172, 173, 174, 0, 0,
1039 0, 142, 162, 0, 0, 0, 0, 160, 0, 0,
1040 141, 147, 0, 0, 0, 0, 0, 0, 0, 0,
1041 0, 0, 0, 0, 0, 0, 143, 144, 149, 0,
1042 0, 175, 0, 0, 0, 151, 148, 163, 161, 170,
1043 0, 164, 165, 166, 167, 0, 168, 169, 0, 0,
1044 171, 172, 173, 174, 0, 0, 0, 142, 162, 0,
1045 0, 160, 0, 0, 0, 0, 141, 147, 0, 0,
1046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1047 0, 0, 143, 144, 149, 175, 0, 0, 0, 151,
1048 148, 163, 161, 170, 0, 164, 165, 166, 167, 0,
1049 168, 169, 0, 0, 171, 172, 173, 174, 0, 0,
1050 0, 142, 162, 0, 0, 0, 0, 160, 0, 0,
1051 141, 147, 0, 0, 0, 0, 0, 0, 0, 0,
1052 0, 0, 0, 0, 0, 0, 143, 144, 149, 0,
1053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1056 0, 160
1057};
1058
1059YYSTATIC YYCONST short YYFARDATA YYPACT[] = {
1060-1000, 1575,-1000, 497, 461,-1000,-1000,-1000,-1000,-1000,
1061-1000,-1000, 437, 429, 427, 426,-1000,-1000,-1000, 33,
1062 33, -455, 65, 65,-1000,-1000,-1000, 419,-1000, -115,
1063 125,-1000, 896, 1404, 24, 885, 33, -367, -370,-1000,
1064 -173, 669, 24, 669,-1000,-1000,-1000, 138, 2333, 125,
1065 125, 125, 125,-1000,-1000, 167,-1000,-1000,-1000, -161,
1066 1038,-1000,-1000, 970, 24, 24,-1000,-1000, 1420,-1000,
1067-1000,-1000,-1000,-1000,-1000,-1000, 33, -126,-1000,-1000,
1068-1000,-1000, 510, -125, 3020, 1190,-1000,-1000,-1000,-1000,
1069 2456,-1000, 33,-1000, 657,-1000, 1300, 1661, 24, 1234,
1070 1233, 1231, 1193, 1192, 1191, 1660, 1496, 43,-1000, 33,
1071 733, 283,-1000,-1000, 164, 1190, 125, 3020,-1000,-1000,
1072-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1073-1000,-1000,-1000, 1495, 146, 1302, 155, -234, -240, -241,
1074 -244, 510,-1000, -102, 510, 1076, 966,-1000,-1000, -46,
1075-1000, 3574, 187, 1169,-1000,-1000,-1000,-1000,-1000, 3410,
1076-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1077 410,-1000,-1000,-1000,-1000,-1000, 1190, 1659, 389, 1190,
1078 1190, 1190,-1000, 3194, 76,-1000,-1000, 1657, 1037, 2932,
1079-1000, 3574,-1000,-1000,-1000, 171, 171,-1000, 1656,-1000,
1080-1000, 154, 1493, 1490, 1721, 1463,-1000,-1000, 33,-1000,
1081 33, 77,-1000,-1000,-1000,-1000, 1177,-1000,-1000,-1000,
1082-1000,-1000, 879, 33, 3291,-1000, 73, 44,-1000,-1000,
1083 110, 33, 65, 795, 24, 110, 1076, 3354, 3020, -85,
1084 171, 2932, 1655,-1000, 240,-1000,-1000,-1000,-1000,-1000,
1085-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1086 1071, 69, 972, 827,-1000, 72,-1000, 365, 510,-1000,
1087-1000, 3020,-1000,-1000, 88, 556, 171, 125,-1000,-1000,
1088-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1089-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1654, 1649, 2139,
1090 844, 359, 1287, 1641, 76, 1489, -19,-1000, 33, -19,
1091-1000, 65,-1000, 33,-1000, 33,-1000, 33,-1000,-1000,
1092-1000,-1000, 843,-1000, 33, 33,-1000, 1190,-1000,-1000,
1093-1000, -388,-1000,-1000,-1000,-1000,-1000, 283, -44, 99,
1094-1000,-1000, 1190, 1013,-1000, 1232, 634, 1639,-1000, 135,
1095 125, 211,-1000,-1000,-1000, 1638, 1637, 3574, 125, 125,
1096 125, 125,-1000, 510,-1000,-1000, 3574, 614,-1000, 1190,
1097-1000, -72,-1000, 556, 866, 840, 828, 125, 125, 2759,
1098-1000,-1000,-1000,-1000,-1000,-1000, 33, 1232, 1088,-1000,
1099-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1100-1000,-1000,-1000,-1000,-1000, 30,-1000,-1000,-1000, 1632,
1101 1035,-1000, 744, 1488,-1000,-1000, 2611,-1000,-1000, 33,
1102-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 416,
1103 415, 412,-1000,-1000,-1000,-1000,-1000, 33, 33, 404,
1104 3188,-1000,-1000, -204, -206,-1000,-1000,-1000,-1000,-1000,
1105-1000,-1000, -53, 1631,-1000, 33, 1159, 0, 171, 812,
1106 33,-1000, 44, 90, 90, 90, 90, 3020, 240,-1000,
1107-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1108 1630, 1629, 1485,-1000,-1000,-1000, 2759,-1000,-1000,-1000,
1109-1000, 1232, 1628, 24, 3574,-1000, 110, 1323,-1000, -120,
1110 -121,-1000,-1000, -359,-1000,-1000, 24, 266, 357, 24,
1111-1000,-1000, 1026,-1000,-1000, 24,-1000, 24,-1000, 1019,
1112 1007,-1000,-1000, 125, -175, -371, 1620,-1000,-1000,-1000,
1113-1000, 125, -372,-1000,-1000, -353,-1000,-1000,-1000, 1286,
1114-1000, 788, 125, 3574, 1190, 3520, 33, 96, 777,-1000,
1115-1000,-1000,-1000,-1000,-1000,-1000, 1618,-1000,-1000,-1000,
1116-1000,-1000,-1000, 1615,-1000,-1000, 657, 96, 1484,-1000,
1117 1483, 825, 1482, 1479, 1478, 1474, 1473,-1000, 323, 1144,
1118-1000, 87, 1190,-1000,-1000,-1000, 16, 125, 96, 398,
1119 148, 3088,-1000,-1000, 1279, 1190,-1000, 776,-1000,-1000,
1120 -47, 3020, 3020, 952, 1275, 556, 1190, 1190, 1190, 1190,
1121-1000, 2417,-1000, 1190,-1000, 125, 125, 125, 703, 1190,
1122 -8, 1190, 245, 1472,-1000, 422,-1000,-1000,-1000,-1000,
1123-1000,-1000, 33,-1000, 1232,-1000,-1000, 1076, -15, 1058,
1124-1000,-1000, 1190, 1464, 1226,-1000,-1000,-1000,-1000,-1000,
1125-1000, -17, 171, 701, 3020, 2863, 128, -44, 1459, 1267,
1126-1000,-1000, 3520, -53, 821, 33, -75, 3574, 33, 1190,
1127 814,-1000,-1000,-1000, 110,-1000,-1000,-1000,-1000,-1000,
1128-1000,-1000, 33, 65,-1000, -22, 1190, 96, 1457, 862,
1129 1456, 1262, 1260,-1000, 76, 33, 33, 1455, 1136,-1000,
1130-1000, 1232, 1614, 1451, 1613, 1450, 1449, 1612, 1611, 1190,
1131 125,-1000, 125, 33, 143, 125, 24, 3020, 125, 594,
1132 662, 121, -172, 1447, 95, 1823, 134, 1905, 33,-1000,
1133 1312,-1000, 869,-1000, 869, 869, 869, 869, 869, -144,
1134-1000, 33, 33, 125,-1000,-1000,-1000,-1000,-1000,-1000,
1135 1190, 1446, 1245, 990,-1000,-1000, 349, 1219, 993, 361,
1136 130,-1000, -37, 33, 1434, 1433,-1000, 3574, 1610, 1169,
1137 1169, 1169, 125, 125,-1000, 947, 865, 422,-1000,-1000,
1138-1000,-1000,-1000, 1432, 347, 922, 981, -75, 1609, 1608,
1139 3464,-1000,-1000, 555, 868, 1127, 721, -75, 3574, 33,
1140 1190, -339, 125, 1190,-1000,-1000, 3574,-1000,-1000, 1190,
1141-1000, -53, 121, 1428, -246,-1000,-1000, 1190, 2759, 808,
1142 954, -133, -147, 1423, 1414, 125, 1309,-1000, -53,-1000,
1143 110, 110,-1000,-1000,-1000,-1000, 266,-1000,-1000,-1000,
1144-1000,-1000,-1000,-1000, 1169, 1190, 1412, 33, 1190, 1410,
1145-1000, 125, -75, 1601, 794, 789, 787, 754,-1000, 96,
1146 1747,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1147-1000,-1000, 1131, 1129, 1600, 954, 76, 1409, 909, 24,
1148 1599, -401, -67,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1149-1000,-1000,-1000,-1000, 648,-1000,-1000,-1000,-1000,-1000,
1150-1000,-1000,-1000,-1000,-1000,-1000, 1597, 1597,-1000, 1597,
1151 1786,-1000,-1000, -414,-1000, -405,-1000,-1000, -419,-1000,
1152-1000,-1000, 1408,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1153 76,-1000,-1000,-1000,-1000,-1000, 127, 306, 1190,-1000,
1154 96, 630, 338,-1000, 3088, 395, 969,-1000,-1000,-1000,
1155-1000,-1000, 556, -53, 1169, 1190,-1000, 125, 1200, 3020,
1156-1000,-1000,-1000, 199,-1000,-1000,-1000, 1188, 1185, 1178,
1157 1171, 1158, 1150, 1106, 1104, 1100, 1048, 1036, 995, 994,
1158 329, 992, 978, 24, 658, 1058, -53, -53, 33, 939,
1159-1000,-1000,-1000, 1076, 1076, 1076, 1076,-1000,-1000,-1000,
1160-1000,-1000,-1000, 1076, 1076, 1076,-1000,-1000,-1000,-1000,
1161-1000, -435, 2759, 732,-1000, 1076, 1190, 777,-1000, 76,
1162-1000, 76, -23,-1000,-1000, 2711, 76, 33,-1000,-1000,
1163 1190,-1000, 1406,-1000,-1000, 1121,-1000,-1000, -299, 1057,
1164 1905,-1000,-1000,-1000,-1000, 1232,-1000, -250, -269, 33,
1165-1000,-1000,-1000,-1000, 620, 150, 96, 856, 723,-1000,
1166-1000,-1000,-1000,-1000,-1000,-1000, -428,-1000,-1000, 41,
1167-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1168-1000, 582,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1169-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1170-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1171-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 33,-1000,
1172-1000,-1000,-1000, 1596, 1232, 1595,-1000,-1000,-1000,-1000,
1173-1000, 375, 1402, 1200,-1000, 422, 1400, 1199,-1000, 2565,
1174-1000,-1000,-1000, -58, 33, 1487, 33, 2665, 33, 37,
1175 33, 384, 33, 65, 33, 33, 33, 33, 33, 33,
1176 33, 65, 33, 33, 33, 33, 33, 33, 33, 950,
1177 938, 934, 929, 33, 33, -148, 33, 1399, 1232,-1000,
1178-1000, 1580, 1579, 1395, 1392, 731,-1000,-1000,-1000,-1000,
1179-1000,-1000,-1000,-1000, 171, -30,-1000, 1263,-1000,-1000,
1180 -75,-1000,-1000, 1232,-1000, 1578, 1577, 1576, 1573, 1572,
1181 1563, 160, 1562, 1561, 1560, 1559, 1558, 1555,-1000,-1000,
1182-1000, 266,-1000, 1553, 1390, 1667,-1000,-1000,-1000,-1000,
1183 1388,-1000, 584, 33,-1000, 1264, 33, 33, 955, 96,
1184 730,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 116, 33,
1185 690, 53,-1000,-1000,-1000,-1000,-1000, 3020, 636,-1000,
1186-1000,-1000, 1619, 1387, 1386, 725, 91, 1385, 1384, 724,
1187 1383, 715, 1382, 1380, 714, 1377, 1374, 712, 1373, 710,
1188 1369, 706, 1368, 700, 1358, 689, 1356, 686, 1355, 679,
1189 1354, 655, 1353, 624, 65, 33, 33, 33, 33, 33,
1190 33, 33, 1352, 613, 1351, 596,-1000, 337, -53, -53,
1191-1000,-1000, 895, 3574, -75, -53, 1056, 1552, 1551, 1550,
1192 1549, 1118, -53,-1000,-1000,-1000,-1000, 33, 595, 96,
1193 591, 588, 33, 1232,-1000,-1000, 1350, 1115, 1096, 1077,
1194 1349,-1000, 36,-1000, 951, 571, 58,-1000,-1000,-1000,
1195 1547, 1347,-1000,-1000, 1544,-1000, 1541,-1000,-1000, 1539,
1196-1000,-1000, 1533,-1000, 1532,-1000, 1531,-1000, 1530,-1000,
1197 1529,-1000, 1525,-1000, 1524,-1000, 1522,-1000, 1520, 1346,
1198 563, 1345, 560, 1342, 551, 1340, 538,-1000, 1517,-1000,
1199 1512,-1000, 1338, 1336,-1000, 2759, 1056, 1334, 1510,-1000,
1200 660, 266, 1333, 490,-1000, 1291,-1000, 2070, 1332,-1000,
1201 33, 33, 33,-1000,-1000, 2665,-1000,-1000,-1000,-1000,
1202-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1203-1000,-1000,-1000, 1508,-1000, 1507,-1000, 1506,-1000, 1504,
1204-1000,-1000,-1000,-1000, -34, 1502, 954, -53,-1000,-1000,
1205-1000, 96,-1000, 909,-1000, 1329, 1328, 1319,-1000, 249,
1206 1298, 2249, 331, 460, 466, 491, 446, 435, 454, 408,
1207 381, 378,-1000,-1000,-1000,-1000, 368, 126, -75, -53,
1208-1000, 1318, 2140, 1204,-1000,-1000,-1000,-1000,-1000,-1000,
1209-1000,-1000, -33,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1210-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1211-1000,-1000,-1000,-1000, 259, 364, 303, 300,-1000,-1000,
1212-1000, 1501, 1316,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
1213-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 1500,
1214 96,-1000,-1000,-1000,-1000,-1000, -53, -436, 33, 1297,
1215 1315, -191, 1313,-1000,-1000, 171,-1000, 3574, 2759, -35,
1216 -75, 1056, 1405, -53, 1306,-1000
1217};
1218
1219YYSTATIC YYCONST short YYFARDATA YYPGO[] = {
1220 0, 53, 57, 6, 1914, 43, 40, 29, 1909, 0,
1221 1908, 1907, 1906, 223, 50, 1905, 1904, 2, 1903, 48,
1222 38, 1, 27, 30, 31, 4, 1899, 45, 22, 59,
1223 1898, 136, 39, 9, 25, 7, 13, 1897, 41, 1896,
1224 14, 26, 1895, 1891, 5, 3, 8, 10, 1890, 1889,
1225 1888, 1886, 32, 33, 70, 1885, 1884, 1883, 1881, 12,
1226 1877, 1876, 11, 1866, 35, 1865, 18, 36, 16, 24,
1227 42, 23, 556, 65, 1288, 52, 127, 1856, 1855, 1854,
1228 1853, 1852, 1849, 19, 34, 1847, 1341, 1845, 1844, 28,
1229 655, 115, 1843, 47, 1280, 1842, 1835, 1834, 1833, 1829,
1230 1814, 1813, 1812, 1811, 1810, 1809, 1808, 1807, 1806, 956,
1231 1805, 64, 62, 1804, 58, 122, 56, 76, 1803, 1802,
1232 49, 1801, 1800, 1799, 1798, 1797, 1796, 61, 1794, 1792,
1233 1791, 66, 114, 44, 1790, 15, 284, 1789, 1787, 1785,
1234 1784, 1782, 1779, 1778, 1777, 1776, 1775, 1774, 1769, 836,
1235 1768, 1767, 1759, 1758, 1757, 1756, 1752, 1751, 60, 1749,
1236 1746, 119, 1745, 1738, 1732, 113, 1731, 1717, 1716, 1715,
1237 1714, 1709, 1707, 69, 1703, 67, 1706, 63, 1705, 478,
1238 1704, 1702, 1659, 1615, 1528, 1504
1239};
1240YYSTATIC YYCONST yyr_t YYFARDATA YYR1[]={
1241
1242 0, 109, 109, 110, 110, 110, 110, 110, 110, 110,
1243 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1244 110, 110, 110, 110, 110, 110, 110, 110, 110, 136,
1245 136, 36, 36, 133, 133, 133, 2, 2, 1, 1,
1246 1, 9, 24, 24, 23, 23, 23, 134, 134, 134,
1247 134, 134, 135, 135, 135, 135, 135, 135, 135, 135,
1248 135, 93, 93, 93, 93, 94, 94, 94, 94, 10,
1249 11, 73, 72, 72, 59, 61, 61, 61, 62, 62,
1250 62, 65, 65, 132, 132, 132, 60, 60, 60, 60,
1251 60, 60, 130, 130, 130, 119, 12, 12, 12, 12,
1252 12, 12, 118, 137, 113, 138, 139, 111, 77, 77,
1253 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
1254 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
1255 77, 77, 77, 77, 77, 140, 140, 141, 141, 112,
1256 112, 142, 142, 56, 56, 57, 57, 69, 69, 18,
1257 18, 18, 18, 18, 19, 19, 68, 68, 67, 67,
1258 58, 21, 21, 22, 143, 143, 143, 143, 143, 143,
1259 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1260 143, 143, 143, 116, 79, 79, 79, 79, 79, 79,
1261 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
1262 4, 4, 35, 35, 16, 16, 75, 75, 75, 75,
1263 75, 75, 75, 7, 7, 7, 7, 8, 8, 8,
1264 8, 8, 8, 8, 76, 74, 74, 74, 74, 74,
1265 74, 144, 144, 81, 81, 81, 145, 145, 150, 150,
1266 150, 150, 150, 150, 150, 150, 146, 82, 82, 82,
1267 147, 147, 151, 151, 151, 151, 151, 151, 151, 152,
1268 38, 38, 34, 34, 153, 114, 78, 78, 78, 78,
1269 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
1270 78, 78, 78, 78, 78, 78, 78, 78, 78, 83,
1271 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1272 83, 83, 83, 83, 83, 3, 3, 3, 13, 13,
1273 13, 13, 13, 80, 80, 80, 80, 80, 80, 80,
1274 80, 80, 80, 80, 80, 80, 80, 80, 80, 154,
1275 115, 115, 155, 155, 155, 155, 155, 155, 155, 155,
1276 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
1277 155, 155, 155, 155, 155, 155, 158, 159, 156, 161,
1278 161, 160, 160, 160, 163, 162, 162, 162, 162, 166,
1279 166, 166, 169, 164, 167, 168, 165, 165, 165, 117,
1280 170, 170, 172, 172, 172, 171, 171, 173, 173, 14,
1281 14, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1282 174, 174, 174, 174, 174, 174, 41, 41, 41, 41,
1283 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
1284 41, 41, 41, 41, 41, 175, 31, 31, 32, 32,
1285 39, 39, 39, 40, 40, 40, 40, 40, 40, 40,
1286 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
1287 40, 40, 40, 40, 40, 40, 40, 40, 40, 42,
1288 42, 42, 43, 43, 43, 47, 47, 46, 46, 45,
1289 45, 44, 44, 48, 48, 49, 49, 49, 50, 50,
1290 50, 50, 51, 51, 149, 95, 96, 97, 98, 99,
1291 100, 101, 102, 103, 104, 105, 106, 107, 108, 157,
1292 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1293 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1294 157, 157, 6, 6, 6, 6, 6, 53, 53, 54,
1295 54, 55, 55, 25, 25, 26, 26, 27, 27, 27,
1296 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
1297 5, 5, 71, 71, 71, 71, 33, 33, 33, 33,
1298 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1299 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1300 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1301 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1302 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1303 33, 20, 20, 15, 15, 15, 15, 15, 15, 15,
1304 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1305 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1306 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1307 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1308 15, 15, 28, 28, 28, 28, 28, 28, 28, 28,
1309 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1310 28, 28, 28, 28, 28, 28, 52, 52, 52, 52,
1311 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
1312 52, 52, 52, 52, 30, 30, 29, 29, 29, 29,
1313 29, 131, 131, 131, 131, 131, 131, 64, 64, 64,
1314 63, 63, 87, 87, 84, 84, 85, 17, 17, 37,
1315 37, 37, 37, 37, 37, 37, 37, 86, 86, 86,
1316 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
1317 86, 86, 176, 176, 120, 120, 120, 120, 120, 120,
1318 120, 120, 120, 120, 120, 121, 121, 88, 88, 89,
1319 89, 177, 122, 90, 90, 90, 90, 90, 90, 90,
1320 90, 90, 90, 123, 123, 178, 178, 178, 66, 66,
1321 179, 179, 179, 179, 179, 179, 180, 182, 181, 124,
1322 124, 125, 125, 183, 183, 183, 183, 126, 148, 91,
1323 91, 91, 91, 91, 91, 91, 91, 91, 91, 127,
1324 127, 184, 184, 184, 184, 184, 184, 184, 128, 128,
1325 92, 92, 92, 129, 129, 185, 185, 185, 185 };
1326YYSTATIC YYCONST yyr_t YYFARDATA YYR2[]={
1327
1328 0, 0, 2, 4, 4, 3, 1, 1, 1, 1,
1329 1, 1, 4, 4, 4, 4, 1, 1, 1, 2,
1330 2, 3, 2, 2, 1, 1, 1, 4, 1, 0,
1331 2, 1, 3, 2, 4, 6, 1, 1, 1, 1,
1332 3, 1, 1, 1, 1, 4, 4, 4, 4, 4,
1333 4, 4, 2, 3, 2, 2, 2, 1, 1, 2,
1334 1, 2, 4, 6, 3, 5, 7, 9, 3, 4,
1335 7, 1, 1, 1, 2, 0, 2, 2, 0, 6,
1336 2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
1337 2, 3, 1, 2, 3, 7, 0, 2, 2, 2,
1338 2, 2, 3, 3, 2, 1, 4, 3, 0, 2,
1339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1340 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
1341 3, 2, 2, 2, 5, 0, 2, 0, 2, 0,
1342 2, 3, 1, 0, 1, 1, 3, 0, 3, 1,
1343 1, 1, 1, 1, 0, 2, 4, 3, 0, 2,
1344 3, 0, 1, 5, 3, 4, 4, 4, 1, 1,
1345 1, 1, 1, 2, 2, 4, 13, 22, 1, 1,
1346 5, 3, 4, 7, 0, 2, 2, 2, 2, 2,
1347 2, 2, 5, 2, 2, 2, 2, 2, 2, 5,
1348 0, 2, 0, 2, 0, 3, 9, 9, 7, 7,
1349 1, 1, 1, 2, 2, 1, 4, 0, 1, 1,
1350 2, 2, 2, 2, 4, 2, 5, 3, 2, 2,
1351 1, 4, 3, 0, 2, 2, 0, 2, 2, 2,
1352 2, 2, 1, 1, 1, 1, 9, 0, 2, 2,
1353 0, 2, 2, 2, 2, 1, 1, 1, 1, 1,
1354 0, 4, 1, 3, 1, 13, 0, 2, 2, 2,
1355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1356 2, 2, 2, 2, 2, 5, 8, 6, 5, 0,
1357 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1358 4, 4, 4, 4, 5, 1, 1, 1, 0, 4,
1359 4, 4, 4, 0, 2, 2, 2, 2, 2, 2,
1360 2, 2, 2, 2, 2, 2, 2, 2, 5, 1,
1361 0, 2, 2, 1, 2, 4, 5, 1, 1, 1,
1362 1, 2, 1, 1, 1, 1, 1, 4, 6, 4,
1363 4, 11, 1, 5, 3, 5, 3, 1, 2, 2,
1364 1, 2, 4, 4, 1, 2, 2, 2, 2, 2,
1365 2, 2, 1, 2, 1, 1, 1, 4, 4, 2,
1366 4, 2, 0, 1, 1, 3, 1, 3, 1, 0,
1367 3, 5, 4, 3, 5, 5, 5, 5, 5, 5,
1368 2, 2, 2, 2, 2, 2, 4, 4, 4, 4,
1369 4, 4, 4, 4, 5, 5, 5, 5, 4, 4,
1370 4, 4, 4, 4, 3, 2, 0, 1, 1, 2,
1371 1, 1, 1, 1, 4, 4, 5, 4, 4, 4,
1372 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1373 8, 8, 8, 8, 7, 7, 7, 7, 7, 0,
1374 2, 2, 0, 2, 2, 0, 2, 0, 2, 0,
1375 2, 0, 2, 0, 2, 0, 2, 2, 0, 2,
1376 3, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1377 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
1378 2, 2, 2, 2, 2, 2, 3, 2, 2, 2,
1379 5, 3, 2, 2, 2, 2, 2, 5, 4, 6,
1380 2, 4, 0, 3, 3, 1, 1, 0, 3, 0,
1381 1, 1, 3, 0, 1, 1, 3, 1, 3, 4,
1382 4, 4, 4, 5, 1, 1, 1, 1, 1, 1,
1383 1, 3, 1, 3, 4, 1, 0, 10, 6, 5,
1384 6, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1385 1, 1, 1, 2, 2, 2, 2, 1, 1, 1,
1386 1, 2, 3, 4, 6, 5, 1, 1, 1, 1,
1387 1, 1, 1, 2, 2, 1, 2, 2, 4, 1,
1388 2, 1, 2, 1, 2, 1, 2, 1, 2, 1,
1389 1, 0, 5, 0, 1, 1, 1, 1, 1, 1,
1390 1, 1, 1, 1, 1, 2, 2, 2, 2, 1,
1391 1, 1, 1, 1, 3, 2, 2, 1, 1, 1,
1392 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1393 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1394 1, 1, 2, 1, 3, 2, 3, 4, 2, 2,
1395 2, 5, 5, 7, 4, 3, 2, 3, 2, 1,
1396 1, 2, 3, 2, 1, 2, 1, 1, 1, 1,
1397 1, 1, 1, 1, 1, 2, 2, 2, 2, 1,
1398 1, 1, 1, 1, 1, 3, 0, 1, 1, 3,
1399 2, 6, 7, 3, 3, 3, 6, 0, 1, 3,
1400 5, 6, 4, 4, 1, 3, 3, 1, 1, 1,
1401 1, 4, 1, 6, 6, 6, 4, 1, 1, 1,
1402 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1403 1, 1, 1, 1, 3, 2, 5, 4, 7, 6,
1404 7, 6, 9, 8, 3, 8, 4, 0, 2, 0,
1405 1, 3, 3, 0, 2, 2, 2, 3, 2, 2,
1406 2, 2, 2, 0, 2, 3, 1, 1, 1, 1,
1407 3, 8, 2, 3, 1, 1, 3, 3, 3, 4,
1408 6, 0, 2, 3, 1, 3, 1, 4, 3, 0,
1409 2, 2, 2, 3, 3, 3, 3, 3, 3, 0,
1410 2, 2, 3, 3, 4, 2, 1, 1, 3, 5,
1411 0, 2, 2, 0, 2, 4, 3, 1, 1 };
1412YYSTATIC YYCONST short YYFARDATA YYCHK[]={
1413
1414-1000,-109,-110,-111,-113,-114,-116,-117,-118,-119,
1415-120,-121,-122,-124,-126,-128,-130,-131,-132, 525,
1416 526, 460, 528, 529,-133,-134,-135, 532, 533,-139,
1417 409,-152, 411,-170,-137, 455,-176, 463, 408, 470,
1418 471, 430, -87, 431, -93, -94, 273, 449, 530, 534,
1419 535, 536, 537, 538, 539, 540, 59,-138, 410, 412,
1420 454, 447, 448, 450, -10, -11, 123, 123,-115, 123,
1421 123, 123, 123, -9, 264, -9, 527, -88, -24, 265,
1422 264, -24, 123,-140, 314, -1, -2, 261, 260, 263,
1423 -78, -16, 91,-171, 123,-174, 278, 38,-175, 286,
1424 287, 284, 283, 282, 281, 288, -31, -32, 267, 91,
1425 -9, -90, 469, 469, -92, -1, 469, -86, 432, 433,
1426 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
1427 444, 445, 446, -31, -86, 263, -28, -70, -74, -93,
1428 -94, 306, 297, 322, 323,-149, 33, 307, 276, 324,
1429 -52, 275, 91, -5, -76, 268, 413, 414, 415, 358,
1430 357, 278, 298, 277, 281, 282, 283, 284, 286, 287,
1431 279, 290, 291, 292, 293, 271, -1, 296, -1, -1,
1432 -1, -1, 262, -77,-172, 318, 379, 61, -73, 40,
1433 -75, -7, -76, 269, 272, 325, 340, -8, 295, 300,
1434 302, 308, -31, -31,-112,-109, 125,-155, 416,-156,
1435 418,-154, 420, 421,-117,-157, -2,-131,-120,-133,
1436-132,-135, 472, 458, 508,-158, 507,-160, 419, -95,
1437 -96, -97, -98, -99,-108,-100,-101,-102,-103,-104,
1438-105,-106,-107,-159,-163, 395, 396, 397, 398, 399,
1439 400, 401, 402, 403, 404, 405, 406, 407, 123, 417,
1440-123,-125,-127,-129, -9, -1, 461,-136, -70, -76,
1441-141, 315, -71, -70, 91, -28,-149, 46, -7, 328,
1442 329, 330, 331, 332, 326, 346, 353, 337, 365, 366,
1443 367, 368, 369, 370, 371, 351, 378, 294, 372, -79,
1444 -9,-173,-174, 42, 40, -31, 40, -14, 91, 40,
1445 -14, 40, -14, 40, -14, 40, -14, 40, -14, 40,
1446 41, 267, -9, 263, 58, 44, 262, -1, 354, 355,
1447 356, 473, 379, 475, 476, 477, 478, -90, -91, -1,
1448 329, 330, -1, -71, 41, -36, 61, 288, 262, 44,
1449 390, 91, 38, 42, 359, 360, 361, 60, 390, 390,
1450 390, 390, -70, 306, -70, -75, -7, 33, -9, -1,
1451 280, 279, 289, -28, -1, -76, 42, 471, 47, -28,
1452 270, 272, 281, 282, 283, 284, 40, -36, -1, 329,
1453 330, 322, 345, 334, 335, 337, 338, 339, 340, 341,
1454 342, 343, 344, 362, 355, 336, 352, 326, 371, 294,
1455 -2, 40, 61, -72, -71, -74, -28, -7, -7, 40,
1456 301, 303, 304, 305, 41, 41, 125,-143,-114,-111,
1457-144,-146,-116,-117,-131,-120,-132, 452, 453,-148,
1458 508,-133,-135, 507, 321, 422, 427, 472, 408, 125,
1459 -9, -9, 40, 451, 58, 91, -9, -71, 357, 364,
1460 91,-161,-162,-164,-166,-167,-168, 311,-169, 309,
1461 313, 312, -9, -2, -9, -24, 40, -23, -24, 266,
1462 286, 287, -31, -9, -2, -75, -28, -76, 270, 272,
1463 -71, -36, 341,-175, -7, -72, 40,-115,-158, -2,
1464 -9, 125,-178, 462,-131,-179,-180, 467, 468,-181,
1465-132,-135, 464, 125,-183,-177,-179,-182, 338, 462,
1466 465, 125,-184, 460, 408, 463, 296,-132,-135, 125,
1467-185, 460, 463,-132,-135, -89, 420, 125,-136,-142,
1468 -71, -1, 471, -7, -1, -13, 40, 40, -28, 328,
1469 329, 330, 331, 377, 371, 326, 479, 365, 366, 367,
1470 368, 375, 376, 294, 93, 125, 44, 40, -2, 41,
1471 -23, -9, -23, -24, -9, -9, -9, 93, -9, -9,
1472 474, -1, -1, 330, 329, 327, 336, 390, 40, 61,
1473 43, 123, 40, 40, 263, -1, 93, -30, -29, 275,
1474 -9, 40, 40, -54, -55, -28, -1, -1, -1, -1,
1475 -70, -28, -9, -1, 280, 93, 93, 93, -1, -1,
1476 -71, -1, 91, -9, -69, 60, 329, 330, 331, 365,
1477 366, 367, 40, 61, -36, 123, 40, 41, -71, -3,
1478 373, 374, -1, -9,-115, 123, 123, 123, -9, -9,
1479 123, -71, 357, 364, 364, -81, -82, -91, -25, -26,
1480 -27, 275, -13, 40, -9, 58, 274, -7, 91, -1,
1481 -9,-161,-165,-158, 310,-165,-165,-165, -71,-158,
1482 -2, -9, 40, 40, 41, -71, -1, 40, -31, -28,
1483 -6, -2, -9, 125, 316, 316, 466, -31, -66, -9,
1484 42, -36, 61, -31, 61, -31, -31, 61, 61, -1,
1485 469, -9, 469, 40, -1, 469,-177, 44, 93, -1,
1486 -28, -28, 91, -9, -36, -83, -1, 40, 40,-173,
1487 -36, 41, 41, 93, 41, 41, 41, 41, 41, -12,
1488 263, 44, 58, 390, 329, 330, 331, 365, 366, 367,
1489 -1, -84, -85, -36, 123, 262, -64, -63, -71, 306,
1490 44, 93, 44, 275, -71, -71, 62, 44, 42, -5,
1491 -5, -5, 93, 274, 41, -68, -19, -18, 43, 45,
1492 306, 323, 373, -9, -59, -61, -73, 274, -53, -22,
1493 60, 41, 125,-112,-145,-147,-127, 274, -7, 91,
1494 -1, -71, -71, -1, 371, 326, -7, 371, 326, -1,
1495 41, 44, -28, -25, 93, -9, -3, -1, -28, -9,
1496 93, -2, -9, -9, -24, 274, -36, 41, 40, 41,
1497 44, 44, -2, -9, -9, 41, 58, 40, 41, 40,
1498 41, 41, 40, 40, -5, -1, -9, 317, -1, -31,
1499 -71, 93, -38, 479, 504, 505, 506, -9, 41, 390,
1500 -83, 41, 387, 341, 342, 343, 388, 389, 301, 303,
1501 304, 305, 391, 394, 294, -4, 317, -34, -33,-153,
1502 480, 482, 483, 484, 485, 276, 277, 281, 282, 283,
1503 284, 286, 287, 257, 279, 290, 291, 292, 293, 486,
1504 487, 488, 490, 491, 492, 493, 494, 495, 496, 334,
1505 497, 280, 289, 336, 498, 341, 489, 357, 390, 502,
1506 271, 123, -9, 41, -14, -14, -14, -14, -14, -14,
1507 317, 283, 284, 456, 457, 459, -9, -9, -1, 41,
1508 44, 61, -59, 125, 44, 61, 263, 263, -29, -9,
1509 41, 41, -28, 40, -5, -1, 62, -58, -1, 40,
1510 -19, 41, 125, -62, -40,-135, -41, 298, 364, 297,
1511 286, 287, 284, 283, 282, 281, 293, 292, 291, 290,
1512 279, 278, 277,-175, 61, -3, 40, 40, 91, -54,
1513 125, 125,-150, 423, 424, 425, 426,-120,-132,-133,
1514-135, 125,-151, 428, 429, 426,-132,-120,-133,-135,
1515 125, -3, -28, -9, -93, 450, -1, -28, -27, -38,
1516 41, 390, -71, 93, -35, 61, 316, 316, 41, 41,
1517 -1, 41, -25, -6, -6, -66, 41, -9, 41, -3,
1518 40, 93, 93, 93, 93, -36, 41, 58, 58, 40,
1519 -35, -2, 41, 42, 91, -32, 40, 481, 501, 277,
1520 281, 282, 283, 284, 280, -20, 40, -20, -20, -15,
1521 510, 483, 484, 276, 277, 281, 282, 283, 284, 286,
1522 287, 279, 290, 291, 292, 293, 42, 486, 487, 488,
1523 490, 491, 494, 495, 497, 280, 289, 257, 511, 512,
1524 513, 514, 515, 516, 517, 518, 519, 520, 521, 522,
1525 523, 496, 488, 500, 41, -2, 263, 263, 44, -84,
1526 -37, -17, -9, 283, -36, -70, 319, 320, 125, -64,
1527 123, 61, -25, -1, -67, 44, -56, -57, -71, -65,
1528-135, 358, 363, 40, 91, 40, 91, 40, 91, 40,
1529 91, 40, 91, 40, 91, 40, 91, 40, 91, 40,
1530 91, 40, 91, 40, 91, 40, 91, 40, 91, 284,
1531 283, 282, 281, 40, 91, 40, 91, -31, -36, 123,
1532 40, -53, -22, -25, -25, -9, 62, -75, -75, -75,
1533 -75, -75, -75, -75, 509, -71, 93, -1, -2, -2,
1534 274, -39, -41, -36, 299, 286, 287, 284, 283, 282,
1535 281, 279, 293, 292, 291, 290, 278, 277, -2, -9,
1536 41, 58, -89, -69, -34, -83, 392, 393, 392, 393,
1537 -9, 93, -9, 43, 125, -36, 91, 91, 503, 44,
1538 91, 524, 38, 281, 282, 283, 284, 280, -9, 40,
1539 40, -62, 123, 41, -67, -68, 41, 44, -60, -52,
1540 364, 297, 345, 299, 263, -9, 306, -70, 299, -9,
1541 -40, -9, -23, -9, -9, -23, -24, -9, -24, -9,
1542 -9, -9, -9, -9, -9, -9, -24, -9, -9, -9,
1543 -9, -9, -9, -9, 40, 91, 40, 91, 40, 91,
1544 40, 91, -9, -9, -17, -9, 41, -59, 40, 40,
1545 41, 41, 93, -7, 274, 40, -3, 284, 283, 282,
1546 281, -66, 40, 41, 41, 41, 93, 43, -9, 44,
1547 -9, -9, 61, -36, 93, 263, -9, 281, 282, 283,
1548 -9, 125, -62, -71, -1, 91, 306, -70, 41, 41,
1549 93, 263, 41, 41, 93, 41, 93, 41, 41, 93,
1550 41, 41, 93, 41, 93, 41, 93, 41, 93, 41,
1551 93, 41, 93, 41, 93, 41, 93, 41, 93, -24,
1552 -9, -9, -9, -9, -9, -9, -9, 41, 93, 41,
1553 93, 125, -25, -25, 62, -28, -3, -25, -21, -22,
1554 60, 58, -25, -9, 93, -36, 93, 93, -9, 41,
1555 58, 58, 58, 41, 125, 61, 93, 263, 40, 41,
1556 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
1557 40, 40, 41, 93, 41, 93, 41, 93, 41, 93,
1558 40, 40, 41, 41, -71, -21, 41, 40, -66, 41,
1559 93, 44, 41, -33, 41, -9, -9, -9, -40, -49,
1560 -50, -51, -42, -43, -47, -46, -45, -44, -47, -46,
1561 -45, -44, 40, 40, 40, 40, -45, -48, 274, 40,
1562 -35, -25, -80, -36, 41, 41, 41, 41, 299, 263,
1563 41, 299, 306, -70, 41, -40, 41, -23, -9, 41,
1564 -23, -24, 41, -24, 41, -9, 41, -9, 41, -9,
1565 41, 41, 41, 41, -47, -46, -45, -44, 41, 41,
1566 -17, -3, -25, 41, 123, 324, 379, 380, 381, 308,
1567 382, 383, 384, 385, 333, 347, 348, 349, 350, 294,
1568 44, 263, 41, 41, 41, 41, 40, 41, 40, -36,
1569 -25, 509, -9, 41, 41, 357, 41, -7, -28, -71,
1570 274, -3, -21, 40, -25, 41 };
1571YYSTATIC YYCONST short YYFARDATA YYDEF[]={
1572
1573 1, -2, 2, 0, 0, 330, 6, 7, 8, 9,
1574 10, 11, 0, 0, 0, 0, 16, 17, 18, 0,
1575 0, 767, 0, 0, 24, 25, 26, 0, 28, 135,
1576 0, 266, 204, 0, 426, 0, 0, 773, 105, 830,
1577 92, 0, 426, 0, 83, 84, 85, 0, 0, 0,
1578 0, 0, 0, 57, 58, 0, 60, 108, 259, 382,
1579 0, 752, 753, 217, 426, 426, 139, 1, 0, 783,
1580 801, 819, 833, 19, 41, 20, 0, 0, 22, 42,
1581 43, 23, 29, 137, 0, 104, 38, 39, 36, 37,
1582 217, 184, 0, 379, 0, 386, 0, 0, 426, 389,
1583 389, 389, 389, 389, 389, 0, 0, 427, 428, 0,
1584 755, 0, 773, 809, 0, 93, 0, 0, 737, 738,
1585 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
1586 749, 750, 751, 0, 0, 33, 0, 0, 0, 0,
1587 0, 0, 663, 0, 0, 217, 0, 679, 680, 0,
1588 684, 0, 0, 544, 230, 546, 547, 548, 549, 0,
1589 484, 686, 687, 688, 689, 690, 691, 692, 693, 694,
1590 0, 699, 700, 701, 702, 703, 550, 0, 52, 54,
1591 55, 56, 59, 0, 381, 383, 384, 0, 61, 0,
1592 71, 0, 210, 211, 212, 217, 217, 215, 0, 218,
1593 219, 0, 0, 0, 0, 0, 5, 331, 0, 333,
1594 0, 0, 337, 338, 339, 340, 0, 342, 343, 344,
1595 345, 346, 0, 0, 0, 352, 0, 0, 329, 499,
1596 0, 0, 0, 0, 426, 0, 217, 0, 0, 0,
1597 217, 0, 0, 330, 0, 485, 486, 487, 488, 489,
1598 490, 491, 492, 493, 494, 495, 496, 497, 357, 364,
1599 0, 0, 0, 0, 21, 769, 768, 0, 29, 545,
1600 107, 0, 136, 552, 0, 555, 217, 0, 308, 267,
1601 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1602 278, 279, 280, 281, 282, 283, 284, 0, 0, 0,
1603 0, 0, 388, 0, 0, 0, 0, 400, 0, 0,
1604 401, 0, 402, 0, 403, 0, 404, 0, 405, 425,
1605 102, 429, 0, 754, 0, 0, 764, 772, 774, 775,
1606 776, 0, 778, 779, 780, 781, 782, 0, 0, 828,
1607 831, 832, 94, 713, 714, 715, 0, 0, 31, 0,
1608 0, 706, 668, 669, 670, 0, 0, 529, 0, 0,
1609 0, 0, 662, 0, 665, 225, 0, 0, 676, 678,
1610 681, 0, 683, 685, 0, 0, 0, 0, 0, 0,
1611 228, 229, 695, 696, 697, 698, 0, 53, 147, 109,
1612 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
1613 120, 121, 122, 123, 124, 0, 131, 132, 133, 0,
1614 0, 103, 0, 0, 72, 73, 0, 213, 214, 0,
1615 220, 221, 222, 223, 64, 68, 3, 140, 330, 0,
1616 0, 0, 168, 169, 170, 171, 172, 0, 0, 0,
1617 0, 178, 179, 0, 0, 233, 247, 809, 105, 4,
1618 332, 334, -2, 0, 341, 0, 0, 0, 217, 0,
1619 0, 358, 360, 0, 0, 0, 0, 0, 0, 374,
1620 375, 372, 500, 501, 502, 503, 498, 504, 505, 44,
1621 0, 0, 0, 507, 508, 509, 0, 512, 513, 514,
1622 515, 516, 0, 426, 0, 520, 522, 0, 361, 0,
1623 0, 12, 784, 0, 786, 787, 426, 0, 0, 426,
1624 794, 795, 0, 13, 802, 426, 804, 426, 806, 0,
1625 0, 14, 820, 0, 0, 0, 0, 826, 827, 15,
1626 834, 0, 0, 837, 838, 766, 770, 27, 30, 138,
1627 142, 0, 0, 0, 40, 0, 0, 289, 0, 185,
1628 186, 187, 188, 189, 190, 191, 0, 193, 194, 195,
1629 196, 197, 198, 0, 205, 385, 0, 0, 0, 393,
1630 0, 0, 0, 0, 0, 0, 0, 96, 757, 0,
1631 777, 799, 807, 810, 811, 812, 0, 0, 0, 0,
1632 0, 717, 722, 723, 34, 47, 666, 0, 704, 707,
1633 708, 0, 0, 0, 530, 531, 48, 49, 50, 51,
1634 664, 0, 675, 677, 682, 0, 0, 0, 0, 551,
1635 0, -2, 706, 0, 106, 154, 125, 126, 127, 128,
1636 129, 130, 0, 380, 62, 75, 69, 217, 0, 527,
1637 305, 306, -2, 0, 0, 139, 236, 250, 173, 174,
1638 819, 0, 217, 0, 0, 0, 217, 0, 0, 534,
1639 535, 537, 0, -2, 0, 0, 0, 0, 0, 354,
1640 0, 359, 365, 376, 0, 366, 367, 368, 373, 369,
1641 370, 371, 0, 0, 506, 0, -2, 0, 0, 0,
1642 0, 525, 526, 356, 0, 0, 0, 0, 0, 788,
1643 789, 792, 0, 0, 0, 0, 0, 0, 0, 821,
1644 0, 825, 0, 0, 0, 0, 426, 0, 553, 0,
1645 0, 260, 0, 0, 289, 0, 200, 556, 0, 387,
1646 0, 392, 389, 390, 389, 389, 389, 389, 389, 0,
1647 756, 0, 0, 0, 813, 814, 815, 816, 817, 818,
1648 829, 0, 724, 0, 75, 32, 0, 718, 0, 0,
1649 0, 667, 706, 710, 0, 0, 674, 0, 669, 540,
1650 541, 542, 0, 0, 224, 0, 0, 154, 149, 150,
1651 151, 152, 153, 0, 0, 78, 65, 0, 0, 0,
1652 529, 216, 164, 0, 0, 0, 0, 0, 0, 0,
1653 181, 0, 0, -2, 234, 235, 0, 248, 249, 808,
1654 335, 308, 260, 0, 347, 349, 350, 307, 0, 0,
1655 202, 0, 0, 0, 0, 0, 0, 518, -2, 521,
1656 522, 522, 362, 363, 785, 790, 0, 798, 793, 796,
1657 803, 805, 771, 797, 822, 823, 0, 0, 836, 0,
1658 141, 554, 0, 0, 0, 0, 0, 0, 285, 0,
1659 0, 288, 290, 291, 292, 293, 294, 295, 296, 297,
1660 298, 299, 0, 0, 0, 202, 0, 0, 262, 0,
1661 0, 0, 561, 562, 563, 564, 565, 566, 567, 568,
1662 569, 570, 571, 572, 0, 577, 578, 579, 580, 586,
1663 587, 588, 589, 590, 591, 592, 611, 611, 595, 611,
1664 613, 599, 601, 0, 603, 0, 605, 607, 0, 609,
1665 610, 264, 0, 391, 394, 395, 396, 397, 398, 399,
1666 0, 97, 98, 99, 100, 101, 759, 761, 800, 711,
1667 0, 0, 0, 716, 717, 0, 37, 35, 705, 709,
1668 671, 672, 532, -2, 543, 226, 148, 0, 158, 143,
1669 155, 134, 63, 74, 76, 77, 433, 0, 0, 0,
1670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1671 0, 0, 0, 426, 0, 527, -2, -2, 0, 0,
1672 165, 166, 237, 217, 217, 217, 217, 242, 243, 244,
1673 245, 167, 251, 217, 217, 217, 255, 256, 257, 258,
1674 175, 0, 0, 0, 182, 217, 231, 0, 536, 538,
1675 336, 0, 0, 353, 355, 0, 0, 0, 45, 46,
1676 510, 517, 0, 523, 524, 0, 824, 835, 769, 147,
1677 556, 309, 310, 311, 312, 289, 287, 0, 0, 0,
1678 183, 201, 192, 581, 0, 0, 0, 0, 0, 606,
1679 573, 574, 575, 576, 600, 593, 0, 594, 596, 597,
1680 614, 615, 616, 617, 618, 619, 620, 621, 622, 623,
1681 624, 0, 629, 630, 631, 632, 633, 637, 638, 639,
1682 640, 641, 642, 643, 644, 645, 647, 648, 649, 650,
1683 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
1684 661, 602, 604, 608, 199, 95, 758, 760, 0, 725,
1685 726, 729, 730, 0, 732, 0, 727, 728, 712, 719,
1686 78, 0, 0, 158, 157, 154, 0, 144, 145, 0,
1687 80, 81, 82, 0, 0, 0, 0, 0, 0, 0,
1688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1690 0, 0, 0, 0, 0, 0, 0, 0, 66, 75,
1691 70, 0, 0, 0, 0, 0, 528, 238, 239, 240,
1692 241, 252, 253, 254, 217, 0, 180, 0, 539, 348,
1693 0, 203, 430, 431, 432, 0, 0, 0, 0, 0,
1694 0, 0, 0, 0, 0, 0, 0, 0, 377, 378,
1695 519, 0, 765, 0, 0, 0, 300, 301, 302, 303,
1696 0, 582, 0, 0, 263, 0, 0, 0, 0, 0,
1697 0, 635, 636, 625, 626, 627, 628, 646, 763, 0,
1698 0, 0, 78, 673, 156, 159, 160, 0, 0, 86,
1699 87, 88, 0, 0, 0, 0, 0, 0, 0, 0,
1700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1703 0, 0, 0, 0, 0, 0, 424, 0, -2, -2,
1704 208, 209, 0, 0, 0, -2, 161, 0, 0, 0,
1705 0, 0, -2, 261, 286, 304, 583, 0, 0, 0,
1706 0, 0, 0, 598, 634, 762, 0, 0, 0, 0,
1707 0, 720, 0, 146, 0, 0, 0, 90, 434, 435,
1708 0, 0, 437, 438, 0, 439, 0, 406, 408, 0,
1709 407, 409, 0, 410, 0, 411, 0, 412, 0, 413,
1710 0, 418, 0, 419, 0, 420, 0, 421, 0, 0,
1711 0, 0, 0, 0, 0, 0, 0, 422, 0, 423,
1712 0, 67, 0, 0, 163, 0, 161, 0, 0, 162,
1713 0, 0, 0, 0, 585, 0, 559, 556, 0, 731,
1714 0, 0, 0, 736, 721, 0, 91, 89, 475, 436,
1715 478, 482, 459, 462, 465, 467, 469, 471, 465, 467,
1716 469, 471, 414, 0, 415, 0, 416, 0, 417, 0,
1717 469, 473, 206, 207, 0, 0, 202, -2, 791, 313,
1718 584, 0, 558, 560, 612, 0, 0, 0, 79, 0,
1719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1720 0, 0, 465, 467, 469, 471, 0, 0, 0, -2,
1721 246, 0, 0, 0, 733, 734, 735, 456, 476, 477,
1722 457, 479, 0, 481, 458, 483, 440, 460, 461, 441,
1723 463, 464, 442, 466, 443, 468, 444, 470, 445, 472,
1724 446, 447, 448, 449, 0, 0, 0, 0, 454, 455,
1725 474, 0, 0, 351, 265, 314, 315, 316, 317, 318,
1726 319, 320, 321, 322, 323, 324, 325, 326, 327, 0,
1727 0, 480, 450, 451, 452, 453, -2, 0, 0, 0,
1728 0, 0, 0, 557, 176, 217, 328, 0, 0, 0,
1729 0, 161, 0, -2, 0, 177 };
1730#ifdef YYRECOVER
1731YYSTATIC YYCONST short yyrecover[] = {
1732-1000
1733};
1734#endif
1735
1736/* SCCSWHAT( "@(#)yypars.c 3.1 88/11/16 22:00:49 " ) */
1737#line 3 "O:\\tfs\\cgm\\src\\Tools\\devdiv\\amd64\\yypars.c"
1738#if ! defined(YYAPI_PACKAGE)
1739/*
1740** YYAPI_TOKENNAME : name used for return value of yylex
1741** YYAPI_TOKENTYPE : type of the token
1742** YYAPI_TOKENEME(t) : the value of the token that the parser should see
1743** YYAPI_TOKENNONE : the representation when there is no token
1744** YYAPI_VALUENAME : the name of the value of the token
1745** YYAPI_VALUETYPE : the type of the value of the token (if null, then the value is derivable from the token itself)
1746** YYAPI_VALUEOF(v) : how to get the value of the token.
1747*/
1748#define YYAPI_TOKENNAME yychar
1749#define YYAPI_TOKENTYPE int
1750#define YYAPI_TOKENEME(t) (t)
1751#define YYAPI_TOKENNONE -1
1752#define YYAPI_TOKENSTR(t) (sprintf_s(yytokbuf, _countof(yytokbuf), "%d", t), yytokbuf)
1753#define YYAPI_VALUENAME yylval
1754#define YYAPI_VALUETYPE YYSTYPE
1755#define YYAPI_VALUEOF(v) (v)
1756#endif
1757#if ! defined(YYAPI_CALLAFTERYYLEX)
1758#define YYAPI_CALLAFTERYYLEX
1759#endif
1760
1761# define YYFLAG -1000
1762# define YYERROR goto yyerrlab
1763# define YYACCEPT return(0)
1764# define YYABORT return(1)
1765
1766#ifdef YYDEBUG /* RRR - 10/9/85 */
1767char yytokbuf[20];
1768# ifndef YYDBFLG
1769# define YYDBFLG (yydebug)
1770# endif
1771# define yyprintf(a, b, c, d) if (YYDBFLG) YYPRINT(a, b, c, d)
1772#else
1773# define yyprintf(a, b, c, d)
1774#endif
1775
1776#ifndef YYPRINT
1777#define YYPRINT printf
1778#endif
1779
1780/* parser for yacc output */
1781
1782#ifdef YYDUMP
1783int yydump = 1; /* 1 for dumping */
1784void yydumpinfo(void);
1785#endif
1786#ifdef YYDEBUG
1787YYSTATIC int yydebug = 0; /* 1 for debugging */
1788#endif
1789YYSTATIC YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
1790YYSTATIC short yys[YYMAXDEPTH]; /* the parse stack */
1791
1792#if ! defined(YYRECURSIVE)
1793YYSTATIC YYAPI_TOKENTYPE YYAPI_TOKENNAME = YYAPI_TOKENNONE;
1794#if defined(YYAPI_VALUETYPE)
1795// YYSTATIC YYAPI_VALUETYPE YYAPI_VALUENAME; FIX
1796#endif
1797YYSTATIC int yynerrs = 0; /* number of errors */
1798YYSTATIC short yyerrflag = 0; /* error recovery flag */
1799#endif
1800
1801#ifdef YYRECOVER
1802/*
1803** yyscpy : copy f onto t and return a ptr to the null terminator at the
1804** end of t.
1805*/
1806YYSTATIC char *yyscpy(register char*t, register char*f)
1807 {
1808 while(*t = *f++)
1809 t++;
1810 return(t); /* ptr to the null char */
1811 }
1812#endif
1813
1814#ifndef YYNEAR
1815#define YYNEAR
1816#endif
1817#ifndef YYPASCAL
1818#define YYPASCAL
1819#endif
1820#ifndef YYLOCAL
1821#define YYLOCAL
1822#endif
1823#if ! defined YYPARSER
1824#define YYPARSER yyparse
1825#endif
1826#if ! defined YYLEX
1827#define YYLEX yylex
1828#endif
1829
1830#if defined(YYRECURSIVE)
1831
1832 YYSTATIC YYAPI_TOKENTYPE YYAPI_TOKENNAME = YYAPI_TOKENNONE;
1833 #if defined(YYAPI_VALUETYPE)
1834 YYSTATIC YYAPI_VALUETYPE YYAPI_VALUENAME;
1835 #endif
1836 YYSTATIC int yynerrs = 0; /* number of errors */
1837 YYSTATIC short yyerrflag = 0; /* error recovery flag */
1838
1839 YYSTATIC short yyn;
1840 YYSTATIC short yystate = 0;
1841#ifdef _PREFAST_
1842#pragma warning(push)
1843#pragma warning(disable: 6200) // Index '-1' is out of valid index range...for non-stack buffer...
1844#endif
1845 YYSTATIC short *yyps= &yys[-1];
1846 YYSTATIC YYSTYPE *yypv= &yyv[-1];
1847#ifdef _PREFAST_
1848#pragma warning(pop)
1849#endif
1850 YYSTATIC short yyj;
1851 YYSTATIC short yym;
1852
1853#endif
1854
1855#pragma warning(disable:102)
1856YYLOCAL YYNEAR YYPASCAL YYPARSER()
1857{
1858#if ! defined(YYRECURSIVE)
1859
1860 register short yyn;
1861 short yystate, *yyps;
1862 YYSTYPE *yypv;
1863 short yyj, yym;
1864
1865 YYAPI_TOKENNAME = YYAPI_TOKENNONE;
1866 yystate = 0;
1867
1868#ifdef _PREFAST_
1869#pragma warning(push)
1870#pragma warning(disable:6200) // Index '-1' is out of valid index range...for non-stack buffer...
1871#endif
1872 yyps= &yys[-1];
1873 yypv= &yyv[-1];
1874#ifdef _PREFAST_
1875#pragma warning(pop)
1876#endif
1877
1878#endif
1879
1880#ifdef YYDUMP
1881 yydumpinfo();
1882#endif
1883 yystack: /* put a state and value onto the stack */
1884
1885#ifdef YYDEBUG
1886 if(YYAPI_TOKENNAME == YYAPI_TOKENNONE) {
1887 yyprintf( "state %d, token # '%d'\n", yystate, -1, 0 );
1888 }
1889 else {
1890 yyprintf( "state %d, token # '%s'\n", yystate, YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0 );
1891 }
1892#endif
1893 if( ++yyps > &yys[YYMAXDEPTH] ) {
1894 yyerror( "yacc stack overflow" );
1895 return(1);
1896 }
1897 *yyps = yystate;
1898 ++yypv;
1899
1900 *yypv = yyval;
1901
1902yynewstate:
1903
1904 yyn = YYPACT[yystate];
1905
1906 if( yyn <= YYFLAG ) { /* simple state, no lookahead */
1907 goto yydefault;
1908 }
1909 if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) { /* need a lookahead */
1910 YYAPI_TOKENNAME = YYLEX();
1911 YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
1912 }
1913 if( ((yyn += YYAPI_TOKENEME(YYAPI_TOKENNAME)) < 0) || (yyn >= YYLAST) ) {
1914 goto yydefault;
1915 }
1916 if( YYCHK[ yyn = YYACT[ yyn ] ] == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) { /* valid shift */
1917 yyval = YYAPI_VALUEOF(YYAPI_VALUENAME);
1918 yystate = yyn;
1919 yyprintf( "SHIFT: saw token '%s', now in state %4d\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), yystate, 0 );
1920 YYAPI_TOKENNAME = YYAPI_TOKENNONE;
1921 if( yyerrflag > 0 ) {
1922 --yyerrflag;
1923 }
1924 goto yystack;
1925 }
1926
1927 yydefault:
1928 /* default state action */
1929
1930 if( (yyn = YYDEF[yystate]) == -2 ) {
1931 register YYCONST short *yyxi;
1932
1933 if( YYAPI_TOKENNAME == YYAPI_TOKENNONE ) {
1934 YYAPI_TOKENNAME = YYLEX();
1935 YYAPI_CALLAFTERYYLEX(YYAPI_TOKENNAME);
1936 yyprintf("LOOKAHEAD: token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0);
1937 }
1938/*
1939** search exception table, we find a -1 followed by the current state.
1940** if we find one, we'll look through terminal,state pairs. if we find
1941** a terminal which matches the current one, we have a match.
1942** the exception table is when we have a reduce on a terminal.
1943*/
1944
1945#if YYOPTTIME
1946 yyxi = yyexca + yyexcaind[yystate];
1947 while(( *yyxi != YYAPI_TOKENEME(YYAPI_TOKENNAME) ) && ( *yyxi >= 0 )){
1948 yyxi += 2;
1949 }
1950#else
1951 for(yyxi = yyexca;
1952 (*yyxi != (-1)) || (yyxi[1] != yystate);
1953 yyxi += 2
1954 ) {
1955 ; /* VOID */
1956 }
1957
1958 while( *(yyxi += 2) >= 0 ){
1959 if( *yyxi == YYAPI_TOKENEME(YYAPI_TOKENNAME) ) {
1960 break;
1961 }
1962 }
1963#endif
1964 if( (yyn = yyxi[1]) < 0 ) {
1965 return(0); /* accept */
1966 }
1967 }
1968
1969 if( yyn == 0 ){ /* error */
1970 /* error ... attempt to resume parsing */
1971
1972 switch( yyerrflag ){
1973
1974 case 0: /* brand new error */
1975#ifdef YYRECOVER
1976 {
1977 register int i,j;
1978
1979 for(i = 0;
1980 (yyrecover[i] != -1000) && (yystate > yyrecover[i]);
1981 i += 3
1982 ) {
1983 ;
1984 }
1985 if(yystate == yyrecover[i]) {
1986 yyprintf("recovered, from state %d to state %d on token # %d\n",
1987 yystate,yyrecover[i+2],yyrecover[i+1]
1988 );
1989 j = yyrecover[i + 1];
1990 if(j < 0) {
1991 /*
1992 ** here we have one of the injection set, so we're not quite
1993 ** sure that the next valid thing will be a shift. so we'll
1994 ** count it as an error and continue.
1995 ** actually we're not absolutely sure that the next token
1996 ** we were supposed to get is the one when j > 0. for example,
1997 ** for(+) {;} error recovery with yyerrflag always set, stops
1998 ** after inserting one ; before the +. at the point of the +,
1999 ** we're pretty sure the guy wants a 'for' loop. without
2000 ** setting the flag, when we're almost absolutely sure, we'll
2001 ** give him one, since the only thing we can shift on this
2002 ** error is after finding an expression followed by a +
2003 */
2004 yyerrflag++;
2005 j = -j;
2006 }
2007 if(yyerrflag <= 1) { /* only on first insertion */
2008 yyrecerr(YYAPI_TOKENNAME, j); /* what was, what should be first */
2009 }
2010 yyval = yyeval(j);
2011 yystate = yyrecover[i + 2];
2012 goto yystack;
2013 }
2014 }
2015#endif
2016 yyerror("syntax error");
2017
2018 yyerrlab:
2019 ++yynerrs;
2020
2021 case 1:
2022 case 2: /* incompletely recovered error ... try again */
2023
2024 yyerrflag = 3;
2025
2026 /* find a state where "error" is a legal shift action */
2027
2028 while ( yyps >= yys ) {
2029 yyn = YYPACT[*yyps] + YYERRCODE;
2030 if( yyn>= 0 && yyn < YYLAST && YYCHK[YYACT[yyn]] == YYERRCODE ){
2031 yystate = YYACT[yyn]; /* simulate a shift of "error" */
2032 yyprintf( "SHIFT 'error': now in state %4d\n", yystate, 0, 0 );
2033 goto yystack;
2034 }
2035 yyn = YYPACT[*yyps];
2036
2037 /* the current yyps has no shift onn "error", pop stack */
2038
2039 yyprintf( "error recovery pops state %4d, uncovers %4d\n", *yyps, yyps[-1], 0 );
2040 --yyps;
2041 --yypv;
2042 }
2043
2044 /* there is no state on the stack with an error shift ... abort */
2045
2046 yyabort:
2047 return(1);
2048
2049
2050 case 3: /* no shift yet; clobber input char */
2051
2052 yyprintf( "error recovery discards token '%s'\n", YYAPI_TOKENSTR(YYAPI_TOKENNAME), 0, 0 );
2053
2054 if( YYAPI_TOKENEME(YYAPI_TOKENNAME) == 0 ) goto yyabort; /* don't discard EOF, quit */
2055 YYAPI_TOKENNAME = YYAPI_TOKENNONE;
2056 goto yynewstate; /* try again in the same state */
2057 }
2058 }
2059
2060 /* reduction by production yyn */
2061yyreduce:
2062 {
2063 register YYSTYPE *yypvt;
2064 yypvt = yypv;
2065 yyps -= YYR2[yyn];
2066 yypv -= YYR2[yyn];
2067 yyval = yypv[1];
2068 yyprintf("REDUCE: rule %4d, popped %2d tokens, uncovered state %4d, ",yyn, YYR2[yyn], *yyps);
2069 yym = yyn;
2070 yyn = YYR1[yyn]; /* consult goto table to find next state */
2071 yyj = YYPGO[yyn] + *yyps + 1;
2072 if( (yyj >= YYLAST) || (YYCHK[ yystate = YYACT[yyj] ] != -yyn) ) {
2073 yystate = YYACT[YYPGO[yyn]];
2074 }
2075 yyprintf("goto state %4d\n", yystate, 0, 0);
2076#ifdef YYDUMP
2077 yydumpinfo();
2078#endif
2079 switch(yym){
2080
2081case 3:
2082#line 189 "asmparse.y"
2083{ PASM->EndClass(); } break;
2084case 4:
2085#line 190 "asmparse.y"
2086{ PASM->EndNameSpace(); } break;
2087case 5:
2088#line 191 "asmparse.y"
2089{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
2090 { PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
2091 PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
2092 PASM->EndMethod(); } break;
2093case 12:
2094#line 201 "asmparse.y"
2095{ PASMM->EndAssembly(); } break;
2096case 13:
2097#line 202 "asmparse.y"
2098{ PASMM->EndAssembly(); } break;
2099case 14:
2100#line 203 "asmparse.y"
2101{ PASMM->EndComType(); } break;
2102case 15:
2103#line 204 "asmparse.y"
2104{ PASMM->EndManifestRes(); } break;
2105case 19:
2106#line 208 "asmparse.y"
2107{
2108#ifdef _PREFAST_
2109#pragma warning(push)
2110#pragma warning(disable:22011) // Suppress PREFast warning about integer overflow/underflow
2111#endif
2112 PASM->m_dwSubsystem = yypvt[-0].int32;
2113#ifdef _PREFAST_
2114#pragma warning(pop)
2115#endif
2116 } break;
2117case 20:
2118#line 218 "asmparse.y"
2119{ PASM->m_dwComImageFlags = yypvt[-0].int32; } break;
2120case 21:
2121#line 219 "asmparse.y"
2122{ PASM->m_dwFileAlignment = yypvt[-0].int32;
2123 if((yypvt[-0].int32 & (yypvt[-0].int32 - 1))||(yypvt[-0].int32 < 0x200)||(yypvt[-0].int32 > 0x10000))
2124 PASM->report->error("Invalid file alignment, must be power of 2 from 0x200 to 0x10000\n");} break;
2125case 22:
2126#line 222 "asmparse.y"
2127{ PASM->m_stBaseAddress = (ULONGLONG)(*(yypvt[-0].int64)); delete yypvt[-0].int64;
2128 if(PASM->m_stBaseAddress & 0xFFFF)
2129 PASM->report->error("Invalid image base, must be 0x10000-aligned\n");} break;
2130case 23:
2131#line 225 "asmparse.y"
2132{ PASM->m_stSizeOfStackReserve = (size_t)(*(yypvt[-0].int64)); delete yypvt[-0].int64; } break;
2133case 28:
2134#line 230 "asmparse.y"
2135{ PASM->m_fIsMscorlib = TRUE; } break;
2136case 31:
2137#line 237 "asmparse.y"
2138{ yyval.binstr = yypvt[-0].binstr; } break;
2139case 32:
2140#line 238 "asmparse.y"
2141{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
2142case 33:
2143#line 241 "asmparse.y"
2144{ LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLang)); } break;
2145case 34:
2146#line 242 "asmparse.y"
2147{ LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLang));
2148 LPCSTRToGuid(yypvt[-0].string,&(PASM->m_guidLangVendor));} break;
2149case 35:
2150#line 244 "asmparse.y"
2151{ LPCSTRToGuid(yypvt[-4].string,&(PASM->m_guidLang));
2152 LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidLangVendor));
2153 LPCSTRToGuid(yypvt[-2].string,&(PASM->m_guidDoc));} break;
2154case 36:
2155#line 249 "asmparse.y"
2156{ yyval.string = yypvt[-0].string; } break;
2157case 37:
2158#line 250 "asmparse.y"
2159{ yyval.string = yypvt[-0].string; } break;
2160case 38:
2161#line 253 "asmparse.y"
2162{ yyval.string = yypvt[-0].string; } break;
2163case 39:
2164#line 254 "asmparse.y"
2165{ yyval.string = yypvt[-0].string; } break;
2166case 40:
2167#line 255 "asmparse.y"
2168{ yyval.string = newStringWDel(yypvt[-2].string, '.', yypvt[-0].string); } break;
2169case 41:
2170#line 258 "asmparse.y"
2171{ yyval.int32 = yypvt[-0].int32; } break;
2172case 42:
2173#line 261 "asmparse.y"
2174{ yyval.int64 = yypvt[-0].int64; } break;
2175case 43:
2176#line 262 "asmparse.y"
2177{ yyval.int64 = neg ? new __int64(yypvt[-0].int32) : new __int64((unsigned)yypvt[-0].int32); } break;
2178case 44:
2179#line 265 "asmparse.y"
2180{ yyval.float64 = yypvt[-0].float64; } break;
2181case 45:
2182#line 266 "asmparse.y"
2183{ float f; *((__int32*) (&f)) = yypvt[-1].int32; yyval.float64 = new double(f); } break;
2184case 46:
2185#line 267 "asmparse.y"
2186{ yyval.float64 = (double*) yypvt[-1].int64; } break;
2187case 47:
2188#line 271 "asmparse.y"
2189{ PASM->AddTypeDef(yypvt[-2].binstr,yypvt[-0].string); } break;
2190case 48:
2191#line 272 "asmparse.y"
2192{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
2193case 49:
2194#line 273 "asmparse.y"
2195{ PASM->AddTypeDef(yypvt[-2].token,yypvt[-0].string); } break;
2196case 50:
2197#line 274 "asmparse.y"
2198{ yypvt[-2].cad->tkOwner = 0; PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
2199case 51:
2200#line 275 "asmparse.y"
2201{ PASM->AddTypeDef(yypvt[-2].cad,yypvt[-0].string); } break;
2202case 52:
2203#line 280 "asmparse.y"
2204{ DefineVar(yypvt[-0].string, NULL); } break;
2205case 53:
2206#line 281 "asmparse.y"
2207{ DefineVar(yypvt[-1].string, yypvt[-0].binstr); } break;
2208case 54:
2209#line 282 "asmparse.y"
2210{ UndefVar(yypvt[-0].string); } break;
2211case 55:
2212#line 283 "asmparse.y"
2213{ SkipToken = !IsVarDefined(yypvt[-0].string);
2214 IfEndif++;
2215 } break;
2216case 56:
2217#line 286 "asmparse.y"
2218{ SkipToken = IsVarDefined(yypvt[-0].string);
2219 IfEndif++;
2220 } break;
2221case 57:
2222#line 289 "asmparse.y"
2223{ if(IfEndif == 1) SkipToken = !SkipToken;} break;
2224case 58:
2225#line 290 "asmparse.y"
2226{ if(IfEndif == 0)
2227 PASM->report->error("Unmatched #endif\n");
2228 else IfEndif--;
2229 } break;
2230case 59:
2231#line 294 "asmparse.y"
2232{ _ASSERTE(!"yylex should have dealt with this"); } break;
2233case 60:
2234#line 295 "asmparse.y"
2235{ } break;
2236case 61:
2237#line 299 "asmparse.y"
2238{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-0].token, NULL); } break;
2239case 62:
2240#line 300 "asmparse.y"
2241{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].token, yypvt[-0].binstr); } break;
2242case 63:
2243#line 301 "asmparse.y"
2244{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-4].token, yypvt[-1].binstr); } break;
2245case 64:
2246#line 302 "asmparse.y"
2247{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
2248case 65:
2249#line 305 "asmparse.y"
2250{ yyval.cad = new CustomDescr(yypvt[-2].token, yypvt[-0].token, NULL); } break;
2251case 66:
2252#line 306 "asmparse.y"
2253{ yyval.cad = new CustomDescr(yypvt[-4].token, yypvt[-2].token, yypvt[-0].binstr); } break;
2254case 67:
2255#line 308 "asmparse.y"
2256{ yyval.cad = new CustomDescr(yypvt[-6].token, yypvt[-4].token, yypvt[-1].binstr); } break;
2257case 68:
2258#line 309 "asmparse.y"
2259{ yyval.cad = new CustomDescr(PASM->m_tkCurrentCVOwner, yypvt[-2].int32, yypvt[-1].binstr); } break;
2260case 69:
2261#line 312 "asmparse.y"
2262{ yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
2263case 70:
2264#line 316 "asmparse.y"
2265{ PASM->m_pCustomDescrList = NULL;
2266 PASM->m_tkCurrentCVOwner = yypvt[-4].token;
2267 yyval.int32 = yypvt[-2].token; bParsingByteArray = TRUE; } break;
2268case 71:
2269#line 321 "asmparse.y"
2270{ yyval.token = yypvt[-0].token; } break;
2271case 72:
2272#line 324 "asmparse.y"
2273{ yyval.token = yypvt[-0].token; } break;
2274case 73:
2275#line 325 "asmparse.y"
2276{ yyval.token = yypvt[-0].token; } break;
2277case 74:
2278#line 329 "asmparse.y"
2279{ yyval.binstr = yypvt[-1].binstr;
2280 yyval.binstr->appendInt16(nCustomBlobNVPairs);
2281 yyval.binstr->append(yypvt[-0].binstr);
2282 nCustomBlobNVPairs = 0; } break;
2283case 75:
2284#line 335 "asmparse.y"
2285{ yyval.binstr = new BinStr(); yyval.binstr->appendInt16(VAL16(0x0001)); } break;
2286case 76:
2287#line 336 "asmparse.y"
2288{ yyval.binstr = yypvt[-1].binstr;
2289 yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1); } break;
2290case 77:
2291#line 338 "asmparse.y"
2292{ yyval.binstr = yypvt[-1].binstr; } break;
2293case 78:
2294#line 341 "asmparse.y"
2295{ yyval.binstr = new BinStr(); } break;
2296case 79:
2297#line 343 "asmparse.y"
2298{ yyval.binstr = yypvt[-5].binstr; yyval.binstr->appendInt8(yypvt[-4].int32);
2299 yyval.binstr->append(yypvt[-3].binstr);
2300 AppendStringWithLength(yyval.binstr,yypvt[-2].string);
2301 yyval.binstr->appendFrom(yypvt[-0].binstr, (*(yypvt[-0].binstr->ptr()) == ELEMENT_TYPE_SZARRAY) ? 2 : 1);
2302 nCustomBlobNVPairs++; } break;
2303case 80:
2304#line 348 "asmparse.y"
2305{ yyval.binstr = yypvt[-1].binstr; } break;
2306case 81:
2307#line 351 "asmparse.y"
2308{ yyval.int32 = SERIALIZATION_TYPE_FIELD; } break;
2309case 82:
2310#line 352 "asmparse.y"
2311{ yyval.int32 = SERIALIZATION_TYPE_PROPERTY; } break;
2312case 83:
2313#line 355 "asmparse.y"
2314{ if(yypvt[-0].cad->tkOwner && !yypvt[-0].cad->tkInterfacePair)
2315 PASM->DefineCV(yypvt[-0].cad);
2316 else if(PASM->m_pCustomDescrList)
2317 PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad); } break;
2318case 84:
2319#line 359 "asmparse.y"
2320{ PASM->DefineCV(yypvt[-0].cad); } break;
2321case 85:
2322#line 360 "asmparse.y"
2323{ CustomDescr* pNew = new CustomDescr(yypvt[-0].tdd->m_pCA);
2324 if(pNew->tkOwner == 0) pNew->tkOwner = PASM->m_tkCurrentCVOwner;
2325 if(pNew->tkOwner)
2326 PASM->DefineCV(pNew);
2327 else if(PASM->m_pCustomDescrList)
2328 PASM->m_pCustomDescrList->PUSH(pNew); } break;
2329case 86:
2330#line 368 "asmparse.y"
2331{ yyval.binstr = yypvt[-0].binstr; } break;
2332case 87:
2333#line 369 "asmparse.y"
2334{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); } break;
2335case 88:
2336#line 370 "asmparse.y"
2337{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TAGGED_OBJECT); } break;
2338case 89:
2339#line 371 "asmparse.y"
2340{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
2341 AppendStringWithLength(yyval.binstr,yypvt[-0].string); } break;
2342case 90:
2343#line 373 "asmparse.y"
2344{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
2345 AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token)); } break;
2346case 91:
2347#line 375 "asmparse.y"
2348{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
2349case 92:
2350#line 380 "asmparse.y"
2351{ PASMM->SetModuleName(NULL); PASM->m_tkCurrentCVOwner=1; } break;
2352case 93:
2353#line 381 "asmparse.y"
2354{ PASMM->SetModuleName(yypvt[-0].string); PASM->m_tkCurrentCVOwner=1; } break;
2355case 94:
2356#line 382 "asmparse.y"
2357{ BinStr* pbs = new BinStr();
2358 unsigned L = (unsigned)strlen(yypvt[-0].string);
2359 memcpy((char*)(pbs->getBuff(L)),yypvt[-0].string,L);
2360 PASM->EmitImport(pbs); delete pbs;} break;
2361case 95:
2362#line 389 "asmparse.y"
2363{ /*PASM->SetDataSection(); PASM->EmitDataLabel($7);*/
2364 PASM->m_VTFList.PUSH(new VTFEntry((USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, yypvt[-0].string)); } break;
2365case 96:
2366#line 393 "asmparse.y"
2367{ yyval.int32 = 0; } break;
2368case 97:
2369#line 394 "asmparse.y"
2370{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_32BIT; } break;
2371case 98:
2372#line 395 "asmparse.y"
2373{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_64BIT; } break;
2374case 99:
2375#line 396 "asmparse.y"
2376{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED; } break;
2377case 100:
2378#line 397 "asmparse.y"
2379{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_CALL_MOST_DERIVED; } break;
2380case 101:
2381#line 398 "asmparse.y"
2382{ yyval.int32 = yypvt[-1].int32 | COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN; } break;
2383case 102:
2384#line 401 "asmparse.y"
2385{ PASM->m_pVTable = yypvt[-1].binstr; } break;
2386case 103:
2387#line 404 "asmparse.y"
2388{ bParsingByteArray = TRUE; } break;
2389case 104:
2390#line 408 "asmparse.y"
2391{ PASM->StartNameSpace(yypvt[-0].string); } break;
2392case 105:
2393#line 411 "asmparse.y"
2394{ newclass = TRUE; } break;
2395case 106:
2396#line 414 "asmparse.y"
2397{ if(yypvt[-0].typarlist) FixupConstraints();
2398 PASM->StartClass(yypvt[-1].string, yypvt[-2].classAttr, yypvt[-0].typarlist);
2399 TyParFixupList.RESET(false);
2400 newclass = FALSE;
2401 } break;
2402case 107:
2403#line 420 "asmparse.y"
2404{ PASM->AddClass(); } break;
2405case 108:
2406#line 423 "asmparse.y"
2407{ yyval.classAttr = (CorRegTypeAttr) 0; } break;
2408case 109:
2409#line 424 "asmparse.y"
2410{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdPublic); } break;
2411case 110:
2412#line 425 "asmparse.y"
2413{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdVisibilityMask) | tdNotPublic); } break;
2414case 111:
2415#line 426 "asmparse.y"
2416{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x80000000 | tdSealed); } break;
2417case 112:
2418#line 427 "asmparse.y"
2419{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | 0x40000000); } break;
2420case 113:
2421#line 428 "asmparse.y"
2422{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdInterface | tdAbstract); } break;
2423case 114:
2424#line 429 "asmparse.y"
2425{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSealed); } break;
2426case 115:
2427#line 430 "asmparse.y"
2428{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdAbstract); } break;
2429case 116:
2430#line 431 "asmparse.y"
2431{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdAutoLayout); } break;
2432case 117:
2433#line 432 "asmparse.y"
2434{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdSequentialLayout); } break;
2435case 118:
2436#line 433 "asmparse.y"
2437{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdLayoutMask) | tdExplicitLayout); } break;
2438case 119:
2439#line 434 "asmparse.y"
2440{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAnsiClass); } break;
2441case 120:
2442#line 435 "asmparse.y"
2443{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdUnicodeClass); } break;
2444case 121:
2445#line 436 "asmparse.y"
2446{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-1].classAttr & ~tdStringFormatMask) | tdAutoClass); } break;
2447case 122:
2448#line 437 "asmparse.y"
2449{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdImport); } break;
2450case 123:
2451#line 438 "asmparse.y"
2452{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSerializable); } break;
2453case 124:
2454#line 439 "asmparse.y"
2455{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdWindowsRuntime); } break;
2456case 125:
2457#line 440 "asmparse.y"
2458{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPublic); } break;
2459case 126:
2460#line 441 "asmparse.y"
2461{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedPrivate); } break;
2462case 127:
2463#line 442 "asmparse.y"
2464{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamily); } break;
2465case 128:
2466#line 443 "asmparse.y"
2467{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedAssembly); } break;
2468case 129:
2469#line 444 "asmparse.y"
2470{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamANDAssem); } break;
2471case 130:
2472#line 445 "asmparse.y"
2473{ yyval.classAttr = (CorRegTypeAttr) ((yypvt[-2].classAttr & ~tdVisibilityMask) | tdNestedFamORAssem); } break;
2474case 131:
2475#line 446 "asmparse.y"
2476{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdBeforeFieldInit); } break;
2477case 132:
2478#line 447 "asmparse.y"
2479{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr | tdSpecialName); } break;
2480case 133:
2481#line 448 "asmparse.y"
2482{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].classAttr); } break;
2483case 134:
2484#line 449 "asmparse.y"
2485{ yyval.classAttr = (CorRegTypeAttr) (yypvt[-1].int32); } break;
2486case 136:
2487#line 453 "asmparse.y"
2488{ PASM->m_crExtends = yypvt[-0].token; } break;
2489case 141:
2490#line 464 "asmparse.y"
2491{ PASM->AddToImplList(yypvt[-0].token); } break;
2492case 142:
2493#line 465 "asmparse.y"
2494{ PASM->AddToImplList(yypvt[-0].token); } break;
2495case 143:
2496#line 469 "asmparse.y"
2497{ yyval.binstr = new BinStr(); } break;
2498case 144:
2499#line 470 "asmparse.y"
2500{ yyval.binstr = yypvt[-0].binstr; } break;
2501case 145:
2502#line 473 "asmparse.y"
2503{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-0].token); } break;
2504case 146:
2505#line 474 "asmparse.y"
2506{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->appendInt32(yypvt[-0].token); } break;
2507case 147:
2508#line 477 "asmparse.y"
2509{ yyval.typarlist = NULL; PASM->m_TyParList = NULL;} break;
2510case 148:
2511#line 478 "asmparse.y"
2512{ yyval.typarlist = yypvt[-1].typarlist; PASM->m_TyParList = yypvt[-1].typarlist;} break;
2513case 149:
2514#line 481 "asmparse.y"
2515{ yyval.int32 = gpCovariant; } break;
2516case 150:
2517#line 482 "asmparse.y"
2518{ yyval.int32 = gpContravariant; } break;
2519case 151:
2520#line 483 "asmparse.y"
2521{ yyval.int32 = gpReferenceTypeConstraint; } break;
2522case 152:
2523#line 484 "asmparse.y"
2524{ yyval.int32 = gpNotNullableValueTypeConstraint; } break;
2525case 153:
2526#line 485 "asmparse.y"
2527{ yyval.int32 = gpDefaultConstructorConstraint; } break;
2528case 154:
2529#line 488 "asmparse.y"
2530{ yyval.int32 = 0; } break;
2531case 155:
2532#line 489 "asmparse.y"
2533{ yyval.int32 = yypvt[-1].int32 | yypvt[-0].int32; } break;
2534case 156:
2535#line 492 "asmparse.y"
2536{yyval.typarlist = new TyParList(yypvt[-3].int32, yypvt[-2].binstr, yypvt[-1].string, yypvt[-0].typarlist);} break;
2537case 157:
2538#line 493 "asmparse.y"
2539{yyval.typarlist = new TyParList(yypvt[-2].int32, NULL, yypvt[-1].string, yypvt[-0].typarlist);} break;
2540case 158:
2541#line 496 "asmparse.y"
2542{ yyval.typarlist = NULL; } break;
2543case 159:
2544#line 497 "asmparse.y"
2545{ yyval.typarlist = yypvt[-0].typarlist; } break;
2546case 160:
2547#line 500 "asmparse.y"
2548{ yyval.binstr = yypvt[-1].binstr; } break;
2549case 161:
2550#line 503 "asmparse.y"
2551{ yyval.int32= 0; } break;
2552case 162:
2553#line 504 "asmparse.y"
2554{ yyval.int32 = yypvt[-0].int32; } break;
2555case 163:
2556#line 507 "asmparse.y"
2557{ yyval.int32 = yypvt[-2].int32; } break;
2558case 164:
2559#line 511 "asmparse.y"
2560{ if(PASM->m_pCurMethod->m_ulLines[1] ==0)
2561 { PASM->m_pCurMethod->m_ulLines[1] = PASM->m_ulCurLine;
2562 PASM->m_pCurMethod->m_ulColumns[1]=PASM->m_ulCurColumn;}
2563 PASM->EndMethod(); } break;
2564case 165:
2565#line 515 "asmparse.y"
2566{ PASM->EndClass(); } break;
2567case 166:
2568#line 516 "asmparse.y"
2569{ PASM->EndEvent(); } break;
2570case 167:
2571#line 517 "asmparse.y"
2572{ PASM->EndProp(); } break;
2573case 173:
2574#line 523 "asmparse.y"
2575{ PASM->m_pCurClass->m_ulSize = yypvt[-0].int32; } break;
2576case 174:
2577#line 524 "asmparse.y"
2578{ PASM->m_pCurClass->m_ulPack = yypvt[-0].int32; } break;
2579case 175:
2580#line 525 "asmparse.y"
2581{ PASMM->EndComType(); } break;
2582case 176:
2583#line 527 "asmparse.y"
2584{ BinStr *sig1 = parser->MakeSig(yypvt[-7].int32, yypvt[-6].binstr, yypvt[-1].binstr);
2585 BinStr *sig2 = new BinStr(); sig2->append(sig1);
2586 PASM->AddMethodImpl(yypvt[-11].token,yypvt[-9].string,sig1,yypvt[-5].token,yypvt[-3].string,sig2);
2587 PASM->ResetArgNameList();
2588 } break;
2589case 177:
2590#line 533 "asmparse.y"
2591{ PASM->AddMethodImpl(yypvt[-17].token,yypvt[-15].string,
2592 (yypvt[-14].int32==0 ? parser->MakeSig(yypvt[-19].int32,yypvt[-18].binstr,yypvt[-12].binstr) :
2593 parser->MakeSig(yypvt[-19].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-18].binstr,yypvt[-12].binstr,yypvt[-14].int32)),
2594 yypvt[-6].token,yypvt[-4].string,
2595 (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
2596 parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32)));
2597 PASM->ResetArgNameList();
2598 } break;
2599case 180:
2600#line 543 "asmparse.y"
2601{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurClass->m_NumTyPars))
2602 PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[yypvt[-1].int32-1].CAList();
2603 else
2604 PASM->report->error("Type parameter index out of range\n");
2605 } break;
2606case 181:
2607#line 548 "asmparse.y"
2608{ int n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
2609 if(n >= 0)
2610 PASM->m_pCustomDescrList = PASM->m_pCurClass->m_TyPars[n].CAList();
2611 else
2612 PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
2613 } break;
2614case 182:
2615#line 554 "asmparse.y"
2616{ yypvt[-0].cad->tkInterfacePair = yypvt[-1].token;
2617 if(PASM->m_pCustomDescrList)
2618 PASM->m_pCustomDescrList->PUSH(yypvt[-0].cad);
2619 } break;
2620case 183:
2621#line 562 "asmparse.y"
2622{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
2623 PASM->AddField(yypvt[-2].string, yypvt[-3].binstr, yypvt[-4].fieldAttr, yypvt[-1].string, yypvt[-0].binstr, yypvt[-5].int32); } break;
2624case 184:
2625#line 566 "asmparse.y"
2626{ yyval.fieldAttr = (CorFieldAttr) 0; } break;
2627case 185:
2628#line 567 "asmparse.y"
2629{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdStatic); } break;
2630case 186:
2631#line 568 "asmparse.y"
2632{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPublic); } break;
2633case 187:
2634#line 569 "asmparse.y"
2635{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivate); } break;
2636case 188:
2637#line 570 "asmparse.y"
2638{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamily); } break;
2639case 189:
2640#line 571 "asmparse.y"
2641{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdInitOnly); } break;
2642case 190:
2643#line 572 "asmparse.y"
2644{ yyval.fieldAttr = yypvt[-1].fieldAttr; } break;
2645case 191:
2646#line 573 "asmparse.y"
2647{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdSpecialName); } break;
2648case 192:
2649#line 586 "asmparse.y"
2650{ PASM->m_pMarshal = yypvt[-1].binstr; } break;
2651case 193:
2652#line 587 "asmparse.y"
2653{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdAssembly); } break;
2654case 194:
2655#line 588 "asmparse.y"
2656{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamANDAssem); } break;
2657case 195:
2658#line 589 "asmparse.y"
2659{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdFamORAssem); } break;
2660case 196:
2661#line 590 "asmparse.y"
2662{ yyval.fieldAttr = (CorFieldAttr) ((yypvt[-1].fieldAttr & ~mdMemberAccessMask) | fdPrivateScope); } break;
2663case 197:
2664#line 591 "asmparse.y"
2665{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdLiteral); } break;
2666case 198:
2667#line 592 "asmparse.y"
2668{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].fieldAttr | fdNotSerialized); } break;
2669case 199:
2670#line 593 "asmparse.y"
2671{ yyval.fieldAttr = (CorFieldAttr) (yypvt[-1].int32); } break;
2672case 200:
2673#line 596 "asmparse.y"
2674{ yyval.string = 0; } break;
2675case 201:
2676#line 597 "asmparse.y"
2677{ yyval.string = yypvt[-0].string; } break;
2678case 202:
2679#line 600 "asmparse.y"
2680{ yyval.binstr = NULL; } break;
2681case 203:
2682#line 601 "asmparse.y"
2683{ yyval.binstr = yypvt[-0].binstr; } break;
2684case 204:
2685#line 604 "asmparse.y"
2686{ yyval.int32 = 0xFFFFFFFF; } break;
2687case 205:
2688#line 605 "asmparse.y"
2689{ yyval.int32 = yypvt[-1].int32; } break;
2690case 206:
2691#line 610 "asmparse.y"
2692{ PASM->ResetArgNameList();
2693 if (yypvt[-3].binstr == NULL)
2694 {
2695 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
2696 yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string, parser->MakeSig(yypvt[-8].int32|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr));
2697 }
2698 else
2699 {
2700 mdToken mr;
2701 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
2702 mr = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string,
2703 parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
2704 yyval.token = PASM->MakeMethodSpec(mr,
2705 parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
2706 }
2707 } break;
2708case 207:
2709#line 627 "asmparse.y"
2710{ PASM->ResetArgNameList();
2711 if((iCallConv)&&((yypvt[-8].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
2712 yyval.token = PASM->MakeMemberRef(yypvt[-6].token, yypvt[-4].string,
2713 parser->MakeSig(yypvt[-8].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-7].binstr, yypvt[-1].binstr, yypvt[-3].int32));
2714 } break;
2715case 208:
2716#line 633 "asmparse.y"
2717{ PASM->ResetArgNameList();
2718 if (yypvt[-3].binstr == NULL)
2719 {
2720 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
2721 yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr));
2722 }
2723 else
2724 {
2725 mdToken mr;
2726 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
2727 mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, corCountArgs(yypvt[-3].binstr)));
2728 yyval.token = PASM->MakeMethodSpec(mr,
2729 parser->MakeSig(IMAGE_CEE_CS_CALLCONV_INSTANTIATION, 0, yypvt[-3].binstr));
2730 }
2731 } break;
2732case 209:
2733#line 649 "asmparse.y"
2734{ PASM->ResetArgNameList();
2735 if((iCallConv)&&((yypvt[-6].int32 & iCallConv) != iCallConv)) parser->warn("'instance' added to method's calling convention\n");
2736 yyval.token = PASM->MakeMemberRef(mdTokenNil, yypvt[-4].string, parser->MakeSig(yypvt[-6].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC|iCallConv, yypvt[-5].binstr, yypvt[-1].binstr, yypvt[-3].int32));
2737 } break;
2738case 210:
2739#line 653 "asmparse.y"
2740{ yyval.token = yypvt[-0].token; } break;
2741case 211:
2742#line 654 "asmparse.y"
2743{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
2744case 212:
2745#line 655 "asmparse.y"
2746{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
2747case 213:
2748#line 658 "asmparse.y"
2749{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_HASTHIS); } break;
2750case 214:
2751#line 659 "asmparse.y"
2752{ yyval.int32 = (yypvt[-0].int32 | IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS); } break;
2753case 215:
2754#line 660 "asmparse.y"
2755{ yyval.int32 = yypvt[-0].int32; } break;
2756case 216:
2757#line 661 "asmparse.y"
2758{ yyval.int32 = yypvt[-1].int32; } break;
2759case 217:
2760#line 664 "asmparse.y"
2761{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
2762case 218:
2763#line 665 "asmparse.y"
2764{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_DEFAULT; } break;
2765case 219:
2766#line 666 "asmparse.y"
2767{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_VARARG; } break;
2768case 220:
2769#line 667 "asmparse.y"
2770{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_C; } break;
2771case 221:
2772#line 668 "asmparse.y"
2773{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_STDCALL; } break;
2774case 222:
2775#line 669 "asmparse.y"
2776{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_THISCALL; } break;
2777case 223:
2778#line 670 "asmparse.y"
2779{ yyval.int32 = IMAGE_CEE_CS_CALLCONV_FASTCALL; } break;
2780case 224:
2781#line 673 "asmparse.y"
2782{ yyval.token = yypvt[-1].int32; } break;
2783case 225:
2784#line 676 "asmparse.y"
2785{ yyval.token = yypvt[-0].token;
2786 PASM->delArgNameList(PASM->m_firstArgName);
2787 PASM->m_firstArgName = parser->m_ANSFirst.POP();
2788 PASM->m_lastArgName = parser->m_ANSLast.POP();
2789 PASM->SetMemberRefFixup(yypvt[-0].token,iOpcodeLen); } break;
2790case 226:
2791#line 682 "asmparse.y"
2792{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
2793 yyval.token = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
2794 PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
2795case 227:
2796#line 686 "asmparse.y"
2797{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
2798 yyval.token = PASM->MakeMemberRef(NULL, yypvt[-0].string, yypvt[-1].binstr);
2799 PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
2800case 228:
2801#line 689 "asmparse.y"
2802{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
2803 PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
2804case 229:
2805#line 691 "asmparse.y"
2806{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec;
2807 PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
2808case 230:
2809#line 693 "asmparse.y"
2810{ yyval.token = yypvt[-0].token;
2811 PASM->SetMemberRefFixup(yyval.token,iOpcodeLen); } break;
2812case 231:
2813#line 698 "asmparse.y"
2814{ PASM->ResetEvent(yypvt[-0].string, yypvt[-1].token, yypvt[-2].eventAttr); } break;
2815case 232:
2816#line 699 "asmparse.y"
2817{ PASM->ResetEvent(yypvt[-0].string, mdTypeRefNil, yypvt[-1].eventAttr); } break;
2818case 233:
2819#line 703 "asmparse.y"
2820{ yyval.eventAttr = (CorEventAttr) 0; } break;
2821case 234:
2822#line 704 "asmparse.y"
2823{ yyval.eventAttr = yypvt[-1].eventAttr; } break;
2824case 235:
2825#line 705 "asmparse.y"
2826{ yyval.eventAttr = (CorEventAttr) (yypvt[-1].eventAttr | evSpecialName); } break;
2827case 238:
2828#line 712 "asmparse.y"
2829{ PASM->SetEventMethod(0, yypvt[-0].token); } break;
2830case 239:
2831#line 713 "asmparse.y"
2832{ PASM->SetEventMethod(1, yypvt[-0].token); } break;
2833case 240:
2834#line 714 "asmparse.y"
2835{ PASM->SetEventMethod(2, yypvt[-0].token); } break;
2836case 241:
2837#line 715 "asmparse.y"
2838{ PASM->SetEventMethod(3, yypvt[-0].token); } break;
2839case 246:
2840#line 724 "asmparse.y"
2841{ PASM->ResetProp(yypvt[-4].string,
2842 parser->MakeSig((IMAGE_CEE_CS_CALLCONV_PROPERTY |
2843 (yypvt[-6].int32 & IMAGE_CEE_CS_CALLCONV_HASTHIS)),yypvt[-5].binstr,yypvt[-2].binstr), yypvt[-7].propAttr, yypvt[-0].binstr);} break;
2844case 247:
2845#line 729 "asmparse.y"
2846{ yyval.propAttr = (CorPropertyAttr) 0; } break;
2847case 248:
2848#line 730 "asmparse.y"
2849{ yyval.propAttr = yypvt[-1].propAttr; } break;
2850case 249:
2851#line 731 "asmparse.y"
2852{ yyval.propAttr = (CorPropertyAttr) (yypvt[-1].propAttr | prSpecialName); } break;
2853case 252:
2854#line 739 "asmparse.y"
2855{ PASM->SetPropMethod(0, yypvt[-0].token); } break;
2856case 253:
2857#line 740 "asmparse.y"
2858{ PASM->SetPropMethod(1, yypvt[-0].token); } break;
2859case 254:
2860#line 741 "asmparse.y"
2861{ PASM->SetPropMethod(2, yypvt[-0].token); } break;
2862case 259:
2863#line 749 "asmparse.y"
2864{ PASM->ResetForNextMethod();
2865 uMethodBeginLine = PASM->m_ulCurLine;
2866 uMethodBeginColumn=PASM->m_ulCurColumn;
2867 } break;
2868case 260:
2869#line 755 "asmparse.y"
2870{ yyval.binstr = NULL; } break;
2871case 261:
2872#line 756 "asmparse.y"
2873{ yyval.binstr = yypvt[-1].binstr; } break;
2874case 262:
2875#line 759 "asmparse.y"
2876{ yyval.binstr = yypvt[-0].binstr; } break;
2877case 263:
2878#line 760 "asmparse.y"
2879{ yyval.binstr = yypvt[-1].binstr; } break;
2880case 264:
2881#line 763 "asmparse.y"
2882{ bParsingByteArray = TRUE; } break;
2883case 265:
2884#line 767 "asmparse.y"
2885{ BinStr* sig;
2886 if (yypvt[-5].typarlist == NULL) sig = parser->MakeSig(yypvt[-10].int32, yypvt[-8].binstr, yypvt[-3].binstr);
2887 else {
2888 FixupTyPars(yypvt[-8].binstr);
2889 sig = parser->MakeSig(yypvt[-10].int32 | IMAGE_CEE_CS_CALLCONV_GENERIC, yypvt[-8].binstr, yypvt[-3].binstr, yypvt[-5].typarlist->Count());
2890 FixupConstraints();
2891 }
2892 PASM->StartMethod(yypvt[-6].string, sig, yypvt[-11].methAttr, yypvt[-7].binstr, yypvt[-9].int32, yypvt[-5].typarlist);
2893 TyParFixupList.RESET(false);
2894 PASM->SetImplAttr((USHORT)yypvt[-1].implAttr);
2895 PASM->m_pCurMethod->m_ulLines[0] = uMethodBeginLine;
2896 PASM->m_pCurMethod->m_ulColumns[0]=uMethodBeginColumn;
2897 } break;
2898case 266:
2899#line 782 "asmparse.y"
2900{ yyval.methAttr = (CorMethodAttr) 0; } break;
2901case 267:
2902#line 783 "asmparse.y"
2903{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdStatic); } break;
2904case 268:
2905#line 784 "asmparse.y"
2906{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPublic); } break;
2907case 269:
2908#line 785 "asmparse.y"
2909{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivate); } break;
2910case 270:
2911#line 786 "asmparse.y"
2912{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamily); } break;
2913case 271:
2914#line 787 "asmparse.y"
2915{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdFinal); } break;
2916case 272:
2917#line 788 "asmparse.y"
2918{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdSpecialName); } break;
2919case 273:
2920#line 789 "asmparse.y"
2921{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdVirtual); } break;
2922case 274:
2923#line 790 "asmparse.y"
2924{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdCheckAccessOnOverride); } break;
2925case 275:
2926#line 791 "asmparse.y"
2927{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdAbstract); } break;
2928case 276:
2929#line 792 "asmparse.y"
2930{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdAssem); } break;
2931case 277:
2932#line 793 "asmparse.y"
2933{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamANDAssem); } break;
2934case 278:
2935#line 794 "asmparse.y"
2936{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdFamORAssem); } break;
2937case 279:
2938#line 795 "asmparse.y"
2939{ yyval.methAttr = (CorMethodAttr) ((yypvt[-1].methAttr & ~mdMemberAccessMask) | mdPrivateScope); } break;
2940case 280:
2941#line 796 "asmparse.y"
2942{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdHideBySig); } break;
2943case 281:
2944#line 797 "asmparse.y"
2945{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdNewSlot); } break;
2946case 282:
2947#line 798 "asmparse.y"
2948{ yyval.methAttr = yypvt[-1].methAttr; } break;
2949case 283:
2950#line 799 "asmparse.y"
2951{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdUnmanagedExport); } break;
2952case 284:
2953#line 800 "asmparse.y"
2954{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].methAttr | mdRequireSecObject); } break;
2955case 285:
2956#line 801 "asmparse.y"
2957{ yyval.methAttr = (CorMethodAttr) (yypvt[-1].int32); } break;
2958case 286:
2959#line 803 "asmparse.y"
2960{ PASM->SetPinvoke(yypvt[-4].binstr,0,yypvt[-2].binstr,yypvt[-1].pinvAttr);
2961 yyval.methAttr = (CorMethodAttr) (yypvt[-7].methAttr | mdPinvokeImpl); } break;
2962case 287:
2963#line 806 "asmparse.y"
2964{ PASM->SetPinvoke(yypvt[-2].binstr,0,NULL,yypvt[-1].pinvAttr);
2965 yyval.methAttr = (CorMethodAttr) (yypvt[-5].methAttr | mdPinvokeImpl); } break;
2966case 288:
2967#line 809 "asmparse.y"
2968{ PASM->SetPinvoke(new BinStr(),0,NULL,yypvt[-1].pinvAttr);
2969 yyval.methAttr = (CorMethodAttr) (yypvt[-4].methAttr | mdPinvokeImpl); } break;
2970case 289:
2971#line 813 "asmparse.y"
2972{ yyval.pinvAttr = (CorPinvokeMap) 0; } break;
2973case 290:
2974#line 814 "asmparse.y"
2975{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmNoMangle); } break;
2976case 291:
2977#line 815 "asmparse.y"
2978{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAnsi); } break;
2979case 292:
2980#line 816 "asmparse.y"
2981{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetUnicode); } break;
2982case 293:
2983#line 817 "asmparse.y"
2984{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCharSetAuto); } break;
2985case 294:
2986#line 818 "asmparse.y"
2987{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmSupportsLastError); } break;
2988case 295:
2989#line 819 "asmparse.y"
2990{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvWinapi); } break;
2991case 296:
2992#line 820 "asmparse.y"
2993{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvCdecl); } break;
2994case 297:
2995#line 821 "asmparse.y"
2996{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvStdcall); } break;
2997case 298:
2998#line 822 "asmparse.y"
2999{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvThiscall); } break;
3000case 299:
3001#line 823 "asmparse.y"
3002{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].pinvAttr | pmCallConvFastcall); } break;
3003case 300:
3004#line 824 "asmparse.y"
3005{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitEnabled); } break;
3006case 301:
3007#line 825 "asmparse.y"
3008{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmBestFitDisabled); } break;
3009case 302:
3010#line 826 "asmparse.y"
3011{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharEnabled); } break;
3012case 303:
3013#line 827 "asmparse.y"
3014{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-3].pinvAttr | pmThrowOnUnmappableCharDisabled); } break;
3015case 304:
3016#line 828 "asmparse.y"
3017{ yyval.pinvAttr = (CorPinvokeMap) (yypvt[-1].int32); } break;
3018case 305:
3019#line 831 "asmparse.y"
3020{ yyval.string = newString(COR_CTOR_METHOD_NAME); } break;
3021case 306:
3022#line 832 "asmparse.y"
3023{ yyval.string = newString(COR_CCTOR_METHOD_NAME); } break;
3024case 307:
3025#line 833 "asmparse.y"
3026{ yyval.string = yypvt[-0].string; } break;
3027case 308:
3028#line 836 "asmparse.y"
3029{ yyval.int32 = 0; } break;
3030case 309:
3031#line 837 "asmparse.y"
3032{ yyval.int32 = yypvt[-3].int32 | pdIn; } break;
3033case 310:
3034#line 838 "asmparse.y"
3035{ yyval.int32 = yypvt[-3].int32 | pdOut; } break;
3036case 311:
3037#line 839 "asmparse.y"
3038{ yyval.int32 = yypvt[-3].int32 | pdOptional; } break;
3039case 312:
3040#line 840 "asmparse.y"
3041{ yyval.int32 = yypvt[-1].int32 + 1; } break;
3042case 313:
3043#line 843 "asmparse.y"
3044{ yyval.implAttr = (CorMethodImpl) (miIL | miManaged); } break;
3045case 314:
3046#line 844 "asmparse.y"
3047{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miNative); } break;
3048case 315:
3049#line 845 "asmparse.y"
3050{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miIL); } break;
3051case 316:
3052#line 846 "asmparse.y"
3053{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFF4) | miOPTIL); } break;
3054case 317:
3055#line 847 "asmparse.y"
3056{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miManaged); } break;
3057case 318:
3058#line 848 "asmparse.y"
3059{ yyval.implAttr = (CorMethodImpl) ((yypvt[-1].implAttr & 0xFFFB) | miUnmanaged); } break;
3060case 319:
3061#line 849 "asmparse.y"
3062{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miForwardRef); } break;
3063case 320:
3064#line 850 "asmparse.y"
3065{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miPreserveSig); } break;
3066case 321:
3067#line 851 "asmparse.y"
3068{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miRuntime); } break;
3069case 322:
3070#line 852 "asmparse.y"
3071{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miInternalCall); } break;
3072case 323:
3073#line 853 "asmparse.y"
3074{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miSynchronized); } break;
3075case 324:
3076#line 854 "asmparse.y"
3077{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoInlining); } break;
3078case 325:
3079#line 855 "asmparse.y"
3080{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveInlining); } break;
3081case 326:
3082#line 856 "asmparse.y"
3083{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miNoOptimization); } break;
3084case 327:
3085#line 857 "asmparse.y"
3086{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].implAttr | miAggressiveOptimization); } break;
3087case 328:
3088#line 858 "asmparse.y"
3089{ yyval.implAttr = (CorMethodImpl) (yypvt[-1].int32); } break;
3090case 329:
3091#line 861 "asmparse.y"
3092{ PASM->delArgNameList(PASM->m_firstArgName); PASM->m_firstArgName = NULL;PASM->m_lastArgName = NULL;
3093 } break;
3094case 332:
3095#line 869 "asmparse.y"
3096{ PASM->EmitByte(yypvt[-0].int32); } break;
3097case 333:
3098#line 870 "asmparse.y"
3099{ delete PASM->m_SEHD; PASM->m_SEHD = PASM->m_SEHDstack.POP(); } break;
3100case 334:
3101#line 871 "asmparse.y"
3102{ PASM->EmitMaxStack(yypvt[-0].int32); } break;
3103case 335:
3104#line 872 "asmparse.y"
3105{ PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
3106 } break;
3107case 336:
3108#line 874 "asmparse.y"
3109{ PASM->EmitZeroInit();
3110 PASM->EmitLocals(parser->MakeSig(IMAGE_CEE_CS_CALLCONV_LOCAL_SIG, 0, yypvt[-1].binstr));
3111 } break;
3112case 337:
3113#line 877 "asmparse.y"
3114{ PASM->EmitEntryPoint(); } break;
3115case 338:
3116#line 878 "asmparse.y"
3117{ PASM->EmitZeroInit(); } break;
3118case 341:
3119#line 881 "asmparse.y"
3120{ PASM->AddLabel(PASM->m_CurPC,yypvt[-1].string); /*PASM->EmitLabel($1);*/ } break;
3121case 347:
3122#line 887 "asmparse.y"
3123{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
3124 {
3125 PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-1].int32;
3126 PASM->m_pCurMethod->m_szExportAlias = NULL;
3127 if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
3128 if(PASM->m_pCurMethod->m_wVTSlot == 0) PASM->m_pCurMethod->m_wVTSlot = yypvt[-1].int32 + 0x8000;
3129 }
3130 else
3131 PASM->report->warn("Duplicate .export directive, ignored\n");
3132 } break;
3133case 348:
3134#line 897 "asmparse.y"
3135{ if(PASM->m_pCurMethod->m_dwExportOrdinal == 0xFFFFFFFF)
3136 {
3137 PASM->m_pCurMethod->m_dwExportOrdinal = yypvt[-3].int32;
3138 PASM->m_pCurMethod->m_szExportAlias = yypvt[-0].string;
3139 if(PASM->m_pCurMethod->m_wVTEntry == 0) PASM->m_pCurMethod->m_wVTEntry = 1;
3140 if(PASM->m_pCurMethod->m_wVTSlot == 0) PASM->m_pCurMethod->m_wVTSlot = yypvt[-3].int32 + 0x8000;
3141 }
3142 else
3143 PASM->report->warn("Duplicate .export directive, ignored\n");
3144 } break;
3145case 349:
3146#line 907 "asmparse.y"
3147{ PASM->m_pCurMethod->m_wVTEntry = (WORD)yypvt[-2].int32;
3148 PASM->m_pCurMethod->m_wVTSlot = (WORD)yypvt[-0].int32; } break;
3149case 350:
3150#line 910 "asmparse.y"
3151{ PASM->AddMethodImpl(yypvt[-2].token,yypvt[-0].string,NULL,NULL,NULL,NULL); } break;
3152case 351:
3153#line 913 "asmparse.y"
3154{ PASM->AddMethodImpl(yypvt[-6].token,yypvt[-4].string,
3155 (yypvt[-3].int32==0 ? parser->MakeSig(yypvt[-8].int32,yypvt[-7].binstr,yypvt[-1].binstr) :
3156 parser->MakeSig(yypvt[-8].int32| IMAGE_CEE_CS_CALLCONV_GENERIC,yypvt[-7].binstr,yypvt[-1].binstr,yypvt[-3].int32))
3157 ,NULL,NULL,NULL);
3158 PASM->ResetArgNameList();
3159 } break;
3160case 353:
3161#line 920 "asmparse.y"
3162{ if((yypvt[-1].int32 > 0) && (yypvt[-1].int32 <= (int)PASM->m_pCurMethod->m_NumTyPars))
3163 PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[yypvt[-1].int32-1].CAList();
3164 else
3165 PASM->report->error("Type parameter index out of range\n");
3166 } break;
3167case 354:
3168#line 925 "asmparse.y"
3169{ int n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
3170 if(n >= 0)
3171 PASM->m_pCustomDescrList = PASM->m_pCurMethod->m_TyPars[n].CAList();
3172 else
3173 PASM->report->error("Type parameter '%s' undefined\n",yypvt[-0].string);
3174 } break;
3175case 355:
3176#line 932 "asmparse.y"
3177{ if( yypvt[-2].int32 ) {
3178 ARG_NAME_LIST* pAN=PASM->findArg(PASM->m_pCurMethod->m_firstArgName, yypvt[-2].int32 - 1);
3179 if(pAN)
3180 {
3181 PASM->m_pCustomDescrList = &(pAN->CustDList);
3182 pAN->pValue = yypvt[-0].binstr;
3183 }
3184 else
3185 {
3186 PASM->m_pCustomDescrList = NULL;
3187 if(yypvt[-0].binstr) delete yypvt[-0].binstr;
3188 }
3189 } else {
3190 PASM->m_pCustomDescrList = &(PASM->m_pCurMethod->m_RetCustDList);
3191 PASM->m_pCurMethod->m_pRetValue = yypvt[-0].binstr;
3192 }
3193 PASM->m_tkCurrentCVOwner = 0;
3194 } break;
3195case 356:
3196#line 952 "asmparse.y"
3197{ PASM->m_pCurMethod->CloseScope(); } break;
3198case 357:
3199#line 955 "asmparse.y"
3200{ PASM->m_pCurMethod->OpenScope(); } break;
3201case 361:
3202#line 966 "asmparse.y"
3203{ PASM->m_SEHD->tryTo = PASM->m_CurPC; } break;
3204case 362:
3205#line 967 "asmparse.y"
3206{ PASM->SetTryLabels(yypvt[-2].string, yypvt[-0].string); } break;
3207case 363:
3208#line 968 "asmparse.y"
3209{ if(PASM->m_SEHD) {PASM->m_SEHD->tryFrom = yypvt[-2].int32;
3210 PASM->m_SEHD->tryTo = yypvt[-0].int32;} } break;
3211case 364:
3212#line 972 "asmparse.y"
3213{ PASM->NewSEHDescriptor();
3214 PASM->m_SEHD->tryFrom = PASM->m_CurPC; } break;
3215case 365:
3216#line 977 "asmparse.y"
3217{ PASM->EmitTry(); } break;
3218case 366:
3219#line 978 "asmparse.y"
3220{ PASM->EmitTry(); } break;
3221case 367:
3222#line 979 "asmparse.y"
3223{ PASM->EmitTry(); } break;
3224case 368:
3225#line 980 "asmparse.y"
3226{ PASM->EmitTry(); } break;
3227case 369:
3228#line 984 "asmparse.y"
3229{ PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
3230case 370:
3231#line 985 "asmparse.y"
3232{ PASM->SetFilterLabel(yypvt[-0].string);
3233 PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
3234case 371:
3235#line 987 "asmparse.y"
3236{ PASM->m_SEHD->sehFilter = yypvt[-0].int32;
3237 PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
3238case 372:
3239#line 991 "asmparse.y"
3240{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FILTER;
3241 PASM->m_SEHD->sehFilter = PASM->m_CurPC; } break;
3242case 373:
3243#line 995 "asmparse.y"
3244{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_NONE;
3245 PASM->SetCatchClass(yypvt[-0].token);
3246 PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
3247case 374:
3248#line 1000 "asmparse.y"
3249{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FINALLY;
3250 PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
3251case 375:
3252#line 1004 "asmparse.y"
3253{ PASM->m_SEHD->sehClause = COR_ILEXCEPTION_CLAUSE_FAULT;
3254 PASM->m_SEHD->sehHandler = PASM->m_CurPC; } break;
3255case 376:
3256#line 1008 "asmparse.y"
3257{ PASM->m_SEHD->sehHandlerTo = PASM->m_CurPC; } break;
3258case 377:
3259#line 1009 "asmparse.y"
3260{ PASM->SetHandlerLabels(yypvt[-2].string, yypvt[-0].string); } break;
3261case 378:
3262#line 1010 "asmparse.y"
3263{ PASM->m_SEHD->sehHandler = yypvt[-2].int32;
3264 PASM->m_SEHD->sehHandlerTo = yypvt[-0].int32; } break;
3265case 380:
3266#line 1018 "asmparse.y"
3267{ PASM->EmitDataLabel(yypvt[-1].string); } break;
3268case 382:
3269#line 1022 "asmparse.y"
3270{ PASM->SetDataSection(); } break;
3271case 383:
3272#line 1023 "asmparse.y"
3273{ PASM->SetTLSSection(); } break;
3274case 384:
3275#line 1024 "asmparse.y"
3276{ PASM->SetILSection(); } break;
3277case 389:
3278#line 1035 "asmparse.y"
3279{ yyval.int32 = 1; } break;
3280case 390:
3281#line 1036 "asmparse.y"
3282{ yyval.int32 = yypvt[-1].int32;
3283 if(yypvt[-1].int32 <= 0) { PASM->report->error("Illegal item count: %d\n",yypvt[-1].int32);
3284 if(!PASM->OnErrGo) yyval.int32 = 1; }} break;
3285case 391:
3286#line 1041 "asmparse.y"
3287{ PASM->EmitDataString(yypvt[-1].binstr); } break;
3288case 392:
3289#line 1042 "asmparse.y"
3290{ PASM->EmitDD(yypvt[-1].string); } break;
3291case 393:
3292#line 1043 "asmparse.y"
3293{ PASM->EmitData(yypvt[-1].binstr->ptr(),yypvt[-1].binstr->length()); } break;
3294case 394:
3295#line 1045 "asmparse.y"
3296{ float f = (float) (*yypvt[-2].float64); float* p = new (nothrow) float[yypvt[-0].int32];
3297 if(p != NULL) {
3298 for(int i=0; i < yypvt[-0].int32; i++) p[i] = f;
3299 PASM->EmitData(p, sizeof(float)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
3300 } else PASM->report->error("Out of memory emitting data block %d bytes\n",
3301 sizeof(float)*yypvt[-0].int32); } break;
3302case 395:
3303#line 1052 "asmparse.y"
3304{ double* p = new (nothrow) double[yypvt[-0].int32];
3305 if(p != NULL) {
3306 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].float64);
3307 PASM->EmitData(p, sizeof(double)*yypvt[-0].int32); delete yypvt[-2].float64; delete [] p;
3308 } else PASM->report->error("Out of memory emitting data block %d bytes\n",
3309 sizeof(double)*yypvt[-0].int32); } break;
3310case 396:
3311#line 1059 "asmparse.y"
3312{ __int64* p = new (nothrow) __int64[yypvt[-0].int32];
3313 if(p != NULL) {
3314 for(int i=0; i<yypvt[-0].int32; i++) p[i] = *(yypvt[-2].int64);
3315 PASM->EmitData(p, sizeof(__int64)*yypvt[-0].int32); delete yypvt[-2].int64; delete [] p;
3316 } else PASM->report->error("Out of memory emitting data block %d bytes\n",
3317 sizeof(__int64)*yypvt[-0].int32); } break;
3318case 397:
3319#line 1066 "asmparse.y"
3320{ __int32* p = new (nothrow) __int32[yypvt[-0].int32];
3321 if(p != NULL) {
3322 for(int i=0; i<yypvt[-0].int32; i++) p[i] = yypvt[-2].int32;
3323 PASM->EmitData(p, sizeof(__int32)*yypvt[-0].int32); delete [] p;
3324 } else PASM->report->error("Out of memory emitting data block %d bytes\n",
3325 sizeof(__int32)*yypvt[-0].int32); } break;
3326case 398:
3327#line 1073 "asmparse.y"
3328{ __int16 i = (__int16) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
3329 __int16* p = new (nothrow) __int16[yypvt[-0].int32];
3330 if(p != NULL) {
3331 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
3332 PASM->EmitData(p, sizeof(__int16)*yypvt[-0].int32); delete [] p;
3333 } else PASM->report->error("Out of memory emitting data block %d bytes\n",
3334 sizeof(__int16)*yypvt[-0].int32); } break;
3335case 399:
3336#line 1081 "asmparse.y"
3337{ __int8 i = (__int8) yypvt[-2].int32; FAIL_UNLESS(i == yypvt[-2].int32, ("Value %d too big\n", yypvt[-2].int32));
3338 __int8* p = new (nothrow) __int8[yypvt[-0].int32];
3339 if(p != NULL) {
3340 for(int j=0; j<yypvt[-0].int32; j++) p[j] = i;
3341 PASM->EmitData(p, sizeof(__int8)*yypvt[-0].int32); delete [] p;
3342 } else PASM->report->error("Out of memory emitting data block %d bytes\n",
3343 sizeof(__int8)*yypvt[-0].int32); } break;
3344case 400:
3345#line 1088 "asmparse.y"
3346{ PASM->EmitData(NULL, sizeof(float)*yypvt[-0].int32); } break;
3347case 401:
3348#line 1089 "asmparse.y"
3349{ PASM->EmitData(NULL, sizeof(double)*yypvt[-0].int32); } break;
3350case 402:
3351#line 1090 "asmparse.y"
3352{ PASM->EmitData(NULL, sizeof(__int64)*yypvt[-0].int32); } break;
3353case 403:
3354#line 1091 "asmparse.y"
3355{ PASM->EmitData(NULL, sizeof(__int32)*yypvt[-0].int32); } break;
3356case 404:
3357#line 1092 "asmparse.y"
3358{ PASM->EmitData(NULL, sizeof(__int16)*yypvt[-0].int32); } break;
3359case 405:
3360#line 1093 "asmparse.y"
3361{ PASM->EmitData(NULL, sizeof(__int8)*yypvt[-0].int32); } break;
3362case 406:
3363#line 1097 "asmparse.y"
3364{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
3365 float f = (float)(*yypvt[-1].float64);
3366 yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-1].float64; } break;
3367case 407:
3368#line 1100 "asmparse.y"
3369{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8);
3370 yyval.binstr->appendInt64((__int64 *)yypvt[-1].float64); delete yypvt[-1].float64; } break;
3371case 408:
3372#line 1102 "asmparse.y"
3373{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4);
3374 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
3375case 409:
3376#line 1104 "asmparse.y"
3377{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8);
3378 yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
3379case 410:
3380#line 1106 "asmparse.y"
3381{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8);
3382 yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
3383case 411:
3384#line 1108 "asmparse.y"
3385{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4);
3386 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
3387case 412:
3388#line 1110 "asmparse.y"
3389{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2);
3390 yyval.binstr->appendInt16(yypvt[-1].int32); } break;
3391case 413:
3392#line 1112 "asmparse.y"
3393{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1);
3394 yyval.binstr->appendInt8(yypvt[-1].int32); } break;
3395case 414:
3396#line 1114 "asmparse.y"
3397{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8);
3398 yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
3399case 415:
3400#line 1116 "asmparse.y"
3401{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
3402 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
3403case 416:
3404#line 1118 "asmparse.y"
3405{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
3406 yyval.binstr->appendInt16(yypvt[-1].int32); } break;
3407case 417:
3408#line 1120 "asmparse.y"
3409{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
3410 yyval.binstr->appendInt8(yypvt[-1].int32); } break;
3411case 418:
3412#line 1122 "asmparse.y"
3413{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8);
3414 yyval.binstr->appendInt64((__int64 *)yypvt[-1].int64); delete yypvt[-1].int64; } break;
3415case 419:
3416#line 1124 "asmparse.y"
3417{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4);
3418 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
3419case 420:
3420#line 1126 "asmparse.y"
3421{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2);
3422 yyval.binstr->appendInt16(yypvt[-1].int32); } break;
3423case 421:
3424#line 1128 "asmparse.y"
3425{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1);
3426 yyval.binstr->appendInt8(yypvt[-1].int32); } break;
3427case 422:
3428#line 1130 "asmparse.y"
3429{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR);
3430 yyval.binstr->appendInt16(yypvt[-1].int32); } break;
3431case 423:
3432#line 1132 "asmparse.y"
3433{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN);
3434 yyval.binstr->appendInt8(yypvt[-1].int32);} break;
3435case 424:
3436#line 1134 "asmparse.y"
3437{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
3438 yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-1].binstr;} break;
3439case 425:
3440#line 1138 "asmparse.y"
3441{ bParsingByteArray = TRUE; } break;
3442case 426:
3443#line 1141 "asmparse.y"
3444{ yyval.binstr = new BinStr(); } break;
3445case 427:
3446#line 1142 "asmparse.y"
3447{ yyval.binstr = yypvt[-0].binstr; } break;
3448case 428:
3449#line 1145 "asmparse.y"
3450{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = new BinStr(); yyval.binstr->appendInt8(i); } break;
3451case 429:
3452#line 1146 "asmparse.y"
3453{ __int8 i = (__int8) yypvt[-0].int32; yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(i); } break;
3454case 430:
3455#line 1150 "asmparse.y"
3456{ yyval.binstr = yypvt[-0].binstr; } break;
3457case 431:
3458#line 1151 "asmparse.y"
3459{ yyval.binstr = BinStrToUnicode(yypvt[-0].binstr,true); yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);} break;
3460case 432:
3461#line 1152 "asmparse.y"
3462{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CLASS);
3463 yyval.binstr->appendInt32(0); } break;
3464case 433:
3465#line 1157 "asmparse.y"
3466{ yyval.binstr = yypvt[-0].binstr; } break;
3467case 434:
3468#line 1158 "asmparse.y"
3469{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); yyval.binstr->appendInt8(0xFF); } break;
3470case 435:
3471#line 1159 "asmparse.y"
3472{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING);
3473 AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
3474case 436:
3475#line 1161 "asmparse.y"
3476{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
3477 AppendStringWithLength(yyval.binstr,yypvt[-1].string); delete [] yypvt[-1].string;} break;
3478case 437:
3479#line 1163 "asmparse.y"
3480{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE);
3481 AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-1].token));} break;
3482case 438:
3483#line 1165 "asmparse.y"
3484{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(SERIALIZATION_TYPE_TYPE); yyval.binstr->appendInt8(0xFF); } break;
3485case 439:
3486#line 1166 "asmparse.y"
3487{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);} break;
3488case 440:
3489#line 1168 "asmparse.y"
3490{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3491 yyval.binstr->insertInt8(ELEMENT_TYPE_R4);
3492 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3493case 441:
3494#line 1172 "asmparse.y"
3495{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3496 yyval.binstr->insertInt8(ELEMENT_TYPE_R8);
3497 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3498case 442:
3499#line 1176 "asmparse.y"
3500{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3501 yyval.binstr->insertInt8(ELEMENT_TYPE_I8);
3502 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3503case 443:
3504#line 1180 "asmparse.y"
3505{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3506 yyval.binstr->insertInt8(ELEMENT_TYPE_I4);
3507 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3508case 444:
3509#line 1184 "asmparse.y"
3510{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3511 yyval.binstr->insertInt8(ELEMENT_TYPE_I2);
3512 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3513case 445:
3514#line 1188 "asmparse.y"
3515{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3516 yyval.binstr->insertInt8(ELEMENT_TYPE_I1);
3517 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3518case 446:
3519#line 1192 "asmparse.y"
3520{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3521 yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
3522 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3523case 447:
3524#line 1196 "asmparse.y"
3525{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3526 yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
3527 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3528case 448:
3529#line 1200 "asmparse.y"
3530{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3531 yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
3532 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3533case 449:
3534#line 1204 "asmparse.y"
3535{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3536 yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
3537 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3538case 450:
3539#line 1208 "asmparse.y"
3540{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3541 yyval.binstr->insertInt8(ELEMENT_TYPE_U8);
3542 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3543case 451:
3544#line 1212 "asmparse.y"
3545{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3546 yyval.binstr->insertInt8(ELEMENT_TYPE_U4);
3547 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3548case 452:
3549#line 1216 "asmparse.y"
3550{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3551 yyval.binstr->insertInt8(ELEMENT_TYPE_U2);
3552 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3553case 453:
3554#line 1220 "asmparse.y"
3555{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3556 yyval.binstr->insertInt8(ELEMENT_TYPE_U1);
3557 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3558case 454:
3559#line 1224 "asmparse.y"
3560{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3561 yyval.binstr->insertInt8(ELEMENT_TYPE_CHAR);
3562 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3563case 455:
3564#line 1228 "asmparse.y"
3565{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3566 yyval.binstr->insertInt8(ELEMENT_TYPE_BOOLEAN);
3567 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3568case 456:
3569#line 1232 "asmparse.y"
3570{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3571 yyval.binstr->insertInt8(ELEMENT_TYPE_STRING);
3572 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3573case 457:
3574#line 1236 "asmparse.y"
3575{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3576 yyval.binstr->insertInt8(SERIALIZATION_TYPE_TYPE);
3577 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3578case 458:
3579#line 1240 "asmparse.y"
3580{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt32(yypvt[-4].int32);
3581 yyval.binstr->insertInt8(SERIALIZATION_TYPE_TAGGED_OBJECT);
3582 yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
3583case 459:
3584#line 1246 "asmparse.y"
3585{ yyval.binstr = new BinStr(); } break;
3586case 460:
3587#line 1247 "asmparse.y"
3588{ yyval.binstr = yypvt[-1].binstr;
3589 float f = (float) (*yypvt[-0].float64); yyval.binstr->appendInt32(*((__int32*)&f)); delete yypvt[-0].float64; } break;
3590case 461:
3591#line 1249 "asmparse.y"
3592{ yyval.binstr = yypvt[-1].binstr;
3593 yyval.binstr->appendInt32(yypvt[-0].int32); } break;
3594case 462:
3595#line 1253 "asmparse.y"
3596{ yyval.binstr = new BinStr(); } break;
3597case 463:
3598#line 1254 "asmparse.y"
3599{ yyval.binstr = yypvt[-1].binstr;
3600 yyval.binstr->appendInt64((__int64 *)yypvt[-0].float64); delete yypvt[-0].float64; } break;
3601case 464:
3602#line 1256 "asmparse.y"
3603{ yyval.binstr = yypvt[-1].binstr;
3604 yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
3605case 465:
3606#line 1260 "asmparse.y"
3607{ yyval.binstr = new BinStr(); } break;
3608case 466:
3609#line 1261 "asmparse.y"
3610{ yyval.binstr = yypvt[-1].binstr;
3611 yyval.binstr->appendInt64((__int64 *)yypvt[-0].int64); delete yypvt[-0].int64; } break;
3612case 467:
3613#line 1265 "asmparse.y"
3614{ yyval.binstr = new BinStr(); } break;
3615case 468:
3616#line 1266 "asmparse.y"
3617{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt32(yypvt[-0].int32);} break;
3618case 469:
3619#line 1269 "asmparse.y"
3620{ yyval.binstr = new BinStr(); } break;
3621case 470:
3622#line 1270 "asmparse.y"
3623{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt16(yypvt[-0].int32);} break;
3624case 471:
3625#line 1273 "asmparse.y"
3626{ yyval.binstr = new BinStr(); } break;
3627case 472:
3628#line 1274 "asmparse.y"
3629{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(yypvt[-0].int32); } break;
3630case 473:
3631#line 1277 "asmparse.y"
3632{ yyval.binstr = new BinStr(); } break;
3633case 474:
3634#line 1278 "asmparse.y"
3635{ yyval.binstr = yypvt[-1].binstr;
3636 yyval.binstr->appendInt8(yypvt[-0].int32);} break;
3637case 475:
3638#line 1282 "asmparse.y"
3639{ yyval.binstr = new BinStr(); } break;
3640case 476:
3641#line 1283 "asmparse.y"
3642{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
3643case 477:
3644#line 1284 "asmparse.y"
3645{ yyval.binstr = yypvt[-1].binstr;
3646 AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
3647case 478:
3648#line 1288 "asmparse.y"
3649{ yyval.binstr = new BinStr(); } break;
3650case 479:
3651#line 1289 "asmparse.y"
3652{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->appendInt8(0xFF); } break;
3653case 480:
3654#line 1290 "asmparse.y"
3655{ yyval.binstr = yypvt[-2].binstr;
3656 AppendStringWithLength(yyval.binstr,yypvt[-0].string); delete [] yypvt[-0].string;} break;
3657case 481:
3658#line 1292 "asmparse.y"
3659{ yyval.binstr = yypvt[-1].binstr;
3660 AppendStringWithLength(yyval.binstr,PASM->ReflectionNotation(yypvt[-0].token));} break;
3661case 482:
3662#line 1296 "asmparse.y"
3663{ yyval.binstr = new BinStr(); } break;
3664case 483:
3665#line 1297 "asmparse.y"
3666{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
3667case 484:
3668#line 1301 "asmparse.y"
3669{ parser->m_ANSFirst.PUSH(PASM->m_firstArgName);
3670 parser->m_ANSLast.PUSH(PASM->m_lastArgName);
3671 PASM->m_firstArgName = NULL;
3672 PASM->m_lastArgName = NULL; } break;
3673case 485:
3674#line 1307 "asmparse.y"
3675{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3676case 486:
3677#line 1310 "asmparse.y"
3678{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3679case 487:
3680#line 1313 "asmparse.y"
3681{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3682case 488:
3683#line 1316 "asmparse.y"
3684{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3685case 489:
3686#line 1319 "asmparse.y"
3687{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3688case 490:
3689#line 1322 "asmparse.y"
3690{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3691case 491:
3692#line 1325 "asmparse.y"
3693{ yyval.instr = SetupInstr(yypvt[-0].opcode);
3694 if((!PASM->OnErrGo)&&
3695 ((yypvt[-0].opcode == CEE_NEWOBJ)||
3696 (yypvt[-0].opcode == CEE_CALLVIRT)))
3697 iCallConv = IMAGE_CEE_CS_CALLCONV_HASTHIS;
3698 } break;
3699case 492:
3700#line 1333 "asmparse.y"
3701{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3702case 493:
3703#line 1336 "asmparse.y"
3704{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3705case 494:
3706#line 1339 "asmparse.y"
3707{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3708case 495:
3709#line 1342 "asmparse.y"
3710{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3711case 496:
3712#line 1345 "asmparse.y"
3713{ yyval.instr = SetupInstr(yypvt[-0].opcode); iOpcodeLen = PASM->OpcodeLen(yyval.instr); } break;
3714case 497:
3715#line 1348 "asmparse.y"
3716{ yyval.instr = SetupInstr(yypvt[-0].opcode); } break;
3717case 498:
3718#line 1351 "asmparse.y"
3719{ yyval.instr = yypvt[-1].instr; bParsingByteArray = TRUE; } break;
3720case 499:
3721#line 1355 "asmparse.y"
3722{ PASM->EmitOpcode(yypvt[-0].instr); } break;
3723case 500:
3724#line 1356 "asmparse.y"
3725{ PASM->EmitInstrVar(yypvt[-1].instr, yypvt[-0].int32); } break;
3726case 501:
3727#line 1357 "asmparse.y"
3728{ PASM->EmitInstrVarByName(yypvt[-1].instr, yypvt[-0].string); } break;
3729case 502:
3730#line 1358 "asmparse.y"
3731{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].int32); } break;
3732case 503:
3733#line 1359 "asmparse.y"
3734{ PASM->EmitInstrI8(yypvt[-1].instr, yypvt[-0].int64); } break;
3735case 504:
3736#line 1360 "asmparse.y"
3737{ PASM->EmitInstrR(yypvt[-1].instr, yypvt[-0].float64); delete (yypvt[-0].float64);} break;
3738case 505:
3739#line 1361 "asmparse.y"
3740{ double f = (double) (*yypvt[-0].int64); PASM->EmitInstrR(yypvt[-1].instr, &f); } break;
3741case 506:
3742#line 1362 "asmparse.y"
3743{ unsigned L = yypvt[-1].binstr->length();
3744 FAIL_UNLESS(L >= sizeof(float), ("%d hexbytes, must be at least %d\n",
3745 L,sizeof(float)));
3746 if(L < sizeof(float)) {YYERROR; }
3747 else {
3748 double f = (L >= sizeof(double)) ? *((double *)(yypvt[-1].binstr->ptr()))
3749 : (double)(*(float *)(yypvt[-1].binstr->ptr()));
3750 PASM->EmitInstrR(yypvt[-2].instr,&f); }
3751 delete yypvt[-1].binstr; } break;
3752case 507:
3753#line 1371 "asmparse.y"
3754{ PASM->EmitInstrBrOffset(yypvt[-1].instr, yypvt[-0].int32); } break;
3755case 508:
3756#line 1372 "asmparse.y"
3757{ PASM->EmitInstrBrTarget(yypvt[-1].instr, yypvt[-0].string); } break;
3758case 509:
3759#line 1374 "asmparse.y"
3760{ PASM->SetMemberRefFixup(yypvt[-0].token,PASM->OpcodeLen(yypvt[-1].instr));
3761 PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
3762 PASM->m_tkCurrentCVOwner = yypvt[-0].token;
3763 PASM->m_pCustomDescrList = NULL;
3764 iCallConv = 0;
3765 } break;
3766case 510:
3767#line 1381 "asmparse.y"
3768{ yypvt[-3].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
3769 mdToken mr = PASM->MakeMemberRef(yypvt[-2].token, yypvt[-0].string, yypvt[-3].binstr);
3770 PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-4].instr));
3771 PASM->EmitInstrI(yypvt[-4].instr,mr);
3772 PASM->m_tkCurrentCVOwner = mr;
3773 PASM->m_pCustomDescrList = NULL;
3774 } break;
3775case 511:
3776#line 1389 "asmparse.y"
3777{ yypvt[-1].binstr->insertInt8(IMAGE_CEE_CS_CALLCONV_FIELD);
3778 mdToken mr = PASM->MakeMemberRef(mdTokenNil, yypvt[-0].string, yypvt[-1].binstr);
3779 PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-2].instr));
3780 PASM->EmitInstrI(yypvt[-2].instr,mr);
3781 PASM->m_tkCurrentCVOwner = mr;
3782 PASM->m_pCustomDescrList = NULL;
3783 } break;
3784case 512:
3785#line 1396 "asmparse.y"
3786{ mdToken mr = yypvt[-0].token;
3787 PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
3788 PASM->EmitInstrI(yypvt[-1].instr,mr);
3789 PASM->m_tkCurrentCVOwner = mr;
3790 PASM->m_pCustomDescrList = NULL;
3791 } break;
3792case 513:
3793#line 1402 "asmparse.y"
3794{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
3795 PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
3796 PASM->EmitInstrI(yypvt[-1].instr,mr);
3797 PASM->m_tkCurrentCVOwner = mr;
3798 PASM->m_pCustomDescrList = NULL;
3799 } break;
3800case 514:
3801#line 1408 "asmparse.y"
3802{ mdToken mr = yypvt[-0].tdd->m_tkTypeSpec;
3803 PASM->SetMemberRefFixup(mr, PASM->OpcodeLen(yypvt[-1].instr));
3804 PASM->EmitInstrI(yypvt[-1].instr,mr);
3805 PASM->m_tkCurrentCVOwner = mr;
3806 PASM->m_pCustomDescrList = NULL;
3807 } break;
3808case 515:
3809#line 1414 "asmparse.y"
3810{ PASM->EmitInstrI(yypvt[-1].instr, yypvt[-0].token);
3811 PASM->m_tkCurrentCVOwner = yypvt[-0].token;
3812 PASM->m_pCustomDescrList = NULL;
3813 } break;
3814case 516:
3815#line 1418 "asmparse.y"
3816{ PASM->EmitInstrStringLiteral(yypvt[-1].instr, yypvt[-0].binstr,TRUE); } break;
3817case 517:
3818#line 1420 "asmparse.y"
3819{ PASM->EmitInstrStringLiteral(yypvt[-4].instr, yypvt[-1].binstr,FALSE); } break;
3820case 518:
3821#line 1422 "asmparse.y"
3822{ PASM->EmitInstrStringLiteral(yypvt[-3].instr, yypvt[-1].binstr,FALSE,TRUE); } break;
3823case 519:
3824#line 1424 "asmparse.y"
3825{ PASM->EmitInstrSig(yypvt[-5].instr, parser->MakeSig(yypvt[-4].int32, yypvt[-3].binstr, yypvt[-1].binstr));
3826 PASM->ResetArgNameList();
3827 } break;
3828case 520:
3829#line 1428 "asmparse.y"
3830{ PASM->EmitInstrI(yypvt[-1].instr,yypvt[-0].token);
3831 PASM->m_tkCurrentCVOwner = yypvt[-0].token;
3832 PASM->m_pCustomDescrList = NULL;
3833 iOpcodeLen = 0;
3834 } break;
3835case 521:
3836#line 1433 "asmparse.y"
3837{ PASM->EmitInstrSwitch(yypvt[-3].instr, yypvt[-1].labels); } break;
3838case 522:
3839#line 1436 "asmparse.y"
3840{ yyval.labels = 0; } break;
3841case 523:
3842#line 1437 "asmparse.y"
3843{ yyval.labels = new Labels(yypvt[-2].string, yypvt[-0].labels, TRUE); } break;
3844case 524:
3845#line 1438 "asmparse.y"
3846{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-2].int32, yypvt[-0].labels, FALSE); } break;
3847case 525:
3848#line 1439 "asmparse.y"
3849{ yyval.labels = new Labels(yypvt[-0].string, NULL, TRUE); } break;
3850case 526:
3851#line 1440 "asmparse.y"
3852{ yyval.labels = new Labels((char *)(UINT_PTR)yypvt[-0].int32, NULL, FALSE); } break;
3853case 527:
3854#line 1444 "asmparse.y"
3855{ yyval.binstr = NULL; } break;
3856case 528:
3857#line 1445 "asmparse.y"
3858{ yyval.binstr = yypvt[-1].binstr; } break;
3859case 529:
3860#line 1448 "asmparse.y"
3861{ yyval.binstr = NULL; } break;
3862case 530:
3863#line 1449 "asmparse.y"
3864{ yyval.binstr = yypvt[-0].binstr; } break;
3865case 531:
3866#line 1452 "asmparse.y"
3867{ yyval.binstr = yypvt[-0].binstr; } break;
3868case 532:
3869#line 1453 "asmparse.y"
3870{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
3871case 533:
3872#line 1457 "asmparse.y"
3873{ yyval.binstr = new BinStr(); } break;
3874case 534:
3875#line 1458 "asmparse.y"
3876{ yyval.binstr = yypvt[-0].binstr;} break;
3877case 535:
3878#line 1461 "asmparse.y"
3879{ yyval.binstr = yypvt[-0].binstr; } break;
3880case 536:
3881#line 1462 "asmparse.y"
3882{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
3883case 537:
3884#line 1465 "asmparse.y"
3885{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_SENTINEL); } break;
3886case 538:
3887#line 1466 "asmparse.y"
3888{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-1].binstr); PASM->addArgName(NULL, yypvt[-1].binstr, yypvt[-0].binstr, yypvt[-2].int32); } break;
3889case 539:
3890#line 1467 "asmparse.y"
3891{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-2].binstr); PASM->addArgName(yypvt[-0].string, yypvt[-2].binstr, yypvt[-1].binstr, yypvt[-3].int32);} break;
3892case 540:
3893#line 1471 "asmparse.y"
3894{ yyval.token = PASM->ResolveClassRef(PASM->GetAsmRef(yypvt[-2].string), yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
3895case 541:
3896#line 1472 "asmparse.y"
3897{ yyval.token = PASM->ResolveClassRef(yypvt[-2].token, yypvt[-0].string, NULL); } break;
3898case 542:
3899#line 1473 "asmparse.y"
3900{ yyval.token = PASM->ResolveClassRef(mdTokenNil, yypvt[-0].string, NULL); } break;
3901case 543:
3902#line 1474 "asmparse.y"
3903{ yyval.token = PASM->ResolveClassRef(PASM->GetModRef(yypvt[-2].string),yypvt[-0].string, NULL); delete[] yypvt[-2].string;} break;
3904case 544:
3905#line 1475 "asmparse.y"
3906{ yyval.token = PASM->ResolveClassRef(1,yypvt[-0].string,NULL); } break;
3907case 545:
3908#line 1476 "asmparse.y"
3909{ yyval.token = yypvt[-0].token; } break;
3910case 546:
3911#line 1477 "asmparse.y"
3912{ yyval.token = yypvt[-0].tdd->m_tkTypeSpec; } break;
3913case 547:
3914#line 1478 "asmparse.y"
3915{ if(PASM->m_pCurClass != NULL) yyval.token = PASM->m_pCurClass->m_cl;
3916 else { yyval.token = 0; PASM->report->error(".this outside class scope\n"); }
3917 } break;
3918case 548:
3919#line 1481 "asmparse.y"
3920{ if(PASM->m_pCurClass != NULL) {
3921 yyval.token = PASM->m_pCurClass->m_crExtends;
3922 if(RidFromToken(yyval.token) == 0)
3923 PASM->report->error(".base undefined\n");
3924 } else { yyval.token = 0; PASM->report->error(".base outside class scope\n"); }
3925 } break;
3926case 549:
3927#line 1487 "asmparse.y"
3928{ if(PASM->m_pCurClass != NULL) {
3929 if(PASM->m_pCurClass->m_pEncloser != NULL) yyval.token = PASM->m_pCurClass->m_pEncloser->m_cl;
3930 else { yyval.token = 0; PASM->report->error(".nester undefined\n"); }
3931 } else { yyval.token = 0; PASM->report->error(".nester outside class scope\n"); }
3932 } break;
3933case 550:
3934#line 1494 "asmparse.y"
3935{ yyval.string = yypvt[-0].string; } break;
3936case 551:
3937#line 1495 "asmparse.y"
3938{ yyval.string = newStringWDel(yypvt[-2].string, NESTING_SEP, yypvt[-0].string); } break;
3939case 552:
3940#line 1498 "asmparse.y"
3941{ yyval.token = yypvt[-0].token;} break;
3942case 553:
3943#line 1499 "asmparse.y"
3944{ yyval.token = PASM->GetAsmRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
3945case 554:
3946#line 1500 "asmparse.y"
3947{ yyval.token = PASM->GetModRef(yypvt[-1].string); delete[] yypvt[-1].string;} break;
3948case 555:
3949#line 1501 "asmparse.y"
3950{ yyval.token = PASM->ResolveTypeSpec(yypvt[-0].binstr); } break;
3951case 556:
3952#line 1505 "asmparse.y"
3953{ yyval.binstr = new BinStr(); } break;
3954case 557:
3955#line 1507 "asmparse.y"
3956{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
3957 corEmitInt(yyval.binstr,yypvt[-7].binstr->length()); yyval.binstr->append(yypvt[-7].binstr);
3958 corEmitInt(yyval.binstr,yypvt[-5].binstr->length()); yyval.binstr->append(yypvt[-5].binstr);
3959 corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
3960 corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr);
3961 PASM->report->warn("Deprecated 4-string form of custom marshaler, first two strings ignored\n");} break;
3962case 558:
3963#line 1514 "asmparse.y"
3964{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CUSTOMMARSHALER);
3965 corEmitInt(yyval.binstr,0);
3966 corEmitInt(yyval.binstr,0);
3967 corEmitInt(yyval.binstr,yypvt[-3].binstr->length()); yyval.binstr->append(yypvt[-3].binstr);
3968 corEmitInt(yyval.binstr,yypvt[-1].binstr->length()); yyval.binstr->append(yypvt[-1].binstr); } break;
3969case 559:
3970#line 1519 "asmparse.y"
3971{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDSYSSTRING);
3972 corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
3973case 560:
3974#line 1522 "asmparse.y"
3975{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FIXEDARRAY);
3976 corEmitInt(yyval.binstr,yypvt[-2].int32); yyval.binstr->append(yypvt[-0].binstr); } break;
3977case 561:
3978#line 1524 "asmparse.y"
3979{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANT);
3980 PASM->report->warn("Deprecated native type 'variant'\n"); } break;
3981case 562:
3982#line 1526 "asmparse.y"
3983{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_CURRENCY); } break;
3984case 563:
3985#line 1527 "asmparse.y"
3986{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SYSCHAR);
3987 PASM->report->warn("Deprecated native type 'syschar'\n"); } break;
3988case 564:
3989#line 1529 "asmparse.y"
3990{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VOID);
3991 PASM->report->warn("Deprecated native type 'void'\n"); } break;
3992case 565:
3993#line 1531 "asmparse.y"
3994{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BOOLEAN); } break;
3995case 566:
3996#line 1532 "asmparse.y"
3997{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I1); } break;
3998case 567:
3999#line 1533 "asmparse.y"
4000{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I2); } break;
4001case 568:
4002#line 1534 "asmparse.y"
4003{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I4); } break;
4004case 569:
4005#line 1535 "asmparse.y"
4006{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_I8); } break;
4007case 570:
4008#line 1536 "asmparse.y"
4009{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R4); } break;
4010case 571:
4011#line 1537 "asmparse.y"
4012{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_R8); } break;
4013case 572:
4014#line 1538 "asmparse.y"
4015{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ERROR); } break;
4016case 573:
4017#line 1539 "asmparse.y"
4018{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
4019case 574:
4020#line 1540 "asmparse.y"
4021{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
4022case 575:
4023#line 1541 "asmparse.y"
4024{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
4025case 576:
4026#line 1542 "asmparse.y"
4027{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
4028case 577:
4029#line 1543 "asmparse.y"
4030{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U1); } break;
4031case 578:
4032#line 1544 "asmparse.y"
4033{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U2); } break;
4034case 579:
4035#line 1545 "asmparse.y"
4036{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U4); } break;
4037case 580:
4038#line 1546 "asmparse.y"
4039{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_U8); } break;
4040case 581:
4041#line 1547 "asmparse.y"
4042{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(NATIVE_TYPE_PTR);
4043 PASM->report->warn("Deprecated native type '*'\n"); } break;
4044case 582:
4045#line 1549 "asmparse.y"
4046{ yyval.binstr = yypvt[-2].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
4047 yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY); } break;
4048case 583:
4049#line 1551 "asmparse.y"
4050{ yyval.binstr = yypvt[-3].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
4051 yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
4052 corEmitInt(yyval.binstr,0);
4053 corEmitInt(yyval.binstr,yypvt[-1].int32);
4054 corEmitInt(yyval.binstr,0); } break;
4055case 584:
4056#line 1556 "asmparse.y"
4057{ yyval.binstr = yypvt[-5].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
4058 yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
4059 corEmitInt(yyval.binstr,yypvt[-1].int32);
4060 corEmitInt(yyval.binstr,yypvt[-3].int32);
4061 corEmitInt(yyval.binstr,ntaSizeParamIndexSpecified); } break;
4062case 585:
4063#line 1561 "asmparse.y"
4064{ yyval.binstr = yypvt[-4].binstr; if(yyval.binstr->length()==0) yyval.binstr->appendInt8(NATIVE_TYPE_MAX);
4065 yyval.binstr->insertInt8(NATIVE_TYPE_ARRAY);
4066 corEmitInt(yyval.binstr,yypvt[-1].int32); } break;
4067case 586:
4068#line 1564 "asmparse.y"
4069{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DECIMAL);
4070 PASM->report->warn("Deprecated native type 'decimal'\n"); } break;
4071case 587:
4072#line 1566 "asmparse.y"
4073{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_DATE);
4074 PASM->report->warn("Deprecated native type 'date'\n"); } break;
4075case 588:
4076#line 1568 "asmparse.y"
4077{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BSTR); } break;
4078case 589:
4079#line 1569 "asmparse.y"
4080{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTR); } break;
4081case 590:
4082#line 1570 "asmparse.y"
4083{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPWSTR); } break;
4084case 591:
4085#line 1571 "asmparse.y"
4086{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPTSTR); } break;
4087case 592:
4088#line 1572 "asmparse.y"
4089{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_OBJECTREF);
4090 PASM->report->warn("Deprecated native type 'objectref'\n"); } break;
4091case 593:
4092#line 1574 "asmparse.y"
4093{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IUNKNOWN);
4094 if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
4095case 594:
4096#line 1576 "asmparse.y"
4097{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_IDISPATCH);
4098 if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
4099case 595:
4100#line 1578 "asmparse.y"
4101{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_STRUCT); } break;
4102case 596:
4103#line 1579 "asmparse.y"
4104{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INTF);
4105 if(yypvt[-0].int32 != -1) corEmitInt(yyval.binstr,yypvt[-0].int32); } break;
4106case 597:
4107#line 1581 "asmparse.y"
4108{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
4109 corEmitInt(yyval.binstr,yypvt[-0].int32);
4110 corEmitInt(yyval.binstr,0);} break;
4111case 598:
4112#line 1584 "asmparse.y"
4113{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_SAFEARRAY);
4114 corEmitInt(yyval.binstr,yypvt[-2].int32);
4115 corEmitInt(yyval.binstr,yypvt[-0].binstr->length()); yyval.binstr->append(yypvt[-0].binstr); } break;
4116case 599:
4117#line 1588 "asmparse.y"
4118{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_INT); } break;
4119case 600:
4120#line 1589 "asmparse.y"
4121{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
4122case 601:
4123#line 1590 "asmparse.y"
4124{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_UINT); } break;
4125case 602:
4126#line 1591 "asmparse.y"
4127{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_NESTEDSTRUCT);
4128 PASM->report->warn("Deprecated native type 'nested struct'\n"); } break;
4129case 603:
4130#line 1593 "asmparse.y"
4131{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_BYVALSTR); } break;
4132case 604:
4133#line 1594 "asmparse.y"
4134{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ANSIBSTR); } break;
4135case 605:
4136#line 1595 "asmparse.y"
4137{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_TBSTR); } break;
4138case 606:
4139#line 1596 "asmparse.y"
4140{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_VARIANTBOOL); } break;
4141case 607:
4142#line 1597 "asmparse.y"
4143{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_FUNC); } break;
4144case 608:
4145#line 1598 "asmparse.y"
4146{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_ASANY); } break;
4147case 609:
4148#line 1599 "asmparse.y"
4149{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(NATIVE_TYPE_LPSTRUCT); } break;
4150case 610:
4151#line 1600 "asmparse.y"
4152{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
4153case 611:
4154#line 1603 "asmparse.y"
4155{ yyval.int32 = -1; } break;
4156case 612:
4157#line 1604 "asmparse.y"
4158{ yyval.int32 = yypvt[-1].int32; } break;
4159case 613:
4160#line 1607 "asmparse.y"
4161{ yyval.int32 = VT_EMPTY; } break;
4162case 614:
4163#line 1608 "asmparse.y"
4164{ yyval.int32 = VT_NULL; } break;
4165case 615:
4166#line 1609 "asmparse.y"
4167{ yyval.int32 = VT_VARIANT; } break;
4168case 616:
4169#line 1610 "asmparse.y"
4170{ yyval.int32 = VT_CY; } break;
4171case 617:
4172#line 1611 "asmparse.y"
4173{ yyval.int32 = VT_VOID; } break;
4174case 618:
4175#line 1612 "asmparse.y"
4176{ yyval.int32 = VT_BOOL; } break;
4177case 619:
4178#line 1613 "asmparse.y"
4179{ yyval.int32 = VT_I1; } break;
4180case 620:
4181#line 1614 "asmparse.y"
4182{ yyval.int32 = VT_I2; } break;
4183case 621:
4184#line 1615 "asmparse.y"
4185{ yyval.int32 = VT_I4; } break;
4186case 622:
4187#line 1616 "asmparse.y"
4188{ yyval.int32 = VT_I8; } break;
4189case 623:
4190#line 1617 "asmparse.y"
4191{ yyval.int32 = VT_R4; } break;
4192case 624:
4193#line 1618 "asmparse.y"
4194{ yyval.int32 = VT_R8; } break;
4195case 625:
4196#line 1619 "asmparse.y"
4197{ yyval.int32 = VT_UI1; } break;
4198case 626:
4199#line 1620 "asmparse.y"
4200{ yyval.int32 = VT_UI2; } break;
4201case 627:
4202#line 1621 "asmparse.y"
4203{ yyval.int32 = VT_UI4; } break;
4204case 628:
4205#line 1622 "asmparse.y"
4206{ yyval.int32 = VT_UI8; } break;
4207case 629:
4208#line 1623 "asmparse.y"
4209{ yyval.int32 = VT_UI1; } break;
4210case 630:
4211#line 1624 "asmparse.y"
4212{ yyval.int32 = VT_UI2; } break;
4213case 631:
4214#line 1625 "asmparse.y"
4215{ yyval.int32 = VT_UI4; } break;
4216case 632:
4217#line 1626 "asmparse.y"
4218{ yyval.int32 = VT_UI8; } break;
4219case 633:
4220#line 1627 "asmparse.y"
4221{ yyval.int32 = VT_PTR; } break;
4222case 634:
4223#line 1628 "asmparse.y"
4224{ yyval.int32 = yypvt[-2].int32 | VT_ARRAY; } break;
4225case 635:
4226#line 1629 "asmparse.y"
4227{ yyval.int32 = yypvt[-1].int32 | VT_VECTOR; } break;
4228case 636:
4229#line 1630 "asmparse.y"
4230{ yyval.int32 = yypvt[-1].int32 | VT_BYREF; } break;
4231case 637:
4232#line 1631 "asmparse.y"
4233{ yyval.int32 = VT_DECIMAL; } break;
4234case 638:
4235#line 1632 "asmparse.y"
4236{ yyval.int32 = VT_DATE; } break;
4237case 639:
4238#line 1633 "asmparse.y"
4239{ yyval.int32 = VT_BSTR; } break;
4240case 640:
4241#line 1634 "asmparse.y"
4242{ yyval.int32 = VT_LPSTR; } break;
4243case 641:
4244#line 1635 "asmparse.y"
4245{ yyval.int32 = VT_LPWSTR; } break;
4246case 642:
4247#line 1636 "asmparse.y"
4248{ yyval.int32 = VT_UNKNOWN; } break;
4249case 643:
4250#line 1637 "asmparse.y"
4251{ yyval.int32 = VT_DISPATCH; } break;
4252case 644:
4253#line 1638 "asmparse.y"
4254{ yyval.int32 = VT_SAFEARRAY; } break;
4255case 645:
4256#line 1639 "asmparse.y"
4257{ yyval.int32 = VT_INT; } break;
4258case 646:
4259#line 1640 "asmparse.y"
4260{ yyval.int32 = VT_UINT; } break;
4261case 647:
4262#line 1641 "asmparse.y"
4263{ yyval.int32 = VT_UINT; } break;
4264case 648:
4265#line 1642 "asmparse.y"
4266{ yyval.int32 = VT_ERROR; } break;
4267case 649:
4268#line 1643 "asmparse.y"
4269{ yyval.int32 = VT_HRESULT; } break;
4270case 650:
4271#line 1644 "asmparse.y"
4272{ yyval.int32 = VT_CARRAY; } break;
4273case 651:
4274#line 1645 "asmparse.y"
4275{ yyval.int32 = VT_USERDEFINED; } break;
4276case 652:
4277#line 1646 "asmparse.y"
4278{ yyval.int32 = VT_RECORD; } break;
4279case 653:
4280#line 1647 "asmparse.y"
4281{ yyval.int32 = VT_FILETIME; } break;
4282case 654:
4283#line 1648 "asmparse.y"
4284{ yyval.int32 = VT_BLOB; } break;
4285case 655:
4286#line 1649 "asmparse.y"
4287{ yyval.int32 = VT_STREAM; } break;
4288case 656:
4289#line 1650 "asmparse.y"
4290{ yyval.int32 = VT_STORAGE; } break;
4291case 657:
4292#line 1651 "asmparse.y"
4293{ yyval.int32 = VT_STREAMED_OBJECT; } break;
4294case 658:
4295#line 1652 "asmparse.y"
4296{ yyval.int32 = VT_STORED_OBJECT; } break;
4297case 659:
4298#line 1653 "asmparse.y"
4299{ yyval.int32 = VT_BLOB_OBJECT; } break;
4300case 660:
4301#line 1654 "asmparse.y"
4302{ yyval.int32 = VT_CF; } break;
4303case 661:
4304#line 1655 "asmparse.y"
4305{ yyval.int32 = VT_CLSID; } break;
4306case 662:
4307#line 1659 "asmparse.y"
4308{ if(yypvt[-0].token == PASM->m_tkSysString)
4309 { yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); }
4310 else if(yypvt[-0].token == PASM->m_tkSysObject)
4311 { yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); }
4312 else
4313 yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CLASS, yypvt[-0].token); } break;
4314case 663:
4315#line 1665 "asmparse.y"
4316{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_OBJECT); } break;
4317case 664:
4318#line 1666 "asmparse.y"
4319{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
4320case 665:
4321#line 1667 "asmparse.y"
4322{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_VALUETYPE, yypvt[-0].token); } break;
4323case 666:
4324#line 1668 "asmparse.y"
4325{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SZARRAY); } break;
4326case 667:
4327#line 1669 "asmparse.y"
4328{ yyval.binstr = parser->MakeTypeArray(ELEMENT_TYPE_ARRAY, yypvt[-3].binstr, yypvt[-1].binstr); } break;
4329case 668:
4330#line 1670 "asmparse.y"
4331{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_BYREF); } break;
4332case 669:
4333#line 1671 "asmparse.y"
4334{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PTR); } break;
4335case 670:
4336#line 1672 "asmparse.y"
4337{ yyval.binstr = yypvt[-1].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_PINNED); } break;
4338case 671:
4339#line 1673 "asmparse.y"
4340{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_REQD, yypvt[-1].token);
4341 yyval.binstr->append(yypvt[-4].binstr); } break;
4342case 672:
4343#line 1675 "asmparse.y"
4344{ yyval.binstr = parser->MakeTypeClass(ELEMENT_TYPE_CMOD_OPT, yypvt[-1].token);
4345 yyval.binstr->append(yypvt[-4].binstr); } break;
4346case 673:
4347#line 1678 "asmparse.y"
4348{ yyval.binstr = parser->MakeSig(yypvt[-5].int32, yypvt[-4].binstr, yypvt[-1].binstr);
4349 yyval.binstr->insertInt8(ELEMENT_TYPE_FNPTR);
4350 PASM->delArgNameList(PASM->m_firstArgName);
4351 PASM->m_firstArgName = parser->m_ANSFirst.POP();
4352 PASM->m_lastArgName = parser->m_ANSLast.POP();
4353 } break;
4354case 674:
4355#line 1684 "asmparse.y"
4356{ if(yypvt[-1].binstr == NULL) yyval.binstr = yypvt[-3].binstr;
4357 else {
4358 yyval.binstr = new BinStr();
4359 yyval.binstr->appendInt8(ELEMENT_TYPE_GENERICINST);
4360 yyval.binstr->append(yypvt[-3].binstr);
4361 corEmitInt(yyval.binstr, corCountArgs(yypvt[-1].binstr));
4362 yyval.binstr->append(yypvt[-1].binstr); delete yypvt[-3].binstr; delete yypvt[-1].binstr; }} break;
4363case 675:
4364#line 1691 "asmparse.y"
4365{ //if(PASM->m_pCurMethod) {
4366 // if(($3 < 0)||((DWORD)$3 >= PASM->m_pCurMethod->m_NumTyPars))
4367 // PASM->report->error("Invalid method type parameter '%d'\n",$3);
4368 yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_MVAR); corEmitInt(yyval.binstr, yypvt[-0].int32);
4369 //} else PASM->report->error("Method type parameter '%d' outside method scope\n",$3);
4370 } break;
4371case 676:
4372#line 1697 "asmparse.y"
4373{ //if(PASM->m_pCurClass) {
4374 // if(($2 < 0)||((DWORD)$2 >= PASM->m_pCurClass->m_NumTyPars))
4375 // PASM->report->error("Invalid type parameter '%d'\n",$2);
4376 yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VAR); corEmitInt(yyval.binstr, yypvt[-0].int32);
4377 //} else PASM->report->error("Type parameter '%d' outside class scope\n",$2);
4378 } break;
4379case 677:
4380#line 1703 "asmparse.y"
4381{ int eltype = ELEMENT_TYPE_MVAR;
4382 int n=-1;
4383 if(PASM->m_pCurMethod) n = PASM->m_pCurMethod->FindTyPar(yypvt[-0].string);
4384 else {
4385 if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
4386 if(n == -1)
4387 { n = TyParFixupList.COUNT();
4388 TyParFixupList.PUSH(yypvt[-0].string);
4389 eltype = ELEMENT_TYPE_MVARFIXUP;
4390 }
4391 }
4392 if(n == -1) { PASM->report->error("Invalid method type parameter '%s'\n",yypvt[-0].string);
4393 n = 0x1FFFFFFF; }
4394 yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n);
4395 } break;
4396case 678:
4397#line 1718 "asmparse.y"
4398{ int eltype = ELEMENT_TYPE_VAR;
4399 int n=-1;
4400 if(PASM->m_pCurClass && !newclass) n = PASM->m_pCurClass->FindTyPar(yypvt[-0].string);
4401 else {
4402 if(PASM->m_TyParList) n = PASM->m_TyParList->IndexOf(yypvt[-0].string);
4403 if(n == -1)
4404 { n = TyParFixupList.COUNT();
4405 TyParFixupList.PUSH(yypvt[-0].string);
4406 eltype = ELEMENT_TYPE_VARFIXUP;
4407 }
4408 }
4409 if(n == -1) { PASM->report->error("Invalid type parameter '%s'\n",yypvt[-0].string);
4410 n = 0x1FFFFFFF; }
4411 yyval.binstr = new BinStr(); yyval.binstr->appendInt8(eltype); corEmitInt(yyval.binstr,n);
4412 } break;
4413case 679:
4414#line 1733 "asmparse.y"
4415{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_TYPEDBYREF); } break;
4416case 680:
4417#line 1734 "asmparse.y"
4418{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_VOID); } break;
4419case 681:
4420#line 1735 "asmparse.y"
4421{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I); } break;
4422case 682:
4423#line 1736 "asmparse.y"
4424{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
4425case 683:
4426#line 1737 "asmparse.y"
4427{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U); } break;
4428case 684:
4429#line 1738 "asmparse.y"
4430{ yyval.binstr = yypvt[-0].binstr; } break;
4431case 685:
4432#line 1739 "asmparse.y"
4433{ yyval.binstr = yypvt[-0].binstr; yyval.binstr->insertInt8(ELEMENT_TYPE_SENTINEL); } break;
4434case 686:
4435#line 1742 "asmparse.y"
4436{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_CHAR); } break;
4437case 687:
4438#line 1743 "asmparse.y"
4439{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_STRING); } break;
4440case 688:
4441#line 1744 "asmparse.y"
4442{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_BOOLEAN); } break;
4443case 689:
4444#line 1745 "asmparse.y"
4445{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I1); } break;
4446case 690:
4447#line 1746 "asmparse.y"
4448{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I2); } break;
4449case 691:
4450#line 1747 "asmparse.y"
4451{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I4); } break;
4452case 692:
4453#line 1748 "asmparse.y"
4454{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_I8); } break;
4455case 693:
4456#line 1749 "asmparse.y"
4457{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R4); } break;
4458case 694:
4459#line 1750 "asmparse.y"
4460{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_R8); } break;
4461case 695:
4462#line 1751 "asmparse.y"
4463{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
4464case 696:
4465#line 1752 "asmparse.y"
4466{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
4467case 697:
4468#line 1753 "asmparse.y"
4469{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
4470case 698:
4471#line 1754 "asmparse.y"
4472{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
4473case 699:
4474#line 1755 "asmparse.y"
4475{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U1); } break;
4476case 700:
4477#line 1756 "asmparse.y"
4478{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U2); } break;
4479case 701:
4480#line 1757 "asmparse.y"
4481{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U4); } break;
4482case 702:
4483#line 1758 "asmparse.y"
4484{ yyval.binstr = new BinStr(); yyval.binstr->appendInt8(ELEMENT_TYPE_U8); } break;
4485case 703:
4486#line 1759 "asmparse.y"
4487{ yyval.binstr = new BinStr(); yyval.binstr->append(yypvt[-0].tdd->m_pbsTypeSpec); } break;
4488case 704:
4489#line 1762 "asmparse.y"
4490{ yyval.binstr = yypvt[-0].binstr; } break;
4491case 705:
4492#line 1763 "asmparse.y"
4493{ yyval.binstr = yypvt[-2].binstr; yypvt[-2].binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr; } break;
4494case 706:
4495#line 1766 "asmparse.y"
4496{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
4497case 707:
4498#line 1767 "asmparse.y"
4499{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0x7FFFFFFF); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
4500case 708:
4501#line 1768 "asmparse.y"
4502{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(0); yyval.binstr->appendInt32(yypvt[-0].int32); } break;
4503case 709:
4504#line 1769 "asmparse.y"
4505{ FAIL_UNLESS(yypvt[-2].int32 <= yypvt[-0].int32, ("lower bound %d must be <= upper bound %d\n", yypvt[-2].int32, yypvt[-0].int32));
4506 if (yypvt[-2].int32 > yypvt[-0].int32) { YYERROR; };
4507 yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-2].int32); yyval.binstr->appendInt32(yypvt[-0].int32-yypvt[-2].int32+1); } break;
4508case 710:
4509#line 1772 "asmparse.y"
4510{ yyval.binstr = new BinStr(); yyval.binstr->appendInt32(yypvt[-1].int32); yyval.binstr->appendInt32(0x7FFFFFFF); } break;
4511case 711:
4512#line 1777 "asmparse.y"
4513{ PASM->AddPermissionDecl(yypvt[-4].secAct, yypvt[-3].token, yypvt[-1].pair); } break;
4514case 712:
4515#line 1779 "asmparse.y"
4516{ PASM->AddPermissionDecl(yypvt[-5].secAct, yypvt[-4].token, yypvt[-1].binstr); } break;
4517case 713:
4518#line 1780 "asmparse.y"
4519{ PASM->AddPermissionDecl(yypvt[-1].secAct, yypvt[-0].token, (NVPair *)NULL); } break;
4520case 714:
4521#line 1781 "asmparse.y"
4522{ PASM->AddPermissionSetDecl(yypvt[-2].secAct, yypvt[-1].binstr); } break;
4523case 715:
4524#line 1783 "asmparse.y"
4525{ PASM->AddPermissionSetDecl(yypvt[-1].secAct,BinStrToUnicode(yypvt[-0].binstr,true));} break;
4526case 716:
4527#line 1785 "asmparse.y"
4528{ BinStr* ret = new BinStr();
4529 ret->insertInt8('.');
4530 corEmitInt(ret, nSecAttrBlobs);
4531 ret->append(yypvt[-1].binstr);
4532 PASM->AddPermissionSetDecl(yypvt[-4].secAct,ret);
4533 nSecAttrBlobs = 0; } break;
4534case 717:
4535#line 1793 "asmparse.y"
4536{ yyval.binstr = new BinStr(); nSecAttrBlobs = 0;} break;
4537case 718:
4538#line 1794 "asmparse.y"
4539{ yyval.binstr = yypvt[-0].binstr; nSecAttrBlobs = 1; } break;
4540case 719:
4541#line 1795 "asmparse.y"
4542{ yyval.binstr = yypvt[-2].binstr; yyval.binstr->append(yypvt[-0].binstr); nSecAttrBlobs++; } break;
4543case 720:
4544#line 1799 "asmparse.y"
4545{ yyval.binstr = PASM->EncodeSecAttr(PASM->ReflectionNotation(yypvt[-4].token),yypvt[-1].binstr,nCustomBlobNVPairs);
4546 nCustomBlobNVPairs = 0; } break;
4547case 721:
4548#line 1802 "asmparse.y"
4549{ yyval.binstr = PASM->EncodeSecAttr(yypvt[-4].string,yypvt[-1].binstr,nCustomBlobNVPairs);
4550 nCustomBlobNVPairs = 0; } break;
4551case 722:
4552#line 1806 "asmparse.y"
4553{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
4554case 723:
4555#line 1808 "asmparse.y"
4556{ yyval.secAct = yypvt[-2].secAct; bParsingByteArray = TRUE; } break;
4557case 724:
4558#line 1811 "asmparse.y"
4559{ yyval.pair = yypvt[-0].pair; } break;
4560case 725:
4561#line 1812 "asmparse.y"
4562{ yyval.pair = yypvt[-2].pair->Concat(yypvt[-0].pair); } break;
4563case 726:
4564#line 1815 "asmparse.y"
4565{ yypvt[-2].binstr->appendInt8(0); yyval.pair = new NVPair(yypvt[-2].binstr, yypvt[-0].binstr); } break;
4566case 727:
4567#line 1818 "asmparse.y"
4568{ yyval.int32 = 1; } break;
4569case 728:
4570#line 1819 "asmparse.y"
4571{ yyval.int32 = 0; } break;
4572case 729:
4573#line 1822 "asmparse.y"
4574{ yyval.binstr = new BinStr();
4575 yyval.binstr->appendInt8(SERIALIZATION_TYPE_BOOLEAN);
4576 yyval.binstr->appendInt8(yypvt[-0].int32); } break;
4577case 730:
4578#line 1825 "asmparse.y"
4579{ yyval.binstr = new BinStr();
4580 yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
4581 yyval.binstr->appendInt32(yypvt[-0].int32); } break;
4582case 731:
4583#line 1828 "asmparse.y"
4584{ yyval.binstr = new BinStr();
4585 yyval.binstr->appendInt8(SERIALIZATION_TYPE_I4);
4586 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
4587case 732:
4588#line 1831 "asmparse.y"
4589{ yyval.binstr = new BinStr();
4590 yyval.binstr->appendInt8(SERIALIZATION_TYPE_STRING);
4591 yyval.binstr->append(yypvt[-0].binstr); delete yypvt[-0].binstr;
4592 yyval.binstr->appendInt8(0); } break;
4593case 733:
4594#line 1835 "asmparse.y"
4595{ yyval.binstr = new BinStr();
4596 yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
4597 char* sz = PASM->ReflectionNotation(yypvt[-5].token);
4598 strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
4599 yyval.binstr->appendInt8(1);
4600 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
4601case 734:
4602#line 1841 "asmparse.y"
4603{ yyval.binstr = new BinStr();
4604 yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
4605 char* sz = PASM->ReflectionNotation(yypvt[-5].token);
4606 strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
4607 yyval.binstr->appendInt8(2);
4608 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
4609case 735:
4610#line 1847 "asmparse.y"
4611{ yyval.binstr = new BinStr();
4612 yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
4613 char* sz = PASM->ReflectionNotation(yypvt[-5].token);
4614 strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
4615 yyval.binstr->appendInt8(4);
4616 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
4617case 736:
4618#line 1853 "asmparse.y"
4619{ yyval.binstr = new BinStr();
4620 yyval.binstr->appendInt8(SERIALIZATION_TYPE_ENUM);
4621 char* sz = PASM->ReflectionNotation(yypvt[-3].token);
4622 strcpy_s((char *)yyval.binstr->getBuff((unsigned)strlen(sz) + 1), strlen(sz) + 1,sz);
4623 yyval.binstr->appendInt8(4);
4624 yyval.binstr->appendInt32(yypvt[-1].int32); } break;
4625case 737:
4626#line 1861 "asmparse.y"
4627{ yyval.secAct = dclRequest; } break;
4628case 738:
4629#line 1862 "asmparse.y"
4630{ yyval.secAct = dclDemand; } break;
4631case 739:
4632#line 1863 "asmparse.y"
4633{ yyval.secAct = dclAssert; } break;
4634case 740:
4635#line 1864 "asmparse.y"
4636{ yyval.secAct = dclDeny; } break;
4637case 741:
4638#line 1865 "asmparse.y"
4639{ yyval.secAct = dclPermitOnly; } break;
4640case 742:
4641#line 1866 "asmparse.y"
4642{ yyval.secAct = dclLinktimeCheck; } break;
4643case 743:
4644#line 1867 "asmparse.y"
4645{ yyval.secAct = dclInheritanceCheck; } break;
4646case 744:
4647#line 1868 "asmparse.y"
4648{ yyval.secAct = dclRequestMinimum; } break;
4649case 745:
4650#line 1869 "asmparse.y"
4651{ yyval.secAct = dclRequestOptional; } break;
4652case 746:
4653#line 1870 "asmparse.y"
4654{ yyval.secAct = dclRequestRefuse; } break;
4655case 747:
4656#line 1871 "asmparse.y"
4657{ yyval.secAct = dclPrejitGrant; } break;
4658case 748:
4659#line 1872 "asmparse.y"
4660{ yyval.secAct = dclPrejitDenied; } break;
4661case 749:
4662#line 1873 "asmparse.y"
4663{ yyval.secAct = dclNonCasDemand; } break;
4664case 750:
4665#line 1874 "asmparse.y"
4666{ yyval.secAct = dclNonCasLinkDemand; } break;
4667case 751:
4668#line 1875 "asmparse.y"
4669{ yyval.secAct = dclNonCasInheritance; } break;
4670case 752:
4671#line 1879 "asmparse.y"
4672{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = FALSE; } break;
4673case 753:
4674#line 1880 "asmparse.y"
4675{ PASM->ResetLineNumbers(); nCurrPC = PASM->m_CurPC; PENV->bExternSource = TRUE; PENV->bExternSourceAutoincrement = TRUE; } break;
4676case 754:
4677#line 1883 "asmparse.y"
4678{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32;
4679 PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1);
4680 PASM->SetSourceFileName(yypvt[-0].string);} break;
4681case 755:
4682#line 1886 "asmparse.y"
4683{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-0].int32;
4684 PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1); } break;
4685case 756:
4686#line 1888 "asmparse.y"
4687{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-3].int32;
4688 PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
4689 PASM->SetSourceFileName(yypvt[-0].string);} break;
4690case 757:
4691#line 1891 "asmparse.y"
4692{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-2].int32;
4693 PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);} break;
4694case 758:
4695#line 1894 "asmparse.y"
4696{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-5].int32;
4697 PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
4698 PASM->SetSourceFileName(yypvt[-0].string);} break;
4699case 759:
4700#line 1898 "asmparse.y"
4701{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-4].int32;
4702 PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
4703case 760:
4704#line 1901 "asmparse.y"
4705{ PENV->nExtLine = yypvt[-5].int32; PENV->nExtLineEnd = yypvt[-3].int32;
4706 PENV->nExtCol=yypvt[-1].int32; PENV->nExtColEnd = static_cast<unsigned>(-1);
4707 PASM->SetSourceFileName(yypvt[-0].string);} break;
4708case 761:
4709#line 1905 "asmparse.y"
4710{ PENV->nExtLine = yypvt[-4].int32; PENV->nExtLineEnd = yypvt[-2].int32;
4711 PENV->nExtCol=yypvt[-0].int32; PENV->nExtColEnd = static_cast<unsigned>(-1); } break;
4712case 762:
4713#line 1908 "asmparse.y"
4714{ PENV->nExtLine = yypvt[-7].int32; PENV->nExtLineEnd = yypvt[-5].int32;
4715 PENV->nExtCol=yypvt[-3].int32; PENV->nExtColEnd = yypvt[-1].int32;
4716 PASM->SetSourceFileName(yypvt[-0].string);} break;
4717case 763:
4718#line 1912 "asmparse.y"
4719{ PENV->nExtLine = yypvt[-6].int32; PENV->nExtLineEnd = yypvt[-4].int32;
4720 PENV->nExtCol=yypvt[-2].int32; PENV->nExtColEnd = yypvt[-0].int32; } break;
4721case 764:
4722#line 1914 "asmparse.y"
4723{ PENV->nExtLine = PENV->nExtLineEnd = yypvt[-1].int32 - 1;
4724 PENV->nExtCol = 0; PENV->nExtColEnd = static_cast<unsigned>(-1);
4725 PASM->SetSourceFileName(yypvt[-0].binstr);} break;
4726case 765:
4727#line 1921 "asmparse.y"
4728{ PASMM->AddFile(yypvt[-5].string, yypvt[-6].fileAttr|yypvt[-4].fileAttr|yypvt[-0].fileAttr, yypvt[-2].binstr); } break;
4729case 766:
4730#line 1922 "asmparse.y"
4731{ PASMM->AddFile(yypvt[-1].string, yypvt[-2].fileAttr|yypvt[-0].fileAttr, NULL); } break;
4732case 767:
4733#line 1925 "asmparse.y"
4734{ yyval.fileAttr = (CorFileFlags) 0; } break;
4735case 768:
4736#line 1926 "asmparse.y"
4737{ yyval.fileAttr = (CorFileFlags) (yypvt[-1].fileAttr | ffContainsNoMetaData); } break;
4738case 769:
4739#line 1929 "asmparse.y"
4740{ yyval.fileAttr = (CorFileFlags) 0; } break;
4741case 770:
4742#line 1930 "asmparse.y"
4743{ yyval.fileAttr = (CorFileFlags) 0x80000000; } break;
4744case 771:
4745#line 1933 "asmparse.y"
4746{ bParsingByteArray = TRUE; } break;
4747case 772:
4748#line 1936 "asmparse.y"
4749{ PASMM->StartAssembly(yypvt[-0].string, NULL, (DWORD)yypvt[-1].asmAttr, FALSE); } break;
4750case 773:
4751#line 1939 "asmparse.y"
4752{ yyval.asmAttr = (CorAssemblyFlags) 0; } break;
4753case 774:
4754#line 1940 "asmparse.y"
4755{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afRetargetable); } break;
4756case 775:
4757#line 1941 "asmparse.y"
4758{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afContentType_WindowsRuntime); } break;
4759case 776:
4760#line 1942 "asmparse.y"
4761{ yyval.asmAttr = (CorAssemblyFlags) (yypvt[-1].asmAttr | afPA_NoPlatform); } break;
4762case 777:
4763#line 1943 "asmparse.y"
4764{ yyval.asmAttr = yypvt[-2].asmAttr; } break;
4765case 778:
4766#line 1944 "asmparse.y"
4767{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_MSIL); } break;
4768case 779:
4769#line 1945 "asmparse.y"
4770{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_x86); } break;
4771case 780:
4772#line 1946 "asmparse.y"
4773{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_AMD64); } break;
4774case 781:
4775#line 1947 "asmparse.y"
4776{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM); } break;
4777case 782:
4778#line 1948 "asmparse.y"
4779{ SET_PA(yyval.asmAttr,yypvt[-1].asmAttr,afPA_ARM64); } break;
4780case 785:
4781#line 1955 "asmparse.y"
4782{ PASMM->SetAssemblyHashAlg(yypvt[-0].int32); } break;
4783case 788:
4784#line 1960 "asmparse.y"
4785{ yyval.int32 = yypvt[-0].int32; } break;
4786case 789:
4787#line 1961 "asmparse.y"
4788{ yyval.int32 = 0xFFFF; } break;
4789case 790:
4790#line 1964 "asmparse.y"
4791{ PASMM->SetAssemblyPublicKey(yypvt[-1].binstr); } break;
4792case 791:
4793#line 1966 "asmparse.y"
4794{ PASMM->SetAssemblyVer((USHORT)yypvt[-6].int32, (USHORT)yypvt[-4].int32, (USHORT)yypvt[-2].int32, (USHORT)yypvt[-0].int32); } break;
4795case 792:
4796#line 1967 "asmparse.y"
4797{ yypvt[-0].binstr->appendInt8(0); PASMM->SetAssemblyLocale(yypvt[-0].binstr,TRUE); } break;
4798case 793:
4799#line 1968 "asmparse.y"
4800{ PASMM->SetAssemblyLocale(yypvt[-1].binstr,FALSE); } break;
4801case 796:
4802#line 1973 "asmparse.y"
4803{ bParsingByteArray = TRUE; } break;
4804case 797:
4805#line 1976 "asmparse.y"
4806{ bParsingByteArray = TRUE; } break;
4807case 798:
4808#line 1979 "asmparse.y"
4809{ bParsingByteArray = TRUE; } break;
4810case 799:
4811#line 1983 "asmparse.y"
4812{ PASMM->StartAssembly(yypvt[-0].string, NULL, yypvt[-1].asmAttr, TRUE); } break;
4813case 800:
4814#line 1985 "asmparse.y"
4815{ PASMM->StartAssembly(yypvt[-2].string, yypvt[-0].string, yypvt[-3].asmAttr, TRUE); } break;
4816case 803:
4817#line 1992 "asmparse.y"
4818{ PASMM->SetAssemblyHashBlob(yypvt[-1].binstr); } break;
4819case 805:
4820#line 1994 "asmparse.y"
4821{ PASMM->SetAssemblyPublicKeyToken(yypvt[-1].binstr); } break;
4822case 806:
4823#line 1995 "asmparse.y"
4824{ PASMM->SetAssemblyAutodetect(); } break;
4825case 807:
4826#line 1998 "asmparse.y"
4827{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr);} break;
4828case 808:
4829#line 2001 "asmparse.y"
4830{ PASMM->StartComType(yypvt[-0].string, yypvt[-1].exptAttr); } break;
4831case 809:
4832#line 2004 "asmparse.y"
4833{ yyval.exptAttr = (CorTypeAttr) 0; } break;
4834case 810:
4835#line 2005 "asmparse.y"
4836{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdNotPublic); } break;
4837case 811:
4838#line 2006 "asmparse.y"
4839{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdPublic); } break;
4840case 812:
4841#line 2007 "asmparse.y"
4842{ yyval.exptAttr = (CorTypeAttr) (yypvt[-1].exptAttr | tdForwarder); } break;
4843case 813:
4844#line 2008 "asmparse.y"
4845{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPublic); } break;
4846case 814:
4847#line 2009 "asmparse.y"
4848{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedPrivate); } break;
4849case 815:
4850#line 2010 "asmparse.y"
4851{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamily); } break;
4852case 816:
4853#line 2011 "asmparse.y"
4854{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedAssembly); } break;
4855case 817:
4856#line 2012 "asmparse.y"
4857{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamANDAssem); } break;
4858case 818:
4859#line 2013 "asmparse.y"
4860{ yyval.exptAttr = (CorTypeAttr) (yypvt[-2].exptAttr | tdNestedFamORAssem); } break;
4861case 821:
4862#line 2020 "asmparse.y"
4863{ PASMM->SetComTypeFile(yypvt[-0].string); } break;
4864case 822:
4865#line 2021 "asmparse.y"
4866{ PASMM->SetComTypeComType(yypvt[-0].string); } break;
4867case 823:
4868#line 2022 "asmparse.y"
4869{ PASMM->SetComTypeAsmRef(yypvt[-0].string); } break;
4870case 824:
4871#line 2023 "asmparse.y"
4872{ if(!PASMM->SetComTypeImplementationTok(yypvt[-1].int32))
4873 PASM->report->error("Invalid implementation of exported type\n"); } break;
4874case 825:
4875#line 2025 "asmparse.y"
4876{ if(!PASMM->SetComTypeClassTok(yypvt[-0].int32))
4877 PASM->report->error("Invalid TypeDefID of exported type\n"); } break;
4878case 828:
4879#line 2031 "asmparse.y"
4880{ PASMM->StartManifestRes(yypvt[-0].string, yypvt[-0].string, yypvt[-1].manresAttr); } break;
4881case 829:
4882#line 2033 "asmparse.y"
4883{ PASMM->StartManifestRes(yypvt[-2].string, yypvt[-0].string, yypvt[-3].manresAttr); } break;
4884case 830:
4885#line 2036 "asmparse.y"
4886{ yyval.manresAttr = (CorManifestResourceFlags) 0; } break;
4887case 831:
4888#line 2037 "asmparse.y"
4889{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPublic); } break;
4890case 832:
4891#line 2038 "asmparse.y"
4892{ yyval.manresAttr = (CorManifestResourceFlags) (yypvt[-1].manresAttr | mrPrivate); } break;
4893case 835:
4894#line 2045 "asmparse.y"
4895{ PASMM->SetManifestResFile(yypvt[-2].string, (ULONG)yypvt[-0].int32); } break;
4896case 836:
4897#line 2046 "asmparse.y"
4898{ PASMM->SetManifestResAsmRef(yypvt[-0].string); } break;/* End of actions */
4899#line 329 "O:\\tfs\\cgm\\src\\Tools\\devdiv\\amd64\\yypars.c"
4900 }
4901 }
4902 goto yystack; /* stack new state and value */
4903 }
4904#pragma warning(default:102)
4905
4906
4907#ifdef YYDUMP
4908YYLOCAL void YYNEAR YYPASCAL yydumpinfo(void)
4909{
4910 short stackindex;
4911 short valindex;
4912
4913 //dump yys
4914 printf("short yys[%d] {\n", YYMAXDEPTH);
4915 for (stackindex = 0; stackindex < YYMAXDEPTH; stackindex++){
4916 if (stackindex)
4917 printf(", %s", stackindex % 10 ? "\0" : "\n");
4918 printf("%6d", yys[stackindex]);
4919 }
4920 printf("\n};\n");
4921
4922 //dump yyv
4923 printf("YYSTYPE yyv[%d] {\n", YYMAXDEPTH);
4924 for (valindex = 0; valindex < YYMAXDEPTH; valindex++){
4925 if (valindex)
4926 printf(", %s", valindex % 5 ? "\0" : "\n");
4927 printf("%#*x", 3+sizeof(YYSTYPE), yyv[valindex]);
4928 }
4929 printf("\n};\n");
4930 }
4931#endif
4932