Fix for UBSan build
[platform/upstream/doxygen.git] / src / vhdlparser.cpp
1 /* A Bison parser, made by GNU Bison 2.3.  */
2
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4
5    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6    Free Software Foundation, Inc.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2, or (at your option)
11    any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor,
21    Boston, MA 02110-1301, USA.  */
22
23 /* As a special exception, you may create a larger work that contains
24    part or all of the Bison parser skeleton and distribute that work
25    under terms of your choice, so long as that work isn't itself a
26    parser generator using the skeleton or a modified version thereof
27    as a parser skeleton.  Alternatively, if you modify or redistribute
28    the parser skeleton itself, you may (at your option) remove this
29    special exception, which will cause the skeleton and the resulting
30    Bison output files to be licensed under the GNU General Public
31    License without this special exception.
32
33    This special exception was added by the Free Software Foundation in
34    version 2.2 of Bison.  */
35
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37    simplifying the original so-called "semantic" parser.  */
38
39 /* All symbols defined below should begin with yy or YY, to avoid
40    infringing on user name space.  This should be done even for local
41    variables, as they might otherwise be expanded by user macros.
42    There are some unavoidable exceptions within include files to
43    define necessary library symbols; they are noted "INFRINGES ON
44    USER NAME SPACE" below.  */
45
46 /* Identify Bison output.  */
47 #define YYBISON 1
48
49 /* Bison version.  */
50 #define YYBISON_VERSION "2.3"
51
52 /* Skeleton name.  */
53 #define YYSKELETON_NAME "yacc.c"
54
55 /* Pure parsers.  */
56 #define YYPURE 0
57
58 /* Using locations.  */
59 #define YYLSP_NEEDED 0
60
61 /* Substitute the variable and function names.  */
62 #define yyparse vhdlScanYYparse
63 #define yylex   vhdlScanYYlex
64 #define yyerror vhdlScanYYerror
65 #define yylval  vhdlScanYYlval
66 #define yychar  vhdlScanYYchar
67 #define yydebug vhdlScanYYdebug
68 #define yynerrs vhdlScanYYnerrs
69
70
71 /* Tokens.  */
72 #ifndef YYTOKENTYPE
73 # define YYTOKENTYPE
74    /* Put the tokens into the symbol table, so that GDB and other debuggers
75       know about them.  */
76    enum yytokentype {
77      t_ABSTRLIST = 258,
78      t_CHARLIST = 259,
79      t_DIGIT = 260,
80      t_STRING = 261,
81      t_LETTER = 262,
82      t_ACCESS = 263,
83      t_AFTER = 264,
84      t_ALIAS = 265,
85      t_ALL = 266,
86      t_AND = 267,
87      t_ARCHITECTURE = 268,
88      t_ARRAY = 269,
89      t_ASSERT = 270,
90      t_ATTRIBUTE = 271,
91      t_BEGIN = 272,
92      t_BLOCK = 273,
93      t_BODY = 274,
94      t_BUFFER = 275,
95      t_BUS = 276,
96      t_CASE = 277,
97      t_COMPONENT = 278,
98      t_CONFIGURATION = 279,
99      t_CONSTANT = 280,
100      t_DISCONNECT = 281,
101      t_DOWNTO = 282,
102      t_ELSE = 283,
103      t_ELSIF = 284,
104      t_END = 285,
105      t_ENTITY = 286,
106      t_EXIT = 287,
107      t_FILE = 288,
108      t_FOR = 289,
109      t_FUNCTION = 290,
110      t_GENERATE = 291,
111      t_GENERIC = 292,
112      t_GUARDED = 293,
113      t_IF = 294,
114      t_IN = 295,
115      t_INOUT = 296,
116      t_IS = 297,
117      t_LABEL = 298,
118      t_LIBRARY = 299,
119      t_LINKAGE = 300,
120      t_LOOP = 301,
121      t_MAP = 302,
122      t_NAND = 303,
123      t_NEW = 304,
124      t_NEXT = 305,
125      t_NOR = 306,
126      t_NULL = 307,
127      t_OF = 308,
128      t_ON = 309,
129      t_OPEN = 310,
130      t_OR = 311,
131      t_OTHERS = 312,
132      t_OUT = 313,
133      t_PACKAGE = 314,
134      t_PORT = 315,
135      t_PROCEDURE = 316,
136      t_PROCESS = 317,
137      t_RANGE = 318,
138      t_RECORD = 319,
139      t_REGISTER = 320,
140      t_REPORT = 321,
141      t_RETURN = 322,
142      t_SELECT = 323,
143      t_SEVERITY = 324,
144      t_SIGNAL = 325,
145      t_SUBTYPE = 326,
146      t_THEN = 327,
147      t_TO = 328,
148      t_TRANSPORT = 329,
149      t_TYPE = 330,
150      t_UNITS = 331,
151      t_UNTIL = 332,
152      t_USE = 333,
153      t_VARIABLE = 334,
154      t_WAIT = 335,
155      t_WHEN = 336,
156      t_WHILE = 337,
157      t_WITH = 338,
158      t_XOR = 339,
159      t_IMPURE = 340,
160      t_PURE = 341,
161      t_GROUP = 342,
162      t_POSTPONED = 343,
163      t_SHARED = 344,
164      t_XNOR = 345,
165      t_SLL = 346,
166      t_SRA = 347,
167      t_SLA = 348,
168      t_SRL = 349,
169      t_ROR = 350,
170      t_ROL = 351,
171      t_UNAFFECTED = 352,
172      t_ASSUME_GUARANTEE = 353,
173      t_ASSUME = 354,
174      t_CONTEXT = 355,
175      t_COVER = 356,
176      t_DEFAULT = 357,
177      t_FAIRNESS = 358,
178      t_FORCE = 359,
179      t_INERTIAL = 360,
180      t_LITERAL = 361,
181      t_PARAMETER = 362,
182      t_PROTECTED = 363,
183      t_PROPERTY = 364,
184      t_REJECT = 365,
185      t_RELEASE = 366,
186      t_RESTRICT = 367,
187      t_RESTRICT_GUARANTEE = 368,
188      t_SEQUENCE = 369,
189      t_STRONG = 370,
190      t_VMODE = 371,
191      t_VPROP = 372,
192      t_VUNIT = 373,
193      t_SLSL = 374,
194      t_SRSR = 375,
195      t_QQ = 376,
196      t_QGT = 377,
197      t_QLT = 378,
198      t_QG = 379,
199      t_QL = 380,
200      t_QEQU = 381,
201      t_QNEQU = 382,
202      t_GESym = 383,
203      t_GTSym = 384,
204      t_LESym = 385,
205      t_LTSym = 386,
206      t_NESym = 387,
207      t_EQSym = 388,
208      t_Ampersand = 389,
209      t_Minus = 390,
210      t_Plus = 391,
211      MED_PRECEDENCE = 392,
212      t_REM = 393,
213      t_MOD = 394,
214      t_Slash = 395,
215      t_Star = 396,
216      MAX_PRECEDENCE = 397,
217      t_NOT = 398,
218      t_ABS = 399,
219      t_DoubleStar = 400,
220      t_Apostrophe = 401,
221      t_LeftParen = 402,
222      t_RightParen = 403,
223      t_Comma = 404,
224      t_VarAsgn = 405,
225      t_Colon = 406,
226      t_Semicolon = 407,
227      t_Arrow = 408,
228      t_Box = 409,
229      t_Bar = 410,
230      t_Dot = 411,
231      t_Q = 412,
232      t_At = 413,
233      t_Neg = 414,
234      t_LEFTBR = 415,
235      t_RIGHTBR = 416,
236      t_ToolDir = 417
237    };
238 #endif
239 /* Tokens.  */
240 #define t_ABSTRLIST 258
241 #define t_CHARLIST 259
242 #define t_DIGIT 260
243 #define t_STRING 261
244 #define t_LETTER 262
245 #define t_ACCESS 263
246 #define t_AFTER 264
247 #define t_ALIAS 265
248 #define t_ALL 266
249 #define t_AND 267
250 #define t_ARCHITECTURE 268
251 #define t_ARRAY 269
252 #define t_ASSERT 270
253 #define t_ATTRIBUTE 271
254 #define t_BEGIN 272
255 #define t_BLOCK 273
256 #define t_BODY 274
257 #define t_BUFFER 275
258 #define t_BUS 276
259 #define t_CASE 277
260 #define t_COMPONENT 278
261 #define t_CONFIGURATION 279
262 #define t_CONSTANT 280
263 #define t_DISCONNECT 281
264 #define t_DOWNTO 282
265 #define t_ELSE 283
266 #define t_ELSIF 284
267 #define t_END 285
268 #define t_ENTITY 286
269 #define t_EXIT 287
270 #define t_FILE 288
271 #define t_FOR 289
272 #define t_FUNCTION 290
273 #define t_GENERATE 291
274 #define t_GENERIC 292
275 #define t_GUARDED 293
276 #define t_IF 294
277 #define t_IN 295
278 #define t_INOUT 296
279 #define t_IS 297
280 #define t_LABEL 298
281 #define t_LIBRARY 299
282 #define t_LINKAGE 300
283 #define t_LOOP 301
284 #define t_MAP 302
285 #define t_NAND 303
286 #define t_NEW 304
287 #define t_NEXT 305
288 #define t_NOR 306
289 #define t_NULL 307
290 #define t_OF 308
291 #define t_ON 309
292 #define t_OPEN 310
293 #define t_OR 311
294 #define t_OTHERS 312
295 #define t_OUT 313
296 #define t_PACKAGE 314
297 #define t_PORT 315
298 #define t_PROCEDURE 316
299 #define t_PROCESS 317
300 #define t_RANGE 318
301 #define t_RECORD 319
302 #define t_REGISTER 320
303 #define t_REPORT 321
304 #define t_RETURN 322
305 #define t_SELECT 323
306 #define t_SEVERITY 324
307 #define t_SIGNAL 325
308 #define t_SUBTYPE 326
309 #define t_THEN 327
310 #define t_TO 328
311 #define t_TRANSPORT 329
312 #define t_TYPE 330
313 #define t_UNITS 331
314 #define t_UNTIL 332
315 #define t_USE 333
316 #define t_VARIABLE 334
317 #define t_WAIT 335
318 #define t_WHEN 336
319 #define t_WHILE 337
320 #define t_WITH 338
321 #define t_XOR 339
322 #define t_IMPURE 340
323 #define t_PURE 341
324 #define t_GROUP 342
325 #define t_POSTPONED 343
326 #define t_SHARED 344
327 #define t_XNOR 345
328 #define t_SLL 346
329 #define t_SRA 347
330 #define t_SLA 348
331 #define t_SRL 349
332 #define t_ROR 350
333 #define t_ROL 351
334 #define t_UNAFFECTED 352
335 #define t_ASSUME_GUARANTEE 353
336 #define t_ASSUME 354
337 #define t_CONTEXT 355
338 #define t_COVER 356
339 #define t_DEFAULT 357
340 #define t_FAIRNESS 358
341 #define t_FORCE 359
342 #define t_INERTIAL 360
343 #define t_LITERAL 361
344 #define t_PARAMETER 362
345 #define t_PROTECTED 363
346 #define t_PROPERTY 364
347 #define t_REJECT 365
348 #define t_RELEASE 366
349 #define t_RESTRICT 367
350 #define t_RESTRICT_GUARANTEE 368
351 #define t_SEQUENCE 369
352 #define t_STRONG 370
353 #define t_VMODE 371
354 #define t_VPROP 372
355 #define t_VUNIT 373
356 #define t_SLSL 374
357 #define t_SRSR 375
358 #define t_QQ 376
359 #define t_QGT 377
360 #define t_QLT 378
361 #define t_QG 379
362 #define t_QL 380
363 #define t_QEQU 381
364 #define t_QNEQU 382
365 #define t_GESym 383
366 #define t_GTSym 384
367 #define t_LESym 385
368 #define t_LTSym 386
369 #define t_NESym 387
370 #define t_EQSym 388
371 #define t_Ampersand 389
372 #define t_Minus 390
373 #define t_Plus 391
374 #define MED_PRECEDENCE 392
375 #define t_REM 393
376 #define t_MOD 394
377 #define t_Slash 395
378 #define t_Star 396
379 #define MAX_PRECEDENCE 397
380 #define t_NOT 398
381 #define t_ABS 399
382 #define t_DoubleStar 400
383 #define t_Apostrophe 401
384 #define t_LeftParen 402
385 #define t_RightParen 403
386 #define t_Comma 404
387 #define t_VarAsgn 405
388 #define t_Colon 406
389 #define t_Semicolon 407
390 #define t_Arrow 408
391 #define t_Box 409
392 #define t_Bar 410
393 #define t_Dot 411
394 #define t_Q 412
395 #define t_At 413
396 #define t_Neg 414
397 #define t_LEFTBR 415
398 #define t_RIGHTBR 416
399 #define t_ToolDir 417
400
401
402
403
404 /* Copy the first part of user declarations.  */
405
406
407 #include <stdio.h>
408 #include <qcstring.h>
409 #include <qstringlist.h>
410
411 #ifndef YYSTYPE
412 typedef int YYSTYPE;
413 #endif
414
415 struct  YYMM
416 {
417   int itype;
418   QCString qstr;
419 };
420
421 // define struct instead of union
422 #define YYSTYPE YYMM
423
424 #include "membergroup.h"
425 #include "vhdldocgen.h"
426 #include "doxygen.h"
427 #include "searchindex.h"
428 #include "vhdlscanner.h"
429 #include "commentscan.h"
430 #include "entry.h"
431 #include "arguments.h"
432
433 //-----------------------------variables ---------------------------------------------------------------------------
434 //static VhdlParser* myconv=0;
435
436 static VhdlContainer s_str;
437 static QList<Entry>instFiles;
438 static int yyLineNr;
439 static Entry* lastCompound;
440 static Entry* currentCompound;
441 static Entry* lastEntity;
442 static Entry* current;
443 static Entry* tempEntry;
444 static Entry* current_root;
445 static QCString compSpec;
446 static QCString currName;
447 static int levelCounter;
448 static QCString confName;
449 static QCString genLabels;
450
451 static QList<VhdlConfNode> configL;
452 static VhdlConfNode* currNode;
453
454 static int currP=0;
455
456 enum  { GEN_SEC=0x1, PARAM_SEC,CONTEXT_SEC,PROTECTED_SEC } ;
457
458 static int param_sec = 0;
459 static int parse_sec=0;
460
461
462 //---------------------------- function --------------------------------------------------------------------------------
463
464 int vhdlScanYYlex ();
465 void vhdlScanYYerror (char const *);
466
467 static void addVhdlType(const QCString &name,int startLine,
468                         int section,int spec,
469                         const char* args,const char* type,
470                         Protection prot=Public);
471 static void addCompInst(char *n, char* instName,char* comp,int line);
472
473 static void newEntry();
474 static void initEntry(Entry *e);
475 static bool isFuncProcProced();
476 static void popConfig();
477 static void pushLabel(const QCString &label);
478 static void popLabel();
479 static void addConfigureNode(const char* a,const char*b,
480                          bool isRoot,bool isLeave,bool inlineConf=FALSE);
481 //static bool addLibUseClause(const QCString &type);
482 static bool isFuncProcProced();
483 static void initEntry(Entry *e);
484 static void addProto(const char *s1,const char *s2,const char *s3,
485                      const char *s4,const char *s5,const char *s6);
486 static void createFunction(const QCString &impure,int spec,
487                            const QCString &fname);
488
489 void newVhdlEntry()
490 {
491   newEntry();
492 }
493
494 Entry* getCurrentVhdlEntry()
495 {
496   return current;
497 }
498
499 void initVhdlParser()
500 {
501   lastCompound=0;
502   lastEntity=0;
503   currentCompound=0;
504   lastEntity=0;
505   current_root=s_str.root;
506   current=new Entry();
507   initEntry(current);
508 }
509
510 QList<Entry> & getVhdlInstList()
511 {
512   return instFiles;
513 }
514
515
516
517
518 /* Enabling traces.  */
519 #ifndef YYDEBUG
520 # define YYDEBUG 1
521 #endif
522
523 /* Enabling verbose error messages.  */
524 #ifdef YYERROR_VERBOSE
525 # undef YYERROR_VERBOSE
526 # define YYERROR_VERBOSE 1
527 #else
528 # define YYERROR_VERBOSE 0
529 #endif
530
531 /* Enabling the token table.  */
532 #ifndef YYTOKEN_TABLE
533 # define YYTOKEN_TABLE 0
534 #endif
535
536 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
537 typedef int YYSTYPE;
538 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
539 # define YYSTYPE_IS_DECLARED 1
540 # define YYSTYPE_IS_TRIVIAL 1
541 #endif
542
543
544
545 /* Copy the second part of user declarations.  */
546
547
548 /* Line 216 of yacc.c.  */
549
550
551 #ifdef short
552 # undef short
553 #endif
554
555 #ifdef YYTYPE_UINT8
556 typedef YYTYPE_UINT8 yytype_uint8;
557 #else
558 typedef unsigned char yytype_uint8;
559 #endif
560
561 #ifdef YYTYPE_INT8
562 typedef YYTYPE_INT8 yytype_int8;
563 #elif (defined __STDC__ || defined __C99__FUNC__ \
564      || defined __cplusplus || defined _MSC_VER)
565 typedef signed char yytype_int8;
566 #else
567 typedef short int yytype_int8;
568 #endif
569
570 #ifdef YYTYPE_UINT16
571 typedef YYTYPE_UINT16 yytype_uint16;
572 #else
573 typedef unsigned short int yytype_uint16;
574 #endif
575
576 #ifdef YYTYPE_INT16
577 typedef YYTYPE_INT16 yytype_int16;
578 #else
579 typedef short int yytype_int16;
580 #endif
581
582 #ifndef YYSIZE_T
583 # ifdef __SIZE_TYPE__
584 #  define YYSIZE_T __SIZE_TYPE__
585 # elif defined size_t
586 #  define YYSIZE_T size_t
587 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
588      || defined __cplusplus || defined _MSC_VER)
589 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
590 #  define YYSIZE_T size_t
591 # else
592 #  define YYSIZE_T unsigned int
593 # endif
594 #endif
595
596 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
597
598 #ifndef YY_
599 # if defined YYENABLE_NLS && YYENABLE_NLS
600 #  if ENABLE_NLS
601 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
602 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
603 #  endif
604 # endif
605 # ifndef YY_
606 #  define YY_(msgid) msgid
607 # endif
608 #endif
609
610 /* Suppress unused-variable warnings by "using" E.  */
611 #if ! defined lint || defined __GNUC__
612 # define YYUSE(e) ((void) (e))
613 #else
614 # define YYUSE(e) /* empty */
615 #endif
616
617 /* Identity function, used to suppress warnings about constant conditions.  */
618 #ifndef lint
619 # define YYID(n) (n)
620 #else
621 #if (defined __STDC__ || defined __C99__FUNC__ \
622      || defined __cplusplus || defined _MSC_VER)
623 static int
624 YYID (int i)
625 #else
626 static int
627 YYID (i)
628     int i;
629 #endif
630 {
631   return i;
632 }
633 #endif
634
635 #if ! defined yyoverflow || YYERROR_VERBOSE
636
637 /* The parser invokes alloca or malloc; define the necessary symbols.  */
638
639 # ifdef YYSTACK_USE_ALLOCA
640 #  if YYSTACK_USE_ALLOCA
641 #   ifdef __GNUC__
642 #    define YYSTACK_ALLOC __builtin_alloca
643 #   elif defined __BUILTIN_VA_ARG_INCR
644 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
645 #   elif defined _AIX
646 #    define YYSTACK_ALLOC __alloca
647 #   elif defined _MSC_VER
648 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
649 #    define alloca _alloca
650 #   else
651 #    define YYSTACK_ALLOC alloca
652 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
653      || defined __cplusplus || defined _MSC_VER)
654 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
655 #     ifndef _STDLIB_H
656 #      define _STDLIB_H 1
657 #     endif
658 #    endif
659 #   endif
660 #  endif
661 # endif
662
663 # ifdef YYSTACK_ALLOC
664    /* Pacify GCC's `empty if-body' warning.  */
665 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
666 #  ifndef YYSTACK_ALLOC_MAXIMUM
667     /* The OS might guarantee only one guard page at the bottom of the stack,
668        and a page size can be as small as 4096 bytes.  So we cannot safely
669        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
670        to allow for a few compiler-allocated temporary stack slots.  */
671 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
672 #  endif
673 # else
674 #  define YYSTACK_ALLOC YYMALLOC
675 #  define YYSTACK_FREE YYFREE
676 #  ifndef YYSTACK_ALLOC_MAXIMUM
677 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
678 #  endif
679 #  if (defined __cplusplus && ! defined _STDLIB_H \
680        && ! ((defined YYMALLOC || defined malloc) \
681              && (defined YYFREE || defined free)))
682 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
683 #   ifndef _STDLIB_H
684 #    define _STDLIB_H 1
685 #   endif
686 #  endif
687 #  ifndef YYMALLOC
688 #   define YYMALLOC malloc
689 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
690      || defined __cplusplus || defined _MSC_VER)
691 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
692 #   endif
693 #  endif
694 #  ifndef YYFREE
695 #   define YYFREE free
696 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
697      || defined __cplusplus || defined _MSC_VER)
698 void free (void *); /* INFRINGES ON USER NAME SPACE */
699 #   endif
700 #  endif
701 # endif
702 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
703
704
705 #if (! defined yyoverflow \
706      && (! defined __cplusplus \
707          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
708
709 /* A type that is properly aligned for any stack member.  */
710 union yyalloc
711 {
712   yytype_int16 yyss;
713   YYSTYPE yyvs;
714   };
715
716 /* The size of the maximum gap between one aligned stack and the next.  */
717 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
718
719 /* The size of an array large to enough to hold all stacks, each with
720    N elements.  */
721 # define YYSTACK_BYTES(N) \
722      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
723       + YYSTACK_GAP_MAXIMUM)
724
725 /* Copy COUNT objects from FROM to TO.  The source and destination do
726    not overlap.  */
727 # ifndef YYCOPY
728 #  if defined __GNUC__ && 1 < __GNUC__
729 #   define YYCOPY(To, From, Count) \
730       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
731 #  else
732 #   define YYCOPY(To, From, Count)              \
733       do                                        \
734         {                                       \
735           YYSIZE_T yyi;                         \
736           for (yyi = 0; yyi < (Count); yyi++)   \
737             (To)[yyi] = (From)[yyi];            \
738         }                                       \
739       while (YYID (0))
740 #  endif
741 # endif
742
743 /* Relocate STACK from its old location to the new one.  The
744    local variables YYSIZE and YYSTACKSIZE give the old and new number of
745    elements in the stack, and YYPTR gives the new location of the
746    stack.  Advance YYPTR to a properly aligned location for the next
747    stack.  */
748 # define YYSTACK_RELOCATE(Stack)                                        \
749     do                                                                  \
750       {                                                                 \
751         YYSIZE_T yynewbytes;                                            \
752         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
753         Stack = &yyptr->Stack;                                          \
754         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
755         yyptr += yynewbytes / sizeof (*yyptr);                          \
756       }                                                                 \
757     while (YYID (0))
758
759 #endif
760
761 /* YYFINAL -- State number of the termination state.  */
762 #define YYFINAL  6
763 /* YYLAST -- Last index in YYTABLE.  */
764 #define YYLAST   2912
765
766 /* YYNTOKENS -- Number of terminals.  */
767 #define YYNTOKENS  163
768 /* YYNNTS -- Number of nonterminals.  */
769 #define YYNNTS  398
770 /* YYNRULES -- Number of rules.  */
771 #define YYNRULES  922
772 /* YYNRULES -- Number of states.  */
773 #define YYNSTATES  1590
774
775 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
776 #define YYUNDEFTOK  2
777 #define YYMAXUTOK   417
778
779 #define YYTRANSLATE(YYX)                                                \
780   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
781
782 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
783 static const yytype_uint8 yytranslate[] =
784 {
785        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
786        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
787        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
788        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
789        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
790        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
791        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
792        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
793        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
794        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
795        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
796        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
797        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
798        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
799        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
800        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
801        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
802        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
803        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
804        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
805        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
806        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
807        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
808        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
809        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
810        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
811        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
812       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
813       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
814       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
815       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
816       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
817       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
818       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
819       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
820       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
821      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
822      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
823      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
824      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
825      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
826      155,   156,   157,   158,   159,   160,   161,   162
827 };
828
829 #if YYDEBUG
830 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
831    YYRHS.  */
832 static const yytype_uint16 yyprhs[] =
833 {
834        0,     0,     3,     5,     7,     9,    12,    14,    16,    18,
835       20,    22,    24,    26,    28,    30,    33,    34,    36,    39,
836       41,    45,    48,    49,    52,    54,    56,    58,    60,    62,
837       64,    66,    68,    70,    74,    78,    80,    84,    89,    97,
838      101,   102,   104,   105,   108,   109,   112,   114,   115,   116,
839      121,   122,   123,   128,   132,   140,   146,   152,   153,   155,
840      158,   160,   161,   164,   166,   172,   173,   181,   187,   188,
841      190,   192,   195,   196,   199,   201,   207,   213,   217,   218,
842      220,   223,   225,   226,   228,   231,   233,   236,   238,   241,
843      245,   251,   257,   262,   263,   265,   268,   272,   273,   276,
844      278,   280,   282,   284,   286,   288,   290,   292,   294,   296,
845      298,   300,   302,   304,   306,   308,   310,   312,   314,   316,
846      318,   320,   322,   324,   326,   328,   330,   332,   334,   336,
847      338,   340,   342,   344,   346,   348,   351,   353,   355,   357,
848      359,   361,   363,   365,   367,   369,   371,   373,   375,   377,
849      379,   381,   383,   385,   387,   389,   391,   393,   395,   397,
850      399,   401,   403,   405,   407,   409,   411,   413,   415,   417,
851      419,   421,   423,   425,   427,   429,   434,   436,   438,   441,
852      442,   447,   448,   456,   457,   464,   466,   469,   470,   474,
853      475,   478,   479,   482,   484,   486,   488,   497,   504,   505,
854      507,   509,   511,   514,   517,   520,   521,   524,   526,   531,
855      535,   536,   539,   542,   544,   546,   549,   557,   558,   561,
856      562,   564,   566,   567,   569,   570,   572,   574,   576,   578,
857      580,   582,   587,   588,   591,   594,   599,   603,   607,   608,
858      611,   614,   618,   620,   622,   624,   626,   630,   632,   634,
859      636,   638,   641,   643,   645,   647,   649,   651,   653,   655,
860      657,   661,   665,   669,   673,   677,   681,   685,   689,   693,
861      697,   701,   705,   709,   712,   714,   717,   720,   723,   726,
862      730,   735,   739,   743,   747,   751,   755,   759,   763,   767,
863      771,   775,   779,   783,   787,   791,   795,   799,   803,   807,
864      811,   814,   817,   819,   823,   825,   827,   829,   831,   835,
865      837,   839,   841,   843,   845,   848,   851,   855,   857,   859,
866      861,   863,   865,   869,   871,   873,   875,   877,   879,   881,
867      883,   885,   889,   891,   893,   895,   898,   901,   903,   907,
868      912,   916,   920,   924,   927,   933,   938,   942,   948,   952,
869      957,   961,   964,   965,   967,   968,   970,   974,   976,   979,
870      980,   983,   986,   988,   990,   992,   997,  1002,  1006,  1007,
871     1010,  1012,  1014,  1016,  1018,  1020,  1022,  1024,  1026,  1028,
872     1030,  1035,  1036,  1039,  1042,  1049,  1052,  1054,  1055,  1058,
873     1060,  1063,  1068,  1076,  1077,  1080,  1083,  1087,  1092,  1093,
874     1095,  1102,  1103,  1106,  1108,  1113,  1116,  1120,  1126,  1130,
875     1133,  1135,  1136,  1138,  1142,  1145,  1149,  1150,  1152,  1155,
876     1160,  1161,  1164,  1167,  1169,  1171,  1173,  1177,  1179,  1183,
877     1185,  1187,  1194,  1195,  1198,  1206,  1207,  1210,  1211,  1213,
878     1220,  1228,  1229,  1232,  1234,  1236,  1238,  1241,  1243,  1245,
879     1247,  1249,  1257,  1264,  1266,  1268,  1269,  1272,  1281,  1288,
880     1289,  1294,  1295,  1297,  1305,  1308,  1310,  1312,  1313,  1316,
881     1319,  1325,  1333,  1338,  1341,  1343,  1345,  1346,  1349,  1352,
882     1354,  1356,  1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,
883     1374,  1376,  1378,  1380,  1382,  1384,  1386,  1388,  1390,  1392,
884     1399,  1407,  1408,  1412,  1417,  1418,  1421,  1426,  1432,  1434,
885     1436,  1438,  1443,  1449,  1452,  1454,  1455,  1458,  1460,  1462,
886     1464,  1466,  1468,  1470,  1472,  1474,  1489,  1490,  1492,  1493,
887     1496,  1498,  1499,  1504,  1509,  1510,  1515,  1516,  1521,  1522,
888     1527,  1528,  1530,  1532,  1536,  1539,  1541,  1545,  1547,  1549,
889     1551,  1552,  1562,  1563,  1572,  1581,  1591,  1592,  1596,  1600,
890     1602,  1607,  1610,  1614,  1616,  1621,  1624,  1628,  1630,  1635,
891     1638,  1643,  1646,  1650,  1652,  1658,  1660,  1664,  1670,  1673,
892     1675,  1676,  1679,  1682,  1685,  1686,  1689,  1692,  1694,  1697,
893     1699,  1701,  1704,  1705,  1707,  1711,  1713,  1714,  1716,  1725,
894     1730,  1731,  1734,  1739,  1740,  1743,  1745,  1748,  1749,  1758,
895     1763,  1767,  1768,  1774,  1778,  1780,  1783,  1786,  1790,  1794,
896     1796,  1797,  1808,  1813,  1814,  1818,  1819,  1821,  1822,  1824,
897     1825,  1827,  1830,  1832,  1833,  1837,  1841,  1844,  1845,  1848,
898     1851,  1853,  1854,  1857,  1859,  1861,  1864,  1866,  1868,  1870,
899     1872,  1874,  1876,  1878,  1880,  1883,  1885,  1887,  1889,  1892,
900     1894,  1900,  1906,  1907,  1910,  1911,  1914,  1915,  1917,  1918,
901     1920,  1922,  1933,  1945,  1952,  1953,  1956,  1958,  1963,  1968,
902     1969,  1972,  1973,  1975,  1985,  1993,  1994,  1997,  1998,  2001,
903     2006,  2015,  2016,  2018,  2019,  2021,  2022,  2025,  2030,  2031,
904     2034,  2035,  2037,  2040,  2043,  2047,  2048,  2050,  2055,  2061,
905     2068,  2074,  2076,  2078,  2081,  2083,  2086,  2088,  2091,  2095,
906     2100,  2106,  2107,  2110,  2111,  2114,  2115,  2118,  2120,  2124,
907     2128,  2132,  2135,  2136,  2138,  2146,  2147,  2151,  2152,  2156,
908     2164,  2170,  2171,  2174,  2176,  2177,  2180,  2182,  2184,  2186,
909     2188,  2196,  2197,  2199,  2200,  2204,  2209,  2213,  2218,  2226,
910     2229,  2234,  2237,  2241,  2243,  2245,  2247,  2251,  2252,  2256,
911     2257,  2261,  2264,  2267,  2269,  2271,  2273,  2275,  2279,  2288,
912     2296,  2304,  2307,  2308,  2310,  2312,  2316,  2318,  2320,  2322,
913     2324,  2326,  2328,  2330,  2335,  2340,  2341,  2344,  2346,  2348,
914     2351,  2353,  2355,  2357,  2359,  2365,  2371,  2372,  2375,  2377,
915     2380,  2384,  2386,  2390,  2391,  2400,  2407,  2409,  2412,  2414,
916     2417,  2419,  2421,  2423,  2431,  2440,  2447,  2455,  2464,  2471,
917     2472,  2476,  2479,  2482,  2484,  2488,  2490,  2493,  2496,  2506,
918     2515,  2524,  2530,  2535,  2538,  2540,  2543,  2547,  2549,  2551,
919     2559,  2568,  2575,  2583,  2588,  2593,  2596,  2606,  2615,  2617,
920     2619,  2628,  2629,  2631,  2637,  2639,  2644,  2654,  2655,  2657,
921     2659,  2661,  2665,  2667,  2673,  2678,  2683,  2689,  2692,  2700,
922     2706,  2708,  2713,  2715,  2717,  2719,  2721,  2725,  2732,  2740,
923     2742,  2744,  2745,  2748,  2751,  2752,  2754,  2755,  2762,  2767,
924     2773,  2780,  2784,  2785,  2789,  2796,  2798,  2800,  2802,  2804,
925     2806,  2808,  2812,  2815,  2819,  2822,  2825,  2829,  2831,  2836,
926     2839,  2843,  2846
927 };
928
929 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
930 static const yytype_int16 yyrhs[] =
931 {
932      164,     0,    -1,   165,    -1,   166,    -1,   174,    -1,   166,
933      174,    -1,   491,    -1,   493,    -1,   494,    -1,   495,    -1,
934      492,    -1,   172,    -1,    52,    -1,   495,    -1,   491,    -1,
935      171,   491,    -1,    -1,   494,    -1,   494,   491,    -1,   491,
936       -1,   173,   149,   491,    -1,   175,   176,    -1,    -1,   175,
937      177,    -1,   181,    -1,   196,    -1,   202,    -1,   191,    -1,
938      208,    -1,   507,    -1,   512,    -1,   178,    -1,   179,    -1,
939       44,   173,   152,    -1,    78,   180,   152,    -1,   271,    -1,
940      180,   149,   271,    -1,   182,     1,   460,   152,    -1,   182,
941      189,   187,   185,   184,   460,   152,    -1,    31,   491,    42,
942       -1,    -1,   491,    -1,    -1,    17,   359,    -1,    -1,   185,
943      186,    -1,   215,    -1,    -1,    -1,    60,   188,   239,   152,
944       -1,    -1,    -1,    37,   190,   239,   152,    -1,    37,     1,
945      152,    -1,   192,   194,    17,   359,    30,   193,   152,    -1,
946      192,     1,    30,   193,   152,    -1,    13,   491,    53,   491,
947       42,    -1,    -1,   491,    -1,    13,   491,    -1,    13,    -1,
948       -1,   194,   195,    -1,   216,    -1,   198,     1,    30,   199,
949      152,    -1,    -1,   198,   200,   465,    30,   199,   152,   197,
950       -1,    24,   491,    53,   491,    42,    -1,    -1,   491,    -1,
951       24,    -1,    24,   491,    -1,    -1,   200,   201,    -1,   222,
952       -1,   203,     1,    30,   204,   152,    -1,   203,   205,    30,
953      204,   152,    -1,    59,   491,    42,    -1,    -1,   491,    -1,
954       59,   491,    -1,    59,    -1,    -1,   207,    -1,   205,   206,
955       -1,   218,    -1,   549,   152,    -1,   549,    -1,   549,   548,
956       -1,   549,   548,   152,    -1,   209,     1,    30,   210,   152,
957       -1,   209,   211,    30,   210,   152,    -1,    59,    19,   491,
958       42,    -1,    -1,   491,    -1,    59,    19,    -1,    59,    19,
959      491,    -1,    -1,   211,   212,    -1,   219,    -1,   202,    -1,
960      512,    -1,   208,    -1,   513,    -1,   287,    -1,   311,    -1,
961      324,    -1,   336,    -1,   333,    -1,   224,    -1,   179,    -1,
962      214,    -1,   235,    -1,   343,    -1,   344,    -1,   339,    -1,
963      326,    -1,   329,    -1,   486,    -1,   485,    -1,   213,    -1,
964      214,    -1,   235,    -1,   462,    -1,   343,    -1,   344,    -1,
965      475,    -1,   339,    -1,   326,    -1,   329,    -1,   486,    -1,
966      485,    -1,   213,    -1,   560,    -1,   216,    -1,   217,   216,
967       -1,   214,    -1,   462,    -1,   343,    -1,   344,    -1,   339,
968       -1,   326,    -1,   329,    -1,   486,    -1,   485,    -1,   202,
969       -1,   512,    -1,   513,    -1,   214,    -1,   235,    -1,   329,
970       -1,   486,    -1,   485,    -1,   343,    -1,   344,    -1,   213,
971       -1,   214,    -1,   235,    -1,   343,    -1,   344,    -1,   329,
972       -1,   486,    -1,   485,    -1,   213,    -1,   214,    -1,   235,
973       -1,   343,    -1,   344,    -1,   329,    -1,   486,    -1,   485,
974       -1,   213,    -1,   344,    -1,   179,    -1,   485,    -1,    78,
975      118,   173,   152,    -1,    86,    -1,    85,    -1,   225,   152,
976       -1,    -1,    61,   491,   226,   234,    -1,    -1,   223,    35,
977      167,   227,   233,    67,   270,    -1,    -1,    35,   167,   228,
978      233,    67,   270,    -1,   549,    -1,   549,   548,    -1,    -1,
979      107,   231,   239,    -1,    -1,   232,   239,    -1,    -1,   229,
980      230,    -1,   230,    -1,   229,    -1,   233,    -1,   225,    42,
981      237,    17,   420,    30,   236,   152,    -1,   225,    42,     1,
982       30,   236,   152,    -1,    -1,   167,    -1,    35,    -1,    61,
983       -1,    61,   491,    -1,    35,   491,    -1,    35,     6,    -1,
984       -1,   237,   238,    -1,   220,    -1,   147,   242,   240,   148,
985       -1,   147,     1,   148,    -1,    -1,   240,   241,    -1,   152,
986      242,    -1,   547,    -1,   540,    -1,   246,   491,    -1,   246,
987      173,   151,   245,   312,   244,   243,    -1,    -1,   150,   258,
988       -1,    -1,    20,    -1,    21,    -1,    -1,   247,    -1,    -1,
989      331,    -1,    40,    -1,    58,    -1,    41,    -1,    20,    -1,
990       45,    -1,   147,   254,   249,   148,    -1,    -1,   249,   250,
991       -1,   149,   254,    -1,   147,   255,   252,   148,    -1,   147,
992        1,   148,    -1,   147,    55,   148,    -1,    -1,   252,   253,
993       -1,   149,   255,    -1,   256,   153,   257,    -1,   257,    -1,
994      154,    -1,   102,    -1,   258,    -1,   286,   153,   258,    -1,
995      321,    -1,   268,    -1,   258,    -1,    55,    -1,   105,   258,
996       -1,   260,    -1,   261,    -1,    91,    -1,    92,    -1,    93,
997       -1,    94,    -1,    95,    -1,    96,    -1,   261,   259,   261,
998       -1,   261,    12,   261,    -1,   261,    84,   261,    -1,   261,
999       56,   261,    -1,   261,    51,   261,    -1,   261,    90,   261,
1000       -1,   261,    48,   261,    -1,   260,    48,   261,    -1,   260,
1001       51,   261,    -1,   260,    90,   261,    -1,   260,    12,   261,
1002       -1,   260,    56,   261,    -1,   260,    84,   261,    -1,   121,
1003      267,    -1,   267,    -1,   136,   267,    -1,   135,   267,    -1,
1004      144,   267,    -1,   143,   267,    -1,   267,   145,   267,    -1,
1005      135,   267,   145,   267,    -1,   261,   139,   261,    -1,   261,
1006      138,   261,    -1,   261,   134,   261,    -1,   261,   141,   261,
1007       -1,   261,   136,   261,    -1,   261,   135,   261,    -1,   261,
1008      130,   261,    -1,   261,   128,   261,    -1,   261,   131,   261,
1009       -1,   261,   129,   261,    -1,   261,   133,   261,    -1,   261,
1010      132,   261,    -1,   261,   140,   261,    -1,   261,   127,   261,
1011       -1,   261,   126,   261,    -1,   261,   125,   261,    -1,   261,
1012      124,   261,    -1,   261,   123,   261,    -1,   261,   122,   261,
1013       -1,   135,   264,    -1,   136,   264,    -1,   264,    -1,   262,
1014      263,   264,    -1,   134,    -1,   135,    -1,   136,    -1,   266,
1015       -1,   266,   265,   266,    -1,   141,    -1,   138,    -1,   139,
1016       -1,   140,    -1,   267,    -1,   144,   267,    -1,   143,   267,
1017       -1,   267,   145,   267,    -1,   268,    -1,   168,    -1,   276,
1018       -1,   278,    -1,   279,    -1,   147,   258,   148,    -1,   270,
1019       -1,   269,    -1,   551,    -1,   493,    -1,   275,    -1,   273,
1020       -1,   491,    -1,   271,    -1,   268,   156,   272,    -1,   167,
1021       -1,   495,    -1,    11,    -1,   270,   251,    -1,   269,   251,
1022       -1,   146,    -1,   270,   274,   491,    -1,   275,   147,   258,
1023      148,    -1,   269,   274,   491,    -1,   270,   274,    63,    -1,
1024      269,   274,    63,    -1,   277,   148,    -1,   147,   283,   153,
1025      258,   148,    -1,   147,   282,   149,   282,    -1,   277,   149,
1026      282,    -1,   270,   146,   147,   258,   148,    -1,   270,   146,
1027      276,    -1,    49,   270,   270,   281,    -1,    49,   270,   280,
1028       -1,    49,   278,    -1,    -1,   251,    -1,    -1,   251,    -1,
1029      283,   153,   258,    -1,   258,    -1,   286,   284,    -1,    -1,
1030      284,   285,    -1,   155,   286,    -1,   258,    -1,   321,    -1,
1031       57,    -1,    75,   491,     1,   152,    -1,    75,   491,   288,
1032      152,    -1,    75,     1,   152,    -1,    -1,    42,   289,    -1,
1033      290,    -1,   316,    -1,   293,    -1,   299,    -1,   303,    -1,
1034      305,    -1,   309,    -1,   310,    -1,   496,    -1,   501,    -1,
1035      147,   169,   291,   148,    -1,    -1,   291,   292,    -1,   149,
1036      169,    -1,   316,    76,   297,   295,    30,   294,    -1,    76,
1037      491,    -1,    76,    -1,    -1,   295,   296,    -1,   298,    -1,
1038      491,   152,    -1,   491,   133,   170,   152,    -1,    14,   147,
1039      302,   300,   148,    53,   312,    -1,    -1,   300,   301,    -1,
1040      149,   302,    -1,   270,    63,   154,    -1,    14,   317,    53,
1041      312,    -1,    -1,   491,    -1,    64,   308,   306,    30,    64,
1042      304,    -1,    -1,   306,   307,    -1,   308,    -1,   173,   151,
1043      312,   152,    -1,     8,   312,    -1,    33,    53,   270,    -1,
1044       71,   491,    42,   312,   152,    -1,    71,     1,   152,    -1,
1045      270,   313,    -1,   314,    -1,    -1,   251,    -1,   270,   270,
1046      316,    -1,   270,   316,    -1,   270,   270,   315,    -1,    -1,
1047      251,    -1,    63,   322,    -1,   147,   320,   318,   148,    -1,
1048       -1,   318,   319,    -1,   149,   320,    -1,   312,    -1,   322,
1049       -1,   314,    -1,   258,   323,   258,    -1,   275,    -1,   262,
1050      323,   262,    -1,    73,    -1,    27,    -1,    25,   173,   151,
1051      312,   325,   152,    -1,    -1,   150,   258,    -1,    70,   173,
1052      151,   312,   328,   327,   152,    -1,    -1,   150,   258,    -1,
1053       -1,   332,    -1,    79,   173,   151,   312,   330,   152,    -1,
1054       89,    79,   173,   151,   312,   330,   152,    -1,    -1,   150,
1055      258,    -1,    25,    -1,    70,    -1,    79,    -1,    89,    79,
1056       -1,    33,    -1,    75,    -1,    21,    -1,    65,    -1,    10,
1057      334,   335,    42,   268,   514,   152,    -1,    10,   334,   335,
1058       42,     1,   152,    -1,   491,    -1,   493,    -1,    -1,   151,
1059      312,    -1,    33,   173,   151,   312,    42,   338,   258,   152,
1060       -1,    33,   173,   151,   491,   337,   152,    -1,    -1,    55,
1061      258,    42,   258,    -1,    -1,   247,    -1,    26,   340,   151,
1062      270,     9,   258,   152,    -1,   268,   341,    -1,    57,    -1,
1063       11,    -1,    -1,   341,   342,    -1,   149,   268,    -1,    16,
1064      491,   151,   270,   152,    -1,    16,   491,    53,   345,    42,
1065      258,   152,    -1,   346,   514,   151,   349,    -1,   167,   347,
1066       -1,    57,    -1,    11,    -1,    -1,   347,   348,    -1,   149,
1067      167,    -1,    31,    -1,    13,    -1,    59,    -1,    24,    -1,
1068       23,    -1,    43,    -1,    75,    -1,    71,    -1,    61,    -1,
1069       35,    -1,    70,    -1,    79,    -1,    25,    -1,    87,    -1,
1070       33,    -1,    76,    -1,   106,    -1,   114,    -1,   109,    -1,
1071      351,    -1,    39,   258,    36,   401,   353,   352,    -1,    39,
1072      454,   258,    36,   401,   353,   352,    -1,    -1,    28,    36,
1073      401,    -1,    28,   454,    36,   401,    -1,    -1,   353,   354,
1074       -1,    29,   258,    36,   401,    -1,    29,   454,   258,    36,
1075      401,    -1,   357,    -1,   357,    -1,   358,    -1,    34,   491,
1076       40,   320,    -1,    34,   454,   491,    40,   320,    -1,    82,
1077      258,    -1,   360,    -1,    -1,   360,   361,    -1,   362,    -1,
1078      363,    -1,   381,    -1,   382,    -1,   383,    -1,   377,    -1,
1079      402,    -1,   408,    -1,   491,   151,    18,   372,   371,   369,
1080      367,   365,    17,   359,    30,    18,   364,   152,    -1,    -1,
1081      491,    -1,    -1,   365,   366,    -1,   216,    -1,    -1,    60,
1082      239,   152,   368,    -1,    60,    47,   248,   152,    -1,    -1,
1083       37,   239,   152,   370,    -1,    -1,    37,    47,   248,   152,
1084       -1,    -1,   147,   258,   148,   372,    -1,    -1,    42,    -1,
1085      491,    -1,   373,   156,   491,    -1,   373,   375,    -1,   373,
1086       -1,   147,   491,   148,    -1,    24,    -1,    31,    -1,    23,
1087       -1,    -1,   491,   151,   268,   378,    37,    47,   248,   380,
1088      152,    -1,    -1,   491,   151,   268,   379,    60,    47,   248,
1089      152,    -1,   491,   151,   376,   374,    60,    47,   248,   152,
1090       -1,   491,   151,   376,   374,    37,    47,   248,   380,   152,
1091       -1,    -1,    60,    47,   248,    -1,   491,   151,   425,    -1,
1092      425,    -1,   491,   151,    88,   425,    -1,    88,   425,    -1,
1093      491,   151,   449,    -1,   449,    -1,   491,   151,    88,   449,
1094       -1,    88,   449,    -1,   491,   151,   384,    -1,   384,    -1,
1095      491,   151,    88,   384,    -1,    88,   384,    -1,   491,   151,
1096       88,   396,    -1,    88,   396,    -1,   491,   151,   396,    -1,
1097      396,    -1,   392,   130,   393,   385,   152,    -1,   386,    -1,
1098      386,    81,   258,    -1,   386,    81,   258,    28,   385,    -1,
1099      389,   387,    -1,    97,    -1,    -1,   387,   388,    -1,   149,
1100      389,    -1,   258,   390,    -1,    -1,     9,   258,    -1,    52,
1101      391,    -1,    52,    -1,     9,   258,    -1,   268,    -1,   276,
1102       -1,   395,   394,    -1,    -1,    74,    -1,   110,   258,   105,
1103       -1,   105,    -1,    -1,    38,    -1,    83,   258,    68,   392,
1104      130,   393,   397,   152,    -1,   398,   386,    81,   283,    -1,
1105       -1,   398,   399,    -1,   386,    81,   283,   149,    -1,    -1,
1106      217,    17,    -1,    17,    -1,   400,   359,    -1,    -1,   491,
1107      151,   403,   355,    36,   400,   359,   404,    -1,   407,    30,
1108      406,   152,    -1,    30,   406,   152,    -1,    -1,   491,   151,
1109      405,   350,   404,    -1,   491,   151,   518,    -1,    36,    -1,
1110       36,   491,    -1,    30,   152,    -1,    30,   491,   152,    -1,
1111      491,   151,   409,    -1,   409,    -1,    -1,   412,   410,    62,
1112      416,   414,    17,   420,    30,   411,   152,    -1,     1,    30,
1113      411,   152,    -1,    -1,   412,    62,   413,    -1,    -1,    88,
1114       -1,    -1,   491,    -1,    -1,    42,    -1,   414,   415,    -1,
1115      221,    -1,    -1,   147,    11,   148,    -1,   147,   417,   148,
1116       -1,   268,   418,    -1,    -1,   418,   419,    -1,   149,   268,
1117       -1,   421,    -1,    -1,   421,   422,    -1,   423,    -1,   425,
1118       -1,   454,   425,    -1,   430,    -1,   434,    -1,   437,    -1,
1119      441,    -1,   445,    -1,   448,    -1,   449,    -1,   450,    -1,
1120      454,   452,    -1,   452,    -1,   453,    -1,   456,    -1,   454,
1121      456,    -1,   424,    -1,   444,    66,   258,   426,   152,    -1,
1122       15,   258,   427,   426,   152,    -1,    -1,    69,   258,    -1,
1123       -1,    66,   258,    -1,    -1,   157,    -1,    -1,   157,    -1,
1124      491,    -1,    22,   428,   258,    42,   433,   431,    30,    22,
1125      429,   152,    -1,   454,    22,   428,   258,    42,   433,   431,
1126       30,    22,   429,   152,    -1,    22,     1,    30,    22,   429,
1127      152,    -1,    -1,   431,   432,    -1,   433,    -1,    81,   283,
1128      153,   420,    -1,    32,   436,   435,   152,    -1,    -1,    81,
1129      258,    -1,    -1,   491,    -1,    39,   258,    72,   420,   439,
1130      438,    30,    39,   152,    -1,    39,   258,    72,     1,    30,
1131       39,   152,    -1,    -1,    28,   420,    -1,    -1,   439,   440,
1132       -1,    29,   258,    72,   420,    -1,   444,   443,    46,   420,
1133       30,    46,   442,   152,    -1,    -1,   491,    -1,    -1,   356,
1134       -1,    -1,   491,   151,    -1,    50,   447,   446,   152,    -1,
1135       -1,    81,   258,    -1,    -1,   491,    -1,    52,   152,    -1,
1136      268,   152,    -1,    67,   451,   152,    -1,    -1,   258,    -1,
1137      392,   130,   386,   152,    -1,   392,   130,   533,   386,   152,
1138       -1,   392,   130,   104,   532,   258,   152,    -1,   392,   130,
1139      111,   532,   152,    -1,   526,    -1,   522,    -1,   455,   152,
1140       -1,   534,    -1,   454,   536,    -1,   536,    -1,   491,   151,
1141       -1,   392,   150,   258,    -1,   454,   392,   150,   258,    -1,
1142       80,   459,   458,   457,   152,    -1,    -1,    34,   258,    -1,
1143       -1,    77,   258,    -1,    -1,    54,   417,    -1,    30,    -1,
1144       30,    23,   183,    -1,    30,    13,   183,    -1,    30,    31,
1145      183,    -1,    30,   491,    -1,    -1,    42,    -1,    23,   491,
1146      461,   464,   463,   460,   152,    -1,    -1,    60,   239,   152,
1147       -1,    -1,    37,   239,   152,    -1,    34,   470,   468,   466,
1148       30,    34,   152,    -1,    34,     1,    30,    34,   152,    -1,
1149       -1,   466,   467,    -1,   471,    -1,    -1,   468,   469,    -1,
1150      179,    -1,   268,    -1,   465,    -1,   472,    -1,    34,   477,
1151      474,   473,    30,    34,   152,    -1,    -1,   465,    -1,    -1,
1152      481,   480,   152,    -1,    78,   118,   173,   152,    -1,    78,
1153      479,   152,    -1,    34,   477,   476,   152,    -1,    34,   477,
1154      476,   152,    30,    34,   152,    -1,    78,   479,    -1,    78,
1155      118,   173,   152,    -1,   481,   480,    -1,   478,   151,   258,
1156       -1,   173,    -1,    11,    -1,    57,    -1,   482,   481,   480,
1157       -1,    -1,    60,    47,   248,    -1,    -1,    37,    47,   248,
1158       -1,    31,   268,    -1,    24,   270,    -1,    55,    -1,   491,
1159       -1,   495,    -1,   483,    -1,   484,   149,   483,    -1,    87,
1160      491,   151,   490,   147,   484,   148,   152,    -1,    87,   491,
1161       42,   147,   489,   148,   152,    -1,    87,   491,    42,   147,
1162        1,   152,   148,    -1,   349,   488,    -1,    -1,   154,    -1,
1163      487,    -1,   489,   149,   487,    -1,   491,    -1,   493,    -1,
1164        7,    -1,     5,    -1,     6,    -1,     3,    -1,     4,    -1,
1165      108,   497,    30,   499,    -1,   108,     1,    30,   499,    -1,
1166       -1,   497,   498,    -1,   500,    -1,   108,    -1,   108,   491,
1167       -1,   179,    -1,   344,    -1,   224,    -1,   513,    -1,   108,
1168       19,   502,    30,   504,    -1,   108,    19,     1,    30,   504,
1169       -1,    -1,   502,   503,    -1,   505,    -1,   108,    19,    -1,
1170      108,    19,   491,    -1,   220,    -1,   100,   180,   152,    -1,
1171       -1,   100,   491,    42,   508,   510,    30,   509,   152,    -1,
1172      100,   491,    42,    30,   509,   152,    -1,   100,    -1,   100,
1173      491,    -1,   511,    -1,   510,   511,    -1,   179,    -1,   178,
1174       -1,   506,    -1,    59,   491,    42,    49,   373,   514,   152,
1175       -1,    59,   491,    42,    49,   373,   514,   548,   152,    -1,
1176       59,     1,   491,    42,    49,   152,    -1,    35,   491,    42,
1177       49,   373,   514,   152,    -1,    35,   491,    42,    49,   373,
1178      514,   548,   152,    -1,    35,   491,    42,    49,     1,   152,
1179       -1,    -1,   160,   515,   161,    -1,   160,   161,    -1,    67,
1180      270,    -1,   516,    -1,   516,    67,   270,    -1,   270,    -1,
1181      516,   517,    -1,   149,   270,    -1,    22,   258,    36,   520,
1182      521,    30,    36,   406,   152,    -1,    22,   258,    36,   520,
1183       30,    36,   406,   152,    -1,    22,     1,    36,     1,    30,
1184       36,   406,   152,    -1,    81,   454,   283,   153,   401,    -1,
1185       81,   283,   153,   401,    -1,   520,   519,    -1,   519,    -1,
1186       30,   152,    -1,    30,   491,   152,    -1,   523,    -1,   525,
1187       -1,   392,   130,   389,    81,   258,   524,   152,    -1,   392,
1188      130,   533,   389,    81,   258,   524,   152,    -1,   392,   130,
1189      389,    81,   258,   152,    -1,   392,   130,   533,   389,    81,
1190      258,   152,    -1,   392,   130,     1,   152,    -1,    28,   258,
1191       81,   258,    -1,    28,   258,    -1,   392,   130,   104,   532,
1192      258,    81,   258,   535,   152,    -1,   392,   130,   104,   532,
1193      258,    81,   258,   152,    -1,   527,    -1,   531,    -1,    83,
1194      258,    68,   428,   392,   130,   528,   529,    -1,    -1,   533,
1195       -1,   389,    81,   283,   149,   529,    -1,   530,    -1,   389,
1196       81,   283,   152,    -1,    83,   258,    68,   428,   392,   130,
1197      104,   532,   537,    -1,    -1,    40,    -1,    58,    -1,    74,
1198       -1,   110,   258,   105,    -1,   105,    -1,   455,    81,   258,
1199      535,   152,    -1,   455,    81,   258,   152,    -1,    28,   258,
1200       81,   258,    -1,   535,    28,   258,    81,   258,    -1,    28,
1201      258,    -1,    83,   258,    68,   428,   539,   150,   537,    -1,
1202      258,    81,   283,   149,   537,    -1,   538,    -1,   258,    81,
1203      283,   152,    -1,   268,    -1,   276,    -1,   541,    -1,   542,
1204       -1,    61,   491,   545,    -1,    35,   543,   545,    67,   270,
1205      544,    -1,   223,    35,   543,   545,    67,   270,   544,    -1,
1206      491,    -1,   493,    -1,    -1,    42,   491,    -1,    42,   154,
1207       -1,    -1,   107,    -1,    -1,   107,   546,   147,   242,   240,
1208      148,    -1,   147,   242,   240,   148,    -1,    59,   491,    42,
1209       49,   373,    -1,    59,   491,    42,    49,   373,   548,    -1,
1210       37,    47,   248,    -1,    -1,    37,   550,   239,    -1,   119,
1211      552,   553,   151,   312,   120,    -1,    25,    -1,    70,    -1,
1212       79,    -1,   554,    -1,   555,    -1,   559,    -1,   156,   558,
1213      491,    -1,   156,   491,    -1,   556,   558,   491,    -1,   556,
1214      491,    -1,   159,   156,    -1,   556,   159,   156,    -1,   491,
1215       -1,   491,   147,   258,   148,    -1,   557,   156,    -1,   558,
1216      557,   156,    -1,   158,   373,    -1,   162,    -1
1217 };
1218
1219 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1220 static const yytype_uint16 yyrline[] =
1221 {
1222        0,   347,   347,   350,   352,   353,   356,   357,   360,   361,
1223      362,   363,   364,   367,   368,   370,   372,   373,   375,   377,
1224      378,   385,   387,   388,   390,   391,   392,   393,   394,   395,
1225      396,   399,   400,   403,   412,   427,   428,   434,   436,   439,
1226      450,   451,   453,   454,   456,   457,   460,   462,   463,   463,
1227      465,   466,   466,   467,   471,   472,   474,   483,   484,   485,
1228      486,   488,   489,   491,   493,   494,   494,   500,   506,   507,
1229      508,   509,   510,   511,   512,   514,   515,   516,   537,   538,
1230      539,   540,   542,   543,   544,   545,   547,   548,   549,   550,
1231      552,   553,   554,   561,   562,   563,   564,   567,   568,   569,
1232      577,   578,   579,   580,   583,   584,   585,   586,   587,   588,
1233      589,   591,   592,   593,   594,   595,   596,   597,   598,   599,
1234      600,   603,   604,   605,   606,   607,   608,   609,   610,   611,
1235      612,   613,   614,   615,   617,   618,   621,   622,   623,   624,
1236      625,   626,   627,   628,   629,   630,   631,   632,   634,   635,
1237      636,   637,   638,   639,   640,   641,   643,   644,   645,   646,
1238      647,   648,   649,   650,   652,   653,   654,   655,   656,   657,
1239      658,   659,   661,   662,   663,   664,   669,   670,   672,   675,
1240      674,   678,   677,   690,   689,   701,   702,   705,   704,   708,
1241      708,   712,   713,   714,   715,   717,   719,   723,   727,   728,
1242      729,   730,   731,   732,   733,   736,   738,   739,   745,   746,
1243      747,   748,   749,   751,   760,   773,   781,   802,   803,   804,
1244      805,   806,   807,   808,   809,   810,   812,   813,   814,   815,
1245      816,   818,   819,   820,   821,   823,   829,   830,   832,   833,
1246      834,   836,   837,   838,   839,   842,   843,   844,   846,   848,
1247      849,   850,   858,   859,   861,   862,   863,   864,   865,   866,
1248      868,   869,   870,   871,   872,   873,   874,   875,   876,   877,
1249      878,   879,   880,   884,   885,   886,   887,   888,   889,   890,
1250      891,   895,   896,   897,   898,   899,   900,   901,   902,   903,
1251      904,   905,   906,   907,   908,   909,   910,   911,   912,   913,
1252      915,   916,   917,   918,   921,   922,   923,   926,   927,   930,
1253      931,   932,   933,   935,   936,   937,   938,   940,   941,   942,
1254      943,   944,   945,   947,   948,   949,   950,   951,   952,   954,
1255      955,   957,   959,   960,   961,   963,   964,   966,   969,   970,
1256      971,   972,   973,   975,   976,   978,   979,   981,   982,   984,
1257      985,   986,   987,   988,   989,   990,   997,   998,  1000,  1001,
1258     1002,  1003,  1005,  1006,  1007,  1012,  1013,  1017,  1019,  1020,
1259     1022,  1023,  1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,
1260     1034,  1035,  1036,  1037,  1039,  1048,  1049,  1051,  1052,  1053,
1261     1055,  1057,  1059,  1068,  1069,  1070,  1072,  1074,  1076,  1077,
1262     1079,  1091,  1092,  1096,  1098,  1100,  1102,  1108,  1112,  1113,
1263     1114,  1115,  1116,  1118,  1119,  1120,  1121,  1122,  1124,  1127,
1264     1130,  1131,  1133,  1135,  1136,  1138,  1139,  1141,  1142,  1144,
1265     1145,  1151,  1157,  1158,  1160,  1165,  1166,  1167,  1168,  1170,
1266     1174,  1179,  1180,  1182,  1183,  1184,  1185,  1186,  1187,  1189,
1267     1190,  1192,  1197,  1199,  1200,  1202,  1203,  1206,  1211,  1217,
1268     1218,  1221,  1222,  1224,  1226,  1227,  1228,  1229,  1230,  1231,
1269     1237,  1242,  1248,  1250,  1251,  1252,  1253,  1254,  1255,  1257,
1270     1258,  1259,  1260,  1261,  1262,  1263,  1264,  1265,  1266,  1267,
1271     1268,  1269,  1270,  1271,  1272,  1273,  1274,  1275,  1283,  1285,
1272     1286,  1288,  1289,  1290,  1291,  1292,  1293,  1294,  1296,  1298,
1273     1299,  1301,  1302,  1304,  1310,  1311,  1312,  1313,  1315,  1316,
1274     1317,  1318,  1319,  1320,  1321,  1323,  1326,  1327,  1328,  1329,
1275     1330,  1331,  1332,  1334,  1335,  1336,  1337,  1338,  1339,  1340,
1276     1341,  1342,  1344,  1345,  1348,  1349,  1351,  1353,  1354,  1355,
1277     1357,  1357,  1361,  1361,  1366,  1370,  1374,  1375,  1377,  1378,
1278     1380,  1381,  1383,  1384,  1386,  1387,  1389,  1390,  1392,  1393,
1279     1395,  1396,  1398,  1399,  1401,  1403,  1404,  1405,  1407,  1408,
1280     1409,  1410,  1411,  1413,  1414,  1415,  1416,  1417,  1418,  1420,
1281     1421,  1423,  1425,  1426,  1427,  1428,  1430,  1431,  1433,  1435,
1282     1436,  1437,  1438,  1440,  1441,  1442,  1448,  1451,  1450,  1456,
1283     1457,  1460,  1459,  1462,  1464,  1465,  1468,  1469,  1471,  1478,
1284     1486,  1485,  1492,  1494,  1495,  1497,  1498,  1500,  1501,  1503,
1285     1504,  1505,  1506,  1507,  1508,  1509,  1511,  1512,  1513,  1514,
1286     1520,  1521,  1522,  1523,  1525,  1526,  1527,  1528,  1529,  1530,
1287     1531,  1532,  1533,  1534,  1535,  1536,  1537,  1538,  1539,  1540,
1288     1542,  1544,  1545,  1546,  1547,  1548,  1550,  1551,  1553,  1554,
1289     1555,  1557,  1558,  1560,  1561,  1562,  1563,  1565,  1567,  1568,
1290     1569,  1570,  1571,  1573,  1574,  1575,  1576,  1577,  1578,  1579,
1291     1581,  1582,  1583,  1584,  1585,  1586,  1587,  1589,  1590,  1591,
1292     1592,  1593,  1595,  1597,  1599,  1600,  1601,  1603,  1604,  1605,
1293     1606,  1607,  1608,  1611,  1612,  1613,  1614,  1616,  1617,  1618,
1294     1620,  1621,  1622,  1623,  1624,  1625,  1626,  1632,  1633,  1634,
1295     1635,  1636,  1638,  1639,  1641,  1646,  1647,  1648,  1649,  1651,
1296     1656,  1657,  1658,  1659,  1660,  1661,  1662,  1664,  1674,  1675,
1297     1677,  1682,  1683,  1684,  1686,  1687,  1688,  1693,  1697,  1702,
1298     1703,  1704,  1706,  1712,  1713,  1714,  1716,  1718,  1719,  1721,
1299     1722,  1725,  1726,  1727,  1730,  1731,  1734,  1735,  1738,  1745,
1300     1751,  1753,  1755,  1756,  1758,  1759,  1763,  1764,  1766,  1771,
1301     1776,  1781,  1786,  1796,  1797,  1799,  1800,  1801,  1802,  1803,
1302     1805,  1806,  1807,  1808,  1810,  1811,  1813,  1814,  1815,  1817,
1303     1818,  1820,  1826,  1828,  1828,  1834,  1839,  1840,  1842,  1843,
1304     1845,  1846,  1847,  1849,  1857,  1862,  1864,  1869,  1874,  1876,
1305     1877,  1879,  1881,  1882,  1883,  1885,  1886,  1887,  1889,  1890,
1306     1891,  1893,  1894,  1895,  1896,  1898,  1899,  1901,  1902,  1904,
1307     1905,  1906,  1907,  1908,  1910,  1911,  1913,  1914,  1916,  1917,
1308     1919,  1922,  1923,  1925,  1926,  1928,  1930,  1933,  1934,  1935,
1309     1937,  1938,  1939,  1941,  1942,  1944,  1945,  1946,  1948,  1950,
1310     1951,  1953,  1955,  1956,  1958,  1959,  1961,  1963,  1973,  1984,
1311     1985,  1988,  1989,  1990,  1992,  1993,  1994,  1994,  1998,  2000,
1312     2005,  2011,  2014,  2013,  2024,  2031,  2032,  2033,  2035,  2036,
1313     2037,  2040,  2041,  2043,  2044,  2046,  2047,  2049,  2050,  2053,
1314     2054,  2056,  2058
1315 };
1316 #endif
1317
1318 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1319 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1320    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1321 static const char *const yytname[] =
1322 {
1323   "$end", "error", "$undefined", "t_ABSTRLIST", "t_CHARLIST", "t_DIGIT",
1324   "t_STRING", "t_LETTER", "t_ACCESS", "t_AFTER", "t_ALIAS", "t_ALL",
1325   "t_AND", "t_ARCHITECTURE", "t_ARRAY", "t_ASSERT", "t_ATTRIBUTE",
1326   "t_BEGIN", "t_BLOCK", "t_BODY", "t_BUFFER", "t_BUS", "t_CASE",
1327   "t_COMPONENT", "t_CONFIGURATION", "t_CONSTANT", "t_DISCONNECT",
1328   "t_DOWNTO", "t_ELSE", "t_ELSIF", "t_END", "t_ENTITY", "t_EXIT", "t_FILE",
1329   "t_FOR", "t_FUNCTION", "t_GENERATE", "t_GENERIC", "t_GUARDED", "t_IF",
1330   "t_IN", "t_INOUT", "t_IS", "t_LABEL", "t_LIBRARY", "t_LINKAGE", "t_LOOP",
1331   "t_MAP", "t_NAND", "t_NEW", "t_NEXT", "t_NOR", "t_NULL", "t_OF", "t_ON",
1332   "t_OPEN", "t_OR", "t_OTHERS", "t_OUT", "t_PACKAGE", "t_PORT",
1333   "t_PROCEDURE", "t_PROCESS", "t_RANGE", "t_RECORD", "t_REGISTER",
1334   "t_REPORT", "t_RETURN", "t_SELECT", "t_SEVERITY", "t_SIGNAL",
1335   "t_SUBTYPE", "t_THEN", "t_TO", "t_TRANSPORT", "t_TYPE", "t_UNITS",
1336   "t_UNTIL", "t_USE", "t_VARIABLE", "t_WAIT", "t_WHEN", "t_WHILE",
1337   "t_WITH", "t_XOR", "t_IMPURE", "t_PURE", "t_GROUP", "t_POSTPONED",
1338   "t_SHARED", "t_XNOR", "t_SLL", "t_SRA", "t_SLA", "t_SRL", "t_ROR",
1339   "t_ROL", "t_UNAFFECTED", "t_ASSUME_GUARANTEE", "t_ASSUME", "t_CONTEXT",
1340   "t_COVER", "t_DEFAULT", "t_FAIRNESS", "t_FORCE", "t_INERTIAL",
1341   "t_LITERAL", "t_PARAMETER", "t_PROTECTED", "t_PROPERTY", "t_REJECT",
1342   "t_RELEASE", "t_RESTRICT", "t_RESTRICT_GUARANTEE", "t_SEQUENCE",
1343   "t_STRONG", "t_VMODE", "t_VPROP", "t_VUNIT", "t_SLSL", "t_SRSR", "t_QQ",
1344   "t_QGT", "t_QLT", "t_QG", "t_QL", "t_QEQU", "t_QNEQU", "t_GESym",
1345   "t_GTSym", "t_LESym", "t_LTSym", "t_NESym", "t_EQSym", "t_Ampersand",
1346   "t_Minus", "t_Plus", "MED_PRECEDENCE", "t_REM", "t_MOD", "t_Slash",
1347   "t_Star", "MAX_PRECEDENCE", "t_NOT", "t_ABS", "t_DoubleStar",
1348   "t_Apostrophe", "t_LeftParen", "t_RightParen", "t_Comma", "t_VarAsgn",
1349   "t_Colon", "t_Semicolon", "t_Arrow", "t_Box", "t_Bar", "t_Dot", "t_Q",
1350   "t_At", "t_Neg", "t_LEFTBR", "t_RIGHTBR", "t_ToolDir", "$accept",
1351   "start", "design_file", "design_unit_list", "designator", "literal",
1352   "enumeration_literal", "physical_literal", "physical_literal_1",
1353   "physical_literal_no_default", "idf_list", "design_unit", "context_list",
1354   "lib_unit", "context_item", "lib_clause", "use_clause", "sel_list",
1355   "entity_decl", "entity_start", "entity_decl_5", "entity_decl_4",
1356   "entity_decl_3", "entity_decl_6", "entity_decl_2", "@1", "entity_decl_1",
1357   "@2", "arch_body", "arch_start", "arch_body_2", "arch_body_1",
1358   "arch_body_3", "config_decl", "@3", "config_start", "config_decl_2",
1359   "config_decl_1", "config_decl_3", "package_decl", "package_start",
1360   "package_decl_2", "package_decl_1", "package_decl_3", "package_decl_22",
1361   "package_body", "pack_body_start", "package_body_2", "package_body_1",
1362   "package_body_3", "common_decltve_item_1", "common_decltve_item",
1363   "entity_decltve_item", "block_decltve_item", "block_declarative_part",
1364   "package_decltve_item", "package_body_decltve_item",
1365   "subprog_decltve_item", "procs_decltve_item", "config_decltve_item",
1366   "func_prec", "subprog_decl", "subprog_spec", "@4", "@5", "@6",
1367   "subprog_spec_22", "subprog_spec_33", "@7", "@8", "subprog_spec_2",
1368   "subprog_spec_1", "subprog_body", "subprog_body_2", "subprog_body_1",
1369   "subprog_body_3", "interf_list", "interf_list_1", "interf_list_2",
1370   "interf_element", "interf_element_4", "interf_element_3",
1371   "interf_element_2", "interf_element_1", "mode", "association_list",
1372   "association_list_1", "association_list_2", "gen_association_list",
1373   "gen_association_list_1", "gen_association_list_2",
1374   "association_element", "gen_association_element", "formal_part",
1375   "actual_part", "expr", "shift_op", "and_relation", "relation",
1376   "simple_exp", "adding_op", "term", "multiplying_operator", "factor",
1377   "primary", "name", "name2", "mark", "sel_name", "suffix", "ifts_name",
1378   "sigma", "attribute_name", "aggregate", "element_association_list2",
1379   "qualified_expr", "allocator", "allocator_2", "allocator_1",
1380   "element_association", "choices", "choices_1", "choices_2", "choice",
1381   "type_decl", "type_decl_1", "type_definition",
1382   "enumeration_type_definition", "enumeration_type_definition_1",
1383   "enumeration_type_definition_2", "physical_type_definition", "unit_stat",
1384   "physical_type_definition_1", "physical_type_definition_2",
1385   "base_unit_decl", "secondary_unit_decl",
1386   "unconstrained_array_definition", "unconstrained_array_definition_1",
1387   "unconstrained_array_definition_2", "index_subtype_definition",
1388   "constrained_array_definition", "record_type_simple_name",
1389   "record_type_definition", "record_type_definition_1",
1390   "record_type_definition_2", "element_decl", "access_type_definition",
1391   "file_type_definition", "subtype_decl", "subtype_indic",
1392   "subtype_indic_1", "subtype_indic1", "subtype_indic1_1",
1393   "range_constraint", "index_constraint", "index_constraint_1",
1394   "index_constraint_2", "discrete_range", "discrete_range1", "range_spec",
1395   "direction", "constant_decl", "constant_decl_1", "signal_decl",
1396   "signal_decl_2", "signal_decl_1", "variable_decl", "variable_decl_1",
1397   "object_class", "signal_kind", "alias_decl", "alias_name_stat",
1398   "alias_spec", "file_decl", "fi_dec", "file_decl_1", "disconnection_spec",
1399   "signal_list", "signal_list_1", "signal_list_2", "attribute_decl",
1400   "attribute_spec", "entity_spec", "entity_name_list",
1401   "entity_name_list_1", "entity_name_list_2", "entity_class",
1402   "if_generation_scheme", "if_scheme", "if_scheme_2", "if_scheme_1",
1403   "if_scheme_3", "generation_scheme", "iteration_scheme", "for_scheme",
1404   "while_scheme", "concurrent_stats", "concurrent_stats_1",
1405   "concurrent_stats_2", "concurrent_stat", "block_stat", "block_stat_5",
1406   "block_stat_4", "block_stat_6", "block_stat_3", "block_stat_7",
1407   "block_stat_2", "block_stat_8", "block_stat_1", "block_stat_0",
1408   "dot_name", "mark_comp", "comp_1", "vcomp_stat", "comp_inst_stat", "@9",
1409   "@10", "comp_inst_stat_1", "concurrent_assertion_stat",
1410   "concurrent_procedure_call", "concurrent_signal_assign_stat",
1411   "condal_signal_assign", "condal_wavefrms", "wavefrm", "wavefrm_1",
1412   "wavefrm_2", "wavefrm_element", "wavefrm_element_1", "wavefrm_element_2",
1413   "target", "opts", "opts_2", "opts_1", "sel_signal_assign",
1414   "sel_wavefrms", "sel_wavefrms_1", "sel_wavefrms_2", "gen_stat1",
1415   "generate_statement_body", "generate_stat", "@11", "opstat", "@12",
1416   "generate_stat_1", "end_stats", "procs_stat", "procs_stat1", "@13",
1417   "procs_stat1_3", "procs_stat1_5", "procs_stat1_6", "procs_stat1_2",
1418   "procs_stat1_4", "procs_stat1_1", "sensitivity_list",
1419   "sensitivity_list_1", "sensitivity_list_2", "seq_stats", "seq_stats_1",
1420   "seq_stats_2", "seq_stat", "report_statement", "assertion_stat",
1421   "assertion_stat_2", "assertion_stat_1", "choice_stat", "choice_stat_1",
1422   "case_stat", "case_stat_1", "case_stat_2", "case_stat_alternative",
1423   "exit_stat", "exit_stat_2", "exit_stat_1", "if_stat", "if_stat_2",
1424   "if_stat_1", "if_stat_3", "loop_stat", "loop_stat_3", "loop_stat_2",
1425   "loop_stat_1", "next_stat", "next_stat_2", "next_stat_1", "null_stat",
1426   "procedure_call_stat", "return_stat", "return_stat_1",
1427   "signal_assign_stat", "variable_assign_stat", "lable",
1428   "variable_assign_stat_1", "wait_stat", "wait_stat_3", "wait_stat_2",
1429   "wait_stat_1", "comp_end_dec", "iss", "comp_decl", "comp_decl_2",
1430   "comp_decl_1", "block_config", "block_config_2", "block_config_3",
1431   "block_config_1", "block_config_4", "block_spec", "config_item",
1432   "comp_config", "comp_config_2", "comp_config_1", "config_spec",
1433   "comp_spec_stat", "comp_spec", "inst_list", "binding_indic",
1434   "binding_indic_2", "binding_indic_1", "entity_aspect",
1435   "group_constituent", "group_constituent_list", "group_declaration",
1436   "group_template_declaration", "entity_class_entry", "tbox",
1437   "entity_class_entry_list", "group_name", "t_Identifier",
1438   "t_BitStringLit", "t_StringLit", "t_AbstractLit", "t_CharacterLit",
1439   "protected_type_declaration", "protected_stats", "protected_stat_decl_1",
1440   "protected_stat_1", "protected_type_declaration_item",
1441   "protected_type_body", "protected_body_stats",
1442   "protected_body_stat_decl_1", "protected_body_stat_1",
1443   "protected_type_body_declaration_item", "context_ref", "context_decl",
1444   "@14", "context_stat_1", "libustcont_stats", "libustcont_stat",
1445   "package_instantiation_decl", "subprogram_instantiation_decl",
1446   "signature", "signature1", "mark_stats", "mark_stats_1", "case_scheme",
1447   "when_stats_1", "when_stats", "ttend", "conditional_signal_assignment",
1448   "conditional_waveform_assignment", "else_wave_list",
1449   "conditional_force_assignment", "selected_signal_assignment",
1450   "selected_waveform_assignment", "delay_stat", "sel_wave_list",
1451   "sel_wave_list_1", "selected_force_assignment", "inout_stat",
1452   "delay_mechanism", "conditional_variable_assignment", "else_stat",
1453   "selected_variable_assignment", "sel_var_list", "sel_var_list_1",
1454   "select_name", "interface_subprogram_decl", "iproc", "ifunc",
1455   "func_name", "return_is", "param", "@15", "interface_package_decl",
1456   "gen_assoc_list", "gen_interface_list", "@16", "external_name",
1457   "sig_stat", "external_pathname", "absolute_pathname",
1458   "relative_pathname", "neg_list", "pathname_element",
1459   "pathname_element_list", "package_path_name", "tool_directive", 0
1460 };
1461 #endif
1462
1463 # ifdef YYPRINT
1464 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1465    token YYLEX-NUM.  */
1466 static const yytype_uint16 yytoknum[] =
1467 {
1468        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1469      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1470      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1471      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1472      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1473      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1474      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1475      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1476      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1477      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1478      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1479      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1480      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1481      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1482      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1483      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1484      415,   416,   417
1485 };
1486 # endif
1487
1488 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1489 static const yytype_uint16 yyr1[] =
1490 {
1491        0,   163,   164,   165,   166,   166,   167,   167,   168,   168,
1492      168,   168,   168,   169,   169,   170,   171,   171,   172,   173,
1493      173,   174,   175,   175,   176,   176,   176,   176,   176,   176,
1494      176,   177,   177,   178,   179,   180,   180,   181,   181,   182,
1495      183,   183,   184,   184,   185,   185,   186,   187,   188,   187,
1496      189,   190,   189,   189,   191,   191,   192,   193,   193,   193,
1497      193,   194,   194,   195,   196,   197,   196,   198,   199,   199,
1498      199,   199,   200,   200,   201,   202,   202,   203,   204,   204,
1499      204,   204,   205,   205,   205,   206,   207,   207,   207,   207,
1500      208,   208,   209,   210,   210,   210,   210,   211,   211,   212,
1501      213,   213,   213,   213,   214,   214,   214,   214,   214,   214,
1502      214,   215,   215,   215,   215,   215,   215,   215,   215,   215,
1503      215,   216,   216,   216,   216,   216,   216,   216,   216,   216,
1504      216,   216,   216,   216,   217,   217,   218,   218,   218,   218,
1505      218,   218,   218,   218,   218,   218,   218,   218,   219,   219,
1506      219,   219,   219,   219,   219,   219,   220,   220,   220,   220,
1507      220,   220,   220,   220,   221,   221,   221,   221,   221,   221,
1508      221,   221,   222,   222,   222,   222,   223,   223,   224,   226,
1509      225,   227,   225,   228,   225,   229,   229,   231,   230,   232,
1510      230,   233,   233,   233,   233,   234,   235,   235,   236,   236,
1511      236,   236,   236,   236,   236,   237,   237,   238,   239,   239,
1512      240,   240,   241,   242,   242,   242,   242,   243,   243,   244,
1513      244,   244,   245,   245,   246,   246,   247,   247,   247,   247,
1514      247,   248,   249,   249,   250,   251,   251,   251,   252,   252,
1515      253,   254,   254,   254,   254,   255,   255,   255,   256,   257,
1516      257,   257,   258,   258,   259,   259,   259,   259,   259,   259,
1517      260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1518      260,   260,   260,   261,   261,   261,   261,   261,   261,   261,
1519      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
1520      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
1521      262,   262,   262,   262,   263,   263,   263,   264,   264,   265,
1522      265,   265,   265,   266,   266,   266,   266,   267,   267,   267,
1523      267,   267,   267,   268,   268,   268,   269,   269,   269,   270,
1524      270,   271,   272,   272,   272,   273,   273,   274,   275,   275,
1525      275,   275,   275,   276,   276,   277,   277,   278,   278,   279,
1526      279,   279,   280,   280,   281,   281,   282,   282,   283,   284,
1527      284,   285,   286,   286,   286,   287,   287,   287,   288,   288,
1528      289,   289,   289,   289,   289,   289,   289,   289,   289,   289,
1529      290,   291,   291,   292,   293,   294,   294,   295,   295,   296,
1530      297,   298,   299,   300,   300,   301,   302,   303,   304,   304,
1531      305,   306,   306,   307,   308,   309,   310,   311,   311,   312,
1532      312,   313,   313,   314,   314,   314,   315,   315,   316,   317,
1533      318,   318,   319,   320,   320,   321,   321,   322,   322,   323,
1534      323,   324,   325,   325,   326,   327,   327,   328,   328,   329,
1535      329,   330,   330,   331,   331,   331,   331,   331,   331,   332,
1536      332,   333,   333,   334,   334,   335,   335,   336,   336,   337,
1537      337,   338,   338,   339,   340,   340,   340,   341,   341,   342,
1538      343,   344,   345,   346,   346,   346,   347,   347,   348,   349,
1539      349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
1540      349,   349,   349,   349,   349,   349,   349,   349,   350,   351,
1541      351,   352,   352,   352,   353,   353,   354,   354,   355,   356,
1542      356,   357,   357,   358,   359,   360,   360,   361,   362,   362,
1543      362,   362,   362,   362,   362,   363,   364,   364,   365,   365,
1544      366,   367,   367,   368,   369,   369,   370,   370,   371,   371,
1545      372,   372,   373,   373,   374,   374,   375,   376,   376,   376,
1546      378,   377,   379,   377,   377,   377,   380,   380,   381,   381,
1547      381,   381,   382,   382,   382,   382,   383,   383,   383,   383,
1548      383,   383,   383,   383,   384,   385,   385,   385,   386,   386,
1549      387,   387,   388,   389,   390,   390,   390,   390,   391,   392,
1550      392,   393,   394,   394,   394,   394,   395,   395,   396,   397,
1551      398,   398,   399,   400,   400,   400,   401,   403,   402,   404,
1552      404,   405,   402,   402,   406,   406,   407,   407,   408,   408,
1553      410,   409,   409,   411,   411,   412,   412,   413,   413,   414,
1554      414,   414,   415,   416,   416,   416,   417,   418,   418,   419,
1555      420,   421,   421,   422,   423,   423,   423,   423,   423,   423,
1556      423,   423,   423,   423,   423,   423,   423,   423,   423,   423,
1557      424,   425,   426,   426,   427,   427,   428,   428,   429,   429,
1558      429,   430,   430,   430,   431,   431,   432,   433,   434,   435,
1559      435,   436,   436,   437,   437,   438,   438,   439,   439,   440,
1560      441,   442,   442,   443,   443,   444,   444,   445,   446,   446,
1561      447,   447,   448,   449,   450,   451,   451,   452,   452,   452,
1562      452,   452,   452,   453,   453,   453,   453,   454,   455,   455,
1563      456,   457,   457,   458,   458,   459,   459,   460,   460,   460,
1564      460,   460,   461,   461,   462,   463,   463,   464,   464,   465,
1565      465,   466,   466,   467,   468,   468,   469,   470,   471,   471,
1566      472,   473,   473,   474,   474,   474,   474,   475,   475,   476,
1567      476,   476,   477,   478,   478,   478,   479,   480,   480,   481,
1568      481,   482,   482,   482,   483,   483,   484,   484,   485,   486,
1569      486,   487,   488,   488,   489,   489,   490,   490,   491,   492,
1570      493,   494,   495,   496,   496,   497,   497,   498,   499,   499,
1571      500,   500,   500,   500,   501,   501,   502,   502,   503,   504,
1572      504,   505,   506,   508,   507,   507,   509,   509,   510,   510,
1573      511,   511,   511,   512,   512,   512,   513,   513,   513,   514,
1574      514,   514,   515,   515,   515,   516,   516,   517,   518,   518,
1575      518,   519,   519,   520,   520,   521,   521,   522,   522,   523,
1576      523,   523,   523,   523,   524,   524,   525,   525,   526,   526,
1577      527,   528,   528,   529,   529,   530,   531,   532,   532,   532,
1578      533,   533,   533,   534,   534,   535,   535,   535,   536,   537,
1579      537,   538,   539,   539,   540,   540,   541,   542,   542,   543,
1580      543,   544,   544,   544,   545,   545,   546,   545,   545,   547,
1581      547,   548,   550,   549,   551,   552,   552,   552,   553,   553,
1582      553,   554,   554,   555,   555,   556,   556,   557,   557,   558,
1583      558,   559,   560
1584 };
1585
1586 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1587 static const yytype_uint8 yyr2[] =
1588 {
1589        0,     2,     1,     1,     1,     2,     1,     1,     1,     1,
1590        1,     1,     1,     1,     1,     2,     0,     1,     2,     1,
1591        3,     2,     0,     2,     1,     1,     1,     1,     1,     1,
1592        1,     1,     1,     3,     3,     1,     3,     4,     7,     3,
1593        0,     1,     0,     2,     0,     2,     1,     0,     0,     4,
1594        0,     0,     4,     3,     7,     5,     5,     0,     1,     2,
1595        1,     0,     2,     1,     5,     0,     7,     5,     0,     1,
1596        1,     2,     0,     2,     1,     5,     5,     3,     0,     1,
1597        2,     1,     0,     1,     2,     1,     2,     1,     2,     3,
1598        5,     5,     4,     0,     1,     2,     3,     0,     2,     1,
1599        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1600        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1601        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1602        1,     1,     1,     1,     1,     2,     1,     1,     1,     1,
1603        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1604        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1605        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1606        1,     1,     1,     1,     1,     4,     1,     1,     2,     0,
1607        4,     0,     7,     0,     6,     1,     2,     0,     3,     0,
1608        2,     0,     2,     1,     1,     1,     8,     6,     0,     1,
1609        1,     1,     2,     2,     2,     0,     2,     1,     4,     3,
1610        0,     2,     2,     1,     1,     2,     7,     0,     2,     0,
1611        1,     1,     0,     1,     0,     1,     1,     1,     1,     1,
1612        1,     4,     0,     2,     2,     4,     3,     3,     0,     2,
1613        2,     3,     1,     1,     1,     1,     3,     1,     1,     1,
1614        1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1615        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1616        3,     3,     3,     2,     1,     2,     2,     2,     2,     3,
1617        4,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1618        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
1619        2,     2,     1,     3,     1,     1,     1,     1,     3,     1,
1620        1,     1,     1,     1,     2,     2,     3,     1,     1,     1,
1621        1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
1622        1,     3,     1,     1,     1,     2,     2,     1,     3,     4,
1623        3,     3,     3,     2,     5,     4,     3,     5,     3,     4,
1624        3,     2,     0,     1,     0,     1,     3,     1,     2,     0,
1625        2,     2,     1,     1,     1,     4,     4,     3,     0,     2,
1626        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1627        4,     0,     2,     2,     6,     2,     1,     0,     2,     1,
1628        2,     4,     7,     0,     2,     2,     3,     4,     0,     1,
1629        6,     0,     2,     1,     4,     2,     3,     5,     3,     2,
1630        1,     0,     1,     3,     2,     3,     0,     1,     2,     4,
1631        0,     2,     2,     1,     1,     1,     3,     1,     3,     1,
1632        1,     6,     0,     2,     7,     0,     2,     0,     1,     6,
1633        7,     0,     2,     1,     1,     1,     2,     1,     1,     1,
1634        1,     7,     6,     1,     1,     0,     2,     8,     6,     0,
1635        4,     0,     1,     7,     2,     1,     1,     0,     2,     2,
1636        5,     7,     4,     2,     1,     1,     0,     2,     2,     1,
1637        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1638        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
1639        7,     0,     3,     4,     0,     2,     4,     5,     1,     1,
1640        1,     4,     5,     2,     1,     0,     2,     1,     1,     1,
1641        1,     1,     1,     1,     1,    14,     0,     1,     0,     2,
1642        1,     0,     4,     4,     0,     4,     0,     4,     0,     4,
1643        0,     1,     1,     3,     2,     1,     3,     1,     1,     1,
1644        0,     9,     0,     8,     8,     9,     0,     3,     3,     1,
1645        4,     2,     3,     1,     4,     2,     3,     1,     4,     2,
1646        4,     2,     3,     1,     5,     1,     3,     5,     2,     1,
1647        0,     2,     2,     2,     0,     2,     2,     1,     2,     1,
1648        1,     2,     0,     1,     3,     1,     0,     1,     8,     4,
1649        0,     2,     4,     0,     2,     1,     2,     0,     8,     4,
1650        3,     0,     5,     3,     1,     2,     2,     3,     3,     1,
1651        0,    10,     4,     0,     3,     0,     1,     0,     1,     0,
1652        1,     2,     1,     0,     3,     3,     2,     0,     2,     2,
1653        1,     0,     2,     1,     1,     2,     1,     1,     1,     1,
1654        1,     1,     1,     1,     2,     1,     1,     1,     2,     1,
1655        5,     5,     0,     2,     0,     2,     0,     1,     0,     1,
1656        1,    10,    11,     6,     0,     2,     1,     4,     4,     0,
1657        2,     0,     1,     9,     7,     0,     2,     0,     2,     4,
1658        8,     0,     1,     0,     1,     0,     2,     4,     0,     2,
1659        0,     1,     2,     2,     3,     0,     1,     4,     5,     6,
1660        5,     1,     1,     2,     1,     2,     1,     2,     3,     4,
1661        5,     0,     2,     0,     2,     0,     2,     1,     3,     3,
1662        3,     2,     0,     1,     7,     0,     3,     0,     3,     7,
1663        5,     0,     2,     1,     0,     2,     1,     1,     1,     1,
1664        7,     0,     1,     0,     3,     4,     3,     4,     7,     2,
1665        4,     2,     3,     1,     1,     1,     3,     0,     3,     0,
1666        3,     2,     2,     1,     1,     1,     1,     3,     8,     7,
1667        7,     2,     0,     1,     1,     3,     1,     1,     1,     1,
1668        1,     1,     1,     4,     4,     0,     2,     1,     1,     2,
1669        1,     1,     1,     1,     5,     5,     0,     2,     1,     2,
1670        3,     1,     3,     0,     8,     6,     1,     2,     1,     2,
1671        1,     1,     1,     7,     8,     6,     7,     8,     6,     0,
1672        3,     2,     2,     1,     3,     1,     2,     2,     9,     8,
1673        8,     5,     4,     2,     1,     2,     3,     1,     1,     7,
1674        8,     6,     7,     4,     4,     2,     9,     8,     1,     1,
1675        8,     0,     1,     5,     1,     4,     9,     0,     1,     1,
1676        1,     3,     1,     5,     4,     4,     5,     2,     7,     5,
1677        1,     4,     1,     1,     1,     1,     3,     6,     7,     1,
1678        1,     0,     2,     2,     0,     1,     0,     6,     4,     5,
1679        6,     3,     0,     3,     6,     1,     1,     1,     1,     1,
1680        1,     3,     2,     3,     2,     2,     3,     1,     4,     2,
1681        3,     2,     1
1682 };
1683
1684 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1685    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
1686    means the default is an error.  */
1687 static const yytype_uint16 yydefact[] =
1688 {
1689       22,     0,     2,    22,     4,     0,     1,     5,     0,     0,
1690        0,     0,     0,     0,     0,    21,    23,    31,    32,    24,
1691        0,    27,     0,    25,     0,    26,     0,    28,     0,    29,
1692       30,   788,     0,     0,     0,     0,    19,     0,     0,     0,
1693      790,     0,     0,     0,   324,   323,   330,   328,   327,   329,
1694      326,   325,     0,     0,     0,    47,     0,     0,     0,     0,
1695        0,   902,     0,    83,    87,     0,     0,     0,     0,    39,
1696        0,    33,     0,     0,    77,   905,   906,   907,     0,     0,
1697       34,     0,   337,     0,   336,     0,   335,     0,     0,   813,
1698      727,     0,     0,     0,    48,    44,    57,     0,     0,   515,
1699        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1700        0,   177,   176,     0,     0,   922,   110,    62,   100,   102,
1701      132,   121,    63,     0,   109,     0,   122,   104,   105,   106,
1702      128,   129,   108,   107,   127,   124,   125,   123,   126,   131,
1703      130,   101,   103,   133,    68,     0,     0,     0,     0,   173,
1704       73,    74,   172,     0,   174,    78,     0,    78,     0,   145,
1705       84,   136,    85,     0,   141,   142,   140,   138,   139,   137,
1706      144,   143,   146,   147,     0,    86,    88,    93,    93,    98,
1707      155,   148,    99,   149,   150,   153,   154,   152,   151,     0,
1708        0,    20,     0,    92,     0,     0,     0,     0,     0,   908,
1709      909,     0,   910,   330,   792,   334,   332,   331,     6,     7,
1710      333,     0,   791,   789,     0,    12,     0,   364,     0,     0,
1711        0,     0,     0,     0,   318,    11,   238,   245,   252,   253,
1712      274,   317,   323,   330,   319,     0,   320,   321,     0,   425,
1713      247,    10,     8,     9,   342,   340,   341,   338,     0,   323,
1714        0,     0,    40,    40,    40,   731,    37,    53,     0,     0,
1715        0,    42,    60,     0,    58,   455,   453,   454,     0,     0,
1716        0,   732,     0,   466,   465,   467,     0,     0,   764,   765,
1717      763,   769,     0,   183,     6,   179,     0,     0,     0,     0,
1718        0,     0,     0,     0,     0,     0,   178,    70,     0,    69,
1719        0,     0,   747,   744,     0,     0,    68,    81,     0,    79,
1720      903,     0,     0,    89,     0,     0,    94,     0,    56,    67,
1721        0,   829,   542,   912,     0,     0,   921,   915,     0,     0,
1722      914,     0,   236,   352,   351,   237,   273,   276,   275,   278,
1723      277,   362,     0,     0,   359,   363,     0,   430,   429,     0,
1724        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1725        0,     0,   254,   255,   256,   257,   258,   259,     0,     0,
1726        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1727        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1728      337,   416,   414,   343,     0,     0,    18,   339,   816,     0,
1729        0,   821,   820,   822,     0,   818,   729,    41,   728,   730,
1730        0,   443,   447,     0,     0,     0,   444,   448,   445,     0,
1731        0,   210,     0,   225,   214,   884,   885,   213,    52,     0,
1732      515,     0,    45,   120,   111,    46,   112,   116,   117,   115,
1733      113,   114,   119,   118,    59,    55,     0,     0,     0,     0,
1734       57,     0,     0,     0,   626,     0,   589,   590,   516,   517,
1735      518,   522,   519,   520,   521,   567,     0,   573,   523,   524,
1736      619,   620,   559,   563,   329,   733,   737,     0,   464,     0,
1737        0,     0,     0,     0,   767,     0,   189,     0,   191,     0,
1738      408,     0,   367,     0,     0,     0,     0,     0,     0,     0,
1739      181,     0,     0,    71,    64,     0,   741,     0,     0,    80,
1740       75,    76,     0,   901,    95,    90,    91,   825,     0,     0,
1741        0,     0,   919,   911,     0,   411,     0,   410,   916,   913,
1742      353,   354,   350,     0,   322,     0,     0,   358,   235,     0,
1743      239,   426,   270,   267,   268,   271,   272,   269,   261,   266,
1744      264,   263,   262,   265,   299,   298,   297,   296,   295,   294,
1745      288,   290,   287,   289,   292,   291,   283,   286,   285,   282,
1746      281,   293,   284,   260,   279,     0,     0,     0,     0,     0,
1747      302,   307,   313,   427,   418,     0,   348,   417,   415,   413,
1748      357,   346,     0,   246,   817,   815,     0,     0,   819,   209,
1749      889,   890,   894,     0,   894,   446,     0,     0,     0,    19,
1750       49,    43,     0,   456,     0,   475,   474,   476,     0,   829,
1751      323,     0,   623,   664,     0,   569,   571,   561,   565,   703,
1752      596,     0,     0,     0,   735,   432,     0,   468,   323,     0,
1753      329,     0,     0,     0,   773,     0,   759,   769,   757,     0,
1754      761,   762,   187,   194,   193,     0,     0,   185,     0,   195,
1755      180,   437,     0,   365,     0,     0,     0,     0,     0,     0,
1756      369,   370,   372,   373,   374,   375,   376,   377,   371,   378,
1757      379,   366,   441,     0,     0,   786,   787,     0,   189,   198,
1758      641,   163,   156,   207,   157,   206,   160,   158,   159,   162,
1759      161,     0,   746,     0,   745,   175,    65,   250,   244,     0,
1760      243,   232,     0,   242,   249,   317,    96,   543,     0,   831,
1761      835,     0,   833,   823,     0,     0,   920,   335,   409,   904,
1762      355,   349,   280,   345,   356,     0,   360,   240,   300,   301,
1763      315,   314,   304,   305,   306,     0,     0,   310,   311,   312,
1764      309,     0,     0,   362,     0,   812,     0,   895,   224,     0,
1765        0,   886,   894,   208,   224,   211,   222,    38,     0,   829,
1766      473,     0,     0,   470,    54,   626,     0,     0,     0,   662,
1767        0,   597,     0,   592,   633,   540,     0,   549,   547,   548,
1768      626,   550,     0,   566,   572,     0,     0,   618,   558,   562,
1769      613,     0,     0,     0,     0,     0,   469,     0,   461,     0,
1770        0,   770,   772,   771,     0,   767,     0,     0,     0,   192,
1771      190,     0,   186,     0,   829,   449,   450,   435,   438,   407,
1772      405,     0,     0,     0,     0,   401,     0,     0,     0,   381,
1773       14,    13,     0,     0,     0,     0,   480,   483,   482,   491,
1774      479,   493,   488,   484,   481,   487,   489,   486,   485,   494,
1775      490,   492,   495,   497,   496,   782,   784,     0,     0,   441,
1776        0,   200,   201,   199,     0,     0,   640,   740,     0,     0,
1777      748,   742,   743,   749,    66,   251,     0,     0,   323,   830,
1778        0,     0,   836,   824,   918,   344,   362,   361,   303,   428,
1779      308,   316,   347,   356,   814,     0,   210,     0,     0,     0,
1780      212,   229,   226,   228,   230,   227,     0,   223,   452,     0,
1781        0,   477,     0,     0,   622,   627,   665,     0,     0,   589,
1782        0,   579,   584,     0,   575,   580,   593,   595,     0,   591,
1783        0,   629,   541,   538,     0,     0,   568,   570,   560,   564,
1784        0,     0,   545,     0,     0,     0,   508,     0,     0,   498,
1785      738,     0,     0,   433,   431,     0,   462,     0,     0,   458,
1786      760,   766,     0,   768,   188,   184,   828,     0,     0,     0,
1787      323,   393,   423,   420,   424,     0,   323,     0,     0,     0,
1788        0,     0,     0,   800,   802,   801,   796,   797,   803,     0,
1789      387,     0,   442,   439,     0,   783,   781,     0,     0,   776,
1790        0,   774,   775,     0,     0,   204,   203,   202,   197,   198,
1791        0,   681,     0,   700,     0,   705,   725,     0,     0,   642,
1792      643,   659,   644,   646,   647,   648,   649,   693,   650,   651,
1793      652,   653,   655,   656,     0,     0,   657,   329,   712,   847,
1794      848,   711,   858,   859,   714,   716,     0,   753,   329,   231,
1795        0,   233,   241,   323,   837,   224,     0,   891,   899,     0,
1796      219,   451,   478,   471,   472,   624,   628,   663,   661,   596,
1797        0,   587,   583,   574,     0,   578,     0,     0,   637,     0,
1798      630,     0,     0,   534,     0,     0,     0,     0,     0,   544,
1799        0,     0,     0,     0,   603,     0,     0,   329,     0,   612,
1800        0,   736,   734,   463,     0,     0,   758,   826,     0,   436,
1801      434,     0,     0,     0,   397,     0,     0,   402,   403,   798,
1802      794,     0,     0,   811,   807,   808,   793,   380,     0,   382,
1803        0,   390,   780,   779,   785,     0,     0,   440,   182,     0,
1804        0,   667,     0,   679,   682,     0,   698,   701,   702,   706,
1805        0,     0,   723,     0,     0,     0,     0,     0,   694,   509,
1806      510,     0,   666,     0,   645,   654,   658,   715,     0,   713,
1807      717,   739,     0,   751,   767,   234,   210,   898,     0,   887,
1808      900,   891,   220,   221,   217,   600,   585,     0,   586,   576,
1809        0,   581,   594,   634,   636,   635,   641,   171,   164,   632,
1810      165,   168,   166,   167,   631,   170,   169,     0,     0,   531,
1811        0,     0,   844,     0,     0,     0,     0,     0,     0,     0,
1812        0,   717,   605,   134,     0,   515,   603,     0,   614,   616,
1813        0,     0,     0,   457,   460,   827,   396,     0,     0,   394,
1814      419,     0,   421,   404,   398,   799,     0,   805,   804,   383,
1815        0,   388,   389,     0,   778,   777,   196,     0,     0,     0,
1816        0,     0,     0,     0,   704,   726,     0,   721,   666,     0,
1817      870,   867,   872,     0,   867,     0,   580,     0,   718,   662,
1818      513,   641,     0,     0,     0,     0,     0,   752,     0,     0,
1819        0,   893,   892,   888,     0,   216,     0,     0,   588,     0,
1820      582,     0,   638,     0,   540,     0,     0,   528,     0,     0,
1821        0,     0,   843,     0,   556,     0,   546,   556,     0,     0,
1822      323,   511,   604,   135,     0,   515,   504,   603,   615,   610,
1823      617,     0,     0,   323,   395,   422,   400,   399,   809,   386,
1824      384,    16,   668,     0,   680,   678,     0,   687,   699,   697,
1825      724,     0,     0,     0,   853,   868,   869,     0,     0,     0,
1826      707,     0,     0,   580,     0,     0,     0,   719,     0,   874,
1827        0,     0,   756,     0,   754,   897,   218,   598,     0,   601,
1828      577,   639,   623,   539,   536,     0,     0,     0,   603,     0,
1829        0,   845,     0,     0,     0,     0,   553,     0,   554,   512,
1830      608,   606,   501,   504,   609,   392,     0,   810,   385,     0,
1831        0,    17,   669,     0,   670,     0,   674,     0,   685,   722,
1832      720,   589,   590,     0,     0,     0,   871,   710,     0,   708,
1833        0,   660,     0,     0,   877,     0,   873,   755,     0,     0,
1834        0,     0,   535,     0,   515,   530,   529,     0,   842,   603,
1835        0,   846,     0,     0,   551,   555,     0,     0,   499,   505,
1836      501,   391,    15,   673,     0,     0,     0,   641,     0,     0,
1837      688,   861,     0,     0,   709,     0,   851,     0,     0,   691,
1838      674,     0,     0,   750,   599,   621,     0,     0,   532,     0,
1839      840,   841,   839,     0,   557,   603,     0,     0,     0,     0,
1840      500,   641,     0,   675,   676,   684,   686,     0,     0,   867,
1841        0,   862,     0,   878,   880,     0,   855,   849,   852,     0,
1842        0,   692,     0,   875,     0,   602,     0,     0,     0,   838,
1843      502,   603,   603,     0,   677,   668,   641,     0,     0,     0,
1844      860,   864,     0,   857,     0,     0,   850,   690,     0,   876,
1845      537,     0,   526,   503,   506,   603,     0,   689,   683,   866,
1846        0,     0,   856,   854,   668,   533,     0,   527,   507,   671,
1847        0,     0,   881,     0,   525,     0,   865,   879,   672,   863
1848 };
1849
1850 /* YYDEFGOTO[NTERM-NUM].  */
1851 static const yytype_int16 yydefgoto[] =
1852 {
1853       -1,     1,     2,     3,   873,   224,   839,  1419,  1420,   225,
1854      280,     4,     5,    15,    16,   401,   116,    42,    19,    20,
1855      406,   431,   261,   432,    95,   260,    55,    93,    21,    22,
1856      263,    57,   117,    23,   884,    24,   298,    59,   150,   118,
1857       26,   308,    62,   160,    63,   119,    28,   315,    66,   179,
1858      120,   121,   435,  1233,  1234,   162,   182,   693,  1209,   151,
1859      123,   124,   125,   488,   688,   486,   653,   654,   818,   655,
1860      656,   660,   126,   874,   502,   695,   259,   607,   765,   421,
1861     1305,  1194,   916,   422,   917,   513,   886,  1061,    86,   346,
1862      540,   711,   226,   712,   713,   932,   387,   228,   229,   579,
1863      745,   580,   751,   581,   230,   231,    44,   249,   233,   207,
1864       47,    87,    48,   234,   235,   236,   237,   532,   731,   342,
1865      343,   537,   736,   344,   127,   495,   670,   671,   999,  1139,
1866      672,  1350,  1140,  1261,  1000,  1262,   673,  1122,  1249,   981,
1867      674,  1346,   675,   988,  1127,   835,   676,   677,   128,   982,
1868      728,   527,   588,   392,   832,  1123,  1252,   983,   345,   984,
1869      349,   129,   805,   130,   979,   827,   131,   844,   423,   828,
1870      132,   265,   447,   133,   810,   967,   134,   276,   478,   637,
1871      135,   136,   618,   619,   770,   921,   865,   958,   959,  1468,
1872     1412,  1469,   955,  1168,   956,  1170,   269,   270,   458,   459,
1873      460,  1576,  1396,  1456,  1317,  1498,  1219,  1452,  1093,   943,
1874      321,   953,  1099,   792,   461,   950,   951,  1405,   462,   463,
1875      464,   465,   933,   934,  1085,  1201,   935,  1082,  1198,   466,
1876      782,   939,   783,   467,  1306,  1307,  1389,  1335,  1336,   468,
1877      795,  1109,   796,  1240,  1110,   469,   470,   631,   776,   471,
1878     1075,  1091,  1214,   941,  1089,  1204,  1312,   875,   876,  1029,
1879     1030,  1031,   472,   928,   779,  1152,  1423,  1033,  1475,  1513,
1880     1514,  1034,  1270,  1153,  1035,  1479,  1428,  1480,  1036,  1530,
1881     1171,  1037,  1038,  1273,  1156,  1039,   473,  1041,  1160,  1042,
1882     1043,  1044,  1045,  1046,  1362,  1277,  1162,    91,   476,   137,
1883      803,   634,   153,   703,   881,   506,   704,   303,   882,   883,
1884     1298,  1183,   138,   483,   281,   282,   646,   650,   484,   647,
1885     1009,  1010,   139,   140,   866,  1006,   867,   684,    49,   241,
1886       50,   242,   243,   679,   838,   996,  1130,   997,   680,   991,
1887     1134,  1257,  1135,   403,    29,   251,   399,   404,   405,   141,
1888      142,   520,   721,   722,   892,   800,  1222,  1223,  1323,  1048,
1889     1049,  1487,  1050,  1051,  1052,  1520,  1550,  1551,  1053,  1367,
1890     1287,  1054,  1380,  1055,  1523,  1524,  1434,   424,   425,   426,
1891      602,  1189,   759,   905,   427,   176,   657,   156,    51,    78,
1892      198,   199,   200,   201,   324,   325,   202,   143
1893 };
1894
1895 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1896    STATE-NUM.  */
1897 #define YYPACT_NINF -1403
1898 static const yytype_int16 yypact[] =
1899 {
1900    -1403,   173, -1403,   185, -1403,   676, -1403, -1403,   402,   402,
1901      402,   402,   648,   303,   402, -1403, -1403, -1403, -1403, -1403,
1902     2417, -1403,  1192, -1403,   417, -1403,  2456, -1403,  2489, -1403,
1903    -1403, -1403,   323,   438,   487,   289, -1403,   402,   402,   530,
1904    -1403,   369,   499,   360,   204,   204,   601, -1403,   435, -1403,
1905    -1403, -1403,   550,   586,    82,   569,   606,  1545,   634,   492,
1906      647, -1403,  2594, -1403,    81,   692,  2666,   402,   402, -1403,
1907      402, -1403,   664,   685,   691, -1403, -1403, -1403,   747,   303,
1908    -1403,   829, -1403,  1313, -1403,   341, -1403,   365,  2084,   718,
1909      708,   623,   630,   673, -1403, -1403,   723,   681,   402, -1403,
1910      402,   402,   546,   402,   335,   681,   402,   402,   744,   841,
1911      402, -1403, -1403,   402,   758, -1403, -1403, -1403, -1403, -1403,
1912    -1403, -1403, -1403,   838, -1403,   161, -1403, -1403, -1403, -1403,
1913    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
1914    -1403, -1403, -1403, -1403,   617,   402,   211,   188,   402, -1403,
1915    -1403, -1403, -1403,   867, -1403,   442,   673,   442,   848, -1403,
1916    -1403, -1403, -1403,   707, -1403, -1403, -1403, -1403, -1403, -1403,
1917    -1403, -1403, -1403, -1403,   857, -1403,   779,   540,   540, -1403,
1918    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,   893,
1919      902, -1403,   877, -1403,   402,   402,   402,   792,   812, -1403,
1920    -1403,    77, -1403,   678, -1403, -1403, -1403, -1403, -1403, -1403,
1921    -1403,   852, -1403, -1403,   303, -1403,   859, -1403,   374,   374,
1922      374,   374,   374,  2013, -1403, -1403, -1403,   107,   628,  2186,
1923      840,   360,   381, -1403, -1403,   615, -1403, -1403,   844, -1403,
1924      861, -1403,   402, -1403, -1403, -1403, -1403, -1403,   878,   645,
1925      918,   507,   402,   402,   402, -1403, -1403, -1403,  1341,   876,
1926      673,  2633,   402,   888, -1403,   842, -1403, -1403,    71,   959,
1927      837,   988,   803, -1403, -1403,   360,   891,   824, -1403, -1403,
1928      895,    93,   897, -1403,  1004, -1403,   832,   904,  1019,   912,
1929       90,   839,   142,   402,   681,  2522, -1403,   402,   914, -1403,
1930     1016,  1047,   360, -1403,   402,   927,   617,   402,   929, -1403,
1931    -1403,   932,   936, -1403,  1066,   935, -1403,   937, -1403, -1403,
1932      939,   563, -1403,   214,   941,   402,   942, -1403,   303,   943,
1933      214,   402, -1403,   168, -1403, -1403, -1403,   947, -1403, -1403,
1934    -1403,   298,   944,   948, -1403, -1403,   663, -1403, -1403,  2084,
1935     2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,
1936     2084,  2084, -1403, -1403, -1403, -1403, -1403, -1403,  2084,  2084,
1937     2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,
1938     2084,  2084,  2084,  2084,  2084,  2084,  2084,  2084,   374,  2121,
1939      955,   392, -1403, -1403,  2013,  2084, -1403, -1403,   402,   952,
1940      303, -1403, -1403, -1403,   616, -1403, -1403, -1403, -1403, -1403,
1941      940, -1403, -1403,   681,   402,   402, -1403, -1403, -1403,  1029,
1942     1060, -1403,   402, -1403, -1403, -1403, -1403, -1403, -1403,   958,
1943    -1403,   586, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
1944    -1403, -1403, -1403, -1403, -1403, -1403,   303,  1067,   736,   303,
1945      723,  1082,  2084,  2084,   334,  2013,   610, -1403, -1403, -1403,
1946    -1403, -1403, -1403, -1403, -1403, -1403,   989, -1403, -1403, -1403,
1947    -1403, -1403, -1403, -1403,   969, -1403,  1085,   303,   974,   303,
1948      303,  1077,   463,   973,  1068,  2084,   468,  1084,   284,   303,
1949    -1403,   303, -1403,   975,   394,   979,   303,   987,   681,   845,
1950    -1403,  1096,  2699, -1403, -1403,  1102,  1062,   732,   990, -1403,
1951    -1403, -1403,  1439, -1403,   402, -1403, -1403, -1403,   402,   100,
1952       86,  2084, -1403,   214,   985,   207,  1024, -1403, -1403,   214,
1953      643,   670, -1403,   374, -1403,  2013,  2084,   991, -1403,  2013,
1954    -1403, -1403,  2161,  2161,  2161,  2161,  2161,  2161,  2161,  2161,
1955     2161,  2161,  2161,  2161,  2771,  2771,  2771,  2771,  2771,  2771,
1956     2771,  2771,  2771,  2771,  2771,  2771,   751,   751,   751, -1403,
1957    -1403, -1403, -1403,  2161, -1403,   539,   539,   374,   374,   498,
1958    -1403,   755,  1000,   557, -1403,  2013, -1403,   643, -1403, -1403,
1959      178, -1403,   997, -1403, -1403, -1403,   759,   918, -1403, -1403,
1960    -1403, -1403,    59,  1110,    59, -1403,   681,   661,   850,   709,
1961    -1403, -1403,  1002, -1403,   361, -1403, -1403, -1403,  1113,   996,
1962      677,  1007,   272,  1094,  1093, -1403, -1403, -1403, -1403, -1403,
1963     1124,  1103,  1914,   673,  1106,  1021,   303, -1403,   102,  1130,
1964      113,   936,   303,   303, -1403,   402, -1403,  1138,  1148,  1132,
1965    -1403, -1403, -1403,   470, -1403,   673,  1114,  1145,   849, -1403,
1966    -1403,   545,  1031, -1403,   303,  1038,  1133,   402,   931,   915,
1967    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,  1115, -1403,
1968    -1403, -1403,  1039,  2322,  1045, -1403, -1403,   303,   468,   155,
1969    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
1970    -1403,  1042, -1403,   828, -1403, -1403, -1403, -1403, -1403,  2084,
1971    -1403, -1403,  1037, -1403, -1403,   774, -1403, -1403,   303, -1403,
1972      670,  1034,    58, -1403,  1044,  1049, -1403,   966, -1403, -1403,
1973      643, -1403, -1403, -1403,  1051,  2013, -1403, -1403, -1403, -1403,
1974    -1403, -1403, -1403, -1403, -1403,   539,  2121, -1403, -1403, -1403,
1975    -1403,   539,   374,   312,  2084, -1403,  1048,  1054,  1078,  1137,
1976     1156, -1403,    59, -1403,  1078, -1403,   761, -1403,  1055,   714,
1977     1057,  2084,  1059, -1403, -1403, -1403,  1064,  1149,  2084,  1143,
1978      148, -1403,  1976,   655,  1072,  1172,  1963, -1403, -1403, -1403,
1979      334,   424,   402, -1403, -1403,  1186,  1182, -1403, -1403, -1403,
1980    -1403,  1070,   673,   586,  2084,  1071,   360,  2084,   761,  2084,
1981     1076, -1403,   670,   360,   784,  1068,  1190,   936,   673, -1403,
1982    -1403,   303, -1403,  1080,   563, -1403, -1403,  1079, -1403, -1403,
1983    -1403,  2121,  1181,   303,   870, -1403,  1205,  2555,   722, -1403,
1984    -1403, -1403,   402,  2084,  1086,  1087, -1403, -1403, -1403, -1403,
1985    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
1986    -1403, -1403, -1403, -1403, -1403,  1083, -1403,   810,   915,  1039,
1987     1173,   908,   402, -1403,  1089,  1213,  2156, -1403,  1210,   358,
1988    -1403, -1403, -1403, -1403, -1403, -1403,   855,  1936,   510, -1403,
1989      303,   303, -1403, -1403, -1403, -1403,   410, -1403, -1403,   836,
1990    -1403, -1403, -1403, -1403, -1403,  1105, -1403,   303,   402,  1183,
1991    -1403, -1403, -1403, -1403, -1403, -1403,   303, -1403, -1403,  1097,
1992      681, -1403,  1104,  2335, -1403,   402, -1403,  2084,  1107,   360,
1993     1125, -1403,   129,  1108,  1176, -1403, -1403, -1403,  2084, -1403,
1994      508,  1212, -1403,  1117,  1225,  1229, -1403, -1403, -1403, -1403,
1995     1231,  1206,   554,   541,   402,  1233, -1403,  2084,  1242, -1403,
1996    -1403,  1121,  1122, -1403, -1403,  1123, -1403,  2084,  1234, -1403,
1997    -1403, -1403,  1131, -1403, -1403,   670, -1403,    98,  2084,  1134,
1998      413, -1403, -1403, -1403, -1403,   303,   699,   303,   583,  1174,
1999     1254,  2732,  1174, -1403, -1403, -1403, -1403, -1403, -1403,   884,
2000    -1403,  1136, -1403, -1403,  1141, -1403, -1403,  1140,  2335, -1403,
2001      887, -1403, -1403,  1142,   303, -1403, -1403, -1403, -1403,   155,
2002      766,   402,  2084,   402,  1144,  2084,  1236,  2084,    48, -1403,
2003    -1403, -1403, -1403, -1403, -1403, -1403, -1403,   400, -1403, -1403,
2004    -1403, -1403, -1403, -1403,   543,    40, -1403,  1146, -1403, -1403,
2005    -1403, -1403, -1403, -1403, -1403, -1403,  1147,   122,   874, -1403,
2006     1439, -1403, -1403,   649,   670,  1078,   731,   182,   146,   303,
2007      957, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,  1124,
2008     2084,  1276, -1403, -1403,  2084,  1152,  1188,  1150,   360,  1157,
2009    -1403,  2765,  2084,  1258,  1305,  1226,  1261,  1262,   402, -1403,
2010     1263,  1264,   402,   108,  1717,  1279,  2084,  1170,   106, -1403,
2011     1292, -1403, -1403, -1403,  1171,  2084, -1403, -1403,  1175, -1403,
2012    -1403,   590,   889,   906, -1403,  1177,  1260, -1403, -1403,   402,
2013    -1403,  1217,  1217, -1403, -1403, -1403, -1403, -1403,   915, -1403,
2014      595, -1403, -1403, -1403, -1403,  1178,   915, -1403,   670,  1179,
2015     1298, -1403,  2084,  1251, -1403,  1265,  1252, -1403, -1403, -1403,
2016     1184,   303,  1257,  1270,  1903,  2084,  2084,  2084, -1403, -1403,
2017    -1403,  1293,  1194,   456, -1403, -1403, -1403, -1403,  2084, -1403,
2018      712, -1403,   500,  1309,  1068, -1403, -1403, -1403,    87, -1403,
2019    -1403,   182, -1403, -1403,  1195, -1403, -1403,  2084, -1403,  1319,
2020     2084, -1403, -1403, -1403,  1207, -1403, -1403, -1403, -1403, -1403,
2021    -1403, -1403, -1403, -1403, -1403, -1403, -1403,  1211,   673,  1295,
2022     1328,  2013, -1403,   314,   936,   936,  1215,   936,   936,  1320,
2023     2121, -1403, -1403, -1403,  1795, -1403,  1717,  1325,   402, -1403,
2024     1219,  1221,  1331, -1403, -1403, -1403, -1403,  1311,   303, -1403,
2025    -1403,  2121, -1403, -1403,   402, -1403,  1350, -1403, -1403, -1403,
2026     1299, -1403, -1403,  1245, -1403, -1403, -1403,  1357,  1339,  2084,
2027     1232,  1634,  2084,  1237, -1403, -1403,  2084,  1354,  1194,  1238,
2028    -1403,   564, -1403,  2084,   564,  1239,  1312,  1976, -1403,  1143,
2029    -1403, -1403,  2084,  2084,   111,   402,  1243, -1403,  1366,  1249,
2030      734, -1403, -1403, -1403,  2084, -1403,  1253,  1976, -1403,  1976,
2031    -1403,   303, -1403,  1367,  1172,  1255,   673, -1403,  1368,  1250,
2032     2013,   121, -1403,  1376,  1348,  1266, -1403,  1348,  1269,  2121,
2033      350, -1403, -1403, -1403,  1242, -1403, -1403,  1717, -1403, -1403,
2034    -1403,  1271,   303,   474, -1403, -1403, -1403, -1403,   402,   402,
2035    -1403,  1406,    69,  1332, -1403, -1403,  1384, -1403, -1403, -1403,
2036    -1403,  2084,  1272,   148, -1403, -1403, -1403,  2084,  1324,  1273,
2037    -1403,  2084,  1281,  1355,  1283,  1401,  1396, -1403,  2084, -1403,
2038      117,   788, -1403,  1405, -1403, -1403, -1403, -1403,  1369, -1403,
2039    -1403,   360,   272, -1403,  1410,  1300,  1816,  1331,  1717,  1301,
2040     1331, -1403,  1303,  1415,  1414,  1310, -1403,  1314, -1403, -1403,
2041    -1403, -1403,  1030, -1403, -1403, -1403,  1315, -1403, -1403,  1316,
2042      402, -1403, -1403,  1318, -1403,  2013, -1403,  1424,  1043, -1403,
2043    -1403,   719,  1317,  1323,  1321,   264, -1403, -1403,   124, -1403,
2044     2084, -1403,  1418,  1332,  1391,  2084, -1403, -1403,  1322,  2013,
2045     1326,  1426, -1403,  1416, -1403, -1403, -1403,  1327, -1403,  1717,
2046     1330, -1403,  1331,   936, -1403, -1403,   172,  2084, -1403, -1403,
2047     1030, -1403, -1403, -1403,  1333,   344,  1335, -1403,  2084,  1435,
2048    -1403,   675,  2084,  2084, -1403,  2084, -1403,  1338,   128,   402,
2049    -1403,  2084,  1394, -1403,  1334, -1403,   936,  1430, -1403,  1454,
2050    -1403, -1403, -1403,  1343, -1403,  1717,  1449,  1170,  1457,  2084,
2051    -1403, -1403,  1475, -1403, -1403, -1403, -1403,  1427,  1462,   564,
2052     2084, -1403,  1421, -1403, -1403,   130,  1423, -1403, -1403,  1353,
2053     1356, -1403,   506, -1403,  2084, -1403,  1358,   936,  1488, -1403,
2054    -1403,  1717,  1717,  1471, -1403,    69, -1403,  1359,  2084,  1433,
2055    -1403, -1403,  2013, -1403,   136,  2084, -1403, -1403,  1493, -1403,
2056    -1403,  1364,   402, -1403, -1403,  1717,  1370, -1403, -1403, -1403,
2057     2013,   815, -1403, -1403,    69, -1403,  1371, -1403, -1403, -1403,
2058      816,  2084, -1403,  1373, -1403,  2084, -1403, -1403, -1403, -1403
2059 };
2060
2061 /* YYPGOTO[NTERM-NUM].  */
2062 static const yytype_int16 yypgoto[] =
2063 {
2064    -1403, -1403, -1403, -1403,   -66, -1403,   382, -1403, -1403, -1403,
2065        7,  1518, -1403, -1403, -1403,  1521,    50,  1127, -1403, -1403,
2066      822, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
2067     1088, -1403, -1403, -1403, -1403, -1403,  1222, -1403, -1403,   115,
2068    -1403,  1372, -1403, -1403, -1403,  1525, -1403,  1365, -1403, -1403,
2069      -57,   -52, -1403,   -50, -1403, -1403, -1403,   542, -1403, -1403,
2070     -224,   694,   -24, -1403, -1403, -1403, -1403,   881, -1403, -1403,
2071     -417, -1403,   -34,   517, -1403, -1403,  -148,  -839, -1403,  -692,
2072    -1403, -1403, -1403, -1403,   739,  -616, -1403, -1403,   -39, -1403,
2073    -1403,   482,  1009, -1403,   662,   220, -1403, -1403,  2505,   804,
2074    -1403,  -489, -1403,   800,  -178,   903, -1403,   189,    52, -1403,
2075    -1403,  1509,  -353,  -257, -1403,  1342, -1403, -1403, -1403,  -278,
2076     -382, -1403, -1403,   -36, -1403, -1403, -1403, -1403, -1403, -1403,
2077    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,   309,
2078    -1403, -1403, -1403, -1403, -1403,   571, -1403, -1403, -1403,  -199,
2079    -1403,   -72, -1403,  -269, -1403, -1403, -1403,  -893,   -27,  -344,
2080      984, -1403, -1403,    16, -1403, -1403,   -46,   695, -1403, -1403,
2081    -1403, -1403, -1403, -1403, -1403, -1403,    18, -1403, -1403, -1403,
2082      -31,   -40, -1403, -1403, -1403, -1403,   642, -1403, -1403,    99,
2083      159, -1403, -1403, -1403,   536, -1403,  -407, -1403, -1403, -1403,
2084    -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,   262,
2085     -147, -1403, -1403, -1403, -1403, -1403, -1403,   250, -1403, -1403,
2086    -1403,  -380,   275, -1023, -1403, -1403, -1096, -1403, -1403,  -732,
2087      509, -1403, -1403,  -379, -1403, -1403, -1403,   481, -1222, -1403,
2088    -1403,   255, -1403, -1157, -1403, -1403,   960, -1403,   202,  -595,
2089    -1403, -1403, -1403, -1403,   434, -1403, -1403, -1145, -1403, -1403,
2090    -1403, -1403,  -397,   307, -1403, -1012, -1402, -1403,   109, -1403,
2091    -1188, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
2092    -1403, -1403, -1403, -1403, -1403, -1403,  -401, -1403, -1403,   553,
2093    -1403,  -903, -1403,   556, -1403, -1403, -1403,  -373, -1403,  1539,
2094    -1403, -1403,  -653, -1403, -1403, -1403, -1403, -1403, -1403, -1403,
2095    -1403, -1403, -1403, -1403,   724, -1403,   420,  -752,  -583, -1403,
2096      459, -1403,   -38,   -29,   599, -1403, -1403, -1403,    -8, -1403,
2097       22,   257,   -64, -1403, -1403, -1403,   618, -1403, -1403, -1403,
2098    -1403,   477, -1403, -1403, -1403, -1403,  1014, -1403,  1208,   322,
2099      -16,  -549, -1403, -1403, -1403, -1403,   390, -1403, -1403, -1403,
2100    -1403,   131, -1403, -1403, -1403, -1403,    32, -1403, -1403, -1215,
2101      137, -1403,    97,   581, -1385, -1403, -1403, -1403, -1403, -1403,
2102     1020,   436,  -523, -1403, -1403,  -468,  1602, -1403, -1403, -1403,
2103    -1403, -1403, -1403, -1403,   547,  1428, -1403, -1403
2104 };
2105
2106 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
2107    positive, shift that token.  If negative, reduce the rule which
2108    number is the opposite.  If zero, do what YYDEFACT says.
2109    If YYTABLE_NINF, syntax error.  */
2110 #define YYTABLE_NINF -918
2111 static const yytype_int16 yytable[] =
2112 {
2113       32,    33,    34,    36,    39,    84,    52,   122,   310,   180,
2114      161,   239,   592,   457,   181,   206,   165,   210,    35,   152,
2115      184,   154,   168,   611,   170,   811,   186,   777,   187,    72,
2116       73,   167,   183,   171,   420,   185,   583,   188,   163,   283,
2117      336,   337,   338,   339,   340,   584,   173,   238,   930,   326,
2118      880,  1102,   724,   628,  1106,    18,   240,   627,   612,   189,
2119      190,  1313,   191,   971,   815,    46,   906,  1066,  1286,  1369,
2120      772,   659,   910,   208,   625,   626,    31,   245,   164,   247,
2121      166,   761,   255,    92,    31,  1341,   738,   739,   264,   266,
2122      268,   493,   271,    36,    31,    36,    36,   284,   285,    36,
2123      288,   290,    36,   209,  1310,   292,    40,    31,   272,   149,
2124      277,   807,   429,    31,   286,  1413,   591,   291,   174,   267,
2125       25,  1178,   589,   174,   448,   890,  1357,   209,    31,   526,
2126      481,   203,   494,   586,   347,   174,   299,   300,  1080,  1378,
2127      305,  1285,  1238,  1566,  1028,  1445,  1375,   309,  1230,   309,
2128       39,   239,  1485,   592,    40,    31,  1485,  1400,  1378,   481,
2129     1292,    40,    31,  1569,  1445,  1426,   757,   718,   809,   316,
2130      316,   482,  1583,     6,    40,    31,  1458,   159,  1164,    31,
2131      348,  1081,  -769,   174,   497,    -3,   322,   323,   322,   822,
2132      871,  1373,  1179,   330,    40,    31,  1587,   457,  1165,    46,
2133     1182,   973,    45,   295,   433,   347,   758,   891,  1505,   434,
2134      574,   582,   301,    40,    31,   438,   872,    40,    31,    41,
2135      919,   441,   449,   442,  1188,   678,  1422,   436,   500,   -51,
2136      440,   799,   443,   175,   396,   798,   329,  1501,   723,   909,
2137     1457,  1301,  -368,  1460,   407,   407,   407,   613,    82,    83,
2138     1117,   348,   793,   794,   444,  1490,   898,   733,  1239,  1231,
2139     -362,   719,   474,  1379,  1372,  -459,  1363,    41,    45,  1446,
2140      389,   870,   232,  1401,  -769,   977,  1486,   437,   635,   439,
2141     1528,   639,  1553,  1540,  1388,    36,   208,    41,  1572,   503,
2142      661,    45,   662,   498,   530,   455,    36,   682,   299,   509,
2143      499,   402,   518,   227,  1548,  1503,   304,    41,   248,    40,
2144       31,   507,  1173,   296,   390,    83,   209,   523,  1320,  1563,
2145     1564,    61,   239,   529,  -323,   347,    41,    30,    82,    83,
2146       41,  -362,  1516,  -362,  -625,    45,    45,  1331,  -323,   347,
2147       40,    31,    31,  1578,  1321,  1483,   278,  1300,    31,   452,
2148       82,    83,   587,    82,    83,   732,    40,    31,  1345,   301,
2149      775,   521,   768,  -323,    40,    31,  1544,    40,    31,   278,
2150     -917,   348,    31,  1186,  1512,   457,    67,   212,   204,   213,
2151       40,    31,   617,   239,   172,   348,  -411,    40,    31,   949,
2152      594,   652,   279,   948,    75,  1221,  -411,   582,   582,   740,
2153      741,  1567,   664,   333,   244,   600,   603,   604,   665,    31,
2154      946,   947,   232,   389,   609,   279,  1484,   453,    58,    40,
2155       31,   391,    41,   214,  1549,  1425,   215,   666,   246,   608,
2156      962,  -189,  1299,   -72,   954,   601,  1409,   347,    70,    76,
2157      208,    71,   264,   341,   389,   691,   534,  -357,    77,    31,
2158      692,   -72,    46,    41,   402,   389,   696,   389,   667,    45,
2159      902,  -357,   698,   239,   699,   830,  1166,   239,   694,    41,
2160      209,   697,   640,   700,  1184,  1040,  1121,    41,   583,  1032,
2161       41,   455,  1167,   348,  -552,   801,   727,   642,   869,  1549,
2162      685,    68,   730,    41,   643,   -72,   390,    83,  -411,  -411,
2163       41,   307,   668,   238,   -72,    61,   716,   820,   145,  1118,
2164      717,   824,   240,   239,    40,    31,    81,   525,   644,  1087,
2165      686,   223,   531,   457,   642,   347,   146,   390,    83,    69,
2166     1297,   643,    41,   457,   420,  -191,  1558,  1416,    82,    83,
2167      420,   669,   212,   204,   213,    40,    31,    31,  -323,    40,
2168       31,    11,    40,    31,  -589,   644,   702,   273,   452,   390,
2169       83,  -411,  -411,  1506,  1509,  1172,   825,   582,   582,   541,
2170      147,   348,    74,   582,   901,   652,   629,   652,  1100,   148,
2171       81,   645,    88,   232,  -327,    13,  1164,  1425,   214,    45,
2172       31,   215,    89,   212,   204,   213,    40,    31,   600,   314,
2173     1190,  1101,    31,   274,  1365,   841,  1293,   400,  1324,  1325,
2174      826,  1327,  1328,  1126,   590,   593,    90,  -189,  1295,   457,
2175       82,    83,  1366,  1026,    31,  1260,  1027,    41,   601,    94,
2176     -327,  1433,   742,   743,   744,   525,    96,    36,   620,   214,
2177      350,   297,   215,    45,   232,   952,   597,  1174,    79,    37,
2178      322,    80,   814,   582,   961,    31,    82,    83,    41,    36,
2179       11,   840,    41,   239,   144,    41,   525,    38,   638,   525,
2180      974,  -832,   623,   624,   834,   590,   351,   155,   525,   352,
2181      525,   208,   577,   578,   353,   525,   223,    40,    31,     8,
2182      455,  -327,  -327,  -327,    13,  -327,  -327,  -327,  -327,   897,
2183        9,  1098,  -327,  -327,    88,   651,   192,    10,   720,    41,
2184      518,   209,   354,  -327,   391,    31,   400,  1070,   355,   518,
2185       11,   252,   177,   519,   232,   575,   576,   193,   232,   936,
2186       31,   253,   714,   577,   578,    12,   262,   223,   145,   254,
2187      194,   725,    40,    31,  1246,   287,  -696,   615,   250,  1280,
2188      -35,    31,   992,   -35,    13,   590,   734,   105,  -696,   227,
2189      937,  1068,   629,   393,   394,   938,    81,  1150,   583,  -666,
2190     -666,  -666,  -666,  -666,   232,   256,    14,   584,  -696,  1519,
2191     1282,   911,   257,   106,   322,  1283,  1124,   457,  1125,  -335,
2192     -335,   390,    83,   616,  -696,    82,    83,   777,   995,  -335,
2193       13,   912,   913,    45,  1012,   753,   914,   111,   112,   763,
2194     -834,   538,   539,   764,   163,  -666,    82,    83,  -666,   915,
2195      258,    45,   998,    82,    83,    45,  -323,   -36,  1334,   773,
2196      -36,   812,    45,   204,  1001,    40,    31,   293,   451,  1319,
2197      205,   420,   289,    40,    31,    82,    83,  1504,    31,    37,
2198      823,  -406,   452,   525,  1072,    31,    31,  -215,   878,   296,
2199     1011,  -215,   879,  1016,  1017,  -514,  -514,  -514,  1047,  -882,
2200       81,  1058,   524,   294,   519,    81,   525,   583,   524,  1187,
2201     1536,    70,  1385,   764,   705,  -666,   764,  -666,   993,   383,
2202      384,   385,   386,   747,   748,   749,   750,   306,   583,  -625,
2203      322,  -666,  -666,   195,   312,   196,   197,   888,    79,  -666,
2204     -666,   755,   208,  -666,  1015,    31,    43,  1076,  -514,   204,
2205      453,  1561,    31,  1151,   232,   454,   320,  -248,  1411,   885,
2206       81,   313,   836,    70,   691,   318,   970,    70,  1399,   692,
2207     1447,   727,   209,   582,   319,   696,  1103,  -795,   327,  1107,
2208      837,   698,    70,   699,   477,   896,    41,   694,  1007,  1008,
2209      697,  -795,   700,   328,  1581,  1585,  -795,  1582,  1586,    45,
2210      742,   743,   744,    70,   903,   480,   583,  1192,  1193,    45,
2211       36,    70,    43,   489,   455,   388,  -412,  -412,    70,   450,
2212      496,   922,  -795,   446,    70,   834,   687,   395,   926,    70,
2213      332,   766,  -412,  1059,  1060,   275,   945,   335,  -412,  -795,
2214      975,   208,  -412,  1154,  -363,  1157,  -795,  -795,   398,    70,
2215      980,   987,   986,   -19,   963,   -19,   397,   965,   428,   968,
2216      475,  -412,  1137,  1138,  1207,  1145,  1146,  1247,  1248,  1208,
2217      445,   209,   479,  1474,    70,  1211,   487,  1499,   485,   302,
2218       43,  1213,   582,  1215,  1250,  1251,   490,  1210,  1466,  1467,
2219     1212,   491,  1216,  1002,   492,    45,   504,  1494,    45,   448,
2220     1315,  1477,  1478,   582,   841,   408,   409,   505,   498,  1063,
2221     1064,   510,  1012,   512,   511,   514,  -412,   515,   599,   516,
2222     1226,   517,   533,   535,  1229,   606,  1067,   522,   518,   528,
2223     1241,   536,   585,   411,   595,   525,  1432,   714,   605,   614,
2224      610,   412,   622,   413,  -412,  -412,  -412,    43,  -412,   630,
2225      632,  1255,   633,   636,   641,   648,   689,   663,   649,    45,
2226      840,   681,  1263,   658,   683,    43,   701,   414,  1011,   415,
2227       13,   726,   706,  1415,   729,   752,   735,  1077,   416,   239,
2228      754,   582,   760,   417,   767,   771,   519,   418,  1086,   774,
2229      778,   780,   781,   111,   112,   784,   802,   419,  1395,   391,
2230     1571,   804,   808,   456,   525,   481,   525,  1105,   816,   817,
2231     1302,   821,   174,   829,  1333,   831,   833,  1114,  1580,   843,
2232      887,   842,   868,    56,   877,   889,   893,   894,  1119,   895,
2233      904,  -896,   -61,  1148,   907,   908,   920,   918,   -61,   -61,
2234      923,   925,   927,  1107,   942,   -61,   924,   -61,   -61,   940,
2235      954,   957,   960,   964,   972,   -61,   -61,   -61,   969,   978,
2236     1338,    43,   976,    45,   985,   989,    43,  1005,  1003,  1004,
2237     1014,  1018,  1155,  1019,  1056,  1159,  1347,  1163,   239,  1071,
2238     1069,   -61,  1065,   -61,  1090,  1079,  1073,  1084,  1191,  1078,
2239     1083,  1094,   -61,   -61,  1092,  1095,  1097,   -61,  1096,  1104,
2240      -61,   -61,  1108,  1111,  1112,  1113,  1115,   -61,   -61,   -61,
2241      714,   -61,  1129,  1116,  1131,  1197,  1120,    36,  1141,  1142,
2242     1161,   727,  1143,  1202,  1147,  1218,  1158,  1180,  1203,  1181,
2243     1196,  1200,  1381,    43,  1199,  1205,  1220,  1221,  1224,  1225,
2244     1227,  1228,  1217,  1402,   211,  1236,   212,   204,   213,    40,
2245       31,  1231,  1242,  1243,  1254,  1256,  1237,  1245,  1267,  1253,
2246     1264,  1266,  1269,  1272,  1276,  1244,  1274,  1271,  1278,  1291,
2247     1417,  1418,   410,   146,  1424,  1304,  1455,  1309,  -224,    43,
2248       45,  1151,    43,   239,   -61,  1316,  1311,   456,  1318,  1314,
2249     1329,  1337,   214,  1326,  1342,   215,   411,  1238,   216,  1348,
2250      217,  1339,  1268,  1340,   412,  1349,   413,   239,  1351,  1352,
2251       43,  1353,    43,    43,  1355,  1288,  1289,  1290,  1361,  1359,
2252     1364,  1370,    43,  1371,    43,  1382,  1383,  1392,  1294,    43,
2253      414,  1384,   415,  1398,  1397,  1387,  1403,  1394,  1404,   212,
2254      232,   416,  1472,  1425,  1427,   715,   417,  1308,  1406,  1330,
2255      418,  1408,    43,  1414,  1430,  1437,   111,   112,    43,  1436,
2256      419,  1442,    41,  1439,   218,  1441,  1440,  1343,  1443,  1448,
2257     1330,   896,   212,   204,   213,    40,    31,  1451,   219,   220,
2258     1449,  1462,  1453,  1481,  1459,  1461,   221,   222,  1507,  1107,
2259      223,  1463,  1464,  1476,  1489,  1518,  1465,  -883,  1471,  1246,
2260     1473,  1482,  1491,  1496,  1493,  1534,  1497,  1537,  1495,  1500,
2261      239,  1531,  1502,  1535,  1538,  1541,  1511,  1515,   214,  1354,
2262     1527,   215,  1358,  1542,   707,  1539,  1360,  1545,   239,  1546,
2263       45,  1547,  1552,  1368,  1555,  1556,  1562,  1565,  1557,   232,
2264     1560,  1568,  1376,  1377,  1570,  1574,  1575,   769,  1330,   391,
2265     1259,     7,  1579,  1584,  1386,  1588,    17,   596,   508,   311,
2266       27,   525,   994,  1133,   819,   791,  1149,  1424,   621,   806,
2267      896,   708,  1185,   317,   709,    43,   813,   966,   737,  1062,
2268      899,   900,    45,    85,  1577,    97,   334,  1344,    41,  1128,
2269      218,    98,    99,   746,  1013,  1074,  1424,    43,   100,  1510,
2270      101,   102,  1470,  1169,   219,   220,  1393,  1407,   103,   104,
2271      105,  1429,   221,   222,  1390,  1235,   223,  1435,  1195,  1410,
2272       43,  1438,   797,   710,  1450,  1275,  1374,  1175,  1444,  1532,
2273     1176,   169,  1296,  1057,    12,  1265,   106,  1144,  1421,  1258,
2274     1136,   756,   598,  1322,   232,   107,   108,  1589,  1521,  1529,
2275      109,    43,  1554,    13,   110,  1177,   762,  1303,    64,   331,
2276      111,   112,   113,     0,   114,  1356,     0,     0,   232,     0,
2277     -641,  -641,     0,     0,     0,   896,     0,     0,     0,  -641,
2278        0,     0,     0,     0,     0,     0,  -641,     0,     0,     0,
2279     1488,     0,  -641,  -641,  -641,  1492,  -641,     0,  -641,   896,
2280        0,     0,     0,  -641,     0,     0,     0,     0,     0,     0,
2281     -641,     0,     0,   929,  -641,     0,  -641,  1508,     0,     0,
2282        0,     0,     0,   456,     0,     0,     0,     0,  1517,     0,
2283     -641,  -641,  1522,  1525,     0,  1526,     0,   115,     0,     0,
2284        0,  1533,     0,     0,  -641,     0,  -641,  -641,     0,     0,
2285        0,     0,     0,     0,    43,     0,     0,    97,     0,  1543,
2286        0,     0,     0,    98,  1232,     0,    43,     0,     0,     0,
2287      100,   232,   101,   102,     0,     0,     0,     0,     0,     0,
2288      103,   104,   105,  -641,  1559,     0,     0,     0,     0,   232,
2289        0,     0,     0,     0,     0,     0,     0,     0,  1522,     0,
2290        0,     0,   896,     0,     0,  1573,    12,     0,   106,   456,
2291        0,  -641,   302,     0,     0,     0,     0,   107,   108,     0,
2292      896,     0,   109,    43,    43,    13,   110,     0,     0,     0,
2293        0,  1522,   111,   112,   113,    97,   114,     0,     0,     0,
2294       43,    98,  1332,     0,     0,     0,     0,     0,   100,    43,
2295      101,   102,     0,     0,     0,     0,    97,     0,   103,   104,
2296      105,     0,    98,  1454,     0,     0,     0,     0,     0,   100,
2297        0,   101,   102,  1088,     0,     0,     0,     0,     0,   103,
2298      104,   105,     0,     0,    12,     0,   106,     0,     0,     0,
2299        0,     0,     0,     0,     0,   107,   108,     0,     0,     0,
2300      109,     0,     0,    13,   110,    12,     0,   106,     0,   115,
2301      111,   112,   113,    43,   114,     0,   107,   108,    43,     0,
2302       43,   109,     0,     0,    13,   110,     0,     0,     0,     0,
2303        0,   111,   112,   113,  1279,   114,   212,   204,   213,    40,
2304       31,     0,     0,     0,     0,   451,     0,    43,     0,     0,
2305       40,    31,     0,     0,     0,     0,     0,     0,     0,   452,
2306        0,     0,   785,     0,     0,     0,   786,   787,   788,   212,
2307      204,   213,    40,    31,     0,   789,     0,   929,  -607,     0,
2308        0,     0,   214,  -611,     0,   215,     0,   115,     0,     0,
2309        0,     0,     0,   715,   944,     0,   212,   204,   213,    40,
2310       31,     0,    43,     0,     0,     0,  -625,  1280,   115,   212,
2311      204,   213,    40,    31,     0,   214,     0,     0,   215,     0,
2312        0,   707,     0,     0,     0,     0,     0,   453,     0,     0,
2313      931,     0,   790,     0,     0,     0,     0,  1281,  1282,     0,
2314        0,     0,   214,  1283,  1284,   215,   212,   204,   213,    40,
2315       31,     0,    41,     0,   218,   214,     0,     0,   215,     0,
2316        0,     0,     0,    41,     0,     0,     0,     0,   219,   220,
2317        0,   709,     0,     0,     0,     0,   221,   222,     0,     0,
2318      223,     0,     0,     0,     0,    41,     0,   218,     0,     0,
2319        0,   455,   214,     0,  1088,   215,     0,     0,     0,     0,
2320      217,   219,   220,   931,     0,     0,     0,     0,     0,   221,
2321      222,     0,    41,   223,   218,     0,     0,   212,   204,   213,
2322       40,    31,     0,     0,     0,    41,     0,   218,   219,   220,
2323        0,     0,     0,     0,     0,     0,   221,   222,     0,     0,
2324      223,   219,   220,     0,     0,     0,     0,     0,     0,   221,
2325      222,     0,     0,   223,   212,   204,   213,    40,    31,     0,
2326        0,     0,    41,   214,   218,     0,   215,     0,     0,     0,
2327        0,     0,     0,     0,     0,     0,     0,     0,   219,   220,
2328        0,    43,     0,     0,     0,     0,   221,   222,     0,     0,
2329      223,     0,    40,    31,     0,     0,     0,     0,     0,     0,
2330      214,   452,     0,   215,     0,     0,     0,     0,  1020,     0,
2331        0,     0,     0,     0,     0,     0,     0,     0,  1021,     0,
2332     -695,     0,     0,     0,     0,  1022,     0,     0,   356,     0,
2333        0,     0,  -695,    41,     0,   218,  1023,     0,  1024,     0,
2334        0,     0,     0,     0,  1391,     0,     0,     0,     0,   219,
2335      220,     0,  -695,  1025,     0,     0,     0,   221,   222,     0,
2336        0,   223,     0,    43,   357,     0,  1026,   358,  -695,  1027,
2337       41,     0,   359,     0,     0,    43,     0,     0,     0,     0,
2338        0,     0,     0,     0,     0,     0,   575,   576,     0,     0,
2339        0,     0,     0,     0,   577,   578,  1431,     0,   223,     0,
2340      360,     0,     0,     0,     0,    41,   361,   362,   363,   364,
2341      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
2342      375,   376,   377,   378,   379,   380,   381,   382,     0,   383,
2343      384,   385,   386,   455,     0,     0,     0,     0,   368,   369,
2344      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
2345      380,   381,   382,   845,   383,   384,   385,   386,     0,     0,
2346        0,     0,     0,     0,     0,   846,     0,     0,     0,     0,
2347        0,     0,     0,     0,     0,   847,   848,   849,   846,     0,
2348        0,     0,     0,   850,     0,   851,     0,   852,   847,   848,
2349      849,     0,     0,     0,     0,   853,   850,     0,   851,     0,
2350      852,     0,     0,     0,     0,     0,     0,     0,   853,     0,
2351        0,   854,     0,   855,     0,     0,     0,     0,     0,     0,
2352        0,     0,   856,   857,   854,     0,   855,   858,   859,     0,
2353        0,   860,     0,     0,     0,   856,   857,     0,     0,   861,
2354      858,   859,     0,     0,   860,     0,     0,     0,    53,     0,
2355        0,     0,   861,     0,     0,     0,     0,   -50,   862,     0,
2356        0,   863,     0,   -50,   -50,     0,   864,     0,     0,     0,
2357        0,   862,   -50,   -50,   863,     0,     0,   -50,     0,   864,
2358      -50,     0,   -50,     0,    54,     0,     0,    60,     0,     0,
2359        0,     0,     0,     0,     0,     0,   -82,     0,     0,     0,
2360        0,     0,   -82,     0,     0,     0,   -50,   -50,   -50,   -82,
2361        0,   -82,   -82,     0,     0,     0,   -82,   -50,   -50,   -82,
2362       65,   -82,   -50,    61,     0,   -50,   -50,     0,     0,   -97,
2363        0,     0,   -50,   -50,   -50,   -97,   -50,     0,     0,     0,
2364        0,     0,     0,     0,   -97,   -82,     0,   -82,     0,   -97,
2365        0,     0,   -97,   501,   -97,     0,   -82,   -82,     0,     0,
2366        0,   -82,  -205,     0,   -82,   -82,     0,     0,  -205,  -205,
2367        0,   -82,   -82,   -82,     0,   -82,     0,  -205,   -97,     0,
2368      -97,     0,     0,     0,     0,  -205,   990,  -205,     0,     0,
2369      -97,     0,     0,     0,   -97,  -806,     0,   -97,   -97,     0,
2370        0,  -806,     0,     0,   -97,   -97,   -97,     0,   -97,     0,
2371     -806,  -205,     0,  -205,     0,  -806,     0,     0,  -806,     0,
2372     -806,     0,     0,  -205,     0,     0,     0,  -205,     0,     0,
2373     -205,  -205,     0,     0,    97,     0,     0,  -205,  -205,  -205,
2374       98,  -205,     0,     0,  -806,     0,  -806,   100,     0,   101,
2375      102,     0,     0,     0,   157,     0,  -806,   103,     0,   105,
2376     -806,     0,     0,  -806,  -806,     0,     0,     0,     0,     0,
2377     -806,  -806,  -806,    97,  -806,     0,     0,     0,     0,    98,
2378      430,     0,     0,   158,     0,   106,     0,     0,   101,   102,
2379        0,     0,     0,     0,   107,   108,   103,     0,   105,   109,
2380        0,     0,    13,   110,     0,     0,    97,     0,     0,   111,
2381      112,   113,    98,   114,     0,     0,     0,     0,     0,     0,
2382        0,   101,    12,     0,   106,     0,   178,     0,     0,   103,
2383        0,   105,     0,   107,   108,     0,     0,     0,   109,    97,
2384        0,    13,   110,     0,     0,    98,   690,     0,   111,   112,
2385      113,     0,   114,     0,   101,    12,     0,   106,     0,     0,
2386        0,     0,   103,     0,   105,     0,     0,   108,     0,     0,
2387        0,   109,    97,     0,    13,   110,     0,     0,    98,     0,
2388        0,   111,   112,   113,     0,   114,     0,   101,    12,     0,
2389      106,     0,  1132,     0,     0,   103,     0,   105,     0,     0,
2390      108,     0,     0,     0,   109,    97,     0,    13,   110,     0,
2391        0,    98,  1206,     0,   111,   112,   113,     0,   114,     0,
2392      101,    12,     0,   106,     0,     0,     0,     0,   103,     0,
2393      105,     0,     0,   108,     0,     0,     0,   109,     0,     0,
2394       13,   110,     0,     0,     0,     0,     0,   111,   112,   113,
2395        0,   114,     0,     0,    12,     0,   106,     0,     0,     0,
2396        0,     0,     0,     0,     0,     0,   108,     0,     0,     0,
2397      109,     0,     0,    13,   110,     0,     0,     0,     0,     0,
2398      111,   112,   113,     0,   114,   542,   543,   544,   545,   546,
2399      547,   548,   549,   550,   551,   552,   553,     0,     0,     0,
2400        0,     0,     0,   554,   555,   556,   557,   558,   559,   560,
2401      561,   562,   563,   564,   565,   566,   567,   568,   569,   570,
2402      571,   572,   573,  -918,  -918,  -918,  -918,  -918,  -918,  -918,
2403     -918,  -918,  -918,  -918,  -918,   380,   381,   382,     0,   383,
2404      384,   385,   386
2405 };
2406
2407 static const yytype_int16 yycheck[] =
2408 {
2409        8,     9,    10,    11,    12,    44,    14,    57,   156,    66,
2410       62,    83,   394,   270,    66,    81,    62,    81,    11,    59,
2411       66,    59,    62,   430,    62,   641,    66,   622,    66,    37,
2412       38,    62,    66,    62,   258,    66,   389,    66,    62,   105,
2413      218,   219,   220,   221,   222,   389,    62,    83,   780,   196,
2414      703,   954,   520,   454,   957,     5,    83,   454,   431,    67,
2415       68,  1206,    70,   815,   647,    13,   758,   906,  1164,  1284,
2416      619,   488,   764,    81,   454,   454,     7,    85,    62,    87,
2417       62,   604,    90,     1,     7,  1242,   575,   576,    96,    97,
2418       98,     1,   100,   101,     7,   103,   104,   105,   106,   107,
2419      108,   109,   110,    81,  1200,   113,     6,     7,   101,    59,
2420      103,     9,   260,     7,   107,  1337,   394,   110,    37,    97,
2421        5,    81,   391,    37,    53,    67,  1271,   105,     7,   328,
2422       37,    79,    42,   390,    27,    37,   144,   145,     9,    28,
2423      148,  1164,    36,  1545,   876,    28,  1291,   155,    40,   157,
2424      158,   223,    28,   535,     6,     7,    28,    36,    28,    37,
2425     1172,     6,     7,  1548,    28,  1353,   107,    67,    55,   177,
2426      178,    78,  1574,     0,     6,     7,  1398,    62,   130,     7,
2427       73,    52,    60,    37,    42,     0,   194,   195,   196,   657,
2428       35,  1287,   152,   201,     6,     7,  1581,   454,   150,   147,
2429       78,   817,    13,    42,   261,    27,   147,   149,    36,   261,
2430      388,   389,     1,     6,     7,   261,    61,     6,     7,   119,
2431      769,   261,   151,   261,    42,   494,   157,   261,   294,   147,
2432      261,   632,   261,   152,   242,   632,   159,  1459,   152,   762,
2433     1397,   154,   152,  1400,   252,   253,   254,   446,   146,   147,
2434      152,    73,   632,   632,   262,  1443,   745,   535,   152,   151,
2435      153,   161,   270,   152,  1287,   152,  1278,   119,    79,   152,
2436       63,   688,    83,   152,   152,   824,   152,   261,   477,   261,
2437      152,   480,   152,  1505,  1307,   293,   294,   119,   152,   297,
2438      489,   102,   491,   151,   333,   147,   304,   496,   306,   307,
2439      293,   251,   156,    83,  1519,  1462,   118,   119,    88,     6,
2440        7,   304,  1044,   152,   146,   147,   294,   325,  1221,  1541,
2441     1542,    37,   394,   331,   156,    27,   119,     5,   146,   147,
2442      119,   153,  1477,   155,    62,   146,   147,  1230,   156,    27,
2443        6,     7,     7,  1565,    30,    81,    11,  1186,     7,    15,
2444      146,   147,   391,   146,   147,   533,     6,     7,  1251,     1,
2445       88,   147,     1,   156,     6,     7,  1511,     6,     7,    11,
2446      156,    73,     7,  1065,    30,   632,    53,     3,     4,     5,
2447        6,     7,   448,   455,    62,    73,    36,     6,     7,   790,
2448      398,   107,    57,   790,    25,    81,    46,   575,   576,   577,
2449      578,  1546,     8,   214,    63,   413,   414,   415,    14,     7,
2450      790,   790,   223,    63,   422,    57,   152,    83,     1,     6,
2451        7,   232,   119,    49,  1520,    81,    52,    33,    63,   422,
2452      803,   147,  1184,    16,    34,   413,  1329,    27,   149,    70,
2453      448,   152,   450,   223,    63,   502,   148,   149,    79,     7,
2454      502,    34,   400,   119,   404,    63,   502,    63,    64,   270,
2455      148,   149,   502,   535,   502,   664,    66,   539,   502,   119,
2456      448,   502,   480,   502,  1057,   876,    63,   119,   831,   876,
2457      119,   147,    82,    73,    60,   633,   525,    24,   687,  1585,
2458      498,    53,   531,   119,    31,    78,   146,   147,   148,   149,
2459      119,    59,   108,   539,    87,    37,   514,   655,    16,   977,
2460      518,   658,   539,   585,     6,     7,   156,   328,    55,    11,
2461      498,   147,   333,   780,    24,    27,    34,   146,   147,    42,
2462     1183,    31,   119,   790,   758,    67,    30,    63,   146,   147,
2463      764,   147,     3,     4,     5,     6,     7,     7,   156,     6,
2464        7,    44,     6,     7,   130,    55,   506,    11,    15,   146,
2465      147,   148,   149,  1466,  1467,    22,    21,   745,   746,   349,
2466       78,    73,    42,   751,   752,   107,   152,   107,    37,    87,
2467      156,   118,   147,   394,    27,    78,   130,    81,    49,   400,
2468        7,    52,    42,     3,     4,     5,     6,     7,   606,    59,
2469     1068,    60,     7,    57,    40,   669,   150,   100,  1224,  1225,
2470       65,  1227,  1228,    30,   394,   395,    30,   147,   118,   876,
2471      146,   147,    58,    80,     7,    30,    83,   119,   606,    60,
2472       73,  1363,   134,   135,   136,   446,    30,   645,   449,    49,
2473       12,    24,    52,   454,   455,   792,    30,  1044,   149,     1,
2474      658,   152,   645,   831,   802,     7,   146,   147,   119,   667,
2475       44,   669,   119,   735,    30,   119,   477,    19,   479,   480,
2476      818,   161,   452,   453,   667,   455,    48,    30,   489,    51,
2477      491,   689,   143,   144,    56,   496,   147,     6,     7,    13,
2478      147,   134,   135,   136,    78,   138,   139,   140,   141,   735,
2479       24,   147,   145,   146,   147,   485,    42,    31,   519,   119,
2480      156,   689,    84,   156,   525,     7,   100,   916,    90,   156,
2481       44,    13,    30,   160,   535,   135,   136,    42,   539,    74,
2482        7,    23,   512,   143,   144,    59,    13,   147,    16,    31,
2483       49,   521,     6,     7,   154,     1,    34,    11,    30,    74,
2484      149,     7,    30,   152,    78,   535,   536,    35,    46,   539,
2485      105,   908,   152,   148,   149,   110,   156,     1,  1121,     3,
2486        4,     5,     6,     7,   585,   152,   100,  1121,    66,   104,
2487      105,    20,   152,    61,   792,   110,   985,  1044,   987,   146,
2488      147,   146,   147,    57,    82,   146,   147,  1392,   838,   156,
2489       78,    40,    41,   614,   868,   585,    45,    85,    86,   148,
2490      161,   148,   149,   152,   838,    49,   146,   147,    52,    58,
2491      147,   632,   838,   146,   147,   636,   156,   149,  1235,   152,
2492      152,   642,   643,     4,   842,     6,     7,    79,     1,  1221,
2493       11,  1065,     1,     6,     7,   146,   147,  1463,     7,     1,
2494        1,   152,    15,   664,   920,     7,     7,   148,    30,   152,
2495      868,   152,    34,   871,   872,    28,    29,    30,   876,   150,
2496      156,   879,   325,    35,   160,   156,   687,  1230,   331,   148,
2497     1496,   149,   148,   152,   152,   119,   152,   121,   838,   138,
2498      139,   140,   141,   138,   139,   140,   141,    30,  1251,    62,
2499      908,   135,   136,   156,    47,   158,   159,   718,   149,   143,
2500      144,   152,   920,   147,     6,     7,    13,   925,    81,     4,
2501       83,  1537,     7,   157,   735,    88,    49,   153,  1335,   709,
2502      156,   152,     1,   149,   991,    42,   152,   149,  1320,   991,
2503      152,   980,   920,  1121,    42,   991,   954,    16,   156,   957,
2504       19,   991,   149,   991,   151,   735,   119,   991,   148,   149,
2505      991,    30,   991,   151,   149,   149,    35,   152,   152,   780,
2506      134,   135,   136,   149,   754,   151,  1329,    20,    21,   790,
2507      988,   149,    79,   151,   147,   145,    20,    21,   149,    30,
2508      151,   771,    61,   151,   149,   988,   151,   153,   778,   149,
2509      148,   151,    36,   148,   149,   102,   786,   148,    42,    78,
2510      821,  1019,    46,  1021,   153,  1023,    85,    86,   100,   149,
2511      831,   151,   833,   149,   804,   151,   148,   807,   152,   809,
2512       42,    65,   148,   149,  1091,   148,   149,   148,   149,  1091,
2513      152,  1019,   151,  1425,   149,  1091,    42,  1454,   151,   146,
2514      147,  1091,  1230,  1091,   148,   149,   152,  1091,    28,    29,
2515     1091,    42,  1091,   843,   152,   876,   152,  1449,   879,    53,
2516     1218,    28,    29,  1251,  1138,   253,   254,    30,   151,   890,
2517      891,   152,  1146,   147,   152,    19,   120,   152,   148,   152,
2518     1098,   152,   145,   149,  1102,    35,   907,   156,   156,   156,
2519     1108,   153,   147,    25,   152,   916,  1363,   887,    79,    42,
2520      152,    33,    30,    35,   148,   149,   150,   214,   152,   130,
2521      151,  1129,    37,   149,    47,   152,    30,   152,    60,   940,
2522     1138,   152,  1140,    49,   147,   232,    34,    59,  1146,    61,
2523       78,   156,   152,  1342,   120,   145,   155,   927,    70,  1221,
2524      153,  1329,    42,    75,   152,    42,   160,    79,   938,   152,
2525       66,    68,    38,    85,    86,    62,    60,    89,  1316,   980,
2526     1552,   150,    42,   270,   985,    37,   987,   957,    30,    47,
2527     1188,    67,    37,   152,  1234,   147,    53,   967,  1570,   150,
2528      153,    76,   147,     1,   152,   161,   152,   148,   978,   148,
2529      152,   147,    10,  1014,    67,    49,   149,   152,    16,    17,
2530      151,    62,    69,  1221,    42,    23,   152,    25,    26,   147,
2531       34,    39,   152,   152,    34,    33,    34,    35,   152,   150,
2532     1238,   328,   152,  1044,    53,    30,   333,   154,   152,   152,
2533       67,   152,  1022,    30,    34,  1025,  1254,  1027,  1320,   152,
2534       67,    59,   147,    61,    42,   130,   152,    81,  1069,   152,
2535      152,    36,    70,    71,   147,    36,    60,    75,    37,    36,
2536       78,    79,    30,   152,   152,   152,    42,    85,    86,    87,
2537     1060,    89,   108,   152,    30,     9,   152,  1295,   152,   148,
2538       54,  1330,   152,   105,   152,    37,   152,   151,   148,   152,
2539     1080,   149,  1295,   400,  1084,   148,     1,    81,    47,    47,
2540       47,    47,  1092,  1321,     1,    36,     3,     4,     5,     6,
2541        7,   151,    30,   152,    64,   108,  1106,   152,    30,   152,
2542      152,   152,    81,    81,    77,  1115,   152,    72,    68,    46,
2543     1348,  1349,     1,    34,  1352,   150,  1396,    28,     7,   446,
2544     1161,   157,   449,  1425,   162,    60,   149,   454,    30,   148,
2545       40,    36,    49,   148,    53,    52,    25,    36,    55,    19,
2546       57,   152,  1152,   152,    33,    76,    35,  1449,   133,    22,
2547      477,    42,   479,   480,   152,  1165,  1166,  1167,    34,   152,
2548      152,   152,   489,    81,   491,   152,    30,    30,  1178,   496,
2549       59,   152,    61,   153,    36,   152,    30,   152,    60,     3,
2550     1221,    70,  1420,    81,    30,   512,    75,  1197,   152,  1230,
2551       79,   152,   519,   152,   152,   152,    85,    86,   525,   105,
2552       89,    30,   119,   152,   121,   152,    81,  1248,    42,    34,
2553     1251,  1221,     3,     4,     5,     6,     7,    37,   135,   136,
2554       81,    36,   152,   130,   153,   152,   143,   144,  1466,  1467,
2555      147,    47,   152,    39,    46,    30,   152,   150,   152,   154,
2556      152,   150,    81,    47,   152,    81,    60,    47,   152,   152,
2557     1552,  1489,   152,   149,    30,    36,   153,   152,    49,  1269,
2558      152,    52,  1272,    36,    55,   152,  1276,    22,  1570,    72,
2559     1311,    39,    81,  1283,    81,   152,    18,    36,   152,  1320,
2560      152,   152,  1292,  1293,    81,    22,   152,   614,  1329,  1330,
2561     1138,     3,   152,   152,  1304,   152,     5,   400,   306,   157,
2562        5,  1342,   838,   991,   653,   632,  1019,  1545,   450,   636,
2563     1320,   102,  1060,   178,   105,   642,   643,   808,   539,   887,
2564      746,   751,  1363,    44,  1562,    10,   214,  1248,   119,   988,
2565      121,    16,    17,   579,   869,   923,  1574,   664,    23,  1470,
2566       25,    26,  1413,  1037,   135,   136,  1314,  1327,    33,    34,
2567       35,  1361,   143,   144,  1309,  1104,   147,  1367,  1079,  1334,
2568      687,  1371,   632,   154,  1392,  1161,  1289,  1044,  1378,  1490,
2569     1044,    62,  1182,   879,    59,  1146,    61,  1008,  1351,  1132,
2570      992,   597,   404,  1223,  1425,    70,    71,  1585,  1481,  1488,
2571       75,   718,  1525,    78,    79,  1044,   606,  1191,    26,   201,
2572       85,    86,    87,    -1,    89,     1,    -1,    -1,  1449,    -1,
2573        6,     7,    -1,    -1,    -1,  1425,    -1,    -1,    -1,    15,
2574       -1,    -1,    -1,    -1,    -1,    -1,    22,    -1,    -1,    -1,
2575     1440,    -1,    28,    29,    30,  1445,    32,    -1,    34,  1449,
2576       -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
2577       46,    -1,    -1,   780,    50,    -1,    52,  1467,    -1,    -1,
2578       -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,  1478,    -1,
2579       66,    67,  1482,  1483,    -1,  1485,    -1,   162,    -1,    -1,
2580       -1,  1491,    -1,    -1,    80,    -1,    82,    83,    -1,    -1,
2581       -1,    -1,    -1,    -1,   821,    -1,    -1,    10,    -1,  1509,
2582       -1,    -1,    -1,    16,    17,    -1,   833,    -1,    -1,    -1,
2583       23,  1552,    25,    26,    -1,    -1,    -1,    -1,    -1,    -1,
2584       33,    34,    35,   119,  1534,    -1,    -1,    -1,    -1,  1570,
2585       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1548,    -1,
2586       -1,    -1,  1552,    -1,    -1,  1555,    59,    -1,    61,   876,
2587       -1,   147,   879,    -1,    -1,    -1,    -1,    70,    71,    -1,
2588     1570,    -1,    75,   890,   891,    78,    79,    -1,    -1,    -1,
2589       -1,  1581,    85,    86,    87,    10,    89,    -1,    -1,    -1,
2590      907,    16,    17,    -1,    -1,    -1,    -1,    -1,    23,   916,
2591       25,    26,    -1,    -1,    -1,    -1,    10,    -1,    33,    34,
2592       35,    -1,    16,    17,    -1,    -1,    -1,    -1,    -1,    23,
2593       -1,    25,    26,   940,    -1,    -1,    -1,    -1,    -1,    33,
2594       34,    35,    -1,    -1,    59,    -1,    61,    -1,    -1,    -1,
2595       -1,    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    -1,
2596       75,    -1,    -1,    78,    79,    59,    -1,    61,    -1,   162,
2597       85,    86,    87,   980,    89,    -1,    70,    71,   985,    -1,
2598      987,    75,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,
2599       -1,    85,    86,    87,     1,    89,     3,     4,     5,     6,
2600        7,    -1,    -1,    -1,    -1,     1,    -1,  1014,    -1,    -1,
2601        6,     7,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    15,
2602       -1,    -1,    18,    -1,    -1,    -1,    22,    23,    24,     3,
2603        4,     5,     6,     7,    -1,    31,    -1,  1044,    34,    -1,
2604       -1,    -1,    49,    39,    -1,    52,    -1,   162,    -1,    -1,
2605       -1,    -1,    -1,  1060,     1,    -1,     3,     4,     5,     6,
2606        7,    -1,  1069,    -1,    -1,    -1,    62,    74,   162,     3,
2607        4,     5,     6,     7,    -1,    49,    -1,    -1,    52,    -1,
2608       -1,    55,    -1,    -1,    -1,    -1,    -1,    83,    -1,    -1,
2609       97,    -1,    88,    -1,    -1,    -1,    -1,   104,   105,    -1,
2610       -1,    -1,    49,   110,   111,    52,     3,     4,     5,     6,
2611        7,    -1,   119,    -1,   121,    49,    -1,    -1,    52,    -1,
2612       -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,   135,   136,
2613       -1,   105,    -1,    -1,    -1,    -1,   143,   144,    -1,    -1,
2614      147,    -1,    -1,    -1,    -1,   119,    -1,   121,    -1,    -1,
2615       -1,   147,    49,    -1,  1161,    52,    -1,    -1,    -1,    -1,
2616       57,   135,   136,    97,    -1,    -1,    -1,    -1,    -1,   143,
2617      144,    -1,   119,   147,   121,    -1,    -1,     3,     4,     5,
2618        6,     7,    -1,    -1,    -1,   119,    -1,   121,   135,   136,
2619       -1,    -1,    -1,    -1,    -1,    -1,   143,   144,    -1,    -1,
2620      147,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,   143,
2621      144,    -1,    -1,   147,     3,     4,     5,     6,     7,    -1,
2622       -1,    -1,   119,    49,   121,    -1,    52,    -1,    -1,    -1,
2623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   135,   136,
2624       -1,  1248,    -1,    -1,    -1,    -1,   143,   144,    -1,    -1,
2625      147,    -1,     6,     7,    -1,    -1,    -1,    -1,    -1,    -1,
2626       49,    15,    -1,    52,    -1,    -1,    -1,    -1,    22,    -1,
2627       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,    -1,
2628       34,    -1,    -1,    -1,    -1,    39,    -1,    -1,    12,    -1,
2629       -1,    -1,    46,   119,    -1,   121,    50,    -1,    52,    -1,
2630       -1,    -1,    -1,    -1,  1311,    -1,    -1,    -1,    -1,   135,
2631      136,    -1,    66,    67,    -1,    -1,    -1,   143,   144,    -1,
2632       -1,   147,    -1,  1330,    48,    -1,    80,    51,    82,    83,
2633      119,    -1,    56,    -1,    -1,  1342,    -1,    -1,    -1,    -1,
2634       -1,    -1,    -1,    -1,    -1,    -1,   135,   136,    -1,    -1,
2635       -1,    -1,    -1,    -1,   143,   144,  1363,    -1,   147,    -1,
2636       84,    -1,    -1,    -1,    -1,   119,    90,    91,    92,    93,
2637       94,    95,    96,   122,   123,   124,   125,   126,   127,   128,
2638      129,   130,   131,   132,   133,   134,   135,   136,    -1,   138,
2639      139,   140,   141,   147,    -1,    -1,    -1,    -1,   122,   123,
2640      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
2641      134,   135,   136,     1,   138,   139,   140,   141,    -1,    -1,
2642       -1,    -1,    -1,    -1,    -1,    13,    -1,    -1,    -1,    -1,
2643       -1,    -1,    -1,    -1,    -1,    23,    24,    25,    13,    -1,
2644       -1,    -1,    -1,    31,    -1,    33,    -1,    35,    23,    24,
2645       25,    -1,    -1,    -1,    -1,    43,    31,    -1,    33,    -1,
2646       35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    -1,
2647       -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
2648       -1,    -1,    70,    71,    59,    -1,    61,    75,    76,    -1,
2649       -1,    79,    -1,    -1,    -1,    70,    71,    -1,    -1,    87,
2650       75,    76,    -1,    -1,    79,    -1,    -1,    -1,     1,    -1,
2651       -1,    -1,    87,    -1,    -1,    -1,    -1,    10,   106,    -1,
2652       -1,   109,    -1,    16,    17,    -1,   114,    -1,    -1,    -1,
2653       -1,   106,    25,    26,   109,    -1,    -1,    30,    -1,   114,
2654       33,    -1,    35,    -1,    37,    -1,    -1,     1,    -1,    -1,
2655       -1,    -1,    -1,    -1,    -1,    -1,    10,    -1,    -1,    -1,
2656       -1,    -1,    16,    -1,    -1,    -1,    59,    60,    61,    23,
2657       -1,    25,    26,    -1,    -1,    -1,    30,    70,    71,    33,
2658        1,    35,    75,    37,    -1,    78,    79,    -1,    -1,    10,
2659       -1,    -1,    85,    86,    87,    16,    89,    -1,    -1,    -1,
2660       -1,    -1,    -1,    -1,    25,    59,    -1,    61,    -1,    30,
2661       -1,    -1,    33,     1,    35,    -1,    70,    71,    -1,    -1,
2662       -1,    75,    10,    -1,    78,    79,    -1,    -1,    16,    17,
2663       -1,    85,    86,    87,    -1,    89,    -1,    25,    59,    -1,
2664       61,    -1,    -1,    -1,    -1,    33,     1,    35,    -1,    -1,
2665       71,    -1,    -1,    -1,    75,    10,    -1,    78,    79,    -1,
2666       -1,    16,    -1,    -1,    85,    86,    87,    -1,    89,    -1,
2667       25,    59,    -1,    61,    -1,    30,    -1,    -1,    33,    -1,
2668       35,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
2669       78,    79,    -1,    -1,    10,    -1,    -1,    85,    86,    87,
2670       16,    89,    -1,    -1,    59,    -1,    61,    23,    -1,    25,
2671       26,    -1,    -1,    -1,    30,    -1,    71,    33,    -1,    35,
2672       75,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,
2673       85,    86,    87,    10,    89,    -1,    -1,    -1,    -1,    16,
2674       17,    -1,    -1,    59,    -1,    61,    -1,    -1,    25,    26,
2675       -1,    -1,    -1,    -1,    70,    71,    33,    -1,    35,    75,
2676       -1,    -1,    78,    79,    -1,    -1,    10,    -1,    -1,    85,
2677       86,    87,    16,    89,    -1,    -1,    -1,    -1,    -1,    -1,
2678       -1,    25,    59,    -1,    61,    -1,    30,    -1,    -1,    33,
2679       -1,    35,    -1,    70,    71,    -1,    -1,    -1,    75,    10,
2680       -1,    78,    79,    -1,    -1,    16,    17,    -1,    85,    86,
2681       87,    -1,    89,    -1,    25,    59,    -1,    61,    -1,    -1,
2682       -1,    -1,    33,    -1,    35,    -1,    -1,    71,    -1,    -1,
2683       -1,    75,    10,    -1,    78,    79,    -1,    -1,    16,    -1,
2684       -1,    85,    86,    87,    -1,    89,    -1,    25,    59,    -1,
2685       61,    -1,    30,    -1,    -1,    33,    -1,    35,    -1,    -1,
2686       71,    -1,    -1,    -1,    75,    10,    -1,    78,    79,    -1,
2687       -1,    16,    17,    -1,    85,    86,    87,    -1,    89,    -1,
2688       25,    59,    -1,    61,    -1,    -1,    -1,    -1,    33,    -1,
2689       35,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
2690       78,    79,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
2691       -1,    89,    -1,    -1,    59,    -1,    61,    -1,    -1,    -1,
2692       -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
2693       75,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,
2694       85,    86,    87,    -1,    89,   350,   351,   352,   353,   354,
2695      355,   356,   357,   358,   359,   360,   361,    -1,    -1,    -1,
2696       -1,    -1,    -1,   368,   369,   370,   371,   372,   373,   374,
2697      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
2698      385,   386,   387,   122,   123,   124,   125,   126,   127,   128,
2699      129,   130,   131,   132,   133,   134,   135,   136,    -1,   138,
2700      139,   140,   141
2701 };
2702
2703 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2704    symbol of state STATE-NUM.  */
2705 static const yytype_uint16 yystos[] =
2706 {
2707        0,   164,   165,   166,   174,   175,     0,   174,    13,    24,
2708       31,    44,    59,    78,   100,   176,   177,   178,   179,   181,
2709      182,   191,   192,   196,   198,   202,   203,   208,   209,   507,
2710      512,     7,   491,   491,   491,   173,   491,     1,    19,   491,
2711        6,   119,   180,   268,   269,   270,   271,   273,   275,   491,
2712      493,   551,   491,     1,    37,   189,     1,   194,     1,   200,
2713        1,    37,   205,   207,   549,     1,   211,    53,    53,    42,
2714      149,   152,   491,   491,    42,    25,    70,    79,   552,   149,
2715      152,   156,   146,   147,   251,   274,   251,   274,   147,    42,
2716       30,   460,     1,   190,    60,   187,    30,    10,    16,    17,
2717       23,    25,    26,    33,    34,    35,    61,    70,    71,    75,
2718       79,    85,    86,    87,    89,   162,   179,   195,   202,   208,
2719      213,   214,   216,   223,   224,   225,   235,   287,   311,   324,
2720      326,   329,   333,   336,   339,   343,   344,   462,   475,   485,
2721      486,   512,   513,   560,    30,    16,    34,    78,    87,   179,
2722      201,   222,   344,   465,   485,    30,   550,    30,    59,   202,
2723      206,   214,   218,   225,   326,   329,   339,   343,   344,   462,
2724      485,   486,   512,   513,    37,   152,   548,    30,    30,   212,
2725      213,   214,   219,   235,   329,   343,   344,   485,   486,   491,
2726      491,   491,    42,    42,    49,   156,   158,   159,   553,   554,
2727      555,   556,   559,   271,     4,    11,   167,   272,   491,   493,
2728      495,     1,     3,     5,    49,    52,    55,    57,   121,   135,
2729      136,   143,   144,   147,   168,   172,   255,   258,   260,   261,
2730      267,   268,   270,   271,   276,   277,   278,   279,   286,   314,
2731      321,   492,   494,   495,    63,   491,    63,   491,   258,   270,
2732       30,   508,    13,    23,    31,   491,   152,   152,   147,   239,
2733      188,   185,    13,   193,   491,   334,   491,   493,   491,   359,
2734      360,   491,   173,    11,    57,   268,   340,   173,    11,    57,
2735      173,   477,   478,   167,   491,   491,   173,     1,   491,     1,
2736      491,   173,   491,    79,    35,    42,   152,    24,   199,   491,
2737      491,     1,   268,   470,   118,   491,    30,    59,   204,   491,
2738      239,   204,    47,   152,    59,   210,   491,   210,    42,    42,
2739       49,   373,   491,   491,   557,   558,   373,   156,   151,   159,
2740      491,   558,   148,   270,   278,   148,   267,   267,   267,   267,
2741      267,   258,   282,   283,   286,   321,   252,    27,    73,   323,
2742       12,    48,    51,    56,    84,    90,    12,    48,    51,    56,
2743       84,    90,    91,    92,    93,    94,    95,    96,   122,   123,
2744      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
2745      134,   135,   136,   138,   139,   140,   141,   259,   145,    63,
2746      146,   270,   316,   148,   149,   153,   491,   148,   100,   509,
2747      100,   178,   179,   506,   510,   511,   183,   491,   183,   183,
2748        1,    25,    33,    35,    59,    61,    70,    75,    79,    89,
2749      223,   242,   246,   331,   540,   541,   542,   547,   152,   239,
2750       17,   184,   186,   213,   214,   215,   235,   326,   329,   339,
2751      343,   344,   485,   486,   491,   152,   151,   335,    53,   151,
2752       30,     1,    15,    83,    88,   147,   268,   276,   361,   362,
2753      363,   377,   381,   382,   383,   384,   392,   396,   402,   408,
2754      409,   412,   425,   449,   491,    42,   461,   151,   341,   151,
2755      151,    37,    78,   476,   481,   151,   228,    42,   226,   151,
2756      152,    42,   152,     1,    42,   288,   151,    42,   151,   173,
2757      167,     1,   237,   491,   152,    30,   468,   173,   199,   491,
2758      152,   152,   147,   248,    19,   152,   152,   152,   156,   160,
2759      514,   147,   156,   491,   557,   270,   312,   314,   156,   491,
2760      251,   270,   280,   145,   148,   149,   153,   284,   148,   149,
2761      253,   258,   261,   261,   261,   261,   261,   261,   261,   261,
2762      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
2763      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
2764      261,   261,   261,   261,   267,   135,   136,   143,   144,   262,
2765      264,   266,   267,   275,   322,   147,   276,   251,   315,   316,
2766      258,   282,   283,   258,   491,   152,   180,    30,   511,   148,
2767      491,   493,   543,   491,   491,    79,    35,   240,   173,   491,
2768      152,   359,   460,   312,    42,    11,    57,   167,   345,   346,
2769      270,   193,    30,   258,   258,   384,   396,   425,   449,   152,
2770      130,   410,   151,    37,   464,   312,   149,   342,   270,   312,
2771      491,    47,    24,    31,    55,   118,   479,   482,   152,    60,
2772      480,   258,   107,   229,   230,   232,   233,   549,    49,   233,
2773      234,   312,   312,   152,     8,    14,    33,    64,   108,   147,
2774      289,   290,   293,   299,   303,   305,   309,   310,   316,   496,
2775      501,   152,   312,   147,   490,   491,   493,   151,   227,    30,
2776       17,   213,   214,   220,   235,   238,   329,   343,   344,   485,
2777      486,    34,   179,   466,   469,   152,   152,    55,   102,   105,
2778      154,   254,   256,   257,   258,   268,   491,   491,    67,   161,
2779      270,   515,   516,   152,   548,   258,   156,   251,   313,   120,
2780      251,   281,   267,   282,   258,   155,   285,   255,   264,   264,
2781      267,   267,   134,   135,   136,   263,   323,   138,   139,   140,
2782      141,   265,   145,   258,   153,   152,   509,   107,   147,   545,
2783       42,   545,   543,   148,   152,   241,   151,   152,     1,   268,
2784      347,    42,   514,   152,   152,    88,   411,   412,    66,   427,
2785       68,    38,   393,   395,    62,    18,    22,    23,    24,    31,
2786       88,   268,   376,   384,   396,   403,   405,   409,   425,   449,
2787      518,   239,    60,   463,   150,   325,   268,     9,    42,    55,
2788      337,   248,   270,   268,   173,   481,    30,    47,   231,   230,
2789      239,    67,   548,     1,   373,    21,    65,   328,   332,   152,
2790      312,   147,   317,    53,   173,   308,     1,    19,   497,   169,
2791      491,   495,    76,   150,   330,     1,    13,    23,    24,    25,
2792       31,    33,    35,    43,    59,    61,    70,    71,    75,    76,
2793       79,    87,   106,   109,   114,   349,   487,   489,   147,   312,
2794      233,    35,    61,   167,   236,   420,   421,   152,    30,    34,
2795      465,   467,   471,   472,   197,   258,   249,   153,   270,   161,
2796       67,   149,   517,   152,   148,   148,   258,   286,   264,   262,
2797      266,   267,   148,   258,   152,   546,   242,    67,    49,   545,
2798      242,    20,    40,    41,    45,    58,   245,   247,   152,   514,
2799      149,   348,   258,   151,   152,    62,   258,    69,   426,   268,
2800      392,    97,   258,   385,   386,   389,    74,   105,   110,   394,
2801      147,   416,    42,   372,     1,   258,   384,   396,   425,   449,
2802      378,   379,   373,   374,    34,   355,   357,    39,   350,   351,
2803      152,   239,   460,   258,   152,   258,   247,   338,   258,   152,
2804      152,   480,    34,   248,   239,   270,   152,   514,   150,   327,
2805      270,   302,   312,   320,   322,    53,   270,   151,   306,    30,
2806        1,   502,    30,   179,   224,   344,   498,   500,   513,   291,
2807      297,   491,   258,   152,   152,   154,   488,   148,   149,   483,
2808      484,   491,   495,   330,    67,     6,   491,   491,   152,    30,
2809       22,    32,    39,    50,    52,    67,    80,    83,   392,   422,
2810      423,   424,   425,   430,   434,   437,   441,   444,   445,   448,
2811      449,   450,   452,   453,   454,   455,   456,   491,   522,   523,
2812      525,   526,   527,   531,   534,   536,    34,   477,   491,   148,
2813      149,   250,   257,   270,   270,   147,   240,   270,   373,    67,
2814      312,   152,   167,   152,   349,   413,   491,   258,   152,   130,
2815        9,    52,   390,   152,    81,   387,   258,    11,   268,   417,
2816       42,   414,   147,   371,    36,    36,    37,    60,   147,   375,
2817       37,    60,   454,   491,    36,   258,   454,   491,    30,   404,
2818      407,   152,   152,   152,   258,    42,   152,   152,   548,   258,
2819      152,    63,   300,   318,   312,   312,    30,   307,   308,   108,
2820      499,    30,    30,   220,   503,   505,   499,   148,   149,   292,
2821      295,   152,   148,   152,   487,   148,   149,   152,   270,   236,
2822        1,   157,   428,   436,   491,   258,   447,   491,   152,   258,
2823      451,    54,   459,   258,   130,   150,    66,    82,   356,   357,
2824      358,   443,    22,   392,   425,   452,   456,   536,    81,   152,
2825      151,   152,    78,   474,   481,   254,   242,   148,    42,   544,
2826      548,   270,    20,    21,   244,   393,   258,     9,   391,   258,
2827      149,   388,   105,   148,   418,   148,    17,   213,   214,   221,
2828      235,   329,   343,   344,   415,   485,   486,   258,    37,   369,
2829        1,    81,   519,   520,    47,    47,   491,    47,    47,   491,
2830       40,   151,    17,   216,   217,   400,    36,   258,    36,   152,
2831      406,   491,    30,   152,   258,   152,   154,   148,   149,   301,
2832      148,   149,   319,   152,    64,   491,   108,   504,   504,   169,
2833       30,   296,   298,   491,   152,   483,   152,    30,   258,    81,
2834      435,    72,    81,   446,   152,   417,    77,   458,    68,     1,
2835       74,   104,   105,   110,   111,   386,   389,   533,   258,   258,
2836      258,    46,   428,   150,   258,   118,   479,   465,   473,   480,
2837      240,   154,   491,   544,   150,   243,   397,   398,   258,    28,
2838      389,   149,   419,   420,   148,   239,    60,   367,    30,   283,
2839      454,    30,   519,   521,   248,   248,   148,   248,   248,    40,
2840      270,   320,    17,   216,   359,   400,   401,    36,   491,   152,
2841      152,   406,    53,   270,   302,   320,   304,   491,    19,    76,
2842      294,   133,    22,    42,   258,   152,     1,   420,   258,   152,
2843      258,    34,   457,   428,   152,    40,    58,   532,   258,   532,
2844      152,    81,   386,   389,   426,   420,   258,   258,    28,   152,
2845      535,   173,   152,    30,   152,   148,   258,   152,   386,   399,
2846      385,   268,    30,   372,   152,   239,   365,    36,   153,   283,
2847       36,   152,   491,    30,    60,   380,   152,   380,   152,   320,
2848      404,   359,   353,   401,   152,   312,    63,   491,   491,   170,
2849      171,   494,   157,   429,   491,    81,   433,    30,   439,   258,
2850      152,   268,   276,   392,   539,   258,   105,   152,   258,   152,
2851       81,   152,    30,    42,   258,    28,   152,   152,    34,    81,
2852      411,    37,   370,   152,    17,   216,   366,   406,   401,   153,
2853      406,   152,    36,    47,   152,   152,    28,    29,   352,   354,
2854      353,   152,   491,   152,   283,   431,    39,    28,    29,   438,
2855      440,   130,   150,    81,   152,    28,   152,   524,   258,    46,
2856      433,    81,   258,   152,   283,   152,    47,    60,   368,   359,
2857      152,   401,   152,   406,   248,    36,   454,   491,   258,   454,
2858      352,   153,    30,   432,   433,   152,   420,   258,    30,   104,
2859      528,   533,   258,   537,   538,   258,   258,   152,   152,   524,
2860      442,   491,   431,   258,    81,   149,   248,    47,    30,   152,
2861      401,    36,    36,   258,   420,    22,    72,    39,   532,   389,
2862      529,   530,    81,   152,   535,    81,   152,   152,    30,   258,
2863      152,   248,    18,   401,   401,    36,   429,   420,   152,   537,
2864       81,   283,   152,   258,    22,   152,   364,   491,   401,   152,
2865      283,   149,   152,   429,   152,   149,   152,   537,   152,   529
2866 };
2867
2868 #define yyerrok         (yyerrstatus = 0)
2869 #define yyclearin       (yychar = YYEMPTY)
2870 #define YYEMPTY         (-2)
2871 #define YYEOF           0
2872
2873 #define YYACCEPT        goto yyacceptlab
2874 #define YYABORT         goto yyabortlab
2875 #define YYERROR         goto yyerrorlab
2876
2877
2878 /* Like YYERROR except do call yyerror.  This remains here temporarily
2879    to ease the transition to the new meaning of YYERROR, for GCC.
2880    Once GCC version 2 has supplanted version 1, this can go.  */
2881
2882 #define YYFAIL          goto yyerrlab
2883
2884 #define YYRECOVERING()  (!!yyerrstatus)
2885
2886 #define YYBACKUP(Token, Value)                                  \
2887 do                                                              \
2888   if (yychar == YYEMPTY && yylen == 1)                          \
2889     {                                                           \
2890       yychar = (Token);                                         \
2891       yylval = (Value);                                         \
2892       yytoken = YYTRANSLATE (yychar);                           \
2893       YYPOPSTACK (1);                                           \
2894       goto yybackup;                                            \
2895     }                                                           \
2896   else                                                          \
2897     {                                                           \
2898       yyerror (YY_("syntax error: cannot back up")); \
2899       YYERROR;                                                  \
2900     }                                                           \
2901 while (YYID (0))
2902
2903
2904 #define YYTERROR        1
2905 #define YYERRCODE       256
2906
2907
2908 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2909    If N is 0, then set CURRENT to the empty location which ends
2910    the previous symbol: RHS[0] (always defined).  */
2911
2912 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2913 #ifndef YYLLOC_DEFAULT
2914 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2915     do                                                                  \
2916       if (YYID (N))                                                    \
2917         {                                                               \
2918           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2919           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2920           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2921           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2922         }                                                               \
2923       else                                                              \
2924         {                                                               \
2925           (Current).first_line   = (Current).last_line   =              \
2926             YYRHSLOC (Rhs, 0).last_line;                                \
2927           (Current).first_column = (Current).last_column =              \
2928             YYRHSLOC (Rhs, 0).last_column;                              \
2929         }                                                               \
2930     while (YYID (0))
2931 #endif
2932
2933
2934 /* YY_LOCATION_PRINT -- Print the location on the stream.
2935    This macro was not mandated originally: define only if we know
2936    we won't break user code: when these are the locations we know.  */
2937
2938 #ifndef YY_LOCATION_PRINT
2939 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2940 #  define YY_LOCATION_PRINT(File, Loc)                  \
2941      fprintf (File, "%d.%d-%d.%d",                      \
2942               (Loc).first_line, (Loc).first_column,     \
2943               (Loc).last_line,  (Loc).last_column)
2944 # else
2945 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2946 # endif
2947 #endif
2948
2949
2950 /* YYLEX -- calling `yylex' with the right arguments.  */
2951
2952 #ifdef YYLEX_PARAM
2953 # define YYLEX yylex (YYLEX_PARAM)
2954 #else
2955 # define YYLEX yylex ()
2956 #endif
2957
2958 /* Enable debugging if requested.  */
2959 #if YYDEBUG
2960
2961 # ifndef YYFPRINTF
2962 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2963 #  define YYFPRINTF fprintf
2964 # endif
2965
2966 # define YYDPRINTF(Args)                        \
2967 do {                                            \
2968   if (yydebug)                                  \
2969     YYFPRINTF Args;                             \
2970 } while (YYID (0))
2971
2972 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2973 do {                                                                      \
2974   if (yydebug)                                                            \
2975     {                                                                     \
2976       YYFPRINTF (stderr, "%s ", Title);                                   \
2977       yy_symbol_print (stderr,                                            \
2978                   Type, Value); \
2979       YYFPRINTF (stderr, "\n");                                           \
2980     }                                                                     \
2981 } while (YYID (0))
2982
2983
2984 /*--------------------------------.
2985 | Print this symbol on YYOUTPUT.  |
2986 `--------------------------------*/
2987
2988 /*ARGSUSED*/
2989 #if (defined __STDC__ || defined __C99__FUNC__ \
2990      || defined __cplusplus || defined _MSC_VER)
2991 static void
2992 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2993 #else
2994 static void
2995 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2996     FILE *yyoutput;
2997     int yytype;
2998     YYSTYPE const * const yyvaluep;
2999 #endif
3000 {
3001   if (!yyvaluep)
3002     return;
3003 # ifdef YYPRINT
3004   if (yytype < YYNTOKENS)
3005     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
3006 # else
3007   YYUSE (yyoutput);
3008 # endif
3009   switch (yytype)
3010     {
3011       default:
3012         break;
3013     }
3014 }
3015
3016
3017 /*--------------------------------.
3018 | Print this symbol on YYOUTPUT.  |
3019 `--------------------------------*/
3020
3021 #if (defined __STDC__ || defined __C99__FUNC__ \
3022      || defined __cplusplus || defined _MSC_VER)
3023 static void
3024 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
3025 #else
3026 static void
3027 yy_symbol_print (yyoutput, yytype, yyvaluep)
3028     FILE *yyoutput;
3029     int yytype;
3030     YYSTYPE const * const yyvaluep;
3031 #endif
3032 {
3033   if (yytype < YYNTOKENS)
3034     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
3035   else
3036     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
3037
3038   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
3039   YYFPRINTF (yyoutput, ")");
3040 }
3041
3042 /*------------------------------------------------------------------.
3043 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
3044 | TOP (included).                                                   |
3045 `------------------------------------------------------------------*/
3046
3047 #if (defined __STDC__ || defined __C99__FUNC__ \
3048      || defined __cplusplus || defined _MSC_VER)
3049 static void
3050 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
3051 #else
3052 static void
3053 yy_stack_print (bottom, top)
3054     yytype_int16 *bottom;
3055     yytype_int16 *top;
3056 #endif
3057 {
3058   YYFPRINTF (stderr, "Stack now");
3059   for (; bottom <= top; ++bottom)
3060     YYFPRINTF (stderr, " %d", *bottom);
3061   YYFPRINTF (stderr, "\n");
3062 }
3063
3064 # define YY_STACK_PRINT(Bottom, Top)                            \
3065 do {                                                            \
3066   if (yydebug)                                                  \
3067     yy_stack_print ((Bottom), (Top));                           \
3068 } while (YYID (0))
3069
3070
3071 /*------------------------------------------------.
3072 | Report that the YYRULE is going to be reduced.  |
3073 `------------------------------------------------*/
3074
3075 #if (defined __STDC__ || defined __C99__FUNC__ \
3076      || defined __cplusplus || defined _MSC_VER)
3077 static void
3078 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
3079 #else
3080 static void
3081 yy_reduce_print (yyvsp, yyrule)
3082     YYSTYPE *yyvsp;
3083     int yyrule;
3084 #endif
3085 {
3086   int yynrhs = yyr2[yyrule];
3087   int yyi;
3088   unsigned long int yylno = yyrline[yyrule];
3089   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
3090              yyrule - 1, yylno);
3091   /* The symbols being reduced.  */
3092   for (yyi = 0; yyi < yynrhs; yyi++)
3093     {
3094       fprintf (stderr, "   $%d = ", yyi + 1);
3095       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
3096                        &(yyvsp[(yyi + 1) - (yynrhs)])
3097                                        );
3098       fprintf (stderr, "\n");
3099     }
3100 }
3101
3102 # define YY_REDUCE_PRINT(Rule)          \
3103 do {                                    \
3104   if (yydebug)                          \
3105     yy_reduce_print (yyvsp, Rule); \
3106 } while (YYID (0))
3107
3108 /* Nonzero means print parse trace.  It is left uninitialized so that
3109    multiple parsers can coexist.  */
3110 int yydebug;
3111 #else /* !YYDEBUG */
3112 # define YYDPRINTF(Args)
3113 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
3114 # define YY_STACK_PRINT(Bottom, Top)
3115 # define YY_REDUCE_PRINT(Rule)
3116 #endif /* !YYDEBUG */
3117
3118
3119 /* YYINITDEPTH -- initial size of the parser's stacks.  */
3120 #ifndef YYINITDEPTH
3121 # define YYINITDEPTH 200
3122 #endif
3123
3124 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
3125    if the built-in stack extension method is used).
3126
3127    Do not make this value too large; the results are undefined if
3128    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
3129    evaluated with infinite-precision integer arithmetic.  */
3130
3131 #ifndef YYMAXDEPTH
3132 # define YYMAXDEPTH 10000
3133 #endif
3134
3135 \f
3136
3137 #if YYERROR_VERBOSE
3138
3139 # ifndef yystrlen
3140 #  if defined __GLIBC__ && defined _STRING_H
3141 #   define yystrlen strlen
3142 #  else
3143 /* Return the length of YYSTR.  */
3144 #if (defined __STDC__ || defined __C99__FUNC__ \
3145      || defined __cplusplus || defined _MSC_VER)
3146 static YYSIZE_T
3147 yystrlen (const char *yystr)
3148 #else
3149 static YYSIZE_T
3150 yystrlen (yystr)
3151     const char *yystr;
3152 #endif
3153 {
3154   YYSIZE_T yylen;
3155   for (yylen = 0; yystr[yylen]; yylen++)
3156     continue;
3157   return yylen;
3158 }
3159 #  endif
3160 # endif
3161
3162 # ifndef yystpcpy
3163 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
3164 #   define yystpcpy stpcpy
3165 #  else
3166 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
3167    YYDEST.  */
3168 #if (defined __STDC__ || defined __C99__FUNC__ \
3169      || defined __cplusplus || defined _MSC_VER)
3170 static char *
3171 yystpcpy (char *yydest, const char *yysrc)
3172 #else
3173 static char *
3174 yystpcpy (yydest, yysrc)
3175     char *yydest;
3176     const char *yysrc;
3177 #endif
3178 {
3179   char *yyd = yydest;
3180   const char *yys = yysrc;
3181
3182   while ((*yyd++ = *yys++) != '\0')
3183     continue;
3184
3185   return yyd - 1;
3186 }
3187 #  endif
3188 # endif
3189
3190 # ifndef yytnamerr
3191 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
3192    quotes and backslashes, so that it's suitable for yyerror.  The
3193    heuristic is that double-quoting is unnecessary unless the string
3194    contains an apostrophe, a comma, or backslash (other than
3195    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
3196    null, do not copy; instead, return the length of what the result
3197    would have been.  */
3198 static YYSIZE_T
3199 yytnamerr (char *yyres, const char *yystr)
3200 {
3201   if (*yystr == '"')
3202     {
3203       YYSIZE_T yyn = 0;
3204       char const *yyp = yystr;
3205
3206       for (;;)
3207         switch (*++yyp)
3208           {
3209           case '\'':
3210           case ',':
3211             goto do_not_strip_quotes;
3212
3213           case '\\':
3214             if (*++yyp != '\\')
3215               goto do_not_strip_quotes;
3216             /* Fall through.  */
3217           default:
3218             if (yyres)
3219               yyres[yyn] = *yyp;
3220             yyn++;
3221             break;
3222
3223           case '"':
3224             if (yyres)
3225               yyres[yyn] = '\0';
3226             return yyn;
3227           }
3228     do_not_strip_quotes: ;
3229     }
3230
3231   if (! yyres)
3232     return yystrlen (yystr);
3233
3234   return yystpcpy (yyres, yystr) - yyres;
3235 }
3236 # endif
3237
3238 /* Copy into YYRESULT an error message about the unexpected token
3239    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
3240    including the terminating null byte.  If YYRESULT is null, do not
3241    copy anything; just return the number of bytes that would be
3242    copied.  As a special case, return 0 if an ordinary "syntax error"
3243    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
3244    size calculation.  */
3245 static YYSIZE_T
3246 yysyntax_error (char *yyresult, int yystate, int yychar)
3247 {
3248   int yyn = yypact[yystate];
3249
3250   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
3251     return 0;
3252   else
3253     {
3254       int yytype = YYTRANSLATE (yychar);
3255       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
3256       YYSIZE_T yysize = yysize0;
3257       YYSIZE_T yysize1;
3258       int yysize_overflow = 0;
3259       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
3260       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3261       int yyx;
3262
3263 # if 0
3264       /* This is so xgettext sees the translatable formats that are
3265          constructed on the fly.  */
3266       YY_("syntax error, unexpected %s");
3267       YY_("syntax error, unexpected %s, expecting %s");
3268       YY_("syntax error, unexpected %s, expecting %s or %s");
3269       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
3270       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
3271 # endif
3272       char *yyfmt;
3273       char const *yyf;
3274       static char const yyunexpected[] = "syntax error, unexpected %s";
3275       static char const yyexpecting[] = ", expecting %s";
3276       static char const yyor[] = " or %s";
3277       char yyformat[sizeof yyunexpected
3278                     + sizeof yyexpecting - 1
3279                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
3280                        * (sizeof yyor - 1))];
3281       char const *yyprefix = yyexpecting;
3282
3283       /* Start YYX at -YYN if negative to avoid negative indexes in
3284          YYCHECK.  */
3285       int yyxbegin = yyn < 0 ? -yyn : 0;
3286
3287       /* Stay within bounds of both yycheck and yytname.  */
3288       int yychecklim = YYLAST - yyn + 1;
3289       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3290       int yycount = 1;
3291
3292       yyarg[0] = yytname[yytype];
3293       yyfmt = yystpcpy (yyformat, yyunexpected);
3294
3295       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3296         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3297           {
3298             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3299               {
3300                 yycount = 1;
3301                 yysize = yysize0;
3302                 yyformat[sizeof yyunexpected - 1] = '\0';
3303                 break;
3304               }
3305             yyarg[yycount++] = yytname[yyx];
3306             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3307             yysize_overflow |= (yysize1 < yysize);
3308             yysize = yysize1;
3309             yyfmt = yystpcpy (yyfmt, yyprefix);
3310             yyprefix = yyor;
3311           }
3312
3313       yyf = YY_(yyformat);
3314       yysize1 = yysize + yystrlen (yyf);
3315       yysize_overflow |= (yysize1 < yysize);
3316       yysize = yysize1;
3317
3318       if (yysize_overflow)
3319         return YYSIZE_MAXIMUM;
3320
3321       if (yyresult)
3322         {
3323           /* Avoid sprintf, as that infringes on the user's name space.
3324              Don't have undefined behavior even if the translation
3325              produced a string with the wrong number of "%s"s.  */
3326           char *yyp = yyresult;
3327           int yyi = 0;
3328           while ((*yyp = *yyf) != '\0')
3329             {
3330               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3331                 {
3332                   yyp += yytnamerr (yyp, yyarg[yyi++]);
3333                   yyf += 2;
3334                 }
3335               else
3336                 {
3337                   yyp++;
3338                   yyf++;
3339                 }
3340             }
3341         }
3342       return yysize;
3343     }
3344 }
3345 #endif /* YYERROR_VERBOSE */
3346 \f
3347
3348 /*-----------------------------------------------.
3349 | Release the memory associated to this symbol.  |
3350 `-----------------------------------------------*/
3351
3352 /*ARGSUSED*/
3353 #if (defined __STDC__ || defined __C99__FUNC__ \
3354      || defined __cplusplus || defined _MSC_VER)
3355 static void
3356 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3357 #else
3358 static void
3359 yydestruct (yymsg, yytype, yyvaluep)
3360     const char *yymsg;
3361     int yytype;
3362     YYSTYPE *yyvaluep;
3363 #endif
3364 {
3365   YYUSE (yyvaluep);
3366
3367   if (!yymsg)
3368     yymsg = "Deleting";
3369   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3370
3371   switch (yytype)
3372     {
3373
3374       default:
3375         break;
3376     }
3377 }
3378 \f
3379
3380 /* Prevent warnings from -Wmissing-prototypes.  */
3381
3382 #ifdef YYPARSE_PARAM
3383 #if defined __STDC__ || defined __cplusplus
3384 int yyparse (void *YYPARSE_PARAM);
3385 #else
3386 int yyparse ();
3387 #endif
3388 #else /* ! YYPARSE_PARAM */
3389 #if defined __STDC__ || defined __cplusplus
3390 int yyparse (void);
3391 #else
3392 int yyparse ();
3393 #endif
3394 #endif /* ! YYPARSE_PARAM */
3395
3396
3397
3398 /* The look-ahead symbol.  */
3399 int yychar;
3400
3401 /* The semantic value of the look-ahead symbol.  */
3402 YYSTYPE yylval;
3403
3404 /* Number of syntax errors so far.  */
3405 int yynerrs;
3406
3407
3408
3409 /*----------.
3410 | yyparse.  |
3411 `----------*/
3412
3413 #ifdef YYPARSE_PARAM
3414 #if (defined __STDC__ || defined __C99__FUNC__ \
3415      || defined __cplusplus || defined _MSC_VER)
3416 int
3417 yyparse (void *YYPARSE_PARAM)
3418 #else
3419 int
3420 yyparse (YYPARSE_PARAM)
3421     void *YYPARSE_PARAM;
3422 #endif
3423 #else /* ! YYPARSE_PARAM */
3424 #if (defined __STDC__ || defined __C99__FUNC__ \
3425      || defined __cplusplus || defined _MSC_VER)
3426 int
3427 yyparse (void)
3428 #else
3429 int
3430 yyparse ()
3431
3432 #endif
3433 #endif
3434 {
3435   
3436   int yystate;
3437   int yyn;
3438   int yyresult;
3439   /* Number of tokens to shift before error messages enabled.  */
3440   int yyerrstatus;
3441   /* Look-ahead token as an internal (translated) token number.  */
3442   int yytoken = 0;
3443 #if YYERROR_VERBOSE
3444   /* Buffer for error messages, and its allocated size.  */
3445   char yymsgbuf[128];
3446   char *yymsg = yymsgbuf;
3447   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
3448 #endif
3449
3450   /* Three stacks and their tools:
3451      `yyss': related to states,
3452      `yyvs': related to semantic values,
3453      `yyls': related to locations.
3454
3455      Refer to the stacks thru separate pointers, to allow yyoverflow
3456      to reallocate them elsewhere.  */
3457
3458   /* The state stack.  */
3459   yytype_int16 yyssa[YYINITDEPTH];
3460   yytype_int16 *yyss = yyssa;
3461   yytype_int16 *yyssp;
3462
3463   /* The semantic value stack.  */
3464   YYSTYPE yyvsa[YYINITDEPTH];
3465   YYSTYPE *yyvs = yyvsa;
3466   YYSTYPE *yyvsp;
3467
3468
3469
3470 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
3471
3472   YYSIZE_T yystacksize = YYINITDEPTH;
3473
3474   /* The variables used to return semantic value and location from the
3475      action routines.  */
3476   YYSTYPE yyval;
3477
3478
3479   /* The number of symbols on the RHS of the reduced rule.
3480      Keep to zero when no symbol should be popped.  */
3481   int yylen = 0;
3482
3483   YYDPRINTF ((stderr, "Starting parse\n"));
3484
3485   yystate = 0;
3486   yyerrstatus = 0;
3487   yynerrs = 0;
3488   yychar = YYEMPTY;             /* Cause a token to be read.  */
3489
3490   /* Initialize stack pointers.
3491      Waste one element of value and location stack
3492      so that they stay on the same level as the state stack.
3493      The wasted elements are never initialized.  */
3494
3495   yyssp = yyss;
3496   yyvsp = yyvs;
3497
3498
3499   /* User initialization code.  */
3500
3501 { yydebug=0; }
3502 /* Line 1078 of yacc.c.  */
3503
3504   goto yysetstate;
3505
3506 /*------------------------------------------------------------.
3507 | yynewstate -- Push a new state, which is found in yystate.  |
3508 `------------------------------------------------------------*/
3509  yynewstate:
3510   /* In all cases, when you get here, the value and location stacks
3511      have just been pushed.  So pushing a state here evens the stacks.  */
3512   yyssp++;
3513
3514  yysetstate:
3515   *yyssp = yystate;
3516
3517   if (yyss + yystacksize - 1 <= yyssp)
3518     {
3519       /* Get the current used size of the three stacks, in elements.  */
3520       YYSIZE_T yysize = yyssp - yyss + 1;
3521
3522 #ifdef yyoverflow
3523       {
3524         /* Give user a chance to reallocate the stack.  Use copies of
3525            these so that the &'s don't force the real ones into
3526            memory.  */
3527         YYSTYPE *yyvs1 = yyvs;
3528         yytype_int16 *yyss1 = yyss;
3529
3530
3531         /* Each stack pointer address is followed by the size of the
3532            data in use in that stack, in bytes.  This used to be a
3533            conditional around just the two extra args, but that might
3534            be undefined if yyoverflow is a macro.  */
3535         yyoverflow (YY_("memory exhausted"),
3536                     &yyss1, yysize * sizeof (*yyssp),
3537                     &yyvs1, yysize * sizeof (*yyvsp),
3538
3539                     &yystacksize);
3540
3541         yyss = yyss1;
3542         yyvs = yyvs1;
3543       }
3544 #else /* no yyoverflow */
3545 # ifndef YYSTACK_RELOCATE
3546       goto yyexhaustedlab;
3547 # else
3548       /* Extend the stack our own way.  */
3549       if (YYMAXDEPTH <= yystacksize)
3550         goto yyexhaustedlab;
3551       yystacksize *= 2;
3552       if (YYMAXDEPTH < yystacksize)
3553         yystacksize = YYMAXDEPTH;
3554
3555       {
3556         yytype_int16 *yyss1 = yyss;
3557         union yyalloc *yyptr =
3558           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3559         if (! yyptr)
3560           goto yyexhaustedlab;
3561         YYSTACK_RELOCATE (yyss);
3562         YYSTACK_RELOCATE (yyvs);
3563
3564 #  undef YYSTACK_RELOCATE
3565         if (yyss1 != yyssa)
3566           YYSTACK_FREE (yyss1);
3567       }
3568 # endif
3569 #endif /* no yyoverflow */
3570
3571       yyssp = yyss + yysize - 1;
3572       yyvsp = yyvs + yysize - 1;
3573
3574
3575       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3576                   (unsigned long int) yystacksize));
3577
3578       if (yyss + yystacksize - 1 <= yyssp)
3579         YYABORT;
3580     }
3581
3582   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3583
3584   goto yybackup;
3585
3586 /*-----------.
3587 | yybackup.  |
3588 `-----------*/
3589 yybackup:
3590
3591   /* Do appropriate processing given the current state.  Read a
3592      look-ahead token if we need one and don't already have one.  */
3593
3594   /* First try to decide what to do without reference to look-ahead token.  */
3595   yyn = yypact[yystate];
3596   if (yyn == YYPACT_NINF)
3597     goto yydefault;
3598
3599   /* Not known => get a look-ahead token if don't already have one.  */
3600
3601   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
3602   if (yychar == YYEMPTY)
3603     {
3604       YYDPRINTF ((stderr, "Reading a token: "));
3605       yychar = YYLEX;
3606     }
3607
3608   if (yychar <= YYEOF)
3609     {
3610       yychar = yytoken = YYEOF;
3611       YYDPRINTF ((stderr, "Now at end of input.\n"));
3612     }
3613   else
3614     {
3615       yytoken = YYTRANSLATE (yychar);
3616       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3617     }
3618
3619   /* If the proper action on seeing token YYTOKEN is to reduce or to
3620      detect an error, take that action.  */
3621   yyn += yytoken;
3622   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3623     goto yydefault;
3624   yyn = yytable[yyn];
3625   if (yyn <= 0)
3626     {
3627       if (yyn == 0 || yyn == YYTABLE_NINF)
3628         goto yyerrlab;
3629       yyn = -yyn;
3630       goto yyreduce;
3631     }
3632
3633   if (yyn == YYFINAL)
3634     YYACCEPT;
3635
3636   /* Count tokens shifted since error; after three, turn off error
3637      status.  */
3638   if (yyerrstatus)
3639     yyerrstatus--;
3640
3641   /* Shift the look-ahead token.  */
3642   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3643
3644   /* Discard the shifted token unless it is eof.  */
3645   if (yychar != YYEOF)
3646     yychar = YYEMPTY;
3647
3648   yystate = yyn;
3649   *++yyvsp = yylval;
3650
3651   goto yynewstate;
3652
3653
3654 /*-----------------------------------------------------------.
3655 | yydefault -- do the default action for the current state.  |
3656 `-----------------------------------------------------------*/
3657 yydefault:
3658   yyn = yydefact[yystate];
3659   if (yyn == 0)
3660     goto yyerrlab;
3661   goto yyreduce;
3662
3663
3664 /*-----------------------------.
3665 | yyreduce -- Do a reduction.  |
3666 `-----------------------------*/
3667 yyreduce:
3668   /* yyn is the number of a rule to reduce with.  */
3669   yylen = yyr2[yyn];
3670
3671   /* If YYLEN is nonzero, implement the default value of the action:
3672      `$$ = $1'.
3673
3674      Otherwise, the following line sets YYVAL to garbage.
3675      This behavior is undocumented and Bison
3676      users should not rely upon it.  Assigning to YYVAL
3677      unconditionally makes the parser a bit smaller, and it avoids a
3678      GCC warning that YYVAL may be used uninitialized.  */
3679   yyval = yyvsp[1-yylen];
3680
3681
3682   YY_REDUCE_PRINT (yyn);
3683   switch (yyn)
3684     {
3685         case 6:
3686
3687     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3688     break;
3689
3690   case 7:
3691
3692     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3693     break;
3694
3695   case 8:
3696
3697     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3698     break;
3699
3700   case 9:
3701
3702     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3703     break;
3704
3705   case 10:
3706
3707     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3708     break;
3709
3710   case 11:
3711
3712     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3713     break;
3714
3715   case 12:
3716
3717     { (yyval.qstr)="null"; ;}
3718     break;
3719
3720   case 13:
3721
3722     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3723     break;
3724
3725   case 14:
3726
3727     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3728     break;
3729
3730   case 15:
3731
3732     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
3733     break;
3734
3735   case 16:
3736
3737     { (yyval.qstr)=""; ;}
3738     break;
3739
3740   case 17:
3741
3742     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3743     break;
3744
3745   case 18:
3746
3747     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
3748     break;
3749
3750   case 19:
3751
3752     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3753     break;
3754
3755   case 20:
3756
3757     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+","+(yyvsp[(3) - (3)].qstr);}
3758     break;
3759
3760   case 33:
3761
3762     {
3763                    if ( parse_sec == 0)
3764                    {
3765                     addVhdlType((yyvsp[(2) - (3)].qstr),getParsedLine(t_LIBRARY),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,(yyvsp[(2) - (3)].qstr).data(),"_library_");
3766                    }
3767                    (yyval.qstr)="library "+(yyvsp[(2) - (3)].qstr);
3768                  ;}
3769     break;
3770
3771   case 34:
3772
3773     {
3774                    QStringList ql1=QStringList::split(",",(yyvsp[(2) - (3)].qstr),FALSE);
3775                    for (uint j=0;j<ql1.count();j++)
3776                    {
3777                      QStringList ql=QStringList::split(".",ql1[j],FALSE);
3778                      QCString it=ql[1].utf8();
3779                      if ( parse_sec == 0 )
3780                      {
3781                        addVhdlType(it,getParsedLine(t_USE),Entry::VARIABLE_SEC,VhdlDocGen::USE,it.data(),"_use_");
3782                      }
3783                    }
3784                    (yyval.qstr)="use "+(yyvsp[(2) - (3)].qstr);
3785                  ;}
3786     break;
3787
3788   case 35:
3789
3790     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3791     break;
3792
3793   case 36:
3794
3795     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+","+(yyvsp[(3) - (3)].qstr); ;}
3796     break;
3797
3798   case 39:
3799
3800     {
3801                 (yyval.qstr)=(yyvsp[(2) - (3)].qstr);
3802                 lastEntity=current;
3803                 lastCompound=0;
3804                 /*int k=*/ getParsedLine(t_ENTITY);
3805                 addVhdlType((yyval.qstr),getParsedLine(t_ENTITY),Entry::CLASS_SEC,VhdlDocGen::ENTITY,0,0,Public);
3806                 //fprintf(stderr,"\n entiy %s : at line %d",$$.data(),s_str.yyLineNr);
3807               ;}
3808     break;
3809
3810   case 47:
3811
3812     { (yyval.qstr)=""; ;}
3813     break;
3814
3815   case 48:
3816
3817     { currP=VhdlDocGen::PORT; ;}
3818     break;
3819
3820   case 49:
3821
3822     { currP=0; ;}
3823     break;
3824
3825   case 50:
3826
3827     { (yyval.qstr)=""; ;}
3828     break;
3829
3830   case 51:
3831
3832     { currP=VhdlDocGen::GENERIC;parse_sec=GEN_SEC;}
3833     break;
3834
3835   case 52:
3836
3837     { currP=0;parse_sec=0; ;}
3838     break;
3839
3840   case 53:
3841
3842     { currP=0; ;}
3843     break;
3844
3845   case 56:
3846
3847     {
3848                   (yyval.qstr)=(yyvsp[(4) - (5)].qstr);
3849                   (yyval.qstr)+="::";
3850                   (yyval.qstr)+=(yyvsp[(2) - (5)].qstr);
3851                   pushLabel((yyvsp[(2) - (5)].qstr));
3852                   lastCompound=current;
3853                   addVhdlType((yyval.qstr),getParsedLine(t_ARCHITECTURE),Entry::CLASS_SEC,VhdlDocGen::ARCHITECTURE,0,0,Private);
3854                 ;}
3855     break;
3856
3857   case 61:
3858
3859     { (yyval.qstr)=""; ;}
3860     break;
3861
3862   case 64:
3863
3864     { genLabels.resize(0); ;}
3865     break;
3866
3867   case 65:
3868
3869     { genLabels.resize(0); ;}
3870     break;
3871
3872   case 66:
3873
3874     {
3875                   confName="";
3876                 ;}
3877     break;
3878
3879   case 67:
3880
3881     {
3882                   confName=(yyvsp[(2) - (5)].qstr)+"::"+(yyvsp[(4) - (5)].qstr);
3883                   addVhdlType((yyvsp[(2) - (5)].qstr).data(),getParsedLine(t_CONFIGURATION),Entry::VARIABLE_SEC,VhdlDocGen::CONFIG,"configuration",(yyvsp[(4) - (5)].qstr).data());
3884                 ;}
3885     break;
3886
3887   case 68:
3888
3889     { (yyval.qstr)=""; ;}
3890     break;
3891
3892   case 69:
3893
3894     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3895     break;
3896
3897   case 70:
3898
3899     { (yyval.qstr)="configuration"; ;}
3900     break;
3901
3902   case 71:
3903
3904     { (yyval.qstr)=(yyvsp[(2) - (2)].qstr); ;}
3905     break;
3906
3907   case 72:
3908
3909     { (yyval.qstr)=""; ;}
3910     break;
3911
3912   case 73:
3913
3914     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
3915     break;
3916
3917   case 74:
3918
3919     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3920     break;
3921
3922   case 77:
3923
3924     {
3925                           lastCompound=current;
3926
3927
3928          Entry *clone=new Entry(*current);
3929          clone->section=Entry::NAMESPACE_SEC;
3930          clone->spec=VhdlDocGen::PACKAGE;
3931            clone->name=(yyvsp[(2) - (3)].qstr);
3932            int line=s_str.iLine;
3933          clone->startLine=line;
3934            clone->bodyLine=line;
3935
3936          clone->protection=Package;
3937              current_root->addSubEntry(clone);
3938
3939
3940                         addVhdlType((yyvsp[(2) - (3)].qstr),line,Entry::CLASS_SEC,VhdlDocGen::PACKAGE,0,0,Package);
3941                         //fprintf(stderr,"\n entiy %s : at line %d",$$.data(),s_str.yyLineNr);
3942                        ;}
3943     break;
3944
3945   case 79:
3946
3947     { lastCompound=0; ;}
3948     break;
3949
3950   case 80:
3951
3952     { lastCompound=0; ;}
3953     break;
3954
3955   case 81:
3956
3957     { lastCompound=0; ;}
3958     break;
3959
3960   case 92:
3961
3962     {
3963                         (yyval.qstr)=(yyvsp[(3) - (4)].qstr);
3964                         lastCompound=current;
3965                         (yyval.qstr).prepend("_");
3966                         addVhdlType((yyval.qstr),getParsedLine(t_PACKAGE) ,Entry::CLASS_SEC,VhdlDocGen::PACKAGE_BODY,0,0,Protected);
3967                       ;}
3968     break;
3969
3970   case 93:
3971
3972     { (yyval.qstr)="";lastCompound=0; ;}
3973     break;
3974
3975   case 94:
3976
3977     { lastCompound=0; ;}
3978     break;
3979
3980   case 95:
3981
3982     { lastCompound=0; ;}
3983     break;
3984
3985   case 96:
3986
3987     { lastCompound=0; ;}
3988     break;
3989
3990   case 97:
3991
3992     { (yyval.qstr)=""; ;}
3993     break;
3994
3995   case 172:
3996
3997     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
3998     break;
3999
4000   case 173:
4001
4002     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4003     break;
4004
4005   case 174:
4006
4007     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4008     break;
4009
4010   case 175:
4011
4012     { (yyval.qstr)=(yyvsp[(3) - (4)].qstr); ;}
4013     break;
4014
4015   case 176:
4016
4017     { (yyval.qstr)="pure"; ;}
4018     break;
4019
4020   case 177:
4021
4022     { (yyval.qstr)="impure"; ;}
4023     break;
4024
4025   case 178:
4026
4027     { currP=0; ;}
4028     break;
4029
4030   case 179:
4031
4032     { currP=VhdlDocGen::PROCEDURE; createFunction((yyvsp[(2) - (2)].qstr),currP,0); ;}
4033     break;
4034
4035   case 180:
4036
4037     {  newEntry(); ;}
4038     break;
4039
4040   case 181:
4041
4042     {
4043                 currP=VhdlDocGen::FUNCTION;
4044                 createFunction((yyvsp[(1) - (3)].qstr),currP,(yyvsp[(3) - (3)].qstr).data());
4045               ;}
4046     break;
4047
4048   case 182:
4049
4050     {
4051                 tempEntry=current;
4052                 current->type=(yyvsp[(7) - (7)].qstr);
4053                 newEntry();
4054               ;}
4055     break;
4056
4057   case 183:
4058
4059     {
4060                 currP=VhdlDocGen::FUNCTION;
4061                 createFunction(0,currP,(yyvsp[(2) - (2)].qstr).data());
4062               ;}
4063     break;
4064
4065   case 184:
4066
4067     {
4068                 tempEntry=current;
4069                 current->type=(yyvsp[(6) - (6)].qstr);
4070                 newEntry();
4071               ;}
4072     break;
4073
4074   case 187:
4075
4076     { param_sec=PARAM_SEC; ;}
4077     break;
4078
4079   case 188:
4080
4081     { param_sec= 0; ;}
4082     break;
4083
4084   case 189:
4085
4086     { param_sec=PARAM_SEC; ;}
4087     break;
4088
4089   case 190:
4090
4091     { param_sec= 0; ;}
4092     break;
4093
4094   case 196:
4095
4096     {
4097       currP=0;
4098     ;}
4099     break;
4100
4101   case 197:
4102
4103     {
4104       currP=0;
4105     ;}
4106     break;
4107
4108   case 208:
4109
4110     { (yyval.qstr)=""; ;}
4111     break;
4112
4113   case 209:
4114
4115     { (yyval.qstr)=""; ;}
4116     break;
4117
4118   case 213:
4119
4120     {
4121                     // adding generic :  [ package foo  is new bar]
4122                     if (parse_sec==GEN_SEC)
4123                     {
4124                       QCString n=current->name;
4125                       addVhdlType(n.data(),getParsedLine(t_PACKAGE),Entry::VARIABLE_SEC,VhdlDocGen::GENERIC,(yyvsp[(1) - (1)].qstr).data(),0);
4126                     }
4127                   ;}
4128     break;
4129
4130   case 214:
4131
4132     {
4133                     if (parse_sec==GEN_SEC)
4134                     {
4135                       int a=getParsedLine(t_FUNCTION);
4136                       int b=getParsedLine(t_PROCEDURE);
4137
4138                       if (a>b) b=a;
4139
4140                       QCString n=current->name;
4141                       addVhdlType(n.data(),b,Entry::VARIABLE_SEC,VhdlDocGen::GENERIC,(yyvsp[(1) - (1)].qstr).data(),0);
4142                     }
4143                   ;}
4144     break;
4145
4146   case 215:
4147
4148     {
4149                     if (parse_sec==GEN_SEC)
4150                     {
4151                       QCString v= (yyvsp[(1) - (2)].qstr);
4152                       addVhdlType((yyvsp[(2) - (2)].qstr),s_str.iLine,Entry::VARIABLE_SEC,currP,(yyvsp[(1) - (2)].qstr).data(),0);
4153                     }
4154                   ;}
4155     break;
4156
4157   case 216:
4158
4159     {
4160                     QCString b=(yyvsp[(2) - (7)].qstr);
4161                     (yyval.qstr)=(yyvsp[(2) - (7)].qstr)+":"+(yyvsp[(4) - (7)].qstr)+(yyvsp[(5) - (7)].qstr)+(yyvsp[(6) - (7)].qstr)+(yyvsp[(7) - (7)].qstr);
4162                     if (currP!=VhdlDocGen::COMPONENT)
4163                     {
4164                       if (currP==VhdlDocGen::FUNCTION || currP==VhdlDocGen::PROCEDURE)
4165                       {
4166                         addProto((yyvsp[(1) - (7)].qstr).data(),(yyvsp[(2) - (7)].qstr).data(),(yyvsp[(4) - (7)].qstr).data(),(yyvsp[(5) - (7)].qstr).data(),(yyvsp[(6) - (7)].qstr).data(),(yyvsp[(7) - (7)].qstr).data());
4167                       }
4168                       else
4169                       {
4170                         QCString i=(yyvsp[(5) - (7)].qstr)+(yyvsp[(6) - (7)].qstr)+(yyvsp[(7) - (7)].qstr);
4171                         if (currP==VhdlDocGen::GENERIC)
4172                           addVhdlType((yyvsp[(2) - (7)].qstr),s_str.iLine,Entry::VARIABLE_SEC,currP,i.data(),(yyvsp[(4) - (7)].qstr).data());
4173                         else if(parse_sec != GEN_SEC)
4174                           addVhdlType((yyvsp[(2) - (7)].qstr),s_str.iLine,Entry::VARIABLE_SEC,currP,i.data(),(yyvsp[(4) - (7)].qstr).data());
4175                       }
4176                       //   fprintf(stderr,"\n\n <<port  %s  >>\n",$$.data());
4177                     } // if component
4178                   ;}
4179     break;
4180
4181   case 217:
4182
4183     { (yyval.qstr)=""; ;}
4184     break;
4185
4186   case 218:
4187
4188     { (yyval.qstr)=":="+(yyvsp[(2) - (2)].qstr); ;}
4189     break;
4190
4191   case 219:
4192
4193     { (yyval.qstr)=""; ;}
4194     break;
4195
4196   case 220:
4197
4198     { (yyval.qstr)="buffer"; ;}
4199     break;
4200
4201   case 221:
4202
4203     { (yyval.qstr)="bus"; ;}
4204     break;
4205
4206   case 222:
4207
4208     { (yyval.qstr)=""; ;}
4209     break;
4210
4211   case 223:
4212
4213     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4214     break;
4215
4216   case 224:
4217
4218     { (yyval.qstr)=""; ;}
4219     break;
4220
4221   case 225:
4222
4223     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4224     break;
4225
4226   case 226:
4227
4228     { (yyval.qstr)="in"; ;}
4229     break;
4230
4231   case 227:
4232
4233     { (yyval.qstr)="out"; ;}
4234     break;
4235
4236   case 228:
4237
4238     { (yyval.qstr)="inout"; ;}
4239     break;
4240
4241   case 229:
4242
4243     { (yyval.qstr)="buffer"; ;}
4244     break;
4245
4246   case 230:
4247
4248     { (yyval.qstr)="link"; ;}
4249     break;
4250
4251   case 231:
4252
4253     { (yyval.qstr)="("+(yyvsp[(2) - (4)].qstr)+")"; ;}
4254     break;
4255
4256   case 232:
4257
4258     { (yyval.qstr)=""; ;}
4259     break;
4260
4261   case 233:
4262
4263     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4264     break;
4265
4266   case 234:
4267
4268     { (yyval.qstr)=", "+(yyvsp[(2) - (2)].qstr); ;}
4269     break;
4270
4271   case 235:
4272
4273     {
4274       QCString str="( "+(yyvsp[(2) - (4)].qstr);
4275       str.append(" )");
4276       (yyval.qstr)=str;
4277     ;}
4278     break;
4279
4280   case 236:
4281
4282     { (yyval.qstr)=""; ;}
4283     break;
4284
4285   case 237:
4286
4287     { (yyval.qstr)=" ( open ) "; ;}
4288     break;
4289
4290   case 238:
4291
4292     { (yyval.qstr)=""; ;}
4293     break;
4294
4295   case 239:
4296
4297     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+"?? "+(yyvsp[(2) - (2)].qstr); ;}
4298     break;
4299
4300   case 240:
4301
4302     { (yyval.qstr)=","+(yyvsp[(2) - (2)].qstr); ;}
4303     break;
4304
4305   case 241:
4306
4307     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"=>"+(yyvsp[(3) - (3)].qstr); ;}
4308     break;
4309
4310   case 242:
4311
4312     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4313     break;
4314
4315   case 243:
4316
4317     { (yyval.qstr)="<>"; ;}
4318     break;
4319
4320   case 244:
4321
4322     { (yyval.qstr)="default"; ;}
4323     break;
4324
4325   case 245:
4326
4327     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4328     break;
4329
4330   case 247:
4331
4332     {  (yyval.qstr)=(yyvsp[(1) - (1)].qstr) ; ;}
4333     break;
4334
4335   case 248:
4336
4337     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4338     break;
4339
4340   case 249:
4341
4342     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4343     break;
4344
4345   case 250:
4346
4347     { (yyval.qstr)="open"; ;}
4348     break;
4349
4350   case 251:
4351
4352     { (yyval.qstr)="inertial"; ;}
4353     break;
4354
4355   case 252:
4356
4357     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4358     break;
4359
4360   case 253:
4361
4362     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4363     break;
4364
4365   case 273:
4366
4367     { (yyval.qstr)=" ?? "+(yyvsp[(2) - (2)].qstr); ;}
4368     break;
4369
4370   case 274:
4371
4372     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4373     break;
4374
4375   case 275:
4376
4377     { (yyval.qstr)="+"+(yyvsp[(2) - (2)].qstr); ;}
4378     break;
4379
4380   case 276:
4381
4382     { (yyval.qstr)="-"+(yyvsp[(2) - (2)].qstr); ;}
4383     break;
4384
4385   case 277:
4386
4387     { (yyval.qstr)="abs"+(yyvsp[(2) - (2)].qstr); ;}
4388     break;
4389
4390   case 278:
4391
4392     { (yyval.qstr)="not "+(yyvsp[(2) - (2)].qstr); ;}
4393     break;
4394
4395   case 279:
4396
4397     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ** "+(yyvsp[(3) - (3)].qstr); ;}
4398     break;
4399
4400   case 280:
4401
4402     { (yyval.qstr)=(yyvsp[(2) - (4)].qstr)+" ** "+(yyvsp[(4) - (4)].qstr); ;}
4403     break;
4404
4405   case 281:
4406
4407     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" mod  "+(yyvsp[(3) - (3)].qstr); ;}
4408     break;
4409
4410   case 282:
4411
4412     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" rem "+(yyvsp[(3) - (3)].qstr);  ;}
4413     break;
4414
4415   case 283:
4416
4417     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" & "+(yyvsp[(3) - (3)].qstr);    ;}
4418     break;
4419
4420   case 284:
4421
4422     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" * "+(yyvsp[(3) - (3)].qstr);    ;}
4423     break;
4424
4425   case 285:
4426
4427     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" + "+(yyvsp[(3) - (3)].qstr);    ;}
4428     break;
4429
4430   case 286:
4431
4432     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" -  "+(yyvsp[(3) - (3)].qstr);   ;}
4433     break;
4434
4435   case 287:
4436
4437     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" <= "+(yyvsp[(3) - (3)].qstr);   ;}
4438     break;
4439
4440   case 288:
4441
4442     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" >= "+(yyvsp[(3) - (3)].qstr);   ;}
4443     break;
4444
4445   case 289:
4446
4447     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" <  "+(yyvsp[(3) - (3)].qstr);   ;}
4448     break;
4449
4450   case 290:
4451
4452     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" >  "+(yyvsp[(3) - (3)].qstr);   ;}
4453     break;
4454
4455   case 291:
4456
4457     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ==  "+(yyvsp[(3) - (3)].qstr);  ;}
4458     break;
4459
4460   case 292:
4461
4462     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" != "+(yyvsp[(3) - (3)].qstr);   ;}
4463     break;
4464
4465   case 293:
4466
4467     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" /"+(yyvsp[(3) - (3)].qstr);     ;}
4468     break;
4469
4470   case 294:
4471
4472     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ?/="+(yyvsp[(3) - (3)].qstr);   ;}
4473     break;
4474
4475   case 295:
4476
4477     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ?="+(yyvsp[(3) - (3)].qstr);    ;}
4478     break;
4479
4480   case 296:
4481
4482     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ?<"+(yyvsp[(3) - (3)].qstr);    ;}
4483     break;
4484
4485   case 297:
4486
4487     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ?>"+(yyvsp[(3) - (3)].qstr);    ;}
4488     break;
4489
4490   case 298:
4491
4492     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ?<="+(yyvsp[(3) - (3)].qstr);   ;}
4493     break;
4494
4495   case 299:
4496
4497     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" ?>="+(yyvsp[(3) - (3)].qstr);   ;}
4498     break;
4499
4500   case 300:
4501
4502     { (yyval.qstr) = "-"+(yyvsp[(2) - (2)].qstr); ;}
4503     break;
4504
4505   case 301:
4506
4507     { (yyval.qstr) = "+"+(yyvsp[(2) - (2)].qstr); ;}
4508     break;
4509
4510   case 302:
4511
4512     { (yyval.qstr) = (yyvsp[(1) - (1)].qstr); ;}
4513     break;
4514
4515   case 303:
4516
4517     { (yyval.qstr) = (yyvsp[(1) - (3)].qstr)+" "+(yyvsp[(2) - (3)].qstr)+" "+(yyvsp[(3) - (3)].qstr); ;}
4518     break;
4519
4520   case 304:
4521
4522     { (yyval.qstr) = "&"; ;}
4523     break;
4524
4525   case 305:
4526
4527     { (yyval.qstr) = "-"; ;}
4528     break;
4529
4530   case 306:
4531
4532     { (yyval.qstr) = "+"; ;}
4533     break;
4534
4535   case 307:
4536
4537     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4538     break;
4539
4540   case 308:
4541
4542     { (yyval.qstr) = (yyvsp[(1) - (3)].qstr)+" "+(yyvsp[(2) - (3)].qstr)+" "+(yyvsp[(3) - (3)].qstr); ;}
4543     break;
4544
4545   case 309:
4546
4547     { (yyval.qstr) = "*";   ;}
4548     break;
4549
4550   case 310:
4551
4552     { (yyval.qstr) = "rem"; ;}
4553     break;
4554
4555   case 311:
4556
4557     { (yyval.qstr) = "mod"; ;}
4558     break;
4559
4560   case 312:
4561
4562     { (yyval.qstr) = "/";   ;}
4563     break;
4564
4565   case 313:
4566
4567     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4568     break;
4569
4570   case 314:
4571
4572     { (yyval.qstr)="abs "+(yyvsp[(2) - (2)].qstr); ;}
4573     break;
4574
4575   case 315:
4576
4577     { (yyval.qstr)="not  "+(yyvsp[(2) - (2)].qstr); ;}
4578     break;
4579
4580   case 316:
4581
4582     { (yyval.qstr) = (yyvsp[(1) - (3)].qstr)+" ** "+(yyvsp[(3) - (3)].qstr); ;}
4583     break;
4584
4585   case 317:
4586
4587     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4588     break;
4589
4590   case 318:
4591
4592     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4593     break;
4594
4595   case 319:
4596
4597     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4598     break;
4599
4600   case 320:
4601
4602     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4603     break;
4604
4605   case 321:
4606
4607     { (yyval.qstr)=""; ;}
4608     break;
4609
4610   case 322:
4611
4612     { (yyval.qstr)="("+(yyvsp[(2) - (3)].qstr)+")"; ;}
4613     break;
4614
4615   case 323:
4616
4617     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4618     break;
4619
4620   case 324:
4621
4622     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4623     break;
4624
4625   case 325:
4626
4627     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4628     break;
4629
4630   case 326:
4631
4632     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4633     break;
4634
4635   case 327:
4636
4637     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4638     break;
4639
4640   case 328:
4641
4642     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4643     break;
4644
4645   case 329:
4646
4647     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4648     break;
4649
4650   case 330:
4651
4652     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4653     break;
4654
4655   case 331:
4656
4657     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"."+(yyvsp[(3) - (3)].qstr); ;}
4658     break;
4659
4660   case 332:
4661
4662     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4663     break;
4664
4665   case 333:
4666
4667     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4668     break;
4669
4670   case 334:
4671
4672     { (yyval.qstr)="all"; ;}
4673     break;
4674
4675   case 335:
4676
4677     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4678     break;
4679
4680   case 336:
4681
4682     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4683     break;
4684
4685   case 337:
4686
4687     { (yyval.qstr)="'"; ;}
4688     break;
4689
4690   case 338:
4691
4692     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"' "+(yyvsp[(3) - (3)].qstr); ;}
4693     break;
4694
4695   case 340:
4696
4697     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" '"+(yyvsp[(3) - (3)].qstr); ;}
4698     break;
4699
4700   case 341:
4701
4702     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"' range "; ;}
4703     break;
4704
4705   case 342:
4706
4707     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"' range "; ;}
4708     break;
4709
4710   case 343:
4711
4712     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" ) "; ;}
4713     break;
4714
4715   case 344:
4716
4717     { (yyval.qstr)="( "+(yyvsp[(2) - (5)].qstr)+ "=>"+(yyvsp[(4) - (5)].qstr)+" ) "; ;}
4718     break;
4719
4720   case 345:
4721
4722     { (yyval.qstr)=" ( "+(yyvsp[(2) - (4)].qstr)+","+(yyvsp[(4) - (4)].qstr); ;}
4723     break;
4724
4725   case 346:
4726
4727     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+","+(yyvsp[(3) - (3)].qstr); ;}
4728     break;
4729
4730   case 347:
4731
4732     { (yyval.qstr)=(yyvsp[(1) - (5)].qstr)+"'("+(yyvsp[(4) - (5)].qstr)+" ) "; ;}
4733     break;
4734
4735   case 348:
4736
4737     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"'"+(yyvsp[(3) - (3)].qstr); ;}
4738     break;
4739
4740   case 356:
4741
4742     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"=> "+(yyvsp[(3) - (3)].qstr); ;}
4743     break;
4744
4745   case 357:
4746
4747     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4748     break;
4749
4750   case 358:
4751
4752     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4753     break;
4754
4755   case 359:
4756
4757     { (yyval.qstr)="";        ;}
4758     break;
4759
4760   case 360:
4761
4762     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4763     break;
4764
4765   case 361:
4766
4767     { (yyval.qstr)=" | "+(yyvsp[(2) - (2)].qstr);  ;}
4768     break;
4769
4770   case 362:
4771
4772     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4773     break;
4774
4775   case 363:
4776
4777     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4778     break;
4779
4780   case 364:
4781
4782     { (yyval.qstr)="others"; ;}
4783     break;
4784
4785   case 365:
4786
4787     { (yyval.qstr)=""; ;}
4788     break;
4789
4790   case 366:
4791
4792     {
4793              addVhdlType((yyvsp[(2) - (4)].qstr),getParsedLine(t_TYPE),Entry::VARIABLE_SEC,VhdlDocGen::TYPE,0,(yyvsp[(3) - (4)].qstr).data());
4794            ;}
4795     break;
4796
4797   case 367:
4798
4799     { (yyval.qstr)=""; ;}
4800     break;
4801
4802   case 368:
4803
4804     { (yyval.qstr)=""; ;}
4805     break;
4806
4807   case 369:
4808
4809     { (yyval.qstr)="is "+(yyvsp[(2) - (2)].qstr); ;}
4810     break;
4811
4812   case 370:
4813
4814     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4815     break;
4816
4817   case 371:
4818
4819     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4820     break;
4821
4822   case 372:
4823
4824     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4825     break;
4826
4827   case 373:
4828
4829     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4830     break;
4831
4832   case 374:
4833
4834     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4835     break;
4836
4837   case 375:
4838
4839     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4840     break;
4841
4842   case 376:
4843
4844     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4845     break;
4846
4847   case 377:
4848
4849     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4850     break;
4851
4852   case 378:
4853
4854     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4855     break;
4856
4857   case 379:
4858
4859     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4860     break;
4861
4862   case 380:
4863
4864     { (yyval.qstr)="( "+(yyvsp[(2) - (4)].qstr)+" "+(yyvsp[(3) - (4)].qstr)+" )"; ;}
4865     break;
4866
4867   case 381:
4868
4869     { (yyval.qstr)=""; ;}
4870     break;
4871
4872   case 382:
4873
4874     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4875     break;
4876
4877   case 383:
4878
4879     { (yyval.qstr)=","+(yyvsp[(2) - (2)].qstr); ;}
4880     break;
4881
4882   case 384:
4883
4884     {
4885                              (yyval.qstr)=(yyvsp[(1) - (6)].qstr);
4886                              current->args=(yyvsp[(3) - (6)].qstr)+"#"+(yyvsp[(4) - (6)].qstr);
4887                              current->args.prepend("units");
4888                              current->spec=VhdlDocGen::UNITS;
4889                            ;}
4890     break;
4891
4892   case 387:
4893
4894     { (yyval.qstr)=""; ;}
4895     break;
4896
4897   case 388:
4898
4899     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
4900     break;
4901
4902   case 389:
4903
4904     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr)+"#"; ;}
4905     break;
4906
4907   case 390:
4908
4909     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr); ;}
4910     break;
4911
4912   case 391:
4913
4914     { (yyval.qstr)=(yyvsp[(1) - (4)].qstr)+"="+(yyvsp[(3) - (4)].qstr) ;}
4915     break;
4916
4917   case 392:
4918
4919     {
4920       QCString sr1=" array ( "+(yyvsp[(3) - (7)].qstr)+" "+(yyvsp[(4) - (7)].qstr);
4921       QCString sr2=" ) of "+(yyvsp[(7) - (7)].qstr);
4922       (yyval.qstr)=sr1+sr2;
4923     ;}
4924     break;
4925
4926   case 393:
4927
4928     { (yyval.qstr)=""; ;}
4929     break;
4930
4931   case 394:
4932
4933     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+"  "+(yyvsp[(2) - (2)].qstr) ;}
4934     break;
4935
4936   case 395:
4937
4938     { (yyval.qstr)=", "+(yyvsp[(2) - (2)].qstr) ;}
4939     break;
4940
4941   case 396:
4942
4943     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" range<> "; ;}
4944     break;
4945
4946   case 397:
4947
4948     { (yyval.qstr)=" array "+(yyvsp[(2) - (4)].qstr)+" of "+(yyvsp[(4) - (4)].qstr); ;}
4949     break;
4950
4951   case 398:
4952
4953     { (yyval.qstr)=""; ;}
4954     break;
4955
4956   case 399:
4957
4958     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4959     break;
4960
4961   case 400:
4962
4963     {
4964       QRegExp reg("[\\s]");
4965       QCString oo=(yyvsp[(2) - (6)].qstr)+" "+(yyvsp[(3) - (6)].qstr);
4966       current->spec=VhdlDocGen::RECORD;
4967       current->args=oo;
4968       current->args.replace(reg,"%");
4969       current->args.prepend("record");
4970       (yyval.qstr)=(yyvsp[(2) - (6)].qstr)+" "+(yyvsp[(3) - (6)].qstr);
4971     ;}
4972     break;
4973
4974   case 401:
4975
4976     { (yyval.qstr)=""; ;}
4977     break;
4978
4979   case 402:
4980
4981     {
4982       (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr);
4983     ;}
4984     break;
4985
4986   case 403:
4987
4988     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
4989     break;
4990
4991   case 404:
4992
4993     { (yyval.qstr)=(yyvsp[(1) - (4)].qstr)+":"+(yyvsp[(3) - (4)].qstr)+"#"; ;}
4994     break;
4995
4996   case 405:
4997
4998     { (yyval.qstr)="access "+(yyvsp[(2) - (2)].qstr); ;}
4999     break;
5000
5001   case 406:
5002
5003     { (yyval.qstr)="file of "+(yyvsp[(3) - (3)].qstr); ;}
5004     break;
5005
5006   case 407:
5007
5008     {
5009       addVhdlType((yyvsp[(2) - (5)].qstr),getParsedLine(t_SUBTYPE),Entry::VARIABLE_SEC,VhdlDocGen::SUBTYPE,0,(yyvsp[(4) - (5)].qstr).data());
5010     ;}
5011     break;
5012
5013   case 408:
5014
5015     { (yyval.qstr)=""; ;}
5016     break;
5017
5018   case 409:
5019
5020     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5021     break;
5022
5023   case 410:
5024
5025     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5026     break;
5027
5028   case 411:
5029
5030     { (yyval.qstr)=""; ;}
5031     break;
5032
5033   case 412:
5034
5035     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5036     break;
5037
5038   case 413:
5039
5040     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" "+(yyvsp[(2) - (3)].qstr)+" "+(yyvsp[(3) - (3)].qstr); ;}
5041     break;
5042
5043   case 414:
5044
5045     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5046     break;
5047
5048   case 415:
5049
5050     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" "+(yyvsp[(2) - (3)].qstr)+" "+(yyvsp[(3) - (3)].qstr); ;}
5051     break;
5052
5053   case 416:
5054
5055     { (yyval.qstr)=""; ;}
5056     break;
5057
5058   case 417:
5059
5060     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5061     break;
5062
5063   case 418:
5064
5065     { (yyval.qstr)="range "+(yyvsp[(2) - (2)].qstr); ;}
5066     break;
5067
5068   case 419:
5069
5070     { (yyval.qstr)="("+(yyvsp[(2) - (4)].qstr)+" "+(yyvsp[(3) - (4)].qstr)+")"; ;}
5071     break;
5072
5073   case 420:
5074
5075     { (yyval.qstr)=""; ;}
5076     break;
5077
5078   case 421:
5079
5080     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5081     break;
5082
5083   case 422:
5084
5085     { (yyval.qstr)=","+(yyvsp[(2) - (2)].qstr); ;}
5086     break;
5087
5088   case 423:
5089
5090     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5091     break;
5092
5093   case 424:
5094
5095     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5096     break;
5097
5098   case 425:
5099
5100     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5101     break;
5102
5103   case 426:
5104
5105     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"  "+(yyvsp[(2) - (3)].qstr)+"  "+(yyvsp[(3) - (3)].qstr); ;}
5106     break;
5107
5108   case 427:
5109
5110     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5111     break;
5112
5113   case 428:
5114
5115     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"  "+(yyvsp[(2) - (3)].qstr)+"  "+(yyvsp[(3) - (3)].qstr); ;}
5116     break;
5117
5118   case 429:
5119
5120     { (yyval.qstr)=" to "; ;}
5121     break;
5122
5123   case 430:
5124
5125     { (yyval.qstr)=" downto "; ;}
5126     break;
5127
5128   case 431:
5129
5130     {
5131                                     QCString it=(yyvsp[(4) - (6)].qstr)+" "+(yyvsp[(5) - (6)].qstr);
5132                                     //  fprintf(stderr,"\n currP %d \n",currP);
5133                                     addVhdlType((yyvsp[(2) - (6)].qstr),getParsedLine(t_CONSTANT),Entry::VARIABLE_SEC,VhdlDocGen::CONSTANT,0,it.data());
5134                                   ;}
5135     break;
5136
5137   case 432:
5138
5139     { (yyval.qstr)="";      ;}
5140     break;
5141
5142   case 433:
5143
5144     { (yyval.qstr)=":="+(yyvsp[(2) - (2)].qstr); ;}
5145     break;
5146
5147   case 434:
5148
5149     {
5150                                     QCString s=(yyvsp[(4) - (7)].qstr)+" "+(yyvsp[(6) - (7)].qstr);
5151                                     addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_SIGNAL),Entry::VARIABLE_SEC,VhdlDocGen::SIGNAL,0,s.data());
5152                                   ;}
5153     break;
5154
5155   case 435:
5156
5157     { (yyval.qstr)=""; ;}
5158     break;
5159
5160   case 436:
5161
5162     { (yyval.qstr)=":="+(yyvsp[(2) - (2)].qstr); ;}
5163     break;
5164
5165   case 437:
5166
5167     { (yyval.qstr)=""; ;}
5168     break;
5169
5170   case 438:
5171
5172     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5173     break;
5174
5175   case 439:
5176
5177     {
5178                                     (yyval.qstr)=(yyvsp[(2) - (6)].qstr)+":"+(yyvsp[(4) - (6)].qstr)+" "+(yyvsp[(5) - (6)].qstr);
5179                                   ;}
5180     break;
5181
5182   case 440:
5183
5184     {
5185                                     (yyval.qstr)=(yyvsp[(5) - (7)].qstr)+" "+(yyvsp[(6) - (7)].qstr);
5186                                     addVhdlType((yyvsp[(3) - (7)].qstr),getParsedLine(t_VARIABLE),Entry::VARIABLE_SEC,VhdlDocGen::SHAREDVARIABLE,0,(yyval.qstr).data());
5187                                   ;}
5188     break;
5189
5190   case 441:
5191
5192     { (yyval.qstr)=""; ;}
5193     break;
5194
5195   case 442:
5196
5197     { (yyval.qstr)=":="+(yyvsp[(2) - (2)].qstr); ;}
5198     break;
5199
5200   case 443:
5201
5202     { (yyval.qstr)="constant"; ;}
5203     break;
5204
5205   case 444:
5206
5207     { (yyval.qstr)="signal"; ;}
5208     break;
5209
5210   case 445:
5211
5212     { (yyval.qstr)="variable"; ;}
5213     break;
5214
5215   case 446:
5216
5217     { (yyval.qstr)="shared"; ;}
5218     break;
5219
5220   case 447:
5221
5222     { (yyval.qstr)="file"; ;}
5223     break;
5224
5225   case 448:
5226
5227     { (yyval.qstr)="type"; ;}
5228     break;
5229
5230   case 449:
5231
5232     { (yyval.qstr)="bus"; ;}
5233     break;
5234
5235   case 450:
5236
5237     { (yyval.qstr)="register"; ;}
5238     break;
5239
5240   case 451:
5241
5242     {
5243                                     QCString s=(yyvsp[(3) - (7)].qstr)+" is "+(yyvsp[(5) - (7)].qstr)+(yyvsp[(6) - (7)].qstr);
5244                                     addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_ALIAS),Entry::VARIABLE_SEC,VhdlDocGen::ALIAS,0,s.data());
5245                                   ;}
5246     break;
5247
5248   case 452:
5249
5250     { (yyval.qstr)=""; ;}
5251     break;
5252
5253   case 453:
5254
5255     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5256     break;
5257
5258   case 454:
5259
5260     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5261     break;
5262
5263   case 455:
5264
5265     { (yyval.qstr)=""; ;}
5266     break;
5267
5268   case 456:
5269
5270     { (yyval.qstr)=","+(yyvsp[(2) - (2)].qstr); ;}
5271     break;
5272
5273   case 457:
5274
5275     {
5276              addVhdlType((yyvsp[(2) - (8)].qstr),getParsedLine(t_FILE),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,(yyvsp[(4) - (8)].qstr).data());
5277            ;}
5278     break;
5279
5280   case 458:
5281
5282     {
5283              QCString s=(yyvsp[(4) - (6)].qstr)+" "+(yyvsp[(5) - (6)].qstr);
5284              addVhdlType((yyvsp[(2) - (6)].qstr),getParsedLine(t_FILE),Entry::VARIABLE_SEC,VhdlDocGen::VFILE,0,s.data());
5285            ;}
5286     break;
5287
5288   case 459:
5289
5290     { (yyval.qstr)=""; ;}
5291     break;
5292
5293   case 460:
5294
5295     { (yyval.qstr)="open "+(yyvsp[(2) - (4)].qstr)+" is "+s_str.qstr; ;}
5296     break;
5297
5298   case 461:
5299
5300     { (yyval.qstr)=""; ;}
5301     break;
5302
5303   case 462:
5304
5305     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5306     break;
5307
5308   case 470:
5309
5310     {
5311                   addVhdlType((yyvsp[(2) - (5)].qstr),getParsedLine(t_ATTRIBUTE),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,(yyvsp[(4) - (5)].qstr).data());
5312                 ;}
5313     break;
5314
5315   case 471:
5316
5317     {
5318                   QCString oo=(yyvsp[(4) - (7)].qstr)+" is "+(yyvsp[(6) - (7)].qstr);
5319                   addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_ATTRIBUTE),Entry::VARIABLE_SEC,VhdlDocGen::ATTRIBUTE,0,oo.data());
5320                 ;}
5321     break;
5322
5323   case 472:
5324
5325     { (yyval.qstr)=(yyvsp[(1) - (4)].qstr)+(yyvsp[(2) - (4)].qstr)+":"+(yyvsp[(4) - (4)].qstr);;}
5326     break;
5327
5328   case 473:
5329
5330     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5331     break;
5332
5333   case 474:
5334
5335     { (yyval.qstr)="others";  ;}
5336     break;
5337
5338   case 475:
5339
5340     { (yyval.qstr)="all";     ;}
5341     break;
5342
5343   case 476:
5344
5345     { (yyval.qstr)="";        ;}
5346     break;
5347
5348   case 477:
5349
5350     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5351     break;
5352
5353   case 478:
5354
5355     { (yyval.qstr)=","+(yyvsp[(2) - (2)].qstr);    ;}
5356     break;
5357
5358   case 479:
5359
5360     { (yyval.qstr)="entity";        ;}
5361     break;
5362
5363   case 480:
5364
5365     { (yyval.qstr)="architecture";  ;}
5366     break;
5367
5368   case 481:
5369
5370     { (yyval.qstr)="package";       ;}
5371     break;
5372
5373   case 482:
5374
5375     { (yyval.qstr)="configuration"; ;}
5376     break;
5377
5378   case 483:
5379
5380     { (yyval.qstr)="component";     ;}
5381     break;
5382
5383   case 484:
5384
5385     { (yyval.qstr)="label";         ;}
5386     break;
5387
5388   case 485:
5389
5390     { (yyval.qstr)="type";          ;}
5391     break;
5392
5393   case 486:
5394
5395     { (yyval.qstr)="subtype";       ;}
5396     break;
5397
5398   case 487:
5399
5400     { (yyval.qstr)="procedure";     ;}
5401     break;
5402
5403   case 488:
5404
5405     { (yyval.qstr)="function";      ;}
5406     break;
5407
5408   case 489:
5409
5410     { (yyval.qstr)="signal";        ;}
5411     break;
5412
5413   case 490:
5414
5415     { (yyval.qstr)="variable";      ;}
5416     break;
5417
5418   case 491:
5419
5420     { (yyval.qstr)="constant";      ;}
5421     break;
5422
5423   case 492:
5424
5425     { (yyval.qstr)="group";         ;}
5426     break;
5427
5428   case 493:
5429
5430     { (yyval.qstr)="file";          ;}
5431     break;
5432
5433   case 494:
5434
5435     { (yyval.qstr)="units";         ;}
5436     break;
5437
5438   case 495:
5439
5440     { (yyval.qstr)="literal";       ;}
5441     break;
5442
5443   case 496:
5444
5445     { (yyval.qstr)="sequence";      ;}
5446     break;
5447
5448   case 497:
5449
5450     { (yyval.qstr)="property";      ;}
5451     break;
5452
5453   case 542:
5454
5455     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5456     break;
5457
5458   case 543:
5459
5460     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"."+(yyvsp[(3) - (3)].qstr); ;}
5461     break;
5462
5463   case 544:
5464
5465     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5466     break;
5467
5468   case 545:
5469
5470     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5471     break;
5472
5473   case 546:
5474
5475     { (yyval.qstr)="("+(yyvsp[(2) - (3)].qstr)+")"; ;}
5476     break;
5477
5478   case 547:
5479
5480     { (yyval.qstr)="configurátion";yyLineNr=s_str.iLine; ;}
5481     break;
5482
5483   case 548:
5484
5485     { (yyval.qstr)="entity";yyLineNr=s_str.iLine; ;}
5486     break;
5487
5488   case 549:
5489
5490     { (yyval.qstr)="component";yyLineNr=s_str.iLine; ;}
5491     break;
5492
5493   case 550:
5494
5495     { yyLineNr=s_str.iLine; ;}
5496     break;
5497
5498   case 551:
5499
5500     {
5501                                 addCompInst((yyvsp[(1) - (9)].qstr).data(),(yyvsp[(3) - (9)].qstr).data(),0,yyLineNr);
5502                                ;}
5503     break;
5504
5505   case 552:
5506
5507     { yyLineNr=s_str.iLine; ;}
5508     break;
5509
5510   case 553:
5511
5512     {
5513                                addCompInst((yyvsp[(1) - (8)].qstr).data(),(yyvsp[(3) - (8)].qstr).data(),0,yyLineNr);
5514                              ;}
5515     break;
5516
5517   case 554:
5518
5519     {
5520                                   addCompInst((yyvsp[(1) - (8)].qstr).data(),(yyvsp[(4) - (8)].qstr).data(),(yyvsp[(3) - (8)].qstr).data(),yyLineNr);
5521                               ;}
5522     break;
5523
5524   case 555:
5525
5526     {
5527                                 addCompInst((yyvsp[(1) - (9)].qstr).data(),(yyvsp[(4) - (9)].qstr).data(),(yyvsp[(3) - (9)].qstr).data(),yyLineNr);
5528                               ;}
5529     break;
5530
5531   case 607:
5532
5533     { pushLabel((yyvsp[(1) - (2)].qstr)); ;}
5534     break;
5535
5536   case 609:
5537
5538     { popLabel(); ;}
5539     break;
5540
5541   case 610:
5542
5543     { popLabel(); ;}
5544     break;
5545
5546   case 611:
5547
5548     { pushLabel((yyvsp[(1) - (2)].qstr)); ;}
5549     break;
5550
5551   case 614:
5552
5553     { (yyval.qstr)=""; ;}
5554     break;
5555
5556   case 615:
5557
5558     { (yyval.qstr)=(yyvsp[(2) - (2)].qstr); ;}
5559     break;
5560
5561   case 618:
5562
5563     {
5564                  current->name=(yyvsp[(1) - (3)].qstr);
5565                  current->endBodyLine=s_str.yyLineNr;
5566                  newEntry();
5567                ;}
5568     break;
5569
5570   case 619:
5571
5572     {
5573                  current->name=VhdlDocGen::getProcessNumber();
5574                  current->endBodyLine=s_str.yyLineNr;
5575                  newEntry();
5576                ;}
5577     break;
5578
5579   case 620:
5580
5581     { currP=VhdlDocGen::PROCESS; ;}
5582     break;
5583
5584   case 621:
5585
5586     { currP=0;
5587                  createFunction(currName,VhdlDocGen::PROCESS,(yyvsp[(4) - (10)].qstr).data());
5588                ;}
5589     break;
5590
5591   case 622:
5592
5593     { currP=0; ;}
5594     break;
5595
5596   case 625:
5597
5598     { (yyval.qstr)=""; ;}
5599     break;
5600
5601   case 626:
5602
5603     { (yyval.qstr)="postponed"; ;}
5604     break;
5605
5606   case 627:
5607
5608     { (yyval.qstr)=""; ;}
5609     break;
5610
5611   case 628:
5612
5613     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5614     break;
5615
5616   case 633:
5617
5618     { (yyval.qstr)=""; ;}
5619     break;
5620
5621   case 634:
5622
5623     { (yyval.qstr)="all"; ;}
5624     break;
5625
5626   case 635:
5627
5628     { (yyval.qstr)=(yyvsp[(2) - (3)].qstr); ;}
5629     break;
5630
5631   case 636:
5632
5633     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5634     break;
5635
5636   case 637:
5637
5638     { (yyval.qstr)=""; ;}
5639     break;
5640
5641   case 638:
5642
5643     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
5644     break;
5645
5646   case 639:
5647
5648     { (yyval.qstr)=","+(yyvsp[(2) - (2)].qstr); ;}
5649     break;
5650
5651   case 727:
5652
5653     { lastEntity=0; lastCompound=0; genLabels.resize(0); ;}
5654     break;
5655
5656   case 729:
5657
5658     { lastCompound=0; genLabels.resize(0); ;}
5659     break;
5660
5661   case 730:
5662
5663     { lastEntity=0; genLabels.resize(0); ;}
5664     break;
5665
5666   case 731:
5667
5668     { lastEntity=0; lastCompound=0; genLabels.resize(0); ;}
5669     break;
5670
5671   case 732:
5672
5673     { currP=VhdlDocGen::COMPONENT; ;}
5674     break;
5675
5676   case 733:
5677
5678     { currP=VhdlDocGen::COMPONENT; ;}
5679     break;
5680
5681   case 734:
5682
5683     {
5684              addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_COMPONENT),Entry::VARIABLE_SEC,VhdlDocGen::COMPONENT,0,0);
5685              currP=0;
5686            ;}
5687     break;
5688
5689   case 735:
5690
5691     { (yyval.qstr)=""; ;}
5692     break;
5693
5694   case 736:
5695
5696     { (yyval.qstr)=(yyvsp[(2) - (3)].qstr); ;}
5697     break;
5698
5699   case 737:
5700
5701     { (yyval.qstr)=""; ;}
5702     break;
5703
5704   case 738:
5705
5706     { (yyval.qstr)=(yyvsp[(2) - (3)].qstr); ;}
5707     break;
5708
5709   case 739:
5710
5711     {
5712            popConfig();
5713           ;}
5714     break;
5715
5716   case 740:
5717
5718     { (yyval.qstr)=""; ;}
5719     break;
5720
5721   case 741:
5722
5723     { (yyval.qstr)=""; ;}
5724     break;
5725
5726   case 742:
5727
5728     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+"  "; ;}
5729     break;
5730
5731   case 743:
5732
5733     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5734     break;
5735
5736   case 744:
5737
5738     { (yyval.qstr)=""; ;}
5739     break;
5740
5741   case 745:
5742
5743     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr); ;}
5744     break;
5745
5746   case 746:
5747
5748     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5749     break;
5750
5751   case 747:
5752
5753     {
5754       (yyval.qstr)=(yyvsp[(1) - (1)].qstr);
5755
5756       if (levelCounter==0)
5757         addConfigureNode((yyvsp[(1) - (1)].qstr).data(),NULL,TRUE,FALSE);
5758       else
5759         addConfigureNode((yyvsp[(1) - (1)].qstr).data(),NULL,FALSE,FALSE);
5760     ;}
5761     break;
5762
5763   case 748:
5764
5765     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5766     break;
5767
5768   case 749:
5769
5770     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5771     break;
5772
5773   case 750:
5774
5775     {
5776                (yyval.qstr)=(yyvsp[(2) - (7)].qstr)+" "+(yyvsp[(3) - (7)].qstr)+" "+(yyvsp[(4) - (7)].qstr);
5777                popConfig();
5778              ;}
5779     break;
5780
5781   case 751:
5782
5783     { (yyval.qstr)=""; ;}
5784     break;
5785
5786   case 752:
5787
5788     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5789     break;
5790
5791   case 753:
5792
5793     { (yyval.qstr)=""; ;}
5794     break;
5795
5796   case 754:
5797
5798     { (yyval.qstr)=""; ;}
5799     break;
5800
5801   case 755:
5802
5803     { (yyval.qstr)=""; ;}
5804     break;
5805
5806   case 756:
5807
5808     {
5809                addConfigureNode(compSpec.data(),(yyvsp[(2) - (3)].qstr).data(),FALSE,FALSE);
5810              ;}
5811     break;
5812
5813   case 757:
5814
5815     { 
5816                addConfigureNode((yyvsp[(2) - (4)].qstr).data(),(yyvsp[(3) - (4)].qstr).data(),TRUE,FALSE,TRUE);currNode->confVhdl=lastCompound->name; 
5817              ;}
5818     break;
5819
5820   case 758:
5821
5822     { 
5823                addConfigureNode((yyvsp[(2) - (7)].qstr).data(),(yyvsp[(3) - (7)].qstr).data(),TRUE,FALSE,TRUE);currNode->confVhdl=lastCompound->name; 
5824              ;}
5825     break;
5826
5827   case 759:
5828
5829     { (yyval.qstr)=(yyvsp[(2) - (2)].qstr); ;}
5830     break;
5831
5832   case 760:
5833
5834     { (yyval.qstr)=""; ;}
5835     break;
5836
5837   case 761:
5838
5839     { (yyval.qstr)=""; ;}
5840     break;
5841
5842   case 762:
5843
5844     {
5845                (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+":"+(yyvsp[(3) - (3)].qstr);
5846                compSpec=(yyval.qstr);
5847              ;}
5848     break;
5849
5850   case 763:
5851
5852     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5853     break;
5854
5855   case 764:
5856
5857     { (yyval.qstr)="all"; ;}
5858     break;
5859
5860   case 765:
5861
5862     { (yyval.qstr)="others"; ;}
5863     break;
5864
5865   case 766:
5866
5867     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr); ;}
5868     break;
5869
5870   case 771:
5871
5872     { (yyval.qstr)="entity "+(yyvsp[(2) - (2)].qstr); ;}
5873     break;
5874
5875   case 772:
5876
5877     { (yyval.qstr)="configuration "+ (yyvsp[(2) - (2)].qstr); ;}
5878     break;
5879
5880   case 773:
5881
5882     { (yyval.qstr)="open "; ;}
5883     break;
5884
5885   case 774:
5886
5887     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5888     break;
5889
5890   case 775:
5891
5892     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5893     break;
5894
5895   case 776:
5896
5897     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5898     break;
5899
5900   case 777:
5901
5902     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+","+(yyvsp[(3) - (3)].qstr); ;}
5903     break;
5904
5905   case 778:
5906
5907     {
5908                       // $$=$2+":"+$4+$6;
5909                       (yyval.qstr)="("+(yyvsp[(4) - (8)].qstr)+(yyvsp[(6) - (8)].qstr)+")";
5910                       addVhdlType((yyvsp[(2) - (8)].qstr),getParsedLine(t_GROUP),Entry::VARIABLE_SEC,VhdlDocGen::GROUP,(yyval.qstr).data(),0);
5911                     ;}
5912     break;
5913
5914   case 779:
5915
5916     {
5917                       (yyval.qstr)=(yyvsp[(2) - (7)].qstr)+":"+(yyvsp[(5) - (7)].qstr);
5918                       addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_GROUP),Entry::VARIABLE_SEC,VhdlDocGen::GROUP,(yyvsp[(5) - (7)].qstr).data(),0);
5919                     ;}
5920     break;
5921
5922   case 780:
5923
5924     { (yyval.qstr)=""; ;}
5925     break;
5926
5927   case 782:
5928
5929     { (yyval.qstr)="";   ;}
5930     break;
5931
5932   case 783:
5933
5934     { (yyval.qstr)="<>"; ;}
5935     break;
5936
5937   case 784:
5938
5939     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5940     break;
5941
5942   case 785:
5943
5944     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+","+(yyvsp[(3) - (3)].qstr); ;}
5945     break;
5946
5947   case 786:
5948
5949     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5950     break;
5951
5952   case 787:
5953
5954     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
5955     break;
5956
5957   case 788:
5958
5959     {
5960       (yyval.qstr)=s_str.qstr;
5961     ;}
5962     break;
5963
5964   case 789:
5965
5966     {
5967       (yyval.qstr)=s_str.qstr;
5968     ;}
5969     break;
5970
5971   case 790:
5972
5973     {
5974       (yyval.qstr)=s_str.qstr;
5975     ;}
5976     break;
5977
5978   case 791:
5979
5980     {
5981       (yyval.qstr)=s_str.qstr;
5982     ;}
5983     break;
5984
5985   case 792:
5986
5987     {
5988       (yyval.qstr)=s_str.qstr;
5989     ;}
5990     break;
5991
5992   case 793:
5993
5994     { (yyval.qstr)=""; ;}
5995     break;
5996
5997   case 794:
5998
5999     { (yyval.qstr)=""; ;}
6000     break;
6001
6002   case 804:
6003
6004     { (yyval.qstr)=""; ;}
6005     break;
6006
6007   case 805:
6008
6009     { (yyval.qstr)=""; ;}
6010     break;
6011
6012   case 812:
6013
6014     { (yyval.qstr)="context "+(yyvsp[(2) - (3)].qstr); ;}
6015     break;
6016
6017   case 813:
6018
6019     { parse_sec=CONTEXT_SEC; ;}
6020     break;
6021
6022   case 814:
6023
6024     {
6025                           parse_sec=0;
6026                           QCString v=(yyvsp[(5) - (8)].qstr);
6027                           addVhdlType((yyvsp[(2) - (8)].qstr),getParsedLine(t_LIBRARY),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",(yyvsp[(5) - (8)].qstr).data());
6028                         ;}
6029     break;
6030
6031   case 815:
6032
6033     {
6034                           addVhdlType((yyvsp[(2) - (6)].qstr),getParsedLine(t_LIBRARY),Entry::VARIABLE_SEC,VhdlDocGen::LIBRARY,"context",0);
6035                         ;}
6036     break;
6037
6038   case 818:
6039
6040     { (yyval.qstr) = (yyvsp[(1) - (1)].qstr); ;}
6041     break;
6042
6043   case 819:
6044
6045     { (yyval.qstr) = (yyvsp[(1) - (2)].qstr)+"#"+(yyvsp[(2) - (2)].qstr); ;}
6046     break;
6047
6048   case 820:
6049
6050     { (yyval.qstr) = (yyvsp[(1) - (1)].qstr); ;}
6051     break;
6052
6053   case 821:
6054
6055     { (yyval.qstr) = (yyvsp[(1) - (1)].qstr); ;}
6056     break;
6057
6058   case 822:
6059
6060     { (yyval.qstr) = (yyvsp[(1) - (1)].qstr); ;}
6061     break;
6062
6063   case 823:
6064
6065     {
6066       (yyval.qstr)=" is new "+(yyvsp[(5) - (7)].qstr)+(yyvsp[(6) - (7)].qstr);
6067       //Entry * pp=lastCompound;
6068       //Entry * pps=lastEntity  ;
6069       //assert(false);
6070       addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_PACKAGE),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",(yyval.qstr).data());
6071     ;}
6072     break;
6073
6074   case 824:
6075
6076     {
6077       (yyval.qstr)=" is new "+(yyvsp[(5) - (8)].qstr)+(yyvsp[(6) - (8)].qstr);
6078       addVhdlType((yyvsp[(2) - (8)].qstr),getParsedLine(t_PACKAGE),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"package",(yyval.qstr).data());
6079     ;}
6080     break;
6081
6082   case 825:
6083
6084     { (yyval.qstr)=""; ;}
6085     break;
6086
6087   case 826:
6088
6089     {
6090       (yyval.qstr)= " is new "+(yyvsp[(5) - (7)].qstr)+(yyvsp[(6) - (7)].qstr);
6091       addVhdlType((yyvsp[(2) - (7)].qstr),getParsedLine(t_FUNCTION),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",(yyval.qstr).data());
6092     ;}
6093     break;
6094
6095   case 827:
6096
6097     {
6098       (yyval.qstr)=" is new "+(yyvsp[(5) - (8)].qstr)+(yyvsp[(6) - (8)].qstr);
6099       addVhdlType((yyvsp[(2) - (8)].qstr),getParsedLine(t_FUNCTION),Entry::VARIABLE_SEC,VhdlDocGen::INSTANTIATION,"function ",(yyval.qstr).data());
6100     ;}
6101     break;
6102
6103   case 828:
6104
6105     { (yyval.qstr)=""; ;}
6106     break;
6107
6108   case 829:
6109
6110     { (yyval.qstr)=""; ;}
6111     break;
6112
6113   case 830:
6114
6115     { (yyval.qstr)="["+(yyvsp[(2) - (3)].qstr)+" ]"; ;}
6116     break;
6117
6118   case 831:
6119
6120     { (yyval.qstr)="[ ]"; ;}
6121     break;
6122
6123   case 832:
6124
6125     { (yyval.qstr)="return "+(yyvsp[(2) - (2)].qstr); ;}
6126     break;
6127
6128   case 833:
6129
6130     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6131     break;
6132
6133   case 834:
6134
6135     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+" return "+(yyvsp[(3) - (3)].qstr); ;}
6136     break;
6137
6138   case 835:
6139
6140     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6141     break;
6142
6143   case 836:
6144
6145     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+" "+(yyvsp[(2) - (2)].qstr); ;}
6146     break;
6147
6148   case 837:
6149
6150     { (yyval.qstr)=" , "+(yyvsp[(2) - (2)].qstr); ;}
6151     break;
6152
6153   case 884:
6154
6155     { (yyval.qstr) = (yyvsp[(1) - (1)].qstr); ;}
6156     break;
6157
6158   case 885:
6159
6160     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6161     break;
6162
6163   case 886:
6164
6165     { (yyval.qstr) = "procedure "+(yyvsp[(2) - (3)].qstr)+(yyvsp[(3) - (3)].qstr); current->name=(yyvsp[(2) - (3)].qstr); ;}
6166     break;
6167
6168   case 887:
6169
6170     {
6171       QCString s=(yyvsp[(6) - (6)].qstr);
6172       if (!s.isEmpty())
6173       {
6174         s.prepend(" is ");
6175       }
6176       (yyval.qstr)=" function "+(yyvsp[(2) - (6)].qstr)+(yyvsp[(3) - (6)].qstr)+(yyvsp[(5) - (6)].qstr)+s;
6177       current->name=(yyvsp[(2) - (6)].qstr);
6178     ;}
6179     break;
6180
6181   case 888:
6182
6183     {
6184       QCString s=(yyvsp[(7) - (7)].qstr);
6185       if (!s.isEmpty())
6186       {
6187         s.prepend(" is ");
6188       }
6189       (yyval.qstr)=(yyvsp[(1) - (7)].qstr)+" function "+(yyvsp[(3) - (7)].qstr)+(yyvsp[(4) - (7)].qstr)+" return "+(yyvsp[(6) - (7)].qstr)+s;
6190       current->name=(yyvsp[(3) - (7)].qstr);
6191     ;}
6192     break;
6193
6194   case 889:
6195
6196     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6197     break;
6198
6199   case 890:
6200
6201     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6202     break;
6203
6204   case 891:
6205
6206     { (yyval.qstr)="";   ;}
6207     break;
6208
6209   case 892:
6210
6211     { (yyval.qstr)=(yyvsp[(2) - (2)].qstr);   ;}
6212     break;
6213
6214   case 893:
6215
6216     { (yyval.qstr)="<>"; ;}
6217     break;
6218
6219   case 894:
6220
6221     { (yyval.qstr)=""; ;}
6222     break;
6223
6224   case 895:
6225
6226     { (yyval.qstr)="parameter "; ;}
6227     break;
6228
6229   case 896:
6230
6231     { parse_sec=PARAM_SEC; ;}
6232     break;
6233
6234   case 897:
6235
6236     { parse_sec=0; ;}
6237     break;
6238
6239   case 898:
6240
6241     { (yyval.qstr)="("+(yyvsp[(2) - (4)].qstr)+")"; ;}
6242     break;
6243
6244   case 899:
6245
6246     {
6247                           (yyval.qstr)="package "+(yyvsp[(2) - (5)].qstr)+" is new "+(yyvsp[(5) - (5)].qstr);
6248                           current->name=(yyvsp[(2) - (5)].qstr);
6249                         ;}
6250     break;
6251
6252   case 900:
6253
6254     { 
6255                           (yyval.qstr)="package "+(yyvsp[(2) - (6)].qstr)+" is new "+(yyvsp[(5) - (6)].qstr)+"( ... )" ; 
6256                           current->name=(yyvsp[(2) - (6)].qstr); 
6257                         ;}
6258     break;
6259
6260   case 902:
6261
6262     {
6263                           //int u=s_str.iLine;
6264                           parse_sec=GEN_SEC;
6265                         ;}
6266     break;
6267
6268   case 903:
6269
6270     {
6271                           QCString vo=(yyvsp[(3) - (3)].qstr);
6272                           parse_sec=0;
6273                         ;}
6274     break;
6275
6276   case 904:
6277
6278     {
6279                           QCString s="<<"+(yyvsp[(2) - (6)].qstr);
6280                           QCString s1=(yyvsp[(3) - (6)].qstr)+":"+(yyvsp[(5) - (6)].qstr)+">>";
6281                           (yyval.qstr)=s+s1;
6282                         ;}
6283     break;
6284
6285   case 905:
6286
6287     { (yyval.qstr)="constant "; ;}
6288     break;
6289
6290   case 906:
6291
6292     { (yyval.qstr)="signal ";   ;}
6293     break;
6294
6295   case 907:
6296
6297     { (yyval.qstr)="variable "; ;}
6298     break;
6299
6300   case 908:
6301
6302     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6303     break;
6304
6305   case 909:
6306
6307     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6308     break;
6309
6310   case 910:
6311
6312     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6313     break;
6314
6315   case 911:
6316
6317     { (yyval.qstr)="."+(yyvsp[(2) - (3)].qstr)+(yyvsp[(3) - (3)].qstr); ;}
6318     break;
6319
6320   case 912:
6321
6322     { (yyval.qstr)="."+(yyvsp[(2) - (2)].qstr); ;}
6323     break;
6324
6325   case 913:
6326
6327     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+(yyvsp[(2) - (3)].qstr)+(yyvsp[(3) - (3)].qstr); ;}
6328     break;
6329
6330   case 914:
6331
6332     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+(yyvsp[(2) - (2)].qstr); ;}
6333     break;
6334
6335   case 915:
6336
6337     { (yyval.qstr)="^."; ;}
6338     break;
6339
6340   case 916:
6341
6342     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+"^."; ;}
6343     break;
6344
6345   case 917:
6346
6347     { (yyval.qstr)=(yyvsp[(1) - (1)].qstr); ;}
6348     break;
6349
6350   case 918:
6351
6352     { (yyval.qstr)=(yyvsp[(1) - (4)].qstr)+"("+(yyvsp[(3) - (4)].qstr)+")"; ;}
6353     break;
6354
6355   case 919:
6356
6357     { (yyval.qstr)=(yyvsp[(1) - (2)].qstr)+"."; ;}
6358     break;
6359
6360   case 920:
6361
6362     { (yyval.qstr)=(yyvsp[(1) - (3)].qstr)+(yyvsp[(2) - (3)].qstr)+"."; ;}
6363     break;
6364
6365   case 921:
6366
6367     { (yyval.qstr)="@"+(yyvsp[(2) - (2)].qstr); ;}
6368     break;
6369
6370   case 922:
6371
6372     {
6373 // fprintf(stderr,"\n  tooldir %s",s_str.qstr.data() );
6374 ;}
6375     break;
6376
6377
6378 /* Line 1267 of yacc.c.  */
6379
6380       default: break;
6381     }
6382   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6383
6384   YYPOPSTACK (yylen);
6385   yylen = 0;
6386   YY_STACK_PRINT (yyss, yyssp);
6387
6388   *++yyvsp = yyval;
6389
6390
6391   /* Now `shift' the result of the reduction.  Determine what state
6392      that goes to, based on the state we popped back to and the rule
6393      number reduced by.  */
6394
6395   yyn = yyr1[yyn];
6396
6397   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6398   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6399     yystate = yytable[yystate];
6400   else
6401     yystate = yydefgoto[yyn - YYNTOKENS];
6402
6403   goto yynewstate;
6404
6405
6406 /*------------------------------------.
6407 | yyerrlab -- here on detecting error |
6408 `------------------------------------*/
6409 yyerrlab:
6410   /* If not already recovering from an error, report this error.  */
6411   if (!yyerrstatus)
6412     {
6413       ++yynerrs;
6414 #if ! YYERROR_VERBOSE
6415       yyerror (YY_("syntax error"));
6416 #else
6417       {
6418         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
6419         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
6420           {
6421             YYSIZE_T yyalloc = 2 * yysize;
6422             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
6423               yyalloc = YYSTACK_ALLOC_MAXIMUM;
6424             if (yymsg != yymsgbuf)
6425               YYSTACK_FREE (yymsg);
6426             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
6427             if (yymsg)
6428               yymsg_alloc = yyalloc;
6429             else
6430               {
6431                 yymsg = yymsgbuf;
6432                 yymsg_alloc = sizeof yymsgbuf;
6433               }
6434           }
6435
6436         if (0 < yysize && yysize <= yymsg_alloc)
6437           {
6438             (void) yysyntax_error (yymsg, yystate, yychar);
6439             yyerror (yymsg);
6440           }
6441         else
6442           {
6443             yyerror (YY_("syntax error"));
6444             if (yysize != 0)
6445               goto yyexhaustedlab;
6446           }
6447       }
6448 #endif
6449     }
6450
6451
6452
6453   if (yyerrstatus == 3)
6454     {
6455       /* If just tried and failed to reuse look-ahead token after an
6456          error, discard it.  */
6457
6458       if (yychar <= YYEOF)
6459         {
6460           /* Return failure if at end of input.  */
6461           if (yychar == YYEOF)
6462             YYABORT;
6463         }
6464       else
6465         {
6466           yydestruct ("Error: discarding",
6467                       yytoken, &yylval);
6468           yychar = YYEMPTY;
6469         }
6470     }
6471
6472   /* Else will try to reuse look-ahead token after shifting the error
6473      token.  */
6474   goto yyerrlab1;
6475
6476
6477 /*---------------------------------------------------.
6478 | yyerrorlab -- error raised explicitly by YYERROR.  |
6479 `---------------------------------------------------*/
6480 yyerrorlab:
6481
6482   /* Pacify compilers like GCC when the user code never invokes
6483      YYERROR and the label yyerrorlab therefore never appears in user
6484      code.  */
6485   if (/*CONSTCOND*/ 0)
6486      goto yyerrorlab;
6487
6488   /* Do not reclaim the symbols of the rule which action triggered
6489      this YYERROR.  */
6490   YYPOPSTACK (yylen);
6491   yylen = 0;
6492   YY_STACK_PRINT (yyss, yyssp);
6493   yystate = *yyssp;
6494   goto yyerrlab1;
6495
6496
6497 /*-------------------------------------------------------------.
6498 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
6499 `-------------------------------------------------------------*/
6500 yyerrlab1:
6501   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6502
6503   for (;;)
6504     {
6505       yyn = yypact[yystate];
6506       if (yyn != YYPACT_NINF)
6507         {
6508           yyn += YYTERROR;
6509           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6510             {
6511               yyn = yytable[yyn];
6512               if (0 < yyn)
6513                 break;
6514             }
6515         }
6516
6517       /* Pop the current state because it cannot handle the error token.  */
6518       if (yyssp == yyss)
6519         YYABORT;
6520
6521
6522       yydestruct ("Error: popping",
6523                   yystos[yystate], yyvsp);
6524       YYPOPSTACK (1);
6525       yystate = *yyssp;
6526       YY_STACK_PRINT (yyss, yyssp);
6527     }
6528
6529   if (yyn == YYFINAL)
6530     YYACCEPT;
6531
6532   *++yyvsp = yylval;
6533
6534
6535   /* Shift the error token.  */
6536   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6537
6538   yystate = yyn;
6539   goto yynewstate;
6540
6541
6542 /*-------------------------------------.
6543 | yyacceptlab -- YYACCEPT comes here.  |
6544 `-------------------------------------*/
6545 yyacceptlab:
6546   yyresult = 0;
6547   goto yyreturn;
6548
6549 /*-----------------------------------.
6550 | yyabortlab -- YYABORT comes here.  |
6551 `-----------------------------------*/
6552 yyabortlab:
6553   yyresult = 1;
6554   goto yyreturn;
6555
6556 #ifndef yyoverflow
6557 /*-------------------------------------------------.
6558 | yyexhaustedlab -- memory exhaustion comes here.  |
6559 `-------------------------------------------------*/
6560 yyexhaustedlab:
6561   yyerror (YY_("memory exhausted"));
6562   yyresult = 2;
6563   /* Fall through.  */
6564 #endif
6565
6566 yyreturn:
6567   if (yychar != YYEOF && yychar != YYEMPTY)
6568      yydestruct ("Cleanup: discarding lookahead",
6569                  yytoken, &yylval);
6570   /* Do not reclaim the symbols of the rule which action triggered
6571      this YYABORT or YYACCEPT.  */
6572   YYPOPSTACK (yylen);
6573   YY_STACK_PRINT (yyss, yyssp);
6574   while (yyssp != yyss)
6575     {
6576       yydestruct ("Cleanup: popping",
6577                   yystos[*yyssp], yyvsp);
6578       YYPOPSTACK (1);
6579     }
6580 #ifndef yyoverflow
6581   if (yyss != yyssa)
6582     YYSTACK_FREE (yyss);
6583 #endif
6584 #if YYERROR_VERBOSE
6585   if (yymsg != yymsgbuf)
6586     YYSTACK_FREE (yymsg);
6587 #endif
6588   /* Make sure YYID is used.  */
6589   return YYID (yyresult);
6590 }
6591
6592
6593
6594
6595 extern FILE* yyout;
6596 extern YYSTYPE vhdlScanYYlval;
6597
6598 void vhdlScanYYerror(const char* /*str*/)
6599 {
6600 //  fprintf(stderr,"\n<---error at line %d  : [ %s]   in file : %s ---->",s_str.yyLineNr,s_str.qstr.data(),s_str.fileName);
6601  // exit(0);
6602 }
6603
6604 void vhdlParse()
6605 {
6606 //  //myconv=conv;
6607   vhdlScanYYparse();
6608 }
6609
6610 //int lex(void)
6611 //{
6612 //  return myconv->doLex();
6613 //}
6614
6615 VhdlContainer*  getVhdlCont()
6616 {
6617   return &s_str;
6618 }
6619
6620 Entry* getVhdlCompound()
6621 {
6622   if (lastEntity) return lastEntity;
6623   if (lastCompound) return lastCompound;
6624   return NULL;
6625 }
6626
6627 QList<VhdlConfNode>& getVhdlConfiguration() { return  configL; }
6628
6629 static void addCompInst(char *n, char* instName, char* comp,int iLine)
6630 {
6631
6632   current->spec=VhdlDocGen::INSTANTIATION;
6633   current->section=Entry::VARIABLE_SEC;
6634   current->startLine=iLine;
6635   current->bodyLine=iLine;
6636   current->type=instName;                       // foo:instname e.g proto or work. proto(ttt)
6637   current->exception=genLabels;                 // |arch|label1:label2...
6638   current->name=n;                              // foo
6639   current->args=lastCompound->name;             // architecture name
6640   current->includeName=comp;                    // component/enity/configuration
6641
6642   //printf(" \n genlable: [%s]  inst: [%s]  name: [%s] \n",genLabels.data(),instName,n);
6643
6644   if (lastCompound)
6645   {
6646     current->args=lastCompound->name;
6647     if (true) // !findInstant(current->type))
6648     {
6649       initEntry(current);
6650       instFiles.append(new Entry(*current));
6651     }
6652   
6653     Entry *temp=current;  // hold  current pointer  (temp=oldEntry)
6654     current=new Entry;     // (oldEntry != current)
6655     delete  temp;
6656    
6657   }
6658   else
6659   {
6660     newEntry();
6661   }
6662 }
6663
6664 static void pushLabel(const QCString &label)
6665 {
6666   genLabels+="|"+label;
6667 }
6668
6669 static void popLabel()
6670 {
6671   int u=genLabels.findRev("|");
6672   if (u<0) return;
6673   genLabels=genLabels.left(u);
6674 }
6675
6676 static void popConfig()
6677 {
6678   assert(currNode);
6679   currNode=currNode->prevNode;
6680   // printf("\n pop arch %s ",currNode->arch.data());
6681 }
6682
6683 static void addConfigureNode(const char* a,const char*b, bool isRoot,bool isLeave,bool inlineConf)
6684 {
6685   VhdlConfNode* co;
6686   QCString ent,arch,lab;
6687   ent=a;
6688   lab =  VhdlDocGen::parseForConfig(ent,arch);
6689
6690   if (b)
6691   {
6692     ent=b;
6693     lab=VhdlDocGen::parseForBinding(ent,arch);
6694   }
6695
6696   co=new VhdlConfNode(a,b,confName.data());
6697   if (inlineConf)
6698   {
6699     co->isInlineConf=TRUE;
6700   }
6701
6702   if (isRoot)
6703   {
6704     co->isRoot=TRUE;
6705     configL.append(co);
6706     currNode=co;
6707     currNode->prevNode=currNode;
6708   }
6709   else if (!isLeave)
6710   {
6711     currNode->addNode(co);
6712     co->prevNode=currNode;
6713     currNode=co;
6714   }
6715   else
6716   {
6717     assert(0);
6718     co=new VhdlConfNode(a,b,confName.data());
6719     currNode->addNode(co);
6720   }
6721 }// addConfigure
6722
6723 //------------------------------------------------------------------------------------------------------------
6724
6725 static bool isFuncProcProced()
6726 {
6727   if (currP==VhdlDocGen::FUNCTION ||
6728       currP==VhdlDocGen::PROCEDURE ||
6729       currP==VhdlDocGen::PROCESS
6730      )
6731   {
6732     return TRUE;
6733   }
6734   return FALSE;
6735 }
6736
6737 static void initEntry(Entry *e)
6738 {
6739   e->fileName = s_str.fileName;
6740   e->lang=SrcLangExt_VHDL;
6741   isVhdlDocPending();
6742   initGroupInfo(e);
6743 }
6744
6745 static void addProto(const char *s1,const char *s2,const char *s3,
6746                      const char *s4,const char *s5,const char *s6)
6747 {
6748  // (void)s3; // avoid unused warning
6749   (void)s5; // avoid unused warning
6750   static QRegExp reg("[\\s]");
6751   QCString name=s2;
6752   QStringList ql=QStringList::split(",",name,FALSE);
6753
6754   for (uint u=0;u<ql.count();u++)
6755   {
6756     Argument *arg=new Argument;
6757     arg->name=ql[u].utf8();
6758     if (s3)
6759     {
6760       arg->type=s3;
6761     }
6762     arg->type+=" ";
6763     arg->type+=s4;
6764     if (s6)
6765     {
6766       arg->type+=s6;
6767     }
6768     if (parse_sec==GEN_SEC && param_sec==0)
6769     {
6770       arg->defval="gen!";
6771     }
6772
6773     if (parse_sec==PARAM_SEC)
6774     {
6775       assert(false);
6776     }
6777
6778     arg->defval+=s1;
6779     arg->attrib="";//s6;
6780
6781     current->argList->append(arg);
6782     current->args+=s2;
6783     current->args+=",";
6784   }
6785 }
6786
6787 static void createFunction(const QCString &impure,int spec,
6788                            const QCString &fname)
6789 {
6790   int it=0;
6791   current->bodyLine=getParsedLine(spec);
6792   current->spec=spec;
6793   current->section=Entry::FUNCTION_SEC;
6794   current->exception=impure;
6795
6796   if (parse_sec==GEN_SEC)
6797   {
6798     current->spec= VhdlDocGen::GENERIC;
6799     current->section=Entry::FUNCTION_SEC;
6800   }
6801
6802   if (currP==VhdlDocGen::PROCEDURE)
6803   {
6804     current->name=impure;
6805     current->exception="";
6806     it=t_PROCEDURE;
6807   }
6808   else
6809   {
6810     current->name=fname;
6811     it=t_FUNCTION;
6812   }
6813
6814   if (spec==VhdlDocGen::PROCESS)
6815   {
6816     it=t_PROCESS;
6817     current->args=fname;
6818     current->name=impure;
6819     if (!fname.isEmpty())
6820     {
6821       QStringList q1=QStringList::split(',',fname);
6822       for (uint ii=0;ii<q1.count();ii++)
6823       {
6824         Argument *arg=new Argument;
6825         arg->name=q1[ii].utf8();
6826         current->argList->append(arg);
6827       }
6828     }
6829   }
6830
6831   current->startLine=getParsedLine(it);
6832   current->bodyLine=getParsedLine(it);
6833 }
6834
6835 static void addVhdlType(const QCString &name,int startLine,int section,int spec,
6836                         const char* args,const char* type,Protection prot)
6837 {
6838   static QRegExp reg("[\\s]");
6839
6840   //int startLine=getParsedLine(spec);
6841
6842   if (isFuncProcProced())
6843   {
6844     return;
6845   }
6846
6847   if (parse_sec==GEN_SEC)
6848   {
6849     spec= VhdlDocGen::GENERIC;
6850   }
6851
6852   // more than one name   ?
6853   QStringList ql=QStringList::split(",",name,FALSE);
6854
6855   for (uint u=0;u<ql.count();u++)
6856   {
6857     current->name=ql[u].utf8();
6858  //   if (section==Entry::VARIABLE_SEC &&  !(spec == VhdlDocGen::USE || spec == VhdlDocGen::LIBRARY) )
6859  //   {
6860  //     current->name.prepend(VhdlDocGen::getRecordNumber());
6861  //   }
6862    
6863     current->startLine=startLine;
6864     current->bodyLine=startLine;
6865     current->section=section;
6866     current->spec=spec;
6867     current->fileName=s_str.fileName;
6868     if (current->args.isEmpty())
6869     {
6870       current->args=args;
6871       current->args.replace(reg,"%"); // insert dummy chars because wihte spaces are removed
6872     }
6873     current->type=type;
6874     current->type.replace(reg,"%"); // insert dummy chars because white spaces are removed
6875     current->protection=prot;
6876     newEntry();
6877   }
6878 }
6879
6880 static void newEntry()
6881 {
6882   if (current->spec==VhdlDocGen::ENTITY       ||
6883       current->spec==VhdlDocGen::PACKAGE      ||
6884       current->spec==VhdlDocGen::ARCHITECTURE ||
6885       current->spec==VhdlDocGen::PACKAGE_BODY
6886      )
6887   {
6888     current_root->addSubEntry(current);
6889   }
6890   else
6891   {
6892     if (lastCompound)
6893     {
6894       lastCompound->addSubEntry(current);
6895     }
6896     else
6897     {
6898       if (lastEntity)
6899       {
6900         lastEntity->addSubEntry(current);
6901       }
6902       else
6903       {
6904         current_root->addSubEntry(current);
6905       }
6906     }
6907   }
6908   current = new Entry ;
6909   initEntry(current);
6910 }
6911
6912