1 
2 /* A Bison parser, made by GNU Bison 2.4.1.  */
3 
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5 
6       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7    Free Software Foundation, Inc.
8 
9    This program is free software: you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation, either version 3 of the License, or
12    (at your option) any later version.
13 
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18 
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21 
22 /* As a special exception, you may create a larger work that contains
23    part or all of the Bison parser skeleton and distribute that work
24    under terms of your choice, so long as that work isn't itself a
25    parser generator using the skeleton or a modified version thereof
26    as a parser skeleton.  Alternatively, if you modify or redistribute
27    the parser skeleton itself, you may (at your option) remove this
28    special exception, which will cause the skeleton and the resulting
29    Bison output files to be licensed under the GNU General Public
30    License without this special exception.
31 
32    This special exception was added by the Free Software Foundation in
33    version 2.2 of Bison.  */
34 
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36    simplifying the original so-called "semantic" parser.  */
37 
38 /* All symbols defined below should begin with yy or YY, to avoid
39    infringing on user name space.  This should be done even for local
40    variables, as they might otherwise be expanded by user macros.
41    There are some unavoidable exceptions within include files to
42    define necessary library symbols; they are noted "INFRINGES ON
43    USER NAME SPACE" below.  */
44 
45 /* Identify Bison output.  */
46 #define YYBISON 1
47 
48 /* Bison version.  */
49 #define YYBISON_VERSION "2.4.1"
50 
51 /* Skeleton name.  */
52 #define YYSKELETON_NAME "yacc.c"
53 
54 /* Pure parsers.  */
55 #define YYPURE 0
56 
57 /* Push parsers.  */
58 #define YYPUSH 0
59 
60 /* Pull parsers.  */
61 #define YYPULL 1
62 
63 /* Using locations.  */
64 #define YYLSP_NEEDED 0
65 
66 /* Substitute the variable and function names.  */
67 #define yyparse         edifparse
68 #define yylex           ediflex
69 #define yyerror         ediferror
70 #define yylval          ediflval
71 #define yychar          edifchar
72 #define yydebug         edifdebug
73 #define yynerrs         edifnerrs
74 
75 
76 /* Copy the first part of user declarations.  */
77 
78 /* Line 189 of yacc.c  */
79 #line 1 "edif.y"
80 
81 /*
82  * PCB Edif parser based heavily on:
83  *
84  *	Header: edif.y,v 1.18 87/12/07 19:59:49 roger Locked
85  */
86 /************************************************************************
87  *									*
88  *				edif.y					*
89  *									*
90  *			EDIF 2.0.0 parser, Level 0			*
91  *									*
92  *	You are free to copy, distribute, use it, abuse it, make it	*
93  *	write bad tracks all over the disk ... or anything else.	*
94  *									*
95  *	Your friendly neighborhood Rogue Monster - roger@mips.com	*
96  *									*
97  ************************************************************************/
98 #include <stdio.h>
99 
100 /* for malloc, free, atoi */
101 #include <stdlib.h>
102 
103 /* for strcpy */
104 #include <string.h>
105 
106 #include <ctype.h>
107 
108 #include "global.h"
109 #include "data.h"
110 /* from mymem.h, not include because of the malloc junk */
111 LibraryMenuType * GetLibraryMenuMemory (LibraryType *);
112 LibraryEntryType * GetLibraryEntryMemory (LibraryMenuType *);
113 
114 /*
115  *	Local definitions.
116  */
117 #define	IDENT_LENGTH		255
118 #define	Malloc(s)		malloc(s)
119 #define	Free(p)			free(p)
120 #define	Getc(s)			getc(s)
121 #define	Ungetc(c)		ungetc(c,Input)
122 
123  typedef struct _str_pair
124  {
125      char* str1;
126      char* str2;
127      struct _str_pair* next;
128  } str_pair;
129 
130  typedef struct _pair_list
131  {
132      char* name;
133      str_pair* list;
134  } pair_list;
135 
new_str_pair(char * s1,char * s2)136  str_pair* new_str_pair(char* s1, char* s2)
137  {
138    str_pair* ps = (str_pair *)malloc(sizeof(str_pair));
139      ps->str1 = s1;
140      ps->str2 = s2;
141      ps->next = NULL;
142      return ps;
143  }
144 
new_pair_list(str_pair * ps)145  pair_list* new_pair_list(str_pair* ps)
146  {
147    pair_list* pl = (pair_list *)malloc(sizeof(pair_list));
148      pl->list = ps;
149      pl->name = NULL;
150      return pl;
151  }
152 
str_pair_free(str_pair * ps)153  void str_pair_free(str_pair* ps)
154  {
155      str_pair* node;
156      while ( ps )
157      {
158 	 free(ps->str1);
159 	 free(ps->str2);
160 	 node = ps;
161 	 ps = ps->next;
162 	 free(node);
163      }
164  }
165 
pair_list_free(pair_list * pl)166  void pair_list_free(pair_list* pl)
167  {
168      str_pair_free(pl->list);
169      free(pl->name);
170      free(pl);
171  }
172 
define_pcb_net(str_pair * name,pair_list * nodes)173  void define_pcb_net(str_pair* name, pair_list* nodes)
174  {
175      int tl;
176      str_pair* done_node;
177      str_pair* node;
178      char* buf;
179      char* p;
180      LibraryEntryType *entry;
181      LibraryMenuType *menu = GetLibraryMenuMemory (&PCB->NetlistLib);
182 
183      if ( !name->str1 )
184      {
185 	 /* no net name given, stop now */
186 	 /* if renamed str2 also exists and must be freed */
187 	 if ( name->str2 )  free(name->str2);
188 	 free(name);
189 	 pair_list_free(nodes);
190 	 return;
191      }
192      menu->Name = strdup (name->str1);
193      free(name->str1);
194      /* if renamed str2 also exists and must be freed */
195      if ( name->str2 )  free(name->str2);
196      free(name);
197      buf = (char *)malloc(256);
198      if ( !buf )
199      {
200 	 /* no memory */
201 	 pair_list_free(nodes);
202 	 return;
203      }
204 
205      node = nodes->list;
206      free(nodes->name);
207      free(nodes);
208      while ( node )
209      {
210 	 /* check for node with no instance */
211 	 if ( !node->str1 )
212 	 {
213 	     /* toss it and move on */
214 	     free(node->str2);
215 	     done_node = node;
216 	     node = node->next;
217 	     free(done_node);
218 	     continue;
219 	 }
220 	 tl = strlen(node->str1) + strlen(node->str2);
221 	 if ( tl + 3 > 256 )
222 	 {
223 	     free(buf);
224 	     buf = (char *)malloc(tl+3);
225 	     if ( !buf )
226 	     {
227 		 /* no memory */
228 		 str_pair_free(node);
229 		 return;
230 	     }
231 	 }
232 	 strcpy(buf,node->str1);
233 	 /* make all upper case, because of PCB funky behaviour */
234 	 p=buf;
235 	 while ( *p )
236 	 {
237 	     *p = toupper( (int) *p);
238 	     p++;
239 	 }
240 	 /* add dash separating designator from node */
241 	 *(buf+strlen(node->str1)) = '-';
242 	 /* check for the edif number prefix */
243 	 if ( node->str2[0] == '&' )
244 	 {
245 	     /* skip number prefix */
246 	     strcpy(buf+strlen(node->str1)+1,node->str2 +1);
247 	 }
248 	 else
249 	 {
250 	     strcpy(buf+strlen(node->str1)+1,node->str2);
251 	 }
252 	 /* free the strings */
253 	 free(node->str1);
254 	 free(node->str2);
255 	 entry = GetLibraryEntryMemory (menu);
256 	 entry->ListEntry = strdup(buf);
257 	 done_node = node;
258 	 node = node->next;
259 	 free(done_node);
260      }
261  }
262 
263 
264 /* forward function declarations */
265  static int yylex(void);
266  static void yyerror(const char *);
267  static void PopC(void);
268 
269 
270 /* Line 189 of yacc.c  */
271 #line 272 "edif.c"
272 
273 /* Enabling traces.  */
274 #ifndef YYDEBUG
275 # define YYDEBUG 0
276 #endif
277 
278 /* Enabling verbose error messages.  */
279 #ifdef YYERROR_VERBOSE
280 # undef YYERROR_VERBOSE
281 # define YYERROR_VERBOSE 1
282 #else
283 # define YYERROR_VERBOSE 0
284 #endif
285 
286 /* Enabling the token table.  */
287 #ifndef YYTOKEN_TABLE
288 # define YYTOKEN_TABLE 0
289 #endif
290 
291 
292 /* Tokens.  */
293 #ifndef YYTOKENTYPE
294 # define YYTOKENTYPE
295    /* Put the tokens into the symbol table, so that GDB and other debuggers
296       know about them.  */
297    enum yytokentype {
298      EDIF_TOK_IDENT = 258,
299      EDIF_TOK_INT = 259,
300      EDIF_TOK_KEYWORD = 260,
301      EDIF_TOK_STR = 261,
302      EDIF_TOK_ANGLE = 262,
303      EDIF_TOK_BEHAVIOR = 263,
304      EDIF_TOK_CALCULATED = 264,
305      EDIF_TOK_CAPACITANCE = 265,
306      EDIF_TOK_CENTERCENTER = 266,
307      EDIF_TOK_CENTERLEFT = 267,
308      EDIF_TOK_CENTERRIGHT = 268,
309      EDIF_TOK_CHARGE = 269,
310      EDIF_TOK_CONDUCTANCE = 270,
311      EDIF_TOK_CURRENT = 271,
312      EDIF_TOK_DISTANCE = 272,
313      EDIF_TOK_DOCUMENT = 273,
314      EDIF_TOK_ENERGY = 274,
315      EDIF_TOK_EXTEND = 275,
316      EDIF_TOK_FLUX = 276,
317      EDIF_TOK_FREQUENCY = 277,
318      EDIF_TOK_GENERIC = 278,
319      EDIF_TOK_GRAPHIC = 279,
320      EDIF_TOK_INDUCTANCE = 280,
321      EDIF_TOK_INOUT = 281,
322      EDIF_TOK_INPUT = 282,
323      EDIF_TOK_LOGICMODEL = 283,
324      EDIF_TOK_LOWERCENTER = 284,
325      EDIF_TOK_LOWERLEFT = 285,
326      EDIF_TOK_LOWERRIGHT = 286,
327      EDIF_TOK_MASKLAYOUT = 287,
328      EDIF_TOK_MASS = 288,
329      EDIF_TOK_MEASURED = 289,
330      EDIF_TOK_MX = 290,
331      EDIF_TOK_MXR90 = 291,
332      EDIF_TOK_MY = 292,
333      EDIF_TOK_MYR90 = 293,
334      EDIF_TOK_NETLIST = 294,
335      EDIF_TOK_OUTPUT = 295,
336      EDIF_TOK_PCBLAYOUT = 296,
337      EDIF_TOK_POWER = 297,
338      EDIF_TOK_R0 = 298,
339      EDIF_TOK_R180 = 299,
340      EDIF_TOK_R270 = 300,
341      EDIF_TOK_R90 = 301,
342      EDIF_TOK_REQUIRED = 302,
343      EDIF_TOK_RESISTANCE = 303,
344      EDIF_TOK_RIPPER = 304,
345      EDIF_TOK_ROUND = 305,
346      EDIF_TOK_SCHEMATIC = 306,
347      EDIF_TOK_STRANGER = 307,
348      EDIF_TOK_SYMBOLIC = 308,
349      EDIF_TOK_TEMPERATURE = 309,
350      EDIF_TOK_TIE = 310,
351      EDIF_TOK_TIME = 311,
352      EDIF_TOK_TRUNCATE = 312,
353      EDIF_TOK_UPPERCENTER = 313,
354      EDIF_TOK_UPPERLEFT = 314,
355      EDIF_TOK_UPPERRIGHT = 315,
356      EDIF_TOK_VOLTAGE = 316,
357      EDIF_TOK_ACLOAD = 317,
358      EDIF_TOK_AFTER = 318,
359      EDIF_TOK_ANNOTATE = 319,
360      EDIF_TOK_APPLY = 320,
361      EDIF_TOK_ARC = 321,
362      EDIF_TOK_ARRAY = 322,
363      EDIF_TOK_ARRAYMACRO = 323,
364      EDIF_TOK_ARRAYRELATEDINFO = 324,
365      EDIF_TOK_ARRAYSITE = 325,
366      EDIF_TOK_ATLEAST = 326,
367      EDIF_TOK_ATMOST = 327,
368      EDIF_TOK_AUTHOR = 328,
369      EDIF_TOK_BASEARRAY = 329,
370      EDIF_TOK_BECOMES = 330,
371      EDIF_TOK_BETWEEN = 331,
372      EDIF_TOK_BOOLEAN = 332,
373      EDIF_TOK_BOOLEANDISPLAY = 333,
374      EDIF_TOK_BOOLEANMAP = 334,
375      EDIF_TOK_BORDERPATTERN = 335,
376      EDIF_TOK_BORDERWIDTH = 336,
377      EDIF_TOK_BOUNDINGBOX = 337,
378      EDIF_TOK_CELL = 338,
379      EDIF_TOK_CELLREF = 339,
380      EDIF_TOK_CELLTYPE = 340,
381      EDIF_TOK_CHANGE = 341,
382      EDIF_TOK_CIRCLE = 342,
383      EDIF_TOK_COLOR = 343,
384      EDIF_TOK_COMMENT = 344,
385      EDIF_TOK_COMMENTGRAPHICS = 345,
386      EDIF_TOK_COMPOUND = 346,
387      EDIF_TOK_CONNECTLOCATION = 347,
388      EDIF_TOK_CONTENTS = 348,
389      EDIF_TOK_CORNERTYPE = 349,
390      EDIF_TOK_CRITICALITY = 350,
391      EDIF_TOK_CURRENTMAP = 351,
392      EDIF_TOK_CURVE = 352,
393      EDIF_TOK_CYCLE = 353,
394      EDIF_TOK_DATAORIGIN = 354,
395      EDIF_TOK_DCFANINLOAD = 355,
396      EDIF_TOK_DCFANOUTLOAD = 356,
397      EDIF_TOK_DCMAXFANIN = 357,
398      EDIF_TOK_DCMAXFANOUT = 358,
399      EDIF_TOK_DELAY = 359,
400      EDIF_TOK_DELTA = 360,
401      EDIF_TOK_DERIVATION = 361,
402      EDIF_TOK_DESIGN = 362,
403      EDIF_TOK_DESIGNATOR = 363,
404      EDIF_TOK_DIFFERENCE = 364,
405      EDIF_TOK_DIRECTION = 365,
406      EDIF_TOK_DISPLAY = 366,
407      EDIF_TOK_DOMINATES = 367,
408      EDIF_TOK_DOT = 368,
409      EDIF_TOK_DURATION = 369,
410      EDIF_TOK_E = 370,
411      EDIF_TOK_EDIF = 371,
412      EDIF_TOK_EDIFLEVEL = 372,
413      EDIF_TOK_EDIFVERSION = 373,
414      EDIF_TOK_ENCLOSUREDISTANCE = 374,
415      EDIF_TOK_ENDTYPE = 375,
416      EDIF_TOK_ENTRY = 376,
417      EDIF_TOK_EVENT = 377,
418      EDIF_TOK_EXACTLY = 378,
419      EDIF_TOK_EXTERNAL = 379,
420      EDIF_TOK_FABRICATE = 380,
421      EDIF_TOK_FALSE = 381,
422      EDIF_TOK_FIGURE = 382,
423      EDIF_TOK_FIGUREAREA = 383,
424      EDIF_TOK_FIGUREGROUP = 384,
425      EDIF_TOK_FIGUREGROUPOBJECT = 385,
426      EDIF_TOK_FIGUREGROUPOVERRIDE = 386,
427      EDIF_TOK_FIGUREGROUPREF = 387,
428      EDIF_TOK_FIGUREPERIMETER = 388,
429      EDIF_TOK_FIGUREWIDTH = 389,
430      EDIF_TOK_FILLPATTERN = 390,
431      EDIF_TOK_FOLLOW = 391,
432      EDIF_TOK_FORBIDDENEVENT = 392,
433      EDIF_TOK_GLOBALPORTREF = 393,
434      EDIF_TOK_GREATERTHAN = 394,
435      EDIF_TOK_GRIDMAP = 395,
436      EDIF_TOK_IGNORE = 396,
437      EDIF_TOK_INCLUDEFIGUREGROUP = 397,
438      EDIF_TOK_INITIAL = 398,
439      EDIF_TOK_INSTANCE = 399,
440      EDIF_TOK_INSTANCEBACKANNOTATE = 400,
441      EDIF_TOK_INSTANCEGROUP = 401,
442      EDIF_TOK_INSTANCEMAP = 402,
443      EDIF_TOK_INSTANCEREF = 403,
444      EDIF_TOK_INTEGER = 404,
445      EDIF_TOK_INTEGERDISPLAY = 405,
446      EDIF_TOK_INTERFACE = 406,
447      EDIF_TOK_INTERFIGUREGROUPSPACING = 407,
448      EDIF_TOK_INTERSECTION = 408,
449      EDIF_TOK_INTRAFIGUREGROUPSPACING = 409,
450      EDIF_TOK_INVERSE = 410,
451      EDIF_TOK_ISOLATED = 411,
452      EDIF_TOK_JOINED = 412,
453      EDIF_TOK_JUSTIFY = 413,
454      EDIF_TOK_KEYWORDDISPLAY = 414,
455      EDIF_TOK_KEYWORDLEVEL = 415,
456      EDIF_TOK_KEYWORDMAP = 416,
457      EDIF_TOK_LESSTHAN = 417,
458      EDIF_TOK_LIBRARY = 418,
459      EDIF_TOK_LIBRARYREF = 419,
460      EDIF_TOK_LISTOFNETS = 420,
461      EDIF_TOK_LISTOFPORTS = 421,
462      EDIF_TOK_LOADDELAY = 422,
463      EDIF_TOK_LOGICASSIGN = 423,
464      EDIF_TOK_LOGICINPUT = 424,
465      EDIF_TOK_LOGICLIST = 425,
466      EDIF_TOK_LOGICMAPINPUT = 426,
467      EDIF_TOK_LOGICMAPOUTPUT = 427,
468      EDIF_TOK_LOGICONEOF = 428,
469      EDIF_TOK_LOGICOUTPUT = 429,
470      EDIF_TOK_LOGICPORT = 430,
471      EDIF_TOK_LOGICREF = 431,
472      EDIF_TOK_LOGICVALUE = 432,
473      EDIF_TOK_LOGICWAVEFORM = 433,
474      EDIF_TOK_MAINTAIN = 434,
475      EDIF_TOK_MATCH = 435,
476      EDIF_TOK_MEMBER = 436,
477      EDIF_TOK_MINOMAX = 437,
478      EDIF_TOK_MINOMAXDISPLAY = 438,
479      EDIF_TOK_MNM = 439,
480      EDIF_TOK_MULTIPLEVALUESET = 440,
481      EDIF_TOK_MUSTJOIN = 441,
482      EDIF_TOK_NAME = 442,
483      EDIF_TOK_NET = 443,
484      EDIF_TOK_NETBACKANNOTATE = 444,
485      EDIF_TOK_NETBUNDLE = 445,
486      EDIF_TOK_NETDELAY = 446,
487      EDIF_TOK_NETGROUP = 447,
488      EDIF_TOK_NETMAP = 448,
489      EDIF_TOK_NETREF = 449,
490      EDIF_TOK_NOCHANGE = 450,
491      EDIF_TOK_NONPERMUTABLE = 451,
492      EDIF_TOK_NOTALLOWED = 452,
493      EDIF_TOK_NOTCHSPACING = 453,
494      EDIF_TOK_NUMBER = 454,
495      EDIF_TOK_NUMBERDEFINITION = 455,
496      EDIF_TOK_NUMBERDISPLAY = 456,
497      EDIF_TOK_OFFPAGECONNECTOR = 457,
498      EDIF_TOK_OFFSETEVENT = 458,
499      EDIF_TOK_OPENSHAPE = 459,
500      EDIF_TOK_ORIENTATION = 460,
501      EDIF_TOK_ORIGIN = 461,
502      EDIF_TOK_OVERHANGDISTANCE = 462,
503      EDIF_TOK_OVERLAPDISTANCE = 463,
504      EDIF_TOK_OVERSIZE = 464,
505      EDIF_TOK_OWNER = 465,
506      EDIF_TOK_PAGE = 466,
507      EDIF_TOK_PAGESIZE = 467,
508      EDIF_TOK_PARAMETER = 468,
509      EDIF_TOK_PARAMETERASSIGN = 469,
510      EDIF_TOK_PARAMETERDISPLAY = 470,
511      EDIF_TOK_PATH = 471,
512      EDIF_TOK_PATHDELAY = 472,
513      EDIF_TOK_PATHWIDTH = 473,
514      EDIF_TOK_PERMUTABLE = 474,
515      EDIF_TOK_PHYSICALDESIGNRULE = 475,
516      EDIF_TOK_PLUG = 476,
517      EDIF_TOK_POINT = 477,
518      EDIF_TOK_POINTDISPLAY = 478,
519      EDIF_TOK_POINTLIST = 479,
520      EDIF_TOK_POLYGON = 480,
521      EDIF_TOK_PORT = 481,
522      EDIF_TOK_PORTBACKANNOTATE = 482,
523      EDIF_TOK_PORTBUNDLE = 483,
524      EDIF_TOK_PORTDELAY = 484,
525      EDIF_TOK_PORTGROUP = 485,
526      EDIF_TOK_PORTIMPLEMENTATION = 486,
527      EDIF_TOK_PORTINSTANCE = 487,
528      EDIF_TOK_PORTLIST = 488,
529      EDIF_TOK_PORTLISTALIAS = 489,
530      EDIF_TOK_PORTMAP = 490,
531      EDIF_TOK_PORTREF = 491,
532      EDIF_TOK_PROGRAM = 492,
533      EDIF_TOK_PROPERTY = 493,
534      EDIF_TOK_PROPERTYDISPLAY = 494,
535      EDIF_TOK_PROTECTIONFRAME = 495,
536      EDIF_TOK_PT = 496,
537      EDIF_TOK_RANGEVECTOR = 497,
538      EDIF_TOK_RECTANGLE = 498,
539      EDIF_TOK_RECTANGLESIZE = 499,
540      EDIF_TOK_RENAME = 500,
541      EDIF_TOK_RESOLVES = 501,
542      EDIF_TOK_SCALE = 502,
543      EDIF_TOK_SCALEX = 503,
544      EDIF_TOK_SCALEY = 504,
545      EDIF_TOK_SECTION = 505,
546      EDIF_TOK_SHAPE = 506,
547      EDIF_TOK_SIMULATE = 507,
548      EDIF_TOK_SIMULATIONINFO = 508,
549      EDIF_TOK_SINGLEVALUESET = 509,
550      EDIF_TOK_SITE = 510,
551      EDIF_TOK_SOCKET = 511,
552      EDIF_TOK_SOCKETSET = 512,
553      EDIF_TOK_STATUS = 513,
554      EDIF_TOK_STEADY = 514,
555      EDIF_TOK_STRING = 515,
556      EDIF_TOK_STRINGDISPLAY = 516,
557      EDIF_TOK_STRONG = 517,
558      EDIF_TOK_SYMBOL = 518,
559      EDIF_TOK_SYMMETRY = 519,
560      EDIF_TOK_TABLE = 520,
561      EDIF_TOK_TABLEDEFAULT = 521,
562      EDIF_TOK_TECHNOLOGY = 522,
563      EDIF_TOK_TEXTHEIGHT = 523,
564      EDIF_TOK_TIMEINTERVAL = 524,
565      EDIF_TOK_TIMESTAMP = 525,
566      EDIF_TOK_TIMING = 526,
567      EDIF_TOK_TRANSFORM = 527,
568      EDIF_TOK_TRANSITION = 528,
569      EDIF_TOK_TRIGGER = 529,
570      EDIF_TOK_TRUE = 530,
571      EDIF_TOK_UNCONSTRAINED = 531,
572      EDIF_TOK_UNDEFINED = 532,
573      EDIF_TOK_UNION = 533,
574      EDIF_TOK_UNIT = 534,
575      EDIF_TOK_UNUSED = 535,
576      EDIF_TOK_USERDATA = 536,
577      EDIF_TOK_VERSION = 537,
578      EDIF_TOK_VIEW = 538,
579      EDIF_TOK_VIEWLIST = 539,
580      EDIF_TOK_VIEWMAP = 540,
581      EDIF_TOK_VIEWREF = 541,
582      EDIF_TOK_VIEWTYPE = 542,
583      EDIF_TOK_VISIBLE = 543,
584      EDIF_TOK_VOLTAGEMAP = 544,
585      EDIF_TOK_WAVEVALUE = 545,
586      EDIF_TOK_WEAK = 546,
587      EDIF_TOK_WEAKJOINED = 547,
588      EDIF_TOK_WHEN = 548,
589      EDIF_TOK_WRITTEN = 549
590    };
591 #endif
592 /* Tokens.  */
593 #define EDIF_TOK_IDENT 258
594 #define EDIF_TOK_INT 259
595 #define EDIF_TOK_KEYWORD 260
596 #define EDIF_TOK_STR 261
597 #define EDIF_TOK_ANGLE 262
598 #define EDIF_TOK_BEHAVIOR 263
599 #define EDIF_TOK_CALCULATED 264
600 #define EDIF_TOK_CAPACITANCE 265
601 #define EDIF_TOK_CENTERCENTER 266
602 #define EDIF_TOK_CENTERLEFT 267
603 #define EDIF_TOK_CENTERRIGHT 268
604 #define EDIF_TOK_CHARGE 269
605 #define EDIF_TOK_CONDUCTANCE 270
606 #define EDIF_TOK_CURRENT 271
607 #define EDIF_TOK_DISTANCE 272
608 #define EDIF_TOK_DOCUMENT 273
609 #define EDIF_TOK_ENERGY 274
610 #define EDIF_TOK_EXTEND 275
611 #define EDIF_TOK_FLUX 276
612 #define EDIF_TOK_FREQUENCY 277
613 #define EDIF_TOK_GENERIC 278
614 #define EDIF_TOK_GRAPHIC 279
615 #define EDIF_TOK_INDUCTANCE 280
616 #define EDIF_TOK_INOUT 281
617 #define EDIF_TOK_INPUT 282
618 #define EDIF_TOK_LOGICMODEL 283
619 #define EDIF_TOK_LOWERCENTER 284
620 #define EDIF_TOK_LOWERLEFT 285
621 #define EDIF_TOK_LOWERRIGHT 286
622 #define EDIF_TOK_MASKLAYOUT 287
623 #define EDIF_TOK_MASS 288
624 #define EDIF_TOK_MEASURED 289
625 #define EDIF_TOK_MX 290
626 #define EDIF_TOK_MXR90 291
627 #define EDIF_TOK_MY 292
628 #define EDIF_TOK_MYR90 293
629 #define EDIF_TOK_NETLIST 294
630 #define EDIF_TOK_OUTPUT 295
631 #define EDIF_TOK_PCBLAYOUT 296
632 #define EDIF_TOK_POWER 297
633 #define EDIF_TOK_R0 298
634 #define EDIF_TOK_R180 299
635 #define EDIF_TOK_R270 300
636 #define EDIF_TOK_R90 301
637 #define EDIF_TOK_REQUIRED 302
638 #define EDIF_TOK_RESISTANCE 303
639 #define EDIF_TOK_RIPPER 304
640 #define EDIF_TOK_ROUND 305
641 #define EDIF_TOK_SCHEMATIC 306
642 #define EDIF_TOK_STRANGER 307
643 #define EDIF_TOK_SYMBOLIC 308
644 #define EDIF_TOK_TEMPERATURE 309
645 #define EDIF_TOK_TIE 310
646 #define EDIF_TOK_TIME 311
647 #define EDIF_TOK_TRUNCATE 312
648 #define EDIF_TOK_UPPERCENTER 313
649 #define EDIF_TOK_UPPERLEFT 314
650 #define EDIF_TOK_UPPERRIGHT 315
651 #define EDIF_TOK_VOLTAGE 316
652 #define EDIF_TOK_ACLOAD 317
653 #define EDIF_TOK_AFTER 318
654 #define EDIF_TOK_ANNOTATE 319
655 #define EDIF_TOK_APPLY 320
656 #define EDIF_TOK_ARC 321
657 #define EDIF_TOK_ARRAY 322
658 #define EDIF_TOK_ARRAYMACRO 323
659 #define EDIF_TOK_ARRAYRELATEDINFO 324
660 #define EDIF_TOK_ARRAYSITE 325
661 #define EDIF_TOK_ATLEAST 326
662 #define EDIF_TOK_ATMOST 327
663 #define EDIF_TOK_AUTHOR 328
664 #define EDIF_TOK_BASEARRAY 329
665 #define EDIF_TOK_BECOMES 330
666 #define EDIF_TOK_BETWEEN 331
667 #define EDIF_TOK_BOOLEAN 332
668 #define EDIF_TOK_BOOLEANDISPLAY 333
669 #define EDIF_TOK_BOOLEANMAP 334
670 #define EDIF_TOK_BORDERPATTERN 335
671 #define EDIF_TOK_BORDERWIDTH 336
672 #define EDIF_TOK_BOUNDINGBOX 337
673 #define EDIF_TOK_CELL 338
674 #define EDIF_TOK_CELLREF 339
675 #define EDIF_TOK_CELLTYPE 340
676 #define EDIF_TOK_CHANGE 341
677 #define EDIF_TOK_CIRCLE 342
678 #define EDIF_TOK_COLOR 343
679 #define EDIF_TOK_COMMENT 344
680 #define EDIF_TOK_COMMENTGRAPHICS 345
681 #define EDIF_TOK_COMPOUND 346
682 #define EDIF_TOK_CONNECTLOCATION 347
683 #define EDIF_TOK_CONTENTS 348
684 #define EDIF_TOK_CORNERTYPE 349
685 #define EDIF_TOK_CRITICALITY 350
686 #define EDIF_TOK_CURRENTMAP 351
687 #define EDIF_TOK_CURVE 352
688 #define EDIF_TOK_CYCLE 353
689 #define EDIF_TOK_DATAORIGIN 354
690 #define EDIF_TOK_DCFANINLOAD 355
691 #define EDIF_TOK_DCFANOUTLOAD 356
692 #define EDIF_TOK_DCMAXFANIN 357
693 #define EDIF_TOK_DCMAXFANOUT 358
694 #define EDIF_TOK_DELAY 359
695 #define EDIF_TOK_DELTA 360
696 #define EDIF_TOK_DERIVATION 361
697 #define EDIF_TOK_DESIGN 362
698 #define EDIF_TOK_DESIGNATOR 363
699 #define EDIF_TOK_DIFFERENCE 364
700 #define EDIF_TOK_DIRECTION 365
701 #define EDIF_TOK_DISPLAY 366
702 #define EDIF_TOK_DOMINATES 367
703 #define EDIF_TOK_DOT 368
704 #define EDIF_TOK_DURATION 369
705 #define EDIF_TOK_E 370
706 #define EDIF_TOK_EDIF 371
707 #define EDIF_TOK_EDIFLEVEL 372
708 #define EDIF_TOK_EDIFVERSION 373
709 #define EDIF_TOK_ENCLOSUREDISTANCE 374
710 #define EDIF_TOK_ENDTYPE 375
711 #define EDIF_TOK_ENTRY 376
712 #define EDIF_TOK_EVENT 377
713 #define EDIF_TOK_EXACTLY 378
714 #define EDIF_TOK_EXTERNAL 379
715 #define EDIF_TOK_FABRICATE 380
716 #define EDIF_TOK_FALSE 381
717 #define EDIF_TOK_FIGURE 382
718 #define EDIF_TOK_FIGUREAREA 383
719 #define EDIF_TOK_FIGUREGROUP 384
720 #define EDIF_TOK_FIGUREGROUPOBJECT 385
721 #define EDIF_TOK_FIGUREGROUPOVERRIDE 386
722 #define EDIF_TOK_FIGUREGROUPREF 387
723 #define EDIF_TOK_FIGUREPERIMETER 388
724 #define EDIF_TOK_FIGUREWIDTH 389
725 #define EDIF_TOK_FILLPATTERN 390
726 #define EDIF_TOK_FOLLOW 391
727 #define EDIF_TOK_FORBIDDENEVENT 392
728 #define EDIF_TOK_GLOBALPORTREF 393
729 #define EDIF_TOK_GREATERTHAN 394
730 #define EDIF_TOK_GRIDMAP 395
731 #define EDIF_TOK_IGNORE 396
732 #define EDIF_TOK_INCLUDEFIGUREGROUP 397
733 #define EDIF_TOK_INITIAL 398
734 #define EDIF_TOK_INSTANCE 399
735 #define EDIF_TOK_INSTANCEBACKANNOTATE 400
736 #define EDIF_TOK_INSTANCEGROUP 401
737 #define EDIF_TOK_INSTANCEMAP 402
738 #define EDIF_TOK_INSTANCEREF 403
739 #define EDIF_TOK_INTEGER 404
740 #define EDIF_TOK_INTEGERDISPLAY 405
741 #define EDIF_TOK_INTERFACE 406
742 #define EDIF_TOK_INTERFIGUREGROUPSPACING 407
743 #define EDIF_TOK_INTERSECTION 408
744 #define EDIF_TOK_INTRAFIGUREGROUPSPACING 409
745 #define EDIF_TOK_INVERSE 410
746 #define EDIF_TOK_ISOLATED 411
747 #define EDIF_TOK_JOINED 412
748 #define EDIF_TOK_JUSTIFY 413
749 #define EDIF_TOK_KEYWORDDISPLAY 414
750 #define EDIF_TOK_KEYWORDLEVEL 415
751 #define EDIF_TOK_KEYWORDMAP 416
752 #define EDIF_TOK_LESSTHAN 417
753 #define EDIF_TOK_LIBRARY 418
754 #define EDIF_TOK_LIBRARYREF 419
755 #define EDIF_TOK_LISTOFNETS 420
756 #define EDIF_TOK_LISTOFPORTS 421
757 #define EDIF_TOK_LOADDELAY 422
758 #define EDIF_TOK_LOGICASSIGN 423
759 #define EDIF_TOK_LOGICINPUT 424
760 #define EDIF_TOK_LOGICLIST 425
761 #define EDIF_TOK_LOGICMAPINPUT 426
762 #define EDIF_TOK_LOGICMAPOUTPUT 427
763 #define EDIF_TOK_LOGICONEOF 428
764 #define EDIF_TOK_LOGICOUTPUT 429
765 #define EDIF_TOK_LOGICPORT 430
766 #define EDIF_TOK_LOGICREF 431
767 #define EDIF_TOK_LOGICVALUE 432
768 #define EDIF_TOK_LOGICWAVEFORM 433
769 #define EDIF_TOK_MAINTAIN 434
770 #define EDIF_TOK_MATCH 435
771 #define EDIF_TOK_MEMBER 436
772 #define EDIF_TOK_MINOMAX 437
773 #define EDIF_TOK_MINOMAXDISPLAY 438
774 #define EDIF_TOK_MNM 439
775 #define EDIF_TOK_MULTIPLEVALUESET 440
776 #define EDIF_TOK_MUSTJOIN 441
777 #define EDIF_TOK_NAME 442
778 #define EDIF_TOK_NET 443
779 #define EDIF_TOK_NETBACKANNOTATE 444
780 #define EDIF_TOK_NETBUNDLE 445
781 #define EDIF_TOK_NETDELAY 446
782 #define EDIF_TOK_NETGROUP 447
783 #define EDIF_TOK_NETMAP 448
784 #define EDIF_TOK_NETREF 449
785 #define EDIF_TOK_NOCHANGE 450
786 #define EDIF_TOK_NONPERMUTABLE 451
787 #define EDIF_TOK_NOTALLOWED 452
788 #define EDIF_TOK_NOTCHSPACING 453
789 #define EDIF_TOK_NUMBER 454
790 #define EDIF_TOK_NUMBERDEFINITION 455
791 #define EDIF_TOK_NUMBERDISPLAY 456
792 #define EDIF_TOK_OFFPAGECONNECTOR 457
793 #define EDIF_TOK_OFFSETEVENT 458
794 #define EDIF_TOK_OPENSHAPE 459
795 #define EDIF_TOK_ORIENTATION 460
796 #define EDIF_TOK_ORIGIN 461
797 #define EDIF_TOK_OVERHANGDISTANCE 462
798 #define EDIF_TOK_OVERLAPDISTANCE 463
799 #define EDIF_TOK_OVERSIZE 464
800 #define EDIF_TOK_OWNER 465
801 #define EDIF_TOK_PAGE 466
802 #define EDIF_TOK_PAGESIZE 467
803 #define EDIF_TOK_PARAMETER 468
804 #define EDIF_TOK_PARAMETERASSIGN 469
805 #define EDIF_TOK_PARAMETERDISPLAY 470
806 #define EDIF_TOK_PATH 471
807 #define EDIF_TOK_PATHDELAY 472
808 #define EDIF_TOK_PATHWIDTH 473
809 #define EDIF_TOK_PERMUTABLE 474
810 #define EDIF_TOK_PHYSICALDESIGNRULE 475
811 #define EDIF_TOK_PLUG 476
812 #define EDIF_TOK_POINT 477
813 #define EDIF_TOK_POINTDISPLAY 478
814 #define EDIF_TOK_POINTLIST 479
815 #define EDIF_TOK_POLYGON 480
816 #define EDIF_TOK_PORT 481
817 #define EDIF_TOK_PORTBACKANNOTATE 482
818 #define EDIF_TOK_PORTBUNDLE 483
819 #define EDIF_TOK_PORTDELAY 484
820 #define EDIF_TOK_PORTGROUP 485
821 #define EDIF_TOK_PORTIMPLEMENTATION 486
822 #define EDIF_TOK_PORTINSTANCE 487
823 #define EDIF_TOK_PORTLIST 488
824 #define EDIF_TOK_PORTLISTALIAS 489
825 #define EDIF_TOK_PORTMAP 490
826 #define EDIF_TOK_PORTREF 491
827 #define EDIF_TOK_PROGRAM 492
828 #define EDIF_TOK_PROPERTY 493
829 #define EDIF_TOK_PROPERTYDISPLAY 494
830 #define EDIF_TOK_PROTECTIONFRAME 495
831 #define EDIF_TOK_PT 496
832 #define EDIF_TOK_RANGEVECTOR 497
833 #define EDIF_TOK_RECTANGLE 498
834 #define EDIF_TOK_RECTANGLESIZE 499
835 #define EDIF_TOK_RENAME 500
836 #define EDIF_TOK_RESOLVES 501
837 #define EDIF_TOK_SCALE 502
838 #define EDIF_TOK_SCALEX 503
839 #define EDIF_TOK_SCALEY 504
840 #define EDIF_TOK_SECTION 505
841 #define EDIF_TOK_SHAPE 506
842 #define EDIF_TOK_SIMULATE 507
843 #define EDIF_TOK_SIMULATIONINFO 508
844 #define EDIF_TOK_SINGLEVALUESET 509
845 #define EDIF_TOK_SITE 510
846 #define EDIF_TOK_SOCKET 511
847 #define EDIF_TOK_SOCKETSET 512
848 #define EDIF_TOK_STATUS 513
849 #define EDIF_TOK_STEADY 514
850 #define EDIF_TOK_STRING 515
851 #define EDIF_TOK_STRINGDISPLAY 516
852 #define EDIF_TOK_STRONG 517
853 #define EDIF_TOK_SYMBOL 518
854 #define EDIF_TOK_SYMMETRY 519
855 #define EDIF_TOK_TABLE 520
856 #define EDIF_TOK_TABLEDEFAULT 521
857 #define EDIF_TOK_TECHNOLOGY 522
858 #define EDIF_TOK_TEXTHEIGHT 523
859 #define EDIF_TOK_TIMEINTERVAL 524
860 #define EDIF_TOK_TIMESTAMP 525
861 #define EDIF_TOK_TIMING 526
862 #define EDIF_TOK_TRANSFORM 527
863 #define EDIF_TOK_TRANSITION 528
864 #define EDIF_TOK_TRIGGER 529
865 #define EDIF_TOK_TRUE 530
866 #define EDIF_TOK_UNCONSTRAINED 531
867 #define EDIF_TOK_UNDEFINED 532
868 #define EDIF_TOK_UNION 533
869 #define EDIF_TOK_UNIT 534
870 #define EDIF_TOK_UNUSED 535
871 #define EDIF_TOK_USERDATA 536
872 #define EDIF_TOK_VERSION 537
873 #define EDIF_TOK_VIEW 538
874 #define EDIF_TOK_VIEWLIST 539
875 #define EDIF_TOK_VIEWMAP 540
876 #define EDIF_TOK_VIEWREF 541
877 #define EDIF_TOK_VIEWTYPE 542
878 #define EDIF_TOK_VISIBLE 543
879 #define EDIF_TOK_VOLTAGEMAP 544
880 #define EDIF_TOK_WAVEVALUE 545
881 #define EDIF_TOK_WEAK 546
882 #define EDIF_TOK_WEAKJOINED 547
883 #define EDIF_TOK_WHEN 548
884 #define EDIF_TOK_WRITTEN 549
885 
886 
887 
888 
889 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
890 typedef union YYSTYPE
891 {
892 
893 /* Line 214 of yacc.c  */
894 #line 193 "edif.y"
895 
896     char* s;
897     pair_list* pl;
898     str_pair* ps;
899 
900 
901 
902 /* Line 214 of yacc.c  */
903 #line 904 "edif.c"
904 } YYSTYPE;
905 # define YYSTYPE_IS_TRIVIAL 1
906 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
907 # define YYSTYPE_IS_DECLARED 1
908 #endif
909 
910 
911 /* Copy the second part of user declarations.  */
912 
913 
914 /* Line 264 of yacc.c  */
915 #line 916 "edif.c"
916 
917 #ifdef short
918 # undef short
919 #endif
920 
921 #ifdef YYTYPE_UINT8
922 typedef YYTYPE_UINT8 yytype_uint8;
923 #else
924 typedef unsigned char yytype_uint8;
925 #endif
926 
927 #ifdef YYTYPE_INT8
928 typedef YYTYPE_INT8 yytype_int8;
929 #elif (defined __STDC__ || defined __C99__FUNC__ \
930      || defined __cplusplus || defined _MSC_VER)
931 typedef signed char yytype_int8;
932 #else
933 typedef short int yytype_int8;
934 #endif
935 
936 #ifdef YYTYPE_UINT16
937 typedef YYTYPE_UINT16 yytype_uint16;
938 #else
939 typedef unsigned short int yytype_uint16;
940 #endif
941 
942 #ifdef YYTYPE_INT16
943 typedef YYTYPE_INT16 yytype_int16;
944 #else
945 typedef short int yytype_int16;
946 #endif
947 
948 #ifndef YYSIZE_T
949 # ifdef __SIZE_TYPE__
950 #  define YYSIZE_T __SIZE_TYPE__
951 # elif defined size_t
952 #  define YYSIZE_T size_t
953 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
954      || defined __cplusplus || defined _MSC_VER)
955 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
956 #  define YYSIZE_T size_t
957 # else
958 #  define YYSIZE_T unsigned int
959 # endif
960 #endif
961 
962 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
963 
964 #ifndef YY_
965 # if YYENABLE_NLS
966 #  if ENABLE_NLS
967 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
968 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
969 #  endif
970 # endif
971 # ifndef YY_
972 #  define YY_(msgid) msgid
973 # endif
974 #endif
975 
976 /* Suppress unused-variable warnings by "using" E.  */
977 #if ! defined lint || defined __GNUC__
978 # define YYUSE(e) ((void) (e))
979 #else
980 # define YYUSE(e) /* empty */
981 #endif
982 
983 /* Identity function, used to suppress warnings about constant conditions.  */
984 #ifndef lint
985 # define YYID(n) (n)
986 #else
987 #if (defined __STDC__ || defined __C99__FUNC__ \
988      || defined __cplusplus || defined _MSC_VER)
989 static int
YYID(int yyi)990 YYID (int yyi)
991 #else
992 static int
993 YYID (yyi)
994     int yyi;
995 #endif
996 {
997   return yyi;
998 }
999 #endif
1000 
1001 #if ! defined yyoverflow || YYERROR_VERBOSE
1002 
1003 /* The parser invokes alloca or malloc; define the necessary symbols.  */
1004 
1005 # ifdef YYSTACK_USE_ALLOCA
1006 #  if YYSTACK_USE_ALLOCA
1007 #   ifdef __GNUC__
1008 #    define YYSTACK_ALLOC __builtin_alloca
1009 #   elif defined __BUILTIN_VA_ARG_INCR
1010 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1011 #   elif defined _AIX
1012 #    define YYSTACK_ALLOC __alloca
1013 #   elif defined _MSC_VER
1014 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1015 #    define alloca _alloca
1016 #   else
1017 #    define YYSTACK_ALLOC alloca
1018 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
1019      || defined __cplusplus || defined _MSC_VER)
1020 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1021 #     ifndef _STDLIB_H
1022 #      define _STDLIB_H 1
1023 #     endif
1024 #    endif
1025 #   endif
1026 #  endif
1027 # endif
1028 
1029 # ifdef YYSTACK_ALLOC
1030    /* Pacify GCC's `empty if-body' warning.  */
1031 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
1032 #  ifndef YYSTACK_ALLOC_MAXIMUM
1033     /* The OS might guarantee only one guard page at the bottom of the stack,
1034        and a page size can be as small as 4096 bytes.  So we cannot safely
1035        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1036        to allow for a few compiler-allocated temporary stack slots.  */
1037 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1038 #  endif
1039 # else
1040 #  define YYSTACK_ALLOC YYMALLOC
1041 #  define YYSTACK_FREE YYFREE
1042 #  ifndef YYSTACK_ALLOC_MAXIMUM
1043 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1044 #  endif
1045 #  if (defined __cplusplus && ! defined _STDLIB_H \
1046        && ! ((defined YYMALLOC || defined malloc) \
1047 	     && (defined YYFREE || defined free)))
1048 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1049 #   ifndef _STDLIB_H
1050 #    define _STDLIB_H 1
1051 #   endif
1052 #  endif
1053 #  ifndef YYMALLOC
1054 #   define YYMALLOC malloc
1055 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
1056      || defined __cplusplus || defined _MSC_VER)
1057 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1058 #   endif
1059 #  endif
1060 #  ifndef YYFREE
1061 #   define YYFREE free
1062 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
1063      || defined __cplusplus || defined _MSC_VER)
1064 void free (void *); /* INFRINGES ON USER NAME SPACE */
1065 #   endif
1066 #  endif
1067 # endif
1068 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
1069 
1070 
1071 #if (! defined yyoverflow \
1072      && (! defined __cplusplus \
1073 	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1074 
1075 /* A type that is properly aligned for any stack member.  */
1076 union yyalloc
1077 {
1078   yytype_int16 yyss_alloc;
1079   YYSTYPE yyvs_alloc;
1080 };
1081 
1082 /* The size of the maximum gap between one aligned stack and the next.  */
1083 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1084 
1085 /* The size of an array large to enough to hold all stacks, each with
1086    N elements.  */
1087 # define YYSTACK_BYTES(N) \
1088      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
1089       + YYSTACK_GAP_MAXIMUM)
1090 
1091 /* Copy COUNT objects from FROM to TO.  The source and destination do
1092    not overlap.  */
1093 # ifndef YYCOPY
1094 #  if defined __GNUC__ && 1 < __GNUC__
1095 #   define YYCOPY(To, From, Count) \
1096       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
1097 #  else
1098 #   define YYCOPY(To, From, Count)		\
1099       do					\
1100 	{					\
1101 	  YYSIZE_T yyi;				\
1102 	  for (yyi = 0; yyi < (Count); yyi++)	\
1103 	    (To)[yyi] = (From)[yyi];		\
1104 	}					\
1105       while (YYID (0))
1106 #  endif
1107 # endif
1108 
1109 /* Relocate STACK from its old location to the new one.  The
1110    local variables YYSIZE and YYSTACKSIZE give the old and new number of
1111    elements in the stack, and YYPTR gives the new location of the
1112    stack.  Advance YYPTR to a properly aligned location for the next
1113    stack.  */
1114 # define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
1115     do									\
1116       {									\
1117 	YYSIZE_T yynewbytes;						\
1118 	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
1119 	Stack = &yyptr->Stack_alloc;					\
1120 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1121 	yyptr += yynewbytes / sizeof (*yyptr);				\
1122       }									\
1123     while (YYID (0))
1124 
1125 #endif
1126 
1127 /* YYFINAL -- State number of the termination state.  */
1128 #define YYFINAL  11
1129 /* YYLAST -- Last index in YYTABLE.  */
1130 #define YYLAST   2619
1131 
1132 /* YYNTOKENS -- Number of terminals.  */
1133 #define YYNTOKENS  296
1134 /* YYNNTS -- Number of nonterminals.  */
1135 #define YYNNTS  472
1136 /* YYNRULES -- Number of rules.  */
1137 #define YYNRULES  1129
1138 /* YYNRULES -- Number of states.  */
1139 #define YYNSTATES  1626
1140 
1141 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
1142 #define YYUNDEFTOK  2
1143 #define YYMAXUTOK   549
1144 
1145 #define YYTRANSLATE(YYX)						\
1146   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1147 
1148 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
1149 static const yytype_uint16 yytranslate[] =
1150 {
1151        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1152        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1153        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1154        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1155        2,   295,     2,     2,     2,     2,     2,     2,     2,     2,
1156        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1157        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1158        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1159        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1160        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1161        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1162        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1163        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1164        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1165        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1166        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1167        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1168        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1169        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1170        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1171        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1172        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1173        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1174        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1175        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1176        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1177        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1178       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1179       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1180       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1181       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1182       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1183       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1184       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1185       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1186       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1187      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1188      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1189      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
1190      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
1191      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
1192      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
1193      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
1194      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
1195      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1196      195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1197      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1198      215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1199      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1200      235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1201      245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1202      255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1203      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1204      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1205      285,   286,   287,   288,   289,   290,   291,   292,   293,   294
1206 };
1207 
1208 #if YYDEBUG
1209 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1210    YYRHS.  */
1211 static const yytype_uint16 yyprhs[] =
1212 {
1213        0,     0,     3,     5,    13,    14,    17,    20,    23,    26,
1214       29,    32,    34,    38,    44,    48,    50,    52,    56,    58,
1215       61,    64,    67,    70,    73,    77,    79,    81,    85,    87,
1216       90,    93,    96,    99,   105,   111,   112,   114,   118,   122,
1217      124,   126,   128,   131,   134,   138,   142,   146,   150,   153,
1218      157,   159,   161,   163,   168,   170,   172,   174,   176,   180,
1219      181,   184,   187,   190,   194,   196,   199,   203,   205,   207,
1220      213,   217,   221,   226,   228,   231,   234,   237,   240,   243,
1221      246,   248,   253,   254,   256,   258,   262,   264,   266,   268,
1222      273,   275,   277,   279,   280,   282,   284,   290,   291,   294,
1223      300,   304,   305,   308,   312,   313,   316,   319,   322,   325,
1224      328,   331,   334,   338,   342,   343,   346,   349,   352,   355,
1225      358,   361,   364,   367,   370,   373,   376,   379,   382,   385,
1226      388,   391,   394,   398,   399,   401,   405,   407,   409,   411,
1227      415,   417,   419,   423,   427,   428,   431,   434,   439,   440,
1228      442,   447,   448,   450,   454,   456,   458,   462,   464,   466,
1229      470,   472,   474,   478,   480,   482,   486,   488,   490,   494,
1230      495,   498,   502,   504,   506,   508,   513,   515,   518,   521,
1231      524,   527,   531,   533,   535,   537,   541,   542,   545,   548,
1232      551,   554,   557,   560,   563,   566,   569,   572,   575,   578,
1233      581,   584,   588,   590,   592,   595,   598,   602,   604,   606,
1234      608,   615,   617,   619,   620,   622,   623,   625,   626,   628,
1235      632,   633,   636,   640,   642,   645,   649,   656,   658,   660,
1236      663,   666,   670,   672,   674,   676,   682,   684,   686,   688,
1237      690,   692,   694,   696,   697,   699,   701,   705,   707,   709,
1238      711,   713,   715,   718,   721,   725,   731,   733,   736,   739,
1239      742,   745,   750,   753,   757,   759,   762,   765,   768,   771,
1240      774,   777,   780,   783,   786,   789,   792,   795,   798,   800,
1241      802,   806,   808,   810,   812,   816,   818,   821,   824,   827,
1242      830,   833,   836,   839,   842,   845,   848,   851,   854,   859,
1243      860,   862,   866,   868,   870,   873,   876,   879,   882,   885,
1244      888,   891,   894,   897,   903,   905,   907,   910,   913,   915,
1245      917,   919,   921,   923,   929,   931,   933,   936,   939,   945,
1246      947,   949,   952,   955,   961,   966,   968,   970,   972,   974,
1247      977,   980,   984,   986,   989,   993,   994,   997,  1000,  1003,
1248     1006,  1010,  1014,  1019,  1022,  1026,  1028,  1030,  1033,  1038,
1249     1040,  1042,  1045,  1048,  1051,  1054,  1057,  1060,  1063,  1066,
1250     1071,  1072,  1074,  1076,  1080,  1082,  1085,  1088,  1091,  1094,
1251     1098,  1099,  1102,  1106,  1107,  1110,  1113,  1116,  1119,  1121,
1252     1123,  1125,  1127,  1131,  1133,  1136,  1140,  1141,  1144,  1147,
1253     1150,  1154,  1155,  1158,  1161,  1164,  1167,  1170,  1173,  1176,
1254     1179,  1182,  1185,  1188,  1191,  1194,  1197,  1200,  1203,  1210,
1255     1212,  1214,  1217,  1220,  1224,  1226,  1228,  1231,  1234,  1240,
1256     1242,  1244,  1247,  1250,  1254,  1256,  1258,  1261,  1265,  1266,
1257     1269,  1272,  1275,  1279,  1281,  1283,  1285,  1287,  1289,  1291,
1258     1293,  1295,  1297,  1301,  1303,  1306,  1310,  1314,  1316,  1319,
1259     1321,  1323,  1327,  1329,  1331,  1337,  1339,  1342,  1345,  1348,
1260     1351,  1355,  1359,  1360,  1363,  1367,  1368,  1371,  1374,  1379,
1261     1381,  1383,  1389,  1391,  1393,  1395,  1397,  1399,  1400,  1402,
1262     1404,  1408,  1410,  1412,  1414,  1417,  1421,  1422,  1425,  1428,
1263     1431,  1435,  1436,  1439,  1443,  1444,  1447,  1449,  1451,  1455,
1264     1456,  1459,  1462,  1466,  1468,  1470,  1472,  1475,  1479,  1481,
1265     1484,  1487,  1490,  1495,  1496,  1498,  1502,  1504,  1507,  1510,
1266     1513,  1516,  1519,  1522,  1525,  1528,  1531,  1534,  1537,  1540,
1267     1543,  1546,  1550,  1551,  1554,  1557,  1560,  1563,  1568,  1570,
1268     1572,  1573,  1575,  1577,  1582,  1584,  1586,  1588,  1590,  1592,
1269     1594,  1599,  1601,  1604,  1608,  1609,  1612,  1615,  1618,  1622,
1270     1624,  1627,  1629,  1631,  1637,  1639,  1641,  1643,  1647,  1648,
1271     1651,  1655,  1656,  1659,  1662,  1665,  1668,  1672,  1674,  1677,
1272     1679,  1681,  1683,  1685,  1687,  1692,  1694,  1697,  1700,  1703,
1273     1706,  1709,  1712,  1715,  1718,  1721,  1725,  1727,  1730,  1733,
1274     1736,  1739,  1744,  1746,  1749,  1752,  1755,  1758,  1761,  1766,
1275     1768,  1771,  1774,  1778,  1779,  1782,  1785,  1789,  1790,  1793,
1276     1796,  1799,  1802,  1804,  1806,  1808,  1810,  1815,  1816,  1818,
1277     1820,  1822,  1825,  1829,  1830,  1833,  1836,  1841,  1843,  1846,
1278     1849,  1855,  1857,  1859,  1862,  1865,  1869,  1870,  1873,  1876,
1279     1879,  1883,  1885,  1888,  1892,  1893,  1896,  1899,  1902,  1906,
1280     1908,  1911,  1914,  1917,  1920,  1925,  1929,  1931,  1934,  1938,
1281     1940,  1942,  1944,  1946,  1948,  1950,  1952,  1954,  1958,  1965,
1282     1967,  1969,  1972,  1975,  1982,  1984,  1986,  1989,  1992,  1998,
1283     2000,  2002,  2006,  2010,  2012,  2015,  2018,  2021,  2024,  2027,
1284     2030,  2033,  2036,  2039,  2043,  2047,  2049,  2052,  2058,  2059,
1285     2061,  2066,  2070,  2072,  2075,  2079,  2081,  2084,  2088,  2092,
1286     2093,  2096,  2099,  2102,  2106,  2107,  2110,  2114,  2115,  2118,
1287     2121,  2124,  2128,  2130,  2133,  2137,  2138,  2141,  2146,  2150,
1288     2152,  2155,  2159,  2161,  2164,  2167,  2170,  2173,  2176,  2179,
1289     2182,  2185,  2188,  2191,  2194,  2197,  2201,  2203,  2206,  2209,
1290     2212,  2215,  2218,  2221,  2224,  2227,  2230,  2235,  2237,  2240,
1291     2243,  2246,  2251,  2253,  2255,  2258,  2261,  2265,  2266,  2269,
1292     2272,  2276,  2278,  2280,  2283,  2286,  2289,  2292,  2295,  2298,
1293     2301,  2304,  2307,  2311,  2313,  2315,  2318,  2321,  2324,  2327,
1294     2330,  2333,  2336,  2339,  2342,  2345,  2348,  2352,  2353,  2356,
1295     2359,  2364,  2368,  2369,  2372,  2375,  2378,  2381,  2383,  2385,
1296     2387,  2389,  2394,  2395,  2397,  2399,  2401,  2406,  2407,  2409,
1297     2413,  2415,  2418,  2423,  2425,  2428,  2431,  2434,  2437,  2439,
1298     2441,  2445,  2446,  2449,  2452,  2455,  2458,  2461,  2464,  2467,
1299     2470,  2473,  2476,  2479,  2481,  2483,  2485,  2487,  2489,  2491,
1300     2495,  2496,  2499,  2502,  2507,  2509,  2512,  2518,  2520,  2522,
1301     2525,  2528,  2533,  2535,  2537,  2539,  2541,  2545,  2546,  2549,
1302     2551,  2557,  2559,  2564,  2569,  2574,  2578,  2580,  2583,  2586,
1303     2589,  2593,  2595,  2598,  2600,  2604,  2606,  2609,  2612,  2615,
1304     2618,  2621,  2625,  2626,  2629,  2632,  2635,  2639,  2640,  2642,
1305     2647,  2648,  2650,  2654,  2655,  2657,  2661,  2663,  2666,  2670,
1306     2671,  2674,  2677,  2680,  2685,  2687,  2689,  2691,  2693,  2696,
1307     2699,  2703,  2707,  2708,  2711,  2714,  2717,  2719,  2722,  2726,
1308     2730,  2731,  2734,  2737,  2740,  2743,  2746,  2749,  2752,  2755,
1309     2758,  2761,  2764,  2767,  2770,  2774,  2775,  2778,  2782,  2783,
1310     2786,  2789,  2794,  2796,  2798,  2800,  2802,  2803,  2805,  2807,
1311     2811,  2813,  2816,  2819,  2822,  2825,  2828,  2831,  2835,  2840,
1312     2842,  2844,  2846,  2848,  2850,  2859,  2863,  2865,  2868,  2871,
1313     2874,  2877,  2885,  2886,  2888,  2889,  2891,  2892,  2894,  2895,
1314     2897,  2898,  2900,  2905,  2907,  2909,  2911,  2915,  2916,  2919,
1315     2922,  2925,  2928,  2930,  2932,  2934,  2936,  2938,  2940,  2943,
1316     2946,  2950,  2952,  2954,  2957,  2960,  2964,  2966,  2968,  2970,
1317     2972,  2974,  2976,  2978,  2980,  2982,  2984,  2986,  2988,  2990,
1318     2992,  2994,  2996,  2999,  3003,  3005,  3008,  3011,  3014,  3017,
1319     3019,  3021,  3023,  3025,  3029,  3035,  3037,  3040,  3043,  3046,
1320     3049,  3052,  3056,  3057,  3060,  3063,  3067,  3068,  3071,  3074,
1321     3077,  3080,  3083,  3086,  3089,  3092,  3094,  3096,  3101,  3102,
1322     3104,  3108,  3110,  3112,  3114,  3116,  3118,  3120,  3122,  3124,
1323     3126,  3128,  3132,  3136,  3142,  3146,  3150,  3151,  3154,  3157,
1324     3160,  3164,  3166,  3169,  3172,  3175,  3178,  3181,  3184,  3188,
1325     3190,  3193,  3196,  3199,  3202,  3205,  3208,  3210,  3212,  3214
1326 };
1327 
1328 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1329 static const yytype_int16 yyrhs[] =
1330 {
1331      298,     0,    -1,   295,    -1,   116,   300,   302,   301,   488,
1332      299,   297,    -1,    -1,   299,   690,    -1,   299,   416,    -1,
1333      299,   495,    -1,   299,   384,    -1,   299,   350,    -1,   299,
1334      737,    -1,   551,    -1,   117,   766,   297,    -1,   118,   766,
1335      766,   766,   297,    -1,    62,   304,   297,    -1,   542,    -1,
1336      540,    -1,    63,   306,   297,    -1,   542,    -1,   306,   440,
1337       -1,   306,   530,    -1,   306,   504,    -1,   306,   350,    -1,
1338      306,   737,    -1,    64,   308,   297,    -1,   765,    -1,   695,
1339       -1,    65,   310,   297,    -1,   366,    -1,   310,   508,    -1,
1340      310,   520,    -1,   310,   350,    -1,   310,   737,    -1,    66,
1341      620,   620,   620,   297,    -1,    67,   551,   766,   313,   297,
1342       -1,    -1,   766,    -1,    68,   612,   297,    -1,    69,   316,
1343      297,    -1,   321,    -1,   317,    -1,   314,    -1,   316,   350,
1344       -1,   316,   737,    -1,    70,   686,   297,    -1,    71,   670,
1345      297,    -1,    72,   670,   297,    -1,    73,   765,   297,    -1,
1346       74,   297,    -1,    75,   323,   297,    -1,   517,    -1,   510,
1347       -1,   518,    -1,    76,   325,   326,   297,    -1,   318,    -1,
1348      448,    -1,   319,    -1,   492,    -1,    77,   328,   297,    -1,
1349       -1,   328,   332,    -1,   328,   329,    -1,   328,   327,    -1,
1350       78,   330,   297,    -1,   332,    -1,   330,   395,    -1,    79,
1351      332,   297,    -1,   728,    -1,   419,    -1,    80,   766,   766,
1352      327,   297,    -1,    81,   766,   297,    -1,    82,   659,   297,
1353       -1,    83,   338,   337,   297,    -1,   342,    -1,   337,   690,
1354       -1,   337,   746,    -1,   337,   742,    -1,   337,   350,    -1,
1355      337,   737,    -1,   337,   650,    -1,   551,    -1,    84,   341,
1356      340,   297,    -1,    -1,   497,    -1,   552,    -1,    85,   343,
1357      297,    -1,    55,    -1,    49,    -1,    23,    -1,    86,   345,
1358      346,   297,    -1,   643,    -1,   644,    -1,   637,    -1,    -1,
1359      322,    -1,   724,    -1,    87,   620,   620,   348,   297,    -1,
1360       -1,   348,   650,    -1,    88,   670,   670,   670,   297,    -1,
1361       89,   351,   297,    -1,    -1,   351,   765,    -1,    90,   353,
1362      297,    -1,    -1,   353,   307,    -1,   353,   430,    -1,   353,
1363      454,    -1,   353,   335,    -1,   353,   650,    -1,   353,   350,
1364       -1,   353,   737,    -1,    91,   517,   297,    -1,    93,   356,
1365      297,    -1,    -1,   356,   454,    -1,   356,   582,    -1,   356,
1366      430,    -1,   356,   673,    -1,   356,   553,    -1,   356,   557,
1367       -1,   356,   597,    -1,   356,   352,    -1,   356,   633,    -1,
1368      356,   716,    -1,   356,   678,    -1,   356,   760,    -1,   356,
1369      440,    -1,   356,   522,    -1,   356,   335,    -1,   356,   350,
1370       -1,   356,   737,    -1,    92,   358,   297,    -1,    -1,   430,
1371       -1,    94,   360,   297,    -1,    20,    -1,    50,    -1,    57,
1372       -1,    95,   362,   297,    -1,   766,    -1,   466,    -1,    96,
1373      542,   297,    -1,    97,   365,   297,    -1,    -1,   365,   311,
1374       -1,   365,   620,    -1,    98,   766,   367,   297,    -1,    -1,
1375      404,    -1,    99,   765,   369,   297,    -1,    -1,   741,    -1,
1376      100,   371,   297,    -1,   670,    -1,   578,    -1,   101,   373,
1377      297,    -1,   670,    -1,   578,    -1,   102,   375,   297,    -1,
1378      670,    -1,   578,    -1,   103,   377,   297,    -1,   670,    -1,
1379      578,    -1,   104,   379,   297,    -1,   542,    -1,   540,    -1,
1380      105,   381,   297,    -1,    -1,   381,   620,    -1,   106,   383,
1381      297,    -1,     9,    -1,    34,    -1,    47,    -1,   107,   388,
1382      385,   297,    -1,   339,    -1,   385,   690,    -1,   385,   350,
1383       -1,   385,   650,    -1,   385,   737,    -1,   108,   387,   297,
1384       -1,   765,    -1,   695,    -1,   551,    -1,   220,   390,   297,
1385       -1,    -1,   390,   437,    -1,   390,   432,    -1,   390,   661,
1386       -1,   390,   435,    -1,   390,   592,    -1,   390,   590,    -1,
1387      390,   405,    -1,   390,   472,    -1,   390,   476,    -1,   390,
1388      574,    -1,   390,   572,    -1,   390,   420,    -1,   390,   350,
1389       -1,   390,   737,    -1,   109,   392,   297,    -1,   428,    -1,
1390      434,    -1,   392,   428,    -1,   392,   434,    -1,   110,   394,
1391      297,    -1,    26,    -1,    27,    -1,    40,    -1,   111,   396,
1392      397,   398,   399,   297,    -1,   423,    -1,   426,    -1,    -1,
1393      483,    -1,    -1,   587,    -1,    -1,   589,    -1,   112,   401,
1394      297,    -1,    -1,   401,   517,    -1,   113,   403,   297,    -1,
1395      620,    -1,   403,   650,    -1,   114,   670,   297,    -1,   119,
1396      668,   424,   424,   406,   297,    -1,   656,    -1,   682,    -1,
1397      406,   350,    -1,   406,   737,    -1,   120,   408,   297,    -1,
1398       20,    -1,    50,    -1,    57,    -1,   121,   410,   411,   412,
1399      297,    -1,   533,    -1,   344,    -1,   692,    -1,   524,    -1,
1400      644,    -1,   569,    -1,   704,    -1,    -1,   378,    -1,   502,
1401       -1,   122,   414,   297,    -1,   644,    -1,   637,    -1,   631,
1402       -1,   567,    -1,   561,    -1,   414,   724,    -1,   414,   322,
1403       -1,   123,   670,   297,    -1,   124,   493,   301,   417,   297,
1404       -1,   709,    -1,   417,   690,    -1,   417,   336,    -1,   417,
1405      350,    -1,   417,   737,    -1,   125,   491,   423,   297,    -1,
1406      126,   297,    -1,   129,   421,   297,    -1,   422,    -1,   421,
1407      359,    -1,   421,   407,    -1,   421,   609,    -1,   421,   334,
1408       -1,   421,   349,    -1,   421,   439,    -1,   421,   333,    -1,
1409      421,   711,    -1,   421,   754,    -1,   421,   350,    -1,   421,
1410      650,    -1,   421,   737,    -1,   421,   451,    -1,   551,    -1,
1411      552,    -1,   130,   425,   297,    -1,   423,    -1,   428,    -1,
1412      434,    -1,   131,   427,   297,    -1,   423,    -1,   427,   359,
1413       -1,   427,   407,    -1,   427,   609,    -1,   427,   334,    -1,
1414      427,   349,    -1,   427,   439,    -1,   427,   333,    -1,   427,
1415      711,    -1,   427,   754,    -1,   427,   350,    -1,   427,   650,
1416       -1,   427,   737,    -1,   132,   423,   429,   297,    -1,    -1,
1417      497,    -1,   127,   431,   297,    -1,   422,    -1,   426,    -1,
1418      431,   347,    -1,   431,   402,    -1,   431,   585,    -1,   431,
1419      605,    -1,   431,   621,    -1,   431,   659,    -1,   431,   675,
1420       -1,   431,   350,    -1,   431,   737,    -1,   128,   668,   424,
1421      433,   297,    -1,   656,    -1,   682,    -1,   433,   350,    -1,
1422      433,   737,    -1,   474,    -1,   732,    -1,   391,    -1,   478,
1423       -1,   594,    -1,   133,   668,   424,   436,   297,    -1,   656,
1424       -1,   682,    -1,   436,   350,    -1,   436,   737,    -1,   134,
1425      668,   424,   438,   297,    -1,   656,    -1,   682,    -1,   438,
1426      350,    -1,   438,   737,    -1,   135,   766,   766,   327,   297,
1427       -1,   136,   441,   442,   297,    -1,   643,    -1,   644,    -1,
1428      644,    -1,   704,    -1,   442,   378,    -1,   442,   502,    -1,
1429      137,   444,   297,    -1,   712,    -1,   444,   413,    -1,   767,
1430      446,   295,    -1,    -1,   446,   766,    -1,   446,   765,    -1,
1431      446,   764,    -1,   446,   445,    -1,   138,   643,   297,    -1,
1432      139,   670,   297,    -1,   140,   670,   670,   297,    -1,   141,
1433      297,    -1,   142,   452,   297,    -1,   428,    -1,   434,    -1,
1434      143,   297,    -1,   144,   464,   455,   297,    -1,   750,    -1,
1435      744,    -1,   455,   718,    -1,   455,   604,    -1,   455,   635,
1436       -1,   455,   716,    -1,   455,   386,    -1,   455,   650,    -1,
1437      455,   350,    -1,   455,   737,    -1,   148,   465,   457,   297,
1438       -1,    -1,   456,    -1,   750,    -1,   145,   459,   297,    -1,
1439      456,    -1,   459,   386,    -1,   459,   716,    -1,   459,   650,
1440       -1,   459,   350,    -1,   146,   461,   297,    -1,    -1,   461,
1441      456,    -1,   147,   463,   297,    -1,    -1,   463,   456,    -1,
1442      463,   460,    -1,   463,   350,    -1,   463,   737,    -1,   551,
1443       -1,   312,    -1,   552,    -1,   536,    -1,   150,   467,   297,
1444       -1,   766,    -1,   467,   395,    -1,   149,   469,   297,    -1,
1445       -1,   469,   766,    -1,   469,   466,    -1,   469,   468,    -1,
1446      151,   471,   297,    -1,    -1,   471,   623,    -1,   471,   627,
1447       -1,   471,   700,    -1,   471,   654,    -1,   471,   315,    -1,
1448      471,   602,    -1,   471,   481,    -1,   471,   547,    -1,   471,
1449      758,    -1,   471,   610,    -1,   471,   716,    -1,   471,   678,
1450       -1,   471,   386,    -1,   471,   650,    -1,   471,   350,    -1,
1451      471,   737,    -1,   152,   668,   424,   424,   473,   297,    -1,
1452      656,    -1,   682,    -1,   473,   350,    -1,   473,   737,    -1,
1453      153,   475,   297,    -1,   428,    -1,   434,    -1,   475,   428,
1454       -1,   475,   434,    -1,   154,   668,   424,   477,   297,    -1,
1455      656,    -1,   682,    -1,   477,   350,    -1,   477,   737,    -1,
1456      155,   479,   297,    -1,   428,    -1,   434,    -1,   156,   297,
1457       -1,   157,   482,   297,    -1,    -1,   482,   644,    -1,   482,
1458      637,    -1,   482,   447,    -1,   158,   484,   297,    -1,    11,
1459       -1,    12,    -1,    13,    -1,    29,    -1,    30,    -1,    31,
1460       -1,    58,    -1,    59,    -1,    60,    -1,   159,   486,   297,
1461       -1,   490,    -1,   486,   395,    -1,   160,   766,   297,    -1,
1462      161,   489,   297,    -1,   487,    -1,   489,   350,    -1,   764,
1463       -1,   551,    -1,   162,   670,   297,    -1,   551,    -1,   552,
1464       -1,   163,   493,   301,   496,   297,    -1,   709,    -1,   496,
1465      690,    -1,   496,   336,    -1,   496,   350,    -1,   496,   737,
1466       -1,   164,   494,   297,    -1,   165,   499,   297,    -1,    -1,
1467      499,   553,    -1,   166,   501,   297,    -1,    -1,   501,   623,
1468       -1,   501,   627,    -1,   167,   503,   503,   297,    -1,   542,
1469       -1,   540,    -1,   168,   505,   506,   507,   297,    -1,   643,
1470       -1,   644,    -1,   644,    -1,   524,    -1,   704,    -1,    -1,
1471      378,    -1,   502,    -1,   169,   509,   297,    -1,   637,    -1,
1472      644,    -1,   643,    -1,   509,   528,    -1,   170,   511,   297,
1473       -1,    -1,   511,   517,    -1,   511,   518,    -1,   511,   450,
1474       -1,   171,   513,   297,    -1,    -1,   513,   517,    -1,   172,
1475      515,   297,    -1,    -1,   515,   517,    -1,   551,    -1,   552,
1476       -1,   173,   519,   297,    -1,    -1,   519,   517,    -1,   519,
1477      510,    -1,   174,   521,   297,    -1,   637,    -1,   644,    -1,
1478      643,    -1,   521,   528,    -1,   175,   523,   297,    -1,   642,
1479       -1,   523,   650,    -1,   523,   350,    -1,   523,   737,    -1,
1480      176,   517,   525,   297,    -1,    -1,   497,    -1,   177,   527,
1481      297,    -1,   516,    -1,   527,   755,    -1,   527,   363,    -1,
1482      527,   331,    -1,   527,   354,    -1,   527,   757,    -1,   527,
1483      699,    -1,   527,   400,    -1,   527,   514,    -1,   527,   512,
1484       -1,   527,   480,    -1,   527,   666,    -1,   527,   650,    -1,
1485      527,   350,    -1,   527,   737,    -1,   178,   529,   297,    -1,
1486       -1,   529,   517,    -1,   529,   510,    -1,   529,   518,    -1,
1487      529,   450,    -1,   179,   531,   532,   297,    -1,   643,    -1,
1488      644,    -1,    -1,   378,    -1,   502,    -1,   180,   534,   535,
1489      297,    -1,   643,    -1,   644,    -1,   637,    -1,   517,    -1,
1490      510,    -1,   518,    -1,   181,   552,   537,   297,    -1,   766,
1491       -1,   537,   766,    -1,   182,   539,   297,    -1,    -1,   539,
1492      542,    -1,   539,   540,    -1,   539,   538,    -1,   183,   541,
1493      297,    -1,   542,    -1,   541,   395,    -1,   543,    -1,   670,
1494       -1,   184,   544,   544,   544,   297,    -1,   670,    -1,   731,
1495       -1,   730,    -1,   185,   546,   297,    -1,    -1,   546,   657,
1496       -1,   186,   548,   297,    -1,    -1,   548,   644,    -1,   548,
1497      637,    -1,   548,   758,    -1,   548,   481,    -1,   187,   550,
1498      297,    -1,   764,    -1,   550,   395,    -1,   764,    -1,   549,
1499       -1,   663,    -1,   764,    -1,   549,    -1,   188,   565,   554,
1500      297,    -1,   481,    -1,   554,   361,    -1,   554,   559,    -1,
1501      554,   430,    -1,   554,   553,    -1,   554,   454,    -1,   554,
1502      352,    -1,   554,   650,    -1,   554,   350,    -1,   554,   737,
1503       -1,   189,   556,   297,    -1,   567,    -1,   556,   559,    -1,
1504      556,   361,    -1,   556,   650,    -1,   556,   350,    -1,   190,
1505      565,   558,   297,    -1,   498,    -1,   558,   430,    -1,   558,
1506      352,    -1,   558,   650,    -1,   558,   350,    -1,   558,   737,
1507       -1,   191,   382,   560,   297,    -1,   378,    -1,   560,   724,
1508       -1,   560,   322,    -1,   192,   562,   297,    -1,    -1,   562,
1509      566,    -1,   562,   567,    -1,   193,   564,   297,    -1,    -1,
1510      564,   567,    -1,   564,   561,    -1,   564,   350,    -1,   564,
1511      737,    -1,   551,    -1,   312,    -1,   552,    -1,   536,    -1,
1512      194,   566,   568,   297,    -1,    -1,   567,    -1,   456,    -1,
1513      750,    -1,   195,   297,    -1,   196,   571,   297,    -1,    -1,
1514      571,   644,    -1,   571,   610,    -1,   197,   668,   573,   297,
1515       -1,   424,    -1,   573,   350,    -1,   573,   737,    -1,   198,
1516      668,   424,   575,   297,    -1,   656,    -1,   682,    -1,   575,
1517      350,    -1,   575,   737,    -1,   199,   577,   297,    -1,    -1,
1518      577,   670,    -1,   577,   578,    -1,   577,   576,    -1,   201,
1519      579,   297,    -1,   670,    -1,   579,   395,    -1,   200,   581,
1520      297,    -1,    -1,   581,   669,    -1,   581,   449,    -1,   581,
1521      350,    -1,   202,   583,   297,    -1,   642,    -1,   583,   736,
1522       -1,   583,   650,    -1,   583,   350,    -1,   583,   737,    -1,
1523      203,   413,   670,   297,    -1,   204,   586,   297,    -1,   364,
1524       -1,   586,   650,    -1,   205,   588,   297,    -1,    43,    -1,
1525       46,    -1,    44,    -1,    45,    -1,    35,    -1,    37,    -1,
1526       38,    -1,    36,    -1,   206,   620,   297,    -1,   207,   668,
1527      424,   424,   591,   297,    -1,   656,    -1,   682,    -1,   591,
1528      350,    -1,   591,   737,    -1,   208,   668,   424,   424,   593,
1529      297,    -1,   656,    -1,   682,    -1,   593,   350,    -1,   593,
1530      737,    -1,   209,   766,   595,   359,   297,    -1,   428,    -1,
1531      434,    -1,   210,   765,   297,    -1,   211,   598,   297,    -1,
1532      464,    -1,   598,   454,    -1,   598,   553,    -1,   598,   557,
1533       -1,   598,   352,    -1,   598,   633,    -1,   598,   599,    -1,
1534      598,   335,    -1,   598,   350,    -1,   598,   737,    -1,   212,
1535      659,   297,    -1,   215,   601,   297,    -1,   740,    -1,   601,
1536      395,    -1,   213,   739,   729,   603,   297,    -1,    -1,   734,
1537       -1,   214,   740,   729,   297,    -1,   216,   606,   297,    -1,
1538      618,    -1,   606,   650,    -1,   217,   608,   297,    -1,   378,
1539       -1,   608,   413,    -1,   218,   766,   297,    -1,   219,   611,
1540      297,    -1,    -1,   611,   644,    -1,   611,   610,    -1,   611,
1541      570,    -1,   221,   613,   297,    -1,    -1,   613,   688,    -1,
1542      222,   615,   297,    -1,    -1,   615,   620,    -1,   615,   616,
1543       -1,   615,   614,    -1,   223,   617,   297,    -1,   620,    -1,
1544      617,   395,    -1,   224,   619,   297,    -1,    -1,   619,   620,
1545       -1,   241,   766,   766,   297,    -1,   225,   622,   297,    -1,
1546      618,    -1,   622,   650,    -1,   226,   624,   297,    -1,   642,
1547       -1,   624,   393,    -1,   624,   736,    -1,   624,   629,    -1,
1548      624,   386,    -1,   624,   370,    -1,   624,   372,    -1,   624,
1549      374,    -1,   624,   376,    -1,   624,   303,    -1,   624,   650,
1550       -1,   624,   350,    -1,   624,   737,    -1,   227,   626,   297,
1551       -1,   644,    -1,   626,   386,    -1,   626,   629,    -1,   626,
1552      370,    -1,   626,   372,    -1,   626,   374,    -1,   626,   376,
1553       -1,   626,   303,    -1,   626,   650,    -1,   626,   350,    -1,
1554      228,   642,   628,   297,    -1,   500,    -1,   628,   650,    -1,
1555      628,   350,    -1,   628,   737,    -1,   229,   382,   630,   297,
1556       -1,   378,    -1,   502,    -1,   630,   724,    -1,   630,   322,
1557       -1,   230,   632,   297,    -1,    -1,   632,   643,    -1,   632,
1558      644,    -1,   231,   634,   297,    -1,   644,    -1,   643,    -1,
1559      634,   357,    -1,   634,   430,    -1,   634,   454,    -1,   634,
1560      352,    -1,   634,   648,    -1,   634,   485,    -1,   634,   650,
1561       -1,   634,   737,    -1,   634,   350,    -1,   232,   636,   297,
1562       -1,   644,    -1,   643,    -1,   636,   736,    -1,   636,   629,
1563       -1,   636,   386,    -1,   636,   370,    -1,   636,   372,    -1,
1564      636,   374,    -1,   636,   376,    -1,   636,   303,    -1,   636,
1565      650,    -1,   636,   350,    -1,   636,   737,    -1,   233,   638,
1566      297,    -1,    -1,   638,   644,    -1,   638,   643,    -1,   234,
1567      642,   637,   297,    -1,   235,   641,   297,    -1,    -1,   641,
1568      644,    -1,   641,   631,    -1,   641,   350,    -1,   641,   737,
1569       -1,   551,    -1,   312,    -1,   552,    -1,   536,    -1,   236,
1570      643,   645,   297,    -1,    -1,   644,    -1,   456,    -1,   750,
1571       -1,   237,   765,   647,   297,    -1,    -1,   741,    -1,   239,
1572      649,   297,    -1,   653,    -1,   649,   395,    -1,   238,   652,
1573      651,   297,    -1,   729,    -1,   651,   596,    -1,   651,   734,
1574       -1,   651,   650,    -1,   651,   350,    -1,   551,    -1,   552,
1575       -1,   240,   655,   297,    -1,    -1,   655,   633,    -1,   655,
1576      430,    -1,   655,   454,    -1,   655,   352,    -1,   655,   335,
1577       -1,   655,   648,    -1,   655,   485,    -1,   655,   600,    -1,
1578      655,   650,    -1,   655,   350,    -1,   655,   737,    -1,   492,
1579       -1,   448,    -1,   319,    -1,   318,    -1,   415,    -1,   324,
1580       -1,   242,   658,   297,    -1,    -1,   658,   656,    -1,   658,
1581      682,    -1,   243,   620,   660,   297,    -1,   620,    -1,   660,
1582      650,    -1,   244,   668,   424,   662,   297,    -1,   657,    -1,
1583      545,    -1,   662,   350,    -1,   662,   737,    -1,   245,   664,
1584      665,   297,    -1,   764,    -1,   549,    -1,   765,    -1,   695,
1585       -1,   246,   667,   297,    -1,    -1,   667,   517,    -1,   551,
1586       -1,   247,   670,   670,   734,   297,    -1,   766,    -1,   115,
1587      766,   766,   297,    -1,   248,   766,   766,   297,    -1,   249,
1588      766,   766,   297,    -1,   250,   674,   297,    -1,   765,    -1,
1589      674,   673,    -1,   674,   765,    -1,   674,   454,    -1,   251,
1590      676,   297,    -1,   364,    -1,   676,   650,    -1,   551,    -1,
1591      252,   679,   297,    -1,   677,    -1,   679,   639,    -1,   679,
1592      756,    -1,   679,   309,    -1,   679,   350,    -1,   679,   737,
1593       -1,   253,   681,   297,    -1,    -1,   681,   526,    -1,   681,
1594      350,    -1,   681,   737,    -1,   254,   683,   297,    -1,    -1,
1595      656,    -1,   255,   750,   685,   297,    -1,    -1,   718,    -1,
1596      256,   687,   297,    -1,    -1,   702,    -1,   257,   689,   297,
1597       -1,   702,    -1,   689,   684,    -1,   258,   691,   297,    -1,
1598       -1,   691,   762,    -1,   691,   350,    -1,   691,   737,    -1,
1599      259,   693,   694,   297,    -1,   643,    -1,   644,    -1,   637,
1600       -1,   404,    -1,   694,   724,    -1,   694,   322,    -1,   261,
1601      698,   297,    -1,   260,   697,   297,    -1,    -1,   697,   765,
1602       -1,   697,   695,    -1,   697,   696,    -1,   765,    -1,   698,
1603      395,    -1,   262,   517,   297,    -1,   263,   701,   297,    -1,
1604       -1,   701,   633,    -1,   701,   430,    -1,   701,   454,    -1,
1605      701,   352,    -1,   701,   307,    -1,   701,   599,    -1,   701,
1606      335,    -1,   701,   648,    -1,   701,   485,    -1,   701,   600,
1607       -1,   701,   650,    -1,   701,   350,    -1,   701,   737,    -1,
1608      264,   703,   297,    -1,    -1,   703,   718,    -1,   265,   705,
1609      297,    -1,    -1,   705,   409,    -1,   705,   706,    -1,   266,
1610      707,   708,   297,    -1,   524,    -1,   644,    -1,   569,    -1,
1611      704,    -1,    -1,   378,    -1,   502,    -1,   267,   710,   297,
1612       -1,   580,    -1,   710,   420,    -1,   710,   418,    -1,   710,
1613      680,    -1,   710,   389,    -1,   710,   350,    -1,   710,   737,
1614       -1,   268,   766,   297,    -1,   269,   713,   714,   297,    -1,
1615      413,    -1,   584,    -1,   413,    -1,   584,    -1,   404,    -1,
1616      270,   766,   766,   766,   766,   766,   766,   297,    -1,   271,
1617      717,   297,    -1,   382,    -1,   717,   607,    -1,   717,   443,
1618       -1,   717,   350,    -1,   717,   737,    -1,   272,   719,   720,
1619      721,   722,   723,   297,    -1,    -1,   671,    -1,    -1,   672,
1620       -1,    -1,   380,    -1,    -1,   587,    -1,    -1,   589,    -1,
1621      273,   725,   725,   297,    -1,   517,    -1,   510,    -1,   518,
1622       -1,   274,   727,   297,    -1,    -1,   727,   344,    -1,   727,
1623      692,    -1,   727,   453,    -1,   275,   297,    -1,   327,    -1,
1624      468,    -1,   538,    -1,   576,    -1,   614,    -1,   696,    -1,
1625      276,   297,    -1,   277,   297,    -1,   278,   733,   297,    -1,
1626      428,    -1,   434,    -1,   733,   428,    -1,   733,   434,    -1,
1627      279,   735,   297,    -1,    17,    -1,    10,    -1,    16,    -1,
1628       48,    -1,    54,    -1,    56,    -1,    61,    -1,    33,    -1,
1629       22,    -1,    25,    -1,    19,    -1,    42,    -1,    14,    -1,
1630       15,    -1,    21,    -1,     7,    -1,   280,   297,    -1,   281,
1631      738,   297,    -1,   764,    -1,   738,   766,    -1,   738,   765,
1632       -1,   738,   764,    -1,   738,   445,    -1,   551,    -1,   312,
1633       -1,   552,    -1,   536,    -1,   282,   765,   297,    -1,   283,
1634      748,   752,   743,   297,    -1,   470,    -1,   743,   690,    -1,
1635      743,   355,    -1,   743,   350,    -1,   743,   650,    -1,   743,
1636      737,    -1,   284,   745,   297,    -1,    -1,   745,   750,    -1,
1637      745,   744,    -1,   285,   747,   297,    -1,    -1,   747,   640,
1638       -1,   747,   625,    -1,   747,   462,    -1,   747,   458,    -1,
1639      747,   563,    -1,   747,   555,    -1,   747,   350,    -1,   747,
1640      737,    -1,   551,    -1,   552,    -1,   286,   749,   751,   297,
1641       -1,    -1,   339,    -1,   287,   753,   297,    -1,    32,    -1,
1642       41,    -1,    39,    -1,    51,    -1,    53,    -1,     8,    -1,
1643       28,    -1,    18,    -1,    24,    -1,    52,    -1,   288,   332,
1644      297,    -1,   289,   542,   297,    -1,   290,   516,   670,   528,
1645      297,    -1,   291,   517,   297,    -1,   292,   759,   297,    -1,
1646       -1,   759,   644,    -1,   759,   637,    -1,   759,   481,    -1,
1647      293,   761,   297,    -1,   726,    -1,   761,   305,    -1,   761,
1648      440,    -1,   761,   530,    -1,   761,   504,    -1,   761,   350,
1649       -1,   761,   737,    -1,   294,   763,   297,    -1,   715,    -1,
1650      763,   320,    -1,   763,   646,    -1,   763,   368,    -1,   763,
1651      650,    -1,   763,   350,    -1,   763,   737,    -1,     3,    -1,
1652        6,    -1,     4,    -1,     5,    -1
1653 };
1654 
1655 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1656 static const yytype_uint16 yyrline[] =
1657 {
1658        0,   505,   505,   508,   511,   512,   513,   514,   515,   516,
1659      517,   520,   523,   526,   530,   533,   534,   537,   540,   541,
1660      542,   543,   544,   545,   548,   551,   552,   555,   558,   559,
1661      560,   561,   562,   565,   568,   571,   572,   575,   578,   581,
1662      582,   583,   584,   585,   588,   591,   594,   597,   600,   603,
1663      606,   607,   608,   611,   614,   615,   618,   619,   622,   625,
1664      626,   627,   628,   631,   634,   635,   638,   641,   642,   645,
1665      648,   651,   654,   657,   658,   659,   660,   661,   662,   663,
1666      666,   669,   672,   673,   676,   679,   682,   683,   684,   687,
1667      690,   691,   692,   695,   696,   697,   700,   703,   704,   707,
1668      710,   713,   714,   717,   720,   721,   722,   723,   724,   725,
1669      726,   727,   730,   733,   736,   737,   738,   739,   740,   741,
1670      742,   743,   744,   745,   746,   747,   748,   749,   750,   751,
1671      752,   753,   756,   759,   760,   763,   766,   767,   768,   771,
1672      774,   775,   778,   781,   784,   785,   786,   789,   792,   793,
1673      796,   799,   800,   803,   806,   807,   810,   813,   814,   817,
1674      820,   821,   824,   827,   828,   831,   834,   835,   838,   841,
1675      842,   845,   848,   849,   850,   853,   856,   857,   858,   859,
1676      860,   863,   866,   867,   870,   873,   876,   877,   878,   879,
1677      880,   881,   882,   883,   884,   885,   886,   887,   888,   889,
1678      890,   893,   896,   897,   898,   899,   902,   905,   906,   907,
1679      910,   913,   914,   917,   918,   921,   922,   925,   926,   929,
1680      932,   933,   936,   939,   940,   943,   946,   950,   951,   952,
1681      953,   956,   959,   960,   961,   964,   968,   969,   970,   973,
1682      974,   975,   976,   979,   980,   981,   984,   987,   988,   989,
1683      990,   991,   992,   993,   996,   999,  1002,  1003,  1004,  1005,
1684     1006,  1009,  1012,  1015,  1018,  1019,  1020,  1021,  1022,  1023,
1685     1024,  1025,  1026,  1027,  1028,  1029,  1030,  1031,  1034,  1037,
1686     1040,  1043,  1044,  1045,  1048,  1051,  1052,  1053,  1054,  1055,
1687     1056,  1057,  1058,  1059,  1060,  1061,  1062,  1063,  1066,  1069,
1688     1070,  1073,  1076,  1077,  1078,  1079,  1080,  1081,  1082,  1083,
1689     1084,  1085,  1086,  1089,  1092,  1093,  1094,  1095,  1098,  1099,
1690     1100,  1101,  1102,  1105,  1108,  1109,  1110,  1111,  1114,  1117,
1691     1118,  1119,  1120,  1123,  1126,  1129,  1130,  1133,  1134,  1135,
1692     1136,  1139,  1142,  1143,  1146,  1149,  1150,  1151,  1152,  1153,
1693     1156,  1159,  1162,  1165,  1168,  1171,  1172,  1175,  1178,  1181,
1694     1182,  1183,  1184,  1185,  1186,  1187,  1188,  1189,  1190,  1193,
1695     1196,  1197,  1198,  1201,  1204,  1205,  1206,  1207,  1208,  1211,
1696     1214,  1215,  1218,  1221,  1222,  1223,  1224,  1225,  1228,  1229,
1697     1232,  1233,  1236,  1239,  1240,  1243,  1246,  1247,  1248,  1249,
1698     1252,  1255,  1256,  1257,  1258,  1259,  1260,  1261,  1262,  1263,
1699     1264,  1265,  1266,  1267,  1268,  1269,  1270,  1271,  1274,  1278,
1700     1279,  1280,  1281,  1284,  1287,  1288,  1289,  1290,  1293,  1296,
1701     1297,  1298,  1299,  1302,  1305,  1306,  1309,  1312,  1315,  1316,
1702     1317,  1318,  1321,  1324,  1325,  1326,  1327,  1328,  1329,  1330,
1703     1331,  1332,  1335,  1338,  1339,  1342,  1345,  1348,  1349,  1352,
1704     1355,  1358,  1361,  1364,  1367,  1370,  1371,  1372,  1373,  1374,
1705     1377,  1380,  1383,  1384,  1387,  1390,  1391,  1392,  1395,  1398,
1706     1399,  1402,  1405,  1406,  1409,  1410,  1411,  1414,  1415,  1416,
1707     1419,  1422,  1423,  1424,  1425,  1428,  1431,  1432,  1433,  1434,
1708     1437,  1440,  1441,  1444,  1447,  1448,  1451,  1454,  1457,  1460,
1709     1461,  1462,  1465,  1468,  1469,  1470,  1471,  1474,  1477,  1478,
1710     1479,  1480,  1483,  1486,  1487,  1490,  1493,  1494,  1495,  1496,
1711     1497,  1498,  1499,  1500,  1501,  1502,  1503,  1504,  1505,  1506,
1712     1507,  1510,  1513,  1514,  1515,  1516,  1517,  1520,  1523,  1524,
1713     1527,  1528,  1529,  1532,  1535,  1536,  1537,  1540,  1541,  1542,
1714     1545,  1548,  1549,  1552,  1555,  1556,  1557,  1558,  1561,  1564,
1715     1565,  1568,  1569,  1572,  1575,  1576,  1577,  1580,  1583,  1584,
1716     1587,  1590,  1591,  1592,  1593,  1594,  1597,  1600,  1601,  1604,
1717     1605,  1606,  1609,  1610,  1613,  1616,  1617,  1618,  1619,  1620,
1718     1621,  1622,  1623,  1624,  1625,  1628,  1631,  1632,  1633,  1634,
1719     1635,  1638,  1641,  1642,  1643,  1644,  1645,  1646,  1649,  1652,
1720     1653,  1654,  1657,  1660,  1661,  1662,  1665,  1668,  1669,  1670,
1721     1671,  1672,  1675,  1676,  1680,  1681,  1684,  1687,  1688,  1689,
1722     1690,  1693,  1696,  1699,  1700,  1701,  1704,  1707,  1708,  1709,
1723     1712,  1715,  1716,  1717,  1718,  1721,  1724,  1725,  1726,  1727,
1724     1730,  1733,  1734,  1737,  1740,  1741,  1742,  1743,  1746,  1749,
1725     1750,  1751,  1752,  1753,  1756,  1759,  1762,  1763,  1766,  1769,
1726     1770,  1771,  1772,  1773,  1774,  1775,  1776,  1779,  1782,  1786,
1727     1787,  1788,  1789,  1792,  1796,  1797,  1798,  1799,  1802,  1805,
1728     1806,  1809,  1812,  1815,  1816,  1817,  1818,  1819,  1820,  1821,
1729     1822,  1823,  1824,  1827,  1830,  1833,  1834,  1837,  1840,  1841,
1730     1844,  1847,  1850,  1851,  1854,  1857,  1858,  1861,  1864,  1867,
1731     1868,  1869,  1870,  1873,  1876,  1877,  1880,  1883,  1884,  1885,
1732     1886,  1889,  1892,  1893,  1896,  1899,  1900,  1903,  1906,  1909,
1733     1910,  1913,  1916,  1917,  1918,  1919,  1920,  1921,  1922,  1923,
1734     1924,  1925,  1926,  1927,  1928,  1931,  1934,  1935,  1936,  1937,
1735     1938,  1939,  1940,  1941,  1942,  1943,  1946,  1949,  1950,  1951,
1736     1952,  1955,  1958,  1959,  1960,  1961,  1964,  1967,  1968,  1969,
1737     1972,  1975,  1976,  1977,  1978,  1979,  1980,  1981,  1982,  1983,
1738     1984,  1985,  1988,  1991,  1992,  1993,  1994,  1995,  1996,  1997,
1739     1998,  1999,  2000,  2001,  2002,  2003,  2006,  2009,  2010,  2011,
1740     2014,  2017,  2020,  2021,  2022,  2023,  2024,  2027,  2028,  2031,
1741     2032,  2035,  2050,  2051,  2052,  2053,  2056,  2059,  2060,  2063,
1742     2066,  2067,  2070,  2073,  2074,  2075,  2076,  2077,  2080,  2083,
1743     2086,  2089,  2090,  2091,  2092,  2093,  2094,  2095,  2096,  2097,
1744     2098,  2099,  2100,  2103,  2104,  2105,  2106,  2107,  2108,  2111,
1745     2114,  2115,  2116,  2119,  2122,  2123,  2126,  2129,  2130,  2131,
1746     2132,  2135,  2139,  2140,  2143,  2144,  2147,  2150,  2151,  2154,
1747     2157,  2160,  2161,  2164,  2167,  2170,  2173,  2174,  2175,  2176,
1748     2179,  2182,  2183,  2186,  2189,  2192,  2193,  2194,  2195,  2196,
1749     2197,  2200,  2203,  2204,  2205,  2206,  2209,  2212,  2213,  2216,
1750     2219,  2220,  2223,  2226,  2227,  2230,  2233,  2234,  2237,  2240,
1751     2241,  2242,  2243,  2246,  2249,  2250,  2251,  2254,  2255,  2256,
1752     2259,  2262,  2265,  2266,  2267,  2268,  2271,  2272,  2275,  2278,
1753     2281,  2282,  2283,  2284,  2285,  2286,  2287,  2288,  2289,  2290,
1754     2291,  2292,  2293,  2294,  2297,  2300,  2301,  2304,  2307,  2308,
1755     2309,  2312,  2315,  2316,  2317,  2318,  2321,  2322,  2323,  2326,
1756     2329,  2330,  2331,  2332,  2333,  2334,  2335,  2338,  2341,  2344,
1757     2345,  2348,  2349,  2350,  2353,  2357,  2360,  2361,  2362,  2363,
1758     2364,  2367,  2371,  2372,  2375,  2376,  2379,  2380,  2383,  2384,
1759     2387,  2388,  2391,  2394,  2395,  2396,  2399,  2402,  2403,  2404,
1760     2405,  2408,  2411,  2412,  2413,  2414,  2415,  2416,  2419,  2422,
1761     2425,  2428,  2429,  2430,  2431,  2434,  2437,  2438,  2439,  2440,
1762     2441,  2442,  2443,  2444,  2445,  2446,  2447,  2448,  2449,  2450,
1763     2451,  2452,  2455,  2458,  2461,  2462,  2463,  2464,  2465,  2468,
1764     2469,  2472,  2473,  2476,  2479,  2482,  2483,  2484,  2485,  2486,
1765     2487,  2490,  2493,  2494,  2495,  2498,  2501,  2502,  2503,  2504,
1766     2505,  2506,  2507,  2508,  2509,  2512,  2515,  2518,  2521,  2522,
1767     2525,  2528,  2529,  2530,  2531,  2532,  2533,  2534,  2535,  2536,
1768     2537,  2540,  2543,  2546,  2549,  2552,  2555,  2556,  2557,  2558,
1769     2561,  2564,  2565,  2566,  2567,  2568,  2569,  2570,  2573,  2576,
1770     2577,  2578,  2579,  2580,  2581,  2582,  2585,  2588,  2591,  2594
1771 };
1772 #endif
1773 
1774 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1775 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1776    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1777 static const char *const yytname[] =
1778 {
1779   "$end", "error", "$undefined", "EDIF_TOK_IDENT", "EDIF_TOK_INT",
1780   "EDIF_TOK_KEYWORD", "EDIF_TOK_STR", "EDIF_TOK_ANGLE",
1781   "EDIF_TOK_BEHAVIOR", "EDIF_TOK_CALCULATED", "EDIF_TOK_CAPACITANCE",
1782   "EDIF_TOK_CENTERCENTER", "EDIF_TOK_CENTERLEFT", "EDIF_TOK_CENTERRIGHT",
1783   "EDIF_TOK_CHARGE", "EDIF_TOK_CONDUCTANCE", "EDIF_TOK_CURRENT",
1784   "EDIF_TOK_DISTANCE", "EDIF_TOK_DOCUMENT", "EDIF_TOK_ENERGY",
1785   "EDIF_TOK_EXTEND", "EDIF_TOK_FLUX", "EDIF_TOK_FREQUENCY",
1786   "EDIF_TOK_GENERIC", "EDIF_TOK_GRAPHIC", "EDIF_TOK_INDUCTANCE",
1787   "EDIF_TOK_INOUT", "EDIF_TOK_INPUT", "EDIF_TOK_LOGICMODEL",
1788   "EDIF_TOK_LOWERCENTER", "EDIF_TOK_LOWERLEFT", "EDIF_TOK_LOWERRIGHT",
1789   "EDIF_TOK_MASKLAYOUT", "EDIF_TOK_MASS", "EDIF_TOK_MEASURED",
1790   "EDIF_TOK_MX", "EDIF_TOK_MXR90", "EDIF_TOK_MY", "EDIF_TOK_MYR90",
1791   "EDIF_TOK_NETLIST", "EDIF_TOK_OUTPUT", "EDIF_TOK_PCBLAYOUT",
1792   "EDIF_TOK_POWER", "EDIF_TOK_R0", "EDIF_TOK_R180", "EDIF_TOK_R270",
1793   "EDIF_TOK_R90", "EDIF_TOK_REQUIRED", "EDIF_TOK_RESISTANCE",
1794   "EDIF_TOK_RIPPER", "EDIF_TOK_ROUND", "EDIF_TOK_SCHEMATIC",
1795   "EDIF_TOK_STRANGER", "EDIF_TOK_SYMBOLIC", "EDIF_TOK_TEMPERATURE",
1796   "EDIF_TOK_TIE", "EDIF_TOK_TIME", "EDIF_TOK_TRUNCATE",
1797   "EDIF_TOK_UPPERCENTER", "EDIF_TOK_UPPERLEFT", "EDIF_TOK_UPPERRIGHT",
1798   "EDIF_TOK_VOLTAGE", "EDIF_TOK_ACLOAD", "EDIF_TOK_AFTER",
1799   "EDIF_TOK_ANNOTATE", "EDIF_TOK_APPLY", "EDIF_TOK_ARC", "EDIF_TOK_ARRAY",
1800   "EDIF_TOK_ARRAYMACRO", "EDIF_TOK_ARRAYRELATEDINFO", "EDIF_TOK_ARRAYSITE",
1801   "EDIF_TOK_ATLEAST", "EDIF_TOK_ATMOST", "EDIF_TOK_AUTHOR",
1802   "EDIF_TOK_BASEARRAY", "EDIF_TOK_BECOMES", "EDIF_TOK_BETWEEN",
1803   "EDIF_TOK_BOOLEAN", "EDIF_TOK_BOOLEANDISPLAY", "EDIF_TOK_BOOLEANMAP",
1804   "EDIF_TOK_BORDERPATTERN", "EDIF_TOK_BORDERWIDTH", "EDIF_TOK_BOUNDINGBOX",
1805   "EDIF_TOK_CELL", "EDIF_TOK_CELLREF", "EDIF_TOK_CELLTYPE",
1806   "EDIF_TOK_CHANGE", "EDIF_TOK_CIRCLE", "EDIF_TOK_COLOR",
1807   "EDIF_TOK_COMMENT", "EDIF_TOK_COMMENTGRAPHICS", "EDIF_TOK_COMPOUND",
1808   "EDIF_TOK_CONNECTLOCATION", "EDIF_TOK_CONTENTS", "EDIF_TOK_CORNERTYPE",
1809   "EDIF_TOK_CRITICALITY", "EDIF_TOK_CURRENTMAP", "EDIF_TOK_CURVE",
1810   "EDIF_TOK_CYCLE", "EDIF_TOK_DATAORIGIN", "EDIF_TOK_DCFANINLOAD",
1811   "EDIF_TOK_DCFANOUTLOAD", "EDIF_TOK_DCMAXFANIN", "EDIF_TOK_DCMAXFANOUT",
1812   "EDIF_TOK_DELAY", "EDIF_TOK_DELTA", "EDIF_TOK_DERIVATION",
1813   "EDIF_TOK_DESIGN", "EDIF_TOK_DESIGNATOR", "EDIF_TOK_DIFFERENCE",
1814   "EDIF_TOK_DIRECTION", "EDIF_TOK_DISPLAY", "EDIF_TOK_DOMINATES",
1815   "EDIF_TOK_DOT", "EDIF_TOK_DURATION", "EDIF_TOK_E", "EDIF_TOK_EDIF",
1816   "EDIF_TOK_EDIFLEVEL", "EDIF_TOK_EDIFVERSION",
1817   "EDIF_TOK_ENCLOSUREDISTANCE", "EDIF_TOK_ENDTYPE", "EDIF_TOK_ENTRY",
1818   "EDIF_TOK_EVENT", "EDIF_TOK_EXACTLY", "EDIF_TOK_EXTERNAL",
1819   "EDIF_TOK_FABRICATE", "EDIF_TOK_FALSE", "EDIF_TOK_FIGURE",
1820   "EDIF_TOK_FIGUREAREA", "EDIF_TOK_FIGUREGROUP",
1821   "EDIF_TOK_FIGUREGROUPOBJECT", "EDIF_TOK_FIGUREGROUPOVERRIDE",
1822   "EDIF_TOK_FIGUREGROUPREF", "EDIF_TOK_FIGUREPERIMETER",
1823   "EDIF_TOK_FIGUREWIDTH", "EDIF_TOK_FILLPATTERN", "EDIF_TOK_FOLLOW",
1824   "EDIF_TOK_FORBIDDENEVENT", "EDIF_TOK_GLOBALPORTREF",
1825   "EDIF_TOK_GREATERTHAN", "EDIF_TOK_GRIDMAP", "EDIF_TOK_IGNORE",
1826   "EDIF_TOK_INCLUDEFIGUREGROUP", "EDIF_TOK_INITIAL", "EDIF_TOK_INSTANCE",
1827   "EDIF_TOK_INSTANCEBACKANNOTATE", "EDIF_TOK_INSTANCEGROUP",
1828   "EDIF_TOK_INSTANCEMAP", "EDIF_TOK_INSTANCEREF", "EDIF_TOK_INTEGER",
1829   "EDIF_TOK_INTEGERDISPLAY", "EDIF_TOK_INTERFACE",
1830   "EDIF_TOK_INTERFIGUREGROUPSPACING", "EDIF_TOK_INTERSECTION",
1831   "EDIF_TOK_INTRAFIGUREGROUPSPACING", "EDIF_TOK_INVERSE",
1832   "EDIF_TOK_ISOLATED", "EDIF_TOK_JOINED", "EDIF_TOK_JUSTIFY",
1833   "EDIF_TOK_KEYWORDDISPLAY", "EDIF_TOK_KEYWORDLEVEL",
1834   "EDIF_TOK_KEYWORDMAP", "EDIF_TOK_LESSTHAN", "EDIF_TOK_LIBRARY",
1835   "EDIF_TOK_LIBRARYREF", "EDIF_TOK_LISTOFNETS", "EDIF_TOK_LISTOFPORTS",
1836   "EDIF_TOK_LOADDELAY", "EDIF_TOK_LOGICASSIGN", "EDIF_TOK_LOGICINPUT",
1837   "EDIF_TOK_LOGICLIST", "EDIF_TOK_LOGICMAPINPUT",
1838   "EDIF_TOK_LOGICMAPOUTPUT", "EDIF_TOK_LOGICONEOF", "EDIF_TOK_LOGICOUTPUT",
1839   "EDIF_TOK_LOGICPORT", "EDIF_TOK_LOGICREF", "EDIF_TOK_LOGICVALUE",
1840   "EDIF_TOK_LOGICWAVEFORM", "EDIF_TOK_MAINTAIN", "EDIF_TOK_MATCH",
1841   "EDIF_TOK_MEMBER", "EDIF_TOK_MINOMAX", "EDIF_TOK_MINOMAXDISPLAY",
1842   "EDIF_TOK_MNM", "EDIF_TOK_MULTIPLEVALUESET", "EDIF_TOK_MUSTJOIN",
1843   "EDIF_TOK_NAME", "EDIF_TOK_NET", "EDIF_TOK_NETBACKANNOTATE",
1844   "EDIF_TOK_NETBUNDLE", "EDIF_TOK_NETDELAY", "EDIF_TOK_NETGROUP",
1845   "EDIF_TOK_NETMAP", "EDIF_TOK_NETREF", "EDIF_TOK_NOCHANGE",
1846   "EDIF_TOK_NONPERMUTABLE", "EDIF_TOK_NOTALLOWED", "EDIF_TOK_NOTCHSPACING",
1847   "EDIF_TOK_NUMBER", "EDIF_TOK_NUMBERDEFINITION", "EDIF_TOK_NUMBERDISPLAY",
1848   "EDIF_TOK_OFFPAGECONNECTOR", "EDIF_TOK_OFFSETEVENT",
1849   "EDIF_TOK_OPENSHAPE", "EDIF_TOK_ORIENTATION", "EDIF_TOK_ORIGIN",
1850   "EDIF_TOK_OVERHANGDISTANCE", "EDIF_TOK_OVERLAPDISTANCE",
1851   "EDIF_TOK_OVERSIZE", "EDIF_TOK_OWNER", "EDIF_TOK_PAGE",
1852   "EDIF_TOK_PAGESIZE", "EDIF_TOK_PARAMETER", "EDIF_TOK_PARAMETERASSIGN",
1853   "EDIF_TOK_PARAMETERDISPLAY", "EDIF_TOK_PATH", "EDIF_TOK_PATHDELAY",
1854   "EDIF_TOK_PATHWIDTH", "EDIF_TOK_PERMUTABLE",
1855   "EDIF_TOK_PHYSICALDESIGNRULE", "EDIF_TOK_PLUG", "EDIF_TOK_POINT",
1856   "EDIF_TOK_POINTDISPLAY", "EDIF_TOK_POINTLIST", "EDIF_TOK_POLYGON",
1857   "EDIF_TOK_PORT", "EDIF_TOK_PORTBACKANNOTATE", "EDIF_TOK_PORTBUNDLE",
1858   "EDIF_TOK_PORTDELAY", "EDIF_TOK_PORTGROUP",
1859   "EDIF_TOK_PORTIMPLEMENTATION", "EDIF_TOK_PORTINSTANCE",
1860   "EDIF_TOK_PORTLIST", "EDIF_TOK_PORTLISTALIAS", "EDIF_TOK_PORTMAP",
1861   "EDIF_TOK_PORTREF", "EDIF_TOK_PROGRAM", "EDIF_TOK_PROPERTY",
1862   "EDIF_TOK_PROPERTYDISPLAY", "EDIF_TOK_PROTECTIONFRAME", "EDIF_TOK_PT",
1863   "EDIF_TOK_RANGEVECTOR", "EDIF_TOK_RECTANGLE", "EDIF_TOK_RECTANGLESIZE",
1864   "EDIF_TOK_RENAME", "EDIF_TOK_RESOLVES", "EDIF_TOK_SCALE",
1865   "EDIF_TOK_SCALEX", "EDIF_TOK_SCALEY", "EDIF_TOK_SECTION",
1866   "EDIF_TOK_SHAPE", "EDIF_TOK_SIMULATE", "EDIF_TOK_SIMULATIONINFO",
1867   "EDIF_TOK_SINGLEVALUESET", "EDIF_TOK_SITE", "EDIF_TOK_SOCKET",
1868   "EDIF_TOK_SOCKETSET", "EDIF_TOK_STATUS", "EDIF_TOK_STEADY",
1869   "EDIF_TOK_STRING", "EDIF_TOK_STRINGDISPLAY", "EDIF_TOK_STRONG",
1870   "EDIF_TOK_SYMBOL", "EDIF_TOK_SYMMETRY", "EDIF_TOK_TABLE",
1871   "EDIF_TOK_TABLEDEFAULT", "EDIF_TOK_TECHNOLOGY", "EDIF_TOK_TEXTHEIGHT",
1872   "EDIF_TOK_TIMEINTERVAL", "EDIF_TOK_TIMESTAMP", "EDIF_TOK_TIMING",
1873   "EDIF_TOK_TRANSFORM", "EDIF_TOK_TRANSITION", "EDIF_TOK_TRIGGER",
1874   "EDIF_TOK_TRUE", "EDIF_TOK_UNCONSTRAINED", "EDIF_TOK_UNDEFINED",
1875   "EDIF_TOK_UNION", "EDIF_TOK_UNIT", "EDIF_TOK_UNUSED",
1876   "EDIF_TOK_USERDATA", "EDIF_TOK_VERSION", "EDIF_TOK_VIEW",
1877   "EDIF_TOK_VIEWLIST", "EDIF_TOK_VIEWMAP", "EDIF_TOK_VIEWREF",
1878   "EDIF_TOK_VIEWTYPE", "EDIF_TOK_VISIBLE", "EDIF_TOK_VOLTAGEMAP",
1879   "EDIF_TOK_WAVEVALUE", "EDIF_TOK_WEAK", "EDIF_TOK_WEAKJOINED",
1880   "EDIF_TOK_WHEN", "EDIF_TOK_WRITTEN", "')'", "$accept", "PopC", "Edif",
1881   "_Edif", "EdifFileName", "EdifLevel", "EdifVersion", "AcLoad", "_AcLoad",
1882   "After", "_After", "Annotate", "_Annotate", "Apply", "_Apply", "Arc",
1883   "Array", "_Array", "ArrayMacro", "ArrayRelInfo", "_ArrayRelInfo",
1884   "ArraySite", "AtLeast", "AtMost", "Author", "BaseArray", "Becomes",
1885   "_Becomes", "Between", "__Between", "_Between", "Boolean", "_Boolean",
1886   "BooleanDisp", "_BooleanDisp", "BooleanMap", "BooleanValue", "BorderPat",
1887   "BorderWidth", "BoundBox", "Cell", "_Cell", "CellNameDef", "CellRef",
1888   "_CellRef", "CellNameRef", "CellType", "_CellType", "Change", "__Change",
1889   "_Change", "Circle", "_Circle", "Color", "Comment", "_Comment",
1890   "CommGraph", "_CommGraph", "Compound", "Contents", "_Contents",
1891   "ConnectLoc", "_ConnectLoc", "CornerType", "_CornerType", "Criticality",
1892   "_Criticality", "CurrentMap", "Curve", "_Curve", "Cycle", "_Cycle",
1893   "DataOrigin", "_DataOrigin", "DcFanInLoad", "_DcFanInLoad",
1894   "DcFanOutLoad", "_DcFanOutLoad", "DcMaxFanIn", "_DcMaxFanIn",
1895   "DcMaxFanOut", "_DcMaxFanOut", "Delay", "_Delay", "Delta", "_Delta",
1896   "Derivation", "_Derivation", "Design", "_Design", "Designator",
1897   "_Designator", "DesignNameDef", "DesignRule", "_DesignRule",
1898   "Difference", "_Difference", "Direction", "_Direction", "Display",
1899   "_Display", "_DisplayJust", "_DisplayOrien", "_DisplayOrg", "Dominates",
1900   "_Dominates", "Dot", "_Dot", "Duration", "EncloseDist", "_EncloseDist",
1901   "EndType", "_EndType", "Entry", "___Entry", "__Entry", "_Entry", "Event",
1902   "_Event", "Exactly", "External", "_External", "Fabricate", "False",
1903   "FigGrp", "_FigGrp", "FigGrpNameDef", "FigGrpNameRef", "FigGrpObj",
1904   "_FigGrpObj", "FigGrpOver", "_FigGrpOver", "FigGrpRef", "_FigGrpRef",
1905   "Figure", "_Figure", "FigureArea", "_FigureArea", "FigureOp",
1906   "FigurePerim", "_FigurePerim", "FigureWidth", "_FigureWidth",
1907   "FillPattern", "Follow", "__Follow", "_Follow", "Forbidden",
1908   "_Forbidden", "Form", "_Form", "GlobPortRef", "GreaterThan", "GridMap",
1909   "Ignore", "IncFigGrp", "_IncFigGrp", "Initial", "Instance", "_Instance",
1910   "InstanceRef", "_InstanceRef", "InstBackAn", "_InstBackAn", "InstGroup",
1911   "_InstGroup", "InstMap", "_InstMap", "InstNameDef", "InstNameRef",
1912   "IntDisplay", "_IntDisplay", "Integer", "_Integer", "Interface",
1913   "_Interface", "InterFigGrp", "_InterFigGrp", "Intersection",
1914   "_Intersection", "IntraFigGrp", "_IntraFigGrp", "Inverse", "_Inverse",
1915   "Isolated", "Joined", "_Joined", "Justify", "_Justify", "KeywordDisp",
1916   "_KeywordDisp", "KeywordLevel", "KeywordMap", "_KeywordMap",
1917   "KeywordName", "LayerNameDef", "LessThan", "LibNameDef", "LibNameRef",
1918   "Library", "_Library", "LibraryRef", "ListOfNets", "_ListOfNets",
1919   "ListOfPorts", "_ListOfPorts", "LoadDelay", "_LoadDelay", "LogicAssn",
1920   "___LogicAssn", "__LogicAssn", "_LogicAssn", "LogicIn", "_LogicIn",
1921   "LogicList", "_LogicList", "LogicMapIn", "_LogicMapIn", "LogicMapOut",
1922   "_LogicMapOut", "LogicNameDef", "LogicNameRef", "LogicOneOf",
1923   "_LogicOneOf", "LogicOut", "_LogicOut", "LogicPort", "_LogicPort",
1924   "LogicRef", "_LogicRef", "LogicValue", "_LogicValue", "LogicWave",
1925   "_LogicWave", "Maintain", "__Maintain", "_Maintain", "Match", "__Match",
1926   "_Match", "Member", "_Member", "MiNoMa", "_MiNoMa", "MiNoMaDisp",
1927   "_MiNoMaDisp", "MiNoMaValue", "Mnm", "_Mnm", "MultValSet", "_MultValSet",
1928   "MustJoin", "_MustJoin", "Name", "_Name", "NameDef", "NameRef", "Net",
1929   "_Net", "NetBackAn", "_NetBackAn", "NetBundle", "_NetBundle", "NetDelay",
1930   "_NetDelay", "NetGroup", "_NetGroup", "NetMap", "_NetMap", "NetNameDef",
1931   "NetNameRef", "NetRef", "_NetRef", "NoChange", "NonPermut", "_NonPermut",
1932   "NotAllowed", "_NotAllowed", "NotchSpace", "_NotchSpace", "Number",
1933   "_Number", "NumbDisplay", "_NumbDisplay", "NumberDefn", "_NumberDefn",
1934   "OffPageConn", "_OffPageConn", "OffsetEvent", "OpenShape", "_OpenShape",
1935   "Orientation", "_Orientation", "Origin", "OverhngDist", "_OverhngDist",
1936   "OverlapDist", "_OverlapDist", "Oversize", "_Oversize", "Owner", "Page",
1937   "_Page", "PageSize", "ParamDisp", "_ParamDisp", "Parameter",
1938   "_Parameter", "ParamAssign", "Path", "_Path", "PathDelay", "_PathDelay",
1939   "PathWidth", "Permutable", "_Permutable", "Plug", "_Plug", "Point",
1940   "_Point", "PointDisp", "_PointDisp", "PointList", "_PointList",
1941   "PointValue", "Polygon", "_Polygon", "Port", "_Port", "PortBackAn",
1942   "_PortBackAn", "PortBundle", "_PortBundle", "PortDelay", "_PortDelay",
1943   "PortGroup", "_PortGroup", "PortImpl", "_PortImpl", "PortInst",
1944   "_PortInst", "PortList", "_PortList", "PortListAls", "PortMap",
1945   "_PortMap", "PortNameDef", "PortNameRef", "PortRef", "_PortRef",
1946   "Program", "_Program", "PropDisplay", "_PropDisplay", "Property",
1947   "_Property", "PropNameDef", "PropNameRef", "ProtectFrame",
1948   "_ProtectFrame", "Range", "RangeVector", "_RangeVector", "Rectangle",
1949   "_Rectangle", "RectSize", "_RectSize", "Rename", "__Rename", "_Rename",
1950   "Resolves", "_Resolves", "RuleNameDef", "Scale", "ScaledInt", "ScaleX",
1951   "ScaleY", "Section", "_Section", "Shape", "_Shape", "SimNameDef",
1952   "Simulate", "_Simulate", "SimulInfo", "_SimulInfo", "SingleValSet",
1953   "_SingleValSet", "Site", "_Site", "Socket", "_Socket", "SocketSet",
1954   "_SocketSet", "Status", "_Status", "Steady", "__Steady", "_Steady",
1955   "StrDisplay", "String", "_String", "_StrDisplay", "Strong", "Symbol",
1956   "_Symbol", "Symmetry", "_Symmetry", "Table", "_Table", "TableDeflt",
1957   "__TableDeflt", "_TableDeflt", "Technology", "_Technology", "TextHeight",
1958   "TimeIntval", "__TimeIntval", "_TimeIntval", "TimeStamp", "Timing",
1959   "_Timing", "Transform", "_TransX", "_TransY", "_TransDelta",
1960   "_TransOrien", "_TransOrg", "Transition", "_Transition", "Trigger",
1961   "_Trigger", "True", "TypedValue", "Unconstrained", "Undefined", "Union",
1962   "_Union", "Unit", "_Unit", "Unused", "UserData", "_UserData",
1963   "ValueNameDef", "ValueNameRef", "Version", "View", "_View", "ViewList",
1964   "_ViewList", "ViewMap", "_ViewMap", "ViewNameDef", "ViewNameRef",
1965   "ViewRef", "_ViewRef", "ViewType", "_ViewType", "Visible", "VoltageMap",
1966   "WaveValue", "Weak", "WeakJoined", "_WeakJoined", "When", "_When",
1967   "Written", "_Written", "Ident", "Str", "Int", "Keyword", 0
1968 };
1969 #endif
1970 
1971 # ifdef YYPRINT
1972 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1973    token YYLEX-NUM.  */
1974 static const yytype_uint16 yytoknum[] =
1975 {
1976        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1977      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1978      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1979      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1980      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1981      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1982      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
1983      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
1984      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1985      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
1986      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
1987      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1988      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
1989      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
1990      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
1991      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1992      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
1993      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
1994      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1995      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1996      455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1997      465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1998      475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1999      485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
2000      495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
2001      505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
2002      515,   516,   517,   518,   519,   520,   521,   522,   523,   524,
2003      525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
2004      535,   536,   537,   538,   539,   540,   541,   542,   543,   544,
2005      545,   546,   547,   548,   549,    41
2006 };
2007 # endif
2008 
2009 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2010 static const yytype_uint16 yyr1[] =
2011 {
2012        0,   296,   297,   298,   299,   299,   299,   299,   299,   299,
2013      299,   300,   301,   302,   303,   304,   304,   305,   306,   306,
2014      306,   306,   306,   306,   307,   308,   308,   309,   310,   310,
2015      310,   310,   310,   311,   312,   313,   313,   314,   315,   316,
2016      316,   316,   316,   316,   317,   318,   319,   320,   321,   322,
2017      323,   323,   323,   324,   325,   325,   326,   326,   327,   328,
2018      328,   328,   328,   329,   330,   330,   331,   332,   332,   333,
2019      334,   335,   336,   337,   337,   337,   337,   337,   337,   337,
2020      338,   339,   340,   340,   341,   342,   343,   343,   343,   344,
2021      345,   345,   345,   346,   346,   346,   347,   348,   348,   349,
2022      350,   351,   351,   352,   353,   353,   353,   353,   353,   353,
2023      353,   353,   354,   355,   356,   356,   356,   356,   356,   356,
2024      356,   356,   356,   356,   356,   356,   356,   356,   356,   356,
2025      356,   356,   357,   358,   358,   359,   360,   360,   360,   361,
2026      362,   362,   363,   364,   365,   365,   365,   366,   367,   367,
2027      368,   369,   369,   370,   371,   371,   372,   373,   373,   374,
2028      375,   375,   376,   377,   377,   378,   379,   379,   380,   381,
2029      381,   382,   383,   383,   383,   384,   385,   385,   385,   385,
2030      385,   386,   387,   387,   388,   389,   390,   390,   390,   390,
2031      390,   390,   390,   390,   390,   390,   390,   390,   390,   390,
2032      390,   391,   392,   392,   392,   392,   393,   394,   394,   394,
2033      395,   396,   396,   397,   397,   398,   398,   399,   399,   400,
2034      401,   401,   402,   403,   403,   404,   405,   406,   406,   406,
2035      406,   407,   408,   408,   408,   409,   410,   410,   410,   411,
2036      411,   411,   411,   412,   412,   412,   413,   414,   414,   414,
2037      414,   414,   414,   414,   415,   416,   417,   417,   417,   417,
2038      417,   418,   419,   420,   421,   421,   421,   421,   421,   421,
2039      421,   421,   421,   421,   421,   421,   421,   421,   422,   423,
2040      424,   425,   425,   425,   426,   427,   427,   427,   427,   427,
2041      427,   427,   427,   427,   427,   427,   427,   427,   428,   429,
2042      429,   430,   431,   431,   431,   431,   431,   431,   431,   431,
2043      431,   431,   431,   432,   433,   433,   433,   433,   434,   434,
2044      434,   434,   434,   435,   436,   436,   436,   436,   437,   438,
2045      438,   438,   438,   439,   440,   441,   441,   442,   442,   442,
2046      442,   443,   444,   444,   445,   446,   446,   446,   446,   446,
2047      447,   448,   449,   450,   451,   452,   452,   453,   454,   455,
2048      455,   455,   455,   455,   455,   455,   455,   455,   455,   456,
2049      457,   457,   457,   458,   459,   459,   459,   459,   459,   460,
2050      461,   461,   462,   463,   463,   463,   463,   463,   464,   464,
2051      465,   465,   466,   467,   467,   468,   469,   469,   469,   469,
2052      470,   471,   471,   471,   471,   471,   471,   471,   471,   471,
2053      471,   471,   471,   471,   471,   471,   471,   471,   472,   473,
2054      473,   473,   473,   474,   475,   475,   475,   475,   476,   477,
2055      477,   477,   477,   478,   479,   479,   480,   481,   482,   482,
2056      482,   482,   483,   484,   484,   484,   484,   484,   484,   484,
2057      484,   484,   485,   486,   486,   487,   488,   489,   489,   490,
2058      491,   492,   493,   494,   495,   496,   496,   496,   496,   496,
2059      497,   498,   499,   499,   500,   501,   501,   501,   502,   503,
2060      503,   504,   505,   505,   506,   506,   506,   507,   507,   507,
2061      508,   509,   509,   509,   509,   510,   511,   511,   511,   511,
2062      512,   513,   513,   514,   515,   515,   516,   517,   518,   519,
2063      519,   519,   520,   521,   521,   521,   521,   522,   523,   523,
2064      523,   523,   524,   525,   525,   526,   527,   527,   527,   527,
2065      527,   527,   527,   527,   527,   527,   527,   527,   527,   527,
2066      527,   528,   529,   529,   529,   529,   529,   530,   531,   531,
2067      532,   532,   532,   533,   534,   534,   534,   535,   535,   535,
2068      536,   537,   537,   538,   539,   539,   539,   539,   540,   541,
2069      541,   542,   542,   543,   544,   544,   544,   545,   546,   546,
2070      547,   548,   548,   548,   548,   548,   549,   550,   550,   551,
2071      551,   551,   552,   552,   553,   554,   554,   554,   554,   554,
2072      554,   554,   554,   554,   554,   555,   556,   556,   556,   556,
2073      556,   557,   558,   558,   558,   558,   558,   558,   559,   560,
2074      560,   560,   561,   562,   562,   562,   563,   564,   564,   564,
2075      564,   564,   565,   565,   566,   566,   567,   568,   568,   568,
2076      568,   569,   570,   571,   571,   571,   572,   573,   573,   573,
2077      574,   575,   575,   575,   575,   576,   577,   577,   577,   577,
2078      578,   579,   579,   580,   581,   581,   581,   581,   582,   583,
2079      583,   583,   583,   583,   584,   585,   586,   586,   587,   588,
2080      588,   588,   588,   588,   588,   588,   588,   589,   590,   591,
2081      591,   591,   591,   592,   593,   593,   593,   593,   594,   595,
2082      595,   596,   597,   598,   598,   598,   598,   598,   598,   598,
2083      598,   598,   598,   599,   600,   601,   601,   602,   603,   603,
2084      604,   605,   606,   606,   607,   608,   608,   609,   610,   611,
2085      611,   611,   611,   612,   613,   613,   614,   615,   615,   615,
2086      615,   616,   617,   617,   618,   619,   619,   620,   621,   622,
2087      622,   623,   624,   624,   624,   624,   624,   624,   624,   624,
2088      624,   624,   624,   624,   624,   625,   626,   626,   626,   626,
2089      626,   626,   626,   626,   626,   626,   627,   628,   628,   628,
2090      628,   629,   630,   630,   630,   630,   631,   632,   632,   632,
2091      633,   634,   634,   634,   634,   634,   634,   634,   634,   634,
2092      634,   634,   635,   636,   636,   636,   636,   636,   636,   636,
2093      636,   636,   636,   636,   636,   636,   637,   638,   638,   638,
2094      639,   640,   641,   641,   641,   641,   641,   642,   642,   643,
2095      643,   644,   645,   645,   645,   645,   646,   647,   647,   648,
2096      649,   649,   650,   651,   651,   651,   651,   651,   652,   653,
2097      654,   655,   655,   655,   655,   655,   655,   655,   655,   655,
2098      655,   655,   655,   656,   656,   656,   656,   656,   656,   657,
2099      658,   658,   658,   659,   660,   660,   661,   662,   662,   662,
2100      662,   663,   664,   664,   665,   665,   666,   667,   667,   668,
2101      669,   670,   670,   671,   672,   673,   674,   674,   674,   674,
2102      675,   676,   676,   677,   678,   679,   679,   679,   679,   679,
2103      679,   680,   681,   681,   681,   681,   682,   683,   683,   684,
2104      685,   685,   686,   687,   687,   688,   689,   689,   690,   691,
2105      691,   691,   691,   692,   693,   693,   693,   694,   694,   694,
2106      695,   696,   697,   697,   697,   697,   698,   698,   699,   700,
2107      701,   701,   701,   701,   701,   701,   701,   701,   701,   701,
2108      701,   701,   701,   701,   702,   703,   703,   704,   705,   705,
2109      705,   706,   707,   707,   707,   707,   708,   708,   708,   709,
2110      710,   710,   710,   710,   710,   710,   710,   711,   712,   713,
2111      713,   714,   714,   714,   715,   716,   717,   717,   717,   717,
2112      717,   718,   719,   719,   720,   720,   721,   721,   722,   722,
2113      723,   723,   724,   725,   725,   725,   726,   727,   727,   727,
2114      727,   728,   729,   729,   729,   729,   729,   729,   730,   731,
2115      732,   733,   733,   733,   733,   734,   735,   735,   735,   735,
2116      735,   735,   735,   735,   735,   735,   735,   735,   735,   735,
2117      735,   735,   736,   737,   738,   738,   738,   738,   738,   739,
2118      739,   740,   740,   741,   742,   743,   743,   743,   743,   743,
2119      743,   744,   745,   745,   745,   746,   747,   747,   747,   747,
2120      747,   747,   747,   747,   747,   748,   749,   750,   751,   751,
2121      752,   753,   753,   753,   753,   753,   753,   753,   753,   753,
2122      753,   754,   755,   756,   757,   758,   759,   759,   759,   759,
2123      760,   761,   761,   761,   761,   761,   761,   761,   762,   763,
2124      763,   763,   763,   763,   763,   763,   764,   765,   766,   767
2125 };
2126 
2127 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
2128 static const yytype_uint8 yyr2[] =
2129 {
2130        0,     2,     1,     7,     0,     2,     2,     2,     2,     2,
2131        2,     1,     3,     5,     3,     1,     1,     3,     1,     2,
2132        2,     2,     2,     2,     3,     1,     1,     3,     1,     2,
2133        2,     2,     2,     5,     5,     0,     1,     3,     3,     1,
2134        1,     1,     2,     2,     3,     3,     3,     3,     2,     3,
2135        1,     1,     1,     4,     1,     1,     1,     1,     3,     0,
2136        2,     2,     2,     3,     1,     2,     3,     1,     1,     5,
2137        3,     3,     4,     1,     2,     2,     2,     2,     2,     2,
2138        1,     4,     0,     1,     1,     3,     1,     1,     1,     4,
2139        1,     1,     1,     0,     1,     1,     5,     0,     2,     5,
2140        3,     0,     2,     3,     0,     2,     2,     2,     2,     2,
2141        2,     2,     3,     3,     0,     2,     2,     2,     2,     2,
2142        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2143        2,     2,     3,     0,     1,     3,     1,     1,     1,     3,
2144        1,     1,     3,     3,     0,     2,     2,     4,     0,     1,
2145        4,     0,     1,     3,     1,     1,     3,     1,     1,     3,
2146        1,     1,     3,     1,     1,     3,     1,     1,     3,     0,
2147        2,     3,     1,     1,     1,     4,     1,     2,     2,     2,
2148        2,     3,     1,     1,     1,     3,     0,     2,     2,     2,
2149        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2150        2,     3,     1,     1,     2,     2,     3,     1,     1,     1,
2151        6,     1,     1,     0,     1,     0,     1,     0,     1,     3,
2152        0,     2,     3,     1,     2,     3,     6,     1,     1,     2,
2153        2,     3,     1,     1,     1,     5,     1,     1,     1,     1,
2154        1,     1,     1,     0,     1,     1,     3,     1,     1,     1,
2155        1,     1,     2,     2,     3,     5,     1,     2,     2,     2,
2156        2,     4,     2,     3,     1,     2,     2,     2,     2,     2,
2157        2,     2,     2,     2,     2,     2,     2,     2,     1,     1,
2158        3,     1,     1,     1,     3,     1,     2,     2,     2,     2,
2159        2,     2,     2,     2,     2,     2,     2,     2,     4,     0,
2160        1,     3,     1,     1,     2,     2,     2,     2,     2,     2,
2161        2,     2,     2,     5,     1,     1,     2,     2,     1,     1,
2162        1,     1,     1,     5,     1,     1,     2,     2,     5,     1,
2163        1,     2,     2,     5,     4,     1,     1,     1,     1,     2,
2164        2,     3,     1,     2,     3,     0,     2,     2,     2,     2,
2165        3,     3,     4,     2,     3,     1,     1,     2,     4,     1,
2166        1,     2,     2,     2,     2,     2,     2,     2,     2,     4,
2167        0,     1,     1,     3,     1,     2,     2,     2,     2,     3,
2168        0,     2,     3,     0,     2,     2,     2,     2,     1,     1,
2169        1,     1,     3,     1,     2,     3,     0,     2,     2,     2,
2170        3,     0,     2,     2,     2,     2,     2,     2,     2,     2,
2171        2,     2,     2,     2,     2,     2,     2,     2,     6,     1,
2172        1,     2,     2,     3,     1,     1,     2,     2,     5,     1,
2173        1,     2,     2,     3,     1,     1,     2,     3,     0,     2,
2174        2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
2175        1,     1,     3,     1,     2,     3,     3,     1,     2,     1,
2176        1,     3,     1,     1,     5,     1,     2,     2,     2,     2,
2177        3,     3,     0,     2,     3,     0,     2,     2,     4,     1,
2178        1,     5,     1,     1,     1,     1,     1,     0,     1,     1,
2179        3,     1,     1,     1,     2,     3,     0,     2,     2,     2,
2180        3,     0,     2,     3,     0,     2,     1,     1,     3,     0,
2181        2,     2,     3,     1,     1,     1,     2,     3,     1,     2,
2182        2,     2,     4,     0,     1,     3,     1,     2,     2,     2,
2183        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2184        2,     3,     0,     2,     2,     2,     2,     4,     1,     1,
2185        0,     1,     1,     4,     1,     1,     1,     1,     1,     1,
2186        4,     1,     2,     3,     0,     2,     2,     2,     3,     1,
2187        2,     1,     1,     5,     1,     1,     1,     3,     0,     2,
2188        3,     0,     2,     2,     2,     2,     3,     1,     2,     1,
2189        1,     1,     1,     1,     4,     1,     2,     2,     2,     2,
2190        2,     2,     2,     2,     2,     3,     1,     2,     2,     2,
2191        2,     4,     1,     2,     2,     2,     2,     2,     4,     1,
2192        2,     2,     3,     0,     2,     2,     3,     0,     2,     2,
2193        2,     2,     1,     1,     1,     1,     4,     0,     1,     1,
2194        1,     2,     3,     0,     2,     2,     4,     1,     2,     2,
2195        5,     1,     1,     2,     2,     3,     0,     2,     2,     2,
2196        3,     1,     2,     3,     0,     2,     2,     2,     3,     1,
2197        2,     2,     2,     2,     4,     3,     1,     2,     3,     1,
2198        1,     1,     1,     1,     1,     1,     1,     3,     6,     1,
2199        1,     2,     2,     6,     1,     1,     2,     2,     5,     1,
2200        1,     3,     3,     1,     2,     2,     2,     2,     2,     2,
2201        2,     2,     2,     3,     3,     1,     2,     5,     0,     1,
2202        4,     3,     1,     2,     3,     1,     2,     3,     3,     0,
2203        2,     2,     2,     3,     0,     2,     3,     0,     2,     2,
2204        2,     3,     1,     2,     3,     0,     2,     4,     3,     1,
2205        2,     3,     1,     2,     2,     2,     2,     2,     2,     2,
2206        2,     2,     2,     2,     2,     3,     1,     2,     2,     2,
2207        2,     2,     2,     2,     2,     2,     4,     1,     2,     2,
2208        2,     4,     1,     1,     2,     2,     3,     0,     2,     2,
2209        3,     1,     1,     2,     2,     2,     2,     2,     2,     2,
2210        2,     2,     3,     1,     1,     2,     2,     2,     2,     2,
2211        2,     2,     2,     2,     2,     2,     3,     0,     2,     2,
2212        4,     3,     0,     2,     2,     2,     2,     1,     1,     1,
2213        1,     4,     0,     1,     1,     1,     4,     0,     1,     3,
2214        1,     2,     4,     1,     2,     2,     2,     2,     1,     1,
2215        3,     0,     2,     2,     2,     2,     2,     2,     2,     2,
2216        2,     2,     2,     1,     1,     1,     1,     1,     1,     3,
2217        0,     2,     2,     4,     1,     2,     5,     1,     1,     2,
2218        2,     4,     1,     1,     1,     1,     3,     0,     2,     1,
2219        5,     1,     4,     4,     4,     3,     1,     2,     2,     2,
2220        3,     1,     2,     1,     3,     1,     2,     2,     2,     2,
2221        2,     3,     0,     2,     2,     2,     3,     0,     1,     4,
2222        0,     1,     3,     0,     1,     3,     1,     2,     3,     0,
2223        2,     2,     2,     4,     1,     1,     1,     1,     2,     2,
2224        3,     3,     0,     2,     2,     2,     1,     2,     3,     3,
2225        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2226        2,     2,     2,     2,     3,     0,     2,     3,     0,     2,
2227        2,     4,     1,     1,     1,     1,     0,     1,     1,     3,
2228        1,     2,     2,     2,     2,     2,     2,     3,     4,     1,
2229        1,     1,     1,     1,     8,     3,     1,     2,     2,     2,
2230        2,     7,     0,     1,     0,     1,     0,     1,     0,     1,
2231        0,     1,     4,     1,     1,     1,     3,     0,     2,     2,
2232        2,     2,     1,     1,     1,     1,     1,     1,     2,     2,
2233        3,     1,     1,     2,     2,     3,     1,     1,     1,     1,
2234        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2235        1,     1,     2,     3,     1,     2,     2,     2,     2,     1,
2236        1,     1,     1,     3,     5,     1,     2,     2,     2,     2,
2237        2,     3,     0,     2,     2,     3,     0,     2,     2,     2,
2238        2,     2,     2,     2,     2,     1,     1,     4,     0,     1,
2239        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2240        1,     3,     3,     5,     3,     3,     0,     2,     2,     2,
2241        3,     1,     2,     2,     2,     2,     2,     2,     3,     1,
2242        2,     2,     2,     2,     2,     2,     1,     1,     1,     1
2243 };
2244 
2245 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
2246    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
2247    means the default is an error.  */
2248 static const yytype_uint16 yydefact[] =
2249 {
2250        0,     0,     0,  1126,     0,     0,     0,   590,    11,   591,
2251      589,     1,     0,   587,   883,     0,   882,     0,     0,     0,
2252        2,   586,   588,  1127,     0,     0,   885,   884,  1128,     0,
2253        0,     0,     0,   213,   211,   212,   593,   279,   592,     0,
2254      946,   881,     0,     0,     0,     4,   285,     0,     0,   215,
2255      214,   940,   947,     0,    12,     0,   457,     0,     0,     0,
2256        0,     0,   101,     0,     0,     0,     0,     0,     0,     0,
2257        0,   284,   292,   289,   290,   295,   286,   287,   291,   288,
2258      296,   293,   297,   294,   443,   444,   445,   446,   447,   448,
2259      449,   450,   451,     0,     0,   217,   216,    13,     0,   456,
2260      458,     0,     0,     0,   929,     3,     9,     8,     6,     7,
2261        5,    10,     0,     0,     0,     0,   891,     0,   136,   137,
2262      138,     0,   232,   233,   234,     0,     0,     0,   848,     0,
2263        0,     0,  1054,     0,     0,     0,    68,    67,   442,   683,
2264      686,   684,   685,   679,   681,   682,   680,     0,     0,     0,
2265      218,   455,     0,   184,     0,   462,     0,     0,     0,    70,
2266        0,     0,   100,   102,   135,   231,     0,   727,    59,   396,
2267      564,   656,   737,   942,  1022,  1023,  1024,  1025,  1026,     0,
2268     1027,   843,   987,  1129,  1053,  1058,  1057,  1056,  1055,   345,
2269      262,  1021,  1101,   678,     0,     0,   210,     0,   176,     0,
2270        0,     0,     0,   928,   931,   932,   930,     0,     0,     0,
2271        0,     0,     0,     0,     0,     0,     0,     0,     0,   842,
2272      847,   844,   846,   845,     0,     0,   687,    82,    84,   175,
2273      178,   179,   177,   180,     0,     0,   256,     0,   465,     0,
2274     1119,     0,    69,   892,    99,   333,     0,    58,    62,    61,
2275       60,     0,   395,   398,   399,   397,     0,     0,   563,   567,
2276      566,   565,   571,   572,     0,   655,   659,   658,   657,     0,
2277      736,   740,   739,   738,   941,   944,   945,   943,     0,  1051,
2278     1037,  1048,  1049,  1038,  1036,  1046,  1050,  1044,  1045,  1043,
2279     1047,  1039,  1040,  1041,  1042,     0,   344,   349,   348,   347,
2280      346,     0,     0,     0,    83,   664,   980,     0,     0,   255,
2281      258,   259,   257,   260,   464,   467,   468,   466,   469,     0,
2282        0,     0,     0,  1118,  1120,  1124,  1122,  1121,  1123,  1125,
2283        0,    64,     0,   393,     0,   569,     0,     0,     0,   574,
2284      576,   575,     0,   661,     0,   742,   701,  1035,   747,     0,
2285      463,    81,     0,     0,     0,   186,   912,   979,   985,   984,
2286      982,   981,   983,   986,     0,    80,     0,     0,   151,   837,
2287       63,    65,   392,   394,   568,   570,  1028,  1029,     0,   660,
2288      662,   741,   743,   470,     0,     0,   663,   667,   666,   665,
2289        0,   460,     0,   264,   278,     0,     0,     0,     0,    73,
2290        0,    47,     0,     0,   152,     0,   838,     0,     0,     0,
2291        0,     0,   263,   271,   268,   269,   274,   265,   266,   270,
2292      277,   267,   275,   272,   276,   273,     0,     0,     0,     0,
2293        0,     0,     0,     0,     0,     0,     0,   185,   199,   193,
2294      198,   188,   190,   187,   194,   195,   197,   196,   192,   191,
2295      189,   200,     0,   911,   914,   913,   915,    88,    87,    86,
2296        0,     0,  1076,    72,    77,    79,    74,    78,    76,    75,
2297        0,     0,   150,   836,   573,     0,     0,   261,     0,     0,
2298        0,     0,     0,     0,   320,   355,   356,     0,   318,   321,
2299      322,   319,   889,     0,     0,     0,     0,     0,     0,     0,
2300        0,     0,     0,     0,   526,     0,   506,    85,  1085,     0,
2301        0,     0,  1063,   352,     0,     0,   202,   203,   299,   424,
2302      425,     0,   434,   435,     0,     0,  1031,  1032,     0,   354,
2303        0,     0,     0,     0,     0,     0,     0,   647,     0,     0,
2304        0,     0,     0,     0,     0,     0,   220,     0,   501,   504,
2305      887,     0,     0,     0,   525,   529,   539,   530,   528,   533,
2306      536,   535,   534,   538,   537,   532,   540,   527,   531,     0,
2307        0,     0,   383,     0,   627,     0,   822,  1075,  1083,  1080,
2308     1079,  1082,  1081,  1078,  1077,  1084,     0,   890,   201,   204,
2309      205,     0,   300,   423,   426,   427,   433,   699,   700,     0,
2310     1030,  1033,  1034,   281,     0,   282,   283,     0,     0,     0,
2311        0,     0,     0,     0,   917,   866,   865,   868,   867,     0,
2312      864,   863,   314,   315,     0,   324,   325,     0,   329,   330,
2313        0,     0,   429,   430,   646,   648,   649,     0,   651,   652,
2314        0,     0,   578,   870,   878,   877,     0,     0,     0,   507,
2315        0,     0,   436,     0,     0,     0,     0,     0,     0,  1096,
2316     1098,  1099,  1097,  1091,  1093,  1092,  1094,  1100,  1095,     0,
2317      401,  1065,     0,     0,   374,     0,     0,     0,     0,   606,
2318        0,     0,     0,   766,     0,   994,   298,     0,   280,     0,
2319      227,   228,     0,     0,    54,     0,    55,     0,     0,     0,
2320      918,     0,   313,   316,   317,   323,   326,   327,   328,   331,
2321      332,     0,   419,   420,   428,   431,   432,   650,   653,   654,
2322        0,   689,   690,     0,   694,   695,     0,     0,   876,   879,
2323      880,    66,   112,   142,   219,   221,   500,   502,   503,   505,
2324      886,   888,   948,  1102,  1104,  1090,     0,   114,  1064,  1068,
2325     1067,  1069,  1066,  1070,     0,   370,   391,   390,     0,     0,
2326      373,   378,   375,   377,   376,   380,   382,   386,   384,   385,
2327      387,   635,   634,   637,     0,     0,   605,   610,   608,   607,
2328      609,   623,   626,   630,   629,   628,   631,   830,   829,   832,
2329        0,     0,     0,     0,     0,     0,   765,   773,   775,   769,
2330      770,   771,   772,   767,   768,   774,   787,   821,   825,   824,
2331      823,   826,   698,   226,   229,   230,    45,    46,    56,     0,
2332       57,   254,   351,   461,   916,   418,   421,   422,   688,   691,
2333      692,   693,   696,   697,   577,   579,   869,   871,   872,     0,
2334      438,   581,     0,   729,     0,     0,   851,     0,   950,  1106,
2335      400,   406,   416,   414,   408,   409,   407,   411,   402,   403,
2336      415,   405,   413,   404,   412,   417,   410,     0,     0,     0,
2337      371,     0,   372,     0,   183,   182,     0,   996,     0,     0,
2338      639,   638,     0,   640,     0,   141,   140,     0,     0,   834,
2339      833,     0,   835,     0,    16,    15,     0,   155,   154,     0,
2340      158,   157,     0,   161,   160,     0,   164,   163,     0,     0,
2341       53,     0,     0,     0,    41,     0,    40,    39,     0,     0,
2342        0,  1060,  1059,     0,     0,   828,   827,     0,   752,     0,
2343        0,   903,   905,     0,     0,     0,     0,   104,     0,     0,
2344        0,     0,     0,     0,     0,     0,     0,     0,     0,   113,
2345      129,   130,   122,   117,   127,   115,   128,   119,   120,   116,
2346      121,   123,   118,   125,   124,   131,   126,     0,   561,  1086,
2347     1088,   369,   181,   172,   173,   174,     0,     0,     0,   995,
2348      999,   998,   997,  1000,   379,   381,   636,   139,     0,   619,
2349        0,   622,   624,   625,   831,    14,   153,   156,   159,   162,
2350        0,   782,   783,     0,   786,   788,   789,   734,     0,   923,
2351        0,    48,    38,    42,    43,     0,   817,   437,   441,   440,
2352      439,   580,   585,   583,   582,   584,     0,   718,   643,   728,
2353      732,   731,   730,     0,     0,   751,   761,   763,   757,   758,
2354      759,   760,   756,   753,   755,   762,   754,   764,   475,   777,
2355        0,     0,     0,     0,   850,   856,   861,   855,   853,   854,
2356      858,   859,   852,   857,   860,   862,     0,     0,     0,   904,
2357      908,   909,   906,   910,   907,     0,     0,   949,   955,   957,
2358      962,   954,   952,   953,   959,   956,   960,   951,   958,   961,
2359      963,  1105,  1109,  1108,  1107,     0,     0,     0,   302,   303,
2360        0,     0,   335,   336,   389,     0,   388,     0,   518,   633,
2361      632,     0,     0,     0,   669,   703,     0,     0,   792,   791,
2362        0,   896,  1017,  1111,     0,   560,   562,  1089,     0,   171,
2363        0,     0,   342,   725,     0,     0,   167,   166,     0,     0,
2364      618,   621,   620,     0,   480,   479,   781,   785,   784,     0,
2365       37,   965,     0,   924,    44,     0,     0,    35,     0,   719,
2366        0,   207,   208,   209,     0,  1052,     0,   776,   779,   778,
2367      780,     0,   453,   459,  1062,  1061,     0,   715,   849,     0,
2368      840,     0,     0,    28,     0,     0,     0,    26,    25,     0,
2369        0,    71,   103,   105,   108,   110,   106,   107,   109,   111,
2370        0,     0,     0,     0,     0,     0,   301,   304,   311,   305,
2371      306,   307,   308,   309,   310,   312,   968,     0,   337,   338,
2372     1072,     0,   360,   359,   517,   520,   519,   521,   595,     0,
2373      472,   612,     0,   668,   672,   671,   670,   673,   702,   710,
2374      711,   707,   704,   705,   706,   709,   708,   712,   133,   790,
2375      801,   796,   793,   794,   795,   798,   797,   799,   800,   895,
2376      899,   897,   898,     0,     0,     0,     0,  1110,  1112,  1116,
2377     1113,  1115,  1114,  1117,  1087,     0,     0,   989,   990,     0,
2378      341,   343,   724,   726,   165,   496,   509,     0,    51,    50,
2379       52,  1014,  1013,  1015,     0,     0,     0,   733,   735,     0,
2380      922,   350,   816,   819,   818,     0,    36,   717,   642,   645,
2381      644,   206,   474,   476,   477,   452,   454,   714,   716,   839,
2382      841,   148,     0,     0,    27,    31,    29,    30,    32,     0,
2383        0,    24,   713,   874,     0,     0,     0,   223,   144,   676,
2384        0,   745,     0,   722,   749,     0,   901,     0,     0,   334,
2385      339,   340,     0,     0,     0,  1002,   358,   367,   365,   362,
2386      363,   366,   364,   361,   368,   594,   603,   601,   596,   598,
2387      600,   599,   597,   602,   604,     0,   611,   616,   614,   613,
2388      615,   617,     0,   134,     0,     0,     0,  1016,  1018,  1020,
2389     1019,     0,    18,     0,   482,   483,   550,   548,   549,     0,
2390      251,   250,   249,   248,   247,     0,     0,   993,   991,   992,
2391        0,     0,     0,    49,     0,   478,     0,   926,   964,   966,
2392       34,     0,   149,     0,   491,   493,   492,     0,   513,   515,
2393      514,   820,   542,     0,   873,   875,    97,   222,   224,     0,
2394      675,   677,     0,   721,   723,   748,   750,   900,   902,     0,
2395        0,   967,   969,   970,  1071,  1074,  1073,     0,     0,   804,
2396      803,     0,  1003,  1004,   471,   473,   132,    93,    92,    90,
2397       91,   357,   936,   934,   935,     0,    17,    22,    19,    21,
2398       20,    23,     0,   487,   485,   484,   486,   551,   552,     0,
2399      246,   253,   252,     0,     0,   988,     0,   495,   499,   497,
2400      498,   508,   511,   510,  1012,     0,   925,   927,   147,   490,
2401      494,   512,   516,     0,  1103,     0,     0,   143,   145,   146,
2402      744,   746,     0,   237,     0,   236,   238,     0,   972,   974,
2403      973,   975,   976,     0,   802,   812,   814,   808,   809,   810,
2404      811,   807,   806,   813,   805,   815,     0,     0,  1005,  1006,
2405       94,     0,    95,   937,     0,   523,   488,   489,     0,   547,
2406      674,   225,   353,   920,   541,   546,   544,   543,   545,    96,
2407       98,     0,     0,   556,   554,   555,   243,   239,   241,   240,
2408      242,   641,   977,   978,     0,   720,     0,     0,   169,  1007,
2409     1008,    89,   933,   939,   938,   524,     0,   481,     0,   921,
2410        0,   558,   557,   559,     0,   244,     0,   245,   971,   893,
2411        0,     0,  1009,  1010,   522,   919,     0,   553,   235,   894,
2412      168,   170,  1011,     0,    33,  1001
2413 };
2414 
2415 /* YYDEFGOTO[NTERM-NUM].  */
2416 static const yytype_int16 yydefgoto[] =
2417 {
2418       -1,    21,     2,    58,     6,    31,    18,   797,   893,  1268,
2419     1391,  1078,  1186,  1070,  1182,  1518,   925,  1305,   914,   851,
2420      915,   916,   615,   616,   324,   917,  1141,  1287,   617,   695,
2421      819,   174,   211,   249,   330,   555,   135,    72,    73,   950,
2422      310,   398,   364,   198,   303,   227,   399,   460,  1388,  1467,
2423     1551,  1207,  1515,    74,    75,   117,   952,  1097,   557,   750,
2424      867,  1252,  1382,    76,   121,   778,   884,   558,  1339,  1439,
2425     1183,  1421,   326,   403,   799,   896,   800,   899,   801,   902,
2426      802,   905,   989,  1135,  1589,  1611,   877,   976,   107,   199,
2427      762,   873,   152,   359,   395,   484,   515,  1043,  1164,    22,
2428       33,    49,    95,   149,   559,   651,  1209,  1336,  1407,   439,
2429      689,    77,   125,  1452,  1524,  1576,  1606,  1277,  1399,   618,
2430      108,   235,   360,   136,   361,   392,   393,    34,   531,   604,
2431       35,    47,   485,   591,   953,  1100,   441,   619,   486,   442,
2432      624,   443,   627,    78,   954,  1101,  1217,   981,  1131,   185,
2433      224,  1018,   620,   388,  1498,   420,   487,  1389,   955,  1221,
2434      674,   871,   579,   675,   769,   879,   580,   676,  1105,   755,
2435      253,   332,   175,   212,   671,   746,   444,   711,   488,   521,
2436      445,   631,   489,   524,   560,   854,   918,    50,    93,  1060,
2437     1171,    56,    45,    57,  1172,   390,   621,   154,   349,   109,
2438      237,   304,  1231,  1375,  1049,  1166,  1002,  1143,  1271,  1393,
2439     1483,  1558,  1326,  1423,  1291,  1411,   561,   653,   562,   654,
2440      504,  1292,  1293,  1412,  1327,  1427,   956,  1107,  1484,  1596,
2441      455,   505,  1433,  1513,  1272,  1396,  1489,  1525,  1572,  1604,
2442      787,   967,   176,   213,  1144,   334,  1145,   262,   338,   644,
2443      726,   855,   919,    36,    12,   492,   649,   957,  1229,   581,
2444      678,   958,  1232,   779,   990,   784,   888,   582,   680,  1111,
2445      773,   679,   882,  1529,  1030,  1160,   446,   538,   447,   637,
2446      177,   214,   267,   342,   306,   352,   959,  1113,  1278,  1210,
2447     1340,    96,   147,   150,   448,   720,   449,   723,   490,   599,
2448      221,   960,  1116,  1085,  1061,  1176,   856,  1158,  1359,  1211,
2449     1342,   982,  1134,    79,   857,   924,  1008,  1149,   178,   215,
2450      272,   344,  1343,  1442,   195,  1212,  1345,   858,   927,   583,
2451      682,   859,  1050,   804,  1003,   809,   909,   961,  1117,  1360,
2452     1458,  1019,  1156,  1072,   584,   684,   928,   789,   683,   891,
2453      327,   405,  1063,  1179,    80,   179,   129,  1180,   861,   930,
2454      622,   645,   727,  1096,  1334,   450,   646,     9,    15,    25,
2455      564,   655,   493,   389,   263,  1462,  1548,   962,  1120,  1214,
2456     1347,   932,   862,   933,   362,   396,   623,   701,  1507,  1598,
2457     1010,  1152,  1298,  1416,   110,   157,  1390,  1475,  1554,    26,
2458      180,   216,    39,   565,   863,   934,  1153,  1299,  1219,  1348,
2459     1453,  1532,  1584,   236,   307,    81,  1132,  1279,  1410,   240,
2460      764,   878,  1363,  1463,  1549,  1590,  1613,  1623,  1142,  1294,
2461     1123,  1263,   137,   181,   340,   341,   491,   528,   223,   295,
2462     1046,    82,   131,   923,  1177,   404,   468,   672,  1222,  1352,
2463      469,   510,   509,   970,   872,  1128,   570,   669,    83,   567,
2464     1074,   568,   866,   935,   966,  1124,   206,   241,    38,    27,
2465      116,   189
2466 };
2467 
2468 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2469    STATE-NUM.  */
2470 #define YYPACT_NINF -1333
2471 static const yytype_int16 yypact[] =
2472 {
2473       41,   152,   149, -1333,   176,    81,   305, -1333, -1333, -1333,
2474    -1333, -1333,    33, -1333, -1333,    59, -1333,   148,   317,   101,
2475    -1333, -1333, -1333, -1333,   437,   150, -1333, -1333, -1333,   148,
2476      148,   304,    81,   312, -1333, -1333, -1333, -1333, -1333,    33,
2477    -1333, -1333,   148,   150,   316, -1333, -1333,  1508,  1780,   272,
2478    -1333, -1333, -1333,   150, -1333,   148, -1333,   122,   715,   148,
2479      148,   111, -1333,   997,  1020,   148,   148,   152,   148,   176,
2480      300, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2481    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2482    -1333, -1333, -1333,   150,  1588,   280, -1333, -1333,   150, -1333,
2483    -1333,   152,   152,   152, -1333, -1333, -1333, -1333, -1333, -1333,
2484    -1333, -1333,   148,   150,   148,   111, -1333,    36, -1333, -1333,
2485    -1333,   150, -1333, -1333, -1333,   150,   148,   150, -1333,  1023,
2486      150,    66, -1333,   150,   150,   150, -1333, -1333, -1333, -1333,
2487    -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150,   260,   150,
2488    -1333, -1333,   424, -1333,   317, -1333,   317,   273,   439, -1333,
2489      148,   111, -1333, -1333, -1333, -1333,   439, -1333, -1333, -1333,
2490    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   310,
2491    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2492    -1333, -1333, -1333, -1333,   148,   150, -1333,    81, -1333,   441,
2493      254,   254,   266, -1333, -1333, -1333, -1333,   150,   150,   150,
2494      150,   416,    49,   115,    91,   801,    77,   437,  2006, -1333,
2495    -1333, -1333, -1333, -1333,    71,   148, -1333,   376, -1333, -1333,
2496    -1333, -1333, -1333, -1333,   343,   445, -1333,   445, -1333,   148,
2497    -1333,   158, -1333, -1333, -1333, -1333,   300, -1333, -1333, -1333,
2498    -1333,   148, -1333, -1333, -1333, -1333,   276,   144, -1333, -1333,
2499    -1333, -1333, -1333, -1333,   111, -1333, -1333, -1333, -1333,   260,
2500    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150, -1333,
2501    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2502    -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333, -1333, -1333,
2503    -1333,   150,    81,   150, -1333, -1333, -1333,   546,   152, -1333,
2504    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   148,
2505      437,   437,   437, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2506       33, -1333,    33, -1333,    33, -1333,   150,   150,   144, -1333,
2507    -1333, -1333,    33, -1333,    33, -1333, -1333, -1333, -1333,   150,
2508    -1333, -1333,   132,   152,   152, -1333, -1333, -1333, -1333, -1333,
2509    -1333, -1333, -1333, -1333,   468, -1333,   148,   150,   306,   306,
2510    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   144, -1333,
2511    -1333, -1333, -1333, -1333,   111,   111, -1333, -1333, -1333, -1333,
2512       81, -1333,  1442, -1333, -1333,  1794,   519,   832,   940, -1333,
2513      148, -1333,   437,   150, -1333,   150, -1333,   150,   111,   111,
2514      150,  1196, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2515    -1333, -1333, -1333, -1333, -1333, -1333,   152,   152,   152,   152,
2516      152,   152,   152,   152,   152,   152,   152, -1333, -1333, -1333,
2517    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2518    -1333, -1333,   152, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2519      150,   152, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2520      148,   150, -1333, -1333, -1333,   150,   321, -1333,  1196,    81,
2521     1196,  1196,   148,  1196, -1333, -1333, -1333,   150, -1333, -1333,
2522    -1333, -1333, -1333,   461,   461,   461,   461,   461,   461,   461,
2523      461,   461,   461,   461, -1333,  1198, -1333, -1333, -1333,   322,
2524      867,   148, -1333, -1333,   150,  1263, -1333, -1333,   376, -1333,
2525    -1333,  1263, -1333, -1333,   150,  1196, -1333, -1333,  1263, -1333,
2526      342,   461,  1545,  1545,  1545,   461,  1545, -1333,   130,  1545,
2527      461,   461,   -29,   300,    81,   276, -1333,   150, -1333, -1333,
2528    -1333,    81,   276,    81, -1333, -1333, -1333, -1333, -1333, -1333,
2529    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,  1879,
2530      444,   466, -1333,   425, -1333,   382, -1333, -1333, -1333, -1333,
2531    -1333, -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333, -1333,
2532    -1333,   150, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   540,
2533    -1333, -1333, -1333, -1333,   150, -1333, -1333,  1545,   111,   111,
2534       42,   111,   111,   111,  1276, -1333, -1333, -1333, -1333,   130,
2535    -1333, -1333, -1333, -1333,   130, -1333, -1333,   130, -1333, -1333,
2536     1545,   130, -1333, -1333, -1333, -1333, -1333,   130, -1333, -1333,
2537     1545,  1545, -1333, -1333, -1333, -1333,   130,   150,   150, -1333,
2538      150,    63, -1333,    63,    63,    63,   150,   150,   150, -1333,
2539    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150,
2540    -1333, -1333,   186,   529, -1333,   653,   833,   529,   605, -1333,
2541      171,   529,   581, -1333,   783, -1333, -1333,   150, -1333,   130,
2542    -1333, -1333,   150,   150, -1333,    53, -1333,   150,   150,   150,
2543    -1333,   150, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2544    -1333,   130, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2545      130, -1333, -1333,   130, -1333, -1333,   -75,   361, -1333, -1333,
2546    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2547    -1333, -1333, -1333, -1333, -1333, -1333,   990, -1333, -1333, -1333,
2548    -1333, -1333, -1333, -1333,    81,   -34, -1333, -1333,    59,   548,
2549    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2550    -1333, -1333, -1333,   442,   460,   548, -1333, -1333, -1333, -1333,
2551    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   539,
2552      523,    93,    93,    93,    93,   548, -1333, -1333, -1333, -1333,
2553    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2554    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150,
2555    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2556    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   543,
2557    -1333, -1333,   108, -1333,   108,   108, -1333,   152, -1333, -1333,
2558    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2559    -1333, -1333, -1333, -1333, -1333, -1333, -1333,  1584,   148,    81,
2560    -1333,   150, -1333,   150, -1333, -1333,   894, -1333,   708,   252,
2561    -1333, -1333,   150, -1333,   150, -1333, -1333,   561,    46, -1333,
2562    -1333,   150, -1333,   150, -1333, -1333,   150, -1333, -1333,   150,
2563    -1333, -1333,   150, -1333, -1333,   150, -1333, -1333,    26,    86,
2564    -1333,   431,   421,   150, -1333,   130, -1333, -1333,   531,   281,
2565      152, -1333, -1333,  1023,   -73, -1333, -1333,   631, -1333,   512,
2566      762, -1333, -1333,   481,   365,   588,   454, -1333,    76,   104,
2567      108,   108,   108,   108,   108,   108,   104,   437,   418, -1333,
2568    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2569    -1333, -1333, -1333, -1333, -1333, -1333, -1333,    51, -1333, -1333,
2570      424, -1333, -1333, -1333, -1333, -1333,   150,   436,   561, -1333,
2571    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   523, -1333,
2572      -31, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2573      523, -1333, -1333,   -31, -1333, -1333, -1333, -1333,   150,   453,
2574      150, -1333, -1333, -1333, -1333,   529, -1333, -1333, -1333, -1333,
2575    -1333, -1333, -1333, -1333, -1333, -1333,   148,   321, -1333, -1333,
2576    -1333, -1333, -1333,   711,   150, -1333, -1333, -1333, -1333, -1333,
2577    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2578      726,   176,   529,    81, -1333, -1333, -1333, -1333, -1333, -1333,
2579    -1333, -1333, -1333, -1333, -1333, -1333,   620,   108,   152, -1333,
2580    -1333, -1333, -1333, -1333, -1333,    59,   454, -1333, -1333, -1333,
2581    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2582    -1333, -1333, -1333, -1333, -1333,   260,   150,   691, -1333, -1333,
2583      751,   -85, -1333, -1333, -1333,  -115, -1333,   726, -1333, -1333,
2584    -1333,   568,   562,   635, -1333, -1333,   449,  1253, -1333, -1333,
2585       97, -1333, -1333, -1333,   448, -1333, -1333, -1333,   150, -1333,
2586      384,   -24, -1333, -1333,   -24,   150, -1333, -1333,   950,   950,
2587    -1333, -1333, -1333,   523, -1333, -1333, -1333, -1333, -1333,  -122,
2588    -1333, -1333,   150, -1333, -1333,   150,    86,   148,   150, -1333,
2589      -77, -1333, -1333, -1333,   150, -1333,   -90, -1333, -1333, -1333,
2590    -1333,    33, -1333, -1333, -1333, -1333,    33, -1333, -1333,    33,
2591    -1333,   148,   409, -1333,   530,   111,   150, -1333, -1333,   150,
2592      260, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2593      260,   260,   675,   553,   553,   675, -1333, -1333, -1333, -1333,
2594    -1333, -1333, -1333, -1333, -1333, -1333, -1333,    99, -1333, -1333,
2595    -1333,   812, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   679,
2596    -1333, -1333,   946, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2597    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   651, -1333,
2598    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2599    -1333, -1333, -1333,    34,   276,   104,   104, -1333, -1333, -1333,
2600    -1333, -1333, -1333, -1333, -1333,  1014,   671, -1333, -1333,   634,
2601    -1333, -1333, -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333,
2602    -1333, -1333, -1333, -1333,   950,   150,   453, -1333, -1333,  -119,
2603    -1333, -1333, -1333, -1333, -1333,   150, -1333, -1333, -1333, -1333,
2604    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2605    -1333,   684,   255,   255, -1333, -1333, -1333, -1333, -1333,   150,
2606      624, -1333, -1333, -1333,  -117,   260,  -117, -1333, -1333, -1333,
2607     -117, -1333,  -117, -1333, -1333,  -117, -1333,  -117,   269, -1333,
2608    -1333, -1333,   428,   529,   104,   560, -1333, -1333, -1333, -1333,
2609    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2610    -1333, -1333, -1333, -1333, -1333,   -98, -1333, -1333, -1333, -1333,
2611    -1333, -1333,   150, -1333,   255,   150,   255, -1333, -1333, -1333,
2612    -1333,   739, -1333,   -64, -1333, -1333,    26, -1333, -1333,   -31,
2613    -1333, -1333, -1333, -1333, -1333,   111,   111, -1333, -1333, -1333,
2614      150,   114,    64, -1333,   150, -1333,  -127, -1333, -1333, -1333,
2615    -1333,   150, -1333,   -52, -1333, -1333, -1333,   -52, -1333, -1333,
2616    -1333, -1333, -1333,   150, -1333, -1333, -1333, -1333, -1333,    28,
2617    -1333, -1333,   -46, -1333, -1333, -1333, -1333, -1333, -1333,   383,
2618      890, -1333, -1333, -1333, -1333, -1333, -1333,  1023,   657, -1333,
2619    -1333,   148, -1333,   564, -1333, -1333, -1333,    11, -1333, -1333,
2620    -1333, -1333, -1333, -1333, -1333,   684, -1333, -1333, -1333, -1333,
2621    -1333, -1333,    81,    26, -1333, -1333, -1333, -1333, -1333,   150,
2622    -1333, -1333, -1333,   150,   150, -1333,   150, -1333, -1333, -1333,
2623    -1333, -1333, -1333, -1333, -1333,   534, -1333, -1333, -1333, -1333,
2624    -1333, -1333, -1333,   113, -1333,  -117,   260, -1333, -1333, -1333,
2625    -1333, -1333,   255, -1333,   890, -1333, -1333,   150, -1333, -1333,
2626    -1333, -1333,    26,   150, -1333, -1333, -1333, -1333, -1333, -1333,
2627    -1333, -1333, -1333, -1333, -1333, -1333,   148,   148, -1333,   725,
2628    -1333,   150, -1333, -1333,   -31,   376, -1333, -1333,   150, -1333,
2629    -1333, -1333, -1333,   577, -1333, -1333, -1333, -1333, -1333, -1333,
2630    -1333,   260,   950, -1333, -1333, -1333,    26, -1333, -1333, -1333,
2631    -1333, -1333, -1333, -1333,   150, -1333,   150,   148, -1333, -1333,
2632      272, -1333, -1333, -1333, -1333, -1333,   150, -1333,   150, -1333,
2633      260, -1333, -1333, -1333,   150, -1333,   150, -1333, -1333, -1333,
2634      150,   -46, -1333,   280, -1333, -1333,   150, -1333, -1333, -1333,
2635    -1333, -1333, -1333,   150, -1333, -1333
2636 };
2637 
2638 /* YYPGOTO[NTERM-NUM].  */
2639 static const yytype_int16 yypgoto[] =
2640 {
2641    -1333,   -25, -1333, -1333, -1333,     8, -1333,  -906, -1333, -1333,
2642    -1333,  -265, -1333, -1333, -1333, -1333,   173, -1333, -1333, -1333,
2643    -1333, -1333,   223,   139, -1333, -1333,  -996, -1333, -1333, -1333,
2644    -1333,   645, -1333, -1333, -1333, -1333,  -168,   470,   473,  -285,
2645      599, -1333, -1333,   -91, -1333, -1333, -1333, -1333,  -557, -1333,
2646    -1333, -1333, -1333,   504,  1011, -1333,  -878, -1333, -1333, -1333,
2647    -1333, -1333, -1333,  -310, -1333,  -316, -1333, -1333,  -291, -1333,
2648    -1333, -1333, -1333, -1333,  -902, -1333,  -901, -1333,  -896, -1333,
2649     -893, -1333,  -891, -1333, -1333, -1333,  -630, -1333, -1333, -1333,
2650     -666, -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,   -26,
2651    -1333, -1333, -1333, -1333, -1333, -1333, -1333, -1333,  -890, -1333,
2652    -1333,   527, -1333, -1333, -1333, -1333, -1333,  -284, -1333, -1333,
2653    -1333, -1333, -1333, -1333,   528, -1333,   -11,     3,  1663, -1333,
2654       -7, -1333,  1085, -1333,  -880, -1333, -1333, -1333,  1301, -1333,
2655    -1333, -1333, -1333,   544, -1043, -1333, -1333, -1333, -1333,   716,
2656    -1333, -1333,   329, -1333,  -570, -1333, -1333, -1333,  -872, -1333,
2657      308, -1333, -1333, -1333, -1333, -1333, -1333, -1333,     4, -1333,
2658      180, -1333,   745, -1333, -1333, -1333, -1333, -1333, -1333, -1333,
2659    -1333, -1333, -1333, -1333, -1333,  -834, -1333, -1333, -1333,  -871,
2660    -1333, -1333, -1333, -1333, -1333, -1333,   263,   858, -1333, -1333,
2661    -1333,  -517, -1333, -1333, -1333, -1333, -1202,  -181,  -428, -1333,
2662    -1333, -1333, -1333, -1333, -1109, -1333, -1333, -1333, -1333, -1333,
2663      -99,  -514, -1097, -1333, -1333, -1333, -1333, -1333, -1332, -1333,
2664    -1333, -1333, -1227, -1333,  -420, -1333, -1333, -1333, -1333, -1333,
2665     -665, -1333,   769, -1333,  -193, -1333,  -209, -1333,    90, -1333,
2666    -1333, -1333, -1333,   355, -1333,   903,   128, -1025, -1333, -1333,
2667    -1333,  -141, -1333,  -242, -1333,  -287, -1333, -1333, -1333,    55,
2668      123,  -674, -1333,  -502, -1333, -1333, -1333, -1333, -1333, -1333,
2669      813, -1333,   472, -1333, -1333, -1333, -1333, -1333,  -251, -1333,
2670    -1333,  -560, -1333,  -582, -1333, -1333, -1333, -1333, -1333, -1333,
2671    -1333, -1333, -1333,   -83,   105, -1333, -1333, -1333, -1333, -1333,
2672    -1333, -1333, -1333,   656,  -864, -1333, -1333, -1333,   830, -1333,
2673    -1333, -1333,  -155, -1333,  -210, -1333, -1333,  -113, -1333, -1333,
2674    -1333,  -105, -1333,  -889, -1333,  -213, -1333,  -803, -1333, -1333,
2675    -1333,  -874, -1333, -1333, -1333, -1333,  -679,  -882,   502, -1333,
2676    -1333, -1333,  -699, -1333,   767, -1333, -1333, -1333, -1333, -1333,
2677      845,   339, -1333,  -942, -1333, -1333, -1333, -1333, -1333, -1333,
2678    -1333, -1333,   902, -1333,   141, -1333, -1333,   -44, -1333, -1333,
2679    -1333, -1333,   213, -1333, -1333, -1333,   411, -1333, -1333, -1333,
2680    -1333, -1333, -1333, -1333,  -189, -1333,  -363, -1333, -1333,  -214,
2681      873, -1333, -1333, -1333, -1333, -1333,  -195, -1333, -1300, -1333,
2682    -1333, -1333, -1333,   904, -1333,   712, -1333, -1333, -1333, -1333,
2683     -706, -1333, -1248, -1333, -1333, -1333, -1333, -1333,  -980,  -186,
2684    -1333, -1333, -1333,  -912, -1333, -1333, -1333, -1333,  -467, -1333,
2685    -1089,  1032, -1333, -1333,  -241,   742, -1333, -1333,  -235, -1333,
2686    -1333, -1333, -1333, -1333,  -770, -1333, -1333, -1333,   727, -1333,
2687    -1333, -1333,   203, -1333, -1333, -1333, -1333, -1333,  1551,    12,
2688      347, -1333
2689 };
2690 
2691 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
2692    positive, shift that token.  If negative, reduce the rule which
2693    number is the opposite.  If zero, do what YYDEFACT says.
2694    If YYTABLE_NINF, syntax error.  */
2695 #define YYTABLE_NINF -1
2696 static const yytype_uint16 yytable[] =
2697 {
2698       41,   592,   275,   883,   261,   273,   785,  1147,   756,   514,
2699      232,  1027,   771,    52,    51,  1351,   803,  1001,    54,   892,
2700      260,  1036,    71,  1148,  1236,  1038,  1039,  1005,    97,  1288,
2701      648,  1040,    99,   105,  1041,    46,    40,   656,  1044,   658,
2702      864,  1290,    23,   250,  1138,  1023,   312,   335,   317,     3,
2703     1058,  1419,  1057,    28,  1082,    28,  1081,  1102,  1059,   345,
2704     1031,  1093,  1083,  1084,  1118,    23,     3,     3,   138,     3,
2705       28,   183,    23,   151,     3,    28,   183,    23,   331,     3,
2706      853,  1270,   417,    23,     3,  1022,  1138,  1133,   159,     3,
2707      942,  1243,   162,  1486,  1516,    28,   164,    28,  1275,   881,
2708      165,  1092,   167,    23,     3,   182,   184,     3,   190,   191,
2709      192,     3,  1482,   608,   673,    28,     3,     3,  1528,    28,
2710     1384,    67,   193,  1028,   196,   609,  1432,  1062,  1505,   163,
2711      988,  1087,   203,  1155,  1189,  1296,   844,   735,   845,   737,
2712      739,   741,   843,   187,    19,   887,   843,    37,    28,    11,
2713     1531,   681,    28,  1355,   219,     3,   642,     1,  1213,   681,
2714       37,   964,   200,   681,   201,   908,   929,   643,    20,  1220,
2715      226,   869,   681,    20,   229,   920,    20,  1385,    20,     3,
2716     1216,   612,   242,   243,   244,   245,   247,   252,   258,   265,
2717      270,   274,  1577,  1000,  1488,   194,  1510,    20,   169,   251,
2718     1512,  1216,   115,   988,  1371,    20,   114,    32,   114,   466,
2719      309,    62,   314,   643,   993,   613,   323,  1196,    20,    62,
2720       20,    62,    20,   771,  1580,  1197,   114,   754,   277,   278,
2721      114,   320,    32,     4,  1285,  1088,   299,  1253,  1241,  1251,
2722      677,   940,  1139,    20,  1242,  1254,  1255,    62,  1260,    20,
2723        4,     4,   869,   346,  1496,  1496,   161,   321,     3,   114,
2724       62,  1042,  1108,     4,    20,  1114,  1000,   754,     4,   194,
2725      347,    20,   384,     4,  1303,    62,   348,  1228,   351,   747,
2726       28,  1557,   357,  1285,  1139,   754,  1286,  1286,     4,   687,
2727      171,     4,   264,  1386,   264,     4,  1309,   170,   256,   257,
2728        4,     4,   209,  1502,   371,   370,   373,   372,   375,   374,
2729     1329,   376,   377,  1246,  1500,  1599,   380,   379,   382,   381,
2730       24,     5,   681,    20,   383,   228,  1350,   386,    20,    20,
2731     1583,    20,   367,   368,   369,  1223,   650,   173,    24,     4,
2732      681,    20,   401,   657,    20,     3,    20,   947,  1478,  1369,
2733     1465,  1367,  1379,     5,  1378,   268,     7,  1370,    20,    20,
2734       14,    20,    62,   781,    29,   677,   296,   412,  1383,  1544,
2735      437,   453,    20,   463,  1607,   647,    42,    43,   472,   385,
2736      473,    20,   474,  1394,  1397,   477,    20,  1174,  1184,    53,
2737     1449,   114,    20,   410,    20,   322,    67,     5,   339,    62,
2738      673,  1403,    98,  1491,  1566,   343,   112,   113,    20,    20,
2739       20,    69,   126,   127,   471,   130,  1568,    20,  1256,  1492,
2740      336,   337,     7,    17,    67,    20,   133,    20,   378,  1075,
2741      350,  1422,   608,   609,    30,   507,   754,   610,   840,    69,
2742     1425,  1429,     4,    23,   104,    20,   512,   936,  1424,  1428,
2743      513,   478,    69,    20,    62,   937,     7,     7,     7,   158,
2744      257,   160,   529,  1601,    28,    44,    20,    69,   407,  1384,
2745       48,  1550,  1459,   166,   479,  1603,    55,    94,   188,   339,
2746      554,    20,   518,   752,   611,   577,   148,  1552,  1016,   587,
2747      588,   681,   938,   168,   246,   480,   593,   481,    62,   596,
2748      612,   194,  1469,   600,  1473,  1487,  1275,   208,   197,   940,
2749     1468,  1264,  1472,   634,  1016,  1362,   168,   681,    37,   339,
2750      217,   234,   652,   613,  1051,   408,   409,    28,   308,     4,
2751       62,   936,     3,   603,    62,  1450,   239,    62,    62,   937,
2752      302,   225,   133,   305,   874,  1533,  1066,    20,    67,   475,
2753      476,   482,  1535,   397,    69,  1358,  1537,  1538,  1593,   255,
2754     1159,   685,  1539,  1522,    20,  1540,   686,   202,    20,  1542,
2755       62,   300,   301,   849,  1594,   134,    20,  1076,  1322,   688,
2756     1052,   895,  1456,  1323,   939,  1553,   319,  1276,   402,   218,
2757      673,   530,  1556,   940,   702,   670,   946,   894,   333,   705,
2758      218,  1401,   708,    67,  1053,    20,   714,    37,    62,   569,
2759      251,   911,   717,   912,   673,   614,  1265,   913,   681,   677,
2760      483,   728,   731,   732,  1289,   733,   734,  1266,   736,   738,
2761      740,   742,   743,   744,    63,    62,   677,   942,   114,   943,
2762     1574,  1582,  1386,   790,   745,  1055,    69,   748,  1573,  1079,
2763      760,   766,  1007,   776,   876,   782,    20,   796,    37,   807,
2764       20,  1076,   812,     7,   813,   988,   366,   816,   817,  1015,
2765       62,   353,   821,   822,   823,   354,   824,  1009,  1048,    67,
2766      946,   791,   792,   793,   794,  1605,   825,   673,  1174,   758,
2767       69,   134,  1122,   790,    62,   828,   452,  1095,   831,   104,
2768      774,   834,   836,   104,    20,  1130,   256,   257,     7,     7,
2769      754,    20,  1220,   400,   869,  1067,     4,  1151,  1181,   790,
2770       62,   850,    69,    20,    62,   840,    69,  1230,   869,    69,
2771       69,   791,   792,   793,   794,  1563,    20,  1161,  1162,   758,
2772       20,  1033,    62,    20,    20,   840,    62,   470,  1406,   692,
2773      693,  1163,   697,   698,   699,  1075,  1275,   791,   792,   793,
2774      794,   758,    69,  1016,  1016,   758,   355,   681,    62,   937,
2775      875,  1068,  1338,   936,   774,   681,    20,  1341,   938,  1137,
2776       62,     7,     7,     7,     7,     7,     7,     7,     7,     7,
2777        7,     7,  1541,  1275,   910,  1136,   775,    62,  1406,   356,
2778       69,   757,  1432,   207,    62,   772,   938,     7,  1461,   788,
2779      795,   210,  1194,  1547,    20,    62,     7,   511,   938,    67,
2780      869,  1016,   101,   940,   681,   869,    20,    69,    62,   525,
2781     1588,  1239,  1193,   694,   818,   940,   315,  1276,  1200,   102,
2782       62,    20,   949,    67,   936,   977,   971,  1281,   972,  1355,
2783     1283,    62,   937,   979,   984,   457,   248,   986,   586,   987,
2784      795,  1187,   413,   991,  1201,   414,   994,   942,   995,    67,
2785      775,   996,    62,    67,   997,   939,    20,   998,   103,  1127,
2786      999,   458,   868,    20,  1004,  1190,   795,   459,  1011,   938,
2787     1012,    67,  1523,  1017,  1021,    67,   415,  1499,  1503,  1029,
2788       20,    62,  1035,   973,     8,  1054,   940,  1265,  1069,  1077,
2789     1091,  1034,    69,  1368,  1346,  1034,    69,    67,  1266,   418,
2790      758,  1051,    62,   440,   759,   978,    20,  1098,   974,    67,
2791       20,  1099,   898,   901,   904,   907,   419,  1034,    69,   696,
2792      297,   975,  1125,  1565,   626,   629,   222,   633,    20,  1115,
2793      639,  1129,    20,     3,   885,  1202,    62,   254,   820,  1121,
2794       69,   156,  1295,  1479,    67,  1140,   231,  1203,  1555,  1185,
2795      128,  1480,    69,   104,    20,  1244,  1204,  1052,  1146,   765,
2796     1333,   673,   259,  1150,   768,  1154,    20,  1372,  1400,    69,
2797     1335,  1337,  1405,   946,  1095,  1408,    69,   969,  1112,  1567,
2798       67,  1053,  1205,    20,   153,   155,   155,    69,   328,  1165,
2799       20,   992,   571,   806,   572,   921,   772,   118,   691,   681,
2800       69,    20,  1578,   172,   269,  1167,  1353,   266,  1409,    62,
2801     1612,  1622,    69,  1245,    20,    62,   937,   788,  1595,  1086,
2802      122,   713,   194,    69,  1354,   271,    20,   119,   421,  1344,
2803       67,   722,   725,  1313,   120,  1392,   573,    20,  1602,   839,
2804      574,  1314,  1402,   870,    69,   835,  1482,   788,   100,   106,
2805      123,  1191,  1192,   938,   788,  1206,  1261,   124,    20,    62,
2806      963,   880,  1224,   759,  1355,  1527,  1526,  1188,  1233,   276,
2807      111,  1238,  1249,    69,   575,  1259,    20,   889,   758,  1267,
2808      168,  1417,   576,  1274,   423,   238,  1280,    20,  1414,  1282,
2809     1284,   406,  1457,  1104,    69,  1109,  1109,  1455,  1104,   425,
2810     1285,   886,  1025,  1286,  1297,  1436,   681,  1300,    20,     0,
2811     1301,  1302,  1262,  1307,     0,  1308,     0,     4,   838,  1311,
2812        0,  1312,     0,   788,     0,  1316,  1315,   840,    69,     0,
2813     1318,  1317,     0,  1320,  1319,  1216,     0,  1324,     0,   422,
2814        0,  1331,    20,     0,  1332,   465,     0,     0,   204,     0,
2815        0,     0,   169,     0,     0,     0,   841,     0,    67,     0,
2816     1175,  1178,     0,     0,    67,     0,   810,   985,     0,   205,
2817      220,     0,  1349,     0,     0,     0,  1356,     7,   104,     7,
2818        7,     0,     7,   842,  1365,   170,   781,  1376,   677,   843,
2819      230,   365,     0,     0,     0,   968,   844,     0,   845,     0,
2820        0,    69,   171,   461,     0,   462,     0,    69,    67,  1519,
2821      846,   233,  1521,     0,     0,    20,     0,     0,  1387,     0,
2822        0,    20,   847,     0,   806,   172,   311,  1016,   316,     0,
2823      681,     0,   325,   848,     0,     0,   391,   394,     0,     0,
2824        0,   759,  1413,   897,   900,   903,   906,   313,     0,   318,
2825     1415,    69,   563,   329,  1418,     7,     0,   543,     0,     0,
2826     1420,     0,   849,   173,   788,    20,     0,    62,     0,   544,
2827        0,   890,     0,     7,   545,     7,     7,     7,     7,     7,
2828        7,     0,     0,     0,  1431,   478,  1571,     0,     0,  1434,
2829      546,  1437,     0,     0,  1126,  1440,     0,  1443,   358,     0,
2830     1445,     0,  1447,  1451,     0,     0,  1330,  1454,   479,   494,
2831      495,   496,   497,   498,   499,   500,   501,   502,   503,   363,
2832        0,     0,    62,   937,     0,  1248,     0,   608,   609,   480,
2833     1464,   481,   610,     0,   547,   506,     0,  1466,     0,     0,
2834     1471,  1600,     0,   387,   508,     0,  1476,     0,     0,   548,
2835      549,     0,   478,  1157,  1490,     0,     0,     0,   625,   628,
2836      938,   632,     0,     0,   638,  1495,  1497,  1501,     0,  1504,
2837     1616,  1506,     0,   788,   788,   479,  1508,   940,  1509,   611,
2838        0,  1621,  1511,   416,     0,   482,   438,   454,  1514,   464,
2839        0,  1006,  1051,     0,  1517,   612,   480,  1520,   481,     0,
2840     1020,  1024,     7,     7,   424,     0,  1032,   451,   456,     0,
2841      467,     0,     0,  1534,     0,     0,    67,  1094,   613,   751,
2842        0,  1103,   763,     0,   550,   780,     0,     0,  1119,   805,
2843      788,   788,   690,     0,     0,     0,     0,     0,     0,   700,
2844      551,     0,     0,     0,  1559,     0,     0,     0,  1560,  1561,
2845        0,  1562,   482,     0,   483,   712,     0,     0,     0,    69,
2846        0,  1175,   788,     0,     0,   721,   724,   552,  1564,   553,
2847     1569,    67,  1053,    20,     0,     0,     0,     0,     0,     0,
2848        0,     0,  1581,     0,  1306,     0,     0,     0,  1585,     0,
2849        0,     0,   788,   860,   788,     0,   556,     0,     0,     0,
2850        0,   578,    59,    60,     0,     0,  1591,     0,  1321,  1592,
2851       61,    62,     0,  1597,    69,     0,    63,   566,     0,     0,
2852        0,   483,   585,     0,     0,     0,  1493,  1494,    20,   635,
2853        0,     0,    10,     0,     0,    13,    16,     0,    20,  1608,
2854        0,  1609,    64,   516,     0,   519,   522,     0,   526,     0,
2855      636,  1614,   837,  1615,     0,     0,     0,    65,     0,  1617,
2856        0,  1618,     0,     0,   411,  1619,  1620,     0,    59,    60,
2857        0,  1624,     0,     0,     0,     0,    61,    62,  1625,     0,
2858      589,     0,    63,  1218,     0,     0,   594,     0,     0,     0,
2859      597,     0,     0,   601,     0,   605,   608,   609,    10,     0,
2860      132,   610,     0,   139,   140,   141,   142,     0,    64,     0,
2861      703,   143,   144,   145,   146,   706,     0,     0,   709,     0,
2862        0,     0,   715,    65,     0,     0,     0,     0,   718,     0,
2863      788,   704,    10,    10,    10,     0,   707,   729,  1304,   710,
2864       66,     0,  1310,   716,     0,     0,   936,     0,   611,   719,
2865        0,     0,     0,    62,   937,     0,     0,     0,   730,     0,
2866       67,     0,   186,   749,   612,     0,   761,   767,     0,   777,
2867        0,   783,     0,   798,  1045,   808,     0,  1064,     0,     0,
2868      814,  1089,     0,     0,   753,     0,     0,   613,   770,     0,
2869       68,   938,   786,     0,     0,     0,   811,     0,     0,     0,
2870      939,   815,   826,    69,     0,     0,    66,     0,   940,     0,
2871       70,   829,     0,     0,   832,     0,     0,    20,     0,     0,
2872        0,     0,     0,   827,     0,   922,    67,   926,   926,     0,
2873      931,     0,   830,     0,     0,   833,     0,   852,     0,   941,
2874        0,     0,     0,     0,     0,     0,     0,  1395,  1398,     0,
2875        0,     0,   942,     0,   943,   298,    68,  1404,   865,   517,
2876        0,   520,   523,     0,   527,     0,   944,     0,     0,    69,
2877        0,    84,    85,    86,     0,   945,    70,     0,     0,   614,
2878        0,     0,     0,    20,     0,     0,     0,     0,  1546,    87,
2879       88,    89,     0,     0,     0,   946,   590,  1169,     0,     0,
2880        0,     0,   595,  1026,  1426,  1430,   598,     0,     0,   602,
2881        0,   606,     0,     0,   947,     0,   847,     0,    90,    91,
2882       92,   394,     0,  1106,   926,  1110,  1110,   926,  1106,     0,
2883        0,     0,     0,     0,     0,   759,  1460,     0,     0,    10,
2884        0,     0,     0,     0,  1198,    69,     0,     0,     0,     0,
2885        0,     0,     0,     0,  1226,     0,     0,   948,   951,    20,
2886     1235,     0,     0,    62,  1257,     0,  1470,   659,  1474,   980,
2887        0,     0,     0,  1586,  1587,  1485,     0,   660,     0,   965,
2888        0,     0,     0,   661,    10,    10,     0,   662,     0,     0,
2889      983,   663,     0,   426,     0,     0,     0,     0,   664,     0,
2890      665,     0,   427,   354,     0,     0,  1013,   428,   429,     0,
2891      666,   667,   668,     0,  1610,     0,     0,     0,  1037,     0,
2892        0,  1056,     0,     0,  1071,  1080,   430,  1014,   431,     0,
2893        0,     0,  1530,     0,     0,     0,     0,     0,     0,  1047,
2894        0,     0,  1065,     0,     0,  1073,  1090,     0,     0,     0,
2895      926,   506,     0,     0,     0,     0,     0,    10,    10,    10,
2896       10,    10,    10,    10,    10,    10,    10,    10,  1361,     0,
2897        0,   432,   433,     0,     0,     0,  1373,     0,     0,  1380,
2898        0,   434,   435,    10,     0,     0,     0,     0,     0,     0,
2899        0,     0,    10,   279,     0,     0,   280,     0,     0,     0,
2900      281,   282,   283,   284,  1575,   285,  1579,   286,   287,     0,
2901        0,   288,     0,     0,     0,     0,     0,     0,   436,   289,
2902        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
2903        0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
2904      292,  1168,   293,     0,     0,     0,     0,   294,     0,     0,
2905        0,     0,     0,     0,     0,    69,     0,     0,     0,     0,
2906        0,     0,  1170,     0,     0,     0,     0,     0,     0,    20,
2907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2908        0,  1435,     0,  1438,     0,     0,     0,  1441,  1195,  1444,
2909        0,  1208,  1446,     0,  1448,     0,     0,     0,  1225,     0,
2910        0,     0,     0,     0,  1234,     0,     0,  1240,  1250,  1199,
2911        0,     0,  1215,     0,     0,  1269,     0,     0,     0,  1227,
2912        0,     0,     0,     0,     0,  1237,     0,     0,  1247,  1258,
2913        0,     0,     0,     0,     0,     0,  1273,   532,   533,   534,
2914      535,   536,   537,   539,   540,   541,   542,     0,     0,     0,
2915        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2916        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2917        0,     0,     0,  1325,   607,     0,     0,     0,   630,     0,
2918        0,     0,     0,   640,   641,     0,     0,     0,     0,     0,
2919        0,     0,     0,     0,  1328,     0,     0,     0,     0,     0,
2920        0,     0,     0,     0,     0,  1543,     0,     0,     0,     0,
2921        0,     0,  1357,     0,     0,     0,     0,     0,     0,     0,
2922     1366,     0,     0,  1377,     0,     0,     0,     0,     0,     0,
2923        0,     0,     0,  1364,     0,     0,     0,     0,     0,     0,
2924        0,  1374,     0,     0,  1381,     0,     0,     0,     0,     0,
2925        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2926        0,     0,  1570,     0,     0,     0,     0,     0,     0,     0,
2927        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2928        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2929        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2930        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2931        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2932        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2933        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2934        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2935        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2936        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2937        0,     0,     0,    10,     0,    10,    10,     0,    10,     0,
2938        0,     0,  1477,     0,     0,     0,     0,     0,     0,     0,
2939        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2940        0,     0,     0,  1481,     0,     0,     0,     0,     0,     0,
2941        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2942        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2943        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2944        0,     0,     0,     0,     0,     0,     0,     0,     0,  1536,
2945        0,    10,     0,     0,     0,     0,     0,     0,     0,     0,
2946        0,     0,     0,     0,     0,     0,     0,     0,     0,    10,
2947     1545,    10,    10,    10,    10,    10,    10,     0,     0,     0,
2948        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2949        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2950        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2951        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2952        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2953        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2954        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2955        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2956        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2957        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2958        0,     0,  1173,     0,     0,     0,     0,     0,     0,     0,
2959        0,     0,     0,     0,     0,     0,     0,     0,    10,    10
2960 };
2961 
2962 static const yytype_int16 yycheck[] =
2963 {
2964       25,   518,   216,   773,   213,   215,   680,  1003,   673,   476,
2965      199,   923,   677,    39,    39,  1217,   682,   908,    43,   789,
2966      213,   927,    47,  1003,  1113,   927,   927,   909,    53,  1138,
2967      544,   927,    57,    58,   927,    32,    24,   551,   927,   553,
2968      746,  1138,     6,   211,    75,   919,   235,   256,   237,     3,
2969      930,  1299,   930,     4,   934,     4,   934,   939,   930,   269,
2970      924,   935,   934,   934,   946,     6,     3,     3,    93,     3,
2971        4,     5,     6,    98,     3,     4,     5,     6,   246,     3,
2972      746,  1124,   392,     6,     3,   919,    75,   978,   113,     3,
2973      188,  1116,   117,  1393,    66,     4,   121,     4,   122,   773,
2974      125,   935,   127,     6,     3,   130,   131,     3,   133,   134,
2975      135,     3,   176,    71,   148,     4,     3,     3,  1450,     4,
2976       86,   238,   147,   196,   149,    72,   178,   930,   255,   117,
2977      104,   934,   157,  1015,  1076,   257,   226,   651,   228,   653,
2978      654,   655,   219,   131,   111,   775,   219,    19,     4,     0,
2979     1450,   236,     4,   272,   179,     3,   185,   116,  1100,   236,
2980       32,   867,   154,   236,   156,   795,   845,   242,   295,   284,
2981      195,   286,   236,   295,   199,    67,   295,   143,   295,     3,
2982      265,   139,   207,   208,   209,   210,   211,   212,   213,   214,
2983      215,   216,  1524,   167,  1396,   241,  1423,   295,   149,   150,
2984     1427,   265,    61,   104,  1229,   295,   115,   131,   115,   398,
2985      235,    89,   237,   242,   888,   162,   241,  1097,   295,    89,
2986      295,    89,   295,   888,  1524,  1097,   115,   181,   216,   217,
2987      115,    73,   131,   187,   170,   934,   224,  1117,  1116,  1117,
2988      194,   144,   273,   295,  1116,  1117,  1117,    89,  1120,   295,
2989      187,   187,   286,   278,   141,   141,   115,    99,     3,   115,
2990       89,   927,   941,   187,   295,   944,   167,   181,   187,   241,
2991      295,   295,   140,   187,  1156,    89,   301,  1111,   303,    93,
2992        4,  1483,   307,   170,   273,   181,   173,   173,   187,   599,
2993      199,   187,   201,   259,   201,   187,  1160,   182,   183,   184,
2994      187,   187,   161,  1412,   330,   330,   332,   332,   334,   334,
2995     1184,   336,   337,  1116,  1411,  1563,   342,   342,   344,   344,
2996      261,   245,   236,   295,   349,   197,  1217,   352,   295,   295,
2997     1532,   295,   320,   321,   322,  1105,   545,   260,   261,   187,
2998      236,   295,   367,   552,   295,     3,   295,   250,  1391,  1229,
2999     1375,  1229,  1232,   245,  1232,   214,     1,  1229,   295,   295,
3000        5,   295,    89,   192,    17,   194,   295,   392,  1248,  1458,
3001      395,   396,   295,   398,  1576,   543,    29,    30,   403,   247,
3002      405,   295,   407,  1265,  1266,   410,   295,  1052,  1067,    42,
3003      121,   115,   295,   390,   295,   237,   238,   245,   257,    89,
3004      148,  1275,    55,  1399,  1513,   264,    59,    60,   295,   295,
3005      295,   281,    65,    66,   402,    68,  1513,   295,  1117,  1399,
3006      276,   277,    67,   118,   238,   295,   126,   295,   338,    64,
3007      302,  1321,    71,    72,   117,   460,   181,    76,   157,   281,
3008     1322,  1323,   187,     6,   258,   295,   471,    82,  1322,  1323,
3009      475,   109,   281,   295,    89,    90,   101,   102,   103,   112,
3010      184,   114,   487,  1572,     4,   161,   295,   281,   378,    86,
3011      158,  1467,  1354,   126,   132,  1572,   160,   205,   131,   338,
3012      505,   295,   479,   672,   123,   510,   206,  1467,   233,   514,
3013      515,   236,   127,    77,    78,   153,   521,   155,    89,   524,
3014      139,   241,  1384,   528,  1386,  1396,   122,   160,    84,   144,
3015     1384,    63,  1386,   538,   233,  1221,    77,   236,   390,   378,
3016      210,   267,   547,   162,   159,   384,   385,     4,    83,   187,
3017       89,    82,     3,   530,    89,   266,   270,    89,    89,    90,
3018      164,   194,   126,   200,   758,  1457,    65,   295,   238,   408,
3019      409,   209,  1458,    85,   281,  1221,  1458,  1458,  1554,   212,
3020     1027,   586,  1458,   180,   295,  1458,   591,   294,   295,  1458,
3021       89,   224,   225,   292,  1554,   275,   295,   212,   169,   604,
3022      215,   790,  1352,   174,   136,  1475,   239,   203,   282,   279,
3023      148,   130,  1483,   144,   619,   151,   231,   790,   251,   624,
3024      279,  1275,   627,   238,   239,   295,   631,   479,    89,   287,
3025      150,    68,   637,    70,   148,   254,   168,    74,   236,   194,
3026      278,   646,   647,   648,  1138,   650,   651,   179,   653,   654,
3027      655,   656,   657,   658,    94,    89,   194,   188,   115,   190,
3028     1522,  1532,   259,    62,   669,   930,   281,   672,  1522,   934,
3029      675,   676,   221,   678,   106,   680,   295,   682,   530,   684,
3030      295,   212,   687,   308,   689,   104,   319,   692,   693,   138,
3031       89,   125,   697,   698,   699,   129,   701,   256,   166,   238,
3032      231,   100,   101,   102,   103,  1576,   711,   148,  1353,   108,
3033      281,   275,   274,    62,    89,   720,   177,   243,   723,   258,
3034       95,   726,   727,   258,   295,   269,   183,   184,   353,   354,
3035      181,   295,   284,   366,   286,   234,   187,   264,    98,    62,
3036       89,   746,   281,   295,    89,   157,   281,   165,   286,   281,
3037      281,   100,   101,   102,   103,  1505,   295,    26,    27,   108,
3038      295,   110,    89,   295,   295,   157,    89,   400,   114,   608,
3039      609,    40,   611,   612,   613,    64,   122,   100,   101,   102,
3040      103,   108,   281,   233,   233,   108,   220,   236,    89,    90,
3041      758,   290,    97,    82,    95,   236,   295,   224,   127,   988,
3042       89,   426,   427,   428,   429,   430,   431,   432,   433,   434,
3043      435,   436,  1458,   122,   819,   988,   191,    89,   114,   253,
3044      281,   673,   178,   158,    89,   677,   127,   452,   248,   681,
3045      229,   166,  1097,   249,   295,    89,   461,   470,   127,   238,
3046      286,   233,   107,   144,   236,   286,   295,   281,    89,   482,
3047      105,  1116,  1097,   610,   695,   144,   237,   203,    87,   124,
3048       89,   295,   867,   238,    82,   137,   871,  1131,   873,   272,
3049     1134,    89,    90,   878,   879,    23,   211,   882,   511,   884,
3050      229,  1075,   392,   888,   113,   392,   891,   188,   893,   238,
3051      191,   896,    89,   238,   899,   136,   295,   902,   163,   970,
3052      905,    49,   754,   295,   909,  1095,   229,    55,   913,   127,
3053      915,   238,  1449,   918,   919,   238,   392,  1411,  1412,   924,
3054      295,    89,   927,     9,     1,   930,   144,   168,   933,   934,
3055      935,   280,   281,  1229,  1205,   280,   281,   238,   179,   392,
3056      108,   159,    89,   395,   271,   217,   295,   938,    34,   238,
3057      295,   938,   791,   792,   793,   794,   392,   280,   281,   610,
3058      224,    47,   967,  1513,   533,   534,   179,   536,   295,   945,
3059      539,   976,   295,     3,   774,   204,    89,   212,   695,   947,
3060      281,   103,  1143,  1391,   238,   990,   199,   216,  1482,  1068,
3061       67,  1391,   281,   258,   295,  1116,   225,   215,  1003,   146,
3062     1190,   148,   213,  1008,   676,  1010,   295,  1229,  1275,   281,
3063     1200,  1201,  1276,   231,   243,  1279,   281,   869,   943,  1513,
3064      238,   239,   251,   295,   101,   102,   103,   281,   241,  1034,
3065      295,   888,   145,   230,   147,   842,   888,    20,   607,   236,
3066      281,   295,  1524,   222,   223,  1050,   214,   214,  1279,    89,
3067     1590,  1613,   281,  1116,   295,    89,    90,   909,  1555,   934,
3068       20,   630,   241,   281,   232,   215,   295,    50,   392,  1204,
3069      238,   640,   641,  1166,    57,  1264,   189,   295,  1572,    69,
3070      193,  1166,  1275,   755,   281,   726,   176,   939,    57,    58,
3071       50,  1096,  1097,   127,   946,  1100,  1120,    57,   295,    89,
3072      867,   773,  1107,   271,   272,   195,  1449,  1075,  1113,   216,
3073       58,  1116,  1117,   281,   227,  1120,   295,   789,   108,  1124,
3074       77,  1296,   235,  1128,   392,   201,  1131,   295,  1294,  1134,
3075     1135,   369,  1353,   940,   281,   942,   943,  1352,   945,   392,
3076      170,   774,   919,   173,  1149,  1335,   236,  1152,   295,    -1,
3077     1155,  1156,  1120,  1158,    -1,  1160,    -1,   187,   727,  1164,
3078       -1,  1166,    -1,  1015,    -1,  1171,  1171,   157,   281,    -1,
3079     1176,  1176,    -1,  1179,  1179,   265,    -1,  1182,    -1,   392,
3080       -1,  1186,   295,    -1,  1189,   398,    -1,    -1,   157,    -1,
3081       -1,    -1,   149,    -1,    -1,    -1,   186,    -1,   238,    -1,
3082     1052,  1053,    -1,    -1,   238,    -1,   684,   879,    -1,   157,
3083      179,    -1,  1217,    -1,    -1,    -1,  1221,   842,   258,   844,
3084      845,    -1,   847,   213,  1229,   182,   192,  1232,   194,   219,
3085      199,   308,    -1,    -1,    -1,   868,   226,    -1,   228,    -1,
3086       -1,   281,   199,   283,    -1,   285,    -1,   281,   238,  1439,
3087      240,   199,  1442,    -1,    -1,   295,    -1,    -1,  1263,    -1,
3088       -1,   295,   252,    -1,   230,   222,   235,   233,   237,    -1,
3089      236,    -1,   241,   263,    -1,    -1,   353,   354,    -1,    -1,
3090       -1,   271,  1287,   791,   792,   793,   794,   235,    -1,   237,
3091     1295,   281,   505,   241,  1299,   920,    -1,    79,    -1,    -1,
3092     1305,    -1,   292,   260,  1156,   295,    -1,    89,    -1,    91,
3093       -1,   789,    -1,   938,    96,   940,   941,   942,   943,   944,
3094      945,    -1,    -1,    -1,  1329,   109,  1516,    -1,    -1,  1334,
3095      112,  1336,    -1,    -1,   967,  1340,    -1,  1342,   307,    -1,
3096     1345,    -1,  1347,  1348,    -1,    -1,  1185,  1352,   132,   427,
3097      428,   429,   430,   431,   432,   433,   434,   435,   436,   307,
3098       -1,    -1,    89,    90,    -1,    92,    -1,    71,    72,   153,
3099     1375,   155,    76,    -1,   156,   452,    -1,  1382,    -1,    -1,
3100     1385,  1571,    -1,   352,   461,    -1,  1391,    -1,    -1,   171,
3101      172,    -1,   109,  1026,  1399,    -1,    -1,    -1,   533,   534,
3102      127,   536,    -1,    -1,   539,  1410,  1411,  1412,    -1,  1414,
3103     1600,  1416,    -1,  1265,  1266,   132,  1421,   144,  1423,   123,
3104       -1,  1611,  1427,   392,    -1,   209,   395,   396,  1433,   398,
3105       -1,   909,   159,    -1,  1439,   139,   153,  1442,   155,    -1,
3106      918,   919,  1067,  1068,   392,    -1,   924,   395,   396,    -1,
3107      398,    -1,    -1,  1458,    -1,    -1,   238,   935,   162,   672,
3108       -1,   939,   675,    -1,   246,   678,    -1,    -1,   946,   682,
3109     1322,  1323,   607,    -1,    -1,    -1,    -1,    -1,    -1,   614,
3110      262,    -1,    -1,    -1,  1489,    -1,    -1,    -1,  1493,  1494,
3111       -1,  1496,   209,    -1,   278,   630,    -1,    -1,    -1,   281,
3112       -1,  1353,  1354,    -1,    -1,   640,   641,   289,  1513,   291,
3113     1515,   238,   239,   295,    -1,    -1,    -1,    -1,    -1,    -1,
3114       -1,    -1,  1527,    -1,  1157,    -1,    -1,    -1,  1533,    -1,
3115       -1,    -1,  1384,   746,  1386,    -1,   505,    -1,    -1,    -1,
3116       -1,   510,    80,    81,    -1,    -1,  1551,    -1,  1181,  1554,
3117       88,    89,    -1,  1558,   281,    -1,    94,   505,    -1,    -1,
3118       -1,   278,   510,    -1,    -1,    -1,  1405,  1406,   295,   538,
3119       -1,    -1,     1,    -1,    -1,     4,     5,    -1,   295,  1584,
3120       -1,  1586,   120,   478,    -1,   480,   481,    -1,   483,    -1,
3121      538,  1596,   727,  1598,    -1,    -1,    -1,   135,    -1,  1604,
3122       -1,  1606,    -1,    -1,   142,  1610,  1611,    -1,    80,    81,
3123       -1,  1616,    -1,    -1,    -1,    -1,    88,    89,  1623,    -1,
3124      515,    -1,    94,  1101,    -1,    -1,   521,    -1,    -1,    -1,
3125      525,    -1,    -1,   528,    -1,   530,    71,    72,    67,    -1,
3126       69,    76,    -1,    35,    36,    37,    38,    -1,   120,    -1,
3127      619,    43,    44,    45,    46,   624,    -1,    -1,   627,    -1,
3128       -1,    -1,   631,   135,    -1,    -1,    -1,    -1,   637,    -1,
3129     1522,   619,   101,   102,   103,    -1,   624,   646,  1156,   627,
3130      218,    -1,  1160,   631,    -1,    -1,    82,    -1,   123,   637,
3131       -1,    -1,    -1,    89,    90,    -1,    -1,    -1,   646,    -1,
3132      238,    -1,   131,   672,   139,    -1,   675,   676,    -1,   678,
3133       -1,   680,    -1,   682,   927,   684,    -1,   930,    -1,    -1,
3134      689,   934,    -1,    -1,   672,    -1,    -1,   162,   676,    -1,
3135      268,   127,   680,    -1,    -1,    -1,   684,    -1,    -1,    -1,
3136      136,   689,   711,   281,    -1,    -1,   218,    -1,   144,    -1,
3137      288,   720,    -1,    -1,   723,    -1,    -1,   295,    -1,    -1,
3138       -1,    -1,    -1,   711,    -1,   842,   238,   844,   845,    -1,
3139      847,    -1,   720,    -1,    -1,   723,    -1,   746,    -1,   175,
3140       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1265,  1266,    -1,
3141       -1,    -1,   188,    -1,   190,   224,   268,  1275,   746,   478,
3142       -1,   480,   481,    -1,   483,    -1,   202,    -1,    -1,   281,
3143       -1,    11,    12,    13,    -1,   211,   288,    -1,    -1,   254,
3144       -1,    -1,    -1,   295,    -1,    -1,    -1,    -1,  1461,    29,
3145       30,    31,    -1,    -1,    -1,   231,   515,  1050,    -1,    -1,
3146       -1,    -1,   521,   920,  1322,  1323,   525,    -1,    -1,   528,
3147       -1,   530,    -1,    -1,   250,    -1,   252,    -1,    58,    59,
3148       60,   938,    -1,   940,   941,   942,   943,   944,   945,    -1,
3149       -1,    -1,    -1,    -1,    -1,   271,  1354,    -1,    -1,   308,
3150       -1,    -1,    -1,    -1,  1097,   281,    -1,    -1,    -1,    -1,
3151       -1,    -1,    -1,    -1,  1107,    -1,    -1,   293,   867,   295,
3152     1113,    -1,    -1,    89,  1117,    -1,  1384,     8,  1386,   878,
3153       -1,    -1,    -1,  1546,  1547,  1393,    -1,    18,    -1,   867,
3154       -1,    -1,    -1,    24,   353,   354,    -1,    28,    -1,    -1,
3155      878,    32,    -1,   119,    -1,    -1,    -1,    -1,    39,    -1,
3156       41,    -1,   128,   129,    -1,    -1,   915,   133,   134,    -1,
3157       51,    52,    53,    -1,  1587,    -1,    -1,    -1,   927,    -1,
3158       -1,   930,    -1,    -1,   933,   934,   152,   915,   154,    -1,
3159       -1,    -1,  1450,    -1,    -1,    -1,    -1,    -1,    -1,   927,
3160       -1,    -1,   930,    -1,    -1,   933,   934,    -1,    -1,    -1,
3161     1067,  1068,    -1,    -1,    -1,    -1,    -1,   426,   427,   428,
3162      429,   430,   431,   432,   433,   434,   435,   436,  1221,    -1,
3163       -1,   197,   198,    -1,    -1,    -1,  1229,    -1,    -1,  1232,
3164       -1,   207,   208,   452,    -1,    -1,    -1,    -1,    -1,    -1,
3165       -1,    -1,   461,     7,    -1,    -1,    10,    -1,    -1,    -1,
3166       14,    15,    16,    17,  1522,    19,  1524,    21,    22,    -1,
3167       -1,    25,    -1,    -1,    -1,    -1,    -1,    -1,   244,    33,
3168       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
3169       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
3170       54,  1050,    56,    -1,    -1,    -1,    -1,    61,    -1,    -1,
3171       -1,    -1,    -1,    -1,    -1,   281,    -1,    -1,    -1,    -1,
3172       -1,    -1,  1050,    -1,    -1,    -1,    -1,    -1,    -1,   295,
3173       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3174       -1,  1334,    -1,  1336,    -1,    -1,    -1,  1340,  1097,  1342,
3175       -1,  1100,  1345,    -1,  1347,    -1,    -1,    -1,  1107,    -1,
3176       -1,    -1,    -1,    -1,  1113,    -1,    -1,  1116,  1117,  1097,
3177       -1,    -1,  1100,    -1,    -1,  1124,    -1,    -1,    -1,  1107,
3178       -1,    -1,    -1,    -1,    -1,  1113,    -1,    -1,  1116,  1117,
3179       -1,    -1,    -1,    -1,    -1,    -1,  1124,   494,   495,   496,
3180      497,   498,   499,   500,   501,   502,   503,    -1,    -1,    -1,
3181       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3182       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3183       -1,    -1,    -1,  1182,   531,    -1,    -1,    -1,   535,    -1,
3184       -1,    -1,    -1,   540,   541,    -1,    -1,    -1,    -1,    -1,
3185       -1,    -1,    -1,    -1,  1182,    -1,    -1,    -1,    -1,    -1,
3186       -1,    -1,    -1,    -1,    -1,  1458,    -1,    -1,    -1,    -1,
3187       -1,    -1,  1221,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3188     1229,    -1,    -1,  1232,    -1,    -1,    -1,    -1,    -1,    -1,
3189       -1,    -1,    -1,  1221,    -1,    -1,    -1,    -1,    -1,    -1,
3190       -1,  1229,    -1,    -1,  1232,    -1,    -1,    -1,    -1,    -1,
3191       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3192       -1,    -1,  1515,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3193       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3194       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3195       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3196       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3197       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3198       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3199       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3200       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3201       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3202       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3203       -1,    -1,    -1,   842,    -1,   844,   845,    -1,   847,    -1,
3204       -1,    -1,  1391,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3205       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3206       -1,    -1,    -1,  1391,    -1,    -1,    -1,    -1,    -1,    -1,
3207       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3208       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3209       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3210       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1458,
3211       -1,   920,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3212       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   938,
3213     1458,   940,   941,   942,   943,   944,   945,    -1,    -1,    -1,
3214       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3215       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3216       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3217       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3218       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3219       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3220       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3221       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3222       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3223       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3224       -1,    -1,  1051,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3225       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1067,  1068
3226 };
3227 
3228 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
3229    symbol of state STATE-NUM.  */
3230 static const yytype_uint16 yystos[] =
3231 {
3232        0,   116,   298,     3,   187,   245,   300,   549,   551,   663,
3233      764,     0,   550,   764,   549,   664,   764,   118,   302,   111,
3234      295,   297,   395,     6,   261,   665,   695,   765,     4,   766,
3235      117,   301,   131,   396,   423,   426,   549,   552,   764,   698,
3236      765,   297,   766,   766,   161,   488,   423,   427,   158,   397,
3237      483,   297,   395,   766,   297,   160,   487,   489,   299,    80,
3238       81,    88,    89,    94,   120,   135,   218,   238,   268,   281,
3239      288,   297,   333,   334,   349,   350,   359,   407,   439,   609,
3240      650,   711,   737,   754,    11,    12,    13,    29,    30,    31,
3241       58,    59,    60,   484,   205,   398,   587,   297,   766,   297,
3242      350,   107,   124,   163,   258,   297,   350,   384,   416,   495,
3243      690,   737,   766,   766,   115,   670,   766,   351,    20,    50,
3244       57,   360,    20,    50,    57,   408,   766,   766,   551,   652,
3245      766,   738,   764,   126,   275,   332,   419,   728,   297,    35,
3246       36,    37,    38,    43,    44,    45,    46,   588,   206,   399,
3247      589,   297,   388,   551,   493,   551,   493,   691,   766,   297,
3248      766,   670,   297,   765,   297,   297,   766,   297,    77,   149,
3249      182,   199,   222,   260,   327,   468,   538,   576,   614,   651,
3250      696,   729,   297,     5,   297,   445,   764,   765,   766,   767,
3251      297,   297,   297,   297,   241,   620,   297,    84,   339,   385,
3252      301,   301,   294,   297,   350,   737,   762,   327,   766,   670,
3253      327,   328,   469,   539,   577,   615,   697,   210,   279,   297,
3254      350,   596,   650,   734,   446,   766,   297,   341,   552,   297,
3255      350,   650,   690,   737,   267,   417,   709,   496,   709,   270,
3256      715,   763,   297,   297,   297,   297,    78,   297,   327,   329,
3257      332,   150,   297,   466,   468,   766,   183,   184,   297,   538,
3258      540,   542,   543,   670,   201,   297,   576,   578,   670,   223,
3259      297,   614,   616,   620,   297,   695,   696,   765,   765,     7,
3260       10,    14,    15,    16,    17,    19,    21,    22,    25,    33,
3261       42,    48,    54,    56,    61,   735,   295,   445,   764,   765,
3262      766,   766,   164,   340,   497,   200,   580,   710,    83,   297,
3263      336,   350,   690,   737,   297,   336,   350,   690,   737,   766,
3264       73,    99,   237,   297,   320,   350,   368,   646,   650,   737,
3265      330,   332,   467,   766,   541,   542,   276,   277,   544,   670,
3266      730,   731,   579,   670,   617,   620,   297,   297,   297,   494,
3267      552,   297,   581,   125,   129,   220,   253,   297,   350,   389,
3268      418,   420,   680,   737,   338,   551,   766,   765,   765,   765,
3269      297,   395,   297,   395,   297,   395,   297,   297,   544,   297,
3270      395,   297,   395,   297,   140,   247,   297,   350,   449,   669,
3271      491,   551,   421,   422,   551,   390,   681,    85,   337,   342,
3272      766,   297,   282,   369,   741,   647,   741,   544,   670,   670,
3273      423,   142,   297,   333,   334,   349,   350,   359,   407,   439,
3274      451,   609,   650,   711,   737,   754,   119,   128,   133,   134,
3275      152,   154,   197,   198,   207,   208,   244,   297,   350,   405,
3276      420,   432,   435,   437,   472,   476,   572,   574,   590,   592,
3277      661,   737,   177,   297,   350,   526,   737,    23,    49,    55,
3278      343,   283,   285,   297,   350,   650,   690,   737,   742,   746,
3279      766,   765,   297,   297,   297,   670,   670,   297,   109,   132,
3280      153,   155,   209,   278,   391,   428,   434,   452,   474,   478,
3281      594,   732,   551,   668,   668,   668,   668,   668,   668,   668,
3282      668,   668,   668,   668,   516,   527,   551,   297,   551,   748,
3283      747,   766,   297,   297,   734,   392,   428,   434,   423,   428,
3284      434,   475,   428,   434,   479,   766,   428,   434,   733,   297,
3285      130,   424,   424,   424,   424,   424,   424,   424,   573,   424,
3286      424,   424,   424,    79,    91,    96,   112,   156,   171,   172,
3287      246,   262,   289,   291,   297,   331,   350,   354,   363,   400,
3288      480,   512,   514,   650,   666,   699,   737,   755,   757,   287,
3289      752,   145,   147,   189,   193,   227,   235,   297,   350,   458,
3290      462,   555,   563,   625,   640,   737,   766,   297,   297,   428,
3291      434,   429,   497,   297,   428,   434,   297,   428,   434,   595,
3292      297,   428,   434,   423,   425,   428,   434,   424,    71,    72,
3293       76,   123,   139,   162,   254,   318,   319,   324,   415,   433,
3294      448,   492,   656,   682,   436,   656,   682,   438,   656,   682,
3295      424,   477,   656,   682,   297,   350,   737,   575,   656,   682,
3296      424,   424,   185,   242,   545,   657,   662,   332,   517,   552,
3297      542,   401,   297,   513,   515,   667,   517,   542,   517,     8,
3298       18,    24,    28,    32,    39,    41,    51,    52,    53,   753,
3299      151,   470,   743,   148,   456,   459,   463,   194,   556,   567,
3300      564,   236,   626,   644,   641,   297,   297,   359,   297,   406,
3301      656,   682,   670,   670,   318,   325,   448,   670,   670,   670,
3302      656,   683,   297,   350,   737,   297,   350,   737,   297,   350,
3303      737,   473,   656,   682,   297,   350,   737,   297,   350,   737,
3304      591,   656,   682,   593,   656,   682,   546,   658,   297,   350,
3305      737,   297,   297,   297,   297,   517,   297,   517,   297,   517,
3306      297,   517,   297,   297,   297,   297,   471,    93,   297,   350,
3307      355,   650,   690,   737,   181,   465,   536,   552,   108,   271,
3308      297,   350,   386,   650,   716,   146,   297,   350,   456,   460,
3309      737,   536,   552,   566,    95,   191,   297,   350,   361,   559,
3310      650,   192,   297,   350,   561,   567,   737,   536,   552,   643,
3311       62,   100,   101,   102,   103,   229,   297,   303,   350,   370,
3312      372,   374,   376,   386,   629,   650,   230,   297,   350,   631,
3313      644,   737,   297,   297,   350,   737,   297,   297,   319,   326,
3314      492,   297,   297,   297,   297,   297,   350,   737,   297,   350,
3315      737,   297,   350,   737,   297,   657,   297,   656,   682,    69,
3316      157,   186,   213,   219,   226,   228,   240,   252,   263,   292,
3317      297,   315,   350,   386,   481,   547,   602,   610,   623,   627,
3318      650,   654,   678,   700,   716,   737,   758,   356,   552,   286,
3319      456,   457,   750,   387,   695,   765,   106,   382,   717,   461,
3320      456,   567,   568,   750,   362,   466,   766,   382,   562,   456,
3321      644,   645,   750,   304,   540,   542,   371,   578,   670,   373,
3322      578,   670,   375,   578,   670,   377,   578,   670,   382,   632,
3323      297,    68,    70,    74,   314,   316,   317,   321,   482,   548,
3324       67,   312,   551,   739,   611,   312,   551,   624,   642,   642,
3325      655,   551,   677,   679,   701,   759,    82,    90,   127,   136,
3326      144,   175,   188,   190,   202,   211,   231,   250,   293,   297,
3327      335,   350,   352,   430,   440,   454,   522,   553,   557,   582,
3328      597,   633,   673,   678,   716,   737,   760,   537,   766,   552,
3329      749,   297,   297,     9,    34,    47,   383,   137,   217,   297,
3330      350,   443,   607,   737,   297,   456,   297,   297,   104,   378,
3331      560,   297,   566,   567,   297,   297,   297,   297,   297,   297,
3332      167,   378,   502,   630,   297,   643,   644,   221,   612,   256,
3333      686,   297,   297,   350,   737,   138,   233,   297,   447,   637,
3334      644,   297,   481,   637,   644,   758,   551,   729,   196,   297,
3335      570,   610,   644,   110,   280,   297,   303,   350,   370,   372,
3336      374,   376,   386,   393,   629,   650,   736,   737,   166,   500,
3337      628,   159,   215,   239,   297,   335,   350,   352,   430,   454,
3338      485,   600,   633,   648,   650,   737,    65,   234,   290,   297,
3339      309,   350,   639,   737,   756,    64,   212,   297,   307,   335,
3340      350,   352,   430,   454,   485,   599,   600,   633,   648,   650,
3341      737,   297,   481,   637,   644,   243,   659,   353,   422,   426,
3342      431,   441,   643,   644,   312,   464,   551,   523,   642,   312,
3343      551,   565,   565,   583,   642,   464,   598,   634,   643,   644,
3344      674,   765,   274,   726,   761,   297,   766,   339,   751,   297,
3345      269,   444,   712,   378,   608,   379,   540,   542,    75,   273,
3346      297,   322,   724,   503,   540,   542,   297,   322,   724,   613,
3347      297,   264,   687,   702,   297,   643,   638,   766,   603,   734,
3348      571,    26,    27,    40,   394,   297,   501,   297,   350,   650,
3349      737,   486,   490,   764,   536,   552,   601,   740,   552,   649,
3350      653,    98,   310,   366,   642,   516,   308,   695,   765,   659,
3351      620,   297,   297,   307,   335,   350,   430,   454,   650,   737,
3352       87,   113,   204,   216,   225,   251,   297,   347,   350,   402,
3353      585,   605,   621,   659,   675,   737,   265,   442,   644,   704,
3354      284,   455,   744,   750,   297,   350,   650,   737,   481,   554,
3355      165,   498,   558,   297,   350,   650,   736,   737,   297,   335,
3356      350,   352,   454,   553,   557,   599,   633,   737,    92,   297,
3357      350,   352,   357,   430,   454,   485,   648,   650,   737,   297,
3358      454,   673,   765,   727,    63,   168,   179,   297,   305,   350,
3359      440,   504,   530,   737,   297,   122,   203,   413,   584,   713,
3360      297,   413,   297,   413,   297,   170,   173,   323,   510,   517,
3361      518,   510,   517,   518,   725,   503,   257,   297,   688,   703,
3362      297,   297,   297,   643,   644,   313,   766,   297,   297,   610,
3363      644,   297,   297,   623,   627,   297,   395,   297,   395,   297,
3364      395,   766,   169,   174,   297,   350,   508,   520,   737,   637,
3365      670,   297,   297,   620,   660,   620,   403,   620,    97,   364,
3366      586,   224,   606,   618,   618,   622,   364,   676,   705,   297,
3367      378,   502,   745,   214,   232,   272,   297,   350,   386,   604,
3368      635,   650,   716,   718,   737,   297,   350,   352,   361,   430,
3369      454,   553,   559,   650,   737,   499,   297,   350,   352,   430,
3370      650,   737,   358,   430,    86,   143,   259,   297,   344,   453,
3371      692,   306,   542,   505,   643,   644,   531,   643,   644,   414,
3372      561,   567,   631,   637,   644,   413,   114,   404,   413,   584,
3373      714,   511,   519,   297,   725,   297,   689,   702,   297,   718,
3374      297,   367,   404,   509,   637,   643,   644,   521,   637,   643,
3375      644,   297,   178,   528,   297,   650,   620,   297,   650,   365,
3376      297,   650,   619,   297,   650,   297,   650,   297,   650,   121,
3377      266,   297,   409,   706,   297,   744,   750,   740,   636,   643,
3378      644,   248,   671,   719,   297,   553,   297,   345,   637,   643,
3379      644,   297,   637,   643,   644,   693,   297,   350,   440,   504,
3380      530,   737,   176,   506,   524,   644,   704,   378,   502,   532,
3381      297,   322,   724,   670,   670,   297,   141,   297,   450,   517,
3382      518,   297,   510,   517,   297,   255,   297,   684,   297,   297,
3383      528,   297,   528,   529,   297,   348,    66,   297,   311,   620,
3384      297,   620,   180,   344,   410,   533,   692,   195,   524,   569,
3385      644,   704,   707,   729,   297,   303,   350,   370,   372,   374,
3386      376,   386,   629,   650,   736,   737,   766,   249,   672,   720,
3387      322,   346,   724,   404,   694,   517,   378,   502,   507,   297,
3388      297,   297,   297,   750,   297,   450,   510,   517,   518,   297,
3389      650,   620,   534,   637,   643,   644,   411,   524,   569,   644,
3390      704,   297,   378,   502,   708,   297,   766,   766,   105,   380,
3391      721,   297,   297,   322,   724,   497,   525,   297,   685,   718,
3392      620,   510,   517,   518,   535,   378,   412,   502,   297,   297,
3393      766,   381,   587,   722,   297,   297,   620,   297,   297,   297,
3394      297,   620,   589,   723,   297,   297
3395 };
3396 
3397 #define yyerrok		(yyerrstatus = 0)
3398 #define yyclearin	(yychar = YYEMPTY)
3399 #define YYEMPTY		(-2)
3400 #define YYEOF		0
3401 
3402 #define YYACCEPT	goto yyacceptlab
3403 #define YYABORT		goto yyabortlab
3404 #define YYERROR		goto yyerrorlab
3405 
3406 
3407 /* Like YYERROR except do call yyerror.  This remains here temporarily
3408    to ease the transition to the new meaning of YYERROR, for GCC.
3409    Once GCC version 2 has supplanted version 1, this can go.  */
3410 
3411 #define YYFAIL		goto yyerrlab
3412 
3413 #define YYRECOVERING()  (!!yyerrstatus)
3414 
3415 #define YYBACKUP(Token, Value)					\
3416 do								\
3417   if (yychar == YYEMPTY && yylen == 1)				\
3418     {								\
3419       yychar = (Token);						\
3420       yylval = (Value);						\
3421       yytoken = YYTRANSLATE (yychar);				\
3422       YYPOPSTACK (1);						\
3423       goto yybackup;						\
3424     }								\
3425   else								\
3426     {								\
3427       yyerror (YY_("syntax error: cannot back up")); \
3428       YYERROR;							\
3429     }								\
3430 while (YYID (0))
3431 
3432 
3433 #define YYTERROR	1
3434 #define YYERRCODE	256
3435 
3436 
3437 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
3438    If N is 0, then set CURRENT to the empty location which ends
3439    the previous symbol: RHS[0] (always defined).  */
3440 
3441 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
3442 #ifndef YYLLOC_DEFAULT
3443 # define YYLLOC_DEFAULT(Current, Rhs, N)				\
3444     do									\
3445       if (YYID (N))                                                    \
3446 	{								\
3447 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
3448 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
3449 	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
3450 	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
3451 	}								\
3452       else								\
3453 	{								\
3454 	  (Current).first_line   = (Current).last_line   =		\
3455 	    YYRHSLOC (Rhs, 0).last_line;				\
3456 	  (Current).first_column = (Current).last_column =		\
3457 	    YYRHSLOC (Rhs, 0).last_column;				\
3458 	}								\
3459     while (YYID (0))
3460 #endif
3461 
3462 
3463 /* YY_LOCATION_PRINT -- Print the location on the stream.
3464    This macro was not mandated originally: define only if we know
3465    we won't break user code: when these are the locations we know.  */
3466 
3467 #ifndef YY_LOCATION_PRINT
3468 # if YYLTYPE_IS_TRIVIAL
3469 #  define YY_LOCATION_PRINT(File, Loc)			\
3470      fprintf (File, "%d.%d-%d.%d",			\
3471 	      (Loc).first_line, (Loc).first_column,	\
3472 	      (Loc).last_line,  (Loc).last_column)
3473 # else
3474 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
3475 # endif
3476 #endif
3477 
3478 
3479 /* YYLEX -- calling `yylex' with the right arguments.  */
3480 
3481 #ifdef YYLEX_PARAM
3482 # define YYLEX yylex (YYLEX_PARAM)
3483 #else
3484 # define YYLEX yylex ()
3485 #endif
3486 
3487 /* Enable debugging if requested.  */
3488 #if YYDEBUG
3489 
3490 # ifndef YYFPRINTF
3491 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
3492 #  define YYFPRINTF fprintf
3493 # endif
3494 
3495 # define YYDPRINTF(Args)			\
3496 do {						\
3497   if (yydebug)					\
3498     YYFPRINTF Args;				\
3499 } while (YYID (0))
3500 
3501 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
3502 do {									  \
3503   if (yydebug)								  \
3504     {									  \
3505       YYFPRINTF (stderr, "%s ", Title);					  \
3506       yy_symbol_print (stderr,						  \
3507 		  Type, Value); \
3508       YYFPRINTF (stderr, "\n");						  \
3509     }									  \
3510 } while (YYID (0))
3511 
3512 
3513 /*--------------------------------.
3514 | Print this symbol on YYOUTPUT.  |
3515 `--------------------------------*/
3516 
3517 /*ARGSUSED*/
3518 #if (defined __STDC__ || defined __C99__FUNC__ \
3519      || defined __cplusplus || defined _MSC_VER)
3520 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)3521 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
3522 #else
3523 static void
3524 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
3525     FILE *yyoutput;
3526     int yytype;
3527     YYSTYPE const * const yyvaluep;
3528 #endif
3529 {
3530   if (!yyvaluep)
3531     return;
3532 # ifdef YYPRINT
3533   if (yytype < YYNTOKENS)
3534     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
3535 # else
3536   YYUSE (yyoutput);
3537 # endif
3538   switch (yytype)
3539     {
3540       default:
3541 	break;
3542     }
3543 }
3544 
3545 
3546 /*--------------------------------.
3547 | Print this symbol on YYOUTPUT.  |
3548 `--------------------------------*/
3549 
3550 #if (defined __STDC__ || defined __C99__FUNC__ \
3551      || defined __cplusplus || defined _MSC_VER)
3552 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)3553 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
3554 #else
3555 static void
3556 yy_symbol_print (yyoutput, yytype, yyvaluep)
3557     FILE *yyoutput;
3558     int yytype;
3559     YYSTYPE const * const yyvaluep;
3560 #endif
3561 {
3562   if (yytype < YYNTOKENS)
3563     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
3564   else
3565     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
3566 
3567   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
3568   YYFPRINTF (yyoutput, ")");
3569 }
3570 
3571 /*------------------------------------------------------------------.
3572 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
3573 | TOP (included).                                                   |
3574 `------------------------------------------------------------------*/
3575 
3576 #if (defined __STDC__ || defined __C99__FUNC__ \
3577      || defined __cplusplus || defined _MSC_VER)
3578 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)3579 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
3580 #else
3581 static void
3582 yy_stack_print (yybottom, yytop)
3583     yytype_int16 *yybottom;
3584     yytype_int16 *yytop;
3585 #endif
3586 {
3587   YYFPRINTF (stderr, "Stack now");
3588   for (; yybottom <= yytop; yybottom++)
3589     {
3590       int yybot = *yybottom;
3591       YYFPRINTF (stderr, " %d", yybot);
3592     }
3593   YYFPRINTF (stderr, "\n");
3594 }
3595 
3596 # define YY_STACK_PRINT(Bottom, Top)				\
3597 do {								\
3598   if (yydebug)							\
3599     yy_stack_print ((Bottom), (Top));				\
3600 } while (YYID (0))
3601 
3602 
3603 /*------------------------------------------------.
3604 | Report that the YYRULE is going to be reduced.  |
3605 `------------------------------------------------*/
3606 
3607 #if (defined __STDC__ || defined __C99__FUNC__ \
3608      || defined __cplusplus || defined _MSC_VER)
3609 static void
yy_reduce_print(YYSTYPE * yyvsp,int yyrule)3610 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
3611 #else
3612 static void
3613 yy_reduce_print (yyvsp, yyrule)
3614     YYSTYPE *yyvsp;
3615     int yyrule;
3616 #endif
3617 {
3618   int yynrhs = yyr2[yyrule];
3619   int yyi;
3620   unsigned long int yylno = yyrline[yyrule];
3621   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
3622 	     yyrule - 1, yylno);
3623   /* The symbols being reduced.  */
3624   for (yyi = 0; yyi < yynrhs; yyi++)
3625     {
3626       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
3627       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
3628 		       &(yyvsp[(yyi + 1) - (yynrhs)])
3629 		       		       );
3630       YYFPRINTF (stderr, "\n");
3631     }
3632 }
3633 
3634 # define YY_REDUCE_PRINT(Rule)		\
3635 do {					\
3636   if (yydebug)				\
3637     yy_reduce_print (yyvsp, Rule); \
3638 } while (YYID (0))
3639 
3640 /* Nonzero means print parse trace.  It is left uninitialized so that
3641    multiple parsers can coexist.  */
3642 int yydebug;
3643 #else /* !YYDEBUG */
3644 # define YYDPRINTF(Args)
3645 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
3646 # define YY_STACK_PRINT(Bottom, Top)
3647 # define YY_REDUCE_PRINT(Rule)
3648 #endif /* !YYDEBUG */
3649 
3650 
3651 /* YYINITDEPTH -- initial size of the parser's stacks.  */
3652 #ifndef	YYINITDEPTH
3653 # define YYINITDEPTH 200
3654 #endif
3655 
3656 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
3657    if the built-in stack extension method is used).
3658 
3659    Do not make this value too large; the results are undefined if
3660    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
3661    evaluated with infinite-precision integer arithmetic.  */
3662 
3663 #ifndef YYMAXDEPTH
3664 # define YYMAXDEPTH 10000
3665 #endif
3666 
3667 
3668 
3669 #if YYERROR_VERBOSE
3670 
3671 # ifndef yystrlen
3672 #  if defined __GLIBC__ && defined _STRING_H
3673 #   define yystrlen strlen
3674 #  else
3675 /* Return the length of YYSTR.  */
3676 #if (defined __STDC__ || defined __C99__FUNC__ \
3677      || defined __cplusplus || defined _MSC_VER)
3678 static YYSIZE_T
yystrlen(const char * yystr)3679 yystrlen (const char *yystr)
3680 #else
3681 static YYSIZE_T
3682 yystrlen (yystr)
3683     const char *yystr;
3684 #endif
3685 {
3686   YYSIZE_T yylen;
3687   for (yylen = 0; yystr[yylen]; yylen++)
3688     continue;
3689   return yylen;
3690 }
3691 #  endif
3692 # endif
3693 
3694 # ifndef yystpcpy
3695 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
3696 #   define yystpcpy stpcpy
3697 #  else
3698 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
3699    YYDEST.  */
3700 #if (defined __STDC__ || defined __C99__FUNC__ \
3701      || defined __cplusplus || defined _MSC_VER)
3702 static char *
yystpcpy(char * yydest,const char * yysrc)3703 yystpcpy (char *yydest, const char *yysrc)
3704 #else
3705 static char *
3706 yystpcpy (yydest, yysrc)
3707     char *yydest;
3708     const char *yysrc;
3709 #endif
3710 {
3711   char *yyd = yydest;
3712   const char *yys = yysrc;
3713 
3714   while ((*yyd++ = *yys++) != '\0')
3715     continue;
3716 
3717   return yyd - 1;
3718 }
3719 #  endif
3720 # endif
3721 
3722 # ifndef yytnamerr
3723 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
3724    quotes and backslashes, so that it's suitable for yyerror.  The
3725    heuristic is that double-quoting is unnecessary unless the string
3726    contains an apostrophe, a comma, or backslash (other than
3727    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
3728    null, do not copy; instead, return the length of what the result
3729    would have been.  */
3730 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)3731 yytnamerr (char *yyres, const char *yystr)
3732 {
3733   if (*yystr == '"')
3734     {
3735       YYSIZE_T yyn = 0;
3736       char const *yyp = yystr;
3737 
3738       for (;;)
3739 	switch (*++yyp)
3740 	  {
3741 	  case '\'':
3742 	  case ',':
3743 	    goto do_not_strip_quotes;
3744 
3745 	  case '\\':
3746 	    if (*++yyp != '\\')
3747 	      goto do_not_strip_quotes;
3748 	    /* Fall through.  */
3749 	  default:
3750 	    if (yyres)
3751 	      yyres[yyn] = *yyp;
3752 	    yyn++;
3753 	    break;
3754 
3755 	  case '"':
3756 	    if (yyres)
3757 	      yyres[yyn] = '\0';
3758 	    return yyn;
3759 	  }
3760     do_not_strip_quotes: ;
3761     }
3762 
3763   if (! yyres)
3764     return yystrlen (yystr);
3765 
3766   return yystpcpy (yyres, yystr) - yyres;
3767 }
3768 # endif
3769 
3770 /* Copy into YYRESULT an error message about the unexpected token
3771    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
3772    including the terminating null byte.  If YYRESULT is null, do not
3773    copy anything; just return the number of bytes that would be
3774    copied.  As a special case, return 0 if an ordinary "syntax error"
3775    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
3776    size calculation.  */
3777 static YYSIZE_T
yysyntax_error(char * yyresult,int yystate,int yychar)3778 yysyntax_error (char *yyresult, int yystate, int yychar)
3779 {
3780   int yyn = yypact[yystate];
3781 
3782   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
3783     return 0;
3784   else
3785     {
3786       int yytype = YYTRANSLATE (yychar);
3787       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
3788       YYSIZE_T yysize = yysize0;
3789       YYSIZE_T yysize1;
3790       int yysize_overflow = 0;
3791       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
3792       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3793       int yyx;
3794 
3795 # if 0
3796       /* This is so xgettext sees the translatable formats that are
3797 	 constructed on the fly.  */
3798       YY_("syntax error, unexpected %s");
3799       YY_("syntax error, unexpected %s, expecting %s");
3800       YY_("syntax error, unexpected %s, expecting %s or %s");
3801       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
3802       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
3803 # endif
3804       char *yyfmt;
3805       char const *yyf;
3806       static char const yyunexpected[] = "syntax error, unexpected %s";
3807       static char const yyexpecting[] = ", expecting %s";
3808       static char const yyor[] = " or %s";
3809       char yyformat[sizeof yyunexpected
3810 		    + sizeof yyexpecting - 1
3811 		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
3812 		       * (sizeof yyor - 1))];
3813       char const *yyprefix = yyexpecting;
3814 
3815       /* Start YYX at -YYN if negative to avoid negative indexes in
3816 	 YYCHECK.  */
3817       int yyxbegin = yyn < 0 ? -yyn : 0;
3818 
3819       /* Stay within bounds of both yycheck and yytname.  */
3820       int yychecklim = YYLAST - yyn + 1;
3821       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3822       int yycount = 1;
3823 
3824       yyarg[0] = yytname[yytype];
3825       yyfmt = yystpcpy (yyformat, yyunexpected);
3826 
3827       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3828 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3829 	  {
3830 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3831 	      {
3832 		yycount = 1;
3833 		yysize = yysize0;
3834 		yyformat[sizeof yyunexpected - 1] = '\0';
3835 		break;
3836 	      }
3837 	    yyarg[yycount++] = yytname[yyx];
3838 	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3839 	    yysize_overflow |= (yysize1 < yysize);
3840 	    yysize = yysize1;
3841 	    yyfmt = yystpcpy (yyfmt, yyprefix);
3842 	    yyprefix = yyor;
3843 	  }
3844 
3845       yyf = YY_(yyformat);
3846       yysize1 = yysize + yystrlen (yyf);
3847       yysize_overflow |= (yysize1 < yysize);
3848       yysize = yysize1;
3849 
3850       if (yysize_overflow)
3851 	return YYSIZE_MAXIMUM;
3852 
3853       if (yyresult)
3854 	{
3855 	  /* Avoid sprintf, as that infringes on the user's name space.
3856 	     Don't have undefined behavior even if the translation
3857 	     produced a string with the wrong number of "%s"s.  */
3858 	  char *yyp = yyresult;
3859 	  int yyi = 0;
3860 	  while ((*yyp = *yyf) != '\0')
3861 	    {
3862 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3863 		{
3864 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
3865 		  yyf += 2;
3866 		}
3867 	      else
3868 		{
3869 		  yyp++;
3870 		  yyf++;
3871 		}
3872 	    }
3873 	}
3874       return yysize;
3875     }
3876 }
3877 #endif /* YYERROR_VERBOSE */
3878 
3879 
3880 /*-----------------------------------------------.
3881 | Release the memory associated to this symbol.  |
3882 `-----------------------------------------------*/
3883 
3884 /*ARGSUSED*/
3885 #if (defined __STDC__ || defined __C99__FUNC__ \
3886      || defined __cplusplus || defined _MSC_VER)
3887 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)3888 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3889 #else
3890 static void
3891 yydestruct (yymsg, yytype, yyvaluep)
3892     const char *yymsg;
3893     int yytype;
3894     YYSTYPE *yyvaluep;
3895 #endif
3896 {
3897   YYUSE (yyvaluep);
3898 
3899   if (!yymsg)
3900     yymsg = "Deleting";
3901   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3902 
3903   switch (yytype)
3904     {
3905 
3906       default:
3907 	break;
3908     }
3909 }
3910 
3911 /* Prevent warnings from -Wmissing-prototypes.  */
3912 #ifdef YYPARSE_PARAM
3913 #if defined __STDC__ || defined __cplusplus
3914 int yyparse (void *YYPARSE_PARAM);
3915 #else
3916 int yyparse ();
3917 #endif
3918 #else /* ! YYPARSE_PARAM */
3919 #if defined __STDC__ || defined __cplusplus
3920 int yyparse (void);
3921 #else
3922 int yyparse ();
3923 #endif
3924 #endif /* ! YYPARSE_PARAM */
3925 
3926 
3927 /* The lookahead symbol.  */
3928 int yychar;
3929 
3930 /* The semantic value of the lookahead symbol.  */
3931 YYSTYPE yylval;
3932 
3933 /* Number of syntax errors so far.  */
3934 int yynerrs;
3935 
3936 
3937 
3938 /*-------------------------.
3939 | yyparse or yypush_parse.  |
3940 `-------------------------*/
3941 
3942 #ifdef YYPARSE_PARAM
3943 #if (defined __STDC__ || defined __C99__FUNC__ \
3944      || defined __cplusplus || defined _MSC_VER)
3945 int
yyparse(void * YYPARSE_PARAM)3946 yyparse (void *YYPARSE_PARAM)
3947 #else
3948 int
3949 yyparse (YYPARSE_PARAM)
3950     void *YYPARSE_PARAM;
3951 #endif
3952 #else /* ! YYPARSE_PARAM */
3953 #if (defined __STDC__ || defined __C99__FUNC__ \
3954      || defined __cplusplus || defined _MSC_VER)
3955 int
3956 yyparse (void)
3957 #else
3958 int
3959 yyparse ()
3960 
3961 #endif
3962 #endif
3963 {
3964 
3965 
3966     int yystate;
3967     /* Number of tokens to shift before error messages enabled.  */
3968     int yyerrstatus;
3969 
3970     /* The stacks and their tools:
3971        `yyss': related to states.
3972        `yyvs': related to semantic values.
3973 
3974        Refer to the stacks thru separate pointers, to allow yyoverflow
3975        to reallocate them elsewhere.  */
3976 
3977     /* The state stack.  */
3978     yytype_int16 yyssa[YYINITDEPTH];
3979     yytype_int16 *yyss;
3980     yytype_int16 *yyssp;
3981 
3982     /* The semantic value stack.  */
3983     YYSTYPE yyvsa[YYINITDEPTH];
3984     YYSTYPE *yyvs;
3985     YYSTYPE *yyvsp;
3986 
3987     YYSIZE_T yystacksize;
3988 
3989   int yyn;
3990   int yyresult;
3991   /* Lookahead token as an internal (translated) token number.  */
3992   int yytoken;
3993   /* The variables used to return semantic value and location from the
3994      action routines.  */
3995   YYSTYPE yyval;
3996 
3997 #if YYERROR_VERBOSE
3998   /* Buffer for error messages, and its allocated size.  */
3999   char yymsgbuf[128];
4000   char *yymsg = yymsgbuf;
4001   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
4002 #endif
4003 
4004 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
4005 
4006   /* The number of symbols on the RHS of the reduced rule.
4007      Keep to zero when no symbol should be popped.  */
4008   int yylen = 0;
4009 
4010   yytoken = 0;
4011   yyss = yyssa;
4012   yyvs = yyvsa;
4013   yystacksize = YYINITDEPTH;
4014 
4015   YYDPRINTF ((stderr, "Starting parse\n"));
4016 
4017   yystate = 0;
4018   yyerrstatus = 0;
4019   yynerrs = 0;
4020   yychar = YYEMPTY; /* Cause a token to be read.  */
4021 
4022   /* Initialize stack pointers.
4023      Waste one element of value and location stack
4024      so that they stay on the same level as the state stack.
4025      The wasted elements are never initialized.  */
4026   yyssp = yyss;
4027   yyvsp = yyvs;
4028 
4029   goto yysetstate;
4030 
4031 /*------------------------------------------------------------.
4032 | yynewstate -- Push a new state, which is found in yystate.  |
4033 `------------------------------------------------------------*/
4034  yynewstate:
4035   /* In all cases, when you get here, the value and location stacks
4036      have just been pushed.  So pushing a state here evens the stacks.  */
4037   yyssp++;
4038 
4039  yysetstate:
4040   *yyssp = yystate;
4041 
4042   if (yyss + yystacksize - 1 <= yyssp)
4043     {
4044       /* Get the current used size of the three stacks, in elements.  */
4045       YYSIZE_T yysize = yyssp - yyss + 1;
4046 
4047 #ifdef yyoverflow
4048       {
4049 	/* Give user a chance to reallocate the stack.  Use copies of
4050 	   these so that the &'s don't force the real ones into
4051 	   memory.  */
4052 	YYSTYPE *yyvs1 = yyvs;
4053 	yytype_int16 *yyss1 = yyss;
4054 
4055 	/* Each stack pointer address is followed by the size of the
4056 	   data in use in that stack, in bytes.  This used to be a
4057 	   conditional around just the two extra args, but that might
4058 	   be undefined if yyoverflow is a macro.  */
4059 	yyoverflow (YY_("memory exhausted"),
4060 		    &yyss1, yysize * sizeof (*yyssp),
4061 		    &yyvs1, yysize * sizeof (*yyvsp),
4062 		    &yystacksize);
4063 
4064 	yyss = yyss1;
4065 	yyvs = yyvs1;
4066       }
4067 #else /* no yyoverflow */
4068 # ifndef YYSTACK_RELOCATE
4069       goto yyexhaustedlab;
4070 # else
4071       /* Extend the stack our own way.  */
4072       if (YYMAXDEPTH <= yystacksize)
4073 	goto yyexhaustedlab;
4074       yystacksize *= 2;
4075       if (YYMAXDEPTH < yystacksize)
4076 	yystacksize = YYMAXDEPTH;
4077 
4078       {
4079 	yytype_int16 *yyss1 = yyss;
4080 	union yyalloc *yyptr =
4081 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
4082 	if (! yyptr)
4083 	  goto yyexhaustedlab;
4084 	YYSTACK_RELOCATE (yyss_alloc, yyss);
4085 	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
4086 #  undef YYSTACK_RELOCATE
4087 	if (yyss1 != yyssa)
4088 	  YYSTACK_FREE (yyss1);
4089       }
4090 # endif
4091 #endif /* no yyoverflow */
4092 
4093       yyssp = yyss + yysize - 1;
4094       yyvsp = yyvs + yysize - 1;
4095 
4096       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
4097 		  (unsigned long int) yystacksize));
4098 
4099       if (yyss + yystacksize - 1 <= yyssp)
4100 	YYABORT;
4101     }
4102 
4103   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
4104 
4105   if (yystate == YYFINAL)
4106     YYACCEPT;
4107 
4108   goto yybackup;
4109 
4110 /*-----------.
4111 | yybackup.  |
4112 `-----------*/
4113 yybackup:
4114 
4115   /* Do appropriate processing given the current state.  Read a
4116      lookahead token if we need one and don't already have one.  */
4117 
4118   /* First try to decide what to do without reference to lookahead token.  */
4119   yyn = yypact[yystate];
4120   if (yyn == YYPACT_NINF)
4121     goto yydefault;
4122 
4123   /* Not known => get a lookahead token if don't already have one.  */
4124 
4125   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
4126   if (yychar == YYEMPTY)
4127     {
4128       YYDPRINTF ((stderr, "Reading a token: "));
4129       yychar = YYLEX;
4130     }
4131 
4132   if (yychar <= YYEOF)
4133     {
4134       yychar = yytoken = YYEOF;
4135       YYDPRINTF ((stderr, "Now at end of input.\n"));
4136     }
4137   else
4138     {
4139       yytoken = YYTRANSLATE (yychar);
4140       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
4141     }
4142 
4143   /* If the proper action on seeing token YYTOKEN is to reduce or to
4144      detect an error, take that action.  */
4145   yyn += yytoken;
4146   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
4147     goto yydefault;
4148   yyn = yytable[yyn];
4149   if (yyn <= 0)
4150     {
4151       if (yyn == 0 || yyn == YYTABLE_NINF)
4152 	goto yyerrlab;
4153       yyn = -yyn;
4154       goto yyreduce;
4155     }
4156 
4157   /* Count tokens shifted since error; after three, turn off error
4158      status.  */
4159   if (yyerrstatus)
4160     yyerrstatus--;
4161 
4162   /* Shift the lookahead token.  */
4163   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
4164 
4165   /* Discard the shifted token.  */
4166   yychar = YYEMPTY;
4167 
4168   yystate = yyn;
4169   *++yyvsp = yylval;
4170 
4171   goto yynewstate;
4172 
4173 
4174 /*-----------------------------------------------------------.
4175 | yydefault -- do the default action for the current state.  |
4176 `-----------------------------------------------------------*/
4177 yydefault:
4178   yyn = yydefact[yystate];
4179   if (yyn == 0)
4180     goto yyerrlab;
4181   goto yyreduce;
4182 
4183 
4184 /*-----------------------------.
4185 | yyreduce -- Do a reduction.  |
4186 `-----------------------------*/
4187 yyreduce:
4188   /* yyn is the number of a rule to reduce with.  */
4189   yylen = yyr2[yyn];
4190 
4191   /* If YYLEN is nonzero, implement the default value of the action:
4192      `$$ = $1'.
4193 
4194      Otherwise, the following line sets YYVAL to garbage.
4195      This behavior is undocumented and Bison
4196      users should not rely upon it.  Assigning to YYVAL
4197      unconditionally makes the parser a bit smaller, and it avoids a
4198      GCC warning that YYVAL may be used uninitialized.  */
4199   yyval = yyvsp[1-yylen];
4200 
4201 
4202   YY_REDUCE_PRINT (yyn);
4203   switch (yyn)
4204     {
4205         case 2:
4206 
4207 /* Line 1455 of yacc.c  */
4208 #line 505 "edif.y"
4209     { PopC(); }
4210     break;
4211 
4212   case 11:
4213 
4214 /* Line 1455 of yacc.c  */
4215 #line 520 "edif.y"
4216     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4217     break;
4218 
4219   case 12:
4220 
4221 /* Line 1455 of yacc.c  */
4222 #line 523 "edif.y"
4223     { free((yyvsp[(2) - (3)].s)); }
4224     break;
4225 
4226   case 13:
4227 
4228 /* Line 1455 of yacc.c  */
4229 #line 527 "edif.y"
4230     { free((yyvsp[(2) - (5)].s)); free((yyvsp[(3) - (5)].s)); free((yyvsp[(4) - (5)].s)); }
4231     break;
4232 
4233   case 25:
4234 
4235 /* Line 1455 of yacc.c  */
4236 #line 551 "edif.y"
4237     { free((yyvsp[(1) - (1)].s)); }
4238     break;
4239 
4240   case 34:
4241 
4242 /* Line 1455 of yacc.c  */
4243 #line 568 "edif.y"
4244     { str_pair_free((yyvsp[(2) - (5)].ps)); free((yyvsp[(3) - (5)].s)); }
4245     break;
4246 
4247   case 36:
4248 
4249 /* Line 1455 of yacc.c  */
4250 #line 572 "edif.y"
4251     { free((yyvsp[(1) - (1)].s)); }
4252     break;
4253 
4254   case 47:
4255 
4256 /* Line 1455 of yacc.c  */
4257 #line 597 "edif.y"
4258     { free((yyvsp[(2) - (3)].s)); }
4259     break;
4260 
4261   case 69:
4262 
4263 /* Line 1455 of yacc.c  */
4264 #line 645 "edif.y"
4265     { free((yyvsp[(2) - (5)].s)); free((yyvsp[(3) - (5)].s)); }
4266     break;
4267 
4268   case 70:
4269 
4270 /* Line 1455 of yacc.c  */
4271 #line 648 "edif.y"
4272     { free((yyvsp[(2) - (3)].s)); }
4273     break;
4274 
4275   case 80:
4276 
4277 /* Line 1455 of yacc.c  */
4278 #line 666 "edif.y"
4279     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4280     break;
4281 
4282   case 84:
4283 
4284 /* Line 1455 of yacc.c  */
4285 #line 676 "edif.y"
4286     { free((yyvsp[(1) - (1)].s)); }
4287     break;
4288 
4289   case 91:
4290 
4291 /* Line 1455 of yacc.c  */
4292 #line 691 "edif.y"
4293     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4294     break;
4295 
4296   case 102:
4297 
4298 /* Line 1455 of yacc.c  */
4299 #line 714 "edif.y"
4300     { free((yyvsp[(2) - (2)].s)); }
4301     break;
4302 
4303   case 140:
4304 
4305 /* Line 1455 of yacc.c  */
4306 #line 774 "edif.y"
4307     { free((yyvsp[(1) - (1)].s)); }
4308     break;
4309 
4310   case 147:
4311 
4312 /* Line 1455 of yacc.c  */
4313 #line 789 "edif.y"
4314     { free((yyvsp[(2) - (4)].s)); }
4315     break;
4316 
4317   case 150:
4318 
4319 /* Line 1455 of yacc.c  */
4320 #line 796 "edif.y"
4321     { free((yyvsp[(2) - (4)].s)); }
4322     break;
4323 
4324   case 182:
4325 
4326 /* Line 1455 of yacc.c  */
4327 #line 866 "edif.y"
4328     { free((yyvsp[(1) - (1)].s)); }
4329     break;
4330 
4331   case 184:
4332 
4333 /* Line 1455 of yacc.c  */
4334 #line 870 "edif.y"
4335     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4336     break;
4337 
4338   case 240:
4339 
4340 /* Line 1455 of yacc.c  */
4341 #line 974 "edif.y"
4342     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4343     break;
4344 
4345   case 247:
4346 
4347 /* Line 1455 of yacc.c  */
4348 #line 987 "edif.y"
4349     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4350     break;
4351 
4352   case 278:
4353 
4354 /* Line 1455 of yacc.c  */
4355 #line 1034 "edif.y"
4356     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4357     break;
4358 
4359   case 279:
4360 
4361 /* Line 1455 of yacc.c  */
4362 #line 1037 "edif.y"
4363     { free((yyvsp[(1) - (1)].s)); }
4364     break;
4365 
4366   case 333:
4367 
4368 /* Line 1455 of yacc.c  */
4369 #line 1123 "edif.y"
4370     { free((yyvsp[(2) - (5)].s)); free((yyvsp[(3) - (5)].s)); }
4371     break;
4372 
4373   case 336:
4374 
4375 /* Line 1455 of yacc.c  */
4376 #line 1130 "edif.y"
4377     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4378     break;
4379 
4380   case 337:
4381 
4382 /* Line 1455 of yacc.c  */
4383 #line 1133 "edif.y"
4384     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4385     break;
4386 
4387   case 344:
4388 
4389 /* Line 1455 of yacc.c  */
4390 #line 1146 "edif.y"
4391     { free((yyvsp[(1) - (3)].s)); }
4392     break;
4393 
4394   case 346:
4395 
4396 /* Line 1455 of yacc.c  */
4397 #line 1150 "edif.y"
4398     { free((yyvsp[(2) - (2)].s)); }
4399     break;
4400 
4401   case 347:
4402 
4403 /* Line 1455 of yacc.c  */
4404 #line 1151 "edif.y"
4405     { free((yyvsp[(2) - (2)].s)); }
4406     break;
4407 
4408   case 348:
4409 
4410 /* Line 1455 of yacc.c  */
4411 #line 1152 "edif.y"
4412     { free((yyvsp[(2) - (2)].s)); }
4413     break;
4414 
4415   case 369:
4416 
4417 /* Line 1455 of yacc.c  */
4418 #line 1193 "edif.y"
4419     { (yyval.s)=(yyvsp[(2) - (4)].s); }
4420     break;
4421 
4422   case 371:
4423 
4424 /* Line 1455 of yacc.c  */
4425 #line 1197 "edif.y"
4426     { free((yyvsp[(1) - (1)].s)); }
4427     break;
4428 
4429   case 374:
4430 
4431 /* Line 1455 of yacc.c  */
4432 #line 1204 "edif.y"
4433     { free((yyvsp[(1) - (1)].s)); }
4434     break;
4435 
4436   case 381:
4437 
4438 /* Line 1455 of yacc.c  */
4439 #line 1215 "edif.y"
4440     { free((yyvsp[(2) - (2)].s)); }
4441     break;
4442 
4443   case 384:
4444 
4445 /* Line 1455 of yacc.c  */
4446 #line 1222 "edif.y"
4447     { free((yyvsp[(2) - (2)].s)); }
4448     break;
4449 
4450   case 388:
4451 
4452 /* Line 1455 of yacc.c  */
4453 #line 1228 "edif.y"
4454     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4455     break;
4456 
4457   case 390:
4458 
4459 /* Line 1455 of yacc.c  */
4460 #line 1232 "edif.y"
4461     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4462     break;
4463 
4464   case 393:
4465 
4466 /* Line 1455 of yacc.c  */
4467 #line 1239 "edif.y"
4468     { free((yyvsp[(1) - (1)].s)); }
4469     break;
4470 
4471   case 397:
4472 
4473 /* Line 1455 of yacc.c  */
4474 #line 1247 "edif.y"
4475     { free((yyvsp[(2) - (2)].s)); }
4476     break;
4477 
4478   case 408:
4479 
4480 /* Line 1455 of yacc.c  */
4481 #line 1262 "edif.y"
4482     { pair_list_free((yyvsp[(2) - (2)].pl)); }
4483     break;
4484 
4485   case 437:
4486 
4487 /* Line 1455 of yacc.c  */
4488 #line 1312 "edif.y"
4489     { (yyval.pl) = new_pair_list((yyvsp[(2) - (3)].ps)); }
4490     break;
4491 
4492   case 438:
4493 
4494 /* Line 1455 of yacc.c  */
4495 #line 1315 "edif.y"
4496     { (yyval.ps)=NULL; }
4497     break;
4498 
4499   case 439:
4500 
4501 /* Line 1455 of yacc.c  */
4502 #line 1316 "edif.y"
4503     { (yyvsp[(2) - (2)].ps)->next = (yyvsp[(1) - (2)].ps); (yyval.ps) = (yyvsp[(2) - (2)].ps); }
4504     break;
4505 
4506   case 455:
4507 
4508 /* Line 1455 of yacc.c  */
4509 #line 1342 "edif.y"
4510     { free((yyvsp[(2) - (3)].s)); }
4511     break;
4512 
4513   case 459:
4514 
4515 /* Line 1455 of yacc.c  */
4516 #line 1352 "edif.y"
4517     { free((yyvsp[(1) - (1)].s)); }
4518     break;
4519 
4520   case 460:
4521 
4522 /* Line 1455 of yacc.c  */
4523 #line 1355 "edif.y"
4524     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4525     break;
4526 
4527   case 462:
4528 
4529 /* Line 1455 of yacc.c  */
4530 #line 1361 "edif.y"
4531     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4532     break;
4533 
4534   case 463:
4535 
4536 /* Line 1455 of yacc.c  */
4537 #line 1364 "edif.y"
4538     { free((yyvsp[(1) - (1)].s)); }
4539     break;
4540 
4541   case 483:
4542 
4543 /* Line 1455 of yacc.c  */
4544 #line 1406 "edif.y"
4545     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4546     break;
4547 
4548   case 484:
4549 
4550 /* Line 1455 of yacc.c  */
4551 #line 1409 "edif.y"
4552     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4553     break;
4554 
4555   case 492:
4556 
4557 /* Line 1455 of yacc.c  */
4558 #line 1423 "edif.y"
4559     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4560     break;
4561 
4562   case 506:
4563 
4564 /* Line 1455 of yacc.c  */
4565 #line 1451 "edif.y"
4566     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4567     break;
4568 
4569   case 507:
4570 
4571 /* Line 1455 of yacc.c  */
4572 #line 1454 "edif.y"
4573     { free((yyvsp[(1) - (1)].s)); }
4574     break;
4575 
4576   case 514:
4577 
4578 /* Line 1455 of yacc.c  */
4579 #line 1469 "edif.y"
4580     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4581     break;
4582 
4583   case 549:
4584 
4585 /* Line 1455 of yacc.c  */
4586 #line 1524 "edif.y"
4587     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4588     break;
4589 
4590   case 555:
4591 
4592 /* Line 1455 of yacc.c  */
4593 #line 1536 "edif.y"
4594     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4595     break;
4596 
4597   case 560:
4598 
4599 /* Line 1455 of yacc.c  */
4600 #line 1545 "edif.y"
4601     { free((yyvsp[(2) - (4)].s)); }
4602     break;
4603 
4604   case 561:
4605 
4606 /* Line 1455 of yacc.c  */
4607 #line 1548 "edif.y"
4608     { free((yyvsp[(1) - (1)].s)); }
4609     break;
4610 
4611   case 562:
4612 
4613 /* Line 1455 of yacc.c  */
4614 #line 1549 "edif.y"
4615     { free((yyvsp[(2) - (2)].s)); }
4616     break;
4617 
4618   case 582:
4619 
4620 /* Line 1455 of yacc.c  */
4621 #line 1591 "edif.y"
4622     { str_pair_free((yyvsp[(2) - (2)].ps)); }
4623     break;
4624 
4625   case 585:
4626 
4627 /* Line 1455 of yacc.c  */
4628 #line 1594 "edif.y"
4629     { pair_list_free((yyvsp[(2) - (2)].pl)); }
4630     break;
4631 
4632   case 586:
4633 
4634 /* Line 1455 of yacc.c  */
4635 #line 1597 "edif.y"
4636     { (yyval.s)=(yyvsp[(2) - (3)].s); }
4637     break;
4638 
4639   case 587:
4640 
4641 /* Line 1455 of yacc.c  */
4642 #line 1600 "edif.y"
4643     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4644     break;
4645 
4646   case 589:
4647 
4648 /* Line 1455 of yacc.c  */
4649 #line 1604 "edif.y"
4650     { (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s),NULL); }
4651     break;
4652 
4653   case 590:
4654 
4655 /* Line 1455 of yacc.c  */
4656 #line 1605 "edif.y"
4657     { (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s),NULL); }
4658     break;
4659 
4660   case 591:
4661 
4662 /* Line 1455 of yacc.c  */
4663 #line 1606 "edif.y"
4664     { (yyval.ps)=(yyvsp[(1) - (1)].ps); }
4665     break;
4666 
4667   case 592:
4668 
4669 /* Line 1455 of yacc.c  */
4670 #line 1609 "edif.y"
4671     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4672     break;
4673 
4674   case 593:
4675 
4676 /* Line 1455 of yacc.c  */
4677 #line 1610 "edif.y"
4678     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4679     break;
4680 
4681   case 594:
4682 
4683 /* Line 1455 of yacc.c  */
4684 #line 1613 "edif.y"
4685     { define_pcb_net((yyvsp[(2) - (4)].ps), (yyvsp[(3) - (4)].pl)); }
4686     break;
4687 
4688   case 595:
4689 
4690 /* Line 1455 of yacc.c  */
4691 #line 1616 "edif.y"
4692     { (yyval.pl)=(yyvsp[(1) - (1)].pl); }
4693     break;
4694 
4695   case 611:
4696 
4697 /* Line 1455 of yacc.c  */
4698 #line 1638 "edif.y"
4699     { str_pair_free((yyvsp[(2) - (4)].ps)); }
4700     break;
4701 
4702   case 632:
4703 
4704 /* Line 1455 of yacc.c  */
4705 #line 1675 "edif.y"
4706     { (yyval.ps)=(yyvsp[(1) - (1)].ps); }
4707     break;
4708 
4709   case 633:
4710 
4711 /* Line 1455 of yacc.c  */
4712 #line 1676 "edif.y"
4713     { (yyval.ps)=NULL; }
4714     break;
4715 
4716   case 634:
4717 
4718 /* Line 1455 of yacc.c  */
4719 #line 1680 "edif.y"
4720     { free((yyvsp[(1) - (1)].s)); }
4721     break;
4722 
4723   case 639:
4724 
4725 /* Line 1455 of yacc.c  */
4726 #line 1689 "edif.y"
4727     { free((yyvsp[(1) - (1)].s)); }
4728     break;
4729 
4730   case 644:
4731 
4732 /* Line 1455 of yacc.c  */
4733 #line 1700 "edif.y"
4734     { str_pair_free((yyvsp[(2) - (2)].ps)); }
4735     break;
4736 
4737   case 698:
4738 
4739 /* Line 1455 of yacc.c  */
4740 #line 1802 "edif.y"
4741     { free((yyvsp[(2) - (5)].s)); }
4742     break;
4743 
4744   case 701:
4745 
4746 /* Line 1455 of yacc.c  */
4747 #line 1809 "edif.y"
4748     { free((yyvsp[(2) - (3)].s)); }
4749     break;
4750 
4751   case 727:
4752 
4753 /* Line 1455 of yacc.c  */
4754 #line 1861 "edif.y"
4755     { free((yyvsp[(2) - (3)].s)); }
4756     break;
4757 
4758   case 730:
4759 
4760 /* Line 1455 of yacc.c  */
4761 #line 1868 "edif.y"
4762     { str_pair_free((yyvsp[(2) - (2)].ps)); }
4763     break;
4764 
4765   case 747:
4766 
4767 /* Line 1455 of yacc.c  */
4768 #line 1903 "edif.y"
4769     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
4770     break;
4771 
4772   case 766:
4773 
4774 /* Line 1455 of yacc.c  */
4775 #line 1934 "edif.y"
4776     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4777     break;
4778 
4779   case 789:
4780 
4781 /* Line 1455 of yacc.c  */
4782 #line 1969 "edif.y"
4783     { str_pair_free((yyvsp[(2) - (2)].ps)); }
4784     break;
4785 
4786   case 791:
4787 
4788 /* Line 1455 of yacc.c  */
4789 #line 1975 "edif.y"
4790     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4791     break;
4792 
4793   case 803:
4794 
4795 /* Line 1455 of yacc.c  */
4796 #line 1991 "edif.y"
4797     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4798     break;
4799 
4800   case 818:
4801 
4802 /* Line 1455 of yacc.c  */
4803 #line 2010 "edif.y"
4804     { str_pair_free((yyvsp[(2) - (2)].ps)); }
4805     break;
4806 
4807   case 823:
4808 
4809 /* Line 1455 of yacc.c  */
4810 #line 2021 "edif.y"
4811     { str_pair_free((yyvsp[(2) - (2)].ps)); }
4812     break;
4813 
4814   case 827:
4815 
4816 /* Line 1455 of yacc.c  */
4817 #line 2027 "edif.y"
4818     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4819     break;
4820 
4821   case 829:
4822 
4823 /* Line 1455 of yacc.c  */
4824 #line 2031 "edif.y"
4825     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4826     break;
4827 
4828   case 831:
4829 
4830 /* Line 1455 of yacc.c  */
4831 #line 2036 "edif.y"
4832     {
4833     if ((yyvsp[(3) - (4)].ps))
4834     {
4835 	(yyval.ps) = new_str_pair((yyvsp[(3) - (4)].ps)->str1,(yyvsp[(2) - (4)].s));
4836 	free((yyvsp[(3) - (4)].ps));
4837     }
4838     else
4839     {
4840 	/* handle port with no instance by passing up the chain */
4841 	(yyval.ps) = new_str_pair(NULL,(yyvsp[(2) - (4)].s));
4842     }
4843 }
4844     break;
4845 
4846   case 832:
4847 
4848 /* Line 1455 of yacc.c  */
4849 #line 2050 "edif.y"
4850     { (yyval.ps)=NULL; }
4851     break;
4852 
4853   case 833:
4854 
4855 /* Line 1455 of yacc.c  */
4856 #line 2051 "edif.y"
4857     { (yyval.ps)=(yyvsp[(1) - (1)].ps); }
4858     break;
4859 
4860   case 834:
4861 
4862 /* Line 1455 of yacc.c  */
4863 #line 2052 "edif.y"
4864     { (yyval.ps) = new_str_pair((yyvsp[(1) - (1)].s),NULL); }
4865     break;
4866 
4867   case 835:
4868 
4869 /* Line 1455 of yacc.c  */
4870 #line 2053 "edif.y"
4871     { (yyval.ps)=NULL; }
4872     break;
4873 
4874   case 848:
4875 
4876 /* Line 1455 of yacc.c  */
4877 #line 2080 "edif.y"
4878     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4879     break;
4880 
4881   case 849:
4882 
4883 /* Line 1455 of yacc.c  */
4884 #line 2083 "edif.y"
4885     { free((yyvsp[(1) - (1)].s)); }
4886     break;
4887 
4888   case 881:
4889 
4890 /* Line 1455 of yacc.c  */
4891 #line 2136 "edif.y"
4892     { (yyval.ps) = new_str_pair((yyvsp[(2) - (4)].s),(yyvsp[(3) - (4)].s)); }
4893     break;
4894 
4895   case 882:
4896 
4897 /* Line 1455 of yacc.c  */
4898 #line 2139 "edif.y"
4899     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4900     break;
4901 
4902   case 883:
4903 
4904 /* Line 1455 of yacc.c  */
4905 #line 2140 "edif.y"
4906     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4907     break;
4908 
4909   case 884:
4910 
4911 /* Line 1455 of yacc.c  */
4912 #line 2143 "edif.y"
4913     { (yyval.s)=(yyvsp[(1) - (1)].s); }
4914     break;
4915 
4916   case 885:
4917 
4918 /* Line 1455 of yacc.c  */
4919 #line 2144 "edif.y"
4920     { (yyval.s)=NULL; }
4921     break;
4922 
4923   case 889:
4924 
4925 /* Line 1455 of yacc.c  */
4926 #line 2154 "edif.y"
4927     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4928     break;
4929 
4930   case 891:
4931 
4932 /* Line 1455 of yacc.c  */
4933 #line 2160 "edif.y"
4934     { free((yyvsp[(1) - (1)].s)); }
4935     break;
4936 
4937   case 892:
4938 
4939 /* Line 1455 of yacc.c  */
4940 #line 2161 "edif.y"
4941     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
4942     break;
4943 
4944   case 893:
4945 
4946 /* Line 1455 of yacc.c  */
4947 #line 2164 "edif.y"
4948     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
4949     break;
4950 
4951   case 894:
4952 
4953 /* Line 1455 of yacc.c  */
4954 #line 2167 "edif.y"
4955     { free((yyvsp[(2) - (4)].s)); free((yyvsp[(3) - (4)].s)); }
4956     break;
4957 
4958   case 896:
4959 
4960 /* Line 1455 of yacc.c  */
4961 #line 2173 "edif.y"
4962     { free((yyvsp[(1) - (1)].s)); }
4963     break;
4964 
4965   case 898:
4966 
4967 /* Line 1455 of yacc.c  */
4968 #line 2175 "edif.y"
4969     { free((yyvsp[(2) - (2)].s)); }
4970     break;
4971 
4972   case 903:
4973 
4974 /* Line 1455 of yacc.c  */
4975 #line 2186 "edif.y"
4976     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4977     break;
4978 
4979   case 935:
4980 
4981 /* Line 1455 of yacc.c  */
4982 #line 2250 "edif.y"
4983     { str_pair_free((yyvsp[(1) - (1)].ps)); }
4984     break;
4985 
4986   case 943:
4987 
4988 /* Line 1455 of yacc.c  */
4989 #line 2266 "edif.y"
4990     { free((yyvsp[(2) - (2)].s)); }
4991     break;
4992 
4993   case 946:
4994 
4995 /* Line 1455 of yacc.c  */
4996 #line 2271 "edif.y"
4997     { free((yyvsp[(1) - (1)].s)); }
4998     break;
4999 
5000   case 973:
5001 
5002 /* Line 1455 of yacc.c  */
5003 #line 2316 "edif.y"
5004     { str_pair_free((yyvsp[(1) - (1)].ps)); }
5005     break;
5006 
5007   case 987:
5008 
5009 /* Line 1455 of yacc.c  */
5010 #line 2338 "edif.y"
5011     { free((yyvsp[(2) - (3)].s)); }
5012     break;
5013 
5014   case 994:
5015 
5016 /* Line 1455 of yacc.c  */
5017 #line 2354 "edif.y"
5018     { free((yyvsp[(2) - (8)].s)); free((yyvsp[(3) - (8)].s)); free((yyvsp[(4) - (8)].s)); free((yyvsp[(5) - (8)].s)); free((yyvsp[(6) - (8)].s)); free((yyvsp[(7) - (8)].s)); }
5019     break;
5020 
5021   case 1054:
5022 
5023 /* Line 1455 of yacc.c  */
5024 #line 2461 "edif.y"
5025     { free((yyvsp[(1) - (1)].s)); }
5026     break;
5027 
5028   case 1055:
5029 
5030 /* Line 1455 of yacc.c  */
5031 #line 2462 "edif.y"
5032     { free((yyvsp[(2) - (2)].s)); }
5033     break;
5034 
5035   case 1056:
5036 
5037 /* Line 1455 of yacc.c  */
5038 #line 2463 "edif.y"
5039     { free((yyvsp[(2) - (2)].s)); }
5040     break;
5041 
5042   case 1057:
5043 
5044 /* Line 1455 of yacc.c  */
5045 #line 2464 "edif.y"
5046     { free((yyvsp[(2) - (2)].s)); }
5047     break;
5048 
5049   case 1059:
5050 
5051 /* Line 1455 of yacc.c  */
5052 #line 2468 "edif.y"
5053     { str_pair_free((yyvsp[(1) - (1)].ps)); }
5054     break;
5055 
5056   case 1061:
5057 
5058 /* Line 1455 of yacc.c  */
5059 #line 2472 "edif.y"
5060     { free((yyvsp[(1) - (1)].s)); }
5061     break;
5062 
5063   case 1063:
5064 
5065 /* Line 1455 of yacc.c  */
5066 #line 2476 "edif.y"
5067     { free((yyvsp[(2) - (3)].s)); }
5068     break;
5069 
5070   case 1085:
5071 
5072 /* Line 1455 of yacc.c  */
5073 #line 2512 "edif.y"
5074     { str_pair_free((yyvsp[(1) - (1)].ps)); }
5075     break;
5076 
5077   case 1086:
5078 
5079 /* Line 1455 of yacc.c  */
5080 #line 2515 "edif.y"
5081     { free((yyvsp[(1) - (1)].s)); }
5082     break;
5083 
5084   case 1107:
5085 
5086 /* Line 1455 of yacc.c  */
5087 #line 2556 "edif.y"
5088     { str_pair_free((yyvsp[(2) - (2)].ps)); }
5089     break;
5090 
5091   case 1109:
5092 
5093 /* Line 1455 of yacc.c  */
5094 #line 2558 "edif.y"
5095     { pair_list_free((yyvsp[(2) - (2)].pl)); }
5096     break;
5097 
5098   case 1126:
5099 
5100 /* Line 1455 of yacc.c  */
5101 #line 2585 "edif.y"
5102     { (yyval.s)=(yyvsp[(1) - (1)].s); }
5103     break;
5104 
5105   case 1127:
5106 
5107 /* Line 1455 of yacc.c  */
5108 #line 2588 "edif.y"
5109     { (yyval.s)=(yyvsp[(1) - (1)].s); }
5110     break;
5111 
5112   case 1128:
5113 
5114 /* Line 1455 of yacc.c  */
5115 #line 2591 "edif.y"
5116     { (yyval.s)=(yyvsp[(1) - (1)].s); }
5117     break;
5118 
5119   case 1129:
5120 
5121 /* Line 1455 of yacc.c  */
5122 #line 2594 "edif.y"
5123     { (yyval.s)=(yyvsp[(1) - (1)].s); }
5124     break;
5125 
5126 
5127 
5128 /* Line 1455 of yacc.c  */
5129 #line 5130 "edif.c"
5130       default: break;
5131     }
5132   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
5133 
5134   YYPOPSTACK (yylen);
5135   yylen = 0;
5136   YY_STACK_PRINT (yyss, yyssp);
5137 
5138   *++yyvsp = yyval;
5139 
5140   /* Now `shift' the result of the reduction.  Determine what state
5141      that goes to, based on the state we popped back to and the rule
5142      number reduced by.  */
5143 
5144   yyn = yyr1[yyn];
5145 
5146   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
5147   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
5148     yystate = yytable[yystate];
5149   else
5150     yystate = yydefgoto[yyn - YYNTOKENS];
5151 
5152   goto yynewstate;
5153 
5154 
5155 /*------------------------------------.
5156 | yyerrlab -- here on detecting error |
5157 `------------------------------------*/
5158 yyerrlab:
5159   /* If not already recovering from an error, report this error.  */
5160   if (!yyerrstatus)
5161     {
5162       ++yynerrs;
5163 #if ! YYERROR_VERBOSE
5164       yyerror (YY_("syntax error"));
5165 #else
5166       {
5167 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
5168 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
5169 	  {
5170 	    YYSIZE_T yyalloc = 2 * yysize;
5171 	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
5172 	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
5173 	    if (yymsg != yymsgbuf)
5174 	      YYSTACK_FREE (yymsg);
5175 	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
5176 	    if (yymsg)
5177 	      yymsg_alloc = yyalloc;
5178 	    else
5179 	      {
5180 		yymsg = yymsgbuf;
5181 		yymsg_alloc = sizeof yymsgbuf;
5182 	      }
5183 	  }
5184 
5185 	if (0 < yysize && yysize <= yymsg_alloc)
5186 	  {
5187 	    (void) yysyntax_error (yymsg, yystate, yychar);
5188 	    yyerror (yymsg);
5189 	  }
5190 	else
5191 	  {
5192 	    yyerror (YY_("syntax error"));
5193 	    if (yysize != 0)
5194 	      goto yyexhaustedlab;
5195 	  }
5196       }
5197 #endif
5198     }
5199 
5200 
5201 
5202   if (yyerrstatus == 3)
5203     {
5204       /* If just tried and failed to reuse lookahead token after an
5205 	 error, discard it.  */
5206 
5207       if (yychar <= YYEOF)
5208 	{
5209 	  /* Return failure if at end of input.  */
5210 	  if (yychar == YYEOF)
5211 	    YYABORT;
5212 	}
5213       else
5214 	{
5215 	  yydestruct ("Error: discarding",
5216 		      yytoken, &yylval);
5217 	  yychar = YYEMPTY;
5218 	}
5219     }
5220 
5221   /* Else will try to reuse lookahead token after shifting the error
5222      token.  */
5223   goto yyerrlab1;
5224 
5225 
5226 /*---------------------------------------------------.
5227 | yyerrorlab -- error raised explicitly by YYERROR.  |
5228 `---------------------------------------------------*/
5229 yyerrorlab:
5230 
5231   /* Pacify compilers like GCC when the user code never invokes
5232      YYERROR and the label yyerrorlab therefore never appears in user
5233      code.  */
5234   if (/*CONSTCOND*/ 0)
5235      goto yyerrorlab;
5236 
5237   /* Do not reclaim the symbols of the rule which action triggered
5238      this YYERROR.  */
5239   YYPOPSTACK (yylen);
5240   yylen = 0;
5241   YY_STACK_PRINT (yyss, yyssp);
5242   yystate = *yyssp;
5243   goto yyerrlab1;
5244 
5245 
5246 /*-------------------------------------------------------------.
5247 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
5248 `-------------------------------------------------------------*/
5249 yyerrlab1:
5250   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
5251 
5252   for (;;)
5253     {
5254       yyn = yypact[yystate];
5255       if (yyn != YYPACT_NINF)
5256 	{
5257 	  yyn += YYTERROR;
5258 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
5259 	    {
5260 	      yyn = yytable[yyn];
5261 	      if (0 < yyn)
5262 		break;
5263 	    }
5264 	}
5265 
5266       /* Pop the current state because it cannot handle the error token.  */
5267       if (yyssp == yyss)
5268 	YYABORT;
5269 
5270 
5271       yydestruct ("Error: popping",
5272 		  yystos[yystate], yyvsp);
5273       YYPOPSTACK (1);
5274       yystate = *yyssp;
5275       YY_STACK_PRINT (yyss, yyssp);
5276     }
5277 
5278   *++yyvsp = yylval;
5279 
5280 
5281   /* Shift the error token.  */
5282   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
5283 
5284   yystate = yyn;
5285   goto yynewstate;
5286 
5287 
5288 /*-------------------------------------.
5289 | yyacceptlab -- YYACCEPT comes here.  |
5290 `-------------------------------------*/
5291 yyacceptlab:
5292   yyresult = 0;
5293   goto yyreturn;
5294 
5295 /*-----------------------------------.
5296 | yyabortlab -- YYABORT comes here.  |
5297 `-----------------------------------*/
5298 yyabortlab:
5299   yyresult = 1;
5300   goto yyreturn;
5301 
5302 #if !defined(yyoverflow) || YYERROR_VERBOSE
5303 /*-------------------------------------------------.
5304 | yyexhaustedlab -- memory exhaustion comes here.  |
5305 `-------------------------------------------------*/
5306 yyexhaustedlab:
5307   yyerror (YY_("memory exhausted"));
5308   yyresult = 2;
5309   /* Fall through.  */
5310 #endif
5311 
5312 yyreturn:
5313   if (yychar != YYEMPTY)
5314      yydestruct ("Cleanup: discarding lookahead",
5315 		 yytoken, &yylval);
5316   /* Do not reclaim the symbols of the rule which action triggered
5317      this YYABORT or YYACCEPT.  */
5318   YYPOPSTACK (yylen);
5319   YY_STACK_PRINT (yyss, yyssp);
5320   while (yyssp != yyss)
5321     {
5322       yydestruct ("Cleanup: popping",
5323 		  yystos[*yyssp], yyvsp);
5324       YYPOPSTACK (1);
5325     }
5326 #ifndef yyoverflow
5327   if (yyss != yyssa)
5328     YYSTACK_FREE (yyss);
5329 #endif
5330 #if YYERROR_VERBOSE
5331   if (yymsg != yymsgbuf)
5332     YYSTACK_FREE (yymsg);
5333 #endif
5334   /* Make sure YYID is used.  */
5335   return YYID (yyresult);
5336 }
5337 
5338 
5339 
5340 /* Line 1675 of yacc.c  */
5341 #line 2597 "edif.y"
5342 
5343 /*
5344  *	xmalloc:
5345  *
5346  *	  Garbage function for 'alloca()'.
5347  */
xmalloc(int siz)5348 char *xmalloc(int siz)
5349 {
5350   return ((char *)Malloc(siz));
5351 }
5352 /*
5353  *	Token & context carriers:
5354  *
5355  *	  These are the linkage pointers for threading this context garbage
5356  *	for converting identifiers into parser tokens.
5357  */
5358 typedef struct TokenCar {
5359   struct TokenCar *Next;	/* pointer to next carrier */
5360   struct Token *Token;		/* associated token */
5361 } TokenCar;
5362 typedef struct UsedCar {
5363   struct UsedCar *Next;		/* pointer to next carrier */
5364   short Code;			/* used '%token' value */
5365 } UsedCar;
5366 typedef struct ContextCar {
5367   struct ContextCar *Next;	/* pointer to next carrier */
5368   struct Context *Context;	/* associated context */
5369   union {
5370     int Single;			/* single usage flag (context tree) */
5371     struct UsedCar *Used;	/* single used list (context stack) */
5372   } u;
5373 } ContextCar;
5374 /*
5375  *	Token definitions:
5376  *
5377  *	  This associates the '%token' codings with strings which are to
5378  *	be free standing tokens. Doesn't have to be in sorted order but the
5379  *	strings must be in lower case.
5380  */
5381 typedef struct Token {
5382   char *Name;			/* token name */
5383   int Code;			/* '%token' value */
5384   struct Token *Next;		/* hash table linkage */
5385 } Token;
5386 static Token TokenDef[] = {
5387   {"angle",		EDIF_TOK_ANGLE},
5388   {"behavior",		EDIF_TOK_BEHAVIOR},
5389   {"calculated",	EDIF_TOK_CALCULATED},
5390   {"capacitance",	EDIF_TOK_CAPACITANCE},
5391   {"centercenter",	EDIF_TOK_CENTERCENTER},
5392   {"centerleft",	EDIF_TOK_CENTERLEFT},
5393   {"centerright",	EDIF_TOK_CENTERRIGHT},
5394   {"charge",		EDIF_TOK_CHARGE},
5395   {"conductance",	EDIF_TOK_CONDUCTANCE},
5396   {"current",		EDIF_TOK_CURRENT},
5397   {"distance",		EDIF_TOK_DISTANCE},
5398   {"document",		EDIF_TOK_DOCUMENT},
5399   {"energy",		EDIF_TOK_ENERGY},
5400   {"extend",		EDIF_TOK_EXTEND},
5401   {"flux",		EDIF_TOK_FLUX},
5402   {"frequency",		EDIF_TOK_FREQUENCY},
5403   {"generic",		EDIF_TOK_GENERIC},
5404   {"graphic",		EDIF_TOK_GRAPHIC},
5405   {"inductance",	EDIF_TOK_INDUCTANCE},
5406   {"inout",		EDIF_TOK_INOUT},
5407   {"input",		EDIF_TOK_INPUT},
5408   {"logicmodel",	EDIF_TOK_LOGICMODEL},
5409   {"lowercenter",	EDIF_TOK_LOWERCENTER},
5410   {"lowerleft",		EDIF_TOK_LOWERLEFT},
5411   {"lowerright",	EDIF_TOK_LOWERRIGHT},
5412   {"masklayout",	EDIF_TOK_MASKLAYOUT},
5413   {"mass",		EDIF_TOK_MASS},
5414   {"measured",		EDIF_TOK_MEASURED},
5415   {"mx",		EDIF_TOK_MX},
5416   {"mxr90",		EDIF_TOK_MXR90},
5417   {"my",		EDIF_TOK_MY},
5418   {"myr90",		EDIF_TOK_MYR90},
5419   {"netlist",		EDIF_TOK_NETLIST},
5420   {"output",		EDIF_TOK_OUTPUT},
5421   {"pcblayout",		EDIF_TOK_PCBLAYOUT},
5422   {"power",		EDIF_TOK_POWER},
5423   {"r0",		EDIF_TOK_R0},
5424   {"r180",		EDIF_TOK_R180},
5425   {"r270",		EDIF_TOK_R270},
5426   {"r90",		EDIF_TOK_R90},
5427   {"required",		EDIF_TOK_REQUIRED},
5428   {"resistance",	EDIF_TOK_RESISTANCE},
5429   {"ripper",		EDIF_TOK_RIPPER},
5430   {"round",		EDIF_TOK_ROUND},
5431   {"schematic",		EDIF_TOK_SCHEMATIC},
5432   {"stranger",		EDIF_TOK_STRANGER},
5433   {"symbolic",		EDIF_TOK_SYMBOLIC},
5434   {"temperature",	EDIF_TOK_TEMPERATURE},
5435   {"tie",		EDIF_TOK_TIE},
5436   {"time",		EDIF_TOK_TIME},
5437   {"truncate",		EDIF_TOK_TRUNCATE},
5438   {"uppercenter",	EDIF_TOK_UPPERCENTER},
5439   {"upperleft",		EDIF_TOK_UPPERLEFT},
5440   {"upperright",	EDIF_TOK_UPPERRIGHT},
5441   {"voltage",		EDIF_TOK_VOLTAGE}
5442 };
5443 static int TokenDefSize = sizeof(TokenDef) / sizeof(Token);
5444 /*
5445  *	Token enable definitions:
5446  *
5447  *	  There is one array for each set of tokens enabled by a
5448  *	particular context (barf). Another array is used to bind
5449  *	these arrays to a context.
5450  */
5451 static short e_CellType[] = {EDIF_TOK_TIE, EDIF_TOK_RIPPER, EDIF_TOK_GENERIC};
5452 static short e_CornerType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
5453 			       EDIF_TOK_ROUND};
5454 static short e_Derivation[] = {EDIF_TOK_CALCULATED, EDIF_TOK_MEASURED,
5455 			       EDIF_TOK_REQUIRED};
5456 static short e_Direction[] = {EDIF_TOK_INPUT, EDIF_TOK_OUTPUT,
5457 			      EDIF_TOK_INOUT};
5458 static short e_EndType[] = {EDIF_TOK_EXTEND, EDIF_TOK_TRUNCATE,
5459 			    EDIF_TOK_ROUND};
5460 static short e_Justify[] = {EDIF_TOK_CENTERCENTER, EDIF_TOK_CENTERLEFT,
5461 			    EDIF_TOK_CENTERRIGHT, EDIF_TOK_LOWERCENTER,
5462 			    EDIF_TOK_LOWERLEFT, EDIF_TOK_LOWERRIGHT,
5463 			    EDIF_TOK_UPPERCENTER, EDIF_TOK_UPPERLEFT,
5464 			    EDIF_TOK_UPPERRIGHT};
5465 static short e_Orientation[] = {EDIF_TOK_R0, EDIF_TOK_R90, EDIF_TOK_R180,
5466 				EDIF_TOK_R270, EDIF_TOK_MX, EDIF_TOK_MY,
5467 				EDIF_TOK_MXR90, EDIF_TOK_MYR90};
5468 static short e_Unit[] = {EDIF_TOK_DISTANCE, EDIF_TOK_CAPACITANCE,
5469 			 EDIF_TOK_CURRENT, EDIF_TOK_RESISTANCE,
5470 			 EDIF_TOK_TEMPERATURE, EDIF_TOK_TIME,
5471 			 EDIF_TOK_VOLTAGE, EDIF_TOK_MASS, EDIF_TOK_FREQUENCY,
5472 			 EDIF_TOK_INDUCTANCE, EDIF_TOK_ENERGY,
5473 			 EDIF_TOK_POWER, EDIF_TOK_CHARGE,
5474 			 EDIF_TOK_CONDUCTANCE, EDIF_TOK_FLUX, EDIF_TOK_ANGLE};
5475 static short e_ViewType[] = {EDIF_TOK_MASKLAYOUT, EDIF_TOK_PCBLAYOUT,
5476 			     EDIF_TOK_NETLIST, EDIF_TOK_SCHEMATIC,
5477 			     EDIF_TOK_SYMBOLIC, EDIF_TOK_BEHAVIOR,
5478 			     EDIF_TOK_LOGICMODEL, EDIF_TOK_DOCUMENT,
5479 			     EDIF_TOK_GRAPHIC, EDIF_TOK_STRANGER};
5480 /*
5481  *	Token tying table:
5482  *
5483  *	  This binds enabled tokens to a context.
5484  */
5485 typedef struct Tie {
5486   short *Enable;		/* pointer to enable array */
5487   short Origin;			/* '%token' value of context */
5488   short EnableSize;		/* size of enabled array */
5489 } Tie;
5490 #define	TE(e,o)			{e,o,sizeof(e)/sizeof(short)}
5491 static Tie TieDef[] = {
5492   TE(e_CellType,	EDIF_TOK_CELLTYPE),
5493   TE(e_CornerType,	EDIF_TOK_CORNERTYPE),
5494   TE(e_Derivation,	EDIF_TOK_DERIVATION),
5495   TE(e_Direction,	EDIF_TOK_DIRECTION),
5496   TE(e_EndType,		EDIF_TOK_ENDTYPE),
5497   TE(e_Justify,		EDIF_TOK_JUSTIFY),
5498   TE(e_Orientation,	EDIF_TOK_ORIENTATION),
5499   TE(e_Unit,		EDIF_TOK_UNIT),
5500   TE(e_ViewType,	EDIF_TOK_VIEWTYPE)
5501 };
5502 static int TieDefSize = sizeof(TieDef) / sizeof(Tie);
5503 /*
5504  *	Context definitions:
5505  *
5506  *	  This associates keyword strings with '%token' values. It
5507  *	also creates a pretty much empty header for later building of
5508  *	the context tree. Again they needn't be sorted, but strings
5509  *	must be lower case.
5510  */
5511 typedef struct Context {
5512   char *Name;			/* keyword name */
5513   short Code;			/* '%token' value */
5514   short Flags;			/* special operation flags */
5515   struct ContextCar *Context;	/* contexts which can be moved to */
5516   struct TokenCar *Token;	/* active tokens */
5517   struct Context *Next;		/* hash table linkage */
5518 } Context;
5519 static Context ContextDef[] = {
5520   {"",				0},		/* start context */
5521   {"acload",			EDIF_TOK_ACLOAD},
5522   {"after",			EDIF_TOK_AFTER},
5523   {"annotate",			EDIF_TOK_ANNOTATE},
5524   {"apply",			EDIF_TOK_APPLY},
5525   {"arc",			EDIF_TOK_ARC},
5526   {"array",			EDIF_TOK_ARRAY},
5527   {"arraymacro",		EDIF_TOK_ARRAYMACRO},
5528   {"arrayrelatedinfo",		EDIF_TOK_ARRAYRELATEDINFO},
5529   {"arraysite",			EDIF_TOK_ARRAYSITE},
5530   {"atleast",			EDIF_TOK_ATLEAST},
5531   {"atmost",			EDIF_TOK_ATMOST},
5532   {"author",			EDIF_TOK_AUTHOR},
5533   {"basearray",			EDIF_TOK_BASEARRAY},
5534   {"becomes",			EDIF_TOK_BECOMES},
5535   {"between",			EDIF_TOK_BETWEEN},
5536   {"boolean",			EDIF_TOK_BOOLEAN},
5537   {"booleandisplay",		EDIF_TOK_BOOLEANDISPLAY},
5538   {"booleanmap",		EDIF_TOK_BOOLEANMAP},
5539   {"borderpattern",		EDIF_TOK_BORDERPATTERN},
5540   {"borderwidth",		EDIF_TOK_BORDERWIDTH},
5541   {"boundingbox",		EDIF_TOK_BOUNDINGBOX},
5542   {"cell",			EDIF_TOK_CELL},
5543   {"cellref",			EDIF_TOK_CELLREF},
5544   {"celltype",			EDIF_TOK_CELLTYPE},
5545   {"change",			EDIF_TOK_CHANGE},
5546   {"circle",			EDIF_TOK_CIRCLE},
5547   {"color",			EDIF_TOK_COLOR},
5548   {"comment",			EDIF_TOK_COMMENT},
5549   {"commentgraphics",		EDIF_TOK_COMMENTGRAPHICS},
5550   {"compound",			EDIF_TOK_COMPOUND},
5551   {"connectlocation",		EDIF_TOK_CONNECTLOCATION},
5552   {"contents",			EDIF_TOK_CONTENTS},
5553   {"cornertype",		EDIF_TOK_CORNERTYPE},
5554   {"criticality",		EDIF_TOK_CRITICALITY},
5555   {"currentmap",		EDIF_TOK_CURRENTMAP},
5556   {"curve",			EDIF_TOK_CURVE},
5557   {"cycle",			EDIF_TOK_CYCLE},
5558   {"dataorigin",		EDIF_TOK_DATAORIGIN},
5559   {"dcfaninload",		EDIF_TOK_DCFANINLOAD},
5560   {"dcfanoutload",		EDIF_TOK_DCFANOUTLOAD},
5561   {"dcmaxfanin",		EDIF_TOK_DCMAXFANIN},
5562   {"dcmaxfanout",		EDIF_TOK_DCMAXFANOUT},
5563   {"delay",			EDIF_TOK_DELAY},
5564   {"delta",			EDIF_TOK_DELTA},
5565   {"derivation",		EDIF_TOK_DERIVATION},
5566   {"design",			EDIF_TOK_DESIGN},
5567   {"designator",		EDIF_TOK_DESIGNATOR},
5568   {"difference",		EDIF_TOK_DIFFERENCE},
5569   {"direction",			EDIF_TOK_DIRECTION},
5570   {"display",			EDIF_TOK_DISPLAY},
5571   {"dominates",			EDIF_TOK_DOMINATES},
5572   {"dot",			EDIF_TOK_DOT},
5573   {"duration",			EDIF_TOK_DURATION},
5574   {"e",				EDIF_TOK_E},
5575   {"edif",			EDIF_TOK_EDIF},
5576   {"ediflevel",			EDIF_TOK_EDIFLEVEL},
5577   {"edifversion",		EDIF_TOK_EDIFVERSION},
5578   {"enclosuredistance",		EDIF_TOK_ENCLOSUREDISTANCE},
5579   {"endtype",			EDIF_TOK_ENDTYPE},
5580   {"entry",			EDIF_TOK_ENTRY},
5581   {"exactly",			EDIF_TOK_EXACTLY},
5582   {"external",			EDIF_TOK_EXTERNAL},
5583   {"fabricate",			EDIF_TOK_FABRICATE},
5584   {"false",			EDIF_TOK_FALSE},
5585   {"figure",			EDIF_TOK_FIGURE},
5586   {"figurearea",		EDIF_TOK_FIGUREAREA},
5587   {"figuregroup",		EDIF_TOK_FIGUREGROUP},
5588   {"figuregroupobject",		EDIF_TOK_FIGUREGROUPOBJECT},
5589   {"figuregroupoverride",	EDIF_TOK_FIGUREGROUPOVERRIDE},
5590   {"figuregroupref",		EDIF_TOK_FIGUREGROUPREF},
5591   {"figureperimeter",		EDIF_TOK_FIGUREPERIMETER},
5592   {"figurewidth",		EDIF_TOK_FIGUREWIDTH},
5593   {"fillpattern",		EDIF_TOK_FILLPATTERN},
5594   {"follow",			EDIF_TOK_FOLLOW},
5595   {"forbiddenevent",		EDIF_TOK_FORBIDDENEVENT},
5596   {"globalportref",		EDIF_TOK_GLOBALPORTREF},
5597   {"greaterthan",		EDIF_TOK_GREATERTHAN},
5598   {"gridmap",			EDIF_TOK_GRIDMAP},
5599   {"ignore",			EDIF_TOK_IGNORE},
5600   {"includefiguregroup",	EDIF_TOK_INCLUDEFIGUREGROUP},
5601   {"initial",			EDIF_TOK_INITIAL},
5602   {"instance",			EDIF_TOK_INSTANCE},
5603   {"instancebackannotate",	EDIF_TOK_INSTANCEBACKANNOTATE},
5604   {"instancegroup",		EDIF_TOK_INSTANCEGROUP},
5605   {"instancemap",		EDIF_TOK_INSTANCEMAP},
5606   {"instanceref",		EDIF_TOK_INSTANCEREF},
5607   {"integer",			EDIF_TOK_INTEGER},
5608   {"integerdisplay",		EDIF_TOK_INTEGERDISPLAY},
5609   {"interface",			EDIF_TOK_INTERFACE},
5610   {"interfiguregroupspacing",	EDIF_TOK_INTERFIGUREGROUPSPACING},
5611   {"intersection",		EDIF_TOK_INTERSECTION},
5612   {"intrafiguregroupspacing",	EDIF_TOK_INTRAFIGUREGROUPSPACING},
5613   {"inverse",			EDIF_TOK_INVERSE},
5614   {"isolated",			EDIF_TOK_ISOLATED},
5615   {"joined",			EDIF_TOK_JOINED},
5616   {"justify",			EDIF_TOK_JUSTIFY},
5617   {"keyworddisplay",		EDIF_TOK_KEYWORDDISPLAY},
5618   {"keywordlevel",		EDIF_TOK_KEYWORDLEVEL},
5619   {"keywordmap",		EDIF_TOK_KEYWORDMAP},
5620   {"lessthan",			EDIF_TOK_LESSTHAN},
5621   {"library",			EDIF_TOK_LIBRARY},
5622   {"libraryref",		EDIF_TOK_LIBRARYREF},
5623   {"listofnets",		EDIF_TOK_LISTOFNETS},
5624   {"listofports",		EDIF_TOK_LISTOFPORTS},
5625   {"loaddelay",			EDIF_TOK_LOADDELAY},
5626   {"logicassign",		EDIF_TOK_LOGICASSIGN},
5627   {"logicinput",		EDIF_TOK_LOGICINPUT},
5628   {"logiclist",			EDIF_TOK_LOGICLIST},
5629   {"logicmapinput",		EDIF_TOK_LOGICMAPINPUT},
5630   {"logicmapoutput",		EDIF_TOK_LOGICMAPOUTPUT},
5631   {"logiconeof",		EDIF_TOK_LOGICONEOF},
5632   {"logicoutput",		EDIF_TOK_LOGICOUTPUT},
5633   {"logicport",			EDIF_TOK_LOGICPORT},
5634   {"logicref",			EDIF_TOK_LOGICREF},
5635   {"logicvalue",		EDIF_TOK_LOGICVALUE},
5636   {"logicwaveform",		EDIF_TOK_LOGICWAVEFORM},
5637   {"maintain",			EDIF_TOK_MAINTAIN},
5638   {"match",			EDIF_TOK_MATCH},
5639   {"member",			EDIF_TOK_MEMBER},
5640   {"minomax",			EDIF_TOK_MINOMAX},
5641   {"minomaxdisplay",		EDIF_TOK_MINOMAXDISPLAY},
5642   {"mnm",			EDIF_TOK_MNM},
5643   {"multiplevalueset",		EDIF_TOK_MULTIPLEVALUESET},
5644   {"mustjoin",			EDIF_TOK_MUSTJOIN},
5645   {"name",			EDIF_TOK_NAME},
5646   {"net",			EDIF_TOK_NET},
5647   {"netbackannotate",		EDIF_TOK_NETBACKANNOTATE},
5648   {"netbundle",			EDIF_TOK_NETBUNDLE},
5649   {"netdelay",			EDIF_TOK_NETDELAY},
5650   {"netgroup",			EDIF_TOK_NETGROUP},
5651   {"netmap",			EDIF_TOK_NETMAP},
5652   {"netref",			EDIF_TOK_NETREF},
5653   {"nochange",			EDIF_TOK_NOCHANGE},
5654   {"nonpermutable",		EDIF_TOK_NONPERMUTABLE},
5655   {"notallowed",		EDIF_TOK_NOTALLOWED},
5656   {"notchspacing",		EDIF_TOK_NOTCHSPACING},
5657   {"number",			EDIF_TOK_NUMBER},
5658   {"numberdefinition",		EDIF_TOK_NUMBERDEFINITION},
5659   {"numberdisplay",		EDIF_TOK_NUMBERDISPLAY},
5660   {"offpageconnector",		EDIF_TOK_OFFPAGECONNECTOR},
5661   {"offsetevent",		EDIF_TOK_OFFSETEVENT},
5662   {"openshape",			EDIF_TOK_OPENSHAPE},
5663   {"orientation",		EDIF_TOK_ORIENTATION},
5664   {"origin",			EDIF_TOK_ORIGIN},
5665   {"overhangdistance",		EDIF_TOK_OVERHANGDISTANCE},
5666   {"overlapdistance",		EDIF_TOK_OVERLAPDISTANCE},
5667   {"oversize",			EDIF_TOK_OVERSIZE},
5668   {"owner",			EDIF_TOK_OWNER},
5669   {"page",			EDIF_TOK_PAGE},
5670   {"pagesize",			EDIF_TOK_PAGESIZE},
5671   {"parameter",			EDIF_TOK_PARAMETER},
5672   {"parameterassign",		EDIF_TOK_PARAMETERASSIGN},
5673   {"parameterdisplay",		EDIF_TOK_PARAMETERDISPLAY},
5674   {"path",			EDIF_TOK_PATH},
5675   {"pathdelay",			EDIF_TOK_PATHDELAY},
5676   {"pathwidth",			EDIF_TOK_PATHWIDTH},
5677   {"permutable",		EDIF_TOK_PERMUTABLE},
5678   {"physicaldesignrule",	EDIF_TOK_PHYSICALDESIGNRULE},
5679   {"plug",			EDIF_TOK_PLUG},
5680   {"point",			EDIF_TOK_POINT},
5681   {"pointdisplay",		EDIF_TOK_POINTDISPLAY},
5682   {"pointlist",			EDIF_TOK_POINTLIST},
5683   {"polygon",			EDIF_TOK_POLYGON},
5684   {"port",			EDIF_TOK_PORT},
5685   {"portbackannotate",		EDIF_TOK_PORTBACKANNOTATE},
5686   {"portbundle",		EDIF_TOK_PORTBUNDLE},
5687   {"portdelay",			EDIF_TOK_PORTDELAY},
5688   {"portgroup",			EDIF_TOK_PORTGROUP},
5689   {"portimplementation",	EDIF_TOK_PORTIMPLEMENTATION},
5690   {"portinstance",		EDIF_TOK_PORTINSTANCE},
5691   {"portlist",			EDIF_TOK_PORTLIST},
5692   {"portlistalias",		EDIF_TOK_PORTLISTALIAS},
5693   {"portmap",			EDIF_TOK_PORTMAP},
5694   {"portref",			EDIF_TOK_PORTREF},
5695   {"program",			EDIF_TOK_PROGRAM},
5696   {"property",			EDIF_TOK_PROPERTY},
5697   {"propertydisplay",		EDIF_TOK_PROPERTYDISPLAY},
5698   {"protectionframe",		EDIF_TOK_PROTECTIONFRAME},
5699   {"pt",			EDIF_TOK_PT},
5700   {"rangevector",		EDIF_TOK_RANGEVECTOR},
5701   {"rectangle",			EDIF_TOK_RECTANGLE},
5702   {"rectanglesize",		EDIF_TOK_RECTANGLESIZE},
5703   {"rename",			EDIF_TOK_RENAME},
5704   {"resolves",			EDIF_TOK_RESOLVES},
5705   {"scale",			EDIF_TOK_SCALE},
5706   {"scalex",			EDIF_TOK_SCALEX},
5707   {"scaley",			EDIF_TOK_SCALEY},
5708   {"section",			EDIF_TOK_SECTION},
5709   {"shape",			EDIF_TOK_SHAPE},
5710   {"simulate",			EDIF_TOK_SIMULATE},
5711   {"simulationinfo",		EDIF_TOK_SIMULATIONINFO},
5712   {"singlevalueset",		EDIF_TOK_SINGLEVALUESET},
5713   {"site",			EDIF_TOK_SITE},
5714   {"socket",			EDIF_TOK_SOCKET},
5715   {"socketset",			EDIF_TOK_SOCKETSET},
5716   {"status",			EDIF_TOK_STATUS},
5717   {"steady",			EDIF_TOK_STEADY},
5718   {"string",			EDIF_TOK_STRING},
5719   {"stringdisplay",		EDIF_TOK_STRINGDISPLAY},
5720   {"strong",			EDIF_TOK_STRONG},
5721   {"symbol",			EDIF_TOK_SYMBOL},
5722   {"symmetry",			EDIF_TOK_SYMMETRY},
5723   {"table",			EDIF_TOK_TABLE},
5724   {"tabledefault",		EDIF_TOK_TABLEDEFAULT},
5725   {"technology",		EDIF_TOK_TECHNOLOGY},
5726   {"textheight",		EDIF_TOK_TEXTHEIGHT},
5727   {"timeinterval",		EDIF_TOK_TIMEINTERVAL},
5728   {"timestamp",			EDIF_TOK_TIMESTAMP},
5729   {"timing",			EDIF_TOK_TIMING},
5730   {"transform",			EDIF_TOK_TRANSFORM},
5731   {"transition",		EDIF_TOK_TRANSITION},
5732   {"trigger",			EDIF_TOK_TRIGGER},
5733   {"true",			EDIF_TOK_TRUE},
5734   {"unconstrained",		EDIF_TOK_UNCONSTRAINED},
5735   {"undefined",			EDIF_TOK_UNDEFINED},
5736   {"union",			EDIF_TOK_UNION},
5737   {"unit",			EDIF_TOK_UNIT},
5738   {"unused",			EDIF_TOK_UNUSED},
5739   {"userdata",			EDIF_TOK_USERDATA},
5740   {"version",			EDIF_TOK_VERSION},
5741   {"view",			EDIF_TOK_VIEW},
5742   {"viewlist",			EDIF_TOK_VIEWLIST},
5743   {"viewmap",			EDIF_TOK_VIEWMAP},
5744   {"viewref",			EDIF_TOK_VIEWREF},
5745   {"viewtype",			EDIF_TOK_VIEWTYPE},
5746   {"visible",			EDIF_TOK_VISIBLE},
5747   {"voltagemap",		EDIF_TOK_VOLTAGEMAP},
5748   {"wavevalue",			EDIF_TOK_WAVEVALUE},
5749   {"weak",			EDIF_TOK_WEAK},
5750   {"weakjoined",		EDIF_TOK_WEAKJOINED},
5751   {"when",			EDIF_TOK_WHEN},
5752   {"written",			EDIF_TOK_WRITTEN}
5753 };
5754 static int ContextDefSize = sizeof(ContextDef) / sizeof(Context);
5755 /*
5756  *	Context follower tables:
5757  *
5758  *	  This is pretty ugly, an array is defined for each context
5759  *	which has following context levels. Yet another table is used
5760  *	to bind these arrays to the originating contexts.
5761  *	  Arrays are declared as:
5762  *
5763  *		static short f_<Context name>[] = { ... };
5764  *
5765  *	The array entries are the '%token' values for all keywords which
5766  *	can be reached from the <Context name> context. Like I said, ugly,
5767  *	but it works.
5768  *	  A negative entry means that the follow can only occur once within
5769  *	the specified context.
5770  */
5771 static short f_NULL[] = {EDIF_TOK_EDIF};
5772 static short f_Edif[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFVERSION,
5773 			 EDIF_TOK_EDIFLEVEL, EDIF_TOK_KEYWORDMAP,
5774 			 -EDIF_TOK_STATUS, EDIF_TOK_EXTERNAL,
5775 			 EDIF_TOK_LIBRARY, EDIF_TOK_DESIGN, EDIF_TOK_COMMENT,
5776 			 EDIF_TOK_USERDATA};
5777 static short f_AcLoad[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
5778 static short f_After[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_FOLLOW,
5779 			  EDIF_TOK_MAINTAIN, EDIF_TOK_LOGICASSIGN,
5780 			  EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5781 static short f_Annotate[] = {EDIF_TOK_STRINGDISPLAY};
5782 static short f_Apply[] = {EDIF_TOK_CYCLE, EDIF_TOK_LOGICINPUT,
5783 			  EDIF_TOK_LOGICOUTPUT, EDIF_TOK_COMMENT,
5784 			  EDIF_TOK_USERDATA};
5785 static short f_Arc[] = {EDIF_TOK_PT};
5786 static short f_Array[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
5787 static short f_ArrayMacro[] = {EDIF_TOK_PLUG};
5788 static short f_ArrayRelatedInfo[] = {EDIF_TOK_BASEARRAY, EDIF_TOK_ARRAYSITE,
5789 				     EDIF_TOK_ARRAYMACRO, EDIF_TOK_COMMENT,
5790 				     EDIF_TOK_USERDATA};
5791 static short f_ArraySite[] = {EDIF_TOK_SOCKET};
5792 static short f_AtLeast[] = {EDIF_TOK_E};
5793 static short f_AtMost[] = {EDIF_TOK_E};
5794 static short f_Becomes[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
5795 			    EDIF_TOK_LOGICONEOF};
5796 /*
5797 static short f_Between[] = {EDIF_TOK_ATLEAST, EDIF_TOK_GREATERTHAN,
5798 			    EDIF_TOK_ATMOST, EDIF_TOK_LESSTHAN};
5799 */
5800 static short f_Boolean[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
5801 			    EDIF_TOK_BOOLEANDISPLAY, EDIF_TOK_BOOLEAN};
5802 static short f_BooleanDisplay[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE,
5803 				   EDIF_TOK_DISPLAY};
5804 static short f_BooleanMap[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
5805 static short f_BorderPattern[] = {EDIF_TOK_BOOLEAN};
5806 static short f_BoundingBox[] = {EDIF_TOK_RECTANGLE};
5807 static short f_Cell[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLTYPE,
5808 			 -EDIF_TOK_STATUS, -EDIF_TOK_VIEWMAP, EDIF_TOK_VIEW,
5809 			 EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
5810 			 EDIF_TOK_PROPERTY};
5811 static short f_CellRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
5812 static short f_Change[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
5813 			   EDIF_TOK_BECOMES, EDIF_TOK_TRANSITION};
5814 static short f_Circle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
5815 static short f_Color[] = {EDIF_TOK_E};
5816 static short f_CommentGraphics[] = {EDIF_TOK_ANNOTATE, EDIF_TOK_FIGURE,
5817 				    EDIF_TOK_INSTANCE, -EDIF_TOK_BOUNDINGBOX,
5818 				    EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
5819 				    EDIF_TOK_USERDATA};
5820 static short f_Compound[] = {EDIF_TOK_NAME};
5821 static short f_ConnectLocation[] = {EDIF_TOK_FIGURE};
5822 static short f_Contents[] = {EDIF_TOK_INSTANCE, EDIF_TOK_OFFPAGECONNECTOR,
5823 			     EDIF_TOK_FIGURE, EDIF_TOK_SECTION, EDIF_TOK_NET,
5824 			     EDIF_TOK_NETBUNDLE, EDIF_TOK_PAGE,
5825 			     EDIF_TOK_COMMENTGRAPHICS,
5826 			     EDIF_TOK_PORTIMPLEMENTATION,
5827 			     EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
5828 			     EDIF_TOK_WHEN, EDIF_TOK_FOLLOW,
5829 			     EDIF_TOK_LOGICPORT, -EDIF_TOK_BOUNDINGBOX,
5830 			     EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5831 static short f_Criticality[] = {EDIF_TOK_INTEGERDISPLAY};
5832 static short f_CurrentMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
5833 static short f_Curve[] = {EDIF_TOK_ARC, EDIF_TOK_PT};
5834 static short f_Cycle[] = {EDIF_TOK_DURATION};
5835 static short f_DataOrigin[] = {EDIF_TOK_VERSION};
5836 static short f_DcFanInLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
5837 static short f_DcFanOutLoad[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
5838 static short f_DcMaxFanIn[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
5839 static short f_DcMaxFanOut[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY};
5840 static short f_Delay[] = {EDIF_TOK_MNM, EDIF_TOK_E};
5841 static short f_Delta[] = {EDIF_TOK_PT};
5842 static short f_Design[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_CELLREF,
5843 			   EDIF_TOK_STATUS, EDIF_TOK_COMMENT,
5844 			   EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
5845 static short f_Designator[] = {EDIF_TOK_STRINGDISPLAY};
5846 static short f_Difference[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
5847 			       EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
5848 			       EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
5849 static short f_Display[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
5850 			    EDIF_TOK_JUSTIFY, EDIF_TOK_ORIENTATION,
5851 			    EDIF_TOK_ORIGIN};
5852 static short f_Dominates[] = {EDIF_TOK_NAME};
5853 static short f_Dot[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
5854 static short f_Duration[] = {EDIF_TOK_E};
5855 static short f_EnclosureDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5856 				      EDIF_TOK_FIGUREGROUPOBJECT,
5857 				      EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
5858 				      EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
5859 				      EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
5860 				      EDIF_TOK_SINGLEVALUESET,
5861 				      EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5862 static short f_Entry[] = {EDIF_TOK_MATCH, EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
5863 			  EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
5864 			  EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
5865 			  EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
5866 static short f_Exactly[] = {EDIF_TOK_E};
5867 static short f_External[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5868 			     EDIF_TOK_EDIFLEVEL, EDIF_TOK_TECHNOLOGY,
5869 			     -EDIF_TOK_STATUS, EDIF_TOK_CELL, EDIF_TOK_COMMENT,
5870 			     EDIF_TOK_USERDATA};
5871 static short f_Fabricate[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME};
5872 static short f_Figure[] = {EDIF_TOK_NAME, EDIF_TOK_FIGUREGROUPOVERRIDE,
5873 			   EDIF_TOK_CIRCLE, EDIF_TOK_DOT, EDIF_TOK_OPENSHAPE,
5874 			   EDIF_TOK_PATH, EDIF_TOK_POLYGON,
5875 			   EDIF_TOK_RECTANGLE, EDIF_TOK_SHAPE,
5876 			   EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5877 static short f_FigureArea[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5878 			       EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
5879 			       EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
5880 			       EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
5881 			       EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
5882 			       EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5883 static short f_FigureGroup[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5884 				-EDIF_TOK_CORNERTYPE, -EDIF_TOK_ENDTYPE,
5885 				-EDIF_TOK_PATHWIDTH, -EDIF_TOK_BORDERWIDTH,
5886 				-EDIF_TOK_COLOR, -EDIF_TOK_FILLPATTERN,
5887 				-EDIF_TOK_BORDERPATTERN, -EDIF_TOK_TEXTHEIGHT,
5888 				-EDIF_TOK_VISIBLE, EDIF_TOK_INCLUDEFIGUREGROUP,
5889 				EDIF_TOK_COMMENT, EDIF_TOK_PROPERTY,
5890 				EDIF_TOK_USERDATA};
5891 static short f_FigureGroupObject[] = {EDIF_TOK_NAME,
5892 				      EDIF_TOK_FIGUREGROUPOBJECT,
5893 				      EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
5894 				      EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
5895 				      EDIF_TOK_OVERSIZE};
5896 static short f_FigureGroupOverride[] = {EDIF_TOK_NAME, -EDIF_TOK_CORNERTYPE,
5897 					-EDIF_TOK_ENDTYPE, -EDIF_TOK_PATHWIDTH,
5898 					-EDIF_TOK_BORDERWIDTH, -EDIF_TOK_COLOR,
5899 					-EDIF_TOK_FILLPATTERN,
5900 					-EDIF_TOK_TEXTHEIGHT,
5901 					-EDIF_TOK_BORDERPATTERN,
5902 					EDIF_TOK_VISIBLE, EDIF_TOK_COMMENT,
5903 					EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
5904 static short f_FigureGroupRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
5905 static short f_FigurePerimeter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5906 				    EDIF_TOK_FIGUREGROUPOBJECT,
5907 				    EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
5908 				    EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
5909 				    EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
5910 				    EDIF_TOK_SINGLEVALUESET, EDIF_TOK_COMMENT,
5911 				    EDIF_TOK_USERDATA};
5912 static short f_FigureWidth[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5913 				EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
5914 				EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
5915 				EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
5916 				EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
5917 				EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5918 static short f_FillPattern[] = {EDIF_TOK_BOOLEAN};
5919 static short f_Follow[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_TABLE,
5920 			   EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
5921 static short f_ForbiddenEvent[] = {EDIF_TOK_TIMEINTERVAL, EDIF_TOK_EVENT};
5922 static short f_GlobalPortRef[] = {EDIF_TOK_NAME};
5923 static short f_GreaterThan[] = {EDIF_TOK_E};
5924 static short f_GridMap[] = {EDIF_TOK_E};
5925 static short f_IncludeFigureGroup[] = {EDIF_TOK_FIGUREGROUPREF,
5926 				       EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
5927 				       EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
5928 				       EDIF_TOK_OVERSIZE};
5929 static short f_Instance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
5930 			     EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST,
5931 			     -EDIF_TOK_TRANSFORM, EDIF_TOK_PARAMETERASSIGN,
5932 			     EDIF_TOK_PORTINSTANCE, EDIF_TOK_TIMING,
5933 			     -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
5934 			     EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5935 static short f_InstanceBackAnnotate[] = {EDIF_TOK_INSTANCEREF,
5936 					 -EDIF_TOK_DESIGNATOR, EDIF_TOK_TIMING,
5937 					 EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
5938 static short f_InstanceGroup[] = {EDIF_TOK_INSTANCEREF};
5939 static short f_InstanceMap[] = {EDIF_TOK_INSTANCEREF, EDIF_TOK_INSTANCEGROUP,
5940 				EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5941 static short f_InstanceRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
5942 				EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
5943 static short f_Integer[] = {EDIF_TOK_INTEGERDISPLAY, EDIF_TOK_INTEGER};
5944 static short f_IntegerDisplay[] = {EDIF_TOK_DISPLAY};
5945 static short f_Interface[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE,
5946 			      -EDIF_TOK_SYMBOL, -EDIF_TOK_PROTECTIONFRAME,
5947 			      -EDIF_TOK_ARRAYRELATEDINFO, EDIF_TOK_PARAMETER,
5948 			      EDIF_TOK_JOINED, EDIF_TOK_MUSTJOIN,
5949 			      EDIF_TOK_WEAKJOINED, EDIF_TOK_PERMUTABLE,
5950 			      EDIF_TOK_TIMING, EDIF_TOK_SIMULATE,
5951 			      -EDIF_TOK_DESIGNATOR, EDIF_TOK_PROPERTY,
5952 			      EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
5953 static short f_InterFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5954 					    EDIF_TOK_FIGUREGROUPOBJECT,
5955 					    EDIF_TOK_LESSTHAN,
5956 					    EDIF_TOK_GREATERTHAN,
5957 					    EDIF_TOK_ATMOST,
5958 					    EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
5959 					    EDIF_TOK_BETWEEN,
5960 					    EDIF_TOK_SINGLEVALUESET,
5961 					    EDIF_TOK_COMMENT,
5962 					    EDIF_TOK_USERDATA};
5963 static short f_Intersection[] = {EDIF_TOK_FIGUREGROUPREF,
5964 				 EDIF_TOK_INTERSECTION, EDIF_TOK_UNION,
5965 				 EDIF_TOK_DIFFERENCE, EDIF_TOK_INVERSE,
5966 				 EDIF_TOK_OVERSIZE};
5967 static short f_IntraFigureGroupSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
5968 					    EDIF_TOK_FIGUREGROUPOBJECT,
5969 					    EDIF_TOK_LESSTHAN,
5970 					    EDIF_TOK_GREATERTHAN,
5971 					    EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
5972 					    EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
5973 					    EDIF_TOK_SINGLEVALUESET,
5974 					    EDIF_TOK_COMMENT,
5975 					    EDIF_TOK_USERDATA};
5976 static short f_Inverse[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
5977 			    EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
5978 			    EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
5979 static short f_Joined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
5980 			   EDIF_TOK_GLOBALPORTREF};
5981 static short f_KeywordDisplay[] = {EDIF_TOK_DISPLAY};
5982 static short f_KeywordMap[] = {EDIF_TOK_KEYWORDLEVEL, EDIF_TOK_COMMENT};
5983 static short f_LessThan[] = {EDIF_TOK_E};
5984 static short f_Library[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_EDIFLEVEL,
5985 			    EDIF_TOK_TECHNOLOGY, -EDIF_TOK_STATUS,
5986 			    EDIF_TOK_CELL, EDIF_TOK_COMMENT,
5987 			    EDIF_TOK_USERDATA};
5988 static short f_LibraryRef[] = {EDIF_TOK_NAME};
5989 static short f_ListOfNets[] = {EDIF_TOK_NET};
5990 static short f_ListOfPorts[] = {EDIF_TOK_PORT, EDIF_TOK_PORTBUNDLE};
5991 static short f_LoadDelay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY};
5992 static short f_LogicAssign[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF,
5993 				EDIF_TOK_LOGICREF, EDIF_TOK_TABLE,
5994 				EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
5995 static short f_LogicInput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
5996 			       EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
5997 static short f_LogicList[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICONEOF,
5998 			      EDIF_TOK_IGNORE};
5999 static short f_LogicMapInput[] = {EDIF_TOK_LOGICREF};
6000 static short f_LogicMapOutput[] = {EDIF_TOK_LOGICREF};
6001 static short f_LogicOneOf[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST};
6002 static short f_LogicOutput[] = {EDIF_TOK_PORTLIST, EDIF_TOK_PORTREF,
6003 				EDIF_TOK_NAME, EDIF_TOK_LOGICWAVEFORM};
6004 static short f_LogicPort[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6005 			      EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6006 			      EDIF_TOK_USERDATA};
6007 static short f_LogicRef[] = {EDIF_TOK_NAME, EDIF_TOK_LIBRARYREF};
6008 static short f_LogicValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6009 			       -EDIF_TOK_VOLTAGEMAP, -EDIF_TOK_CURRENTMAP,
6010 			       -EDIF_TOK_BOOLEANMAP, -EDIF_TOK_COMPOUND,
6011 			       -EDIF_TOK_WEAK ,-EDIF_TOK_STRONG,
6012 			       -EDIF_TOK_DOMINATES, -EDIF_TOK_LOGICMAPOUTPUT,
6013 			       -EDIF_TOK_LOGICMAPINPUT,
6014 			       -EDIF_TOK_ISOLATED, EDIF_TOK_RESOLVES,
6015 			       EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6016 			       EDIF_TOK_USERDATA};
6017 static short f_LogicWaveform[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
6018 				  EDIF_TOK_LOGICONEOF, EDIF_TOK_IGNORE};
6019 static short f_Maintain[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_DELAY,
6020 			     EDIF_TOK_LOADDELAY};
6021 static short f_Match[] = {EDIF_TOK_NAME, EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
6022 			  EDIF_TOK_LOGICLIST, EDIF_TOK_LOGICONEOF};
6023 static short f_Member[] = {EDIF_TOK_NAME};
6024 static short f_MiNoMax[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_MINOMAXDISPLAY,
6025 			    EDIF_TOK_MINOMAX};
6026 static short f_MiNoMaxDisplay[] = {EDIF_TOK_MNM, EDIF_TOK_E, EDIF_TOK_DISPLAY};
6027 static short f_Mnm[] = {EDIF_TOK_E, EDIF_TOK_UNDEFINED,
6028 			EDIF_TOK_UNCONSTRAINED};
6029 static short f_MultipleValueSet[] = {EDIF_TOK_RANGEVECTOR};
6030 static short f_MustJoin[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
6031 			     EDIF_TOK_WEAKJOINED, EDIF_TOK_JOINED};
6032 static short f_Name[] = {EDIF_TOK_DISPLAY};
6033 static short f_Net[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, -EDIF_TOK_CRITICALITY,
6034 			EDIF_TOK_NETDELAY, EDIF_TOK_FIGURE, EDIF_TOK_NET,
6035 			EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
6036 			EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6037 			EDIF_TOK_USERDATA, EDIF_TOK_JOINED, EDIF_TOK_ARRAY};
6038 static short f_NetBackAnnotate[] = {EDIF_TOK_NETREF, EDIF_TOK_NETDELAY,
6039 				    -EDIF_TOK_CRITICALITY, EDIF_TOK_PROPERTY,
6040 				    EDIF_TOK_COMMENT};
6041 static short f_NetBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
6042 			      EDIF_TOK_LISTOFNETS, EDIF_TOK_FIGURE,
6043 			      EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PROPERTY,
6044 			      EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6045 static short f_NetDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
6046 			     EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
6047 static short f_NetGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF};
6048 static short f_NetMap[] = {EDIF_TOK_NETREF, EDIF_TOK_NETGROUP,
6049 			   EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6050 static short f_NetRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_NETREF,
6051 			   EDIF_TOK_INSTANCEREF, EDIF_TOK_VIEWREF};
6052 static short f_NonPermutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE};
6053 static short f_NotAllowed[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6054 			       EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_COMMENT,
6055 			       EDIF_TOK_USERDATA};
6056 static short f_NotchSpacing[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6057 				 EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
6058 				 EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
6059 				 EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
6060 				 EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
6061 				 EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6062 static short f_Number[] = {EDIF_TOK_E, EDIF_TOK_NUMBERDISPLAY, EDIF_TOK_NUMBER};
6063 static short f_NumberDefinition[] = {EDIF_TOK_SCALE, -EDIF_TOK_GRIDMAP,
6064 				     EDIF_TOK_COMMENT};
6065 static short f_NumberDisplay[] = {EDIF_TOK_E, EDIF_TOK_DISPLAY};
6066 static short f_OffPageConnector[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6067 				     -EDIF_TOK_UNUSED, EDIF_TOK_PROPERTY,
6068 				     EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6069 static short f_OffsetEvent[] = {EDIF_TOK_EVENT, EDIF_TOK_E};
6070 static short f_OpenShape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
6071 static short f_Origin[] = {EDIF_TOK_PT};
6072 static short f_OverhangDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6073 				     EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
6074 				     EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
6075 				     EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
6076 				     EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
6077 				     EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6078 static short f_OverlapDistance[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6079 				    EDIF_TOK_FIGUREGROUPOBJECT, EDIF_TOK_LESSTHAN,
6080 				    EDIF_TOK_GREATERTHAN, EDIF_TOK_ATMOST,
6081 				    EDIF_TOK_ATLEAST, EDIF_TOK_EXACTLY,
6082 				    EDIF_TOK_BETWEEN, EDIF_TOK_SINGLEVALUESET,
6083 				    EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6084 static short f_Oversize[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
6085 			     EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
6086 			     EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE,
6087 			     EDIF_TOK_CORNERTYPE};
6088 static short f_Page[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
6089 			 EDIF_TOK_INSTANCE, EDIF_TOK_NET, EDIF_TOK_NETBUNDLE,
6090 			 EDIF_TOK_COMMENTGRAPHICS, EDIF_TOK_PORTIMPLEMENTATION,
6091 			 -EDIF_TOK_PAGESIZE, -EDIF_TOK_BOUNDINGBOX,
6092 			 EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6093 static short f_PageSize[] = {EDIF_TOK_RECTANGLE};
6094 static short f_Parameter[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
6095 			      EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
6096 			      EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER,
6097 			      EDIF_TOK_POINT, EDIF_TOK_STRING};
6098 static short f_ParameterAssign[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
6099 				    EDIF_TOK_BOOLEAN, EDIF_TOK_INTEGER,
6100 				    EDIF_TOK_MINOMAX, EDIF_TOK_NUMBER, EDIF_TOK_POINT,
6101 				    EDIF_TOK_STRING};
6102 static short f_ParameterDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
6103 				     EDIF_TOK_DISPLAY};
6104 static short f_Path[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
6105 static short f_PathDelay[] = {EDIF_TOK_DELAY, EDIF_TOK_EVENT};
6106 static short f_Permutable[] = {EDIF_TOK_PORTREF, EDIF_TOK_PERMUTABLE,
6107 			       EDIF_TOK_NONPERMUTABLE};
6108 static short f_PhysicalDesignRule[] = {EDIF_TOK_FIGUREWIDTH,
6109 				       EDIF_TOK_FIGUREAREA,
6110 				       EDIF_TOK_RECTANGLESIZE,
6111 				       EDIF_TOK_FIGUREPERIMETER,
6112 				       EDIF_TOK_OVERLAPDISTANCE,
6113 				       EDIF_TOK_OVERHANGDISTANCE,
6114 				       EDIF_TOK_ENCLOSUREDISTANCE,
6115 				       EDIF_TOK_INTERFIGUREGROUPSPACING,
6116 				       EDIF_TOK_NOTCHSPACING,
6117 				       EDIF_TOK_INTRAFIGUREGROUPSPACING,
6118 				       EDIF_TOK_NOTALLOWED,
6119 				       EDIF_TOK_FIGUREGROUP, EDIF_TOK_COMMENT,
6120 				       EDIF_TOK_USERDATA};
6121 static short f_Plug[] = {EDIF_TOK_SOCKETSET};
6122 static short f_Point[] = {EDIF_TOK_PT, EDIF_TOK_POINTDISPLAY,
6123 			  EDIF_TOK_POINT};
6124 static short f_PointDisplay[] = {EDIF_TOK_PT, EDIF_TOK_DISPLAY};
6125 static short f_PointList[] = {EDIF_TOK_PT};
6126 static short f_Polygon[] = {EDIF_TOK_POINTLIST, EDIF_TOK_PROPERTY};
6127 static short f_Port[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
6128 			 -EDIF_TOK_DIRECTION, -EDIF_TOK_UNUSED,
6129 			 EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
6130 			 -EDIF_TOK_DCFANINLOAD, -EDIF_TOK_DCFANOUTLOAD,
6131 			 -EDIF_TOK_DCMAXFANIN, -EDIF_TOK_DCMAXFANOUT,
6132 			 -EDIF_TOK_ACLOAD, EDIF_TOK_PROPERTY,
6133 			 EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6134 static short f_PortBackAnnotate[] = {EDIF_TOK_PORTREF, -EDIF_TOK_DESIGNATOR,
6135 				     EDIF_TOK_PORTDELAY, -EDIF_TOK_DCFANINLOAD,
6136 				     -EDIF_TOK_DCFANOUTLOAD,
6137 				     -EDIF_TOK_DCMAXFANIN,
6138 				     -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
6139 				     EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
6140 static short f_PortBundle[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_ARRAY,
6141 			       EDIF_TOK_LISTOFPORTS, EDIF_TOK_PROPERTY,
6142 			       EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6143 static short f_PortDelay[] = {EDIF_TOK_DERIVATION, EDIF_TOK_DELAY,
6144 			      EDIF_TOK_LOADDELAY, EDIF_TOK_TRANSITION,
6145 			      EDIF_TOK_BECOMES};
6146 static short f_PortGroup[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
6147 			      EDIF_TOK_PORTREF};
6148 static short f_PortImplementation[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME, EDIF_TOK_MEMBER,
6149 				       -EDIF_TOK_CONNECTLOCATION,
6150 				       EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
6151 				       EDIF_TOK_COMMENTGRAPHICS,
6152 				       EDIF_TOK_PROPERTYDISPLAY,
6153 				       EDIF_TOK_KEYWORDDISPLAY,
6154 				       EDIF_TOK_PROPERTY,
6155 				       EDIF_TOK_USERDATA, EDIF_TOK_COMMENT};
6156 static short f_PortInstance[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
6157 				 EDIF_TOK_MEMBER, -EDIF_TOK_UNUSED,
6158 				 EDIF_TOK_PORTDELAY, -EDIF_TOK_DESIGNATOR,
6159 				 -EDIF_TOK_DCFANINLOAD,
6160 				 -EDIF_TOK_DCFANOUTLOAD, -EDIF_TOK_DCMAXFANIN,
6161 				 -EDIF_TOK_DCMAXFANOUT, -EDIF_TOK_ACLOAD,
6162 				 EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6163 				 EDIF_TOK_USERDATA};
6164 static short f_PortList[] = {EDIF_TOK_PORTREF, EDIF_TOK_NAME,
6165 			     EDIF_TOK_MEMBER};
6166 static short f_PortListAlias[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6167 				  EDIF_TOK_ARRAY, EDIF_TOK_PORTLIST};
6168 static short f_PortMap[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTGROUP,
6169 			    EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6170 static short f_PortRef[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER,
6171 			    EDIF_TOK_PORTREF, EDIF_TOK_INSTANCEREF,
6172 			    EDIF_TOK_VIEWREF};
6173 static short f_Program[] = {EDIF_TOK_VERSION};
6174 static short f_Property[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_BOOLEAN,
6175 			     EDIF_TOK_INTEGER, EDIF_TOK_MINOMAX,
6176 			     EDIF_TOK_NUMBER, EDIF_TOK_POINT, EDIF_TOK_STRING,
6177 			     -EDIF_TOK_OWNER, -EDIF_TOK_UNIT,
6178 			     EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT};
6179 static short f_PropertyDisplay[] = {EDIF_TOK_NAME, EDIF_TOK_DISPLAY};
6180 static short f_ProtectionFrame[] = {EDIF_TOK_PORTIMPLEMENTATION,
6181 				    EDIF_TOK_FIGURE, EDIF_TOK_INSTANCE,
6182 				    EDIF_TOK_COMMENTGRAPHICS,
6183 				    -EDIF_TOK_BOUNDINGBOX,
6184 				    EDIF_TOK_PROPERTYDISPLAY,
6185 				    EDIF_TOK_KEYWORDDISPLAY,
6186 				    EDIF_TOK_PARAMETERDISPLAY,
6187 				    EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6188 				    EDIF_TOK_USERDATA};
6189 static short f_RangeVector[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
6190 				EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
6191 				EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN,
6192 				EDIF_TOK_SINGLEVALUESET};
6193 static short f_Rectangle[] = {EDIF_TOK_PT, EDIF_TOK_PROPERTY};
6194 static short f_RectangleSize[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME,
6195 				  EDIF_TOK_FIGUREGROUPOBJECT,
6196 				  EDIF_TOK_RANGEVECTOR,
6197 				  EDIF_TOK_MULTIPLEVALUESET,EDIF_TOK_COMMENT,
6198 				  EDIF_TOK_USERDATA};
6199 static short f_Rename[] = {EDIF_TOK_NAME, EDIF_TOK_STRINGDISPLAY};
6200 static short f_Resolves[] = {EDIF_TOK_NAME};
6201 static short f_Scale[] = {EDIF_TOK_E, EDIF_TOK_UNIT};
6202 static short f_Section[] = {EDIF_TOK_SECTION, EDIF_TOK_INSTANCE};
6203 static short f_Shape[] = {EDIF_TOK_CURVE, EDIF_TOK_PROPERTY};
6204 static short f_Simulate[] = {EDIF_TOK_NAME, EDIF_TOK_PORTLISTALIAS,
6205 			     EDIF_TOK_WAVEVALUE, EDIF_TOK_APPLY,
6206 			     EDIF_TOK_COMMENT, EDIF_TOK_USERDATA};
6207 static short f_SimulationInfo[] = {EDIF_TOK_LOGICVALUE, EDIF_TOK_COMMENT,
6208 				   EDIF_TOK_USERDATA};
6209 static short f_SingleValueSet[] = {EDIF_TOK_LESSTHAN, EDIF_TOK_GREATERTHAN,
6210 				   EDIF_TOK_ATMOST, EDIF_TOK_ATLEAST,
6211 				   EDIF_TOK_EXACTLY, EDIF_TOK_BETWEEN};
6212 static short f_Site[] = {EDIF_TOK_VIEWREF, EDIF_TOK_TRANSFORM};
6213 static short f_Socket[] = {EDIF_TOK_SYMMETRY};
6214 static short f_SocketSet[] = {EDIF_TOK_SYMMETRY, EDIF_TOK_SITE};
6215 static short f_Status[] = {EDIF_TOK_WRITTEN, EDIF_TOK_COMMENT,
6216 			   EDIF_TOK_USERDATA};
6217 static short f_Steady[] = {EDIF_TOK_NAME, EDIF_TOK_MEMBER, EDIF_TOK_PORTREF,
6218 			   EDIF_TOK_PORTLIST, EDIF_TOK_DURATION,
6219 			   EDIF_TOK_TRANSITION, EDIF_TOK_BECOMES};
6220 static short f_String[] = {EDIF_TOK_STRINGDISPLAY, EDIF_TOK_STRING};
6221 static short f_StringDisplay[] = {EDIF_TOK_DISPLAY};
6222 static short f_Strong[] = {EDIF_TOK_NAME};
6223 static short f_Symbol[] = {EDIF_TOK_PORTIMPLEMENTATION, EDIF_TOK_FIGURE,
6224 			   EDIF_TOK_INSTANCE, EDIF_TOK_COMMENTGRAPHICS,
6225 			   EDIF_TOK_ANNOTATE, -EDIF_TOK_PAGESIZE,
6226 			   -EDIF_TOK_BOUNDINGBOX, EDIF_TOK_PROPERTYDISPLAY,
6227 			   EDIF_TOK_KEYWORDDISPLAY, EDIF_TOK_PARAMETERDISPLAY,
6228 			   EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6229 			   EDIF_TOK_USERDATA};
6230 static short f_Symmetry[] = {EDIF_TOK_TRANSFORM};
6231 static short f_Table[] = {EDIF_TOK_ENTRY, EDIF_TOK_TABLEDEFAULT};
6232 static short f_TableDefault[] = {EDIF_TOK_LOGICREF, EDIF_TOK_PORTREF,
6233 				 EDIF_TOK_NOCHANGE, EDIF_TOK_TABLE,
6234 				 EDIF_TOK_DELAY, EDIF_TOK_LOADDELAY};
6235 static short f_Technology[] = {EDIF_TOK_NUMBERDEFINITION, EDIF_TOK_FIGUREGROUP,
6236 			       EDIF_TOK_FABRICATE, -EDIF_TOK_SIMULATIONINFO,
6237 			       EDIF_TOK_COMMENT, EDIF_TOK_USERDATA,
6238 			       -EDIF_TOK_PHYSICALDESIGNRULE};
6239 static short f_TimeInterval[] = {EDIF_TOK_EVENT, EDIF_TOK_OFFSETEVENT,
6240 				 EDIF_TOK_DURATION};
6241 static short f_Timing[] = {EDIF_TOK_DERIVATION, EDIF_TOK_PATHDELAY,
6242 			   EDIF_TOK_FORBIDDENEVENT, EDIF_TOK_COMMENT,
6243 			   EDIF_TOK_USERDATA};
6244 static short f_Transform[] = {EDIF_TOK_SCALEX, EDIF_TOK_SCALEY, EDIF_TOK_DELTA,
6245 			      EDIF_TOK_ORIENTATION, EDIF_TOK_ORIGIN};
6246 static short f_Transition[] = {EDIF_TOK_NAME, EDIF_TOK_LOGICLIST,
6247 			       EDIF_TOK_LOGICONEOF};
6248 static short f_Trigger[] = {EDIF_TOK_CHANGE, EDIF_TOK_STEADY,
6249 			    EDIF_TOK_INITIAL};
6250 static short f_Union[] = {EDIF_TOK_FIGUREGROUPREF, EDIF_TOK_INTERSECTION,
6251 			  EDIF_TOK_UNION, EDIF_TOK_DIFFERENCE,
6252 			  EDIF_TOK_INVERSE, EDIF_TOK_OVERSIZE};
6253 static short f_View[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_VIEWTYPE,
6254 			 EDIF_TOK_INTERFACE, -EDIF_TOK_STATUS,
6255 			 -EDIF_TOK_CONTENTS, EDIF_TOK_COMMENT,
6256 			 EDIF_TOK_PROPERTY, EDIF_TOK_USERDATA};
6257 static short f_ViewList[] = {EDIF_TOK_VIEWREF, EDIF_TOK_VIEWLIST};
6258 static short f_ViewMap[] = {EDIF_TOK_PORTMAP, EDIF_TOK_PORTBACKANNOTATE,
6259 			    EDIF_TOK_INSTANCEMAP,
6260 			    EDIF_TOK_INSTANCEBACKANNOTATE, EDIF_TOK_NETMAP,
6261 			    EDIF_TOK_NETBACKANNOTATE, EDIF_TOK_COMMENT,
6262 			    EDIF_TOK_USERDATA};
6263 static short f_ViewRef[] = {EDIF_TOK_NAME, EDIF_TOK_CELLREF};
6264 static short f_Visible[] = {EDIF_TOK_FALSE, EDIF_TOK_TRUE};
6265 static short f_VoltageMap[] = {EDIF_TOK_MNM, EDIF_TOK_E};
6266 static short f_WaveValue[] = {EDIF_TOK_NAME, EDIF_TOK_RENAME, EDIF_TOK_E,
6267 			      EDIF_TOK_LOGICWAVEFORM};
6268 static short f_Weak[] = {EDIF_TOK_NAME};
6269 static short f_WeakJoined[] = {EDIF_TOK_PORTREF, EDIF_TOK_PORTLIST,
6270 			       EDIF_TOK_JOINED};
6271 static short f_When[] = {EDIF_TOK_TRIGGER, EDIF_TOK_AFTER,
6272 			 EDIF_TOK_FOLLOW, EDIF_TOK_MAINTAIN,
6273 			 EDIF_TOK_LOGICASSIGN, EDIF_TOK_COMMENT,
6274 			 EDIF_TOK_USERDATA};
6275 static short f_Written[] = {EDIF_TOK_TIMESTAMP, EDIF_TOK_AUTHOR,
6276 			    EDIF_TOK_PROGRAM, EDIF_TOK_DATAORIGIN,
6277 			    EDIF_TOK_PROPERTY, EDIF_TOK_COMMENT,
6278 			    EDIF_TOK_USERDATA};
6279 /*
6280  *	Context binding table:
6281  *
6282  *	  This binds context follower arrays to their originating context.
6283  */
6284 typedef struct Binder {
6285   short *Follower;		/* pointer to follower array */
6286   short Origin;			/* '%token' value of origin */
6287   short FollowerSize;		/* size of follower array */
6288 } Binder;
6289 #define	BE(f,o)			{f,o,sizeof(f)/sizeof(short)}
6290 static Binder BinderDef[] = {
6291   BE(f_NULL,			0),
6292   BE(f_Edif,			EDIF_TOK_EDIF),
6293   BE(f_AcLoad,			EDIF_TOK_ACLOAD),
6294   BE(f_After,			EDIF_TOK_AFTER),
6295   BE(f_Annotate,		EDIF_TOK_ANNOTATE),
6296   BE(f_Apply,			EDIF_TOK_APPLY),
6297   BE(f_Arc,			EDIF_TOK_ARC),
6298   BE(f_Array,			EDIF_TOK_ARRAY),
6299   BE(f_ArrayMacro,		EDIF_TOK_ARRAYMACRO),
6300   BE(f_ArrayRelatedInfo,	EDIF_TOK_ARRAYRELATEDINFO),
6301   BE(f_ArraySite,		EDIF_TOK_ARRAYSITE),
6302   BE(f_AtLeast,			EDIF_TOK_ATLEAST),
6303   BE(f_AtMost,			EDIF_TOK_ATMOST),
6304   BE(f_Becomes,			EDIF_TOK_BECOMES),
6305   BE(f_Boolean,			EDIF_TOK_BOOLEAN),
6306   BE(f_BooleanDisplay,		EDIF_TOK_BOOLEANDISPLAY),
6307   BE(f_BooleanMap,		EDIF_TOK_BOOLEANMAP),
6308   BE(f_BorderPattern,		EDIF_TOK_BORDERPATTERN),
6309   BE(f_BoundingBox,		EDIF_TOK_BOUNDINGBOX),
6310   BE(f_Cell,			EDIF_TOK_CELL),
6311   BE(f_CellRef,			EDIF_TOK_CELLREF),
6312   BE(f_Change,			EDIF_TOK_CHANGE),
6313   BE(f_Circle,			EDIF_TOK_CIRCLE),
6314   BE(f_Color,			EDIF_TOK_COLOR),
6315   BE(f_CommentGraphics,		EDIF_TOK_COMMENTGRAPHICS),
6316   BE(f_Compound,		EDIF_TOK_COMPOUND),
6317   BE(f_ConnectLocation,		EDIF_TOK_CONNECTLOCATION),
6318   BE(f_Contents,		EDIF_TOK_CONTENTS),
6319   BE(f_Criticality,		EDIF_TOK_CRITICALITY),
6320   BE(f_CurrentMap,		EDIF_TOK_CURRENTMAP),
6321   BE(f_Curve,			EDIF_TOK_CURVE),
6322   BE(f_Cycle,			EDIF_TOK_CYCLE),
6323   BE(f_DataOrigin,		EDIF_TOK_DATAORIGIN),
6324   BE(f_DcFanInLoad,		EDIF_TOK_DCFANINLOAD),
6325   BE(f_DcFanOutLoad,		EDIF_TOK_DCFANOUTLOAD),
6326   BE(f_DcMaxFanIn,		EDIF_TOK_DCMAXFANIN),
6327   BE(f_DcMaxFanOut,		EDIF_TOK_DCMAXFANOUT),
6328   BE(f_Delay,			EDIF_TOK_DELAY),
6329   BE(f_Delta,			EDIF_TOK_DELTA),
6330   BE(f_Design,			EDIF_TOK_DESIGN),
6331   BE(f_Designator,		EDIF_TOK_DESIGNATOR),
6332   BE(f_Difference,		EDIF_TOK_DIFFERENCE),
6333   BE(f_Display,			EDIF_TOK_DISPLAY),
6334   BE(f_Dominates,		EDIF_TOK_DOMINATES),
6335   BE(f_Dot,			EDIF_TOK_DOT),
6336   BE(f_Duration,		EDIF_TOK_DURATION),
6337   BE(f_EnclosureDistance,	EDIF_TOK_ENCLOSUREDISTANCE),
6338   BE(f_Entry,			EDIF_TOK_ENTRY),
6339   BE(f_Exactly,			EDIF_TOK_EXACTLY),
6340   BE(f_External,		EDIF_TOK_EXTERNAL),
6341   BE(f_Fabricate,		EDIF_TOK_FABRICATE),
6342   BE(f_Figure,			EDIF_TOK_FIGURE),
6343   BE(f_FigureArea,		EDIF_TOK_FIGUREAREA),
6344   BE(f_FigureGroup,		EDIF_TOK_FIGUREGROUP),
6345   BE(f_FigureGroupObject,	EDIF_TOK_FIGUREGROUPOBJECT),
6346   BE(f_FigureGroupOverride,	EDIF_TOK_FIGUREGROUPOVERRIDE),
6347   BE(f_FigureGroupRef,		EDIF_TOK_FIGUREGROUPREF),
6348   BE(f_FigurePerimeter,		EDIF_TOK_FIGUREPERIMETER),
6349   BE(f_FigureWidth,		EDIF_TOK_FIGUREWIDTH),
6350   BE(f_FillPattern,		EDIF_TOK_FILLPATTERN),
6351   BE(f_Follow,			EDIF_TOK_FOLLOW),
6352   BE(f_ForbiddenEvent,		EDIF_TOK_FORBIDDENEVENT),
6353   BE(f_GlobalPortRef,		EDIF_TOK_GLOBALPORTREF),
6354   BE(f_GreaterThan,		EDIF_TOK_GREATERTHAN),
6355   BE(f_GridMap,			EDIF_TOK_GRIDMAP),
6356   BE(f_IncludeFigureGroup,	EDIF_TOK_INCLUDEFIGUREGROUP),
6357   BE(f_Instance,		EDIF_TOK_INSTANCE),
6358   BE(f_InstanceBackAnnotate,	EDIF_TOK_INSTANCEBACKANNOTATE),
6359   BE(f_InstanceGroup,		EDIF_TOK_INSTANCEGROUP),
6360   BE(f_InstanceMap,		EDIF_TOK_INSTANCEMAP),
6361   BE(f_InstanceRef,		EDIF_TOK_INSTANCEREF),
6362   BE(f_Integer,			EDIF_TOK_INTEGER),
6363   BE(f_IntegerDisplay,		EDIF_TOK_INTEGERDISPLAY),
6364   BE(f_InterFigureGroupSpacing,	EDIF_TOK_INTERFIGUREGROUPSPACING),
6365   BE(f_Interface,		EDIF_TOK_INTERFACE),
6366   BE(f_Intersection,		EDIF_TOK_INTERSECTION),
6367   BE(f_IntraFigureGroupSpacing,	EDIF_TOK_INTRAFIGUREGROUPSPACING),
6368   BE(f_Inverse,			EDIF_TOK_INVERSE),
6369   BE(f_Joined,			EDIF_TOK_JOINED),
6370   BE(f_KeywordDisplay,		EDIF_TOK_KEYWORDDISPLAY),
6371   BE(f_KeywordMap,		EDIF_TOK_KEYWORDMAP),
6372   BE(f_LessThan,		EDIF_TOK_LESSTHAN),
6373   BE(f_Library,			EDIF_TOK_LIBRARY),
6374   BE(f_LibraryRef,		EDIF_TOK_LIBRARYREF),
6375   BE(f_ListOfNets,		EDIF_TOK_LISTOFNETS),
6376   BE(f_ListOfPorts,		EDIF_TOK_LISTOFPORTS),
6377   BE(f_LoadDelay,		EDIF_TOK_LOADDELAY),
6378   BE(f_LogicAssign,		EDIF_TOK_LOGICASSIGN),
6379   BE(f_LogicInput,		EDIF_TOK_LOGICINPUT),
6380   BE(f_LogicList,		EDIF_TOK_LOGICLIST),
6381   BE(f_LogicMapInput,		EDIF_TOK_LOGICMAPINPUT),
6382   BE(f_LogicMapOutput,		EDIF_TOK_LOGICMAPOUTPUT),
6383   BE(f_LogicOneOf,		EDIF_TOK_LOGICONEOF),
6384   BE(f_LogicOutput,		EDIF_TOK_LOGICOUTPUT),
6385   BE(f_LogicPort,		EDIF_TOK_LOGICPORT),
6386   BE(f_LogicRef,		EDIF_TOK_LOGICREF),
6387   BE(f_LogicValue,		EDIF_TOK_LOGICVALUE),
6388   BE(f_LogicWaveform,		EDIF_TOK_LOGICWAVEFORM),
6389   BE(f_Maintain,		EDIF_TOK_MAINTAIN),
6390   BE(f_Match,			EDIF_TOK_MATCH),
6391   BE(f_Member,			EDIF_TOK_MEMBER),
6392   BE(f_MiNoMax,			EDIF_TOK_MINOMAX),
6393   BE(f_MiNoMaxDisplay,		EDIF_TOK_MINOMAXDISPLAY),
6394   BE(f_Mnm,			EDIF_TOK_MNM),
6395   BE(f_MultipleValueSet,	EDIF_TOK_MULTIPLEVALUESET),
6396   BE(f_MustJoin,		EDIF_TOK_MUSTJOIN),
6397   BE(f_Name,			EDIF_TOK_NAME),
6398   BE(f_Net,			EDIF_TOK_NET),
6399   BE(f_NetBackAnnotate,		EDIF_TOK_NETBACKANNOTATE),
6400   BE(f_NetBundle,		EDIF_TOK_NETBUNDLE),
6401   BE(f_NetDelay,		EDIF_TOK_NETDELAY),
6402   BE(f_NetGroup,		EDIF_TOK_NETGROUP),
6403   BE(f_NetMap,			EDIF_TOK_NETMAP),
6404   BE(f_NetRef,			EDIF_TOK_NETREF),
6405   BE(f_NonPermutable,		EDIF_TOK_NONPERMUTABLE),
6406   BE(f_NotAllowed,		EDIF_TOK_NOTALLOWED),
6407   BE(f_NotchSpacing,		EDIF_TOK_NOTCHSPACING),
6408   BE(f_Number,			EDIF_TOK_NUMBER),
6409   BE(f_NumberDefinition,	EDIF_TOK_NUMBERDEFINITION),
6410   BE(f_NumberDisplay,		EDIF_TOK_NUMBERDISPLAY),
6411   BE(f_OffPageConnector,	EDIF_TOK_OFFPAGECONNECTOR),
6412   BE(f_OffsetEvent,		EDIF_TOK_OFFSETEVENT),
6413   BE(f_OpenShape,		EDIF_TOK_OPENSHAPE),
6414   BE(f_Origin,			EDIF_TOK_ORIGIN),
6415   BE(f_OverhangDistance,	EDIF_TOK_OVERHANGDISTANCE),
6416   BE(f_OverlapDistance,		EDIF_TOK_OVERLAPDISTANCE),
6417   BE(f_Oversize,		EDIF_TOK_OVERSIZE),
6418   BE(f_Page,			EDIF_TOK_PAGE),
6419   BE(f_PageSize,		EDIF_TOK_PAGESIZE),
6420   BE(f_Parameter,		EDIF_TOK_PARAMETER),
6421   BE(f_ParameterAssign,		EDIF_TOK_PARAMETERASSIGN),
6422   BE(f_ParameterDisplay,	EDIF_TOK_PARAMETERDISPLAY),
6423   BE(f_Path,			EDIF_TOK_PATH),
6424   BE(f_PathDelay,		EDIF_TOK_PATHDELAY),
6425   BE(f_Permutable,		EDIF_TOK_PERMUTABLE),
6426   BE(f_PhysicalDesignRule,	EDIF_TOK_PHYSICALDESIGNRULE),
6427   BE(f_Plug,			EDIF_TOK_PLUG),
6428   BE(f_Point,			EDIF_TOK_POINT),
6429   BE(f_PointDisplay,		EDIF_TOK_POINTDISPLAY),
6430   BE(f_PointList,		EDIF_TOK_POINTLIST),
6431   BE(f_Polygon,			EDIF_TOK_POLYGON),
6432   BE(f_Port,			EDIF_TOK_PORT),
6433   BE(f_PortBackAnnotate,	EDIF_TOK_PORTBACKANNOTATE),
6434   BE(f_PortBundle,		EDIF_TOK_PORTBUNDLE),
6435   BE(f_PortDelay,		EDIF_TOK_PORTDELAY),
6436   BE(f_PortGroup,		EDIF_TOK_PORTGROUP),
6437   BE(f_PortImplementation,	EDIF_TOK_PORTIMPLEMENTATION),
6438   BE(f_PortInstance,		EDIF_TOK_PORTINSTANCE),
6439   BE(f_PortList,		EDIF_TOK_PORTLIST),
6440   BE(f_PortListAlias,		EDIF_TOK_PORTLISTALIAS),
6441   BE(f_PortMap,			EDIF_TOK_PORTMAP),
6442   BE(f_PortRef,			EDIF_TOK_PORTREF),
6443   BE(f_Program,			EDIF_TOK_PROGRAM),
6444   BE(f_Property,		EDIF_TOK_PROPERTY),
6445   BE(f_PropertyDisplay,		EDIF_TOK_PROPERTYDISPLAY),
6446   BE(f_ProtectionFrame,		EDIF_TOK_PROTECTIONFRAME),
6447   BE(f_RangeVector,		EDIF_TOK_RANGEVECTOR),
6448   BE(f_Rectangle,		EDIF_TOK_RECTANGLE),
6449   BE(f_RectangleSize,		EDIF_TOK_RECTANGLESIZE),
6450   BE(f_Rename,			EDIF_TOK_RENAME),
6451   BE(f_Resolves,		EDIF_TOK_RESOLVES),
6452   BE(f_Scale,			EDIF_TOK_SCALE),
6453   BE(f_Section,			EDIF_TOK_SECTION),
6454   BE(f_Shape,			EDIF_TOK_SHAPE),
6455   BE(f_Simulate,		EDIF_TOK_SIMULATE),
6456   BE(f_SimulationInfo,		EDIF_TOK_SIMULATIONINFO),
6457   BE(f_SingleValueSet,		EDIF_TOK_SINGLEVALUESET),
6458   BE(f_Site,			EDIF_TOK_SITE),
6459   BE(f_Socket,			EDIF_TOK_SOCKET),
6460   BE(f_SocketSet,		EDIF_TOK_SOCKETSET),
6461   BE(f_Status,			EDIF_TOK_STATUS),
6462   BE(f_Steady,			EDIF_TOK_STEADY),
6463   BE(f_String,			EDIF_TOK_STRING),
6464   BE(f_StringDisplay,		EDIF_TOK_STRINGDISPLAY),
6465   BE(f_Strong,			EDIF_TOK_STRONG),
6466   BE(f_Symbol,			EDIF_TOK_SYMBOL),
6467   BE(f_Symmetry,		EDIF_TOK_SYMMETRY),
6468   BE(f_Table,			EDIF_TOK_TABLE),
6469   BE(f_TableDefault,		EDIF_TOK_TABLEDEFAULT),
6470   BE(f_Technology,		EDIF_TOK_TECHNOLOGY),
6471   BE(f_TimeInterval,		EDIF_TOK_TIMEINTERVAL),
6472   BE(f_Timing,			EDIF_TOK_TIMING),
6473   BE(f_Transform,		EDIF_TOK_TRANSFORM),
6474   BE(f_Transition,		EDIF_TOK_TRANSITION),
6475   BE(f_Trigger,			EDIF_TOK_TRIGGER),
6476   BE(f_Union,			EDIF_TOK_UNION),
6477   BE(f_View,			EDIF_TOK_VIEW),
6478   BE(f_ViewList,		EDIF_TOK_VIEWLIST),
6479   BE(f_ViewMap,			EDIF_TOK_VIEWMAP),
6480   BE(f_ViewRef,			EDIF_TOK_VIEWREF),
6481   BE(f_Visible,			EDIF_TOK_VISIBLE),
6482   BE(f_VoltageMap,		EDIF_TOK_VOLTAGEMAP),
6483   BE(f_WaveValue,		EDIF_TOK_WAVEVALUE),
6484   BE(f_Weak,			EDIF_TOK_WEAK),
6485   BE(f_WeakJoined,		EDIF_TOK_WEAKJOINED),
6486   BE(f_When,			EDIF_TOK_WHEN),
6487   BE(f_Written,			EDIF_TOK_WRITTEN)
6488 };
6489 static int BinderDefSize = sizeof(BinderDef) / sizeof(Binder);
6490 /*
6491  *	Keyword table:
6492  *
6493  *	  This hash table holds all strings which may have to be matched
6494  *	to. WARNING: it is assumed that there is no overlap of the 'token'
6495  *	and 'context' strings.
6496  */
6497 typedef struct Keyword {
6498   struct Keyword *Next;	 	/* pointer to next entry */
6499   char *String;			/* pointer to associated string */
6500 } Keyword;
6501 #define	KEYWORD_HASH	127	/* hash table size */
6502 static Keyword *KeywordTable[KEYWORD_HASH];
6503 /*
6504  *	Enter keyword:
6505  *
6506  *	  The passed string is entered into the keyword hash table.
6507  */
EnterKeyword(char * str)6508 static void EnterKeyword(char * str)
6509 {
6510   /*
6511    *	Locals.
6512    */
6513   register Keyword *key;
6514   register unsigned int hsh;
6515   register char *cp;
6516   /*
6517    *	Create the hash code, and add an entry to the table.
6518    */
6519   for (hsh = 0, cp = str; *cp; hsh += hsh + *cp++);
6520   hsh %= KEYWORD_HASH;
6521   key = (Keyword *) Malloc(sizeof(Keyword));
6522   key->Next = KeywordTable[hsh];
6523   (KeywordTable[hsh] = key)->String = str;
6524 }
6525 /*
6526  *	Find keyword:
6527  *
6528  *	  The passed string is located within the keyword table. If an
6529  *	entry exists, then the value of the keyword string is returned. This
6530  *	is real useful for doing string comparisons by pointer value later.
6531  *	If there is no match, a NULL is returned.
6532  */
FindKeyword(char * str)6533 static char *FindKeyword(char * str)
6534 {
6535   /*
6536    *	Locals.
6537    */
6538   register Keyword *wlk,*owk;
6539   register unsigned int hsh;
6540   register char *cp;
6541   char lower[IDENT_LENGTH + 1];
6542   /*
6543    *	Create a lower case copy of the string.
6544    */
6545   for (cp = lower; *str;)
6546     if (isupper( (int) *str))
6547       *cp++ = tolower( (int) *str++);
6548     else
6549       *cp++ = *str++;
6550   *cp = '\0';
6551   /*
6552    *	Search the hash table for a match.
6553    */
6554   for (hsh = 0, cp = lower; *cp; hsh += hsh + *cp++);
6555   hsh %= KEYWORD_HASH;
6556   for (owk = NULL, wlk = KeywordTable[hsh]; wlk; wlk = (owk = wlk)->Next)
6557     if (!strcmp(wlk->String,lower)){
6558       /*
6559        *	Readjust the LRU.
6560        */
6561       if (owk){
6562       	owk->Next = wlk->Next;
6563       	wlk->Next = KeywordTable[hsh];
6564       	KeywordTable[hsh] = wlk;
6565       }
6566       return (wlk->String);
6567     }
6568   return (NULL);
6569 }
6570 /*
6571  *	Token hash table.
6572  */
6573 #define	TOKEN_HASH	51
6574 static Token *TokenHash[TOKEN_HASH];
6575 /*
6576  *	Find token:
6577  *
6578  *	  A pointer to the token of the passed code is returned. If
6579  *	no such beastie is present a NULL is returned instead.
6580  */
FindToken(register int cod)6581 static Token *FindToken(register int cod)
6582 {
6583   /*
6584    *	Locals.
6585    */
6586   register Token *wlk,*owk;
6587   register unsigned int hsh;
6588   /*
6589    *	Search the hash table for a matching token.
6590    */
6591   hsh = cod % TOKEN_HASH;
6592   for (owk = NULL, wlk = TokenHash[hsh]; wlk; wlk = (owk = wlk)->Next)
6593     if (cod == wlk->Code){
6594       if (owk){
6595       	owk->Next = wlk->Next;
6596       	wlk->Next = TokenHash[hsh];
6597       	TokenHash[hsh] = wlk;
6598       }
6599       break;
6600     }
6601   return (wlk);
6602 }
6603 /*
6604  *	Context hash table.
6605  */
6606 #define	CONTEXT_HASH	127
6607 static Context *ContextHash[CONTEXT_HASH];
6608 /*
6609  *	Find context:
6610  *
6611  *	  A pointer to the context of the passed code is returned. If
6612  *	no such beastie is present a NULL is returned instead.
6613  */
FindContext(register int cod)6614 static Context *FindContext(register int cod)
6615 {
6616   /*
6617    *	Locals.
6618    */
6619   register Context *wlk,*owk;
6620   register unsigned int hsh;
6621   /*
6622    *	Search the hash table for a matching context.
6623    */
6624   hsh = cod % CONTEXT_HASH;
6625   for (owk = NULL, wlk = ContextHash[hsh]; wlk; wlk = (owk = wlk)->Next)
6626     if (cod == wlk->Code){
6627       if (owk){
6628       	owk->Next = wlk->Next;
6629       	wlk->Next = ContextHash[hsh];
6630       	ContextHash[hsh] = wlk;
6631       }
6632       break;
6633     }
6634   return (wlk);
6635 }
6636 /*
6637  *	Parser state variables.
6638  */
6639 static FILE *Input = NULL;		/* input stream */
6640 static FILE *Error = NULL;		/* error stream */
6641 static char *InFile;			/* file name on the input stream */
6642 static long LineNumber;			/* current input line number */
6643 static ContextCar *CSP = NULL;		/* top of context stack */
6644 static char yytext[IDENT_LENGTH + 1];	/* token buffer */
6645 static char CharBuf[IDENT_LENGTH + 1];	/* garbage buffer */
6646 /*
6647  *	Token stacking variables.
6648  */
6649 #ifdef	DEBUG
6650 #define	TS_DEPTH	8
6651 #define	TS_MASK		(TS_DEPTH - 1)
6652 static unsigned int TSP = 0;		/* token stack pointer */
6653 static char *TokenStack[TS_DEPTH];	/* token name strings */
6654 static short TokenType[TS_DEPTH];	/* token types */
6655 /*
6656  *	Stack:
6657  *
6658  *	  Add a token to the debug stack. The passed string and type are
6659  *	what is to be pushed.
6660  */
Stack(char * str,int typ)6661 static int Stack(char * str, int typ)
6662 {
6663   /*
6664    *	Free any previous string, then push.
6665    */
6666   if (TokenStack[TSP & TS_MASK])
6667     Free(TokenStack[TSP & TS_MASK]);
6668   TokenStack[TSP & TS_MASK] = strcpy((char *)Malloc(strlen(str) + 1),str);
6669   TokenType[TSP & TS_MASK] = typ;
6670   TSP += 1;
6671   return 0;
6672 }
6673 /*
6674  *	Dump stack:
6675  *
6676  *	  This displays the last set of accumulated tokens.
6677  */
DumpStack()6678 static int DumpStack()
6679 {
6680   /*
6681    *	Locals.
6682    */
6683   register int i;
6684   register Context *cxt;
6685   register Token *tok;
6686   register char *nam;
6687   /*
6688    *	Run through the list displaying the oldest first.
6689    */
6690   fprintf(Error,"\n\n");
6691   for (i = 0; i < TS_DEPTH; i += 1)
6692     if (TokenStack[(TSP + i) & TS_MASK]){
6693       /*
6694        *	Get the type name string.
6695        */
6696       if ((cxt = FindContext(TokenType[(TSP + i) & TS_MASK])))
6697         nam = cxt->Name;
6698       else if ((tok = FindToken(TokenType[(TSP + i) & TS_MASK])))
6699         nam = tok->Name;
6700       else switch (TokenType[(TSP + i) & TS_MASK]){
6701       	case EDIF_TOK_IDENT:    nam = "IDENT";      break;
6702       	case EDIF_TOK_INT:      nam = "INT";        break;
6703       	case EDIF_TOK_KEYWORD:  nam = "KEYWORD";    break;
6704       	case EDIF_TOK_STR:      nam = "STR";        break;
6705       	default:                nam = "?";          break;
6706       }
6707       /*
6708        *	Now print the token state.
6709        */
6710       fprintf(Error,"%2d %-16.16s '%s'\n",TS_DEPTH - i,nam,
6711         TokenStack[(TSP + i) & TS_MASK]);
6712     }
6713   fprintf(Error,"\n");
6714   return 0;
6715 }
6716 #else
6717 #define	Stack(s,t)
6718 #endif	/* DEBUG */
6719 /*
6720  *	yyerror:
6721  *
6722  *	  Standard error reporter, it prints out the passed string
6723  *	preceeded by the current filename and line number.
6724  */
yyerror(const char * ers)6725 static void yyerror(const char *ers)
6726 {
6727 #ifdef	DEBUG
6728   DumpStack();
6729 #endif	/* DEBUG */
6730   fprintf(Error,"%s, line %ld: %s\n",InFile,LineNumber,ers);
6731 }
6732 /*
6733  *	String bucket definitions.
6734  */
6735 #define	BUCKET_SIZE	64
6736 typedef struct Bucket {
6737   struct Bucket *Next;			/* pointer to next bucket */
6738   int Index;				/* pointer to next free slot */
6739   char Data[BUCKET_SIZE];		/* string data */
6740 } Bucket;
6741 static Bucket *CurrentBucket = NULL;	/* string bucket list */
6742 static int StringSize = 0;		/* current string length */
6743 /*
6744  *	Push string:
6745  *
6746  *	  This adds the passed charater to the current string bucket.
6747  */
PushString(char chr)6748 static void PushString(char chr)
6749 {
6750   /*
6751    *	Locals.
6752    */
6753   register Bucket *bck;
6754   /*
6755    *	Make sure there is room for the push.
6756    */
6757   if ((bck = CurrentBucket)->Index >= BUCKET_SIZE){
6758     bck = (Bucket *) Malloc(sizeof(Bucket));
6759     bck->Next = CurrentBucket;
6760     (CurrentBucket = bck)->Index = 0;
6761   }
6762   /*
6763    *	Push the character.
6764    */
6765   bck->Data[bck->Index++] = chr;
6766   StringSize += 1;
6767 }
6768 /*
6769  *	Form string:
6770  *
6771  *	  This converts the current string bucket into a real live string,
6772  *	whose pointer is returned.
6773  */
FormString()6774 static char *FormString()
6775 {
6776   /*
6777    *	Locals.
6778    */
6779   register Bucket *bck;
6780   register char *cp;
6781   /*
6782    *	Allocate space for the string, set the pointer at the end.
6783    */
6784   cp = (char *) Malloc(StringSize + 1);
6785 
6786   cp += StringSize;
6787   *cp-- = '\0';
6788   /*
6789    *	Yank characters out of the bucket.
6790    */
6791   for (bck = CurrentBucket; bck->Index || bck->Next;){
6792     if (!bck->Index){
6793       CurrentBucket = bck->Next;
6794       Free(bck);
6795       bck = CurrentBucket;
6796     }
6797     *cp-- = bck->Data[--bck->Index];
6798   }
6799   /* reset buffer size  to zero */
6800   StringSize =0;
6801   return (cp + 1);
6802 }
6803 /*
6804  *	Parse EDIF:
6805  *
6806  *	  This builds the context tree and then calls the real parser.
6807  *	It is passed two file streams, the first is where the input comes
6808  *	from; the second is where error messages get printed.
6809  */
ParseEDIF(char * filename,FILE * err)6810 void ParseEDIF(char* filename,FILE* err)
6811 {
6812   /*
6813    *	Locals.
6814    */
6815   register int i;
6816   static int ContextDefined = 1;
6817   /*
6818    *	Set up the file state to something useful.
6819    */
6820   InFile = filename;
6821   Input = fopen(filename,"r");
6822   Error = err;
6823   LineNumber = 1;
6824   /*
6825    *	Define both the enabled token and context strings.
6826    */
6827   if (ContextDefined){
6828     for (i = TokenDefSize; i--; EnterKeyword(TokenDef[i].Name)){
6829       register unsigned int hsh;
6830       hsh = TokenDef[i].Code % TOKEN_HASH;
6831       TokenDef[i].Next = TokenHash[hsh];
6832       TokenHash[hsh] = &TokenDef[i];
6833     }
6834     for (i = ContextDefSize; i--; EnterKeyword(ContextDef[i].Name)){
6835       register unsigned int hsh;
6836       hsh = ContextDef[i].Code % CONTEXT_HASH;
6837       ContextDef[i].Next = ContextHash[hsh];
6838       ContextHash[hsh] = &ContextDef[i];
6839     }
6840     /*
6841      *	Build the context tree.
6842      */
6843     for (i = BinderDefSize; i--;){
6844       register Context *cxt;
6845       register int j;
6846       /*
6847        *	Define the current context to have carriers bound to it.
6848        */
6849       cxt = FindContext(BinderDef[i].Origin);
6850       for (j = BinderDef[i].FollowerSize; j--;){
6851         register ContextCar *cc;
6852         /*
6853          *	Add carriers to the current context.
6854          */
6855         cc = (ContextCar *) Malloc(sizeof(ContextCar));
6856         cc->Next = cxt->Context;
6857         (cxt->Context = cc)->Context =
6858           FindContext(ABS(BinderDef[i].Follower[j]));
6859         cc->u.Single = BinderDef[i].Follower[j] < 0;
6860       }
6861     }
6862     /*
6863      *	Build the token tree.
6864      */
6865     for (i = TieDefSize; i--;){
6866       register Context *cxt;
6867       register int j;
6868       /*
6869        *	Define the current context to have carriers bound to it.
6870        */
6871       cxt = FindContext(TieDef[i].Origin);
6872       for (j = TieDef[i].EnableSize; j--;){
6873         register TokenCar *tc;
6874         /*
6875          *	Add carriers to the current context.
6876          */
6877         tc = (TokenCar *) Malloc(sizeof(TokenCar));
6878         tc->Next = cxt->Token;
6879         (cxt->Token = tc)->Token = FindToken(TieDef[i].Enable[j]);
6880       }
6881     }
6882     /*
6883      *	Put a bogus context on the stack which has 'EDIF' as its
6884      *	follower.
6885      */
6886     CSP = (ContextCar *) Malloc(sizeof(ContextCar));
6887     CSP->Next = NULL;
6888     CSP->Context = FindContext(0);
6889     CSP->u.Used = NULL;
6890     ContextDefined = 0;
6891   }
6892   /*
6893    *	Create an initial, empty string bucket.
6894    */
6895   CurrentBucket = (Bucket *) Malloc(sizeof(Bucket));
6896   CurrentBucket->Next = 0;
6897   CurrentBucket->Index = 0;
6898   /*
6899    *	Fill the token stack with NULLs if debugging is enabled.
6900    */
6901 #ifdef	DEBUG
6902   for (i = TS_DEPTH; i--; TokenStack[i] = NULL)
6903     if (TokenStack[i])
6904       Free(TokenStack[i]);
6905   TSP = 0;
6906 #endif	/* DEBUG */
6907   /*
6908    *	Go parse things!
6909    */
6910   edifparse();
6911 }
6912 /*
6913  *	Match token:
6914  *
6915  *	  The passed string is looked up in the current context's token
6916  *	list to see if it is enabled. If so the token value is returned,
6917  *	if not then zero.
6918  */
MatchToken(register char * str)6919 static int MatchToken(register char * str)
6920 {
6921   /*
6922    *	Locals.
6923    */
6924   register TokenCar *wlk,*owk;
6925   /*
6926    *	Convert the string to the proper form, then search the token
6927    *	carrier list for a match.
6928    */
6929   str = FindKeyword(str);
6930   for (owk = NULL, wlk = CSP->Context->Token; wlk; wlk = (owk = wlk)->Next)
6931     if (str == wlk->Token->Name){
6932       if (owk){
6933         owk->Next = wlk->Next;
6934         wlk->Next = CSP->Context->Token;
6935         CSP->Context->Token = wlk;
6936       }
6937       return (wlk->Token->Code);
6938     }
6939   return (0);
6940 }
6941 /*
6942  *	Match context:
6943  *
6944  *	  If the passed keyword string is within the current context, the
6945  *	new context is pushed and token value is returned. A zero otherwise.
6946  */
MatchContext(register char * str)6947 static int MatchContext(register char * str)
6948 {
6949   /*
6950    *	Locals.
6951    */
6952   register ContextCar *wlk,*owk;
6953   /*
6954    *	See if the context is present.
6955    */
6956   str = FindKeyword(str);
6957   for (owk = NULL, wlk = CSP->Context->Context; wlk; wlk = (owk = wlk)->Next)
6958     if (str == wlk->Context->Name){
6959       if (owk){
6960       	owk->Next = wlk->Next;
6961       	wlk->Next = CSP->Context->Context;
6962       	CSP->Context->Context = wlk;
6963       }
6964       /*
6965        *	If a single context, make sure it isn't already used.
6966        */
6967       if (wlk->u.Single){
6968       	register UsedCar *usc;
6969       	for (usc = CSP->u.Used; usc; usc = usc->Next)
6970       	  if (usc->Code == wlk->Context->Code)
6971       	    break;
6972       	if (usc){
6973       	  sprintf(CharBuf,"'%s' is used more than once within '%s'",
6974       	    str,CSP->Context->Name);
6975       	  yyerror(CharBuf);
6976       	} else {
6977       	  usc = (UsedCar *) Malloc(sizeof(UsedCar));
6978       	  usc->Next = CSP->u.Used;
6979       	  (CSP->u.Used = usc)->Code = wlk->Context->Code;
6980       	}
6981       }
6982       /*
6983        *	Push the new context.
6984        */
6985       owk = (ContextCar *) Malloc(sizeof(ContextCar));
6986       owk->Next = CSP;
6987       (CSP = owk)->Context = wlk->Context;
6988       owk->u.Used = NULL;
6989       return (wlk->Context->Code);
6990     }
6991   return (0);
6992 }
6993 /*
6994  *	PopC:
6995  *
6996  *	  This pops the current context.
6997  */
PopC()6998 static void PopC()
6999 {
7000   /*
7001    *	Locals.
7002    */
7003   register UsedCar *usc;
7004   register ContextCar *csp;
7005   /*
7006    *	Release single markers and pop context.
7007    */
7008   while ( (usc = CSP->u.Used) ){
7009     CSP->u.Used = usc->Next;
7010     Free(usc);
7011   }
7012   csp = CSP->Next;
7013   Free(CSP);
7014   CSP = csp;
7015 }
7016 /*
7017  *	Lexical analyzer states.
7018  */
7019 #define	L_START		0
7020 #define	L_INT		1
7021 #define	L_IDENT		2
7022 #define	L_KEYWORD	3
7023 #define	L_STRING	4
7024 #define	L_KEYWORD2	5
7025 #define	L_ASCIICHAR	6
7026 #define	L_ASCIICHAR2	7
7027 /*
7028  *	yylex:
7029  *
7030  *	  This is the lexical analyzer called by the YACC/BISON parser.
7031  *	It returns a pretty restricted set of token types and does the
7032  *	context movement when acceptable keywords are found. The token
7033  *	value returned is a NULL terminated string to allocated storage
7034  *	(ie - it should get released some time) with some restrictions.
7035  *	  The token value for integers is strips a leading '+' if present.
7036  *	String token values have the leading and trailing '"'-s stripped.
7037  *	'%' conversion characters in string values are passed converted.
7038  *	The '(' and ')' characters do not have a token value.
7039  */
yylex()7040 static int yylex()
7041 {
7042   /*
7043    *	Locals.
7044    */
7045   register int c,s,l;
7046   /*
7047    *	Keep on sucking up characters until we find something which
7048    *	explicitly forces us out of this function.
7049    */
7050   for (s = L_START, l = 0; 1;){
7051     yytext[l++] = c = Getc(Input);
7052     switch (s){
7053       /*
7054        *	Starting state, look for something resembling a token.
7055        */
7056       case L_START:
7057         if (isdigit(c) || c == '-')
7058           s = L_INT;
7059         else if (isalpha(c) || c == '&')
7060           s = L_IDENT;
7061         else if (isspace(c)){
7062           if (c == '\n')
7063             LineNumber += 1;
7064           l = 0;
7065         } else if (c == '('){
7066           l = 0;
7067           s = L_KEYWORD;
7068         } else if (c == '"')
7069           s = L_STRING;
7070         else if (c == '+'){
7071           l = 0;				/* strip '+' */
7072           s = L_INT;
7073         } else if (c == EOF)
7074           return ('\0');
7075         else {
7076           yytext[1] = '\0';
7077           Stack(yytext,c);
7078           return (c);
7079         }
7080         break;
7081       /*
7082        *	Suck up the integer digits.
7083        */
7084       case L_INT:
7085         if (isdigit(c))
7086           break;
7087         Ungetc(c);
7088         yytext[--l] = '\0';
7089         yylval.s = strcpy((char *)Malloc(l + 1),yytext);
7090         Stack(yytext,EDIF_TOK_INT);
7091         return (EDIF_TOK_INT);
7092       /*
7093        *	Grab an identifier, see if the current context enables
7094        *	it with a specific token value.
7095        */
7096       case L_IDENT:
7097         if (isalpha(c) || isdigit(c) || c == '_')
7098           break;
7099         Ungetc(c);
7100         yytext[--l] = '\0';
7101         if (CSP->Context->Token && (c = MatchToken(yytext))){
7102           Stack(yytext,c);
7103           return (c);
7104         }
7105         yylval.s = strcpy((char *)Malloc(l + 1),yytext);
7106         Stack(yytext, EDIF_TOK_IDENT);
7107         return (EDIF_TOK_IDENT);
7108       /*
7109        *	Scan until you find the start of an identifier, discard
7110        *	any whitespace found. On no identifier, return a '('.
7111        */
7112       case L_KEYWORD:
7113         if (isalpha(c) || c == '&'){
7114           s = L_KEYWORD2;
7115           break;
7116         } else if (isspace(c)){
7117           l = 0;
7118           break;
7119         }
7120         Ungetc(c);
7121         Stack("(",'(');
7122         return ('(');
7123       /*
7124        *	Suck up the keyword identifier, if it matches the set of
7125        *	allowable contexts then return its token value and push
7126        *	the context, otherwise just return the identifier string.
7127        */
7128       case L_KEYWORD2:
7129         if (isalpha(c) || isdigit(c) || c == '_')
7130           break;
7131         Ungetc(c);
7132         yytext[--l] = '\0';
7133         if ( (c = MatchContext(yytext)) ){
7134           Stack(yytext,c);
7135           return (c);
7136         }
7137         yylval.s = strcpy((char *)Malloc(l + 1),yytext);
7138         Stack(yytext, EDIF_TOK_KEYWORD);
7139         return (EDIF_TOK_KEYWORD);
7140       /*
7141        *	Suck up string characters but once resolved they should
7142        *	be deposited in the string bucket because they can be
7143        *	arbitrarily long.
7144        */
7145       case L_STRING:
7146         if (c == '\n')
7147           LineNumber += 1;
7148         else if (c == '\r')
7149           ;
7150         else if (c == '"' || c == EOF){
7151           yylval.s = FormString();
7152           Stack(yylval.s, EDIF_TOK_STR);
7153           return (EDIF_TOK_STR);
7154         } else if (c == '%')
7155           s = L_ASCIICHAR;
7156         else
7157           PushString(c);
7158         l = 0;
7159         break;
7160       /*
7161        *	Skip white space and look for integers to be pushed
7162        *	as characters.
7163        */
7164       case L_ASCIICHAR:
7165         if (isdigit(c)){
7166           s = L_ASCIICHAR2;
7167           break;
7168         } else if (c == '%' || c == EOF)
7169           s = L_STRING;
7170         else if (c == '\n')
7171           LineNumber += 1;
7172         l = 0;
7173         break;
7174       /*
7175        *	Convert the accumulated integer into a char and push.
7176        */
7177       case L_ASCIICHAR2:
7178         if (isdigit(c))
7179           break;
7180         Ungetc(c);
7181         yytext[--l] = '\0';
7182         PushString(atoi(yytext));
7183         s = L_ASCIICHAR;
7184         l = 0;
7185         break;
7186     }
7187   }
7188 }
7189 
7190