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